Nurture TechnologiesNurture Tech
Back to Blog
Security16 min read·July 24, 2026

Vibe Coding Security Checklist 2026

AI coding tools have made building software dramatically faster. But speed creates risk. This vibe coding security checklist covers 20 checks to run before shipping AI-generated code to production.

Vibe coding has dramatically accelerated software development. Founders can now build MVPs, internal tools, and even production applications in days rather than months. AI coding assistants generate functions, APIs, authentication flows, and database queries on demand. The productivity gains are real.

So is the risk.

Most security issues that appear in AI-generated code are not caused by the AI writing obviously broken code. They appear because teams deploy code they do not fully understand, skip the review steps they would normally apply to hand-written code, or trust that fast output means safe output. Speed and security require different disciplines, and vibe coding compresses the time between writing and shipping in ways that traditional security practices have not yet caught up with.

This vibe coding security checklist covers twenty checks that every team should run before deploying AI-generated code to production. Each item explains why it matters, where mistakes commonly happen, and how to verify it before you ship.

What Is Vibe Coding?

Vibe coding refers to a development workflow where a developer or increasingly a non-developer uses AI tools to generate substantial portions of working code by describing what they want in natural language. Tools like Cursor, GitHub Copilot, Claude, and similar assistants can produce full functions, API routes, database queries, and UI components from a prompt.

The workflow typically looks like this: describe the feature, review the output, run it, iterate. In skilled hands it is genuinely fast. A developer with strong fundamentals can ship in hours what used to take days. In less experienced hands, it is even faster but the gap between working and secure widens considerably.

The core security issue with LLM-generated code is not that AI is malicious. It is that AI generates plausible code. Plausible and secure are not the same thing. The model is optimizing for code that runs, not code that is hardened against real-world attack patterns. Authentication logic that works in a demo can be trivially bypassed in a real application. Input validation that looks correct can miss edge cases an attacker will deliberately target.

Why Security Matters More Than Ever With AI Coding

Traditional development cycles had natural friction points where security review could happen. Code reviews, sprint retrospectives, QA cycles each created an opportunity to catch problems before they reached production. Vibe coding compresses or eliminates those friction points entirely.

The speed of release increases. The depth of manual review decreases. Dependency usage grows because AI-generated code frequently imports packages without questioning whether they are actively maintained or carry known vulnerabilities. And the developers or founders shipping the code often do not have the security background to spot problems that a trained reviewer would catch immediately.

Production risk is the outcome. A compromised user account, a leaked API key, an exposed database, or a broken authorization check can damage a startup's reputation faster than any product problem. For early-stage companies without dedicated security teams, the consequences of a breach are often existential.

The Complete Vibe Coding Security Checklist

Run through every item below before shipping AI-generated code to a production environment. For teams moving fast, treat this as a pre-deployment gate, not an optional review.

1. Never Deploy AI-Generated Code Without Review

Why it matters: AI generates code that runs. It does not generate code that is necessarily correct, efficient, or secure. Deploying without review removes the only safety check between the model's output and your users.

Common mistakes: Running output directly from a prompt into production without reading it. Assuming that because the tests pass, the code is safe. Skipping review when under deadline pressure.

How to verify: Every piece of AI-generated code should be read line by line by a developer who understands what it is supposed to do. Use a pull request workflow even if you are a solo founder reviewing your own diffs forces you to read them.

2. Verify Authentication Logic

Why it matters: Authentication is the front door of your application. Flaws here mean attackers can access accounts they do not own. AI-generated authentication code frequently omits edge cases session expiry, token rotation, concurrent session limits.

Common mistakes: Rolling custom JWT validation when a tested library already exists. Trusting the client to send user ID values that should be derived server-side. Accepting tokens without validating the signing algorithm.

How to verify: Use established authentication libraries rather than custom implementations wherever possible. Check that session tokens expire, that refresh tokens are rotated after use, and that failed login attempts trigger rate limiting.

3. Verify Authorization Rules

Why it matters: Authentication proves who you are. Authorization controls what you can do. These are separate concerns and AI-generated code frequently conflates them or omits authorization checks entirely.

Common mistakes: Checking that a user is logged in but not checking that they are allowed to access the specific resource they requested. Relying on client-side checks that an attacker can bypass. Generating admin endpoints without access controls because the prompt did not specify them.

