Claude Code as a personal OS: which weekly quota bucket your routines actually drain

Every guide on running Claude Code as a personal OS stops at the same place. They walk you through Context, Connections, Capabilities, and Cadence. They tell you that remote routines run on Anthropic's cloud while your laptop is closed. They do not tell you which weekly bucket those runs charge against, why your local token count looks fine while the server has already walled you, or how to actually watch it happen.

M
Matthew Diakonov
6 min

Direct answer · verified 2026-05-11

Remote routines, scheduled tasks, and Cowork runs charge against seven_day_oauth_apps and seven_day_cowork, two rolling 168-hour buckets that are separate from seven_day (the aggregate the chat UI shows). Pro is capped at 5 routine runs per day (35/week), Max at 15/day (105/week). Routine traffic charges regular plan usage on top of your interactive Claude Code sessions, which is why a personal-OS setup walls long before its local token count looks high. Both bucket names are in the open-source ClaudeMeter parser at claude-meter/src/models.rs lines 24 and 26, and Pro/Max routine caps are confirmed at the official routines docs.

Authoritative sources: code.claude.com/docs/en/routines · claude.com/blog/introducing-routines-in-claude-code

The 'personal OS' framing, in one paragraph

The pattern is four steps: Context (what Claude knows about you, via CLAUDE.md and memory files), Connections (what data it can reach, via MCP and Google Workspace), Capabilities (skills as markdown files in .claude/skills/), and Cadence (when it acts independently, via remote routines and scheduled tasks). The first three change how Claude responds when you prompt it. The fourth changes when prompts happen at all.

Cadence is where the quota math stops looking like "how often do I type into the terminal." A scheduled routine that runs every morning at 06:00 will fire 7 times this week whether you sit down at the laptop or not. A Cowork session that loops on a 30-task backlog will keep working through a flight. The drain looks invisible because it is happening on Anthropic's cloud, against the same plan quota, but to a bucket the chat UI does not surface.

What a routine run does to your account, end to end

The flow below is what happens when a scheduled routine fires at 04:00 while your laptop is closed. The last step is the only one ClaudeMeter participates in; the first four happen whether you have a tracker installed or not.

One scheduled routine run, six buckets affected

🌐

Scheduled routine fires

Pro: 5/day, Max: 15/day, min 1h interval

⚙️

Anthropic cloud worker

4 vCPU, 16GB RAM, 30GB disk, clone of your repo

🔒

Charges OAuth bucket

seven_day_oauth_apps +=

⚙️

Charges Cowork bucket

seven_day_cowork +=

/api/oauth/usage

claude-meter reads here every 60s

The buckets the chat UI does not show you

Anthropic's internal usage endpoint returns more than the one weekly number the settings page renders. The ClaudeMeter parser names every bucket explicitly, which is the closest thing to documentation for the endpoint that exists publicly. Lines 24 and 26 are the two that matter for a personal-OS setup.

claude-meter/src/models.rs

Each Window carries its own utilization float and its own resets_at timestamp. The clock is rolling, not calendar. Two accounts with identical utilization on the same day will reset at different instants because their charging histories differ.

What the raw response looks like the morning after

Below is a real-shape response for an account that ran a Cowork routine overnight and got walled. The seven_day aggregate is comfortable at 0.34. The settings page on claude.ai would show that number and look fine. The seven_day_cowork bucket is at 1.00, which is the wall.

api.anthropic.com/api/oauth/usage

To pull this yourself: the OAuth access token Claude Code stores in macOS Keychain under service name Claude Code-credentials has user:profile scope, which is enough for this endpoint. security find-generic-password -s 'Claude Code-credentials' -w prints the token. Pipe it into the curl above and you get the same JSON ClaudeMeter parses every 60 seconds.

Why local token counters cannot see this drain

ccusage and Claude-Code-Usage-Monitor are excellent at one thing: parsing the JSONL files Claude Code writes locally when you run it interactively. That data source is fine for an interactive workflow. For a personal-OS setup it is incomplete in one specific way: remote routines run on Anthropic's cloud against a cloned copy of your GitHub repo. Nothing touches your laptop. Nothing lands in the JSONL. The local count stays low. The server bucket fills up. The next interactive session fires rate_limit_error and you reach for ccusage and ccusage tells you you have 95 percent left.

FeatureccusageClaudeMeter
Sees interactive Claude Code spend (local JSONL)YesYes (via server-truth)
Sees remote routine drain (cloud-only)No, the run never touches your machineYes, reads seven_day_cowork from the server
Sees seven_day_oauth_apps utilizationNoYes, named field in models.rs:24
Sees the bucket that actually 429'd youNo, infers from local token totalYes, names the specific Window with utilization >= 1.0
Sees extra_usage dollar burn liveNoYes, third row in the popover when present
CostFree, open sourceFree, open source, MIT, no telemetry

They measure different things and both are useful. For a personal-OS setup, you specifically need the server-truth read, because the cloud-side runs are the surface that walls you first.

The actual cap math, Pro and Max

From the official routines docs: Pro gets 5 remote routine runs per day, Max gets 15, Team and Enterprise get 25. Minimum scheduled interval is one hour, so /loop is where you go if you need sub-hourly cadence. Multiply by seven and a Pro account caps at 35 runs per week, Max at 105.

