FREE1 free audit every month. No card, every finding included.

GUIDESEPISODES

EP 12 · PROOFAster × Claude

Make Claude prove it: 4 habits that catch the trick

Claude says “Done! All tests pass! Production ready!” Then you click the button and nothing happens. It isn’t lying. It stops when the work looks done. Here are four habits that make it show you the proof, in plain words, checked against Anthropic’s own docs.

  • 10 min read
  • Beginner
  • Oct 14, 2026
Voxel episode cover tagged EP. 12 on a dark green background with faint code: the headline reads NICE TRICK. in cream and NOW PROVE IT. in lime; on a theatre stage with red velvet curtains and gold footlights, Claude, a terracotta-orange clay block with two black eye slits and a small black top hat, holds up a magic wand, while Aster points at him with a skeptical look, his closed silver laptop at his side and the lime lock on his black shirt visible.

01THE SHOW

“Done! All tests pass!” is the oldest trick in the show

Why it matters“Done” is a feeling. Test output is a fact.

You ask Claude for discount codes at checkout. A minute later: “Done! All tests pass! Production ready!” You open the app and the code field isn’t there. The tests? There weren’t any.

Illustration: a vintage theatre at night with red velvet curtains and a glowing marquee of round bulbs reading THE AMAZING CLAUDE; Claude, a terracotta-orange clay block with two black eye slits and a small black top hat, stands centre stage with both side nubs raised in a ta-da pose; Aster sits in a red velvet front-row seat on the right, one hand cupped at his mouth like a heckler, his closed silver laptop held on his lap and the lime lock on his black shirt visible.
Tonight’s headliner. One heckler in the front row.
Open the full chapterIncludes a note

That’s the trick. And it isn’t really lying.

Why Claude says “done” too early

Anthropic’s best-practices guide explains it: Claude stops when the work looks done. Without a check it can run, “looks done” is the only signal it has. Then you become the test, and every mistake waits for you to find it.

So the job is to expose the trick before it ships. Four habits do it: plan first, ask for proof, get a second look, and keep a way back.

02SECRET 1

Plan first: see the trick on paper before it happens

Why it mattersA wrong plan costs a minute to fix. Wrong code costs an afternoon.

Plan mode tells Claude to research and propose changes without making them. Claude reads files and runs commands to explore. Then it writes a plan, but it doesn’t edit your source. Edits stay blocked until you approve the plan.

Illustration: on a theatre stage with red curtains, a blue blueprint on a wooden easel shows three app screens joined by arrows, with a red APPROVED stamp in the corner; Aster holds a red rubber stamp, smiling, his closed silver laptop at his side and the lime lock on his shirt visible; Claude, the orange clay block in a small top hat, waits beside the easel with his wand lowered.
Nothing gets built until the plan gets stamped.
Open the full chapterIncludes code, a note
Claude Code
Shift+Tab        press until the status bar shows  ⏸ plan mode on
/plan <task>     plan mode for this one prompt
claude --permission-mode plan     start the whole session in plan mode
Ctrl+G           open the plan in your editor and change it

What to ask while you are in plan mode

claude (plan mode)
Read src/checkout/ and how we take payments.
I want to add discount codes. Which files change?
What does "done" look like? Write the plan, don't edit yet.

Ask for the files it will touch and what “done” looks like. Those two lines are what you check the work against later.

When the plan is ready, Claude asks how to go on. Approve it with Yes, and use auto mode or Yes, manually approve edits, or pick No, keep planning and say what to change.

03SECRET 2

Ask for proof, not “done”: show me the hat is empty

Why it mattersYou can’t argue with output. You can argue with “trust me”.

This is the tip the docs put first. Give Claude a check it can run: tests, a build, a screenshot to compare. Then Claude does the work, runs the check, reads the result and keeps going until it passes.