How to verify: For every API route, confirm that the code checks not just authentication but that the authenticated user has permission to perform the specific action on the specific resource. Test this by manually attempting to access other users' data with a valid but unauthorized session.

4. Scan Dependencies For Vulnerabilities

Why it matters: AI-generated code installs packages freely. Many of those packages have known vulnerabilities, are abandoned, or were never audited. One vulnerable dependency can compromise an otherwise secure application.

Common mistakes: Running npm install or pip install on whatever the AI suggested without checking the package's maintenance status, download count, or vulnerability history.

How to verify: Run npm audit, pip-audit, or equivalent for your stack before every deploy. Set up Dependabot or Snyk to monitor for newly discovered vulnerabilities in packages you already use. For any package you have not used before, check its GitHub page, last commit date, and open issues.

5. Check For Hardcoded Secrets

Why it matters: AI models often include placeholder API keys, database connection strings, or passwords inline in generated code. Developers sometimes leave these in place because the code works and they intend to clean it up later. Later does not always come before a commit reaches a public repository.

Common mistakes: Committing a .env file with real values. Hardcoding a database URL or API key directly in source code. Pushing to a public GitHub repository before scanning for secrets.

How to verify: Run a tool like git-secrets, truffleHog, or Gitleaks before every commit. Add a pre-commit hook that blocks commits containing patterns matching API keys, tokens, or connection strings. Verify that every secret in your codebase is loaded from an environment variable, not hardcoded.

6. Review API Security

Why it matters: AI-generated APIs are often built for functionality, not defense. They may expose more endpoints than necessary, return more data than required, or use authentication inconsistently across routes.

Common mistakes: Returning full database objects when only specific fields are needed. Exposing internal IDs or metadata that aids enumeration. Building public endpoints that were meant to be private.

How to verify: Review every API endpoint and confirm it returns only the data the client actually needs. Check that all endpoints require authentication unless they are explicitly public. Confirm that error messages do not reveal internal system details.

7. Validate User Input

Why it matters: Any data that enters your application from outside form fields, URL parameters, file uploads, API payloads is potentially malicious. AI-generated code frequently validates input optimistically, checking for the expected format but not for unexpected or malicious content.

Common mistakes: Accepting string lengths without limits. Trusting URL parameters as valid identifiers without parsing and validation. Using user-supplied values in file paths or system commands.

How to verify: For every input field, confirm that the server validates type, length, format, and acceptable range. Reject unexpected fields rather than ignoring them. Use a validation library rather than hand-rolling checks for each field.

8. Prevent SQL Injection

Why it matters: SQL injection remains one of the most exploited vulnerability classes in web applications. AI-generated database queries sometimes use string interpolation to build queries dynamically, which is exactly the pattern that creates SQL injection vulnerabilities.

Common mistakes: Building query strings by concatenating user input directly. Using raw SQL with template literals or f-strings. Trusting an ORM to protect you without understanding what queries it generates.

How to verify: Search the codebase for any instance where user input is included in a database query. Every such instance should use parameterized queries or prepared statements. Run a tool like Semgrep with SQL injection rules to catch patterns you may have missed.

9. Prevent XSS Vulnerabilities

Why it matters: Cross-site scripting allows attackers to inject malicious scripts into pages viewed by other users. This can result in stolen session tokens, account takeovers, and data exfiltration. AI-generated frontend code sometimes renders user-provided content without sanitization.

Common mistakes: Using dangerouslySetInnerHTML in React without sanitizing the content. Rendering user-supplied values directly into the DOM. Trusting the database to store only safe values.

How to verify: Audit every location where user-supplied data is rendered in the UI. Use a library like DOMPurify when rendering HTML content. Implement a Content Security Policy header to reduce the impact of any XSS that does get through.

10. Verify File Upload Security

Why it matters: File upload endpoints are a common attack vector. Attackers upload executable files, oversized files designed to exhaust storage, or files with malicious content embedded in metadata.

Common mistakes: Accepting any file type without validation. Storing uploaded files in a publicly accessible directory. Using the original filename from the client rather than generating a new one server-side.

How to verify: Validate file type by checking magic bytes, not just the file extension. Set a maximum file size. Store uploaded files outside the web root or in cloud storage with access controls. Generate new filenames server-side and never trust the client-provided name.

11. Review Database Permissions