That is not the quota wall. That is a routine-count rate limit, separate from the weekly quota itself. The weekly quota is independent and stricter, because every routine run also charges your regular plan usage the same way an interactive Claude Code session would. A Pro account using its full 5 routines a day on Sonnet-heavy refactoring will hit seven_day_cowork at 1.00 well before it hits the 35-run-per-week routine cap. The math is workload-dependent, but the failure mode is the same: the bucket the chat UI does not show.

Running Claude Code as a personal OS and walling out?

I built ClaudeMeter for exactly this setup. Happy to look at your usage shape and tell you which bucket is firing first.

Questions

Frequently asked questions

What does 'Claude Code as a personal OS' actually mean here?

It is the Context-Connections-Capabilities-Cadence pattern Anthropic and a handful of writers (MindStudio, Towards AI) have been pushing since the Routines feature shipped on 2026-04-14. Context is what Claude knows about you (CLAUDE.md, memory files). Connections is data it can reach (MCP, Google Workspace, your repo). Capabilities is skills it can run (markdown files in .claude/skills/). Cadence is when it acts without you (remote routines on Anthropic's cloud, scheduled tasks, Auto Mode loops, Cowork). When people say 'personal OS' they almost always mean the Cadence step. That is the step that drains weekly quota differently from interactive Claude Code, and the step every other guide stops short of explaining.

Which weekly bucket does a remote routine actually charge against?

Two buckets, simultaneously. seven_day_oauth_apps because the routine authenticates as an OAuth client (same as your local Claude Code CLI), and seven_day_cowork because cloud-executed routine work is itself classified as Cowork on the server. Both fields appear verbatim in claude-meter's UsageResponse struct (models.rs lines 24 and 26). The chat UI on claude.ai aggregates everything into seven_day; the cowork and oauth_apps buckets are not shown there. That is why your account can sit at seven_day = 30 percent and seven_day_cowork = 100 percent at the same time, and why a scheduled routine fires '429 rate_limit_error' while a web chat in another tab still works.

How many routine runs do I actually get per week on Pro vs Max?

Pro is 5 remote routine runs per day, Max is 15, Team and Enterprise are 25. Minimum scheduled interval is one hour. Multiply by seven: Pro caps at 35 runs per week, Max at 105. That is the daily-cap math; the weekly quota is independent and stricter. Every routine run also charges your regular plan usage the same way an interactive Claude Code session would, so a five-run-per-day Pro account that is also coding interactively will hit seven_day_oauth_apps or seven_day_cowork well before the 35-run quota wall. Source: code.claude.com/docs/en/routines.

Why can ccusage not see this?

ccusage reads the JSONL files Claude Code writes to your local machine when you run it interactively. Remote routines run on Anthropic's cloud (4 vCPUs, 16GB RAM, 30GB disk per run, per Anthropic's docs) against a cloned copy of your GitHub repo. Nothing about that run touches your laptop, so nothing about that run lands in ccusage's data source. The token estimate you see locally stays low. The seven_day_cowork bucket on the server fills up. They are measuring different things; ccusage is not wrong, it is just blind to this surface. ClaudeMeter polls api.anthropic.com/api/oauth/usage every 60 seconds, which returns the same shape the chat UI's settings page calls, so the cowork bucket shows up live.

What does the raw response look like?

It is a flat JSON object with one Window field per bucket. Each Window has utilization (a float, where 1.0 is the wall) and resets_at (a UTC ISO-8601 timestamp, rolling, not calendar). The fields you care about for a personal OS setup are five_hour, seven_day, seven_day_oauth_apps, seven_day_cowork, and extra_usage. claude-meter's parser names every field at models.rs lines 19-28, which is the open-source documentation for an endpoint Anthropic does not document publicly anywhere else.

Will enabling extra usage save me from this wall?

Sometimes. If extra_usage.is_enabled is true and used_credits is below monthly_credit_limit on /overage_spend_limit, prompts that would have walled bill against extra usage at API prices instead. If is_enabled is false, or out_of_credits is true, the wall stays. Anthropic's April 2026 metered-billing rollout makes this the realistic escape hatch for a personal-OS setup that genuinely needs to keep running, but you want the live dollar burn visible. ClaudeMeter renders extra_usage as a third row in the popover when it is present.

If I run the same routine on a local /loop instead of a remote routine, does it still charge cowork?

Yes, but slightly differently. /loop is a local skill, so your laptop has to stay open and your session active. The traffic still goes through your OAuth-authenticated Claude Code CLI, so seven_day_oauth_apps still increments. Whether seven_day_cowork increments depends on whether the work classifies as Cowork on the server side; in practice for any agentic loop where Claude is figuring out the steps itself, it does. The local visibility is better (ccusage sees it now, because the traffic is local), but the weekly buckets you blow through are the same two.

How do I read the buckets myself without installing anything?

Pull the access token Claude Code stores in macOS Keychain (`security find-generic-password -s 'Claude Code-credentials' -w`), then curl the endpoint: `curl -H 'Authorization: Bearer $TOKEN' https://api.anthropic.com/api/oauth/usage`. The response is the exact UsageResponse JSON shape claude-meter parses. The OAuth token has user:profile scope, which is sufficient. If the response is missing seven_day_cowork entirely, your account does not have a Cowork bucket yet (rollouts are staged); seven_day_oauth_apps is the one to watch in that case.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.