Illustration: on a theatre stage, Aster tilts a big black top hat toward the viewer to show it is empty, eyebrows raised, his closed silver laptop at his side and the lime lock on his shirt visible; above the hat a cream paper banner reads ALL TESTS PASS? and Claude, the orange clay block in a small top hat, stands on the other side of a red-draped table, sheepish.
“All tests pass.” Which tests? Show me.
Open the full chapterIncludes code, a table, a note
✕ Don’tthe ask, before
add discount codes to checkout

Nothing to check, so “looks done” is the finish line.

✓ Dothe ask, after
Add discount codes to checkout.
Write tests for it: a valid code, an expired code, a code used twice.
Run them and paste the exact command and its output.
Don't say done until I can see the output.

A check it can run, and the output you will see.

Evidence beats a promise

The docs say it plainly: have Claude show evidence rather than say it succeeded. That means the test output, the command it ran and what it returned, or a screenshot of the result. Reading evidence is faster than running everything again yourself.

Illustration: on a theatre stage, Claude, the orange clay block in a small black top hat, holds up a long white paper receipt that unrolls to the floor, printed with rows of tick marks and one bold green line reading 12 passed · 0 failed; Aster stands beside him giving a thumbs up, his silver laptop open on a red-draped table and the lime lock on his shirt visible.
This is what “done” looks like.
Claude saysAsk for this instead
“All tests pass.”The test command and its full output.
“The build works.”The build command and its exit code.
“The page looks right.”A screenshot next to the design, with the differences listed.
“Fixed the bug.”A test that failed before the fix and passes after it.

04SECRET 3

A fresh reviewer spots the wire the magician can’t see

Why it mattersThe magician knows where the wire is. That’s why he never looks at it.

The session that wrote the code is the worst one to grade it. The docs say a fresh context improves code review, because Claude “won’t be biased toward code it just wrote.” So get a second look from a new context.

Illustration: on a theatre stage, a white voxel rabbit holds a big round magnifying glass that reveals a thin glowing lime wire running from Claude, the orange clay block in a small top hat, who floats above the stage, caught and surprised; Aster crouches beside the rabbit pointing at the wire, his closed silver laptop at his side and the lime lock on his shirt visible.
Somebody who didn’t build the trick finds the wire.
Open the full chapterIncludes code, a table, a note
Claude Code
/code-review          review the current diff for bugs in a fresh subagent
/code-review high     same, with more effort  (alias: /review)
/security-review      check your branch for injection, auth issues
                      and data exposure (needs an origin remote)
/verify               run the app and check the change really works

/code-review is a bundled skill. It runs in a fresh subagent and sends its findings back to your session.

Two reviews, two jobs

CommandWhat it looks atGood for
/code-reviewThe current diff (or a PR, branch or path you pass)Correctness bugs before you ship
/security-reviewYour branch compared with origin’s default branchInjection, auth issues, data exposure
/verifyYour running appSeeing the change actually work

Review against the plan

To check the work against your plan, write the review prompt yourself:

Claude Code
Use a subagent to review this diff against PLAN.md.
Flag only problems that break the feature or the plan:
bugs, missing tests, anything outside the task's scope.
Skip style preferences.

05SECRET 4

Keep a way back: commit first, rewind when it breaks

Why it mattersUndo only works for what it tracked. Git tracks everything you commit.

Claude Code snapshots files before it edits them. Press Esc twice on an empty prompt, or type /rewind, and pick a message to go back to.

Illustration: on a theatre stage, a long magician sawing box painted like an app window is cut in half with a silver saw lying on top; behind it a big gold clock has a lime arrow curving backwards; Aster pushes the two halves back together with both hands, his silver laptop on the box and the lime lock on his shirt visible, while Claude, the orange clay block in a small top hat, watches with relief.
Sawn in half? Put it back together.
Open the full chapterIncludes code, a table, a note
terminal + Claude Code
git add -A && git commit -m "before discount codes"   save a point git can return to

Esc Esc   (on an empty prompt)   or   /rewind   (aliases /checkpoint, /undo)
          pick a message → Restore code and conversation
                           Restore conversation
                           Restore code
