The Sonnet limit strands you on the expensive model
Hitting the Sonnet family limit leaves Opus as the only model with quota, and the documented fix — switching families with /model — spends your remaining shared weekly allowance at the pricier rate. Check the weekly bar in /usage before you switch, not after.
The official documentation describes the mechanism this relies on. The technique itself is community practice.
What this costs you if it is wrong
The relative sizing of the family buckets, and how much faster an Opus turn drains the shared weekly allowance, are not documented anywhere and are inferred from list pricing plus one community report. Do not budget a week's work on the exact ratio. Bucket structure has changed repeatedly, so re-check /usage against your own plan rather than trusting this shape; and this is a spend-pacing habit, not a safety one — following it wrongly costs you allowance and time, nothing else.
You are mid-week, deliberately running routine work on Sonnet to be frugal, and the session stops with a limit message. Not the weekly one — the Sonnet one. The docs tell you exactly what to do: run /model, switch to a model outside that family, keep working. It works. It is also the single most expensive keystroke available to you at that moment, and nothing on screen says so.
What the docs actually establish
Four different limit messages exist, and they do not mean the same thing:
You've hit your session limit · resets 3:45pm
You've hit your weekly limit · resets Mon 12:00am
You've hit your Opus limit · resets 3:45pm
You've hit your Sonnet limit · resets 3:45pm| Message | Scope | Does /model restore access? |
|---|---|---|
| Session limit | Shared across all models | No |
| Weekly limit | Shared across all models | No |
| Opus limit | That model family only | Yes — switch outside the family |
| Sonnet limit | That model family only | Yes — switch outside the family |
So there are at least two things counting at once. A shared allowance that every model draws on, and per-family ceilings layered over it. The docs are explicit that usage counts against the session and weekly allowances at the same time, and that a single burst can exhaust the weekly allowance before the session window resets.
The part nobody writes down
Put the two facts together and a failure mode falls out that no page names. If you spend the week on Sonnet, you hit the Sonnet ceiling first, while shared weekly allowance remains. The only family left with quota is the more capable, more expensive one. Every turn you take from that point draws on the shared pool at a higher rate than the Sonnet turn it replaced would have — so the reward for being disciplined about model choice is being pushed onto the model you were avoiding, at the moment you have least budget left.
That consequence is inference, not documentation. The mechanism is documented; the price of the remedy is not.
The habit
Before you switch families, look at the bar, not the message.
/usage # then press w for the 7-day viewRead the weekly allowance, not the family message that stopped you. Two cases:
- Weekly bar has real room. Switching families is a genuine option. You are trading rate for continuity, knowingly.
- Weekly bar is also high. This is the moment to stop, not the moment to switch. Continuing on the pricier family spends the tail of the shared week faster than anything else you could do.
The status line cannot make this call for you. The rate_limits object a status line script receives carries a rolling five_hour window, a weekly seven_day window and, behind a spend-limit gateway, a spend_limit window — each with used_percentage and resets_at. There is no documented per-family field. A status line showing 7d: 61% is silent about which family you have already burned through, so /usage is the only place the two views sit side by side.
Switching families has a second, documented cost
Even one switch is not free, and this part is written down: each model has its own prompt cache. After you change families, the next request re-reads the entire conversation with no cache hits. On a long session that is a large, immediate charge against the same shared allowance you were trying to protect — paid up front, before the first useful token of the new model's answer.
So the switch costs twice: the higher per-turn rate, plus one cold-cache rebuild of everything you have said so far.
What to do instead of switching
- Wait it out. A family limit resets on the same short cycle as the session limit — hours, not days. In an interactive session signed in with a claude.ai subscription, Claude Code can hold the session open and "continue the interrupted task shortly after the reset", counting down on a line at the bottom of the screen. That capability arrived in v2.1.234 — "Before v2.1.234, Claude Code didn't offer this wait" — so if your reflex is to kill the session and switch families rather than leave it sitting there, the reflex is older than the tool. A weekly limit is the one that resets days out.
- Shrink the task. Long context is one of the behaviors
/usageflags when it accounts for a tenth or more of recent usage. Clearing between unrelated tasks is the highest-impact habit the docs name. - Buy the gap deliberately.
/usage-creditson Pro and Max makes the spend explicit instead of hiding it inside a model switch.
What is unverified here
Say it plainly, because the value of this entry is that you can tell how far to trust it:
- Verified from the docs: the four messages, that session and weekly are shared across models, that Opus and Sonnet limits are per-family, that switching families keeps you working, that switching costs a full cache rebuild, and that the status line exposes no family bucket.
- Not verified: that the family buckets are sized independently enough to strand a heavy Sonnet user; that
/usagerenders a distinct family bar you can read at all; and any number attached to "several times faster". This comes from one closed community issue with no visible Anthropic reply and no percentages in it. - What would settle it: run
/usage, pressw, and see whether a model-family bar appears next to the all-models weekly bar on your plan. If it does not, the "read both bars" advice reduces to "read the weekly bar before you switch", which still holds. Then note the weekly percentage, take one turn on each family, and compare the movement.
Bucket structure has changed more than once. Trust the shape you see in /usage on your own account over the shape described here.
Checkpoint
- Which two limit messages are unaffected by running
/model, and why?Show answerAnswer
The session limit and the weekly limit. Both allowances are shared across every model, so there is no family left to switch to —
/modelonly changes which model draws on the same exhausted pool. The Opus and Sonnet messages are per-family ceilings layered over that shared pool, which is why switching outside the family restores access in those two cases and not in these. - You hit the Sonnet limit with the weekly bar at 85 percent. What is the argument against switching to Opus to finish the task?
Show answerAnswer
The 15 percent left is shared allowance, and every turn on the more capable family draws it down faster than the Sonnet turn it replaces — the direction is not in doubt even though no page puts a number on the magnitude. On top of the rate, the switch costs a documented cold-cache rebuild: each model has its own prompt cache, so the first request after the switch re-reads the whole conversation with no hits, charged up front against the same allowance you were protecting. With the weekly bar that high, this is the moment to stop rather than switch — a family limit resets on the same short cycle as the session limit, so wait it out (in an interactive session signed in with a claude.ai subscription, v2.1.234 and later can hold the session open and continue after the reset),
/clearand shrink the task, or buy the gap explicitly with/usage-credits. - Why does a status line showing your seven-day percentage not tell you whether you are about to be stranded on the expensive family?
Show answerAnswer
Because the
rate_limitsobject a status line script receives has no per-family field. It carries a rollingfive_hourwindow, a weeklyseven_daywindow and, behind a spend-limit gateway, aspend_limitwindow, each withused_percentageandresets_at— and nothing about Sonnet or Opus. So7d: 61%tells you how much of the shared pool is gone and stays silent about which family ceiling you are already up against./usage, thenw, is where the two views sit side by side — though whether a distinct family bar renders on your plan is one of the things this tip flags as unchecked, so look before you rely on it.