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.

wakeresumecompactionharnesses

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:

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