Claude Max plan still hitting limits? It is eight buckets, not one.

$100 to $200 a month buys you higher caps. It does not buy unlimited. Anthropic enforces eight independent server-side limit buckets and any one of them can stop the next prompt. The big bar on claude.ai/settings/usage shows you one of them. The other seven decide your week.

M
Matthew Diakonov
7 min read

Direct answer (verified 2026-05-06)

Max raises the caps. It does not collapse the eight gates into one. Seven utilization buckets live on /api/organizations/{org_uuid}/usage (five_hour, seven_day, seven_day_sonnet, seven_day_opus, seven_day_oauth_apps, seven_day_omelette, seven_day_cowork) and the eighth lives on /api/organizations/{org_uuid}/overage_spend_limit as out_of_credits. Any single bucket at 100 percent fires a 429. The most common Max-but-blocked culprit is seven_day_oauth_apps, a separate weekly bucket that only counts Claude Code and agentic OAuth traffic. It does not appear as its own row in the prose at claude.ai/settings/usage. Anthropic also confirms Max users can keep working past plan caps via metered billing in the Max plan help center article.

The 60-second triage table

Read your /usage and /overage_spend_limit responses. Find the one bucket above 100. Match it to the row. Each gate has a different exit, so the right move depends on which bucket is hot.

FeatureWhat it actually isWhat it means
five_hour at or above 100Rolling 5-hour session window. Resets 5 hours after your first message of the window.Sit out until five_hour.resets_at. Your weekly buckets survive intact. Most common gate for Claude Code agentic loops.
seven_day at or above 100All-up weekly aggregate. Resets 168 hours after your first message of the cycle.Wait until seven_day.resets_at. A 5-hour reset will not unlock this. Heavy mixed-workload Max users hit this by mid-week.
seven_day_opus at or above 100Opus-only weekly bucket. Independent of seven_day_sonnet.Switch to Sonnet for the rest of the week, or wait for the per-model reset. Common for Max users running Opus on hard refactors.
seven_day_sonnet at or above 100Sonnet-only weekly bucket. Tracked since the November 2025 Opus 4.5 release.Drop to Haiku for routine work, or wait for reset. Catches heavy daily writers and reviewers.
seven_day_oauth_apps at or above 100OAuth-authenticated weekly bucket. Counts only Claude Code, MCP, and agentic CLI traffic.Move work to claude.ai web for the rest of the cycle, or wait for reset. The silent Max-but-blocked culprit.
seven_day_omelette at or above 100Internal feature bucket exposed on the same endpoint.Wait for reset. Rarely the active gate; surfaces here so a parse error does not hide it.
seven_day_cowork at or above 100Internal feature bucket exposed on the same endpoint.Wait for reset. Rarely the active gate; surfaces here so a parse error does not hide it.
out_of_credits == true on /overage_spend_limitMetered billing dollar cap. Only present if you turned on extra usage.Wait until disabled_until (billing cycle boundary), or raise monthly_credit_limit on Settings. Only triggers after plan caps are spent.

The bucket that catches Max users specifically

Most people who pay $100 to $200 a month for Max are on it because they run heavy Claude Code workloads. That traffic flows through an OAuth-authenticated client, which means every prompt counts toward seven_day_oauth_apps on top of every other bucket it touches. The bucket has its own cap. It has its own resets_at. It is not surfaced as a row in the prose at claude.ai/settings/usage; you only see it if you read the JSON directly.

Below is what the menu bar shows when this is the active wall. The weekly aggregate is sitting at 30 percent. Everything looks fine on the dashboard. The OAuth bucket is at 100 and the next prompt 429s.

claude-meter

The other Max-specific gate: seven_day_opus

Anthropic split per-model buckets out around the November 2025 Opus 4.5 release. The endpoint had been returning seven_day_opus and seven_day_sonnet as their own utilization fractions for longer than that, but the announcement made the per-model cap official. A Max user spending a week on hard refactors will saturate seven_day_opus well before the all-up seven_day fills, and the 429 message names the model bucket that fired.

claude-meter

The anchor fact: the schema is open source and easy to verify

