hasAvailableSubscription incorrectly set to false despite active Pro/Max subscription

Resolved 💬 4 comments Opened Jan 21, 2026 by Quenos Closed Mar 1, 2026

Description

Claude Code incorrectly sets hasAvailableSubscription: false in ~/.claude.json despite having an active Pro/Max subscription. This causes rate limit errors and "Upgrade to Pro" prompts even when the user has plenty of usage remaining.

Environment

  • Claude Code Version: 2.1.14
  • OS: macOS (Darwin 25.2.0)
  • Subscription: Active (verified on claude.ai/settings showing 4% session / 28% weekly usage)

Symptoms

  1. Claude Code operations fail with "Rate limit reached"
  2. Modal shows "Upgrade to Pro for Higher Limits" despite already having Pro/Max subscription
  3. ~/.claude.json contains:

``json
"hasAvailableSubscription": false,
"hasExtraUsageEnabled": false
``

  1. Meanwhile, claude.ai/settings correctly shows:
  • Active subscription with usage meters
  • Plenty of remaining quota (4% session, 28% weekly used)
  • "Extra usage" toggle available (indicating paid plan)

Steps to Reproduce

  1. Have an active Claude Pro/Max subscription
  2. Run claude logout && claude login to re-authenticate
  3. Check ~/.claude.json - hasAvailableSubscription is set to false
  4. Attempt to use Claude Code - hits false rate limit
  5. Check claude.ai/settings - subscription is active with plenty of usage remaining

Expected Behavior

After successful OAuth authentication with a paid subscription:

  • hasAvailableSubscription should be true
  • Claude Code should recognize the subscription tier
  • No false rate limit errors when usage is well below limits

Actual Behavior

  • hasAvailableSubscription is false
  • Claude Code thinks user is on free tier
  • Shows "Upgrade to Pro" despite being on Pro/Max
  • Operations fail with rate limit errors

Workaround

Manually fix the config:

python3 -c "import json; f=open('$HOME/.claude.json','r+'); d=json.load(f); d['hasAvailableSubscription']=True; f.seek(0); json.dump(d,f,indent=2); f.truncate(); print('Fixed')"

Related Issues

This appears related to #17966 where re-authentication causes hasExtraUsageEnabled to be stuck at false. The root cause seems to be that OAuth tokens generated during re-authentication are not properly linked to the paid subscription in the backend.

Screenshots

The rate limit modal shows "Upgrade to Pro for Higher Limits" while claude.ai/settings shows 72% weekly usage remaining and 96% session usage remaining.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