Codex CLI 常见报错速查

遇到报错?对照下面的表格快速定位原因,每条都附有可直接执行的修复命令。绝大多数问题属于三类之一:认证、限流、配置/网络

i

截至 2026,本文所列错误信息与解决方案均基于当时的 Codex CLI 版本。如遇到表中未列的报错,可在会话内执行 /feedback 提交诊断信息。

排错总原则

收到报错时,先用这三步快速缩小范围,再看后面的具体条目:

  1. 看错误类型401/403 是认证问题;429 是限流;端口冲突或 os error 是本地环境问题;Reconnecting/stream disconnected 是网络问题。
  2. 看是否能连上 OpenAIcurl -I https://api.openai.com/v1/models 返回 401 说明网络通,返回超时或连接拒绝说明是代理/网络问题(见 Reconnecting 排查)。
  3. 看日志:会话内执行 /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 无效。处理步骤:

  1. 退出并重新登录(ChatGPT 账号方式):
    终端
    $ codex logout
    $ codex login
  2. 如果使用 API Key,确认 Key 本身有效,且账号已开通 CLI 访问权限。
  3. 确认没有在环境变量里同时设置了过期的 OPENAI_API_KEYenv | grep OPENAI

Headless / 远程服务器登录失败

Codex 在没有浏览器的环境(SSH 服务器、CI、Docker 等)下会自动切换为设备码(Device Code)认证。如果你所在工作区的管理员禁用了 Device Code 认证,即便你的账号本身有权限,登录也会直接失败。

!

这是管理员级别的权限设置,普通用户无法自行解决——需要联系工作区管理员开启 Device Code 认证。

在管理员开启之前,有两种临时绕过方法:

  1. 复制 auth.json:在一台有浏览器的机器上完成 OAuth 登录,把 ~/.codex/auth.json 复制到目标服务器的同一路径。
  2. 改用 API Keycodex 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)

  1. 找出并关闭占用 1455 端口的进程:
    macOS / Linux
    # 查看 1455 端口被哪个进程占用
    $ lsof -i :1455
    # 或用 ss(Linux)
    $ ss -tlnp | grep 1455
  2. 如果是 SSH 隧道占用,关闭该 SSH 连接或修改隧道转发的端口号。
  3. 释放端口后,重新执行 codex login
i

如果确实需要长期保留 1455 端口的 SSH 隧道,建议改用 codex login --with-api-key 方式,完全绕过本地 OAuth 回调监听。

配置与沙箱问题

model 字段无效

如果 ~/.codex/config.toml 中的 model 行填写了一个不存在的模型名,Codex 会报配置错误无法启动。最简单的修复方式是直接删除该行,让 CLI 回退到内置默认模型:

~/.codex/config.toml — 删除或注释掉 model 行
# 把下面这行删掉(或在前面加 #)
# 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 单独设置一个路径:

WSL 的 ~/.bashrc 或 ~/.zshrc
export CODEX_HOME="$HOME/.codex-wsl"

查看日志与提交 /feedback

Codex 会在本地写入诊断日志(截至 2026)。遇到难以复现的问题时,最直接的方式是在 Codex 会话内执行内置命令:

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 logoutunset OPENAI_API_KEY 清理干净。

如何确认 Codex 当前用的是哪种认证方式?

查看 ~/.codex/auth.json 的内容——若有 accessToken 字段则是 OAuth 方式;若是纯 API Key 登录,则文件内容会包含 Key 相关信息。同时检查环境变量:echo $OPENAI_API_KEY,若有值则 API Key 也在生效。

429 限流之后会自动恢复吗?

会。Codex CLI 会显示配额重置的具体时间,到时间后自动恢复,无需重启或重新登录。如果非常频繁地触发 429,说明当前订阅计划的用量上限已不够用,可在 OpenAI 控制台升级。

表中没有我遇到的错误怎么办?

先用 /feedback 捕获日志,再把完整的原始错误消息加上 "codex" 关键词搜索——通常能在官方 GitHub Issues 或社区找到相关讨论。Reconnecting 相关见 专题排查清单,代理配置问题见 国内使用与代理配置