最近不少朋友在使用 Codex CLI、Codex 插件或者通过第三方 API 中转接入 Codex 时,会遇到一个非常常见的报错:

401 Unauthorized

或者类似:

exceeded retry limit, last status: 401 Unauthorized

这个错误看起来很吓人,但本质上并不复杂。401 Unauthorized 的意思是:当前请求没有通过身份认证。 换句话说,Codex 已经向服务端发起请求了,但服务端认为你的登录状态、Token、API Key 或权限不正确,所以拒绝了请求。

下面我们就把 Codex 401 报错的常见原因和解决方法整理一下。

一、登录状态失效

这是最常见的原因之一。

Codex CLI 通常会在本地保存登录凭证,例如账号登录后的 token、refresh token 或认证缓存。如果这些凭证过期、被刷新、被覆盖,或者本地缓存损坏,就可能出现 401 Unauthorized。

解决方法

可以先尝试退出并重新登录:

codex logout
codex login

如果普通重新登录无效,可以清理本地认证缓存后再登录。

常见位置可能是:

~/.codex/auth.json

可以尝试删除认证文件:

rm -rf ~/.codex/auth.json

然后重新执行:

codex login

如果你之前切换过多个账号,或者用过第三方工具改过 Codex 配置,这一步尤其重要。

二、API Key 错误或失效

如果你使用的是 API Key 登录 Codex,而不是 ChatGPT 账号登录,那么 401 很可能和 API Key 有关。

常见情况包括:

  1. API Key 填错了;
  2. API Key 前后多了空格;
  3. API Key 已被删除或重置;
  4. API Key 所属账号没有权限;
  5. 使用了错误平台的 Key;
  6. 环境变量没有生效。

比如你设置了:

export OPENAI_API_KEY="sk-xxxx"

但实际终端环境没有加载,或者你在另一个 shell、另一个 IDE、另一个终端里运行 Codex,就可能导致 Codex 读取不到正确的 key。

解决方法

先检查环境变量:

echo $OPENAI_API_KEY

如果为空,重新设置:

export OPENAI_API_KEY="你的 OpenAI API Key"

如果你用的是 Windows PowerShell:

$env:OPENAI_API_KEY="你的 OpenAI API Key"

如果你配置了 .envconfig.toml 或第三方中转地址,也要确认 Codex 实际读取的是哪一份配置。

三、账号套餐或权限不匹配

有些用户是通过 ChatGPT 账号登录 Codex,有些用户是通过 API Key 使用 Codex。两种方式的权限体系并不完全一样。

比如:

  • ChatGPT 账号能用,不代表 API Key 一定能用;
  • API Key 能调用普通模型,不代表能调用所有 Codex 相关接口;
  • Plus、Pro、Team、Enterprise 的可用能力也可能不同;
  • 某些功能可能需要特定地区、组织或套餐权限。

解决方法

你可以检查几个点:

codex --version
codex login

然后确认:

  1. 当前登录的是不是正确的 OpenAI / ChatGPT 账号;
  2. 当前账号是否有 Codex 使用权限;
  3. 当前 API Key 是否来自正确的 Organization;
  4. 是否切换过多个 OpenAI 账号;
  5. 是否使用了企业账号、团队账号或多个 workspace。

如果你同时有多个 OpenAI 账号,建议先完全退出,再用目标账号重新登录。

四、Codex 版本过旧

Codex CLI 本身也在更新。旧版本可能存在认证逻辑不兼容、新接口不支持、token 刷新失败等问题。

解决方法

先查看版本:

codex --version

如果你是 npm 安装的,可以尝试更新:

npm install -g @openai/codex@latest

或者:

npm update -g @openai/codex

更新后重新登录:

codex logout
codex login

五、代理、网络或地区问题

有时候 401 不一定完全是账号问题,也可能和网络环境有关。

例如:

  • 请求被代理软件改写;
  • 公司网络拦截认证请求;
  • VPN 节点异常;
  • 代理出口频繁变化;
  • 地区访问策略变化;
  • 请求被中转服务错误转发。

如果 Codex 登录成功,但一发起请求就 401,就要重点检查网络和代理。

解决方法

可以尝试:

  1. 切换网络,比如手机热点;
  2. 关闭代理后重试;
  3. 更换代理节点;
  4. 检查终端是否设置了 HTTP_PROXYHTTPS_PROXY
  5. 检查公司电脑是否有安全软件、MDM、网关拦截。

查看代理环境变量:

echo $HTTP_PROXY
echo $HTTPS_PROXY

如果需要临时取消:

unset HTTP_PROXY
unset HTTPS_PROXY

Windows PowerShell 可以执行:

Remove-Item Env:HTTP_PROXY
Remove-Item Env:HTTPS_PROXY

六、使用第三方 API 中转时配置错误

很多朋友会通过 API 中转服务、反代网关、cc-switch、new-api、sub2api 等方式接入模型。

这种情况下,401 常见原因更多:

  1. 中转平台的 token 填错;
  2. base_url 写错;
  3. 模型名不支持;
  4. 中转服务没有转发 Authorization 头;
  5. 上游 Key 已失效;
  6. 用户余额不足或渠道被禁用;
  7. Codex 仍然请求了 OpenAI 官方接口;
  8. 中转平台没有兼容 Codex 的某些接口。