ClaudeMeter parses the live response into a typed Rust struct. Lines 18 through 28 of src/models.rs list every bucket the endpoint returns. Lines 30 through 40 list the metered-billing fields on the second endpoint. The whole project is MIT-licensed; you can read the wire format at github.com/m13v/claude-meter and verify against the JSON your own browser pulls.

src/models.rs (lines 18-28)
src/models.rs (lines 30-40)

The 60-second triage, one step at a time

1

Read all eight numbers, not just one

claude.ai/settings/usage shows you a digest. The full picture is the JSON behind it. Open DevTools, watch /api/organizations/{org_uuid}/usage refresh, and read every utilization in the response. Then call /overage_spend_limit and check out_of_credits. That is the entire enforcement state in two GETs.

2

Find the one bucket above 100

Only one gate at a time fires the 429. The other seven can be at 99 percent and you would still be sending prompts. Look for utilization >= 1.0 (or >= 100 if the response is in the 0-100 scale). That bucket is your wall right now. Note its resets_at.

3

Pick the matching mitigation

Each gate has a different exit. five_hour wants you to wait a few hours. seven_day_opus wants you to switch to Sonnet. seven_day_oauth_apps wants you to leave Claude Code for a session. out_of_credits wants you to raise the dollar cap or wait for the billing cycle to roll. Treating all walls as one wall (the common reflex) wastes hours on the wrong fix.

4

Stop guessing on every reset

Polling the endpoints by hand once a day is a chore. The browser extension polls every 60 seconds (POLL_MINUTES = 1 in extension/background.js), so the row that goes hot in the menu bar is the gate that just fired. The 5-hour and weekly resets show up as relative durations next to each row. No DevTools, no curl loop, no cookie paste.

Why the dashboard does not just show all eight

claude.ai/settings/usage is a user-facing surface. Showing eight progress bars with internal field names would scare most readers and help only the ones already running a tracker. So Anthropic compresses the state into a couple of bars and a banner. The compression is fine when only one wall is up. It gets confusing when two are. A Max user can read “5-hour limit reached - resets at 6:42pm,” wait 90 minutes, and still be blocked because seven_day_oauth_apps is also at 100 and the banner did not name it.

ClaudeMeter does not compress. The popup renders one row per bucket with the exact percent, the exact resets_at, and a BLOCKED suffix on the row that is currently the wall. The browser extension polls the endpoint every 60 seconds with the cookies your browser already holds, so the row that flips hot is the gate that just fired. That is what makes this Max-specific question debuggable instead of mysterious.

Still not sure which bucket is blocking you?

Book 20 minutes with the team and we will read your /usage JSON live and tell you the gate.

Frequently asked

Frequently asked questions

I am paying for Claude Max. Why am I still being rate limited?

Because Max is a higher cap, not no cap. Anthropic enforces eight independent server-side limit buckets. Seven live on /api/organizations/{org_uuid}/usage (five_hour, seven_day, seven_day_sonnet, seven_day_opus, seven_day_oauth_apps, seven_day_omelette, seven_day_cowork) and the eighth lives on /api/organizations/{org_uuid}/overage_spend_limit (out_of_credits when you have metered billing on). Any one of them at 100 percent will 429 your next prompt. Max raises the caps; it does not collapse the gates into one bucket.

I am sure my weekly bar on settings/usage is not at 100 percent. Why am I still blocked?

The big bar on claude.ai/settings/usage is the seven_day aggregate. It does not show seven_day_opus, seven_day_sonnet, or seven_day_oauth_apps as their own rows in prose. A Max user running Claude Code can be at 30 percent on seven_day and 100 percent on seven_day_oauth_apps and the Settings page will not mention the second number. The 429 fires anyway. ClaudeMeter polls the raw JSON every 60 seconds and renders each bucket as its own row, so you can see which one is hot.

What is seven_day_oauth_apps and why does it catch Max users specifically?

