Author: abavyka
Your subscription limit eats the whole context that flies out with every request.
Two limits
Pro and Max have two windows: a 5-hour one and a weekly one. Every request counts against both at once. They’re shared across all models (and with chat on claude.ai too), so when you get “You’ve hit your session limit”, switching to Sonnet with /model does nothing.
The exception is separate limits per model family: “You’ve hit your Opus limit” or “Sonnet limit”. Then /model to a model from another family helps, but every model has its own cache, so the first request re-reads the whole conversation with no cache.
You can burn through the weekly limit before the 5-hour one even resets: one big burst of work, and your week is done. There are no exact limits in tokens anywhere, only percentages.
I’ve got Pro for personal stuff and Max for work.
Every request carries the whole conversation
The model remembers nothing, so Claude Code sends the whole context with every request. Every tool call is one more request with the whole history plus the result. So a one-line question in a session that’s been open since the morning costs as much as that whole session (well, at cache prices).
On a subscription the cache lives for an hour. Went to lunch for longer — the first message after the break misses the cache and processes the whole context from scratch. This surprised me the most: long session, long break, you come back, send one message — and minus 20–30% of the 5-hour limit.
Input and output
Input is what flies into the model, meaning the whole context. Output is what the model generates, thinking included. On the API, output is 5 times pricier than input, prices per million tokens:
- Fable 5.1 — 50 output
- Opus 5.5 — 20
- Sonnet 5.5 — 10
- Haiku 5.5 — 0.50 (for prompts up to 100K tokens)
Reading from the cache is pennies compared to input: on Opus 5.5 and Sonnet 5.5 it’s 5% of the price. Input gets you on volume, because the context flies out with every request, and output on price per token.
These are API prices. How exactly the subscription limit weighs input and output, the docs don’t say.
Thinking and effort
Thinking (the model reasoning before it answers) is billed as output. How much to think is controlled by effort: low, medium, high, xhigh, max.
- On Opus 5.5, Sonnet 5.5 and Haiku 5.5 the default is
medium, on Fable —high /effort— change the level,/effort status— see the current onemaxonly lasts until the end of the session and doesn’t get saved as the default- On the 5.5 models and Fable you can’t turn thinking off, only lower the effort
I live on medium, and for specific tasks I bump it to high or grab Fable.
Subagents
A subagent saves the main session’s context, but not the limit: its requests count against the same one. And if it has no model set, it takes the session’s model. You’re sitting on Opus — and all your subagents’ research runs on Opus too. The built-in Explore also runs on the session’s model, not on Haiku.
The model is set in the frontmatter (the settings block between --- at the top of the file) of the subagent itself, for example in .claude/agents/test-runner.md:
---
name: test-runner
description: Runs the test suite and reports only the failures
tools: Bash, Read
model: haiku
---
Run `npm test` and report only the failing tests with their errors.Other values: sonnet, opus, inherit (the session’s model). I pick the model for the task. Running tests or searching the repo — a cheap one, figuring out architecture — a stronger one.
Who ate it: /usage
On a subscription /usage shows not just the limit bars but a breakdown too:
- skills, subagents, plugins and every MCP server — as a percentage of what you’ve used
- flags on anything that takes 10% or more (long context, cache misses), with a tip on what to do about it
- separate rows for
/loopand scheduled tasks: how many times they ran and how many tokens they ate up d/w— for the day or for the week
It’s counted locally from the history on this computer, so claude.ai and other machines don’t get in there. The dollar amount at the top is an estimate at API prices, on a subscription it doesn’t affect anything.
In 2.1.299 /usage started warning about max effort, context that hangs around the whole session, and big tool results. They also fixed it showing over 100% there.
What eats it while you do nothing
- Scheduled tasks and
/loop— every run sends the whole context, even when the session is just sitting there - Idle compaction — a conversation of 200K tokens or more that’s sat for about 54 minutes gets compacted by Claude Code on its own. Turn it off with
"idleCompaction": falseinsettings.jsonor in/config /compact— a big request in itself, because it reads the whole conversation./clearcosts nothing
When you hit it
- At 85% you get a warning with the reset time
- When the limit stopped a task mid-work, Claude Code (since 2.1.234) waits in the open session and carries on by itself after the reset. But only if the reset is within 24 hours, so on the weekly limit usually not. Closed the terminal or typed something yourself — the wait is cancelled. Turn it off in
/config: Continue automatically at usage limit /usage-credits— buy more on Pro/Max. But while you’re running on credits, the cache lives 5 minutes instead of an hour
I always just waited. That’s how I started looking for tools that cut down token usage.
What the docs say
The docs on costs say it straight:
- CLI tools (
gh,aws) are leaner than MCP servers - A hook can filter a command’s output before Claude sees it: out of a 10,000-line log — only the lines with
ERROR, so hundreds of tokens instead of tens of thousands - Instructions for specific workflows are better kept in skills: they load only when needed, while
CLAUDE.mdhangs in the context all the time
Next up: MCP and hooks.
Read more
- Context and cache
- Usage limits
- Tokens
- Effort
- /usage
- Reducing token usage
- Prompt caching
- Costs,
/usageand how to cut tokens: Manage costs effectively - Effort and models: Model configuration
- The model for subagents: Create custom subagents
- Limit messages: Error reference
- API prices: Pricing