【Claude】Not logged in · Please run /login 报错已解决
【Claude】Not logged in · Please run /login 报错已解决
关键词:Claude Code、Not logged in、/login、ANTHROPIC_API_KEY、认证优先级、apiKeyHelper、macOS Keychain、CI 自动化
一、问题现象
启动 Claude Code 或执行任何操作时,终端出现:
Not logged in · Please run /login
此时所有需要后台调用的功能都不可用,包括 /usage、状态行用量指示器等。Claude Code 完全停工。

二、根因:没有可用凭证
这个错误的含义极其直白:当前会话没有任何有效凭证。Claude Code 找遍了所有它知道的凭证来源,什么都没找到。
2.1 Claude Code 的凭证来源(按优先级从高到低)
理解认证优先级是排查这个问题的关键:
| 优先级 | 凭证来源 | 说明 |
|---|---|---|
| 1(最高) | ANTHROPIC_API_KEY 环境变量 |
直接导出到 shell |
| 2 | apiKeyHelper 脚本(settings.json 里配置的) |
动态获取 key 的脚本 |
| 3 | 云提供商凭证(Bedrock / Vertex AI) | AWS/GCP 环境变量 |
| 4 | /login 存储的 OAuth Token |
存在系统 Keychain 或 ~/.claude/ |
| 5(最低) | 配置文件里的 authToken | settings.json 里的 authToken |
常见的误判:你以为已经 /login 了,但 ANTHROPIC_API_KEY 环境变量里设了一个空值或无效值,导致 CLI 拿到的是一个"有但无效"的 key,或者某些情况下什么都没拿到。
2.2 常见触发场景
- 全新安装,从未登录——最常见,直接
/login解决; - CI/自动化环境,没有任何凭证注入到运行环境;
- 后台/子进程,子进程的环境变量没有从父进程正确继承;
- macOS Keychain 故障,存储的 OAuth Token 无法被读取;
- 系统时钟偏差,Token 刷新因时钟不准而失败(表现和未登录一样);
- 国内用户接第三方 API,环境变量配置的
ANTHROPIC_AUTH_TOKEN+ANTHROPIC_BASE_URL写错了。
三、解决方案
方案一:运行 /login(最推荐,交互式)
/login
按照提示选择认证方式:
- Claude 订阅(Pro/Max/Team/Enterprise):会打开浏览器完成 OAuth;
- Console API Key:会提示你粘贴 key。
登录完成后,凭证存储在系统 Keychain 或 ~/.claude/ 下,下次启动自动读取。
方案二:设置 ANTHROPIC_API_KEY 环境变量
如果你用 Console API key 认证(或者 /login 无法正常使用),在启动 Claude Code 的 shell 里设置:
export ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxx
注意:设置完要确认 key 真的被 export 了:
echo $ANTHROPIC_API_KEY
临时生效的写法只影响当前 shell 会话。要永久生效,写进 ~/.zshrc 或 ~/.bashrc(注意安全,不要把 key 提交到 git)。
方案三:CI / 自动化 —— 配置 apiKeyHelper
CI 环境无法交互式登录,推荐用 apiKeyHelper 脚本:在 ~/.claude/settings.json 里配置一个脚本路径,Claude Code 启动时会执行这个脚本并把 stdout 的第一行当作 API key 使用:
{
"apiKeyHelper": "/path/to/your/get-key-script.sh"
}
脚本示例(从环境变量或 Secret Manager 里取):
#!/bin/bash
# 从环境变量读取(由 CI 注入)
echo "$MY_CLAUDE_API_KEY"
直接运行脚本验证它能打印有效 key:
/path/to/your/get-key-script.sh
方案四:排查国内第三方 API 接入(常见于通过代理访问)
国内用户通过第三方中转接入时,通常需要同时设置:
export ANTHROPIC_AUTH_TOKEN="sk-你的API密钥"
export ANTHROPIC_BASE_URL="https://api.xxx.com/anthropic"
注意是 ANTHROPIC_AUTH_TOKEN(不是 ANTHROPIC_API_KEY),以及对应提供商的 BASE_URL。检查这两个变量是否都正确设置:
env | grep ANTHROPIC
方案五:macOS Keychain 问题修复
如果你之前能正常登录,但某次后开始反复提示未登录,可能是 Keychain 里的 Token 损坏了:
- 运行
/logout清除存储的 Token; - 再运行
/login重新认证。
如果依然失败:
- 检查系统时钟是否准确(
date命令)——时钟偏差超过几分钟会导致 Token 刷新一直失败; - 在 macOS 钥匙串访问(Keychain Access)里搜索 "claude",手动删除残留条目,再
/login。
方案六:后台/子进程场景
在 Agent SDK 或后台工作进程里遇到这个错误,先确认:
- 工作进程的启动环境(而不是你的交互式 shell)里是否设置了凭证;
- 不同进程之间的环境变量是否正确继承;
- 如果用
CLAUDE_CODE_OAUTH_TOKEN,确认这个变量在子进程中也存在。
四、认证优先级的实际影响
一个常见的"鬼故事"场景:
你用
/login登录了订阅账户,然后在某个项目的.env文件里有ANTHROPIC_API_KEY=sk-ant-xxx(一个已过期或被撤销的 key),而你的 shell 工具(比如 direnv)自动加载了这个.env文件。结果ANTHROPIC_API_KEY覆盖了你的订阅凭证,且这个 key 无效,出现各种认证错误。
运行 env | grep ANTHROPIC 是排查这类问题的标准第一步。如果看到了不该有的 key,unset ANTHROPIC_API_KEY 清掉它,再验证 /status。
五、总结
Not logged in · Please run /login 意味着 Claude Code 没有找到任何有效凭证。按优先级排查:
- 直接
/login——交互式首选; - 检查
env | grep ANTHROPIC——排查环境变量污染; - CI 用
apiKeyHelper——自动化场景标准方案; - macOS Keychain 异常——
/logout+/login重置; - 时钟偏差——校准系统时间。
参考:Claude Code 官方《错误参考》"身份验证"章节、官方认证优先级文档、社区 Token 过期排查记录。
更多推荐





所有评论(0)