截至 2026,本文所列错误信息与解决方案均基于当时的 Codex CLI 版本。如遇到表中未列的报错,可在会话内执行 /feedback 提交诊断信息。
排错总原则
收到报错时,先用这三步快速缩小范围,再看后面的具体条目:
- 看错误类型:
401/403是认证问题;429是限流;端口冲突或os error是本地环境问题;Reconnecting/stream disconnected 是网络问题。 - 看是否能连上 OpenAI:
curl -I https://api.openai.com/v1/models返回401说明网络通,返回超时或连接拒绝说明是代理/网络问题(见 Reconnecting 排查)。 - 看日志:会话内执行
/feedback可捕获请求 ID、错误日志与连接快照,便于进一步定位。
报错速查表
| 错误 | 原因 | 解决 |
|---|---|---|
401 Unauthorized |
Token 过期或 API Key 无效 | codex logout 然后 codex login;或重新检查 API Key 及账号权限 |
429 Too Many Requests / rate limit |
触达用量上限 | 等待 CLI 提示的重置时间;或升级订阅计划 |
Address in use (os error 98) |
登录时 1455 端口被占用(常见于 SSH 隧道) | 关闭占用该端口的进程或隧道,重试登录 |
Reconnecting 循环 / stream disconnected |
网络或代理问题 | 见 Reconnecting 排查清单 |
| Headless/远程登录失败 | Device Code 认证被管理员禁用 | 请管理员开启;或复制 auth.json;或改用 API Key |
| 登录卡在"Sign in with ChatGPT" | 浏览器回调未完成(localhost 不可达) | 确保 localhost 回调可访问;或改用 API Key 登录 |
| Invalid model setting | config.toml 中的 model 字段值无效 |
删除 config.toml 里的 model 行,回退到默认值 |
| 命令被沙箱拦截 | 沙箱模式或审批设置过严 | 检查沙箱/审批设置,见 命令配置 |
| 配置文件损坏导致启动失败 | ~/.codex/config.toml 格式有误 |
重命名该文件,以默认配置重新启动 Codex |
| WSL: "migration N was previously applied but has been modified" | WSL 与 Windows Codex 共用了同一个 CODEX_HOME |
为 WSL 单独设置一个 CODEX_HOME 环境变量 |
认证类问题(401 / 登录失败 / Headless)
401 Unauthorized — Token 失效
401 Unauthorized 意味着你的登录令牌已过期,或 API Key 无效。处理步骤:
- 退出并重新登录(ChatGPT 账号方式):
$ codex logout $ codex login - 如果使用 API Key,确认 Key 本身有效,且账号已开通 CLI 访问权限。
- 确认没有在环境变量里同时设置了过期的
OPENAI_API_KEY:env | grep OPENAI。
Headless / 远程服务器登录失败
Codex 在没有浏览器的环境(SSH 服务器、CI、Docker 等)下会自动切换为设备码(Device Code)认证。如果你所在工作区的管理员禁用了 Device Code 认证,即便你的账号本身有权限,登录也会直接失败。
这是管理员级别的权限设置,普通用户无法自行解决——需要联系工作区管理员开启 Device Code 认证。
在管理员开启之前,有两种临时绕过方法:
- 复制 auth.json:在一台有浏览器的机器上完成 OAuth 登录,把
~/.codex/auth.json复制到目标服务器的同一路径。 - 改用 API Key:
codex login --with-api-key,不依赖浏览器流程。
登录卡在"Sign in with ChatGPT"界面
OAuth 流程依赖浏览器把回调发到 localhost。如果回调被防火墙或网络策略拦截,页面会一直停在登录界面。
- 确认
localhost(127.0.0.1)的回调端口未被防火墙阻断。 - 在受限环境中直接改用
codex login --with-api-key更可靠。
限流 429
当你的请求频率或总量超过当前订阅计划的上限时,Codex CLI 会返回 429 Too Many Requests。CLI 界面会同时显示配额重置的时间:
等到 CLI 提示的重置时间点,配额会自动恢复,无需任何操作。若经常触及上限,可在 OpenAI 控制台升级订阅计划。
端口占用 — Address in use (os error 98 / 端口 1455)
Codex 登录流程会在本地监听 1455 端口(用于 OAuth 回调)。若该端口已被其他程序占用(最常见的是 SSH 端口转发隧道),登录会失败并报 Address in use (os error 98)。
- 找出并关闭占用 1455 端口的进程:
# 查看 1455 端口被哪个进程占用 $ lsof -i :1455 # 或用 ss(Linux) $ ss -tlnp | grep 1455 - 如果是 SSH 隧道占用,关闭该 SSH 连接或修改隧道转发的端口号。
- 释放端口后,重新执行
codex login。
如果确实需要长期保留 1455 端口的 SSH 隧道,建议改用 codex login --with-api-key 方式,完全绕过本地 OAuth 回调监听。
配置与沙箱问题
model 字段无效
如果 ~/.codex/config.toml 中的 model 行填写了一个不存在的模型名,Codex 会报配置错误无法启动。最简单的修复方式是直接删除该行,让 CLI 回退到内置默认模型:
# 把下面这行删掉(或在前面加 #)
# model = "某个不存在的模型名"
配置文件损坏
若 TOML 文件格式有误(如手动编辑时引入了语法错误),Codex 会拒绝启动。最快的修复方式是把损坏的文件重命名备份,让 Codex 以默认配置重新生成:
$ mv ~/.codex/config.toml ~/.codex/config.toml.bak
$ codex
沙箱拦截命令
Codex 的沙箱模式(sandbox)和审批模式(approvals)会限制 Codex 可以执行的命令类型。如果某个命令被意外拦截,检查你在 config.toml 或启动参数里配置的沙箱/审批级别,详见 命令与斜杠指令。
WSL 迁移冲突
在 Windows + WSL 双环境下,若 WSL 里的 Codex 与 Windows 里的 Codex 使用了同一个 CODEX_HOME(通常是 ~/.codex),内部数据库迁移记录会产生冲突,出现 migration N was previously applied but has been modified 错误。解决方法是为 WSL 单独设置一个路径:
export CODEX_HOME="$HOME/.codex-wsl"
查看日志与提交 /feedback
Codex 会在本地写入诊断日志(截至 2026)。遇到难以复现的问题时,最直接的方式是在 Codex 会话内执行内置命令:
› /feedback
/feedback 会自动捕获以下信息并打包:
- 当前会话的请求 ID(用于 OpenAI 侧溯源)
- 最近的错误日志片段
- 连接状态快照
把 /feedback 的输出提交给官方支持或粘贴到 GitHub Issue,能大幅提升问题定位速度,避免来回追问日志。
常见问题
401 和网络断连有什么区别?
401 是认证层面的拒绝——服务器能收到请求但不认你的身份,通常伴随明确的错误消息。Reconnecting/stream disconnected 是传输层面——请求根本没到服务器,或连接中途断掉了,没有业务级错误码。判断方法:curl -I https://api.openai.com/v1/models,能返回 401 就是认证问题,超时/连接拒绝就是网络/代理问题。
API Key 和 ChatGPT OAuth 登录可以同时用吗?
不推荐同时存在。两套认证并存时连接会变得不稳定,可能触发看似随机的 Reconnecting 或 401。建议选一种:要么只用 codex login(OAuth),要么只用 codex login --with-api-key(API Key)。切换前执行 codex logout 并 unset OPENAI_API_KEY 清理干净。
如何确认 Codex 当前用的是哪种认证方式?
查看 ~/.codex/auth.json 的内容——若有 accessToken 字段则是 OAuth 方式;若是纯 API Key 登录,则文件内容会包含 Key 相关信息。同时检查环境变量:echo $OPENAI_API_KEY,若有值则 API Key 也在生效。
429 限流之后会自动恢复吗?
会。Codex CLI 会显示配额重置的具体时间,到时间后自动恢复,无需重启或重新登录。如果非常频繁地触发 429,说明当前订阅计划的用量上限已不够用,可在 OpenAI 控制台升级。