Why it matters: AI-generated database setup often uses a single database user with full privileges for convenience. If your application is compromised, an attacker with full database credentials can read, modify, or delete everything.

Common mistakes: Using the root database user for application connections. Granting DROP and DELETE permissions to application users that only need SELECT and INSERT. Not separating read and write credentials.

How to verify: Create a dedicated database user for your application with only the permissions it actually needs. Review what permissions are currently granted and revoke anything that is not necessary. Use separate read replicas for reporting queries where possible.

12. Enable Logging and Monitoring

Why it matters: You cannot investigate a security incident you did not record. Many startups discover a breach only when a customer reports it, by which point the attacker has been inside the system for weeks.

Common mistakes: Logging only application errors and not security-relevant events. Not logging failed authentication attempts, permission denials, or suspicious access patterns. Having no alerting when anomalous behavior occurs.

How to verify: Confirm that your logs capture failed logins, permission errors, unusual access patterns, and all administrative actions. Set up alerting for error rate spikes, unusual traffic patterns, and repeated failed authentication attempts. Ensure logs are stored somewhere the application cannot delete them.

13. Configure Rate Limiting

Why it matters: Without rate limiting, attackers can brute-force login endpoints, enumerate user accounts, spam form submissions, or conduct denial-of-service attacks against your application.

Common mistakes: Having no rate limiting at all on authentication endpoints. Setting rate limits so high they provide no meaningful protection. Only rate limiting at the application layer with no protection at the infrastructure level.

How to verify: Confirm that login, registration, and password reset endpoints have per-IP rate limits. Test by sending requests in rapid succession and confirming the limit is enforced. Add rate limiting at both the application level and the infrastructure or CDN level.

14. Review Third-Party Packages

Why it matters: Supply chain attacks are increasing. A malicious or compromised package in your dependency tree can exfiltrate data, create backdoors, or corrupt your application silently.

Common mistakes: Installing packages without checking their source or maintenance status. Using packages with very few downloads or contributors. Not pinning package versions, which allows silent updates to pull in compromised code.

How to verify: For every new package, check the GitHub repository, contributor list, recent activity, and open issue quality. Use a lock file and pin dependencies. Set up Dependabot or Snyk to monitor for updates and vulnerability disclosures. Remove packages that are not actively used.

15. Check Environment Variables

Why it matters: Environment variables are where secrets should live. But they need to be configured correctly, protected in CI/CD pipelines, and never exposed to the client side of your application.

Common mistakes: Exposing server-side secrets to the frontend through framework conventions like Next.js NEXT_PUBLIC_ prefixes. Storing environment variables in version control. Not rotating secrets after a team member leaves.

How to verify: Audit every environment variable and confirm that secrets are only accessible server-side. Verify that your CI/CD system injects variables at build time from a secure secrets store, not from a committed file. Rotate all production secrets any time your team composition changes.

16. Run Static Security Analysis

Why it matters: Static analysis tools can catch entire classes of security vulnerabilities automatically, before code reaches production. Running them takes minutes and routinely finds issues that manual review misses.

Common mistakes: Not running any static analysis tools. Running them only occasionally rather than on every pull request. Ignoring the findings because fixing them takes time.

How to verify: Add Semgrep, SonarQube, or a similar tool to your CI pipeline and configure it to fail builds when high-severity issues are found. Review findings before marking them as false positives. For AI-generated code, run analysis before merging, not after.

17. Test Error Handling

Why it matters: Error messages that reveal stack traces, database queries, file paths, or internal service details give attackers valuable information about your infrastructure. AI-generated error handling is often verbose and developer-friendly, which is the opposite of what you want in production.

Common mistakes: Returning raw exception messages to API clients. Showing stack traces in production UI. Logging sensitive data in error messages.

How to verify: Test your application by deliberately triggering errors invalid inputs, missing resources, unauthorized requests. Confirm that the user-facing response contains only a safe, generic message. Confirm that detailed error information is logged internally but never sent to the client.

18. Review Infrastructure Security

Why it matters: The security of your application code is irrelevant if your infrastructure is misconfigured. Open ports, overpermissioned cloud roles, and unencrypted storage are common issues in infrastructure generated quickly with AI tools.

Common mistakes: Leaving cloud storage buckets publicly accessible. Using wildcard IAM policies. Running database servers with public internet access. Not encrypting data at rest.

