Why long Claude Code sessions burn usage: reading /usage and the prompt cache line
TL;DR
Every request resends the whole conversation, so long sessions make each question pricier, plus cache misses after breaks, background loops, subagents and compaction. Use /usage for cache stats and tips, and /clear when switching tasks.
You leave a Claude Code session open since morning, ask only a few short questions in the afternoon, and yet your Pro/Max usage bar drops unusually fast. It's not a billing bug: the official Claude Code docs have a whole section explaining why long sessions use more than the activity you see. Understanding the mechanism tells you when to clean up a session and how to read the numbers in /usage correctly.
The root cause: every request resends the whole conversation
The model doesn't "remember" between requests. Claude Code resends the entire conversation every time, and each time Claude uses a tool, another request goes out carrying the tool result. Prompt caching means the history is re-read at the (much cheaper) cache price, but it isn't free. So a one-line question in an all-day session still pulls usage for the whole conversation.
Seven reasons usage climbs
| Cause | What happens | Fix |
|---|---|---|
| Long context | All history rides along with each request | /clear when switching tasks |
| Cache miss after a break | The first message after the cache lifetime expires reprocesses the whole context at full price | Clear before meetings/lunch, or compact before leaving your desk |
Scheduled tasks (/loop…) | Run on a timer even while the session is idle, sending the full context each time | Stop loops you don't need; check the Loops line in /usage |
| Messages from other sessions | Delivered as a new turn while the session is idle | Set crossSessionInbound to hold |
| Goal check-ins | Claude checks on background work progress, up to 3 times per goal between prompts | CLAUDE_CODE_GOAL_CHECKIN_MINUTES=0 to turn off |
| Subagents and workflows | Each child agent sends its own requests | Use a smaller model for subagents |
| Compaction | /compact reads the whole conversation to summarise it: a big request itself | To start fresh, use /clear (free) |
Reading the "Prompt cache" line in /usage
In recent versions, the Session block of /usage has a cache statistics line for the main conversation, roughly:
Prompt cache (main): 14 requests · 91% of input tokens from cache
· 2 misses · 1 expected rebuild · warm (1h TTL, last activity 40s ago)
- % from cache: higher is cheaper. A persistently low ratio means something keeps breaking the cache.
- Misses: requests that had to reprocess content that should have been cached. Newer versions also show a likely cause, such as "tool definitions changed" (toggling an MCP server mid-session does this).
- Expected rebuild: misses caused by Claude Code itself rewriting the conversation (compaction, clearing old tool results); this is normal.
- Warm/cold: whether the cache is still alive or expired. Sending a message while "cold" means accepting one full reprocess.
Recommendations and the f key
On Pro, Max, Team and Enterprise plans, /usage also has an Attribution section (usage percentage by skill, subagent, plugin and each MCP server) and Recommendations: each line is a behaviour accounting for 10% or more of recent usage, with a suggestion, such as trimming a CLAUDE.md that costs tens of thousands of tokens per request, or lowering effort. The percentage shows how much usage the suggestion applies to, not how much it would save. When the footer shows a hint like f to fix 2 of 3, press f to let Claude Code apply the suggestions it can (effort changes apply immediately; file changes are shown for your approval first). Press d/w to switch between 24 hours and 7 days.
Telling the "limits" apart
- "You've hit your session/weekly limit": you've used up your plan's time-window allowance, shared across all models. Switching model doesn't help.
- "You've hit your Opus/Sonnet limit": you've used up the allowance for one model family; switching with
/modellets you continue. - Context/auto-compact warnings: not a usage limit, just the conversation approaching the context window.
How to apply it
- Dev: Make "leaving my desk → clear or compact" a habit. Open
/usageat the end of each day for a week to learn which behaviours cost the most. - Tech Lead: Review
/loops and scheduled tasks running in sessions; they're a common "invisible" cost. Avoid toggling MCP servers mid-session. - PM / Admin: When a developer says "I'm out of quota", ask for the exact message to tell apart a plan limit, a spend limit, or just a context warning.
Sources & references
- Manage costs effectively — Claude Code Docs