Claude Code 报错 401/403 怎么解决?认证错误排查

浏览:2次阅读
没有评论

Claude Code 报错 401 或 403,本质都是“认证没过”:401 多半是凭据失效或被替换,403 多半是账号没有权限。先在 Claude Code 里运行 /status 看清当前用的是哪种凭据,再按下面对应的报错逐条处理,大部分问题几分钟就能解决。

Claude Code 报错 401/403 怎么解决?认证错误排查插图
图片来源:Claude Code Docs:Troubleshoot installation and login

第一步:用 /status 确认当前凭据

Claude Code 同时支持订阅登录、API Key、第三方网关 Token 等多种认证方式。很多 401/403 不是密钥本身有问题,而是 实际生效的凭据不是你以为的那个。按官方文档,存在多个凭据时 Claude Code 按以下顺序选用:

  1. 云厂商凭据(设置了 CLAUDE_CODE_USE_BEDROCK、CLAUDE_CODE_USE_VERTEX 或 CLAUDE_CODE_USE_FOUNDRY 时)
  2. ANTHROPIC_AUTH_TOKEN 环境变量,以 Authorization: Bearer 请求头发送,接第三方 API 网关时常用
  3. ANTHROPIC_API_KEY 环境变量,以 X-Api-Key 请求头发送
  4. apiKeyHelper 脚本的输出
  5. CLAUDE_CODE_OAUTH_TOKEN 环境变量(claude setup-token 生成的长期 Token)
  6. Anthropic profile 和联合身份凭据
  7. /login 登录的订阅凭据(Pro、Max 等订阅用户的默认方式)

也就是说,只要环境变量里残留了一个旧的 ANTHROPIC_API_KEY,并且你曾经同意使用它,它就会盖过订阅登录。先查一下当前终端里有哪些相关变量:

# macOS / Linux
env | grep ANTHROPIC

# Windows PowerShell
Get-ChildItem Env:ANTHROPIC*

如果你是通过 settings.json 的 env 字段配置的第三方 API,也要一起检查,写法可以参考 Claude Code settings.json 配置详解。

Claude Code 报错 401 的常见原因与解决

1. OAuth token revoked / OAuth token has expired

报错原文类似:

OAuth token revoked · Please run /login
Please run /login · API Error: 401 OAuth token has expired ...

意思是保存的登录已经失效:revoked 表示你在别处退出了全部登录或管理员移除了权限,expired 表示会话中途自动续期失败。

解决方法:

  • 在 Claude Code 里运行 /login 重新登录。
  • 如果用的是 CLAUDE_CODE_OAUTH_TOKEN 环境变量,Claude Code 会一直发送这个值,需要用 claude setup-token 重新生成后替换,或者删掉这个变量再 /login。
  • 如果反复让你登录,官方建议检查 系统时间是否准确,因为 Token 校验依赖时间戳。

2. API Error: 401 Invalid authentication credentials

这条表示 API 认得凭据的格式,但拒绝了它背后的账号或组织,常见于凭据刚被吊销、组织被禁用或移除了你的权限。按官方建议这样处理:

  • /status 显示正在用 API Key:说明是 ANTHROPIC_API_KEY 在生效,/login 替换不了它。去 Claude Console 换一个新 Key,或者执行 unset ANTHROPIC_API_KEY(PowerShell 用 Remove-Item Env:ANTHROPIC_API_KEY)改回订阅登录。
  • /status 只显示登录账号:运行一次 /login。
  • 同一账号反复出现:账号或组织已不可用,需要联系组织管理员恢复权限。
  • 设置了 ANTHROPIC_BASE_URL 走第三方 API 网关:401 后面跟的是 网关自己的报错信息,重新登录没用,要检查网关要求的 Key 或 Token 是否填对、是否过期、余额是否充足。

3. Invalid API key · Fix external API key

表示 ANTHROPIC_API_KEY 或 apiKeyHelper 返回的 Key 被拒绝。官方给出的排查顺序:

  1. 检查 Key 有没有拼写错误,在 Console 里确认没有被吊销;
  2. 用上面的 env | grep ANTHROPIC 确认实际加载的值,direnv、项目里的 .env 文件、IDE 终端都可能悄悄加载旧 Key;
  3. 如果报错后面还写着 it contains a line break 之类的说明,说明 Key 里混进了换行、零宽空格或中文引号,请求根本没发出去。手动重新输入 那个变量,不要再从同一个聊天记录或文档里复制。

