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 用量更便宜,另有专属服务器和专人对接。
开始使用