I fanned a design-token sweep out to parallel Claude Code subagents: roughly 317 hardcoded hex colors scattered across an app's screens and components, all to be replaced with tokens from a central theme file. Each agent got a slice of files and reported back when done. The reports came in clean. The grep afterward disagreed. Some slices were untouched, and the agents responsible had said nothing, because they no longer existed to say anything.

That sweep, and the surrounding sessions, taught me that a subagent's self-report can be wrong in both directions. Agents that failed report nothing or claim success. Agents that succeeded report catastrophic failure. If your orchestration trusts the narration, you will redo finished work and ship unfinished work, sometimes in the same run.

Four failure modes, each with the specific lie it tells.

1. The silent death

An agent hits a session limit (or any hard kill) mid-task and stops. No error reaches the orchestrator, and there is no partial-work report. The run moves on, and the only evidence is the absence of changes in files nobody rechecked.