为什么登录订阅后还会走 API Key

如果你已经用 `/login` 登录 Claude Pro、Max、Team 或 Enterprise,但 Claude Code 仍然像在走 API Key、继续报认证错误,或者你担心请求没有走订阅额度,先看当前会话到底用哪种凭据。

`ANTHROPIC_API_KEY` 不是备用配置。它存在时,Claude Code 可能会用这条 API Key 链路,而不是你刚登录的订阅凭据。先不要改模型名、代理或 Base URL。先确认认证来源。

Text
/status

当前终端有没有 ANTHROPIC_API_KEY

在启动 Claude Code 的同一个 PowerShell 窗口里检查 `ANTHROPIC_API_KEY`。不要打印完整 Key,只看是否存在、长度是否异常。

如果当前窗口能读到值,Claude Code 从这个窗口启动时就可能继承它。你看到的登录状态和实际请求使用的认证方式,就可能不一致。

PowerShell
$env:ANTHROPIC_API_KEY.Length

只想用订阅登录应该怎么清

如果你想让 Claude Code 使用订阅登录,先在当前 PowerShell 清掉 `ANTHROPIC_API_KEY`,再重新启动 Claude Code。这个操作只影响当前窗口,不会删除系统里的长期环境变量。

成功标准不是命令没有报错。成功标准是重新进入 Claude Code 后,`/status` 显示的 active credential 不再是环境变量 API Key。

PowerShell
Remove-Item Env:ANTHROPIC_API_KEY -ErrorAction SilentlyContinue
claude

macOS / Linux / WSL 怎么清

如果你在 macOS、Linux、WSL 或 Git Bash 里启动 Claude Code,用 `unset` 清掉当前 shell 的变量。清掉后从同一个窗口启动 `claude`。

如果你使用 `claude -p` 做非交互脚本,更要先确认脚本环境里没有继承 `ANTHROPIC_API_KEY`。非交互模式下,只要变量存在,就容易直接走 API Key。

bash
unset ANTHROPIC_API_KEY
claude

为什么新窗口又出现 API Key

当前窗口清掉以后,如果新开的终端又读到了 `ANTHROPIC_API_KEY`,说明它来自持久配置。不要反复 `/login`,先找是谁把变量重新注入了。

常见来源按这个顺序查:

  • Windows 用户环境变量或系统环境变量
  • PowerShell profile,例如 `$PROFILE` 指向的脚本
  • VS Code、JetBrains 或其它 IDE 继承的终端环境
  • 项目里的 `.env`、dotenv 插件或 direnv 配置
  • .claude/settings.json 或 .claude/settings.local.json 的 env 字段
  • CI、任务脚本、启动脚本或 shell profile 里的 export/set 语句

Windows 用户变量会不会覆盖登录

如果你以前为了 Anthropic Console API 写过长期用户变量,新窗口会自动继承。先读取用户变量,确认是不是用户变量里残留了 Key。

下面只打印长度,不打印真实 Key。真实 Key 不要粘到聊天记录、截图、issue 或文章里。

PowerShell
$userKey = [Environment]::GetEnvironmentVariable("ANTHROPIC_API_KEY", "User")
$userKey.Length

什么时候应该删除用户变量

如果确认用户变量里有旧 Key,并且你要用 Claude 订阅登录,就把用户变量删除。删除后关闭当前 PowerShell,重新打开一个新窗口再验证。

这一步会改你的用户环境变量。只有当你确认不想让所有新终端默认走 API Key 时再执行。

PowerShell
[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", $null, "User")

PowerShell profile 会不会自动注入

如果用户变量已经删掉,新窗口仍然读到 API Key,继续检查 PowerShell profile。profile 里可能有旧的 `$env:ANTHROPIC_API_KEY=...`。

打开 profile 后,删除或注释掉设置 `ANTHROPIC_API_KEY` 的那一行。改完重新打开 PowerShell。

PowerShell
$PROFILE
Test-Path $PROFILE
notepad $PROFILE

项目 settings 和 .env 会不会覆盖

如果只在某个项目里复现,重点查项目目录。Claude Code 可以从 settings 的 env 字段得到环境变量;终端也可能通过 `.env`、direnv 或 dotenv 插件加载旧 Key。

订阅登录场景下,团队共享 settings 不要写真实 `ANTHROPIC_API_KEY`。如果某个项目确实要走 API Key,放在本地私有配置里,并在启动前确认 `/status`。

  • .claude/settings.json
  • .claude/settings.local.json
  • .env
  • .env.local
  • .envrc
  • IDE 运行配置或终端启动脚本

清掉后还异常怎么判断

清掉 `ANTHROPIC_API_KEY` 后,再按现象继续判断。不要把所有认证问题都当成同一种 401。

/status 仍显示 API key

继续查持久来源,尤其是 PowerShell profile、IDE 终端环境、项目 .env 和 settings env。

清掉后提示 Not logged in

当前窗口没有可用订阅凭据。运行 /login,选择你的 Claude 订阅账号,再用 /status 验证。

清掉后变成 401 或 invalid x-api-key

确认你是不是仍在走第三方网关或 Anthropic Console API。如果要接 API Key,回到普通认证失败排查;如果要走订阅,继续清理环境变量。

只有 claude -p 脚本会走 API

检查脚本、CI、任务计划和 shell profile。非交互模式更容易直接继承环境变量。

什么时候才应该设置 ANTHROPIC_API_KEY

`ANTHROPIC_API_KEY` 只适合你明确要走 Anthropic Console API 或自动化 API 计费时使用。它不适合长期放在所有开发终端里。

如果你日常用 Claude Code 订阅登录,保持 `ANTHROPIC_API_KEY` unset。需要临时测试 API Key 时,只在当前窗口设置,用完就清掉。

订阅登录保持 ANTHROPIC_API_KEY 不存在,使用 /login 和 /status 验证
临时 API 测试只在当前 shell 设置,用完 Remove-Item 或 unset
CI / 自动化显式设置 API Key,并接受 API 计费路径
第三方网关按网关文档设置入口和 Token,不要混用订阅登录判断

参考来源

Claude Code 环境变量文档Anthropic 官方文档Claude Code error referenceAnthropic 官方文档Troubleshoot installation and loginAnthropic 官方文档Managing API key environment variables in Claude CodeAnthropic Help Center

相关文章

Claude Code 认证失败:401 unauthorized / invalid x-api-key 怎么排查错误日志 / 约 12 分钟Claude Code Windows 环境变量生效验证开发环境 / 约 13 分钟Claude Code 配置文件和权限怎么检查开发环境 / 约 10 分钟Claude Code 配置指南:先把这 7 件事配好智能编程 / 约 15 分钟ANTHROPIC_BASE_URL 配置入口选择配置解释 / 约 10 分钟