The context window
The context window is the amount of text a model can read at once. It holds the system prompt, the tool definitions, any memory files, and every message, tool result and reply of the conversation so far. In a long conversation it fills up, and a fuller window means slower and more expensive turns until the history is shortened; see Compacting a conversation.
OAR shows how full the window is in two places: a thin line along the top edge of the composer, which you can always see, and the 🧠 context dialog, which breaks the figure down.
The line above the composer #
The line runs along the top edge of the composer. It tells you at a glance how
much of the window the conversation uses. It has two display modes, set in
config. with context (see
config.json):
| Mode | What you see |
|---|---|
default |
A line across the full width. Its colour runs from green when the window is empty to red when it is full. |
bar |
The same line, growing from the left to the share of the window in use. |
When OAR has no figure for the conversation, the line is a neutral grey. That is the case before the first turn, and for providers that report nothing (see By provider).
The line is updated:
- when you open a conversation;
- shortly after a message arrives in the conversation you are looking at;
- when a turn ends.
On Claude, DeepSeek, Claude Cloud, Cursor and Grok the figure is recorded when a turn ends, so the line moves once per turn.
The 🧠 context dialog #
Click 🧠 in the conversation header (its tooltip reads Check current
context). The dialog is titled Context usage. Its subtitle reads
like Claude session 1a2b3c4d: the provider and the first eight characters of
the session id (OpenAI conversations say Copilot, because the Copilot agent
runs them). Before a session exists it reads Conversation and the first eight
characters of the conversation id. Without an open conversation the dialog says
Open a conversation to see its context usage.
What the dialog shows, from the top:
- The model, and a headline with the total and the window. On Claude and
DeepSeek the headline reads like
60.; the model limit appears when it is known. On the other providers it reads like9k used · compaction window 100. 0k · model limit 1 M 221..3k / 1. 0 M tokens (22%) - A bar with one coloured part per category.
- A table with the columns Category, Tokens and Usage (the share of the window).
- Notes under the bar: As of the last completed turn, followed by the time and the model, tells you when the figures were taken. Other notes say when a figure is an estimate (see By provider).
- On Claude, the auto-compact window slider, the thinking controls and the Commit attribution row. See Claude. Claude Cloud chats started from a folder show the attribution row too. Added in 0.9.17 DeepSeek chats show the slider only: DeepSeek always thinks, and its commit attribution is set on its settings tab. See DeepSeek.
- Added in 0.9.16 For a session an agent started, on any provider, the switch Agents in this conversation may start sessions. See Letting a started session start sessions.
- A folded Raw details block with the runtime's own text, where there is one.
Refresh at the top right reads the figures again. On Claude, DeepSeek, Claude Cloud, Cursor and Grok they only change when a turn ends, so it matters mainly after a turn that finished while the dialog was open.
The categories #
The rows of the table depend on the provider. On Claude and DeepSeek, both run by Claude Code, they are the categories Claude Code itself reports, under the names it gives them, for example System prompt, System tools, Skills and Messages, and MCP tools, Memory files and Custom agents where the session has them. Two more rows describe the rest of the window:
| Row | Meaning |
|---|---|
| Free space | The part of the window that is still unused and that the conversation can fill. |
| Auto-compact reserve | The part of the window above the auto-compact threshold. The conversation compacts before it gets there, so it never fills. Shown only when auto-compact is on and the threshold is known. |
A tool that Claude Code lists but has not loaded is marked (deferred). It is shown in the table but not counted in the total, and a note says so. For that reason the rows can add up to more than the headline.
The auto-compact window slider #
On Claude and DeepSeek, the dialog holds the Auto-compact window slider. It sets how many tokens of context the conversation may collect before Claude Code compacts it. The setting belongs to the conversation, not to the relay. Other providers have no such control.
The slider has seven stops: Auto, 100k, 150k, 200k, 300k, 500k and 1M. Auto is the default and leaves the choice to Claude Code, which picks a window suited to the model. 100k is the floor: Claude Code ignores anything smaller. Added in 0.9.17 In a DeepSeek chat Auto means 400k tokens: the relay hands Claude Code that window unless you pick another stop, so a long DeepSeek chat compacts well before its 1M window is full. Compacting itself, and what each stop means, is on Compacting a conversation.
What the dialog tells you around the slider:
- The line under it starts with Effective: and gives the threshold in
force, for example
compacts at 967.. The last part says where it comes from: auto (model-tuned), model default, from settings (your slider), from CLAUDE_CODE_AUTO_COMPACT_WINDOW, or from client data. Before the first turn it reads — (known after the first turn). The environment variable is described in Environment variables.0k of 1. 0 M tokens · auto (model- tuned) - Auto-compact is disabled for this session. appears when Claude Code reports that auto-compact is off.
- A note says when a new setting takes hold: Applies after the current turn., Applies when background work has finished. or Applies on the next message (the session restarts once).
- The conversation will be compacted on the next message. warns you when you pick a window smaller than what the conversation already uses.
Moving the slider only changes the label and the notes. The setting is saved when you close the dialog (with ×, Escape or a click outside it), and a short notice confirms it, for example Auto-compact window set to 200k tokens. (choosing Auto gives Auto-compact window back to the model default.) Claude Code reads the window only when it starts, so the session restarts once before your next message to apply it; see Compacting a conversation.
The size of the window #
The window size depends on the model. Some models offer a second, larger
window, for example 1; you choose it with the composer's Context window
picker before you send. See
Context size.
On Claude and DeepSeek the headline shows two figures: the compaction window, which is where the conversation will be compacted, and the model limit, which is what the model can hold at most. The compaction window cannot be larger than the model limit. On the other providers the headline shows the model's window. When a provider does not tell OAR the window, OAR uses a built-in table of known models, which has DeepSeek's models at 1M; a model that is in neither has no window figure. For Cursor and Grok the dialog then shows only a plain text block with the token counts, without a bar, table or percentage.
By provider #
| Where the figures come from | What the dialog shows | |
|---|---|---|
| GitHub Copilot and OpenAI, SDK and extension engine | The session record the Copilot runtime keeps. Measured. | A coarser split: System/Tools and Messages, then Free space and, where the runtime reports one, Auto-compact reserve. |
| Claude | Claude Code reports the breakdown after each turn. Measured. | The exact categories, the window headline, the slider. |
| DeepSeek | As on Claude: Claude Code reports the breakdown after each turn. Measured. | The same as Claude, without the thinking controls and the attribution row. |
| Claude Cloud | The cloud session reports used and maximum tokens after each turn. | The total, the window and the percentage, with no categories. |
| Cursor | Computed from the token counts of the last turn. | The total and the percentage of the window, with no categories. |
| Grok | Computed from the token counts of the last turn. | The same as Cursor: a total, and a percentage when the window is known. |
| OpenAI Image | Nothing. | No context data. |
Some details:
- Copilot. If the runtime no longer reports the full breakdown, OAR shows only a lower bound from the tokens the model has written so far, labelled Estimated lower bound — this runtime does not report a full breakdown. The prompt, system, tools and cache parts are missing from it.
- Cursor. Every model call of a turn re-sends the context, and Cursor reports the sum. OAR divides the prompt side by the number of calls and adds the output. When a turn made more than one call, the dialog says the figure is estimated from the turn's aggregate token usage.
- Grok. The total is the input, the cached tokens and the output of the last turn, and it is not marked as an estimate. The percentage appears only when the model's window is known.
- Claude Cloud. The figures are read from the session after the turn ends. If the session reports no usage, the dialog has nothing to show.
Before the first turn of a Claude, DeepSeek, Claude Cloud, Cursor or Grok conversation the dialog has no figures. It shows a plain text block with the model as unavailable and a Note line: No context data captured yet for this session; it is recorded when a turn completes.
When the window is nearly full #
| Provider | What happens |
|---|---|
| Claude | Claude Code compacts the conversation at the auto-compact threshold, by default close to the model's limit. |
| DeepSeek | Claude Code compacts the conversation at the auto-compact threshold: 400k tokens of the 1M window unless you choose another window. |
| Copilot and OpenAI, SDK engine | The runtime compacts in the background at 80% of the window and blocks for a compaction at 95%. |
| Copilot and OpenAI, extension engine | OAR sets and shows nothing. |
| Claude Cloud | OAR sets nothing; the transcript shows a line when the session reports a compaction. |
| Cursor, Grok | OAR sets and shows nothing. |
On every provider you can start a fresh conversation that carries a summary
with /. All of this is described on
Compacting a conversation.