解决方法

检查配置中的几个关键项:

OPENAI_API_KEY=你的中转平台 token
OPENAI_BASE_URL=https://你的中转地址/v1

重点确认:

  • OPENAI_API_KEY 是中转平台给你的 key,不是乱填的;
  • OPENAI_BASE_URL 是否以 /v1 结尾;
  • 中转平台是否支持你调用的模型;
  • Codex 是否真的走了中转地址;
  • 中转平台后台是否有请求日志;
  • 上游渠道是否正常。

如果你是站长或中转平台管理员,还要看服务端日志,确认请求有没有到达你的服务。

七、本地配置混乱

很多人折腾过 Claude Code、Codex、cc-switch、OpenAI API、中转平台之后,本地环境变量和配置文件会非常混乱。

比如你以为 Codex 读取的是新 key,实际上它读的是旧环境变量。

常见冲突来源:

~/.bashrc
~/.zshrc
~/.profile
~/.codex/config.toml
.env
IDE 环境变量
系统环境变量
cc-switch 配置

解决方法

建议按顺序排查:

echo $OPENAI_API_KEY
echo $OPENAI_BASE_URL
which codex
codex --version

如果你不确定哪里配置错了,可以先新开一个干净终端,只设置必要变量:

unset OPENAI_API_KEY
unset OPENAI_BASE_URL

export OPENAI_API_KEY="你的 key"
export OPENAI_BASE_URL="你的 base_url"

然后再运行 Codex。

八、refresh token 被复用或刷新失败

有些 401 是刷新登录状态时出现的。

比如报错中可能出现:

Failed to refresh token: 401 Unauthorized

这通常说明本地保存的 refresh token 已经不能继续使用了。

解决方法

这种情况最直接的方式就是清理登录状态后重新登录:

codex logout
rm -rf ~/.codex/auth.json
codex login

如果还有问题,可以把整个 Codex 配置目录备份后重置:

mv ~/.codex ~/.codex_backup
codex login

注意:这样会清掉本地 Codex 的部分配置,建议先备份。

九、请求了不存在或无权限的模型

有时候错误不是认证本身,而是模型权限问题表现成 401 或类似鉴权错误。

比如你配置了一个模型名:

model = "gpt-xxx-codex"

但当前账号没有这个模型权限,或者中转平台没有映射这个模型,就可能请求失败。

解决方法

检查模型名是否正确。

可以先换成平台明确支持的模型测试。如果使用中转平台,要以中转平台后台的模型列表为准。

十、使用非官方 Codex 工具导致认证异常

这个问题也要注意。

使用 Codex 相关工具时,不要随便安装来路不明的 npm 包、桌面客户端或所谓“增强版 Codex”。

如果某些工具修改了本地配置、劫持了 API 地址,或者保存了错误 token,也可能导致 Codex 一直返回 401。

解决方法

建议:

  1. 只安装官方或可信来源的 Codex;
  2. 不要随便运行陌生脚本;
  3. 如果怀疑 token 泄露,立刻退出登录;
  4. 重置 OpenAI API Key;
  5. 检查账号异常用量;
  6. 删除本地可疑包和配置。

可以查看全局 npm 包:

npm list -g --depth=0

如果发现可疑 Codex 相关包,建议谨慎卸载。

推荐排查顺序

遇到 Codex 401 Unauthorized,可以按这个顺序处理。

第一步:确认是不是账号登录问题

codex logout
codex login

第二步:确认 Codex 版本

codex --version
npm install -g @openai/codex@latest

第三步:检查 API Key

echo $OPENAI_API_KEY

第四步:检查 base_url

echo $OPENAI_BASE_URL

第五步:清理本地认证缓存

rm -rf ~/.codex/auth.json
codex login

第六步:换网络或关闭代理测试

unset HTTP_PROXY
unset HTTPS_PROXY

第七步:如果你使用中转平台,去后台看请求日志

重点看:

  • 请求有没有进来;
  • Authorization 是否正确;
  • 模型名是否支持;
  • 用户余额是否充足;
  • 上游渠道是否正常;
  • 返回 401 的是中转平台,还是上游 OpenAI。

总结

Codex 出现 401 Unauthorized,本质上就是身份认证失败。

常见原因主要有:

  1. 登录状态过期;
  2. API Key 错误;
  3. 账号权限不足;
  4. Codex 版本过旧;
  5. 网络或代理异常;
  6. 第三方中转配置错误;
  7. 本地环境变量冲突;
  8. refresh token 失效;
  9. 模型无权限;
  10. 使用了非官方或可疑工具。

大部分情况下,重新登录、更新 Codex、检查 API Key、清理认证缓存,就能解决问题。

如果你是通过中转平台接入 Codex,那就重点检查 OPENAI_API_KEYOPENAI_BASE_URL、模型名、余额、渠道状态和服务端日志。

遇到 401 不要慌,先判断一句话:

到底是 Codex 没拿到正确身份,还是服务端不认可这个身份。

只要沿着这个方向排查,基本都能定位到问题。

参考:

https://codex-zh.com/posts/401-unauthorized/

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