[BUG] Claude Pro subscription purchased via iOS App Store not recognized by Claude Code (subscriptionType: null)

Resolved 💬 9 comments Opened Mar 13, 2026 by yilongzhou5-collab Closed May 22, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Claude Code returns 403 "Request not allowed" for users who purchased Claude Pro via iOS App Store. The credentials.json shows "subscriptionType": null, meaning Claude Code cannot verify the subscription. This affects all users in regions where direct credit card payment is difficult and iOS App Store is the primary payment method (e.g. China).

What Should Happen?

Claude Code should recognize subscriptions purchased via iOS App Store, or provide clear documentation that App Store subscriptions are not supported and direct users to purchase via claude.ai instead.

Error Messages/Logs

API Error: 403 {"error":{"type":"forbidden","message":"Request not allowed"}}
credentials.json: {"claudeAiOauth":{"subscriptionType": null, "rateLimitTier": null}}

Steps to Reproduce

"Purchase Claude Pro via iOS App Store → Install Claude Code on Windows → Run /login → Select option 1 → 403 error appears"

Claude Model

None

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

2.1.74

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

Use a third-party Anthropic-compatible API (e.g. Kimi/Moonshot) with the following settings in ~/.claude/settings.json:

{
"env": {
"ANTHROPIC_BASE_URL": "https://api.moonshot.cn/anthropic",
"ANTHROPIC_AUTH_TOKEN": "your-kimi-api-key"
}
}

Note: Use ANTHROPIC_AUTH_TOKEN (not ANTHROPIC_API_KEY), and the base URL must end with /anthropic (not /v1).
Keep auth.json and .credentials.json as empty {}.
Do NOT log in to any Anthropic account when using this workaround.

View original on GitHub ↗

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