Why nobody hands an agent its receipts
Every coding harness can resume a session. We read their docs to see what an agent actually gets back, and found two answers, both without evidence. That gap is why session_wake exists.
Every coding harness can resume a session. We read the official docs on 2026-09-12 to find out what the agent gets back when it does. Two answers came up, and neither carries evidence.
Two ways to resume
| Harness | What the agent receives | Checkout, tests, promises |
|---|---|---|
| Claude Code | The full transcript by default, or -- past a size and idle threshold -- a choice: reload it as-is, or run /compact and carry forward a summary plus up to five recently read files |
The git branch loads as its own block in the system prompt. Test results and open promises: not a field |
| Gemini CLI | The full conversation, every tool call and output. Checkpointing reverts files to a git snapshot | The snapshot restores files; it does not report what passed |
| Codex CLI | codex resume reopens a recent chat from the current repo, or searches across local chats |
The docs do not say |
| Cursor | "Load prior context" via --resume [thread id] |
The docs do not say |
| OpenCode | --continue, --session, --fork |
The docs do not say |
Sources, all fetched 2026-09-12:
- Claude Code: sessions, context window
- Gemini CLI: session management, checkpointing
- Codex CLI, Cursor CLI, OpenCode CLI
Amp and Aider are not in the table: we did not read their own pages, and a search snippet is not a receipt.
So you get one of two things: the whole transcript again, at the price of the whole context, or a summary a model wrote. Claude Code's docs say what the summary keeps: intent, files, errors, pending tasks. They also say what it drops: "full tool outputs and intermediate reasoning are gone." The exit code of the last test run is a tool output. The line where the agent promised to re-run it is intermediate reasoning. Those are the two things a waking agent needs, and they are the two things the summary cannot keep.
What resume restores, and what it never reads
Every harness above restores state: the conversation, the files, the
branch. None of them reads its own transcript as evidence. The transcript
holds the command, the is_error flag on its result, the edit to each
file, and the sentence that said "I'll do that next", each with a position.
A resume feature replays those to the model. It does not answer from them.
That is the gap. As of their own docs on that date, nobody fills it.
Why we built it from the index
AgentWorth already indexes every session on the machine, across harnesses,
receipts intact. So session_wake does not summarise anything. It reads
the newest session for the repo back from its transcript and reports the
last test that passed, the last that failed and whether anything re-ran it,
the promises with no later evidence, and the checkout as it is right now,
each line with the sequence number to go and check. Under 30 lines, no
model in the loop, and a fact the index does not hold is named as a gap
rather than written around.
A summary is what a model believes happened. A receipt is what the transcript says happened. An agent waking up cold should be handed the second.
npx -y agentworth@latest scan