You know the loop. The agent says "Fixed!", you reload, and it's the same error. Or a new one. You paste "still broken", it tries again, and an hour later the page that half worked doesn't load at all. This is vibe debugging: fixing by feel, without telling the agent what is wrong or what right looks like. Here's how to get out.
1. Stop asking for fixes
Each "try again" adds changes on top of changes that didn't work. The agent also reads its own failed attempts in the chat and keeps building on them. The loop doesn't end by itself. The first step is to stop typing "still broken".
2. Go back to the last version that worked
If you use git, find the last commit where the page worked and go back to it. git log --oneline lists your commits. git restore . throws away changes you haven't committed yet. If you're not sure which command fits, the git undo helper picks the right one for what you want to undo.
If you didn't commit, commit now anyway so you have a point to come back to. Then ask the agent to list every file it changed for this bug, and undo them one at a time.
Throwing away an hour of changes feels bad. It is usually faster than untangling them.
3. Write down the exact error
"It doesn't work" gives the agent nothing to aim at. Get the real error text:
- In the browser: open the console and copy the red lines. See how to copy console errors.
- In the terminal: copy the full error from the dev server, not just the last line. The first lines often name the file.
- No error at all? Say so. "No error in the console, the button just does nothing" is a real clue.
4. Say what should happen
This is the line people skip. Without it, the agent invents its own goal, and may "fix" the error by hiding it. Write one sentence: "Clicking Save should store the name and show a Saved message." Then add the scope: only this page, or everywhere.
Put it together in a fresh chat:
Page: localhost:3000/settings
What I did: changed my name, clicked Save
What happened: nothing, and this error in the console:
TypeError: Cannot read properties of undefined (reading 'id')
Expected: the name saves and a "Saved" message shows
Scope: only this form
Please explain the cause before changing any code.Asking for the cause first is a useful brake. If the explanation sounds wrong, you can say so before any files change. The guide on writing a bug report for an AI agent has a full template.
5. One change at a time
- Ask for one fix. Test it yourself in the browser.
- If it works, commit. Now you have a new safe point.
- If it doesn't, revert that one change and tell the agent what happened, with the new error text.
- If the same fix comes back twice, stop and ask it to list three possible causes instead of trying a fourth fix.
Small steps feel slower. They are how you stop going round in circles.
Give the agent the facts with Darnly
Step 3 and step 4 are the ones that break the loop, and they are the ones people skip when they're tired. Darnly is a free Chrome extension and Mac app that makes them quick. Press Option+Shift+B (Windows is coming soon), click the broken part, and type what you expected.
Darnly saves a report into .darnly/inbox/ in your project with a screenshot that has the broken part boxed in red, the page address, the element, and console errors and failed requests from the last 60 seconds. Your agent reads the exact error and your expected line from the file, instead of "still broken".