Skip to content

Rate limit quota is shared per organizationUuid, not per account #41886

Description

@dancinlife

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report
  • I am using the latest version of Claude Code

What's Wrong?

Rate limit quota is pooled at the organization level (organizationUuid), not per-account. All accounts sharing the same organizationUuid consume from a single quota pool — using one account exhausts the limit for all others in the same organization.

Root cause: claude login does not clear the oauthAccount field in .claude.json, causing cross-contamination of account UUIDs across config directories. These leaked UUIDs are likely sent to the backend and trigger org-level grouping. See detailed analysis in the comment below.

cc @dliedke

Evidence

I'm on the Max plan ($200/mo) and checked my accounts via the OAuth usage API (/api/oauth/usage) and local config (oauthAccount.organizationUuid in .claude.json):

organizationUuid Accounts Session Weekly Behavior
34d83544-a7e... Account A, B, C, D, E 100% (identical) 83% (identical) Shared — same utilization & reset times
1b8fb384-9be... Account F 0% 100% Independent
c2b1b50a-454... Account G 0% 100% Independent
1d6df450-33f... Account H 0% 100% Independent
  • Accounts under the same org show identical utilization percentages and reset times
  • Accounts under different orgs have fully independent quotas
  • Billing method and phone number are not the grouping factor (verified: different cards and phone numbers within the same org group)

What Should Happen?

Each Max subscription account should have its own independent rate limit quota. Per-organization pooling is unexpected and undocumented — users paying for separate subscriptions will find them silently linked if they end up in the same organization.

At minimum, this behavior should be clearly documented so users understand what they're paying for.

How to Check Your Own Grouping

# Check organizationUuid in your config:
python3 -c "import json; d=json.load(open('$HOME/.claude/.claude.json')); print(d['oauthAccount']['organizationUuid'])"

# Or check the API response header 'anthropic-organization-id'

Related Issues

Claude Code Version

2.1.89

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleIssue is inactive

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions