[BUG] Per-turn overhead ~6-8k tokens on Sonnet 4.6 — content complexity irrelevant
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
<html><head></head><body><h1>Per-turn overhead ~6-8k tokens on Sonnet 4.6 — content complexity irrelevant</h1>
<p><strong>Version:</strong> 2.1.117
<strong>Model:</strong> Sonnet 4.6 (<code>claude-sonnet-4-6</code>)
<strong>Plan:</strong> Claude Max
<strong>Platform:</strong> macOS darwin-arm64
<strong>effortLevel:</strong> normal (settings.json) — banner shows "high effort" despite config</p>
<h2>Summary</h2>
<p>Every exchange costs ~6-8k tokens in the Messages bucket regardless of content complexity. This is not Opus 4.7 tokenizer behavior (issue #49593 was closed citing that explanation — this reproduction is on Sonnet 4.6).</p>
<h2>Reproduction</h2>
<p>Fresh session, <code>~/Dropbox/GitHub</code>, no file reads, no tools invoked.</p>
<h3>Baseline</h3>
<pre><code>/context → 22.4k/200k (11%), Messages: 216 tokens
</code></pre>
<h3>Session log</h3>
Exchange | Input | Response | Total | Messages | Delta
-- | -- | -- | -- | -- | --
1 | "8 x 7?" | "56" | 29.4k (15%) | 8.5k | +8.3k
2 | Beef goulash recipe | ~200 word recipe | 35.3k (18%) | 14.8k | +6.3k
3 | Holy Roman Empire essay question | ~300 word response | 41.6k (21%) | 21.1k | +6.3k
4 | "Tell me a knock knock joke" | 5-line joke | 47.9k (24%) | 27.1k | +6.0k
<p><strong>System prompt, tools, agents, memory, and skills remain completely flat across all exchanges.</strong> The entire overhead is in the Messages category.</p>
<h2>Key observations</h2>
<ol>
<li><strong>Content complexity is irrelevant.</strong> A two-character answer ("56") costs the same as a 300-word essay. The overhead is constant and per-turn.</li>
<li><strong>~16 exchanges from cold start before hitting the autocompact buffer</strong> (33k). On a real coding session with tool calls this is far fewer.</li>
<li><strong>This is not the Opus 4.7 tokenizer issue.</strong> Model is <code>claude-sonnet-4-6</code> throughout. The closing rationale for #49593 does not apply.</li>
</ol>
<h2>What has been ruled out</h2>
<p>The following were exhaustively tested and confirmed <strong>not responsible</strong>:</p>
<ul>
<li>GSD workflow system (21+ agents, 50+ skills, multiple hooks)</li>
<li>All MCP servers (Playwright, context7, PubMed, Google Drive)</li>
<li>All plugins (superpowers, ui-ux-pro-max, frontend-design, skill-codex)</li>
<li>SessionStart hooks including port scan</li>
<li>node_modules CLAUDE.md files (present but empty)</li>
<li>Multiple competing Claude Code installations (cleaned up)</li>
<li>Project-level settings.json overrides (none found)</li>
<li><code>effortLevel: high</code> (separately real — adds ~4-5k on top, now set to normal)</li>
<li><strong>All user configuration</strong> — reproduction confirmed with settings.json renamed away (bare defaults)</li>
</ul>
<h2>Impact</h2>
<p>On Claude Max with a 5-hour rolling quota window, ~6-8k tokens of overhead per exchange exhausts the quota window in ~90 minutes of active agentic work — not because of the work being done, but because of constant system context re-injection. This is the primary productivity bottleneck for heavy Claude Code users on Max.</p>
<h2>Related</h2>
<ul>
<li>#49593 (closed, incorrectly attributed to Opus 4.7 tokenizer)</li>
<li>#46339 (per-turn system reminder re-injection)</li>
</ul></body></html>
What Should Happen?
Each exchange should consume tokens proportional to the actual content exchanged. A two-character input ("56") and a 300-word essay should not cost the same amount of overhead. The Messages bucket should reflect actual message content, not constant system context re-injection.
Error Messages/Logs
No error messages. The issue is visible only via /context. Messages bucket grows ~6-8k per exchange regardless of content. System prompt, tools, agents, memory, and skills remain flat — all overhead lands in Messages.
Steps to Reproduce
- resh Claude Code session (any directory)
- Run /context — note Messages: 216 tokens
- Type "8 x 7?" — response: "56"
- Run /context — Messages now ~8,500 tokens
- Repeat with any input of any length/complexity — delta is constant ~6-8k per exchange
- Reproduced on 2.1.114, 2.1.116, 2.1.117 with effortLevel: normal, Sonnet 4.6, bare default settings
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.110
Claude Code Version
2.1.117
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
iTerm2
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