

Over the last 18 months, “vibe coding” has shifted from online trend to widespread practice. Developers drop a natural‑language request into tools like Cursor, Claude Code, or GitHub Copilot Agents and let an LLM agent implement a feature end‑to‑end.
Surveys now show that about 75% of developers already vibe code, and most are happy with the results.[1] But a new study from Carnegie Mellon University and collaborators asks a simple question:
When AI agents implement “real” features in “real” repositories, how often is the resulting code actually secure?
The answer is uncomfortable: even when the code “works,” it is usually vulnerable.[1]
In this article, we unpack the main findings of this study and translate them into practical takeaways for engineering and security teams, and into how we think about guardrails at Symbiotic Security.[1]
Most AI‑security benchmarks look at toy snippets: a single function or file, one‑shot generated by a model.
This study is different. It focuses on vibe‑coding agents working on real‑world repositories:
Crucially, the benchmark used in the study covers 77 different CWE types, far more than previous benchmarks.[1]
Takeaway #1
The study finally evaluates AI coding agents in settings that look like your real codebase: big repos, multi‑file edits, complex tests, and subtle security bugs.
The authors evaluate multiple agent frameworks (SWE‑Agent, OpenHands, Claude Code) on top of several frontier models (Claude 4 Sonnet, Kimi K2, Gemini 2.5 Pro). The numbers that matter:
In other words:
Roughly 8 out of 10 “functionally correct” agent‑generated patches are still vulnerable.
And this is not a single‑model issue. Across agents and models, the pattern repeats: functional success is much higher than secure success.
Takeaway #2
If your acceptance criterion is “tests pass” or “it seems to work in staging,” you are almost certainly shipping vulnerabilities when you rely on vibe coding for feature implementation.
The paper includes several case studies that look very familiar to anyone doing AppSec in real systems:
verify_password.None or unusable passwords, creating a measurable timing gap between “user exists” and “user does not exist”.Location header with no sanitization.\\r\\n to add forged headers (e.g., cookies).created is within max_age.<a href="..."> without URL scheme validation.javascript: URLs.These are not “weird” synthetic bugs. They are the same classes of issues that red teams and bug bounty hunters exploit in high‑value systems.
Takeaway #3
AI agents are very good at “making it work” and very bad at respecting the deep invariants that underpin security: constant‑time checks, safe URL handling, strict session lifetime, and so on.
The authors also test several prompt‑based mitigation strategies:
Intuitively, you might expect this to help. In practice:
The reason is important:
Takeaway #4
Security “by prompt engineering” hits a ceiling fast. LLMs cannot reliably trade off functionality and security just by being told to “be secure.”
You need external guardrails and checks, not just nicer prompts.
Another interesting finding: different LLMs and agent frameworks:
For example (in the paper):
This suggests that:
Takeaway #5
Security behavior is non‑uniform across models and agents. A single AI coding setup may be particularly blind to certain vulnerability classes in your stack.
The study is not saying “never use vibe coding.” It is saying:
Using vibe coding as‑is in production, without guardrails, is a security‑incident generator.
Concretely, if you let agents:
…then you should assume that:
Takeaway #6
AI‑assisted coding needs system‑level safety, not just “model alignment” or better UX.
You need policies, guardrails, and automated checks around the model and the agent.
The study focuses on code security, but the implications extend to agentic workflows more broadly, especially with MCP‑style agents that:
From our point of view at Symbiotic Security, the study reinforces several design principles we already believe in:
Takeaway #7
The right mental model is: “We do not trust individual AI outputs; we trust the guarded system that surrounds them.”
This study delivers a clear message to teams scaling AI copilots and coding agents:
To move from “experiments” to safe scale, organizations will need:
This is exactly the journey we are working on at Symbiotic Security: bringing guardrails, MCP‑aware checks, deep remediation, and developer‑centric training into a single workflow, so teams can benefit from vibe coding without inheriting its security liabilities.