OptionWhat it does
Restore code and conversationBoth go back to that point.
Restore conversationThe chat goes back; your code stays as it is.
Restore codeFile changes go back; the chat stays.
Summarize from here / up to hereShrinks part of the chat. Files don’t change.

What rewind can’t undo

  • Terminal commands. Files changed by commands like rm, mv or cp aren’t tracked, so rewind can’t bring them back.
  • Most subagent edits. A background subagent’s edits, including a background /code-review --fix, aren’t restored. Use git for those.
  • Changes made outside the session. Your own edits in the editor, or another session’s, usually aren’t captured.
  • Old history. Snapshots are kept for the 100 most recent checkpoints in a session, and cleaned up after about 30 days by default.

06THE ENCORE

More secrets: a spec, a push guard, a sandbox

Why it mattersThe best trick is the one you planned for.

A few more habits for bigger changes.

Open the full chapterIncludes code, a table

Let Claude interview you into a spec

For a big feature, the docs suggest Claude asks the questions first. Then start a fresh session to build it from the spec.

Claude Code
I want to build [your feature]. Interview me in detail using the
AskUserQuestion tool. Dig into the hard parts I haven't considered.
Keep going until we've covered everything, then write a complete
spec to SPEC.md.

The best specs name the files involved, say what is out of scope, and end with a step that proves the feature works.

Make Claude ask before it pushes

Auto mode is the starting mode in recent versions of Claude Code. By default it allows pushing to any branch of your repo, including the main one. If you want to see the proof before anything leaves your machine, add an ask rule:

✓ Do.claude/settings.json
{
  "permissions": {
    "ask": [
      "Bash(git push *)"
    ]
  }
}

Ask rules force a prompt even in auto mode. Deny rules block in every mode.

Type thisWhen
/sandboxTurn on the built-in Bash sandbox (macOS, Linux and WSL2) so commands run with limits on files and network.
/effort highOur suggestion for login and payment code: more reasoning on the parts that hurt most. Levels run from low to xhigh, max or auto.
/goal <condition>Claude keeps working across turns until the condition is met, like “npm test passes”.
A Stop hookA script that runs your check and blocks the turn from ending until it passes.
/diffSee every change in your working tree before you commit.

07THE BOW

The routine: five steps before you clap

Why it mattersA few minutes a change. Cheaper than a broken checkout.

Every bigger change, every time:

Illustration: on a theatre stage under falling lime and gold confetti, a big cream card on a gold stand shows four lime check marks in a column; Aster and Claude, the orange clay block in a small top hat, stand together happy, Aster waving with one hand on Claude, his closed silver laptop at his side and the lime lock on his shirt visible.
Every check ticked. Then the applause.
Open the full chapterIncludes steps, a note
  1. Commit what you have, so there is a clean point to go back to.
  2. Plan: Shift+Tab to ⏸ plan mode on, read the plan, change it with Ctrl+G, approve.
  3. Prove: ask for tests, the command and its output. Then /verify in the running app.
  4. Review: /code-review, then /security-review before you push.
  5. Undo if it breaks: Esc twice or /rewind for Claude’s edits, git for everything else.

Copy the prompt at the top of this page into Claude Code before your next change. It asks for a plan, test output, a fresh review and a commit, and it bans the word “done” without proof.

THE QUICK READ

What to take away.
In one minute.

  1. 01

    Anthropic’s docs say Claude stops when the work “looks done”. Without a check it can run, “looks done” is the only signal it has.

  2. 02

    Plan mode (Shift+Tab until ⏸ plan mode on) lets Claude read and plan. Edits stay blocked until you approve the plan.

  3. 03

    Give Claude a check it can run: tests, a build, a screenshot. Then ask for the evidence: the command it ran and what it returned.

  4. 04

    The /code-review command checks the current diff in a fresh subagent. The /security-review command checks your branch for injection, auth issues and data exposure.

  5. 05

    Rewind (Esc twice, or /rewind) undoes Claude’s file edits. It can’t undo terminal commands like rm or mv. Commit before big changes.

  6. 06

    Extras: have Claude interview you into a SPEC.md, add an ask rule so it can’t git push without you, and turn on /sandbox.

