Misleading "Claude API" banner when authenticating via CLAUDE_CODE_OAUTH_TOKEN from a Max subscription

Resolved 💬 3 comments Opened Apr 19, 2026 by nmccready Closed Apr 23, 2026

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:

  1. On a GUI macOS session with an active Max subscription, run claude setup-token
  2. Export the token as CLAUDE_CODE_OAUTH_TOKEN in a non-GUI shell (e.g., over SSH)
  3. 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.

View original on GitHub ↗

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