31 tools· updated sep 2026

Smart zone / dumb zone: where the useful part of your agent's context window ends

Marek.

  • context-window
  • agent-context-management
  • claude-code
  • context-engineering

A model can carry a context window of a million tokens and still get visibly worse at its job long before that window is anywhere near full. That gap, between what a context window can hold and what a session can actually put to good use, is the whole reason the smart zone and dumb zone split is worth naming.

I picked up this framing from a thread on X, and it matches exactly what I watch happen in my own sessions with a coding agent: the model does not forget anything, it just gets steadily worse at picking the right thing out of everything it is already holding. Here is what I want to walk through:

  1. what context rot is, and how it differs from simply running out of context window;
  2. the concrete signs that tell you you have already crossed into the dumb zone;
  3. four practical ways back to the smart zone, cheapest first;
  4. why I trust this beyond one thread, based on a rule about session hygiene I already had in writing.

What context rot actually is

Context rot is the name for a specific kind of failure. A model's context window can hold everything said and read in a session, and that ceiling now runs to a million tokens on the models that support it. Holding that much does not mean all of it stays equally useful. Research from Chroma describes output quality sliding down gradually as a conversation gets longer, well before the window is anywhere near full. The model is not deleting anything. It still has the full transcript sitting in front of it on every turn. What gets worse is its ability to pick the right piece out of that transcript. The thread's explanation is that every token you add increases the number of token-to-token relationships the model has to weigh when deciding what matters right now. More material to weigh means more chances to get it wrong: the model grabs the wrong detail, or blends two things that should have stayed separate. None of this is a bug you can patch by pasting in a longer system prompt. It is closer to a tax that gets steeper the longer a session runs, and it applies whether the session is a casual chat or a coding agent driving a real change through your repository.

The clearest version of this framing that I have found is a thread on X by @MAXIMISEART from July 2026. It splits a session into a smart zone, where the model is working at full strength, and a dumb zone, where it is still answering fluently but quietly worse at the actual job. Nobody announces the crossing: no warning fires, and no counter flips over to tell you it happened. You just start noticing the output is off. Where exactly that line sits is not fixed either. It moves with the model and with the kind of task in front of it, which is part of why watching for symptoms works better than watching for a number.

Why this is not the same as running out of context

A context window has a hard edge. Past it, the model cannot see earlier turns at all, full stop. If you want the mechanics of what fills that window before you type a single word, and what a tool does once the window is actually full, I already went through that in my piece on the Claude Code context window, so I will not repeat it here.

Context rot has no hard edge. It is a soft decline that starts long before the window fills up, and that difference matters because the two failures need different fixes. Treat rot like a full window, and you wait for a warning that only fires at the true limit, by which point the session has already spent a while in the dumb zone. Treat rot like a prompting problem, and you add a clearer explanation or a firmer instruction, which just means more tokens going into a context that is already struggling to use the tokens it has. Naming context rot as its own failure, separate from the token ceiling, is what stops both mistakes at once. A session sitting at half its capacity by the counter can already be producing worse work than it did an hour ago, which is the practical reason a percentage alone never tells you which zone you are in.

How to tell you have crossed into the dumb zone

The dumb zone does not send a signal. It shows up in the work itself, in patterns worth catching early.

It repeats facts you already settled. You told it where something lives, or that a decision got made a few exchanges back, and it asks again, or states the old, wrong version back to you as if the conversation never happened. The fact is still sitting in the transcript. It is just no longer weighted highly enough to surface when it actually matters.

It drops an instruction from earlier in the same session. You said not to touch a specific file, or to always use one particular format, and a few exchanges later it does the exact thing you ruled out. It is not disagreeing with you on purpose. That instruction is now one weak signal buried under everything that has piled up since.

It gets inconsistent with names. The same file, variable, or concept starts getting called two different names within a few replies of each other. Early in a session this basically never happens, because there is not much yet to confuse. Late in a session, with labels and details piling up, the model starts blending them.

None of this shows up on a token counter. A counter tells you how full the window is. It says nothing about how much of what is in there the model can still put to good use, and that gap is the entire reason the smart zone and dumb zone split earns its keep instead of being just another way to say "long conversation."

Four ways back to the smart zone

Once I notice one of those patterns, the fix is never to explain the same thing again in more words, and it is never to switch to a longer, more careful prompt either. Both add tokens to a context that is already struggling to use the tokens it has. Four things actually work, cheapest first. The fourth rarely happens on the same day the problem shows up.

Clear the conversation

I go through what a resumed session restores and what it drops in my piece on claude --resume. Wiping the conversation history and starting the next task with an empty context, without quitting Claude Code, is the cheapest fix and also the one that throws away the most; the old conversation stays resumable with /resume, but nothing from it comes along. It only makes sense at a real stopping point: you already got what you needed out of this stretch of work, or what comes next does not depend on any detail from what came before. Nothing carries over. That is the entire appeal of it, and the entire cost.

Compress what you have

A middle option: summarize the session so far and keep going from the shorter version. You keep the gist of what got decided and lose some of the exact wording, and what you are working with afterward is meaningfully emptier. This is the right call when what is left still depends on earlier decisions, just not on the precise path you took to reach them. It is worth a quick check right after compressing: ask for the plan back in a sentence or two and see whether anything that mattered got smoothed away. The summary is only as good as what it chooses to keep, so treat it as a draft of the situation, not a transcript.

Hand the task to a fresh agent

Instead of continuing in a context that already carries the entire back-and-forth, hand the next piece of work to a separate subagent, which runs in its own context window, or to a new session started from a short handoff note, and give it only what that piece of work needs, not the history of how you got there. This is the option I reach for most often, because the fresh context starts in its own smart zone instead of inheriting one that is already struggling. The real cost is that someone has to write down what the next agent actually needs, which takes real effort and is the first thing to get skipped when you are mid-task and just want to keep moving. That is a separate question from what an agent should retain between sessions rather than within one. I cover the persistent side of that in Claude Code memory.

Change the workflow so it stops happening

The slowest fix, and the one that pays off the most over time: if a particular kind of task reliably runs a session into the dumb zone every time you do it, that is the workflow's fault, not a one-off. The usual causes are predictable: too much gets pasted in up front, and intermediate output or dead ends stay in the transcript instead of getting cleared once they are no longer needed. Fix the workflow once, and the next dozen times you run that task, you never hit the same wall. That kind of fix rarely happens mid-task, because mid-task you just want the current problem solved, so it tends to happen afterward, as a note for next time rather than a rescue for right now.

A rule I already had in writing

My own agent setup already had the rule in writing, weeks before the thread: a long session dulls the model, so when the context gets large, start a new session or hand the work off. My sessions are long and heavy, and the rule matches what I see in them. The thread did not teach me that agents degrade. It gave a clean name to a rule I was already following.

A quick check before you send the next message

Before adding one more instruction to a session that already feels off, run through four questions:

  • Has it just repeated or contradicted something already settled earlier in this same session?
  • Is the naming for the same thing drifting from one reply to the next?
  • Did a change that should have taken one attempt just take two or three instead?
  • Is the session carrying pasted material that nothing after this point actually needs, such as logs, long file dumps, or dead-end exploration you already ruled out?

A yes to any of those is reason enough to clear, compress, hand off, or, if the same kind of task keeps landing here, fix the workflow instead of fixing the session one more time.

Frequently asked questions

What is context rot?

Context rot is the gradual decline in an AI model's output quality as a session gets longer, even though the model can still technically see everything said so far. One common explanation is that more accumulated tokens mean more token relationships for the model to weigh when deciding what matters, so retrieval gets statistically harder well before any hard limit is reached.

What's the difference between /clear and /compact in Claude Code?

/clear starts a fresh, empty conversation in the same terminal and keeps the old one resumable through /resume; use it when the next task needs nothing from this one. /compact replaces the history with a summary and keeps going; use it when the rest of the task still needs earlier decisions but not their exact wording.

What is Claude's context limit?

It depends on the model: the newer Claude models go up to a million tokens, and some still stop at 200,000. My piece on the Claude Code context window lists which is which. The limit that matters day to day is lower, because quality starts slipping well before the window is full.

Does AI get "dumber" over a long session?

Functionally, yes. Instruction-following and attention to detail get worse as a session accumulates more content, even without hitting any hard limit. The model has not lost the information. It has gotten statistically worse at picking the right piece out of a growing pile, which looks like getting dumber from the outside.