How to verify: Run a cloud security posture check using tools like AWS Security Hub, Google Security Command Center, or third-party tools like Prowler. Confirm that databases are not publicly accessible. Verify that IAM roles follow the principle of least privilege. Enable encryption at rest for all data stores.

19. Verify Backup Procedures

Why it matters: Ransomware, data corruption, and accidental deletion are all real risks. Backups that are never tested are backups that may not work when you need them most.

Common mistakes: Assuming the cloud provider's default snapshots are sufficient. Not testing restore procedures. Storing backups in the same account or region as the primary data, where they can be deleted in the same incident.

How to verify: Confirm automated backups are running and that retention policies match your recovery requirements. Test a restore procedure at least once per quarter. Store a copy of backups in a separate account or location that cannot be accessed with the same credentials as production.

20. Create an Incident Response Plan

Why it matters: When a security incident happens and for many fast-moving startups, it will the teams that respond best are the ones that had a plan before they needed it. Improvising during an incident leads to slower response, worse decisions, and more damage.

Common mistakes: Having no documented process for what to do when a breach is suspected. Not knowing who is responsible for each step of the response. Not having a way to notify affected users promptly.

How to verify: Write down the steps your team will take when an incident is detected: who gets notified, how you contain the damage, how you investigate, how you communicate with users, and how you prevent recurrence. Review this document every six months and update it when your team or infrastructure changes.

Security Tools Every Team Should Use

The following tools are practical for startup and small engineering teams. None require a dedicated security team to operate.

  • Snyk: Scans dependencies, container images, and infrastructure-as-code for known vulnerabilities. Integrates with GitHub and runs on every pull request automatically
  • Semgrep: Static analysis tool with rules for common security vulnerabilities. Runs in CI and is fast enough to include in every build without slowing teams down significantly
  • SonarQube: Broader code quality and security analysis, useful for catching issues across a full codebase rather than just changed files
  • OWASP ZAP: Open source web application scanner that actively tests running applications for common vulnerabilities including XSS, injection, and broken authentication
  • GitHub Security: Built-in secret scanning, Dependabot alerts, and code scanning that activates without any configuration for public repositories and with minimal setup for private ones
  • Dependabot: Automated dependency updates that keep packages current and flag security advisories set it up once and it runs continuously
  • Gitleaks or truffleHog: Pre-commit and CI-stage scanning for secrets and credentials accidentally included in commits

Common Vibe Coding Security Mistakes

  • Blind trust in AI output: Assuming that because the code runs and passes tests, it is secure. Security correctness and functional correctness are different properties
  • Skipping code review: Treating AI-generated code as if it came from a trusted senior engineer who already reviewed it. It did not
  • Ignoring dependency risks: Accepting whatever packages the AI suggests without checking maintenance status, vulnerability history, or download counts
  • Missing authorization checks: Implementing authentication correctly but failing to check whether authenticated users are allowed to access specific resources
  • No monitoring: Deploying to production without the ability to observe what is happening in the application or detect anomalous behavior
  • Hardcoded secrets: Leaving API keys, tokens, or database credentials inline in code because cleaning them up was deferred indefinitely
  • Verbose error messages: Exposing internal system details in error responses that help attackers understand your architecture
  • Overpermissioned infrastructure: Using administrator credentials for application connections because it was faster to set up that way
  • No rate limiting: Leaving authentication and form submission endpoints fully open to brute-force and enumeration attacks
  • Never testing backups: Running backup jobs without verifying that the resulting backups can actually be restored in a reasonable time frame

Vibe Coding For MVPs vs Production

The appropriate level of security rigor depends on what you are building and what is at stake. This comparison shows the minimum standard at each stage.

StageSecurity PriorityMinimum RequirementsReview Depth
PrototypeLowNo real user data, no production secretsSelf-review only
MVPMediumAuthentication, no hardcoded secrets, dependency scanningPeer review + basic tooling
ProductionHighFull checklist above, monitoring, incident response planThorough review + automated scanning
EnterpriseCriticalPenetration testing, compliance review, formal security programDedicated security review + external audit

The mistake most teams make is treating their MVP as a prototype moving fast without a security floor and then discovering that their MVP became their production application without the security posture ever being upgraded. The cost of retrofitting security into a live product with real users is dramatically higher than building it in from the beginning.

