
Claude Code's System Prompt and Tool Definitions Take 33K Tokens
Claude Code sends about 33,000 tokens of system prompt, tool definitions and injected reminders before it reads a single word of your prompt. Those tokens occupy the context window, the space where the model holds everything it can see in a session, so part of it is used up before any of your code or conversation arrives.
Systima ran Claude Code 2.1.207 and OpenCode 1.17.18 on one machine with one model, Claude Sonnet 4.5, and put a logging proxy between each tool and the model endpoint. The proxy saved the exact JSON each tool sent, so the numbers describe the real payload, not an estimate. The test task was just 22 characters asking for a one-line reply, so the result is a floor, and anything you actually type comes on top of it.
Tokens sent on the first request, before the prompt is processed
Systima measurements (July 2026; Claude Code 2.1.207 / OpenCode 1.17.18; model: Claude Sonnet 4.5).
Claude Code Fills 4.7x More of the Context Window Than OpenCode
OpenCode sent about 7,000 tokens for the same one-line request, which makes Claude Code's opening payload roughly 4.7 times bigger. That is not a one-time startup cost. Claude Code sends the same floor again with every request, so if your usage drops before any real work has begun, this baseline is what you are seeing.
"When we asked both harnesses for a one-line reply, Claude Code used roughly 33,000 tokens of system prompt, tool schemas, and injected scaffolding before the prompt even arrived. OpenCode used about 7,000." — from Part I. The floorView official source →
27 Tool Definitions Take 24K of the 33K Startup Tokens
Of Claude Code's roughly 33,000 tokens, about 24,000 are tool definitions, the text telling the model what each tool does and how to call it. Claude Code comes with 27 tools to OpenCode's 10, and OpenCode's definitions take about 4,800 of its roughly 6,900. Systima notes that Claude Code's tools go far beyond editing and search, with a whole layer for background agents and orchestration such as scheduling, worktree management and push notifications.
Claude Code's instructions are heavier too. With every tool turned off, its instruction set was still more than three times the size of OpenCode's, and Systima puts the difference down to behavioral text: tone rules, safety guidance and task-management instructions.
"Tool schemas are the dominant term for both. Roughly 24,000 of Claude Code's ~33,000 tokens are tool definitions, versus roughly 4,800 of OpenCode's ~6,900." — from Part I. The floorView official source →
CLAUDE.md and MCP Servers Raise a Real Setup's Token Count to 75K
In a real project, the instruction file and MCP servers ride on top of the 33,000-token floor, and Systima's working setups hit 75,000 to 85,000 tokens on the first request. MCP servers are add-ons that give the agent more tools, such as email, calendar or task management access, and each brings its own tool definitions into the payload. CLAUDE.md is the project instruction file Claude Code loads, so its whole text travels along too.
That is over twice the bare floor on the same version of Claude Code. None of the extra comes from what you typed; all of it is configuration.
What a real setup adds on top of the floor (Systima measurements)
A 72KB CLAUDE.md Adds 20K Tokens and Five MCP Servers Add Up to 7K
A 72KB instruction file from a production repository added about 20,000 tokens per request on average, and five modest MCP servers added 5,000 to 7,000 more. With four MCP servers, installed plugins and the same instruction file, Claude Code sent a 311KB payload of about 75,000 tokens holding 118 tools. A tool does not need to be called to count, since every connected server's definitions are already in the payload before you type anything.
"A production repository's 72KB instruction (AGENTS.md or CLAUDE.md) file adds another (avg) 20,000 tokens to every single request. Five modest MCP servers add 5,000 to 7,000 more. By the time a real working setup sends its first request, it is 75,000 to 85,000 tokens deep before the user has typed a word." — from Part II. The multipliersView official source →
Two Subagents Raised the Cost of One Small Task 4.2x
Splitting one small task between two subagents pushed its cost from 121,000 tokens to 513,000, about 4.2 times the direct run. A subagent is a separate agent that takes part of the work from the main session, and it starts with its own system prompt and tool definitions. Each subagent re-reads that startup text on every one of its turns, so a fan-out adds several full baselines to the session even though the parent only gets back each subagent's result.
Subagents are still useful. Anthropic's cost guide suggests handing verbose operations to them so noisy output stays out of the main context. Systima's numbers show that this isolation is billed turn by turn, so it is easier to justify on large, noisy work than on a small task.
"A small task that cost 121,000 tokens done directly cost 513,000 tokens when fanned out to two subagents. This is because each subagent is its own agent that re-reads its own system prompt and tools on every turn it takes, so a fan-out multiplies the number of full baselines in flight." — from the summaryView official source →
Startup Tokens Alone Don't Decide Claude Code's Total Cost
Which tool costs more cannot be read off the startup payload, because each tool sends its baseline again with every request and the total comes to roughly that baseline times the number of requests. A heavy floor paid a few times can end up level with a light one paid many times. Systima tested this on a multi-step task with two models, and the two runs disagreed.
Cumulative tokens on a multi-step task
Systima measurements on Claude Sonnet 4.5. The totals converged even though Claude Code starts far heavier.
Total Token Consumption Is the Baseline Times the Request Count
With Claude Sonnet 4.5 on a multi-step task, Claude Code paid its roughly 33,000-token baseline three times and OpenCode paid its roughly 7,000 nine times, and the totals came out close. Claude Code ended at about 121,000 tokens and OpenCode at about 132,000, since Claude Code bundles tool calls into fewer requests while OpenCode pays its smaller floor on every turn. The starting payload is one factor in the bill, and the number of round trips is the other.
"Because the baseline is re-sent on every request, request count multiplies baseline. OpenCode paid its ~7k baseline nine times, Claude Code paid its ~33k three times, and the totals converged." — from the articleView official source →
The OpenCode Gap Falls to 3.3x on Fable, So Efficiency Varies by Model
On Claude Fable 5, Systima's repeat of the startup test showed the payload gap to OpenCode shrinking from about 4.7x to about 3.3x. Claude Code tailors its system prompt to the model, and on Fable it sent far fewer characters of instructions and slightly shorter tool schemas while keeping all 27 tools. A smaller floor did not make the whole task cheaper, though: on the same multi-step task, Claude Code needed twice as many requests and used more than double OpenCode's total.
That cuts against the Sonnet result above. Systima calls its numbers a July 2026 snapshot because the tools' system prompts change often, so read both ratios as belonging to one version and model pair, not as fixed traits of either tool.
"The floor gap on Fable comes out at roughly 3.3x by payload against 4.7x on Sonnet. Still far hungrier, but the ratio is model-dependent." — from the articleView official source →
Monitor Context Use and Trim CLAUDE.md to Reduce Token Usage
When Claude Code seems to burn through tokens, check what your own setup adds before you switch tools, since the instruction file and MCP servers are the parts under your control. Anthropic sets the bare floor, but in Systima's test the rise from about 33,000 to 75,000 tokens came from configuration. Anthropic's cost guide for Claude Code (Manage costs effectively) points to the same places.
- Check usage with
/usage. It shows token statistics for the current session, and on Pro, Max, Team, or Enterprise plans it also attributes recent usage to skills, subagents, plugins, and individual MCP servers. - See what is loaded with
/context. The docs describe it as a live breakdown by category, including which CLAUDE.md and auto memory files were loaded. - Reduce MCP server overhead. Disconnect the servers a project does not use, since each one adds tool definitions to every request.
- Move instructions from CLAUDE.md to skills. Instructions that only matter for some tasks do not need to ride along with every request.
- Delegate verbose operations to subagents. Keep this for large, noisy work, given the per-turn cost measured above.
Check the file name as well. In Systima's test, Claude Code 2.1.207 ignored AGENTS.md and only read the file after it was renamed CLAUDE.md, and then put its contents into the first user message. If a project keeps its rules only in AGENTS.md, use /context to confirm your version actually loads them.
Claude Opus 4.6 vs 4.7 vs 4.8 pricing compared covers the per-model price side of the bill. For Claude's plans and models in general, see What Is Claude AI? Free Plan, Models, vs ChatGPT.
"Use /usage to check your current token usage, or configure your status line to display it continuously." — from Manage costs effectivelyView official source →
"Claude Code 2.1.207 ignored AGENTS.md entirely and only ingested the file when renamed CLAUDE.md, injecting it into the first user message." — from Part II. The multipliersView official source →
Your Own Setup Decides How Much Token Optimization Can Save
Claude Code uses about 33,000 tokens before your prompt and around 75,000 in a real setup, but a task's total cost depends on how many requests it needs and what your configuration adds. Systima's figures show a heavy floor, not a ruling on which tool is cheaper, and the ratio shifted when the model changed. What you can change is the instruction file and the MCP servers, so review CLAUDE.md and disconnect unused servers before you conclude the tool itself is at fault.
FAQ
- How many tokens does Claude Code use before reading my prompt?
- In Systima's July 2026 test, Claude Code sent about 33,000 tokens of system prompt, tool definitions, and injected reminders before a one-line request was processed. OpenCode sent about 7,000 under the same conditions, roughly a 4.7x gap.
- How far does it grow in a real project setup?
- With an instruction file and MCP servers connected, Systima's first request reached 75,000 to 85,000 tokens. That is more than double the bare floor, and the extra comes from configuration rather than from anything you typed.
- Does a heavier startup mean a higher total cost?
- Not by itself, because the baseline is re-sent on every request and the total is roughly baseline times request count. On a multi-step task with Claude Sonnet 4.5, Claude Code's three heavy requests and OpenCode's nine light ones converged.
- What is the first thing to check to reduce Claude Code token usage?
- Start with CLAUDE.md and your MCP servers, since both are sent with every request. In Systima's test a 72KB instruction file added about 20,000 tokens on average and five MCP servers added 5,000 to 7,000.



