Claude Code一次只保持一個登入狀態,這是同時執行多個帳戶的方法
在同一臺機器上同時執行工作帳戶和個人帳戶的實戰指南:決定哪個登入狀態生效的那個環境變數、為什麼開到第三個終端後shell方案就不管用了,以及如何為每個專案固定一個帳戶。
大多數既拿Claude Code幹活、又用它做自己專案的人,都會遇到這樣一個瞬間。您結束一段工作會話,切到副業專案,然後發現代理還登入在僱主付費的那個帳戶上。於是您退出登入,用自己的帳戶重新登入,半小時之後又得反過來再來一遍。
這個迴圈並不是因為缺了什麼功能。它是Claude Code存放登入資訊的方式帶來的結果,而一旦您知道它存在哪裡,把多個帳戶並排跑起來就從一個工作流程問題變成了一個配置細節。
一個環境變數決定哪個帳戶處於活動狀態
Claude Code不會把憑據放在資料庫裡,也不會放進按配置檔案索引的鑰匙串條目裡。它需要的一切都從同一個目錄讀取:憑據、會話後設資料,以及按專案劃分的歷史記錄。
這個目錄就是CLAUDE_CONFIG_DIR所指向的位置。如果您從未設定過它,它就是~/.claude。

這就是全部機制,而它有一個很有用的特性:因為一個帳戶就是一個目錄,而不是一項全域性設定,所以擁有兩個帳戶就等於擁有兩個目錄。兩者之間不共享任何東西。它們都可以無限期保持登入狀態,而且誰也不知道對方的存在。
所以最樸素的做法是可行的:
# 個人
CLAUDE_CONFIG_DIR=~/.claude claude
# 工作
CLAUDE_CONFIG_DIR=~/.claude-work claude
在第二個目錄裡執行一次/login,您就在一臺機器上擁有了兩個處於活動狀態的帳戶。
shell方案從哪裡開始變得難受
如果您一次只開一個終端而且足夠自律,上面那兩行確實夠用。它會因為三個原因不再夠用,而且這三點會疊加。
這個變數是按程序生效的,不是按機器生效的。 每開一個新終端、每拆一個新窗格、每個編輯器內建的shell,都從您配置檔案裡的預設值開始。把它匯出到.zshrc裡,您只是把問題挪了個位置:現在輪到另一個帳戶成為您老是忘記的那個。
沒有任何東西告訴您當前用的是哪個帳戶。 Claude Code不會在提示符裡列印帳戶資訊。如果您開著兩個終端,其中一個用的是工作帳戶,它們看起來一模一樣。您察覺到的那一刻,通常就是您去查賬單的那一刻。
它扛不住並行。 真正有意思的用法是同時在多個專案上執行多個代理。一旦超過兩個併發會話,記住哪個窗格是用哪個變數啟動的就不再是自律問題,而是設計問題。

解決辦法不是再往shell裡堆配置,而是不要在啟動那一刻才做這個決定,轉而把帳戶附加到真正決定它的那個東西上:專案。
把帳戶附加到專案,而不是終端
您真正想要的通常是一條規則,而不是一條命令。類似這樣:這個客戶的儲存庫始終執行在這個客戶的帳戶上。這條規則一旦存在,就沒人需要再記什麼了。
要把它做對,就意味著按一個明確的順序來解析帳戶,因為規則需要例外。專案級的預設值在大多數時候是對的,但某個特定的代理可能需要跑在別處:一個用測試帳戶做的一次性實驗,或者一個跑在配額更大的席位上的評審代理。

