如果你同時有好幾個 Claude Code 或 Codex 帳號,麻煩的其實不是登入。麻煩的是:現在到底用哪個帳號?還剩多少用量?我剛剛切帳號,這個 terminal 真的有吃到嗎?
我現在不會每次都 logout / login。我會把「帳號資料」跟「工作環境」分開處理。Claude Code 這邊我用 claude-swap,Codex 這邊我用 codex-auth;兩邊都讓工具處理背景輪換,但任務 checkpoint 跟 client 重啟還是保留。
底層邏輯:帳號狀態跟工作環境要拆開
多帳號管理要先拆層次。別急著想第二個帳號怎麼登入,先看這三件事。
我會把它拆成三個東西:每個帳號自己的登入狀態、現在工具指到哪個帳號、正在跑的 client。前兩個是設定檔跟 auth 的問題,通常會碰到 token、refresh token、credential store 或 tool 自己的設定檔,所以我不手動複製貼上,也不把它放進 .bashrc、專案 repo 或任何會被同步的 dotfiles。第三個才是日常最常踩到的坑:你切完帳號,已經開著的 Claude Code、Codex CLI、VS Code extension 或桌面 app,不一定會立刻吃到新狀態。
所以我現在的做法很簡單:帳號資料交給專門工具保存,切換規則交給工具跑。任務跑到一半,我不硬切帳號。真的要換帳號時,先把工作 checkpoint 留好,再確認狀態跟重開 client。
Claude Code:我用 cswap 讓切換變成背景工作
Claude Code 這邊我用的是第三方工具 claude-swap。裝好之後,我平常會用 cswap;完整指令也可以跑 claude-swap。帳號資料則放在 ~/.local/share/claude-swap/ 底下。
我的機器上目前是兩個 Claude 帳號輪換,sequence.json 裡會記錄帳號順序跟目前 active account。每個帳號會有自己的 Claude 設定快照跟加密 credential,不需要我手動去改 ~/.claude.json。
我常用的指令大概是這幾個:
cswap --add-account
cswap --list
cswap --status
cswap --switch
cswap --switch-to 2
cswap --tui
第一次加入帳號時,不要把 token 貼給 cswap。先用 Claude Code 本身登入那個帳號,再執行:
cswap --add-account
這樣它才會把目前登入狀態收進自己的管理清單。要加入第二個帳號時,就先用 Claude Code 登出或 /login 換到另一個帳號,再跑一次 cswap --add-account。
我喜歡這個做法,因為它把「新增帳號」跟「切換帳號」分開了。新增帳號需要人工確認登入,切換帳號則可以變成日常指令,不用每次都重新做瀏覽器授權。
我的本機還有一個 systemd service 讓它常駐監看:
[Service]
ExecStart=/root/.local/bin/cswap auto
Restart=always
RestartSec=15
這個 service 不負責登入,它只在用量接近門檻時幫我輪換帳號。對我來說,Claude Code 是最早適合接成自動切換的一邊,因為 claude-swap 已經把帳號清單、順序、狀態檢查跟 auto mode 都整理成一套工具。
不過我還是會保留一個習慣:長任務開始前先看狀態。
cswap --status
cswap --list
這比跑到一半才發現目前帳號快滿了更穩。尤其是需要連續寫 code、跑測試、修 bug 的時候,我會希望一開始就知道目前用的是哪個帳號。
Codex:我用 codex-auth 讓帳號也能自動輪換
Codex 這邊我用的是另一個第三方工具 codex-auth。它的定位很直接:管理多個 Codex 帳號、切換目前 active account,並在 auto-switch 開啟後依用量門檻自動輪換。
我的本機上,Codex 自己的設定仍然放在 ~/.codex/config.toml,像預設 model、reasoning effort、trusted projects 這些都在這裡。多帳號的部分則交給 ~/.codex/accounts/:
~/.codex/auth.json
~/.codex/accounts/registry.json
~/.codex/accounts/*.auth.json
auth.json 是 Codex 目前會讀的登入狀態;accounts/*.auth.json 是每個帳號的 auth snapshot;registry.json 則記錄目前 active account、帳號清單、用量資訊跟 auto-switch 設定。
我這台機器上目前是三個 Codex 帳號,codex-auth 的 auto-switch 已經打開,門檻維持 5 小時剩餘低於 10%、weekly 剩餘低於 5% 時輪換。也就是說,Codex 現在跟 Claude 一樣會有背景程序處理帳號切換,只是我仍然把「切完要重啟 client」當成使用邊界。
我會特別保留這個邊界,是因為 Codex 的 client 類型比較多,CLI、App、VS Code extension 都可能讀同一份登入狀態。codex-auth 文件也提醒,切換帳號後,如果你用的是 Codex CLI 或 Codex App,要重啟 client 才會讓新帳號生效。
第一次接成自動輪換時,我會先打開 auto-switch;日常使用則是看 status 跟 list,必要時才手動指定帳號。
codex-auth config auto enable
codex-auth status
codex-auth list
codex-auth switch
codex-auth switch work
auto-switch 打開後,背景 watcher 會處理 active account 的輪換。不過切換發生後,我還是會把正在使用的 Codex client 關掉重開,讓新的登入狀態乾淨生效。
如果要新增帳號,可以用:
codex-auth login
codex-auth login --device-auth
如果 registry 跟實際 auth 檔不同步,codex-auth 也提供重建方式:
codex-auth import --purge
import --purge 這類修復指令我不會拿來當日常操作。平常最重要的是知道 auto-switch 有沒有在跑、目前 active account 是哪個,還有切換後要重啟 client。
另外,codex-auth 有 usage API 跟 local-only 兩種用量刷新模式。API mode 會用 access token 去查用量,資訊比較即時;local-only 比較保守,但可能因為本地 rollout 檔不完整而延遲。我這台機器目前維持 usage/account API 開啟,再搭配 auto-switch,讓它用比較即時的用量資訊判斷什麼時候輪換。
我的日常流程:先看狀態,再開新的工作
多帳號管理要解決的是開工前的判斷:不要在快滿的帳號上開長任務,也不要切錯身分才發現已經跑了一半。
我現在比較固定的流程是這樣:
cswap --status
cswap --list
codex-auth status
codex-auth list
如果我要開一個長時間 Claude Code 任務,我會先確認 cswap 目前帳號狀態。因為 Claude 這邊有 auto service,所以我比較放心讓它在背景處理接近門檻時的輪換。
如果我要開 Codex,我會先用 codex-auth status 看 auto-switch 跟 service 狀態,再用 codex-auth list 確認 active account。auto-switch 會處理接近門檻時的輪換;如果我自己手動切帳號,切完還是重開 Codex client,讓新的登入狀態乾淨生效。
我不太建議在一個已經跑很久、上下文很多的任務中途切帳號。這種時候我會先讓 agent 留下進度摘要、commit 或 issue comment,再開新的 session 接著做。帳號切換應該發生在任務邊界,不要發生在思路跑到一半的地方。
這也是我把 Claude 跟 Codex 分開管理的原因。Claude 這邊交給 cswap auto,Codex 這邊交給 codex-auth 的 auto-switch。兩邊都能自動輪換,但我還是會把任務邊界跟 client 重啟當成最後一道保險。
不要讓多帳號變成安全負債
多帳號管理最容易踩雷的地方,是把方便性建立在一堆散落的 token 上。
我會避免幾件事:
- 不把 token、access token、refresh token 寫進 shell rc 檔。
- 不把
auth.json、.auth.json、credential backup 放進 git repo。 - 不把帳號檔案同步到不確定權限的雲端資料夾。
- 不在文章、筆記或 issue comment 裡貼真實 token。
- 不用「複製整個 home directory」當成備份策略。
比較穩的做法是讓工具自己管理 credential,自己只記錄「流程」跟「路徑」。例如我可以記得 Claude 是 cswap --status 跟 cswap --switch,Codex 是 codex-auth status、codex-auth list 跟 codex-auth switch,但不需要把任何 credential 內容寫到筆記裡。
最小可行版本:先手動穩定,再打開自動化
如果你也想管理多個 Claude Code 或 Codex 帳號,我會建議從最小版本開始:先確定手動切換穩定,再把自動輪換打開。
Claude Code 可以先這樣做:
cswap --add-account
cswap --list
cswap --switch
cswap --status
確認兩個帳號都能手動切換後,再考慮:
cswap auto
或是像我一樣把它放進 systemd service,讓它常駐跑。
Codex 可以先這樣做:
codex-auth login
codex-auth list
codex-auth switch
codex-auth config auto enable
codex-auth status
先確定每個帳號可以被保存跟切換,再打開用量 API 跟 auto-switch。我的做法是:Codex 也進入自動輪換,但切換流程、重啟 client、任務 checkpoint 仍然要保留,這樣出事時比較好收。
多帳號管理的目的不是把帳號切得多快,而是每次開工前都知道三件事:現在用哪個帳號、它適不適合這個任務、用量到了要怎麼收尾。這三件事回答得出來,多帳號才會變成資源,不會變成新的混亂。