Claude Code一次只保持一个登录状态,这是同时运行多个账户的方法

在同一台机器上同时运行工作账户和个人账户的实战指南:决定哪个登录状态生效的那个环境变量、为什么开到第三个终端后shell方案就不管用了,以及如何为每个项目固定一个账户。

大多数既拿Claude Code干活、又用它做自己项目的人,都会遇到这样一个瞬间。您结束一段工作会话,切到副业项目,然后发现代理还登录在雇主付费的那个账户上。于是您退出登录,用自己的账户重新登录,半小时之后又得反过来再来一遍。

这个循环并不是因为缺了什么功能。它是Claude Code存放登录信息的方式带来的结果,而一旦您知道它存在哪里,把多个账户并排跑起来就从一个工作流问题变成了一个配置细节。

一个环境变量决定哪个账户处于活动状态

Claude Code没有配置档案。它把一切都绑定在同一个目录上:会话元数据、按项目划分的历史记录,以及登录信息。在Linux和Windows上,登录信息是该目录里的一个.credentials.json文件;在macOS上,它是一个钥匙串条目,名称由该目录的路径派生而来,所以决定您用哪个账户的仍然是这个目录。

这个目录就是CLAUDE_CONFIG_DIR所指向的位置。如果您从未设置过它,它就是~/.claude。

Claude Code解析账户的示意图:CLAUDE_CONFIG_DIR环境变量指向一个目录,该目录中包含credentials.json、会话元数据和项目历史记录,当这个变量未设置时默认回退到~/.claude。

这就是全部机制,而它有一个很有用的特性:因为一个账户就是一个目录,而不是一项全局设置,所以拥有两个账户就等于拥有两个目录。两者之间不共享任何东西。它们都可以无限期保持登录状态,而且谁也不知道对方的存在。

所以最朴素的做法是可行的:

# 个人
CLAUDE_CONFIG_DIR=~/.claude claude

# 工作
CLAUDE_CONFIG_DIR=~/.claude-work claude

在第二个目录里运行一次/login,您就在一台机器上拥有了两个处于活动状态的账户。

shell方案从哪里开始变得难受

如果您一次只开一个终端而且足够自律,上面那两行确实够用。它会因为三个原因不再够用,而且这三点会叠加。

这个变量是按进程生效的,不是按机器生效的。 每开一个新终端、每拆一个新窗格、每个编辑器内置的shell,都从您配置文件里的默认值开始。把它导出到.zshrc里,您只是把问题挪了个位置:现在轮到另一个账户成为您老是忘记的那个。

屏幕上没有任何东西告诉您当前用的是哪个账户。 Claude Code不会在提示符里打印账户信息。您可以用claude auth status --text来查询(它会打印当前shell所指向目录的登录方式、组织和邮箱),但没有人会在每次发送提示词之前都运行一遍。如果您开着两个终端,其中一个用的是工作账户,它们看起来一模一样。您察觉到的那一刻,通常就是您去查账单的那一刻。

它扛不住并行。 真正有意思的用法是同时在多个项目上运行多个代理。一旦超过两个并发会话,记住哪个窗格是用哪个变量启动的就不再是自律问题,而是设计问题。

对比示意图:左侧是在每个终端里导出CLAUDE_CONFIG_DIR来选择Claude Code账户,第三个终端没有任何可见的提示表明当前处于哪个账户;右侧是把账户附加到项目上并支持按代理覆盖,在代理启动时自动解析。

解决办法不是再往shell里堆配置,而是不要在启动那一刻才做这个决定,转而把账户附加到真正决定它的那个东西上:项目。

把账户附加到项目,而不是终端

您真正想要的通常是一条规则,而不是一条命令。类似这样:这个客户的仓库始终运行在这个客户的账户上。这条规则一旦存在,就没人需要再记什么了。

要把它做对,就意味着按一个明确的顺序来解析账户,因为规则需要例外。项目级的默认值在大多数时候是对的,但某个特定的代理可能需要跑在别处:一个用测试账户做的一次性实验,或者一个跑在配额更大的席位上的评审代理。