從上往下讀,第一條匹配的規則生效。代理級覆蓋優先於專案固定。專案固定優先於您設定的通用預設值。如果哪裡都沒配置,就落到~/.claude,這正是全新安裝本來的行為。最後這層兜底很重要:它意味著把這套機制加到已有的配置裡,在您明確固定某個帳戶之前不會改變任何東西。
這就是AgentsRoom所實現的模型。每個帳戶都是一個受管理的目錄,登入在應用內完成而不是在shell裡進行,上面那套解析順序會在代理啟動時執行,並且只在該程序上設定CLAUDE_CONFIG_DIR。如果您已經在用CCS這類第三方切換工具,可以直接把一個帳戶指向已有的配置目錄,而不必重新登入一次。
同樣的問題在Codex上也存在,只是變數不同
如果您使用不止一個提供方,這個坑您會踩兩遍。形態完全一樣,變數卻不一樣,所以為其中一個做的切換工具並不能覆蓋另一個。Codex這一側我們單獨做了文件:Codex多帳戶,其中也說明了登入流程上有哪些差異。
有一點值得明確說一次:帳戶隔離是按提供方實現的機制。任何聲稱能全域性處理它的工具,要麼是在逐個提供方分別做包裝,要麼就是隻支援其中一個。
搞清楚到底是哪個帳戶在消耗令牌
分離帳戶只是人們這麼做的一半理由。另一半是搞清楚消耗落在了哪裡,尤其是在有客戶付費的時候。
這正是shell方案會悄悄出問題的地方。只檢視~/.claude的用量統計工具,一旦有代理跑在別的地方就會少報,而這些數字看起來又足夠合理,以至於好幾周都沒人察覺。一個真正區分帳戶的統計工具,必須遍歷每一個已配置的目錄,而不只是預設那一個。
如果您想要按帳戶和按會話的數字,我們在如何檢查Claude Code令牌使用情況裡講過測量這一側,實時檢視則在令牌使用情況頁面。
這不是用來幹什麼的
有一點需要澄清,因為這個問題總會被提出來,而它值得一個直接的回答,而不是沉默。
上面講的一切,都是關於把本來就合法存在的帳戶分開。僱主為您付費的席位和您自己付費的個人訂閱是兩種不同的商業關係,把它們放在同一臺機器上而互不汙染,是一個真實且普通的需求。把客戶消耗的令牌算到該客戶頭上也是,把實驗帳戶和生產帳戶隔開也是。
為了繞開您所在套餐的容量限制而額外建立帳戶,是另一回事,而這正是使用政策所針對的行為。這裡描述的機制並不會讓那種做法變得可以接受,一個把它自動化的工具,等於是在幫您違反您自己簽署過的協議。如果您的第二個帳戶之所以存在是因為有別人在為它付費,那您站得住腳;如果它存在只是為了重置速率限制,那就站不住腳。以Anthropic的使用政策為準,而不是這篇文章。
大家真正會問的問題
我可以在同一臺電腦上使用兩個Claude Code帳戶嗎?
可以。Claude Code從CLAUDE_CONFIG_DIR指向的目錄中讀取憑據、會話後設資料和專案歷史記錄,這個變數預設指向~/.claude。把它指向第二個目錄並在那裡登入,您就在同一臺機器上擁有了兩個彼此獨立的帳戶。兩個目錄之間不共享任何內容,所以兩個帳戶可以同時保持登入狀態。
如何在不退出登入的情況下切換Claude Code帳戶?
根本不需要退出登入。退出再重新登入用的是同一個目錄,為了拿到第二個會話就得丟掉第一個。正確的做法是給每個帳戶一個獨立的配置目錄,然後在啟動CLI時透過設定CLAUDE_CONFIG_DIR來選擇用哪一個。兩份憑據都繼續留在磁碟上並保持有效,切換不需要任何代價。
Claude Code把登入資訊存在哪裡?
存在CLAUDE_CONFIG_DIR指向的目錄裡,如果您沒有改過,就是~/.claude。憑據本身位於該目錄內的.credentials.json檔案中,旁邊是會話後設資料和按專案劃分的歷史記錄。這一個目錄就是帳戶的全部,正因如此,替換它是一次乾淨的切換,而不是取巧的做法。
兩個代理可以同時執行在兩個不同的Claude帳戶上嗎?
可以,只要每個代理程序在自己的環境中拿到各自的CLAUDE_CONFIG_DIR。這個變數是在程序啟動時按程序讀取的,而不是全域性生效,所以用兩個不同取值啟動的兩個代理會並行執行在兩個不同的帳戶上。這正是讓工作專案和個人專案能在同一個視窗裡共存的原因。
擁有不止一個Claude帳戶是否違反Anthropic的條款?
為不同用途持有各自獨立的帳戶是很平常的事:僱主為您付費的席位和您自己付費的個人訂閱,是兩種不同的商業關係。使用政策針對的是為了繞開您所在套餐的容量限制而去建立帳戶。如果您的第二個帳戶之所以存在是因為有別人在為它付費,那您站得住腳;如果它存在只是為了重置速率限制,那就站不住腳。以Anthropic的使用政策為準。
簡短版本
Claude Code把一個帳戶存成一個目錄,由CLAUDE_CONFIG_DIR決定哪一個處於活動狀態。兩個目錄就是兩個帳戶,可以長期保持登入,彼此之間不共享任何東西。
這件事的shell版本,在您只開著一個終端的時候是夠用的。再往後,您想要的是讓帳戶成為專案的一個屬性,併為例外情況提供按代理的覆蓋,這樣在代理啟動時就會附上正確的憑據,誰都不需要記住什麼。
下載 AgentsRoom
在一個視窗中執行你所有專案的 AI 代理(Claude、Codex、Antigravity CLI、OpenCode、Aider、Grok Build、Mistral Vibe、Kimi Code)。
配套應用:隨時隨地監控你的 Agent
使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。
把 Bug 和需求直接傳送到您的公開待辦清單。
AgentsRoom 實際執行一瞥。
繼續閱讀
Claude 現在會給輸出打水印,但你的程式碼幾乎不受影響
Anthropic 開始給 Claude 的輸出打水印。它到底標記了什麼、為什麼生成的程式碼基本逃得掉、誰才真的能檢測到,以及為什麼你的 SEO 一點都不用動。
閱讀全文一次 Claude Code 會話會觸發 30 個 hook 事件。只有 3 個能回話。
Claude Code hook 事件的完整清單:每個事件何時觸發、其中哪 15 個能阻斷,以及那條悄悄吞掉大部分 hook 輸出的 stdout 規則。一份在數千次代理會話的生產環境中跑出來的實戰參考。
閱讀全文給 AI 代理用的反饋看板:讓使用者來寫提示詞
反饋工具只負責收集需求,沒有一個能把需求做出來。當使用者寫入的那塊看板,正好就是編碼代理執行任務的那塊看板,重寫這一步就消失了。
閱讀全文