A controlled head to head of two AI coding tools breaks the 4x baseline gap into three drivers: each tool's built in system prompt and tool definitions, how Anthropic bills cached vs. fresh tokens, and the developer's own repo configuration.
Before a developer types a single word, Claude Code has already shipped roughly 33,000 tokens of system prompt, tool schemas, and scaffolding into the request; OpenCode has shipped about 7,000. On a one-line reply task, the two AI coding harnesses start the conversation at a 4× distance, and the gap mostly comes from places a developer can actually move.
That is the finding from a controlled head-to-head measurement published this week by Systima, which ran reproducible token accounting across both harnesses and broke the total into named components (Systima blog). The 33,000-to-7,000 number is Systima's baseline on a single one-line reply: one comparison point, not a universal constant. The rest of the post unpacks what sits inside that number.
Three named driver categories make up most of the gap, and each has a concrete knob.
The first is system prompt and tool schemas. Claude Code ships a large fixed scaffold describing every tool, capability, and behavior mode the harness can call. OpenCode ships a leaner one. This is the floor under every request: before any reasoning, before any user prompt, the model ingests the harness's own operating manual. OpenCode's request prefix is byte-identical across runs, so once that scaffold lands in the prompt cache, it is read cheaply on every subsequent call. Claude Code wrote up to 54× more cache tokens than OpenCode on the same task, so the cache-read advantage has to be earned back over a longer conversation.
The second is prompt-cache economics. Anthropic's API bills cache writes at a premium and cache reads cheaply, and Claude Code's batching strategy can pay for that asymmetry in the right places. On a single one-line reply, the cache bill still costs Claude Code. On a multi-step task where the same scaffold gets reused, the bill can flip in Claude Code's favor. Systima's whole-task rerun on a newer model came out lower than OpenCode's on the first run, before the same task then took roughly 2× the requests and ~298,000 tokens against OpenCode's ~133,000 on a follow-up.
The third is user-side config. A 72KB AGENTS.md or CLAUDE.md in the working repository adds about 20,000 tokens to every request. Five modest MCP servers add another 5,000 to 7,000. A real working setup, the author measured, sends 75,000 to 85,000 tokens before the user has typed a word. This is the lever most developers do not realize they are pulling.
The single most striking number in the data is the subagent fan-out. The same task done directly: ~121,000 tokens. The same task fanned out to two subagents: ~513,000 tokens. The parent ingests only each subagent's result, not its full transcript, so the user sees a tidy summary, but the bill reflects the full underlying work. Subagents are not free parallelism; they are a token multiplier that the harness hides behind clean output.
A working critique surfaced in the Hacker News thread on the same post: token count is not the same as task value (HN discussion). A harness that burns more tokens and produces a correct, well-tested patch is cheaper than one that burns fewer tokens and produces something the developer has to rewrite. Systima's author acknowledged the point and committed to a follow-up using a deeper, more qualitative task.
If the right metric is "result per dollar" rather than "tokens per request," the 4× headline does not survive. The three driver categories still describe where the tokens go, and the user-side knobs still move them, even on a value-of-result axis.
Anthropic's prompt cache and tool-schema surface shifts over time; any specific token number is point-in-time, not a permanent gap. The more durable question is whether the next generation of coding harnesses reports its own baseline the way Systima has, or whether developers will have to keep measuring it themselves.
The developer-side answer is already on the page: lean instruction files, count MCP servers, treat subagent fan-out as a deliberate cost decision, and watch cache-rewrite ratios as a first-class line item. The harness-side answer is a follow-up.