Production Readiness Framework

Before promoting any vibe-coded application to production, run through each of these areas.

  • Code Review: Every pull request reviewed by at least one developer who did not write it. Security-relevant changes reviewed against the checklist above
  • Security Testing: Static analysis passing with no high-severity findings. Dependency scan clean. Manual testing of authentication and authorization flows
  • Load Testing: Application tested under expected peak load. Confirm it does not expose timing vulnerabilities or degrade in ways that affect security under stress
  • Monitoring: Logging in place for all security-relevant events. Alerting configured for error rate spikes and anomalous access patterns. Dashboards reviewed before launch
  • Deployment: Secrets managed through environment variables or a secrets manager. Infrastructure deployed with least-privilege IAM. No public exposure of internal services
  • Incident Response: Written plan exists and team has read it. Contact list is current. Communication templates prepared for user notification if needed

Real Startup Scenario: From MVP to Secure Production

A two-person founding team built a project management tool for construction companies using AI coding tools. In six weeks they had a working MVP authentication, project tracking, file uploads, and a dashboard showing project status. They launched a paid beta with fifteen customers.

Early feedback was positive. They started onboarding more customers. A month into the beta, a customer reported that they could access another company's projects by modifying the project ID in the URL. The authorization check existed on the frontend the backend route accepted any valid project ID from any authenticated user.

They audited every API route and found three similar issues. File uploads were storing files in a publicly accessible directory with the original filename from the client. A database connection was using root credentials. Logging only captured application errors, not access patterns.

They spent two weeks fixing the issues before continuing to onboard customers. The fixes were not complex authorization checks on every route, server-generated filenames, a least-privilege database user, and structured logging to a separate log management service. The work took longer than it should have because the codebase was not structured with these concerns in mind from the start.

Their conclusion: the AI tools saved them weeks of development time. The security gaps were not the AI's fault they were the result of prompts that asked for functionality without specifying security requirements. Adding security requirements to prompts and running the checklist before each deployment would have caught all of it before the first customer signed in.

Conclusion

AI coding tools can genuinely accelerate development. The teams using them most effectively are not the ones who use them fastest they are the ones who combine AI productivity with strong engineering practices that prevent fast from becoming dangerous.

Security cannot be fully automated. No AI tool, no scanner, and no checklist replaces the judgment of someone who understands your application, your users, and the threat model you are operating under. But running this vibe coding security checklist before every production deployment closes the most common gaps that fast-moving teams introduce and it takes less time than a post-incident cleanup.

The goal is not to slow down. The goal is to build fast and ship safely. Those two things are not in conflict when you have the right habits in place.


For Founders & Product Leaders

Shipping AI-Generated Code? Get a Free Security and Architecture Review.

Nurture Technologies works with startups and product teams who are building fast and want to make sure they are building safely. We review AI-generated codebases, identify security gaps before they become incidents, and help teams harden their applications for production. If you are scaling a vibe-coded MVP or want a second set of eyes on your architecture, we offer a free security and architecture review.

AI-generated code review and security audit
Authentication and authorization assessment
Dependency vulnerability scanning
Infrastructure security posture review
Production readiness checklist walkthrough
Talk to a Security EngineerNo pitch. A real technical conversation about your application.
Nurture Technologies

NEED HELP BUILDING YOUR PRODUCT?

From SaaS platforms and AI applications to marketplaces and internal business systems, Nurture Technologies helps businesses design, build, and scale modern software products.

Architecture Planning
MVP Development
Dedicated Engineering Teams
AI Integration
Ongoing Product Growth
Book a Free Consultation →View Our ServicesFree 30-minute strategy session.

Need Answers Specific to Your Project?

Every product has unique requirements. Speak with our engineering team for recommendations tailored to your business.

Free consultation for startups and businesses.

Talk to an Engineer →
FAQ

FREQUENTLY ASKED QUESTIONS

Is vibe coding secure?+

Vibe coding can be secure when teams apply proper review, testing, and security practices to AI-generated code. The risk is not that AI writes inherently insecure code it is that teams skip the review steps they would apply to hand-written code and deploy outputs they do not fully understand. With the right checklist and tooling in place, the security risks of AI-assisted development are manageable.

Can AI-generated code be used in production?+

