Agent Model Connector

401 未授权修复指南——Claude Code 与 Codex CLI

Claude Code 或 Codex CLI 接入 DeepSeek、OpenRouter 等服务商时遇到"401 未授权"的分步修复方法。

报错输出

Error: 401 Unauthorized {"error":{"message":"Invalid Authentication: Bearer token is invalid or expired"}}
常见变体
anthropic: Request to Anthropic API failed with status 401: {"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"}}
Error: Invalid API key. Check your key at https://platform.deepseek.com/api_keys

具体文本随 Agent 版本与服务商略有差异,以状态码和消息类型为准。

快速定位

运行以下命令,检查 token 变量实际的值——问题几乎都出在这里。

Claude Code
echo $ANTHROPIC_AUTH_TOKEN
Codex CLI
echo $DEEPSEEK_API_KEY $OPENROUTER_API_KEY

常见原因

  • API Key 错误、已过期,或在配置完成后被重新生成。
  • 密钥是在旧的终端会话中导出的,新值从未生效。
  • 服务商账户余额不足,部分服务商将其报告为 401。
  • 残留的 ANTHROPIC_API_KEY 把流量重路由回了 Anthropic(OpenRouter 场景)。

按场景修复

1 刚配置完就报错

  • 编辑 Shell 配置文件后请打开新终端——旧会话中的变量是过期的。
  • 密钥是否粘贴时带入了多余空格、引号或末尾换行?
  • 密钥是否以预期前缀开头(DeepSeek 为 sk-,OpenRouter 为 sk-or-)?
  • 是否还残留 ANTHROPIC_API_KEY 覆盖了路由?

2 更换 API Key 后报错

  • 服务商生成新密钥的瞬间旧密钥即失效——旧值立刻不可用。
  • 新密钥是否已替换到旧密钥出现的所有位置(Shell 配置、settings.json、CI)?
  • 重试前重启终端或重新导出。

3 之前能用,突然报错

  • 服务商是否轮换或退役了密钥?查看后台。
  • 账户余额是否用尽?部分服务商以 401 而非 402 报告。
  • Shell 配置或 settings.json 最近是否有变动(新工具、dotfiles 同步)?

Agent 差异修复

Claude Code

修复
将 ANTHROPIC_AUTH_TOKEN 设为服务商密钥;使用 OpenRouter 时保持 ANTHROPIC_API_KEY="" 显式置空。重新导出并打开新终端。
验证
`claude /status` 应显示你的服务商端点与已连接状态。

Codex CLI

修复
导出 config.toml 中 env_key 指定的密钥(DEEPSEEK_API_KEY 或 OPENROUTER_API_KEY)。切勿把密钥写进 toml。
验证
`codex exec "hi"` 成功,且服务商后台能看到该请求。

Claude Code 与 Codex CLI 对照速查

Claude Code Codex CLI
认证变量 ANTHROPIC_AUTH_TOKEN env_key in config.toml
密钥存放位置 Shell profile or settings.json env block Exported env var referenced by env_key
验证命令 claude /status codex exec "hi"

避免复发

  • 将密钥存入密码管理器并定期轮换。
  • 切勿把密钥提交进 dotfiles 仓库或配置文件。
  • 保留一份可用的配置快照,便于回滚错误的修改。

相关错误

相关接入指南

常见问题

我创建了新密钥为什么还是 401?

最常见的原因是终端会话过期:export 只对之后新开的会话生效。打开新终端,或重新导出后再运行验证命令。

订阅 Claude Pro / Max 能解决 401 吗?

不能。该配置使用服务商 API 密钥认证并按服务商计费。订阅无法与第三方端点组合使用,修复密钥前 401 会一直存在。

密钥正确为什么用 OpenRouter 还是 401?

当 ANTHROPIC_API_KEY 未设置或包含真实值时,Claude Code 会回退到 Anthropic 认证。将其显式置空,强制所有流量走 OpenRouter。

全部排障指南