一篇回溯排查Claude Code认证失败的完整指南
背景
笔者买了Claude Pro会员,想在终端里用Claude Code写代码,结果一运行就报错:
css
401 {"error":{"code":"","message":"无效的令牌 (request id: ...)","type":"new_api_error"}}
明明已经登录了,claude auth status 也显示 loggedIn: true.但就是用不了。如果你也遇到了这个问题,这篇文章会帮你快速定位原因。
先了解一下:Claude Code 的认证方式
Claude Code支持两种认证路径:
- 订阅账号登录 (
Pro/Max/Team/Enterprise):用你的Claude.ai账号通过浏览器OAuth授权,请求走Anthropic官方服务器,用量计入你的订阅额度。 - API Key 登录 (Console):用
Anthropic控制台生成的API Key,按token计费。
首次运行 claude 时会让你选择登录方式,Pro 用户应该选择 "Claude account with subscription" 。
另外需要注意:Pro 订阅是claude.ai网页端、桌面端、移动端和
Claude Code共享同一个用量额度的。用量达到上限后会触发限速,需要等待一段时间才能继续使用。如果你同时重度使用多个端,可以考虑升级到Max计划获取更高额度。
排查流程
第一步:确认基本信息
运行以下命令收集信息:
bash
# 查看版本
claude --version
# 查看认证状态
claude auth status
# 检查是否有 API Key 环境变量干扰
echo $ANTHROPIC_API_KEY
认证状态显示authMethod: "oauth_token"且loggedIn: true,登录本身就没问题。$ANTHROPIC_API_KEY有值的话先unset ANTHROPIC_API_KEY。
第二步:看错误信息的语言
这是最容易忽略的一点。仔细看看我的报错信息:"message":"无效的令牌"
Anthropic官方API的报错是英文。我看到中文,说明请求压根没到Anthropic的服务器,被某个代理站拦下来了。
第三步:查环境变量
运行以下命令一网打尽:
bash
echo $ANTHROPIC_BASE_URL
echo $ANTHROPIC_AUTH_TOKEN
env | grep -i anthropic
env | grep -i claude
env | grep -i proxy
如果你也看到类似这样的输出:
ini
ANTHROPIC_BASE_URL=https://xxx.某代理站.top
ANTHROPIC_AUTH_TOKEN=sk-xxxxxxxx
这就是问题所在。 ANTHROPIC_BASE_URL环境变量会覆盖 Claude Code 默认的 API 端点,让所有请求发到代理站而不是api.anthropic.com。即使你用官方账号登录了,请求依然走的是代理站------代理站当然不认识你的 OAuth token,于是返回 401。
第四步:修复
临时修复(当前终端会话生效):
bash
unset ANTHROPIC_BASE_URL
unset ANTHROPIC_AUTH_TOKEN
然后重新运行 claude,应该就正常了,这也说明你的问题确实和我一样,是被代理站拦截了。
永久修复(找到并删除写入这些变量的地方):
javascript
grep -n "ANTHROPIC\|代理站域名" ~/.zshrc ~/.bash_profile ~/.bashrc ~/.zprofile ~/.zshenv 2>/dev/null
找到对应行删掉,再source一下配置文件。如果所有配置文件里都找不到,说明这些变量是之前在终端手动export的,重启终端就消失了,不需要额外处理。
常见的其他认证问题
如果你没有代理站的问题,但Claude Code仍然报错,检查以下几点:
- 登出再重新登录 :在
Claude Code中输入/logout,然后运行claude login,选择订阅账号方式重新登录。 - 彻底清除缓存后重登:
bash
rm -rf ~/.claude
rm -f ~/.claude.json
claude
- 确认浏览器中登录的是正确账号:授权时浏览器里可能已经登录了另一个没有 Pro 的账号。
- 确认订阅没过期 :去claude.ai/settings检查你的 Pro 状态。
- Claude Code 版本太旧 :运行
npm update -g @anthropic-ai/claude-code更新到最新版。 - 第三方工具限制:Anthropic 从 2026 年 1 月起限制了 Claude Code 凭证只能用于官方客户端。如果你在用 OpenClaw、Kilo Code 等第三方工具,需要改用 API Key 方式。
几个关键点
- 看到中文错误信息就应该警觉 ------ Anthropic 官方 API 返回英文错误,中文说明请求被发到了代理站。
ANTHROPIC_BASE_URL是最常见的坑。用过代理站的人容易把这个变量留在shell配置里,后来换成正式账号登录也没用,请求还是走代理那边。- 排查认证问题最顺手的命令:
env | grep -i anthropic,一行看清所有相关变量。 unset只管当前会话,要彻底解决需要从Shell配置文件中删除相关行。