Misleading "Claude API" banner when authenticating via CLAUDE_CODE_OAUTH_TOKEN from a Max subscription
When using a long-lived OAuth token generated via claude setup-token (token format sk-ant-oat01-...) and exported as CLAUDE_CODE_OAUTH_TOKEN, the Claude Code startup banner displays:
Sonnet 4.6 · Claude API
…even though the token is subscription-scoped (Max plan) per the authentication docs, and billing actually goes against the subscription, not Console API credits.
Why this matters: The "Claude API" label strongly implies API/Console billing, which is significantly more expensive than subscription quota. Users (myself included) reasonably conclude their SSH sessions are burning API credits and spend time debugging a non-issue. I went through regenerating the token, switching accounts, and inspecting /status before discovering via Anthropic docs that the label is purely cosmetic.
Steps to reproduce:
- On a GUI macOS session with an active Max subscription, run
claude setup-token - Export the token as
CLAUDE_CODE_OAUTH_TOKENin a non-GUI shell (e.g., over SSH) - Start
claude— banner reads "Claude API" instead of the subscription label shown in GUI sessions
Expected: Banner should reflect the actual billing source — e.g., "Claude Max" — when the credential is a subscription-scoped OAuth token.
Environment: Claude Code v2.1.114, macOS (Darwin 25.4.0), SSH session.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