The expensive part is not the code Claude writes. It is that every request carries your entire conversation, and several things send that conversation while you are not even typing.

Claude Code re-sends your full context with each request, and each tool call is another request carrying its batch of results. Prompt caching makes the re-read cheap rather than free. So a one-line question in a session that has been open all day still draws usage for the whole conversation.

Look at your own numbers first

Run /usage. On a Pro, Max, Team or Enterprise plan it shows more than a total: it breaks usage down by skills, subagents, plugins and individual MCP servers, each as a share of the whole.

It also raises behavior flags, which are the useful part. When a single behavior such as long context or cache misses accounts for 10% or more of recent usage, it gets flagged with a tip. Press d or w to switch between the last 24 hours and the last 7 days.

For a sense of scale, Anthropic reports average enterprise usage around $13 per developer per active day, and under $30 per active day for 90% of users.

The drains that happen while you are idle

This is the section worth the read, because none of it correlates with how much you are working.

Cache misses after a break. Your first message after a gap longer than the cache lifetime reprocesses your entire context. The lifetime is one hour on a subscription, and drops to five minutes once you are drawing on usage credits. On an API key or cloud provider it is five minutes by default. You can keep the one-hour lifetime while on usage credits by setting ENABLE_PROMPT_CACHING_1H=1.

Scheduled tasks. A scheduled task fires on its interval even while the session sits idle, and sends your full context each time.

Cross-session messages. A message from another of your sessions arrives as a new turn while this one is idle, sending full context again. Set crossSessionInbound to hold if you want them queued instead.

Goal check-ins. While background work keeps a goal waiting, Claude Code asks for a check on that work even in an idle session, which starts a turn carrying the whole conversation. Set CLAUDE_CODE_GOAL_CHECKIN_MINUTES to 0 to stop it.

Agent teammates. Each active teammate consumes tokens until it exits. Agent teams use roughly 7x the tokens of a standard session when teammates run in plan mode, because every teammate maintains its own context window.

None of these are bugs. They are all features doing what they say. They are just invisible on the way out.

The compaction trap

/compact summarizes your conversation to free space. To do that it has to read the conversation it is summarizing, so compacting a large context is itself a large request.

/clear costs nothing.

If you are switching to unrelated work, clear rather than compact. Compaction is for continuity within one task, not for tidying up between tasks. Use /rename before clearing so the session is findable, then /resume if you need it back.

Fixes ranked by what they actually save

Match the model to the task. Sonnet handles most coding work at lower cost than Opus. Reserve Opus for architecture and multi-step reasoning. For high-volume subagent work, set model: haiku in the subagent config.

Turn thinking down when you do not need it. Extended thinking is on by default and thinking tokens bill as output tokens, with default budgets reaching tens of thousands per request. Lower it with /effort, or set MAX_THINKING_TOKENS=8000. Adaptive-reasoning models ignore numeric budgets, so use effort levels there.

Preprocess with hooks. Instead of Claude reading a 10,000-line log to find errors, a PreToolUse hook can grep for ERROR and return only the matches, cutting tens of thousands of tokens to hundreds. Same idea for test output: filter to failures.

Prefer CLI tools over MCP servers. Tools like gh, aws and gcloud add no per-tool listing to your context. MCP tool definitions are deferred by default now, but servers still cost something. Run /context to see what is consuming space and /mcp to disable servers you are not using.

Keep CLAUDE.md short. It loads at session start, every session, so specialised workflow instructions sit in context even during unrelated work. Anthropic's guidance is to keep it under 200 lines and move specifics into skills, which load only when invoked.

Delegate verbose operations to subagents. Test runs, documentation fetches and log processing generate volume. Run them in a subagent so the output stays in that context and only a summary returns to your main conversation.

Be specific. "Improve this codebase" triggers broad scanning. "Add input validation to the login function in auth.ts" does not.

The part before you type anything

There is a fixed cost per request before your prompt is even considered: the system prompt plus every tool definition. We measured this across harnesses, and Claude Code sends 28,407 input tokens on a cold hello, roughly 18.9k of which is the tool catalogue for its 27 tools.

Caching makes that cheap in steady state, which is exactly why cache misses hurt: a miss means paying full price for the fixed cost again, before any work happens.

If you are consistently hitting caps rather than cost limits, the honest answer is that a cheaper model does not help, because quota windows are shared across models. Switching models with /model does not restore a session or weekly limit. The options that do help are clearing between tasks, shortening context, and being deliberate about idle-time features. If cost rather than quota is the problem, running Claude Code on a cheaper backend is a different lever entirely.

FAQ

Why does my Claude Code usage climb when I am barely working?

Because several features send your full context while the session is idle: scheduled tasks firing on their interval, messages arriving from other sessions, and goal check-ins on background work. Cache misses after a break longer than the cache lifetime also reprocess your entire conversation. Each of these carries the whole context, regardless of how short your last message was.

Does /compact save tokens?

Not immediately. Compaction reads the conversation it summarizes, so compacting a large context is itself a large request. It saves tokens on subsequent messages by shrinking what gets re-sent. When you are switching to unrelated work, /clear is the better choice because it costs nothing.

How do I see what is using my Claude Code quota?

Run /usage. On subscription plans it breaks recent usage down by skills, subagents, plugins and individual MCP servers, and flags any behavior accounting for 10% or more of the total, such as long context or cache misses. Press d or w to switch between 24-hour and 7-day views. Run /context to see what is occupying your context window right now.

Will switching to a cheaper model fix hitting my limit?

No. Session and weekly usage windows are shared across models, so /model does not restore access after hitting one. It does let you keep working after a model-specific limit such as an Opus cap. To address the underlying problem, reduce context size and control the idle-time features that resend it.

How much do agent teams cost?

Agent teams use approximately 7x the tokens of a standard session when teammates run in plan mode, because each teammate maintains its own context window as a separate instance. Keep teams small, use Sonnet for teammates, keep spawn prompts focused, and shut teammates down when their work is finished, since each one consumes tokens until it exits.

Sources