Your agent's context window is a black box. Open it.
ContextClues reads a running Claude Code session on your own machine and shows exactly what is in its context window, what is filling it, and how much working room is left before it compacts.
Nothing is uploaded. Nothing is modified. Every number is labeled with how it was obtained.
npx contextclues
⇆ Scroll sideways to explore the full dashboard
Token count is the API's own figure from the last assistant turn. Rate is observed, runway is projected, max window is assumed.
System overhead never appears in the transcript, so it is inferred: observed total minus the sum of estimates.
| Source | Preview | ~Tokens | Age | Status |
|---|---|---|---|---|
| tool result | [Read] src/billing/invoice.ts | 4,102 | just now | IN CONTEXT |
| assistant | Read(src/billing/invoice.ts) | 86 | just now | IN CONTEXT |
| tool result | [Bash] npm test: 41 passing | 612 | 8s ago | IN CONTEXT |
| user | also update the proration path | 11 | 22s ago | IN CONTEXT |
| assistant | Proration assumes a full cycle | 340 | 31s ago | IN CONTEXT |
| tool result | [Grep] "prorate": 18 matches | 1,204 | 44s ago | IN CONTEXT |
| injected | [total_tokens_reminder] | 13 | 1m ago | IN CONTEXT |
| tool result | [Read] src/billing/invoice.ts | 4,102 | 6m ago | IN CONTEXT |
| tool result | [Read] package-lock.json | 31,880 | 14m ago | COMPACTED OUT |
| system | compact_boundary: 412k to 96k | · | 14m ago | BOUNDARY |
| tool result | [Read] src/db/schema.sql | 2,910 | 19m ago | COMPACTED OUT |
| assistant | Mapping the invoice tables first | 284 | 21m ago | COMPACTED OUT |
| user | refactor the billing module | 9 | 24m ago | PRESERVED |
| tool result | [Bash] git log --oneline -20 | 418 | 26m ago | COMPACTED OUT |
| injected | [skill_listing] 42 skills | 1,860 | 28m ago | IN CONTEXT |
| tool result | [Glob] src/**/*.ts: 214 files | 2,240 | 31m ago | COMPACTED OUT |
| injected | [deferred_tools_delta] +18 tools | 44 | 36m ago | IN CONTEXT |
| tool result | [Read] src/billing/proration.ts | 3,470 | 41m ago | COMPACTED OUT |
| injected | [hook_additional_context] | 308 | 47m ago | IN CONTEXT |
| user | start with the schema, then tests | 14 | 49m ago | PRESERVED |
The full case file. One session, live, on localhost.
You find out the window was full after it costs you.
A long agent session fills its context window quietly. There is no gauge, no breakdown, and no warning. One accidental read of a lockfile can take a third of the window, and nothing tells you it happened. You are steering a process whose most important state variable is invisible.
When the window fills, the session compacts. Older material is summarized away and dropped. Work you assumed was still in context is gone, and the only signal is the agent starting to behave as if it forgot something. By then you have already paid for it: a repeated explanation, a wrong answer you trusted, a debugging cycle chasing a problem that was never in the code.
ContextClues turns that black box into an instrument panel. It runs beside your session and answers the questions you currently have to guess at: how full is the window, what is taking up the room, what did compaction actually drop, and how long can I keep going.
It reads the files the agent already writes.
Claude Code keeps a registry of running sessions and an append only transcript of every event on local disk. ContextClues watches those files, tail parses the transcript incrementally, indexes it into a local database, and streams updates to the dashboard over server sent events. Claude's files are opened read only and are never modified.
It deliberately does not install an agent hook. A hook would give push style events, but installing one edits your configuration, and this tool does not change your setup without being asked.
~/.claude/sessions/*.json ──┐ ┌─ local SQLite ~/.claude/projects/**.jsonl ──┤──► collector ──►──┤ settings, .mcp.json, plugins ──┘ read only └─ event bus ─► SSE ─► dashboard
Seven panels, one case file.
Every session is a case file. Context entries are evidence. What the tool notices, it files as clues.
Context Meter
Tokens in the window from the API's own count, as a share of maximum, with cache breakdown and observation age.
Context Trajectory
Growth across every API request, with burn rate, projected runway in time and requests, and compaction boundaries marked.
Composition
What is occupying the window, stacked by source: your messages, replies, tool results, injected context, and system overhead.
Evidence
Every transcript record, searchable, with size, age, whether it is still in context, and why it is believed to be there.
Tool Registry
Every known tool with its provider, its status, where that knowledge came from, and how many times it was actually used.
Live Activity
Tool calls, file reads, results, compactions, and tool availability changes, streaming in as they happen.
Clues
Oversized results, files read repeatedly, exact compaction drops, unused tools, window pressure, and stale heavy entries.
Your transcripts never leave the machine.
This tool reads the most sensitive text on your computer: your code, your prompts, and your command output. It is built so that none of it goes anywhere.
No network
No cloud service, no account, no authentication, no telemetry. The server binds the loopback interface, so it is not reachable from your local network.
Read only
Claude's session files are opened read only and are never written to. Nothing under your agent's configuration directory is created, edited, or deleted.
Secrets redacted
API keys, tokens, JWTs, private keys, and secret style environment assignments are detected and scrubbed before any preview is stored or rendered.
Disposable state
The tool's own index lives in a local folder you can delete at any time. It rebuilds itself from the transcripts on next run.
Every number says how it was obtained.
A context dashboard is only useful if you can tell measurement from guesswork. Some of these figures are genuinely knowable and others are not, so nothing is presented as plain fact. Every value carries one of four confidence labels, visible in the interface, so you always know which one you are reading.
The same care goes into the projection. Growth per request is strongly right skewed: most requests add a little, and an occasional large file read adds a lot. Runway is a question about cumulative growth, so the projection is driven by the mean rather than the median, because the mean counts large requests at the rate they actually occur. A median would describe a typical request while systematically under predicting how fast the window fills. The panel reports both, and when the average sits far above the typical request it says the session is spike dominated and widens the runway into a range.
ContextClues never claims access to the model's hidden reasoning, and it does not pretend to know exactly which messages survive between compactions. That is inference, and it is labeled as inference.
One command, no services, no config.
Run it. Then start a Claude Code session in another terminal and it appears automatically.
# requires Node.js 22.13 or newer $ npx contextclues → http://localhost:4310 # or install it permanently $ npm install -g contextclues
- Node.js 22.13+ uses the built in SQLite module, so there is nothing to compile.
- A machine where Claude Code has run it reads the session files that are already there.
- Live sessions are auto detected marked with a dot, updating in real time as the transcript grows.
The four things people ask first.
- Does ContextClues send my code or prompts anywhere?
- No. Everything stays on your machine. There is no cloud service, no account, no authentication, and no telemetry. The dashboard runs on localhost and the process makes no outbound calls. This website is separate from the tool and uses cookieless analytics that set no cookies and store no personal data. See the privacy page.
- Does it modify my Claude Code configuration?
- No. Claude's session files are opened read only and are never written to. ContextClues deliberately does not install an agent hook, because installing one would edit your configuration without being asked.
- How accurate are the token numbers?
- Every number carries a confidence label. Observed values are read directly from the API usage counts Claude Code records per assistant turn. Per entry sizes are estimated with a characters divided by four heuristic. System prompt overhead and runway are inferred. The maximum context window is assumed, because no local file exposes it.
- What do I need to run it?
- Node.js 22.13 or newer, and a machine where Claude Code has run. It uses the built in SQLite module, so there is nothing to compile. Run npx contextclues, or install it permanently with npm install -g contextclues.