跳至主要內容
EMil Wu
EN

Claude Code 多帳號並行指南

你有兩個 Claude 帳號,Token 額度不同,想同時跑、互不干擾。 本文整理三種做法,由簡到繁。


背景知識:Claude Code 的認證優先順序

Claude Code 啟動時按以下順序決定身份(高→低):

1. ANTHROPIC_API_KEY(環境變數)
2. apiKeyHelper(settings.json 裡的腳本)
3. OAuth 登入(claude login 存的 token)

重點:ANTHROPIC_API_KEY 一旦設定,會覆蓋 OAuth 登入。

另一個關鍵環境變數:

  • CLAUDE_CONFIG_DIR — 指定 config 和 credentials 的儲存位置,預設 ~/.claude/

方法一:同一台機器,某些目錄用 OAuth、某些用 API Key

適用情境: 主力帳號用 Pro/Max 訂閱(OAuth),特定專案用另一個帳號的 API Key。

設定

在想用 API Key 的專案根目錄建立 .claude/settings.json(project-level settings):

{
  "env": {
    "ANTHROPIC_API_KEY": "sk-ant-你的第二帳號key"
  }
}

或者不想把 key 寫進檔案,用 direnv(.envrc):

# 專案根目錄/.envrc
export ANTHROPIC_API_KEY="sk-ant-你的第二帳號key"
direnv allow

效果

~/project-a/  → 沒有設 ANTHROPIC_API_KEY → 走 OAuth(帳號 A)
~/project-b/  → .envrc 設了 ANTHROPIC_API_KEY → 走 API Key(帳號 B)

兩個 terminal 各開一個目錄,互不干擾。

注意

  • API Key 優先度高於 OAuth,所以只要環境變數存在就一定走 API Key
  • 離開該目錄後(direnv 會自動 unset),恢復 OAuth
  • 如果用 .claude/settings.json 方式,記得把它加進 .gitignore

方法二:不同目錄用不同 API Key(兩個都是 API Key 帳號)

適用情境: 兩個帳號都有 Console API Key,想按專案分配額度。

設定

每個專案各自設 .envrc

# ~/work-project/.envrc
export ANTHROPIC_API_KEY="sk-ant-帳號A的key"

# ~/side-project/.envrc
export ANTHROPIC_API_KEY="sk-ant-帳號B的key"
cd ~/work-project && direnv allow
cd ~/side-project && direnv allow

或者用 shell alias

# ~/.zshrc
alias claude-work='ANTHROPIC_API_KEY="sk-ant-帳號A的key" claude'
alias claude-side='ANTHROPIC_API_KEY="sk-ant-帳號B的key" claude'

效果

# Terminal 1
cd ~/work-project
claude          # → 帳號 A 的 API Key

# Terminal 2
cd ~/side-project
claude          # → 帳號 B 的 API Key

驗證

進入 Claude Code 後打 /status,確認使用的是哪個身份。


方法三:用 CLAUDE_CONFIG_DIR 隔離兩個 OAuth 訂閱帳號

適用情境: 兩個帳號都是 Pro/Max 訂閱,沒有 API Key,需要各自 OAuth 登入。

原理

Claude Code 的 credentials 存在 CLAUDE_CONFIG_DIR(預設 ~/.claude/)。 指向不同目錄 = 完全獨立的登入狀態。

初次設定(只需做一次)

# Terminal 1 — 帳號 A
export CLAUDE_CONFIG_DIR="$HOME/.claude-account-a"
claude
# 目錄是空的 → 自動進入登入流程 → 用帳號 A 的 email 登入
# credentials 存進 ~/.claude-account-a/
# Terminal 2 — 帳號 B
export CLAUDE_CONFIG_DIR="$HOME/.claude-account-b"
claude
# 同理 → 用帳號 B 的 email 登入
# credentials 存進 ~/.claude-account-b/

日常使用

# ~/.zshrc
alias claude-a='CLAUDE_CONFIG_DIR="$HOME/.claude-account-a" claude'
alias claude-b='CLAUDE_CONFIG_DIR="$HOME/.claude-account-b" claude'

之後直接:

claude-a    # 帳號 A 的 OAuth token
claude-b    # 帳號 B 的 OAuth token

不需要登出、不需要切換,兩個 terminal 同時跑完全獨立。

注意

  • ~/.claude/(原本的預設目錄)不受影響,等於你有三個獨立的登入
  • 每個 CLAUDE_CONFIG_DIR 有自己的 settings、memory、session history
  • 如果某個帳號的 OAuth token 過期,只有那個目錄需要重新 claude login

總結對照表

情境方法關鍵設定
主力 OAuth + 特定專案 API Key方法一專案層級設 ANTHROPIC_API_KEY
兩個 API Key 帳號按專案分方法二direnv 或 alias 設不同 key
兩個 OAuth 訂閱帳號並行方法三CLAUDE_CONFIG_DIR 指向不同目錄

三種方法可以混用。例如帳號 A 用方法三的 OAuth,帳號 B 在某些專案用方法一的 API Key 覆蓋。


附錄:相關環境變數速查

變數用途
ANTHROPIC_API_KEYAPI Key,設了就覆蓋 OAuth
ANTHROPIC_AUTH_TOKENBearer token(用於 proxy)
ANTHROPIC_BASE_URL自訂 API endpoint
CLAUDE_CONFIG_DIRConfig/credentials 儲存位置

支持這個系列

如果這系列文章對你有幫助,考慮請我喝杯咖啡