跳至主内容

如果你遇到的是 claude 命令启动后卡在等待状态、浏览器授权成功但终端没有反应、报 OAuth account information not found in config、或者 WSL2 里粘贴 token 后终端冻结,这篇文章适合你。

先给结论:Claude Code 登录问题大多属于这三类:

前置条件auth.anthropic.comapi.anthropic.comclaude.ai 均在国内无法直连,可用代理是使用 Claude Code 的前提。Claude Code 是 Node.js 进程,不会自动继承浏览器代理,必须单独设置代理环境变量或开启 TUN 模式。

不适合这篇文章的情况:

先按症状分流

现象更可能的原因先看哪里
claude 命令启动后无法连接,或 OAuth 流程报网络错误auth.anthropic.com 在国内无法直连,或代理未接管 Node.js网络层排查
浏览器打开授权页,完成后终端无反应,最终超时OAuth 回调没有回传给 CLI回调排查
OAuth account information not found in configtoken 保存失败,配置文件没有写入配置文件排查
WSL2 里粘贴授权码后终端冻结、stdin 不响应WSL2 stdin 不接受 OAuth code 输入WSL2 特殊处理
有 Pro/Max 订阅但仍然提示需要 API Key订阅类型识别错误,OAuth client ID 不匹配订阅识别排查

一、先排查网络层

1. 确认代理接管了 auth.anthropic.com 的流量

auth.anthropic.com 在国内无法直连,换 DNS 无法解决问题(8.8.8.8、1.1.1.1 等境外公共 DNS 同样不可用)。唯一解决方案是通过代理访问。

可以先测试代理是否真的覆盖了 Node.js 进程:

# 设置代理环境变量后,测试能否访问 Anthropic API
export HTTPS_PROXY=http://127.0.0.1:7890
curl -I https://api.anthropic.com/v1/messages
# 返回 401 Unauthorized = 网络通,问题在认证层
# 连接超时 = 代理没有接管这个请求

如果你的代理客户端支持 TUN 模式(Clash、sing-box 等),开启 TUN 后系统全流量走代理,是最省事的方案,不需要手动设置环境变量。

2. 确认代理接管了 Node.js 进程

Claude Code 是一个 Node.js CLI 工具,不会自动继承浏览器的代理设置。如果你依赖代理访问 anthropic.com,需要明确设置 Node.js 的代理环境变量:

# 设置 HTTP/HTTPS 代理(替换为你的代理地址)
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890

# 再启动 claude
claude

如果你用的是支持 TUN 模式的代理客户端(Clash、sing-box 等),开启 TUN 模式后系统全流量都走代理,不需要手动设置环境变量。

3. 测试 Anthropic API 是否可达

curl -I https://api.anthropic.com/v1/messages

如果返回 401 Unauthorized,说明网络是通的,问题在认证层面。如果超时或 connection refused,说明网络本身不通。

登录流程简要:claude 命令启动后,会自动打开系统浏览器进行 OAuth 授权;若浏览器未自动打开,在终端按 c 可复制授权 URL,手动粘贴到浏览器完成授权后,终端会自动收到回调。

CLI OAuth 授权流程示意

二、OAuth 回调断链的排查

1. 使用手动粘贴模式

如果浏览器完成授权后终端一直无反应,可以使用手动模式:

启动 claude 后,在终端里按 c(lowercase c),CLI 会打印出授权 URL。手动复制到浏览器,完成授权后,浏览器会返回一个 code,复制 code 粘贴回终端。

# 启动 claude,如果浏览器没有自动打开
# 按 c 复制 URL,手动在浏览器里打开
# 完成授权后复制 code,粘贴回终端

2. 确认端口没有被占用

Claude Code 的 OAuth 回调使用本地端口(通常是随机高端口)。如果该端口被占用,回调会失败。

# 查看占用情况(如果知道端口号)
lsof -i :PORT_NUMBER

# 直接重启 claude 重试(会选用新端口)

3. 确认默认浏览器能正常处理回调

和其他 AI 工具一样,建议临时把默认浏览器切为 Chrome 或 Firefox,再试一次。Arc、Brave 等浏览器有时会拦截 OAuth 回调的 URL scheme。

三、OAuth account information not found 的处理

