Opus 4.8 burns 5h limit in ~30min on operational work; no signal to downgrade to Sonnet
Resolved 💬 2 comments Opened Jun 1, 2026 by technalab Closed Jul 3, 2026
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?
Summary
A 1.5-hour session of routine operational work (run script → read log → fix bug → restart) on Claude Code with claude-opus-4-8 consumed:
- 26% of the 1M context window (263k tokens) in a single session
- 93% of the 5-hour rate limit in ~30 minutes
- 94% of the weekly limit in a few hours
The work itself was not Opus-grade: shell orchestration, reading 80-line log tails, editing two Python files, running diagnostic SQL. Sonnet 4.5 (or even Haiku) would have done it identically at ~⅓ the cost.
Concrete pain points from the session
- System-reminder spam. Every tool call received a 71-item completed-tasks list appended via system-reminder, regardless of whether the Task API was being used. Conservative estimate: 30-40k tokens of redundant context across the session.
- No model-tier guidance. Running
/model claude-opus-4-8should warn: "This is a premium tier. For shell orchestration / log reading / routine edits, considerclaude-sonnet-4-5to preserve your budget." Currently you only find out after the limit is gone.
- Worktree state isn't persisted between sessions. Sessions resumed in stale
.claude/worktrees/claude-*directories that diverged frommainby ~100 commits. The agent then "discovered" and "fixed" things that have been on main for weeks (table renames, calendar-token JWT, dead method removal). Pure token waste + hallucinated work summaries. Either (a) prune worktrees on session end or (b) on resume, warn "this worktree is N commits behind main".
- Read-on-large-files is expensive. Reading an 80-line log tail via the Read tool costs ~3k tokens. Multiplied by 20-30 progress checks during a long-running background task, that's a chunk of the context window gone to polling. A built-in
tail -N/ log-stream primitive would be significantly cheaper.
What would have helped
- Default model = Sonnet 4.5 when invoked without
--model, Opus only on explicit ask - Or: a soft per-session token meter visible to the user (e.g. "Opus session at 50k tokens — consider switching to Sonnet")
- Worktree GC on session end
- Cheaper "tail log" primitive
Environment
- Claude Code: (your version —
claude --version) - Model: claude-opus-4-8
- Platform: Windows 11 / PowerShell 5.1
- Session length: ~1.5h interactive
What Should Happen?
Above
Error Messages/Logs
Above
Steps to Reproduce
Above
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
latest
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