It is a separate weekly bucket that only counts traffic from OAuth-authenticated clients (Claude Code, MCP host loops, agentic CLIs that signed in through the OAuth flow). Max sells itself on agentic Claude Code workloads, so most Max subscribers are pushing traffic into this bucket all week. seven_day_oauth_apps can be at 91 percent while five_hour is at 12 percent and seven_day is at 30 percent. The 429 fires against whichever window crosses 100 first. The field name is in models.rs lines 18 to 28 of the open-source repo.

Does Max have a separate Opus limit and a separate Sonnet limit?

Yes. The endpoint returns seven_day_opus and seven_day_sonnet as their own utilization fractions with their own resets_at. A Max session that mostly drives Opus on hard tasks will saturate seven_day_opus before seven_day_sonnet, and the 429 message names the model bucket that fired. Anthropic's November 2025 announcement about Opus 4.5 confirmed Sonnet now carries its own bucket separate from the all-up weekly. The endpoint has actually returned both fields independently for longer than that.

How do I tell which of the eight buckets blocked me right now?

Open claude.ai/settings/usage, hit DevTools, watch the network tab refresh. The response of /api/organizations/{org_uuid}/usage is the raw JSON. Look for whichever utilization is at or above 1.0 (some responses ship 0 to 1, some ship 0 to 100; the numbers are the same scale internally). If every bucket on /usage looks fine, fetch /api/organizations/{org_uuid}/overage_spend_limit and check out_of_credits. That is the eighth gate. Or skip the manual loop and install ClaudeMeter; the menu bar shows the active gate continuously without DevTools.

If a gate fires, do all the others reset at the same time?

No. Each clock is independent. five_hour.resets_at rolls 5 hours after your first message of the rolling window. seven_day.resets_at rolls 168 hours after your first message of the cycle. seven_day_oauth_apps has its own resets_at. The metered-billing cap on /overage_spend_limit resets on your billing cycle boundary as disabled_until. Riding out a 5-hour reset does not push the weekly clock and does not unlock the OAuth bucket. ClaudeMeter shows each reset time as a relative duration ('in 4h', 'in 3d 15h') next to the percent bar.

Will turning on metered billing fix this?

It can. Enabling extra usage on Max lets the next prompt proceed past plan caps at standard API prices, but only until you hit the monthly_credit_limit you set. Once used_credits crosses that cap, out_of_credits flips true on /overage_spend_limit and a disabled_until timestamp appears. So metered billing converts a 429 from the rolling-window gate into a 429 from the dollar gate. ClaudeMeter shows both. The terminal version prints '$200.00 / $200.00 (100%) BLOCKED until Sun May 14' on the Extra usage row when the dollar cap fires.

Why does ccusage say I have only used 5 percent when claude.ai says I am rate limited?

ccusage reads ~/.claude/projects/<project>/<session>.jsonl on disk and sums input and output tokens against a model price card. That is local truth: tokens that left your machine. Plan limits live on Anthropic's servers as utilization fractions on the buckets above. The two are not the same number and were never supposed to be. ccusage is a great cost calculator. It is not a plan-quota reader, because the plan quota is not in the local logs. ClaudeMeter and ccusage are complementary: one reads server quota, the other reads local token spend.

I am on Max 20x. Should I just expect to hit limits less often?

Yes, the caps are higher, but they are not absent. Heavy daily Claude Code users on Max 20x still report hitting the weekly Opus limit by Thursday or Friday. The five_hour window also fires for Max 20x users running back-to-back agentic loops. The bucket schema is identical across Max 5x, Max 20x, and Pro: same field names, different cap values. ClaudeMeter renders the percent against whatever your plan's cap actually is, because it reads the server's already-computed utilization fraction.

How does ClaudeMeter avoid the cookie-paste step that other trackers ask for?

The browser extension piece in extension/background.js calls fetch('/api/organizations/' + org + '/usage', { credentials: 'include' }). Manifest V3 lets the extension run with the live claude.ai cookies the browser already holds, so no copy-paste, no keychain prompt, no expiring token. The Rust core in src/api.rs does the same call with a cookie header it pulls from the system store on macOS. Either path is read-only. There is no chat traffic, no prompts sent, just two GETs per minute against endpoints the Settings page already calls.