确认环境变量失效现象

如果你已经设置了 ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN 或模型变量,但 Claude Code 仍然请求旧入口、旧模型或继续报 401、404、model not found,先按这篇验证。

Windows 环境变量最常见的问题不是变量不存在,而是 Claude Code 启动时没有继承你刚改的那一份变量。先区分当前会话变量、用户变量、项目 settings 和旧终端进程。

  • 当前 PowerShell 能读到新值,但 Claude Code 仍然使用旧配置。
  • 系统设置里已经写入用户变量,但旧终端窗口没有刷新。
  • 项目 settings.local.json 写了 env,但当前 shell 里同名变量优先级更高。
  • VS Code 终端、管理员 PowerShell 和普通 PowerShell 读到的变量不一致。

检查当前会话变量

先在准备启动 Claude Code 的同一个 PowerShell 窗口里检查变量。Token 不要完整打印,只看长度。

如果这里读不到值,Claude Code 从这个窗口启动时也读不到。先不要改 settings 或模型名,先把当前会话变量补齐。

PowerShell
$env:ANTHROPIC_BASE_URL
$env:ANTHROPIC_AUTH_TOKEN.Length
$env:ANTHROPIC_MODEL
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL

设置当前会话变量

临时验证时,优先在当前 PowerShell 放一套最小变量。关闭这个窗口后,$env: 写入的变量就会消失。

这一步只负责把变量放进当前进程,不负责启动 Claude Code。确认当前窗口能读到这些值以后,再进入启动验证。

PowerShell
$env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
$env:ANTHROPIC_AUTH_TOKEN="<你的 API Key>"
$env:ANTHROPIC_MODEL="deepseek-v4-flash"

写入 Windows 用户变量

需要长期生效时,再写入 Windows 用户变量。写入后必须重新打开 PowerShell;已经打开的终端不会自动刷新。

这段只写入用户变量,不启动 Claude Code。真实 Key 不要提交到仓库,也不要放进团队共享的 settings 文件。

PowerShell
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://api.deepseek.com/anthropic", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "<你的 API Key>", "User")
[Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", "deepseek-v4-flash", "User")

重新打开 PowerShell 验证

写入用户变量后,关闭当前 PowerShell,重新打开一个新窗口,再检查变量。这个新窗口能读到的值,才是后续 Claude Code 会继承的值。

如果新窗口仍然读不到,说明用户变量没有写入成功、写入了别的变量名,或你打开的是不同权限/不同用户的终端。

PowerShell
$env:ANTHROPIC_BASE_URL
$env:ANTHROPIC_AUTH_TOKEN.Length
$env:ANTHROPIC_MODEL

核对项目 settings 覆盖

如果项目里有 .claude/settings.local.json 或 .claude/settings.json,继续检查里面的 env。Claude Code 启动时可能从 settings 读取环境变量。

项目 settings 适合保存当前项目的 base URL 和模型映射。API Key 优先放用户环境变量或个人本地 settings.local.json,不要写进需要提交的团队配置。

JSON
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_MODEL": "deepseek-v4-flash"
  }
}

如果当前 shell 和 settings 同时存在同名变量,排查时先记录两边的值,再按 Claude Code 当前文档确认优先级。

从同一窗口启动验证

变量检查通过后,从同一个 PowerShell 窗口启动 Claude Code。不要切到旧 VS Code 终端、桌面快捷方式或另一个管理员窗口启动。

成功标准是 Claude Code 进入会话、首轮请求返回,并且没有继续使用旧入口或旧模型。

PowerShell
claude --model deepseek-v4-flash

按错误类型继续排查

如果启动后仍然失败,不要继续反复写环境变量。按错误类型进入下一篇排查。

401 通常回到 Key 是否进入当前进程;404 通常回到 ANTHROPIC_BASE_URL 路径;model not found 通常回到模型名、DEFAULT 模型变量和网关映射。

401 unauthorized

检查 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY 是否进入当前 PowerShell,确认 Key 没有复制错、过期或来自另一家供应商。

404 endpoint not found

检查 ANTHROPIC_BASE_URL 是否为 Anthropic-compatible 入口,不要填 OpenAI 入口,也不要手动追加 /v1/messages。

model not found

检查 ANTHROPIC_MODEL、ANTHROPIC_DEFAULT_HAIKU_MODEL 和 CLAUDE_CODE_SUBAGENT_MODEL,再确认网关是否配置了对应模型映射。

记录可复现环境

环境变量问题容易反复出现。修复后记录系统版本、Shell、设置方式、启动入口、base URL、模型名和 Token 长度。

不要记录真实 Token。下次再遇到同类问题,先对比这份记录和当前窗口读到的变量。

Text
日期:2026-06-05
系统:Windows 11
Shell:PowerShell 7
设置方式:$env 临时变量 / 用户变量 / settings.local.json
启动入口:同一个 PowerShell / VS Code 终端 / 其它
Base URL:填当前值
模型名:填当前 ANTHROPIC_MODEL
Token 长度:填长度,不填真实值
结果:首轮请求成功 / 仍失败的错误片段

参考来源

PowerShell 文档官方文档Claude Code 环境变量文档官方文档

相关文章

Claude Code 接入 DeepSeek API:配置方法和报错处理智能编程 / 约 20 分钟ANTHROPIC_BASE_URL 配置入口选择配置解释 / 约 10 分钟Claude Code model not found 错误排查步骤错误日志 / 约 12 分钟