Boost My AgentGet Boost OS

How to fix a vibe-coded app that's breaking

Corbin Brown

Corbin Brown

4 min read

Pixel art of a cracked app window mended with glowing stitches, a wrench beside it

When a vibe-coded app starts breaking, the instinct is to tell the AI “fix it”, and that instinct is why it keeps breaking. An agent told “fix it” guesses at the cause, changes whatever its guess implicates, and frequently breaks a second thing paying for the first. The way out is a process: reproduce, diagnose, change one thing, verify, lock it in.

Why this keeps happening to you

It's not bad luck. AI agents have no memory between sessions: today's agent doesn't know what yesterday's agent built or why. So each “fix” gets made without context, contradicting old decisions, and the app accumulates contradictions until something visible snaps. Understanding this changes how you fix things: the goal isn't just making the symptom disappear, it's making the fix stick.

Step 1: Reproduce it before you prompt anything

Write down the exact path to the failure: what you did, what you expected, what happened instead, word-for-word error messages if there are any. “The app is broken” gives an agent nothing. “Submitting the signup form with any email shows a spinner forever; the account never appears” gives it a trail. If you can't reproduce the problem reliably, that's your first task: an unreproducible bug can't be verified as fixed.

Step 2: Make the agent diagnose before it touches code

This is the step that changes everything. Prompt in two phases:

The signup form shows a spinner forever after submitting.
Expected: account created, user sent to the welcome page.

Do NOT change any code yet. Investigate and tell me:
1. What is actually failing, with evidence from the code or logs
2. Why it's failing
3. What you propose to change, and what it might affect

“Don't change code yet” forces the agent out of guess-and-patch mode. Read the diagnosis and make it convince you, if the evidence is thin (“probably a database issue”), push: “show me the exact line and the log entry that proves it.” Evidence-based diagnosis is the difference between fixing the cause and repainting over the crack. If your app has server logs, have the agent read them; errors your users hit usually left footprints there.

Step 3: One change, then verify like a skeptic

Approve the proposed fix: just the fix, no “while I was in there” improvements. Then verify all three of: the original failure path now works, the surrounding features still work (with signup fixed: does login still work? password reset?), and the agent can state in one sentence what was wrong and what changed. If a second thing broke, stop and diagnose again: don't stack a patch on a patch.

Step 4: Lock in the win

Two closing moves that stop the whack-a-mole. Commit immediately (“commit this fix with a message explaining what was wrong”), so the working state is a save point you can always return to. Then write the lesson where future sessions will see it: a project rules or memory file (AGENTS.md, .cursor/rules, CLAUDE.md, whatever your tool reads) with the decision that prevents the relapse: “Signup uses the API at /api/signup; the form must never call the database directly.” The bug that can't recur is the one whose fix became a written rule.

FAQ

Should I just rebuild the app from scratch?

Almost never for one bug, sometimes for systemic rot. If every change breaks two other things and nobody can explain how the app hangs together, a rebuild with better habits (planning, checkpoints, written rules) can genuinely be faster than archaeology. For anything less, fix forward: rebuilds restart the same clock that produced this mess unless the habits change too.

The AI says it fixed it, but it's still broken. Why?

Agents report what they changed, not what they verified: “fixed” often means “I edited something plausibly related.” Never accept the claim; walk the original failure path yourself. If it's still broken, the diagnosis was wrong: return to step 2 and demand evidence, don't ask for another blind attempt.

How do I stop new bugs from appearing every session?

Give the agent memory and fences. A project memory file means each session starts informed instead of guessing; committing after every win means mistakes are cheap to undo; and “don't change anything else” in every task prompt keeps eager agents inside the job you gave them.

Share this article

Vibe code without the slop

Boost OS adds twenty slash commands, six always-on guards, and persistent project memory to Cursor, Claude Code, Codex, and every major agent. One license, lifetime updates.

From $99 · 7-day refund · license key emailed instantly