What the research says
In the first study, two-thirds of the problems found were rated Critical or High. Most were broken access control, injection and login failures.
The five problems AI-built apps usually have
Keys in the code
Payment, AI or database keys written straight into files, sometimes in the part every visitor downloads.
Outdated packages
Libraries with known, published security holes that attackers scan for.
Unsafe queries
Text typed by users glued into database queries or shell commands.
Login checked in the browser
Anyone who opens the developer tools can skip it.
Open database rules
Tables anyone can read, because access rules were never set.
Based on Wiz's review of vibe-coded apps (2025) and the studies above.
It happens to real apps
In 2025 a researcher scanned 1,645 apps from Lovable's showcase and found 170 projects whose database rules let anyone read data such as names, payment details and API keys (CVE-2025-48757, disputed by Lovable). Lovable has since added its own security scan, and says plainly that it can't guarantee your app will be 100% secure.
Check your app in two minutes
- Install the free package:
pip install appledger. Or, in Claude Code:claude mcp add appledger -- uvx --from appledger appledger-mcp(needs uv). - Run
python -m appledger path/to/your-app, or ask Claude Code: “Is my app safe to share?” - Read the plain-English report, then let your AI tool fix the problems with the ready-made fix request, and check again.
Your source files are sent over HTTPS to our scanner, checked with Trivy and Opengrep, and deleted right after. Prefer your code never leaves your computer? Use --local with the scanners installed. Secret files such as .env are never sent in either mode.
What the report looks like
Your code contains a live Stripe payment key
Anyone who can see this file can take payments, issue refunds and read your customers' payment details.
Someone could read or change your whole database
Text typed by users goes straight into a database query. Use query parameters instead.
pyyaml is out of date
Version 5.3 has 2 known security problems. Update to 5.4 or newer.
Real output from a sample app with deliberate mistakes. Instead of rule IDs like stripe-secret-token, you get what could happen and what to do.
Why not just ask the AI if it's secure?
You can, and it helps. But an AI reviewing code it wrote can share the blind spots it had when writing it, and it can be talked out of a finding by a misleading comment (Checkmarx, 2025). Rule-based scanners give the same answer every time, so the AI doesn't grade its own homework.
Whether your login and permission logic is right (can one user see another's data?), database access rules set in Supabase or Firebase dashboards, and settings of the live site. Check those separately; for Supabase, use its Security Advisor.
Questions
Is vibe coding safe?
Building with AI is fine, but shipping without a check is not. Independent studies find security problems in most AI-built apps, usually the same few: leaked keys, outdated packages, unsafe database queries and missing access rules.
I found a key in my code. Is moving it to an environment variable enough?
No. Treat any key that was ever in your code or Git history as leaked. Create a new key at the provider, revoke the old one, then store the new one outside the code.
Do you keep my code?
No. Source files are sent over HTTPS, scanned, and deleted right after. In local mode your code never leaves your computer.
Is a clean result a guarantee?
No. Scanners catch common, recognisable problems. They can't judge whether your login and permission logic is right, or check settings that live outside the code, such as database access rules.