v0.3.0
The fix
Every subscription billed the account from the last /login, regardless of which token you launched with — because Claude Code pins the account/org cached in ~/.claude.json's oauthAccount onto every request, so injecting CLAUDE_CODE_OAUTH_TOKEN alone still resolved to the logged-in plan.
Each claude-<suffix> now launches with its own CLAUDE_CONFIG_DIR that strips only oauthAccount and symlinks everything else, so the right plan is billed while settings, plugins, memory, and history stay shared. Isolation uses jq when present, otherwise the built-in macOS plutil (or python3) — no extra dependency.
Also
claude-accounts doctor— flags missing/duplicate tokens and when two accounts resolve to the same subscription.- The status line shows the pinned account for the whole session.
- Sessions are no longer named after the account by default, so the resume picker shows Claude's descriptive titles (
CLAUDE_SUBSCRIPTION_NAME_SESSIONS=1restores naming). - Near-limit launch note; hermetic test suite.
Upgrade
curl -fsSL https://raw.githubusercontent.com/leegunwoo98/claude-code-account-switcher/v0.3.0/install.zsh | zshIf a token was generated under the wrong claude.ai account, run claude-accounts → select the profile → Refresh token (with the intended account signed in on claude.ai). Verify with claude-accounts doctor.