Claude Code

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

CauseWhat happensFix
Long contextAll history rides along with each request/clear when switching tasks
Cache miss after a breakThe first message after the cache lifetime expires reprocesses the whole context at full priceClear 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 timeStop loops you don't need; check the Loops line in /usage
Messages from other sessionsDelivered as a new turn while the session is idleSet crossSessionInbound to hold
Goal check-insClaude checks on background work progress, up to 3 times per goal between promptsCLAUDE_CODE_GOAL_CHECKIN_MINUTES=0 to turn off
Subagents and workflowsEach child agent sends its own requestsUse a smaller model for subagents
Compaction/compact reads the whole conversation to summarise it: a big request itselfTo 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 /model lets 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 /usage at 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

  1. Manage costs effectively — Claude Code Docs