SDK accountInfo() returns misleading subscriptionType 'Claude API' for subscription users

Resolved 💬 3 comments Opened Jan 31, 2026 by jeffknechtel Closed Feb 4, 2026

Description

When using the Claude Agent SDK's accountInfo() method, users who are authenticated via claude login (subscription users on Pro/Max) receive subscriptionType: "Claude API" instead of a value that reflects their actual subscription tier.

Steps to Reproduce

  1. Log in via claude login with a Claude Pro or Max subscription
  2. Use the Claude Agent SDK to call query.accountInfo()
  3. Observe the returned subscriptionType value

Actual Behavior

{
  "email": "user@example.com",
  "organization": "user@example.com's Organization",
  "subscriptionType": "Claude API"
}

Expected Behavior

The subscriptionType should reflect the user's actual subscription tier, e.g.:

  • "Pro" for Claude Pro subscribers
  • "Max" for Claude Max subscribers
  • "Free" for free tier users

Or at minimum, something that distinguishes subscription users from API key users.

Additional Context

  • The apiKeySource field in the SDK's init message also returns "none" for subscription users, which is similarly unhelpful
  • The presence of email in the account info is currently the only reliable way to distinguish subscription users from API key users
  • This causes confusion for users who see "API" and worry they're being billed separately from their subscription

Workaround

Currently detecting subscription users by checking if email is present in the account info response, since API key users don't have email/organization fields returned.

Environment

  • Claude Agent SDK version: 0.2.22
  • Authentication: claude login (OAuth)
  • Subscription: Claude Max/Pro

View original on GitHub ↗

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