One session, eighty days
Where agent context goes
A coding agent stopped answering for nineteen minutes. The investigation that followed found that context is not spent gradually on conversation — it goes in jumps, and the jumps come from a handful of commands nobody remembers running.
6 posts
Where this stands
- Held to be true
- Context fills from tool output, not from conversation, and the cost is paid on every subsequent turn rather than once. Continuing a session feels free at each individual moment, which is why the ceiling arrives without warning.
- What would break it
- A long session where conversation, not tool output, dominates the transcript by size.
- Still open
- What a good session boundary actually is. The current answer is a percentage on a status line, which reports the problem rather than preventing it.
- 1Agents9 min
An 80-day agent session and the wall at the end of it
Claude Code context limit on an 80-day session: fifty compactions, each starting from a full million tokens. Then one morning it stopped answering for nineteen minutes.
- 2Agents10 min
Context is burned by tool output, not by conversation
Claude Code context usage over a two-month transcript: the largest entries were single command results, around 300,000 tokens each.
- 3Agents8 min
Building the guardrails I needed after a session died
Claude Code hooks and a status line for context usage and compaction. Both read the transcript rather than an API field, and that choice is the post.
- 4Agents8 min
I instrumented everything except where the decisions happen
LLM agent observability with a connected, green tracing dashboard, and zero traces from the three components that actually make choices.
- 5Agents9 min
LangGraph yes, LangChain no
LangGraph vs LangChain in an agent pipeline: one earns its place by doing something I would otherwise write badly. The other is a spec I satisfy without importing.
- 6Agents4 min
The numbers halved and the fix never ran
Deployment verification the hard way: wall clock down 53 percent, tool calls down 47, and the line the fix exists to produce absent in both runs. The config was a symlink shared by every worktree.