THE TAKEAWAY, IN ONE PASTE

Paste this once. Get proof, not promises.

Paste this into Claude Code before a change. It plans and waits for your OK, then writes or updates tests, runs them and makes commits. It shows you the output instead of saying “done”.

agent-prompt.md
Before you call anything on this change done:
1. Plan first. List the files you will touch and what "done" looks like, then wait for my OK before you edit.
2. Prove it. Write or update tests for this change, run them, and paste the exact command and its output. If there are no tests, say so plainly.
3. Review it like you didn't write it. Re-read the whole diff for bugs and for leaks: keys in the code, logins or pages anyone can open, user data one user can see of another. List only real problems.
4. Make it undoable. Commit before any big step, and tell me which changes you made with terminal commands, because those can't be rewound.
Never say "done", "production ready" or "all tests pass" without the output that shows it.

Paste it into the agent you already build with

  • Claude
  • ChatGPT
  • Gemini
  • Cursor
  • Copilot

QUESTIONS PEOPLE ASK

Good questions.
Short answers.

Why does Claude say “all tests pass” when they don’t?

Anthropic’s docs explain that Claude stops when the work looks done. Without a check it can run, that is the only signal it has. Give it tests or a build to run, and ask for the command and its output instead of a summary.

How do I turn on plan mode in Claude Code?

Press Shift+Tab until the status bar shows ⏸ plan mode on. You can also start one prompt with /plan, or start the session with claude --permission-mode plan. Claude plans without editing your source until you approve.

When should I skip plan mode?

For small, clear changes like a typo, a log line or a renamed variable. The docs’ rule of thumb: if you could describe the diff in one sentence, skip the plan.

What is the difference between /code-review and /security-review?

The /code-review command (alias /review) checks the current diff for correctness bugs in a fresh subagent. The /security-review command compares your branch with origin’s default branch and looks for risks like injection, auth issues and data exposure. It needs an origin remote.

What does /verify do?

It builds your app, runs it and checks the change does what it should, instead of relying only on tests or type checks. The docs suggest running it after Claude’s own check passes.

Can I undo what Claude Code changed?

Mostly. Press Esc twice on an empty prompt, or type /rewind, and restore code, the conversation or both. Changes made by terminal commands like rm or mv, and most subagent edits, can’t be rewound. Commit before big changes.

How do I stop Claude Code from pushing without me?

Add "Bash(git push *)" under permissions.ask in .claude/settings.json. Ask rules force a prompt even in auto mode, which otherwise allows pushes to your repo by default.

Does Aster check Claude’s work or tests?

No. Aster doesn’t look at your plans, tests, reviews or Claude Code settings. It reads your repository and flags keys left in code, Supabase and Firebase rules that let anyone read data, and vulnerable Next.js versions and packages. That is a second look from something that didn’t write the code.

Plan it, prove it, review it, keep a way back. Claude’s reviews check its own diff. Before launch, get one more look from something that didn’t write the code: your first Aster repository audit is free, and it checks your keys, database rules and packages.
Source notebook4 links
  1. Claude Code Docs: Best practices (verify its work, plan first, adversarial review)
  2. Claude Code Docs: Choose a permission mode (plan mode, ask rules, auto mode defaults)
  3. Claude Code Docs: Commands (/plan, /code-review, /security-review, /verify, /rewind, /effort, /sandbox)
  4. Claude Code Docs: Checkpointing (rewind menu, what is not tracked)

Done with the guide?
Let Aster check the rest.

1 free audit every month. Aster reads your code, env files, database rules and packages. You get each finding in plain English, with the file and line.

Aster

CHECKING

YOUR GUIDE TO ASTER

Hi, I’m Aster.
Ask me what Aster checks.

I can’t see your code from here. Please don’t paste secrets or private code.

Prepared answers are always available.