博客

ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 的区别,settings.json 和环境变量谁优先

Claude Code 有两个变量都能填 API Key:ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN。它们发出去的请求头不一样,服务商认哪一个就设哪一个。以下在 Claude Code 2.1.312 上实测(2026 年 10 月 30 日)。

RoamAI 团队发布于 2026年10月30日

两个变量发的请求头不同

  • ANTHROPIC_API_KEY 发 x-api-key: 你的key。Anthropic 官方 API 用的就是这个请求头。
  • ANTHROPIC_AUTH_TOKEN 发 Authorization: Bearer 你的key。不少第三方服务和网关用这个请求头。

两个都设,Claude Code 会把两个请求头都发出去。服务端认哪个、两个不一致时以哪个为准,各家不同。最稳妥的做法是只设服务商文档要求的那一个,把另一个删掉。

Key 被拒时的报错也不同

服务端返回 401 时,Claude Code 的提示跟着变量走:

  • 用 ANTHROPIC_API_KEY:Invalid API key · Fix external API key
  • 用 ANTHROPIC_AUTH_TOKEN:Not logged in · Please run /login

第二种提示看起来像是要登录 claude.ai,其实是 Token 被拒了。用第三方地址时,先核对 Token 本身。各种报错的排查见《Claude Code 接 API 常见报错》。

交互模式下的确认提示

设了 ANTHROPIC_API_KEY 之后第一次运行交互式的 claude,会出现 Detected a custom API key in your environment,问你要不要用这个 Key。选不用,这个 Key 就不会被用上。ANTHROPIC_AUTH_TOKEN 不会出这个提示。用 claude -p 这类非交互方式运行时,两个变量都不会弹提示。

settings.json 里的 env 优先

两个变量都可以写进 ~/.claude/settings.json 的 env 里。实测 settings.json 里写的值会盖过终端里 export 的同名变量,ANTHROPIC_BASE_URL 也一样。

所以换 Key 或换地址时,先看 settings.json 里有没有写过。项目目录下的 .claude/settings.json 和 .claude/settings.local.json 也可能写了 env。

两处只留一处最不容易乱:每台电脑一份固定配置,就写进 settings.json;要经常切换,就删掉 settings.json 里的 env,改用终端变量。

怎么看当前用的是哪一个

在 claude 里输入 /status。Anthropic base URL 是请求发往的地址,Auth token 和 API key 两行分别是两个变量的来源。哪一行后面标着 not in use,说明它存在但没有被用上。

该用哪一个

  • Anthropic 官方的 API Key(sk-ant- 开头):用 ANTHROPIC_API_KEY。
  • 第三方服务:照服务商的文档。文档里写的是 Authorization 或 Bearer,就用 ANTHROPIC_AUTH_TOKEN。
  • 两个都试了都不行:用 curl 分别带两种请求头各发一次,哪种正常返回就用哪种。curl 的写法见《Claude Code 接 API 常见报错》。

每人一个 Key,接上 Claude Code

RoamAI 是给团队用的 Claude API:在控制台创建 API Key,填到 Claude Code、Claude Desktop 或 SDK 里就能用。开通 VIP 用量更便宜,另有专属服务器和专人对接。

开始使用

← 全部文章