How to Read the Plan Your Agent Wants You to Approve

Three plain-English questions that catch scope creep before it runs, not after

8 min read

Argued into existence in the Writing Room7 messages · 1 technical catch · 1 mind changed
How to Read the Plan Your Agent Wants You to Approve

"Should I use plan mode if I'm new to coding?" That's a real forum question, asked flatly, half-expecting the answer is no — that this is for people who can already read a diff. It isn't. Here is a story the .NET developer Mukesh Murugan wrote up on codewithmukesh.com this year, and it reads less like a bug report than a confession. They asked Claude Code to add soft deletes to an existing ASP.NET API — no plan, no review, just go. It modified 14 files, added a global query filter — a rule touching every future query — that broke three endpoints that had been working fine, and touched migration history — the log of past database changes — nobody asked it to touch. They spent the next half hour undoing it by hand, one file at a time, and the lesson they wrote down wasn't 'write a better prompt.' It was 'plan before you code.'

Plan mode exists to put a checkpoint before that moment, not after it. You turn it on, the agent stops and writes out what it intends to do before it does any of it, and you get a chance to say no first. It is the single best safety feature an AI coding tool has ever shipped you for free.

In practice, a lot of you are staring at the plan, not reading it, and hitting approve anyway — because the plan is twelve lines of tool-speak about files you half-recognize, and you don't know what you're supposed to be checking for. Some go looking for a way to skip the screen entirely — "auto-approve Claude Code plans instantly" — which is the exact opposite of what you want, but I understand the impulse: if you can't read the thing, why not remove it.

Here's the part nobody's telling you: you don't need to read code to read a plan. You need to check three things, none of which require a programming background, and I'm going to hand you all three today.

What the screen is actually showing you

Plan mode, wherever you've met it, does the same job. Claude Code has had it for a while now — cycle through modes with Shift+Tab and you'll land on it. Cursor shipped its version in Cursor 2.0 this past October, and it's easy to confuse with Composer, Cursor's in-house coding model — Composer writes the code, this screen stops it before any of it runs. If you've been building with AI tools for the better part of a year, you've had this checkpoint the whole time; the question was never whether you'd see it, it's whether you've actually been reading it.

Mechanically it's simple: the agent reads your request and your codebase, then writes a numbered list of the changes it's about to make — which files, which functions, which commands it'll run — and it stops. Nothing is written to disk yet. Nothing is deleted, no table is touched. The plan is a proposal, not a receipt. You approve it, or you send it back, or you edit it, and only then does the agent start moving files around.

That gap — proposal, then a real stop, then execution — is the whole point, and it's also exactly where things go wrong. People report the gap itself failing — issues filed against Claude Code like #85095, where plan mode silently exits and the agent runs the plan anyway, and #39687, where plan mode is not enforced and Claude executes without waiting for approval. Those are real bugs, and they're not what I'm writing about today — that's the tool breaking its own contract. I'm writing about the far more common case: the gate held, the plan sat there waiting for you, and you approved something you hadn't evaluated.

You're not grading the code. You're grading the scope.

Every explainer on plan mode stops at "read it carefully." That's true and it's useless — it's advice for someone who can already tell a reasonable diff from a dangerous one, and if you could do that you wouldn't need the screen explained to you.

So drop the idea that you're reviewing code. You're not. You're checking whether the plan matches the size and shape of what you asked for — a scope check — and that's a plain-English skill, not a programming one. A parent signing a school permission slip doesn't evaluate the chemistry of the field trip; they check that the bus goes where it says it goes, at the time it says, and comes back. That's the level you're reading at here.

Three questions before you hit approve

Does it name a file, table, or tool you never mentioned?

You asked for a login button. The plan mentions 'auth_middleware.py', 'users' table, and a change to your email provider config. None of those were in your sentence. That's not a red flag — a login button genuinely does touch auth code — but it's your cue to stop and ask the agent why it needs that file, before you approve anything. If the answer doesn't make sense in one sentence, don't approve it in one click.

Does the step count match the size of your ask?

"Fix the typo in the footer" should not produce an eleven-step plan. If it does, something in there is doing more than fixing a typo — refactoring the footer component, touching the build config, "while I'm in here" changes that were never part of your request. Small ask, small plan. When the numbers stop matching, that mismatch is the whole signal; you don't need to know what step seven does to notice there shouldn't be eleven steps for a typo.

Is there a step that isn't yours to have asked for?

This one is a different catch than question one — question one flags a stranger, a file you don't recognize; this flags a familiar-looking step, the "while I'm in here" move, that still reads like good practice rather than like your request. "Update the .env.example file," "add a migration for the new column," "run the test suite and fix failures it finds." Some of these are genuinely fine. But you should be able to point at every step and say "yes, that's in service of what I asked," not "I guess that's probably needed." If you can't connect a step back to your sentence, that's the step to question before it runs, not after.

What that actually looks like on screen

Here's a plan shaped like the kind that gets rubber-stamped, illustrating the checklist rather than quoting a real session:

Plan: Add a "forgot password" link to the login page

1. Add a Link component to LoginForm.tsx
2. Create /pages/reset-password.tsx
3. Add a resetPassword() function to auth.ts
4. Update database schema: add 'reset_token' and 'reset_expires' columns to 'users'
5. Add a new email template and wire up SendGrid API key
6. Refactor session handling in middleware.ts to use the new token flow
7. Run full test suite

Run the three questions. Steps 1 and 2 match the ask exactly — a link and a page. Step 3 is reasonable; you can't reset a password without a function that does it. Step 4 is the first thing you never asked for by name: a schema change, touching every existing user's row. Step 5 pulls in a third-party service you never mentioned. Step 6 is the real catch — "refactor session handling" is not what "add a link" implied, and it's the kind of step that breaks endpoints that were working fine yesterday, which is precisely the pattern that opened this piece. Step 7, "run full test suite," is the quiet one — it sounds responsible, not scope creep, which is exactly the trap question three is built to catch: nobody asked for it, but it reads like good practice.

You didn't need to know what SendGrid is or read a line of TypeScript to catch that. You needed to notice that a two-line ask produced a schema migration and a refactor of something unrelated, and ask the agent to split steps 4 through 6 into a separate, later plan you can look at on their own.

Why this matters

The instinct to auto-approve comes from a true fact wearing the wrong conclusion: yes, you probably can't evaluate whether 'session handling refactor' is well-written. But you were never being asked to. You were being asked whether it belongs in this plan, for this ask, and that's a question about boundaries, not implementation — the one place in the session where your judgment is not just adequate, it's the only thing standing there.

Every other checkpoint in AI-assisted coding happens after the fact. Reading a diff after files have changed. Running tests after the code exists. Asking "why is this line here" after it's already been pasted in. Plan mode is the one moment that happens before any of that — before twelve files change, not after you're doing damage assessment on them — and it's free. You don't lose time reading it. You lose time cleaning up after skipping it.

Final thought

Next time a plan lands on your screen, don't read it looking for something that "looks wrong." Count instead: how many files does it touch that your one sentence never named? If the count is more than zero, ask why, in plain words, before you approve anything — and if the answer doesn't fit in a sentence back, that's your answer too.

How to Read the Plan Your Agent Wants You to Approve | Vibecodes