Yes, but it requires the same security review and testing discipline you would apply to any other code. AI-generated code is a starting point, not a finished product. Every security-sensitive component authentication, authorization, input validation, database queries should be reviewed by someone who understands what secure implementation looks like before it reaches production.

What are the biggest vibe coding security risks?+

The most common risks are missing authorization checks, hardcoded secrets committed to version control, vulnerable dependencies added without review, SQL injection from dynamically built queries, and overpermissioned infrastructure created for convenience during rapid development. These are all preventable with a structured pre-deployment review.

How do I audit AI-generated code?+

Start with static analysis tools like Semgrep or SonarQube to catch common vulnerability patterns automatically. Run a dependency scan with Snyk or npm audit. Then manually review authentication flows, authorization checks, input validation, and error handling. For every API route, confirm that it requires appropriate authentication and that the authenticated user is verified to have permission for the specific action.

Should startups use AI coding tools?+

Yes. The productivity gains are real and the competitive pressure to move quickly is real. The answer is not to avoid AI tools but to use them with the right guardrails code review, security tooling in CI, and a pre-deployment checklist that catches the most common security gaps before they reach production.

What is the most common security mistake in vibe-coded applications?+

Missing authorization checks. Developers often implement authentication correctly the user must be logged in but forget to verify that the logged-in user is actually allowed to access the specific resource they are requesting. This creates broken access control vulnerabilities that allow users to access other users' data by modifying IDs in URLs or API requests.

How do I find hardcoded secrets in AI-generated code?+

Use tools like Gitleaks, truffleHog, or GitHub's built-in secret scanning. Set up a pre-commit hook that blocks commits containing patterns matching API keys, database URLs, or access tokens. Run these tools across your entire codebase history, not just new commits, as secrets may have been introduced and never removed.

Do AI coding tools introduce new types of vulnerabilities?+

Not entirely new types the vulnerability classes are the same as in hand-written code. What AI tools change is the scale and speed at which code is generated, which means vulnerabilities can be introduced across large portions of a codebase quickly if the prompts do not specify security requirements and the outputs are not reviewed carefully.

What security tools should a startup use when building with AI?+

At minimum: Snyk or Dependabot for dependency scanning, Semgrep or GitHub code scanning for static analysis, a pre-commit secret scanner like Gitleaks, and structured logging with alerting for anomalous access patterns. These tools are low-cost or free for small teams and can be set up in a day.

How should I include security requirements in AI coding prompts?+

Be explicit. When prompting for authentication code, specify that the implementation should use a well-tested library, validate tokens server-side, and enforce session expiry. When prompting for API routes, specify that every route should verify both authentication and that the authenticated user has permission for the specific resource. The more specific your security requirements in the prompt, the less cleanup work the review requires.

Is it safe to use an AI-generated authentication system?+

It depends on what it generates. AI often produces functional authentication flows that have subtle security flaws missing token rotation, weak session expiry handling, or algorithm validation gaps. The safer approach is to use an established authentication library or service and have the AI generate the integration code rather than the core authentication logic itself.

How do I prevent SQL injection in AI-generated code?+

Search the codebase for any location where user input is included in database queries. Every such location should use parameterized queries or prepared statements never string concatenation or template literals with user values. Run Semgrep with SQL injection rules to find patterns the manual review might miss. Modern ORMs handle this correctly by default, so prefer ORM queries over raw SQL wherever possible.

What is the difference between authentication and authorization?+

Authentication answers the question of who you are it verifies that the user is who they claim to be, typically through a login with credentials or a session token. Authorization answers the question of what you are allowed to do it verifies that the authenticated user has permission to perform a specific action on a specific resource. AI-generated code commonly implements authentication correctly but omits or incorrectly implements authorization.

How do I make a vibe-coded MVP production-ready?+

Run through a security checklist covering authentication, authorization, dependency vulnerabilities, hardcoded secrets, input validation, and error handling. Set up monitoring and logging before launch. Verify your infrastructure is not publicly exposing internal services. Create a minimal incident response plan. The goal is not perfection it is closing the most common gaps before real users are at risk.

Can I trust AI to write secure code if I give it the right prompts?+

Better prompts produce better output, and security-aware prompts produce more security-conscious code. But you should not replace review with trust. Even with strong prompting, AI models can miss edge cases, use outdated patterns, or misunderstand the threat model of your specific application. Treat AI output as a draft that requires review, not as a finished, verified implementation.