AI coding assistants have changed how software gets written. Tools like Cursor and GPT-based assistants let a small team, or even a team with no dedicated engineers, produce working code at a speed that was impossible a couple of years ago. The velocity is real and the output is often good.
But “it runs” and “it’s secure” are, once again, two different things. AI coding assistants are optimised to produce code that works and satisfies the prompt. They are not optimised to produce code that is secure, and they have no awareness of your threat model, your compliance obligations, or your production environment. Before you ship AI-generated code, here is what you need to understand and check.
Why AI-Generated Code Carries Distinct Risk
An AI assistant generates the most statistically likely code that satisfies your request, based on patterns in its training data. That training data includes a great deal of insecure code, because a great deal of publicly available code is insecure. This is the real problem with AI code security: the model reproduces common patterns, and common is not the same as safe. The model does not know which patterns are safe; it knows which patterns are common. Common and safe are not the same thing.
There is also a confidence problem. AI-generated code looks authoritative. It is well-formatted, it is confidently structured, and it usually runs. A reviewer who is not a security specialist, and often the person prompting the AI is not, has little to push back against. The code’s polish masks the absence of any security reasoning behind it.
The Common Vulnerability Classes
1. Hardcoded Secrets and Credentials
AI assistants frequently generate code with credentials inline, an API key in a config, a database password in a connection string, a token in a fetch call, especially when the prompt does not explicitly ask for secure secret handling. The assistant is completing the pattern, and inline credentials are a very common pattern.
2. Unvalidated and Unsanitised Input
Prompts like “build an endpoint that takes a user ID and returns their record” often produce code that trusts the input completely. The result is injection vulnerabilities, SQL injection, command injection, path traversal, because the model produced the direct, functional version rather than the defensive one.
3. Overly Permissive Configurations
Ask an AI to “make this work” after an error, and a common fix is to loosen a restriction: widen CORS to a wildcard, disable certificate verification, open a permissive IAM policy, or turn off a security check that was “getting in the way.” These changes make the immediate error disappear and quietly widen the attack surface.
4. Outdated or Risky Dependencies
AI assistants suggest libraries based on training data that has a cutoff date. The version they reference may be outdated, may carry known CVEs, or, in rarer cases, may be a package name that does not correspond to a legitimate, maintained library. Every AI-suggested dependency deserves the same scrutiny as one a human chose.
5. Weak Authentication and Authorization Logic
When asked to implement auth, AI assistants can produce logic that works for the happy path but misses the security-critical edges, missing authorization checks on sensitive operations, weak session handling, or role checks that are trivially bypassable. It satisfies the functional request without satisfying the security requirement that was never stated.
6. Missing Error Handling That Leaks Information
Generated code often returns verbose errors, stack traces, internal paths, database messages, straight to the user. Helpful during development, a reconnaissance gift in production.
What to Check Before You Ship
- Run static analysis (SAST) on AI-generated code exactly as you would on human-written code. The origin does not change the vulnerability classes; it arguably makes them more likely.
- Scan for secrets before every commit. Because AI assistants inline credentials so readily, secret detection at the pull-request stage is not optional.
- Check dependencies against known-vulnerability databases with software composition analysis, and confirm every AI-suggested package is a real, maintained library at a safe version.
- Review authentication and authorization by hand. These are the areas where automated tools help least and where AI-generated logic most often falls short. A human needs to confirm that sensitive operations are actually protected.
- Validate input handling on anything that accepts external data. Assume the generated code trusts its inputs until you have confirmed otherwise.
- Put a security gate in the pull request. The most reliable control is to make the check unavoidable: findings surface at code review, before the merge, so nothing insecure reaches production silently. Enforcing secret-aware PR quality gates that fail the pull request on any leaked secret is the strictest version of this control.

A Note on the Reviewer Problem
The teams adopting AI coding assistants most enthusiastically are often the ones with the least security engineering depth, that is part of the appeal, because the AI compensates for a small team. But it means the code is frequently reviewed by people who are not equipped to catch security flaws by eye.
This is not an argument against AI assistants. It is an argument for automating the security review so it does not depend on the reviewer being a security expert. If your process requires a human to spot a subtle authorization bug in confident-looking generated code, the process will fail eventually. Tooling that surfaces findings automatically, at the pull request, with specific guidance on what to change, and AI-assisted remediation to speed the fix, is what makes AI-assisted development safe for teams that do not have a security specialist reading every diff. This is the model behind securing AI coding agents at scale for enterprise development teams: automate the review so it does not hinge on human expertise.
People Also Read
- Copilot, Cursor & Claude Code Security Risks: What Teams Miss
- AI Code Security: The Real Problem
- Fix Code Vulnerabilities Faster With AI Remediation
- What is Code Security?
- The AI Coding Agent Attack Surface: The Cursor/Aurora Breach
- Why AI Coding Agents Become an Identity and Credential Risk
The Bottom Line
AI-generated code is not inherently insecure, but it is not inherently secure either, and it is produced by something with no concept of your security requirements. Treat it exactly as you would treat code from a fast, prolific, junior developer who has never been told what “secure” means for your organisation: useful, worth having, and absolutely requiring review before it ships.