How to stop agent handovers becoming recency-biased
Published 29/10/2026
When an agent's session ends or its context is compacted, something has to tell the next session what is going on. Most handovers are a summary of the conversation, and a summary of a conversation is biased towards its end: the last hour of work is vivid, a decision made on day one is a single line, and a constraint nobody mentioned since is gone.
After a few handovers in a row, the effect compounds. Each summary is a summary of a summary, weighted towards whatever happened last. It is like a game of telephone in which every player only remembers the final sentence.
The symptoms#
- An agent reopens a question that was settled days ago.
- A rule that applied to one folder stops being followed after a compaction.
- Work in progress is described in detail; work that is blocked, or waiting on someone, quietly disappears.
- The handover gets longer over time, because nothing ever falls out of it on purpose.
The cure: build the handover from records, not from the transcript#
The fix is structural. Instead of asking a model to summarise what it remembers, rebuild the handover each time from records that are written when things happen:
| Instead of | Keep |
|---|---|
| "we discussed using SQLite" | a decision record: what was decided, for which paths, when |
| "I think the tests were flaky" | an observation record with a date to check it again |
| "still working on the login form" | the open item, its stated goal, and the last step it reached |
| "remember to ask about pricing" | an open question with a recommendation, a default and a deadline |
Then generate the handover from those records, in a fixed order, within a fixed token budget. Because the source is the records rather than the last few hours of chat, a decision from day one and a decision from five minutes ago carry the same weight. And because it is generated, a fresh session and a session that was just compacted receive exactly the same text.
Three rules that keep it small#
- Records are written by commands, not by hand. A record nobody had to remember to write is a record that exists.
- Observations expire. Each one carries a re-check date, so stale facts get re-examined instead of repeated.
- The budget is a ceiling, not a target. If the handover outgrows its budget, that is a signal to close or supersede records, not to raise the cap.
Where ADE fits#
Atlas ADE's handover is generated this way: ade handover --role builder prints open cards and their state, questions waiting on a person, decisions, dated observations and recent landings, within a fixed token budget. Claude Code receives it automatically at the start of every session and again after compaction. See How it flies.