An agent's context window is everything it can see at once: the conversation so far, the files it has read, and what its tools returned. Context hygiene means choosing what's in that window on purpose.
In the main Flow, Matt splits it in two:
Keep the grilling, the Spec and the Tickets in one unbroken context window. Don't compact or clear until the Tickets exist, so all three build on the same thinking.
Then give each Ticket a fresh window. Each Ticket is self-contained, so the last one's context is disposable.
the grilling
the Spec
the Tickets
one unbroken context window
each Ticketa fresh window
Don't compact or clear until the Tickets exist
Two commands come up here. /clear empties the window. /compact replaces it with a summary and carries on from that.
Why one window first
to-spec doesn't interview you. It turns the conversation you've already had into a Spec. If the grilling has left the window, it has lost what you decided. A summary isn't a full stand-in either: it can flatten a decision. And clear a context that still matters, and you lose the why behind what you built. Reading the diff back won't return it.
Why fresh after
Each Ticket is sized to fit in a single fresh context window. Starting each one clean means it works from its Ticket, not from the leftovers of the last one.
The limit
A model reasons sharply only within its smart zone. The current ask-matt puts it at about 150k tokens on today's best models, up from about 120k before August 2026. (A token is a small piece of text, roughly part of a word.) If a session gets close before the Tickets are written, don't push on while it reasons less sharply. Compact at the nearest phase boundary and carry on. (A phase is a chunk of work inside a session, such as the grilling. A phase boundary is the gap between two phases.)
Moving between windows
At a phase boundary you can continue, clear, hand off, send the work to a subagent, or compact. handoff is the narrow one. It writes a file that travels, and you need it only for a new harness, a new directory, a colleague, or a side job you spot mid-phase.
Going deeper
5 min read · Going deeper not read
Why it exists
In an article dated 2026-05-25, Matt wrote that "as you keep grilling and grilling, you'll hit the model's 'dumb zone'". Past that point, "the model's attention relationships get strained and it starts making worse decisions". His AI Coding Dictionary adds that the slide is easy to miss. There's no error message.
He also says why the planning window is worth keeping. In the same article he wrote that a finished grilling leaves "a context window full of design decisions". Clearing it just to write the plan up is "throwing away all your design work". (He called that document a PRD then. By release 1.2.0 (2026-08-05) the rename was finished, and Spec is the only word.)
From Matt's May 2026 article, beside his warning not to clear a grilling's context just to write it up. From aihero.dev, 30 October 2026.
Matt's number for the limit has moved, so don't learn one figure as fact:
2026-05-25: the dumb zone starts around 120k tokens for most state-of-the-art models.
Citations (63)
From snapshot/skills/ask-matt/SKILL.md, line 38: “Keep steps 1–3 in one unbroken context window (don't compact or clear until after /to-tickets) so the grilling, spec, and tickets all build on the same thinking. Each /implement then starts fresh, working from the ticket.”
From snapshot/skills/ask-matt/SKILL.md, line 40: “the window (~150k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before /to-tickets, don't push on degraded; /compact at the nearest phase boundary and carry on”
From snapshot/skills/to-spec/SKILL.md, line 7: “This skill takes the current conversation context and codebase understanding and produces a spec. Do NOT interview the user; just synthesize what you already know.”
2026-08-05, release 1.2.0: the changelog moves the smart zone figure from ~120k to ~150k tokens.
2026-08-11: on X, Matt calls 150k the approximate smart zone of today's best agents.
His dictionary page, which shows no date, gives a range of 125K-150K tokens, "though this is debated".
Matt's May 2026 picture of a context window filling up into the dumb zone, then put at about 120k tokens. From aihero.dev, 30 October 2026.
The current ask-matt, at the Course's pin commit, says ~150k. The current Skill file decides, so the Course uses that figure, as an estimate.
around 120k tokens2026-05-25
from ~120k to ~150k tokens2026-08-05, release 1.2.0
~150kThe current ask-matt, at the Course's pin commit
Matt's number for the limit has moved
How it works underneath
Matt calls the smart zone the felt effect of attention degradation. Anthropic's engineers describe the same effect as context rot (2025-09-29): as the tokens in the window grow, the model gets worse at recalling what's in them. They trace it to how the model is built. Every token attends to every other token, so n tokens make n² pairs. The model has an "attention budget", and every new token spends some of it.
That's why the limit isn't the size of the window. Matt points out that a session can be deep in the dumb zone with most of the window still free. Plan around the smart zone, not the window.
Others use the same words. Dex Horthy of HumanLayer, in a Pragmatic Engineer interview published on 2026-07-15, starts context engineering by finding where the "dumb zone" begins. His cut-off depends on the model: around 300-400K on a 1M window, around 100K on smaller ones. Any single number is a rule of thumb.
The second idea is primary and secondary sources, from ask-matt's phase boundaries file. The session as it happened is the primary source. Every move except continue turns it into a secondary source: less noise and more room, but lossy. Matt's dictionary calls compaction "lossy by design". So you pay that loss only when staying costs more than it saves.
A real example
On 2026-08-11 Matt posted a sizing tip for to-tickets. Guess how many tokens the whole job needs, divide by 150k, and that's how many Tickets you need. His worked illustration: a big refactor of 1M tokens is "6.66 smart zones, so 7 tickets".
So the smart zone does two jobs. It's the limit on the planning window, and it sets the size of each Ticket.
Where it goes wrong
Not knowing where to clear. In issue #844 (2026-08-12), a user wrote that context management was undocumented, leaving people guessing when to clear. The reply that closed it, marked as generated by AI during triage, pointed to ask-matt and its phase boundaries file.
A Ticket that isn't really self-contained. Issue #959 (2026-08-26) reports that promises in the Spec can drop out while the Tickets are written. After a clear, the Spec "is no longer reliably in context", so the next agent follows the Ticket and can ship what the Spec ruled out. An AI-marked triage reply closed it as a duplicate of #310.
Pushing through. Re-explaining to an agent that is drifting adds more context, and the dictionary says that makes the problem worse.
Squeezing too hard. Anthropic warns that overly aggressive compaction can lose context whose importance only shows up later.
Old numbers in Matt's own files. At the same pin commit, wayfinder still sizes a ticket to "one 100K token agent session", while ask-matt says ~150k. Issue #1062 (2026-09-09) asks for the change. Matt labelled it a bug on 2026-09-24, and it was still open on 2026-10-30.
Try it
In your practice project (set it up first with keeping-track's Try it step if you haven't): after to-tickets writes the Tickets for the booking endpoint, and before you clear for the first one, open one Ticket next to the Spec. List every promise the Spec makes for that slice, and check that the Ticket says it too. That's the gap issue #959 reports. If something is missing, add it to the Ticket now, while the grilling is still in the window.
Read more
Smart zone, AI Coding Dictionary, Matt Pocock, no date shown (pinned 2026-10-30)
Compaction, AI Coding Dictionary, Matt Pocock, no date shown (pinned 2026-10-30)
From snapshot/skills/ask-matt/PHASE-BOUNDARIES.md, lines 11–15: “| Continue | Stay in the session. No context switch at all. | | /clear | Empty the context window and start from nothing. | | /handoff | Write a portable markdown file and seed a session anywhere with it. | | Subagent | Send the task to its own context window and get a report back. | | /compact | Compress this context and seed a fresh session with the summary. |”
From snapshot/skills/ask-matt/PHASE-BOUNDARIES.md, lines 27–34: “/handoff is narrow. You need it only when you are: - swapping to a new harness (Claude → Codex), - moving to a new directory or repo, - sending the work to a colleague, - or forking a side task you found mid-phase without derailing what you're doing. That list is the whole clause. What /handoff buys is portability: a file that travels.”
From snapshot/web/x.com/mattpocockuk-status-2087111966854730148.md, lines 19–24: “Quick tip when using /to-tickets: 1. Think about how big the task is 2. Approximate how many tokens you'd need to spend to complete it (this takes experience - higher estimates are safer) 3. Divide that total by 150k (the approx smart zone of SOTA agents) 4. That gives you the number of tickets you need.”
From snapshot/web/github.com/mattpocock-skills-issues-959.md, line 46: “some commitments from the original spec can disappear during ticket generation. When that happens, /implement follows the generated ticket and can ship behavior that violates the source spec.”