这个错误(GitHub Issue #1484)的根本原因是:浏览器端授权成功了,但 token 没有被正确写入 Claude Code 的配置文件。

1. 检查配置文件是否存在

# 检查 Claude Code 配置目录
ls ~/.claude/

# 检查认证文件(文件名可能因版本不同而异)
cat ~/.claude/.credentials.json

如果配置目录不存在或认证文件是空的,说明写入失败。

2. 手动清理再重试

# 备份
cp -r ~/.claude ~/.claude.bak

# 清理认证状态
rm -f ~/.claude/.credentials.json

# 重新登录
claude auth login

3. 检查目录写权限

# 确认 ~/.claude 目录有写权限
ls -la ~/.claude/

# 如果权限有问题
chmod 700 ~/.claude

四、WSL2 下的特殊处理

Claude Code 终端使用演示

WSL2 里存在两个已知问题(GitHub Issue #20756、#44136):

  1. OAuth 回调的 localhost 端口在 WSL2 和 Windows 之间不互通
  2. 某些情况下,终端粘贴 OAuth code 后 stdin 冻结,无法继续

1. 用 API Key 替代 OAuth 登录

WSL2 下最稳定的方式是跳过 OAuth,直接用 API Key:

  1. 确认代理可用后,打开 console.anthropic.com(需代理访问),创建 API Key
  2. 在 WSL2 终端里设置环境变量:
export ANTHROPIC_API_KEY=sk-ant-xxxx

# 持久化到 shell 配置文件
echo 'export ANTHROPIC_API_KEY=sk-ant-xxxx' >> ~/.bashrc
source ~/.bashrc

# 直接启动 claude(会自动使用 API Key)
claude

注意:API Key 直接计费,没有 Claude.ai 订阅的免费额度,使用前确认你的 Console 账号已充值。

2. 如果坚持用 OAuth

按照 GitHub Issue #44136 的 workaround,在启动 claude 之前,先在单独的终端窗口里完成这一步:

# 在 Windows 宿主机的 PowerShell(不是 WSL2)里执行登录
# 把生成的 credentials 文件复制到 WSL2 的 ~/.claude/ 目录

具体步骤较复杂,建议优先考虑 API Key 方案。

3. 确认 WSL2 时钟同步

WSL2 的时钟漂移是 token 验证失败的常见原因:

sudo hwclock -s

五、订阅识别异常的排查

1. Claude.ai Max/Pro 订阅没有被识别

已知问题(GitHub Issue #39445):在 Windows 上,如果账号同时有 Claude.ai 订阅和 Console 组织,Claude Code 可能错误地用 Console 的 OAuth client 登录,导致订阅无法被识别,强制使用 API Key 模式。

确认方式:登录后执行 /status,查看当前认证类型是 “Claude.ai account” 还是 “API Key”。

如果识别错误:退出登录,重新执行 claude auth login,注意在浏览器授权页面时选择正确的账号(个人 Claude.ai 账号,而不是 Console 组织账号)。

2. 区分 OAuth 和 API Key 两种模式

方式适用场景额度
Claude.ai OAuth有 Claude.ai Pro 或 Max 订阅使用订阅包含的额度
API Key使用 Anthropic Console,直接计费按 token 计费,无免费额度

两种方式可以切换,但不要同时设置 ANTHROPIC_API_KEY 环境变量又走 OAuth 登录,这会导致状态混乱。

六、排查顺序别反

  1. 先确认代理可用,auth.anthropic.com 只能通过代理访问(换 DNS 无效)
  2. 确认代理接管了 Node.js 进程:设置 HTTPS_PROXY 环境变量,或开启 TUN 模式
  3. 浏览器回调失败时,试手动粘贴模式(按 c 复制 URL)
  4. OAuth account information not found 时,清理 ~/.claude/.credentials.json 重试
  5. WSL2 下优先考虑 API Key 方案,跳过 OAuth
  6. 最后排查订阅类型识别问题

如果你同时遇到其他 AI 工具的登录问题,可以参考主流 AI 开发工具登录问题排障索引,里面收录了 Cursor、Copilot、Windsurf、ChatGPT 等工具的通用定位思路。

参考来源

Previous
主流 AI 开发工具登录问题排障索引
Next
GitHub Copilot 登录失败怎么办?从 SAML SSO 到 device flow 超时的完整排查