Planted AGENTS.md in Downloads turned Codex into malware install
A webpage silently dropped AGENTS.md into ~/Downloads; Codex obeyed it and installed malicious npm function-color in >90% of tests. Claude Code CLAUDE.md variant leaked OAuth ~50%.
Real vibe-coding and coding-agent ship logs — what people tried, what broke, and the fix. Curated from public Reddit, forums, and write-ups. You approve before anything goes live.
A webpage silently dropped AGENTS.md into ~/Downloads; Codex obeyed it and installed malicious npm function-color in >90% of tests. Claude Code CLAUDE.md variant leaked OAuth ~50%.
Builders on T3 Code / Agents SDK saw the rolling 5-hour usage bar drain faster than interactive Claude Code; weekly limit unchanged. Theo flagged it as an Anthropic-side bug.
A max-effort Claude Code research turn spawned 394 subagent calls (341 concurrent) and ~84M tokens before lockout; parallel main sessions still drained the plan.
Anthropic MCP docs: in claude -p / Agent SDK / some cloud sessions, project .mcp.json servers load without the interactive approval prompt.
Poisoned PyPI/Docker release ran ~2h on Oct 21; official post ties the chain partly to Claude Code embedding GitHub CLI OAuth tokens into logged responses.
Cursor/Lovable Stripe webhook had the failure case, but only logged and returned 200 — users kept paid access forever.
5/5 audited Cursor/Lovable apps had open read policies so anyone could SELECT *.
One vibe-coded app leaked the entire users table via a key that lived in page JS.
Role checks on client-writable metadata let any logged-in user promote themselves.
Publish copied the UI; Site URL / redirects / Stripe webhook stayed on preview settings.
Supabase Edge Functions default JWT check rejected Stripe before the handler ran.
App worked in Bolt preview; after export/deploy, real Stripe webhooks and live keys fell apart on Netlify/Vercel.
Sandbox Cursor agent restored a tracked file; new uncommitted edits were gone with no confirm.
Tracked ~100 Claude Code sessions: subagents, screenshots, and unused MCPs dominated burn.
Checklist from real vibe-coding audits: open RLS, service_role in client, wild CORS, unvalidated webhooks, and more demo defaults.
Left Cursor free to iterate on Expo paths for itch.io; UI corrupted over ~2 hours. Recovered via last good git tag.
Cursor-built auth silently used a hardcoded environment variable; prod logins failed while local looked fine.
After Google OAuth, updating edge-function metadata made the agent reintroduce old API keys and break the flow.
Cursor/Lovable Stripe handler returns 200 and logs the event, but never flips is_paid or access in the database.
Second real user hit RLS/session timing; unsigned Stripe webhooks left the database stale on launch night.
2026 study: Lovable missing RLS; Bolt secrets in the frontend; Cursor BOLA on invoice routes — same spec, different holes.
Generated Stripe webhook parsed JSON with no constructEvent — forgeable paid upgrades without signature check.
JWT still valid after cancel; is_paid writable from the browser; email_verified never flipped on a vibe-coded SaaS.
User hit refresh in a loop at checkout with no rate limit; every refresh fired expensive API routes on a Claude Code app.
Append-only project log plus roadmap Markdown keeps Cursor, Claude Code, and Codex from forgetting decisions across sessions.