用 ANTHROPIC_AUTH_TOKEN 接第三方 API 时,同类问题会显示为 Invalid auth token · Fix external auth token,处理方法相同。

Claude Code 报错 401/403 怎么解决?认证错误排查插图1
图片来源:Claude Code Docs:Authentication

Claude Code 报错 403 的常见原因与解决

1. API Error: 403 Request not allowed(登录后出现)

这是国内用户最常搜的一条。官方给出的三种情况:

  • Claude Pro / Max 订阅用户:到 claude.ai/settings 确认订阅仍然有效。
  • Claude Console(API)用户:确认账号有“Claude Code”或“Developer”角色,管理员在 Console 的 Members 页面分配。
  • 经过代理访问:公司或本地代理可能干扰 API 请求,需要按官方网络配置文档正确设置代理。

2. 403 permission_error(直接调 API)

Claude API 的错误文档里,403 对应 permission_error,含义是“你的 API Key 没有权限使用指定资源”,需要到 Claude Console 检查组织和工作区的访问设置。

3. 云厂商或网关返回的 403

  • Amazon Bedrock:凭据过期和缺少 IAM 权限都会返回 403。先运行 aws sts get-caller-identity 确认凭据有效,再检查 IAM 权限,以及是否在对应区域开通了该模型。
  • Google Cloud:403 通常是身份缺少 IAM 权限,或项目没有开通模型,可用 gcloud auth application-default login 刷新凭据后再查权限。
  • 第三方 API 网关 / 中转:403 来自网关本身,重新登录不会改变结果,要看网关后台的拒绝原因,比如分组没有该模型权限、IP 白名单、令牌被禁用等。

其他相关报错

400 This organization has been disabled

明明订阅正常却报这个错,官方解释是 ANTHROPIC_API_KEY 覆盖了订阅登录,常见于 shell 配置文件里还留着以前公司或项目的旧 Key。解决方法是删除这个变量:

# macOS / Linux
unset ANTHROPIC_API_KEY
claude

# Windows PowerShell
Remove-Item Env:ANTHROPIC_API_KEY
claude

再检查 ~/.zshrc、~/.bashrc、~/.profile 里的 export ANTHROPIC_API_KEY=...,Windows 检查 $PROFILE 和用户环境变量,删掉才能永久生效。

Not logged in · Please run /login

当前会话没有任何可用凭据,运行 /login 即可。如果是在 WSL2、SSH 或容器里浏览器打不开,可以在登录提示处按 c 复制登录链接,到本机浏览器打开,再把页面给出的代码粘贴回终端;粘贴无效时改用 claude auth login。

一套通用的重置流程

原因实在看不出来时,官方推荐的“干净重登”能解决大多数情况:

  1. 在 Claude Code 里运行 /logout 完全退出;
  2. 关闭 Claude Code;
  3. 检查并清理不需要的 ANTHROPIC_* 环境变量;
  4. 重新运行 claude 并完成登录,再用 /status 确认生效的凭据。

还没装好 Claude Code 的话,可以先看 Claude Code Windows 安装教程(2026)。如果你同时在用 Codex 或 Gemini CLI,限流和权限类问题可以对照 Codex 报错 429 解决方法 和 Gemini CLI 403 报错解决。

常见问题 FAQ

401 和 403 有什么区别?

401 是“认证失败”,凭据无效、过期或被吊销;403 是“没有权限”,凭据本身有效,但账号、角色、组织或网关不允许这次请求。

重新登录后还是 401 怎么办?

多半是环境变量里的 ANTHROPIC_API_KEY 或 ANTHROPIC_AUTH_TOKEN 优先级比登录更高。用 /status 确认,删除变量后重开终端再试。

接第三方 API 报 401/403,要找谁?

设置了 ANTHROPIC_BASE_URL 时,401/403 后面的提示来自网关,需要检查网关的 Key、余额和模型权限,或联系网关服务方。

信息来源

正文完
 0