context-mode: we tested the 98% context claim with our own payloads
Published
Three real payloads: 1,076,082 B in, 1,129 B read by the model (99.90%). The saving comes from never pulling the payload into the conversation, not from beating a shell one-liner.
context-mode is an MCP (Model Context Protocol) server with one pitch: stop pasting tool output into the conversation. Instead of handing the model a 600 KB page, it keeps the bytes in its own store and returns a few hundred bytes. The project states 98%. We installed it and measured with payloads from this machine.
1.Result
| Payload | Raw bytes | Tool response | Reduction |
|---|---|---|---|
| DOM snapshot of github.com/trending | 611,534 | 416 B | 99.93% |
| 20 GitHub issues (JSON) | 129,017 | 403 B | 99.69% |
| 2,000 lines of macOS unified log | 335,531 | 310 B | 99.91% |
| Total | 1,076,082 | 1,129 B | 99.90% |
Raw bytes in, three payloads
1,076,082
One DOM snapshot, one JSON issue list, one 2,000-line macOS log
Bytes the model read
1,129 B
Three tool responses of 310 to 416 B, so 99.90% never entered the conversation
The DOM snapshot payload
99.93%
github.com/trending: 611,534 B in, 416 B back
| Directory | KiB | What it is |
|---|---|---|
| typescript | 23,388 | TypeScript compiler, used by the sandbox tooling |
| better-sqlite3 | 12,160 | SQLite for the FTS5 store (SQLite full-text search); carries sqlite3.c (9.5 MB) and a built 1,931,952 B native binary |
| tsx | 10,968 | TypeScript runner for the sandbox |
| esbuild | 10,288 | Bundler binary, downloaded during install (a second copy lives under tsx) |
| @mixmark-io/domino | 8,820 | HTML parser for the fetch path |
| @modelcontextprotocol | 6,248 | MCP SDK |
| zod | 5,136 | Schema validation |
Decision
- Use it when
- one payload gets asked many questions.
- A 196,679 B index answered 8 of 14 questions for 18,561 B in total
- So the tenth answer costs about what the first did
- Skip it when
- you only ever ask one targeted question.
- A shell one-liner answers as cheaply (grep | wc = 9 B), and costs no install
- Cost
- 109,388 KiB on disk over 6,148 files, 26× the 4,249,752 B the npm registry reports.
- Because it brings a compiler and a SQLite build
- Not a security boundary
- its sandbox declares full filesystem and network access.
- Our probe read ~/.git-credentials and reached example.com with HTTP 200
Details worth knowing
- The remaining bytes are mostly the code echoed back: 261–319 B of each total, so the real answer the model reads is 49–133 B.
- Answers were computed, not summarised: the DOM run returned the title and 1,233 links; the log run returned line count and matches.
- Its own counter agrees on the volume: “283.9K tokens saved · 99.2% · 1.1 MB” against our 1,076,082 B.
- Sandbox reality: ran as uid 501, working directory $HOME, 51 environment variables visible, no network cutoff; the optional hooks file reads rules from the host agent’s own config.
- Licence is Elastic License 2.0 (GitHub shows NOASSERTION) and the npm build lags the repo: 1.0.169 published 2026-06-29, no GitHub releases to fall back on.
Not tested yet
- One payload, many questions, is now measured. In one session, 14 questions against one 196,679 B index answered 8 of them (1,240–4,158 B each, 18,561 B in total) and left 6 empty. Cross-compaction memory, multi-hour sessions and the hook-driven platforms stay untested.
- No agent configuration was modified, so “does my agent work better with it” is still open.
Evidence: docs/analysis/2026-10-05-context-mode-context-reduction.jsonl (24 rows), one JSON object per measurement, including the baselines that make the 98% claim look smaller and the sandbox probe.