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

第一步:用 /status 确认当前凭据
Claude Code 同时支持订阅登录、API Key、第三方网关 Token 等多种认证方式。很多 401/403 不是密钥本身有问题,而是 实际生效的凭据不是你以为的那个。按官方文档,存在多个凭据时 Claude Code 按以下顺序选用:
- 云厂商凭据(设置了
CLAUDE_CODE_USE_BEDROCK、CLAUDE_CODE_USE_VERTEX或CLAUDE_CODE_USE_FOUNDRY时) ANTHROPIC_AUTH_TOKEN环境变量,以Authorization: Bearer请求头发送,接第三方 API 网关时常用ANTHROPIC_API_KEY环境变量,以X-Api-Key请求头发送apiKeyHelper脚本的输出CLAUDE_CODE_OAUTH_TOKEN环境变量(claude setup-token生成的长期 Token)- Anthropic profile 和联合身份凭据
/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 被拒绝。官方给出的排查顺序:
- 检查 Key 有没有拼写错误,在 Console 里确认没有被吊销;
- 用上面的
env | grep ANTHROPIC确认实际加载的值,direnv、项目里的.env文件、IDE 终端都可能悄悄加载旧 Key; - 如果报错后面还写着
it contains a line break之类的说明,说明 Key 里混进了换行、零宽空格或中文引号,请求根本没发出去。手动重新输入 那个变量,不要再从同一个聊天记录或文档里复制。
用 ANTHROPIC_AUTH_TOKEN 接第三方 API 时,同类问题会显示为 Invalid auth token · Fix external auth token,处理方法相同。

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。
一套通用的重置流程
原因实在看不出来时,官方推荐的“干净重登”能解决大多数情况:
- 在 Claude Code 里运行
/logout完全退出; - 关闭 Claude Code;
- 检查并清理不需要的
ANTHROPIC_*环境变量; - 重新运行
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、余额和模型权限,或联系网关服务方。