A session that began as "finish the checkout page" now also holds a debate about pricing copy, a half-applied database change, three unrelated fixes noticed on the way, and one abandoned approach nobody removed. There is no line in it where you could safely stop.
Claude Code is visibly worse than it was at the start, too. It proposes something you rejected an hour ago and edits a file you both agreed to leave alone. Nothing broke. The session outgrew what one conversation can hold.
The idea
A bounded session owns one result you can observe and check. It starts from something written down rather than from the memory of the last conversation, it says out loud what is not in it, it files unrelated discoveries for later, and it ends once a named check has actually passed. The session is the right size when every decision inside it needs the same background.
open close
| |
v v
[ orient ] ---> [ build ] ---> [ verify ] ---> [ write the handoff ]
read the one result a named what changed,
entry files changes check runs what to open next
^ |
| red check |
+--------------+
found on the way, unrelated ---> open-work queue (a file, not your memory)How it works
The reason is mechanical. The The working memory a model has for one conversation: every message, every file it read and every command output, all counted together. holds the whole conversation, and model performance degrades as it fills. Anthropic's Claude Code guidance says plainly that when the window gets full, the model may start forgetting earlier instructions or making more mistakes. An unbounded session runs on a resource it already spent.
The documented failure modes are session-shaped, and so are their fixes:
- The kitchen-sink session mixes unrelated tasks into one conversation. Reset the context between them.
- Correcting over and over fills the window with failed approaches. Anthropic's stated rule is that after two failed corrections you start fresh with a better prompt built from what you learned, because a clean session almost always beats a long one carrying its own history of mistakes.
- An unscoped "investigate this" reads hundreds of files into the window. Scope it, or hand it to a A separate assistant the main session starts, which reads files in its own context window and reports back a short summary. that reads in its own context and reports back.
Both ends are documented too. One recommended pattern is to be interviewed into a
written specification, then start a fresh session to execute it, so the
implementing conversation begins with clean context and a document to work from.
At the other end, work spanning several sittings does not need re-explaining:
conversations are saved locally, and claude --continue reopens the last one
while claude --resume lets you pick from a list.
What to do
- Ask for one observable result. "The filtered order list downloads as a CSV and the existing list behavior is unchanged" is a boundary. "Sort out exports" is an ambition.
- Say what is out of scope in the first message, and keep an open-work queue for the good ideas that arrive later. When one of them changes cost, risk or intent, stop and decide rather than absorb it.
- Name the check before the work starts. Close by writing what changed and the exact next entry point, rather than by noticing you are tired.
Where it breaks
Some work cannot be sized before it is understood, incidents most of all. Bound the investigation instead: the symptom, the evidence to collect, and the stopping condition that ends it.
The opposite mistake is easier to make than it looks. Slicing one decision across three sessions pays the handoff cost three times, and Anthropic's guidance says that sometimes you should let context accumulate, because you are deep in one problem and the history is worth keeping. Clearing is not free either: compaction summarizes, and a summary preserves what it judged important rather than everything you said.
A spoken boundary decays with the session that spoke it. Only the written part survives.