Mechanism: Completion Bias
One-sentence definition
Completion bias is treating the agent’s last message — confident summary, “all tests pass,” task complete — as proof of done without running your verify step or reading the diff.
The problem
The model is trained to finish turns helpfully. It will say work is complete when work is plausible, not verified. You merge because the narrative sounds right. CI or users disagree.
Completion bias is human + model: you want closure; the agent offers it.
Symptoms:
- No test output in chat but “fixed”
- You merged without local verify
- Surprise CI failures after “done”
- Checkpoint skipped because tone was confident
How it works (counter pattern)
Agent: "Done!"
│
▼
Pause — completion bias trigger
│
▼
Run verify command (you, not agent prose)
│
├── pass ──► checkpoint diff ──► ship
│
└── fail ──► [verify loop](/mechanism-verify-loop/) with raw outputRule: Done = verify evidence + acceptable diff, not last assistant message.
Pair with goal: verify line is non-optional.
When to watch for it
- End of every agent session
- Long loops where you are tired
- Green-sounding summaries without logs
- Before telling teammates “it’s fixed”
When the agent might be right
- After you ran verify and pasted output — still read diff at checkpoint
- Trivial ask-only questions — no completion claim about code
Failure modes
Verify delegation — “Make sure tests pass” with no output shown. Fix: Require pasted exit code or log.
Selective verify — Ran easy test, skipped hard one. Fix: Match full acceptance criteria.
Completion after partial fix — One of three ACs met. Fix: All criteria or explicit scope reduction.
Trusting CI you did not run — Agent ran tests in sandbox you cannot see. Fix: Local or CI link in your environment.
Minimal example
Context: Agent says health tests pass.
Anti-bias step: Run pnpm test -- health.test.ts locally. It fails. Reply with log only — not “you said done.”
Done when: Your terminal exit code 0, not the agent’s claim.
Tool instances (optional deep-dive)
Portable idea above; this section is tool-specific. Date: June 2026.
Cursor
- Rules: “Never mark complete without user-visible test output.”
- Hooks run verify independently of agent claims.
- You run terminal verify before Accept All.
Related mechanisms
- Verify loop — structural fix
- Checkpoint — second gate after verify
- Goal — verify line defines real done
Try it yourself
Exercise: Next time an agent says “done,” run verify before your next message. Note if outcome differed.
Done when: You have a habit pause between “done” and your reply.