四级账户解析顺序的示意图:代理级覆盖优先于项目固定,项目固定优先于应用默认值,应用默认值再回退到系统默认目录~/.claude。

从上往下读,第一条匹配的规则生效。代理级覆盖优先于项目固定。项目固定优先于您设置的通用默认值。如果哪里都没配置,就落到~/.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。在Linux和Windows上,凭据位于该目录内的.credentials.json文件中,旁边是会话元数据和按项目划分的历史记录。在macOS上,凭据则存进登录钥匙串,放在一个以该目录命名的条目里:~/.claude对应Claude Code-credentials,其他任何目录对应Claude Code-credentials-后面跟八个十六进制字符。无论哪种情况,一个目录就对应一个账户,正因如此,替换它是一次干净的切换,而不是取巧的做法。

两个代理可以同时运行在两个不同的Claude账户上吗?

可以,只要每个代理进程在自己的环境中拿到各自的CLAUDE_CONFIG_DIR。这个变量是在进程启动时按进程读取的,而不是全局生效,所以用两个不同取值启动的两个代理会并行运行在两个不同的账户上。这正是让工作项目和个人项目能在同一个窗口里共存的原因。

如何查看Claude Code登录的是哪个账户?

在终端里运行claude auth status --text。它会针对当前shell中CLAUDE_CONFIG_DIR指向的目录,打印登录方式、组织和账户邮箱(已在Claude Code 2.1.299上验证;不加--text时,同样的信息会以JSON格式输出,另外还包括套餐和配置目录)。要查看第二个账户,在命令前加上前缀:CLAUDE_CONFIG_DIR=~/.claude-work claude auth status --text。如果它回答Not logged in,说明还没有人在这个目录上登录,或者该账户已在这里退出登录。

拥有不止一个Claude账户是否违反Anthropic的条款?

为不同用途持有各自独立的账户是很平常的事:雇主为您付费的席位和您自己付费的个人订阅,是两种不同的商业关系。使用政策针对的是为了绕开您所在套餐的容量限制而去创建账户。如果您的第二个账户之所以存在是因为有别人在为它付费,那您站得住脚;如果它存在只是为了重置速率限制,那就站不住脚。以Anthropic的使用政策为准。

简短版本

Claude Code把一个账户存成一个目录,由CLAUDE_CONFIG_DIR决定哪一个处于活动状态。两个目录就是两个账户,可以长期保持登录,彼此之间不共享任何东西。

这件事的shell版本,在您只开着一个终端的时候是够用的。再往后,您想要的是让账户成为项目的一个属性,并为例外情况提供按代理的覆盖,这样在代理启动时就会附上正确的凭据,谁都不需要记住什么。

DevOps 工程师撰稿人前端开发者销售代表后端开发者教练与培训师软件架构师法律顾问QA 工程师财务与行政全栈开发者创意设计师移动开发者研究员安全工程师人事与招聘
项目经理翻译Git 专家数据分析师SEO 专家会计本地化专员公关与传播头脑风暴者运营与物流营销专员客户服务项目助理采购专员社群运营私人助理

下载 AgentsRoom

在一个窗口中运行你所有项目的所有 AI 代理。

下载 AgentsRoom免费

配套应用:随时随地监控你的 Agent

使用 Claude、Codex、Antigravity CLI 或其他 AI 提供商。

获取扩展程序
Chrome Web Store

把 Bug 和需求直接发送到您的公开待办清单。

像读聊天记录一样读代理

每个代理都有角色、头像和一条对话线程,读起来就像聊天应用。

对话视图

AgentsRoom 对话视图:AI 编程代理的工作以聊天线程呈现
多项目管理
多供应商
多代理运行
实时状态
文件差异与提交
移动应用
实时预览
代理团队
浏览器自动化
Backlog 驱动开发
提示词库
技能库
查看所有功能

继续阅读