Claude Code 报 401 怎么查?

0 阅读3分钟

Claude Code 接入第三方 API 后,终端能启动,发第一条消息却报 401。先查请求发到了哪里、带了哪个服务的凭据,再查启动时有没有读到刚改的配置。

下面以 macOS 的 Zsh 为例,演示从旧网关切换到新网关后,怎样逐项排查。命令可在本机运行,报错场景为演示。

收到 401,按这三个方向检查

图:排查顺序示意;具体错误原因仍需结合实际环境判断。

1. 地址和密钥是否属于同一个服务?

先从服务商的接入说明核对两项:Base URL 和鉴权变量。两项要配套。以 我近期在用某家的 Claude Code 手动配置为例,Base URL 是 https://api.pingcode.ai,密钥通过 ANTHROPIC_AUTH_TOKEN 传入,旧的 ANTHROPIC_API_KEY 需要取消设置。切换时如果只换了地址,旧服务的密钥仍可能被带上。

在启动 Claude 的同一终端里,可以先做一项不输出密钥的检查(Zsh 或 Bash):

if [ "${ANTHROPIC_BASE_URL:-}" = "https://api.pingcode.ai" ]; then
  printf '%s\n' 'Base URL 与文档一致'
else
  printf '%s\n' 'Base URL 未设置或与文档不一致'
fi
if [ -n "${ANTHROPIC_AUTH_TOKEN:-}" ]; then
  printf '%s\n' 'AUTH_TOKEN 已设置(未显示值)'
else
  printf '%s\n' 'AUTH_TOKEN 未设置'
fi
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
  printf '%s\n' 'API_KEY 已设置,请检查是否与当前方案冲突'
else
  printf '%s\n' 'API_KEY 未设置'
fi

这只检查当前 shell 中变量的值和是否为空;若变量未导出,Claude 进程可能无法继承。按文档使用 export,并在启动 Claude 的同一终端检查。它不能证明密钥有效,也不能排除 Claude Code 设置文件或其他来源影响实际配置。

2. 你改的是实际生效的那份配置吗?

如果曾用一键配置、切换工具或其他供应商,检查 ~/.claude/settings.json 和当前 shell 的启动文件是否保留旧值。项目配置或组织管理配置也可能影响结果。Claude Code 的 /status 可帮助查看加载的设置来源;具体优先关系依配置项而定,参见 Claude Code 设置说明。不要直接删除整份配置,先备份并只处理确认有冲突的项目。

3. 改完后,用同一个环境重试

退出 Claude、重新打开终端,在原来的项目目录运行 claude。发送一个最小请求:

请只回复“连接成功”,不要读取或修改文件,也不要运行命令。

如果仍出现认证错误,记录系统、Claude Code 版本、报错类型和已经检查过的配置位置,再联系服务支持;提交信息前移除密钥和敏感内容。403、模型不可用或网络错误可能有不同原因,不要一律当成 401 处理。

复测后核对调用记录

如果已经收到回复,在网关的使用日志中核对请求时间、所用密钥和模型。三项都能对上,才有依据确认这次请求走了预期渠道。若暂时查不到对应记录,先确认日志的时间范围,再检查启动终端和 Claude Code 的设置来源。

常见问题(FAQ)

换了新密钥还是报 401,接下来查什么?

先对照服务商说明检查 Base URL 和鉴权变量,再查密钥是否仍有效、是否有访问限制。如果有多个终端窗口,从刚做过检查的那个窗口重新启动 Claude Code。

401 和 403 都该重新生成密钥吗?

先看报错原文。401 通常优先查认证;遇到 403 时,还要检查当前凭据是否有权访问指定资源。网关可能有自己的错误定义。 Claude API 错误说明