The less you watched, the more you check
When you pair with Claude interactively, you verify as you go. When Claude runs for an hour on its own, in auto mode, a scheduled task or a CI job, you saw none of it. The principle is simple: scrutiny should scale inversely with supervision.
| How it ran | Verification level |
|---|---|
| Interactive, reviewing each diff | Light: you already watched |
| Auto mode, you checked in occasionally | Medium: review the full diff and test evidence |
| Overnight, scheduled or CI | Heavy: independent review, re-run checks yourself, read every file changed |
Evidence, not claims
Train yourself (and your prompts) to reject unverifiable success:
pnpm test (exit 0): 312 passed, 0 failed, 4 skipped. Skipped tests are unrelated e2e tests that need Docker."Bake it into prompts and subagent report formats: "End with VERIFIED: the exact commands you ran and their results."
Independent verification
The agent that did the work is the worst-placed to judge it. Use a fresh perspective:
/code-reviewruns in a fresh subagent context.- A second session reviews the branch with no memory of the first.
- A reviewer subagent with read-only tools and a strict report format.
- In CI, an automated review on the PR that the run opened.
Gate on real results
Unsupervised runs should be structurally unable to claim success without passing checks:
- Stop hooks that block until the typecheck and tests pass (Lesson 32).
- Branch protection so nothing merges without CI passing and a human approving.
- **
/goal** conditions that are objectively checkable.
For anything important from an overnight run, pull the branch and run the checks yourself. It takes two minutes and catches the rare case where an environment difference hid a failure.
Check your understanding
How should verification scale?
Which is evidence, not a claim?
Why use a fresh session or subagent to review unattended work?
What structurally prevents unverified merges?