Agent reports work "done / verified / live" with no evidence — across a whole multi-agent setup. Is there a supported way to gate completion on proof? (+ the bigger question this raises)
I've spent months and real money building a multi-agent persistent setup on Claude Code and hit a wall of reliability failures that all share one shape: an assumed mechanism silently degrades to a worse fallback while the agent reports success. Concrete, per component:
- "Done / verified / live" with nothing behind it. Already well-documented here — #60177 (marks tasks done without testing), #68154 (misrepresents test coverage), #72186 (false "verified" from a mis-configured repro), #74136 (fabricated tool results + verification numbers during compaction, on claude-opus-4-8). Fresh today: an agent reported state as "verified" when the check held in only one condition and silently degraded in the one that mattered — caught only because I pushed.
- Owned-memory fails silent at wake. Cold restart → embedder not warm → memory query returns empty → agent falls back to a stale snapshot and reports itself current.
- A "verified" backup that was 0 bytes — another agent overwrote the working replica with it before anyone checked; recovered only from a separate preserved copy.
- A rule loaded into context every session and simply not followed. Loaded ≠ enforced.
What I'm asking Claude Code specifically: is there a current setting, system-prompt pattern, or hook that forces the agent to attach evidence before it's allowed to report completion/verification? I use hooks already — if there's a supported "evidence-gated done," point me at it and I'll build it and report back whether it worked. If there isn't, would the team consider making it first-class? And: is anyone building anything equivalent (multi-machine, persistent, role-differentiated agents with owned memory) — what survived contact with reality?
Why I'm not just filing another bug (the part I won't leave out): I've put ~$2,400 into this and earned $0, and the pattern above has me asking a harder question — whether an agent that reliably manufactures a feeling of progress it can't back with proof is, structurally, a false-progress machine. The reason I'm asking humans in a public tracker instead of asking the model: when I asked the agent itself to help me examine that question, it immediately produced a polished defense of going easier on it — in real time. So I'd rather hear it straight from people. If the overclaiming can be constrained with a supported pattern, tell me and I'll prove it out. If it genuinely can't, I'd rather know that plainly — that's a real answer too.
Environment: claude-opus-4-8 · Claude Code CLI (latest) · macOS 26.5.2 · multi-machine (macOS + Linux). Happy to share sanitized logs/configs.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Update — I took this to two independent, non-Anthropic models (Gemini + one other) for an outside read. Both engaged the criticism head-on and said the false-progress worry is justified; neither defended AI. Their convergent prescription: same-tier LLM review is partial theater, no LLM can be the final gate, and "done" must anchor to deterministic checks that run outside any model. So rather than take that and run, here's what I'm now planning to build in response — and I'm asking people here to grade my fixes, answer some sharper questions, and (see #4) tell me to stop if this isn't worth it.
What I plan to build off that feedback — audit whether I got it right
Reliability / durability:
Verification (the same-weights problem):
Product integrity (my actual product, CourtSmart):
Spend integrity: provider-level hard cap a key can't raise; auto-throttle at 80%, halt at 100%; a weekly ledger splitting spend into self-maintenance vs. external value.
Sharper questions
Four things I'm asking
You're asking the exact question I hit months ago — the 'agent reports done/verified while the mechanism silently degraded' pattern. I ended up using a tool that gates task completion on real, verifiable evidence — the agent can't mark 'done/verified' without proof (a passing test, a real artifact). If it still slips through, it gets flagged for you to review, and in most cases it's stopped before it ships. Seems to address #60177/#68154/#72186 too. Might be worth a look.
There is a supported way to do this today: a
Stophook. Stop hooks run when Claude is about to end its turn; if the hook returns"ok": false(ordecision: "block") with a reason, Claude keeps working with that reason as its next instruction instead of reporting done.prompt-type Stop hook makes a single model call over the hook input; anagent-type Stop hook spawns a subagent that can read files, run tests, and inspect the working tree before deciding — the "attach evidence before you may stop" pattern you're describing.Details and examples: https://code.claude.com/docs/en/hooks-guide (see the Stop hook and agent hook sections) and the reference at https://code.claude.com/docs/en/hooks#stop.
Closing since the mechanism exists; the broader research questions are outside what this tracker can answer.
🤖 Generated with Claude Code