Codex 一直 Reconnecting,怎么解决?

看到 Reconnecting… 1/5 一遍遍重试、最后 stream disconnected?先别急着重装。八成是网络连不上 OpenAI,少数是认证冲突或版本 Bug。按下面的顺序排查,基本都能解决。

TL;DR

最快路径:在启动 codex 的同一个终端里设置 HTTPS_PROXY 指向你的本地代理(http,不是 socks5),用 curl 验证能连上 api.openai.com,再重新 codex。九成的重连问题到这一步就解决了。

第一步:30 秒判断「是网络还是 Bug」

Reconnecting 的本质是 Codex 与 OpenAI 之间的连接(WebSocket / SSE 流)建立或保持失败。先做一个判断,省得乱试:

终端 — 连通性自检
# 能不能直接连到 OpenAI?看是否返回 401(能连通,只是没带 key)
$ curl -I https://api.openai.com/v1/models

# 走代理再测一次
$ curl -I -x http://127.0.0.1:7890 https://api.openai.com/v1/models
  • 两个都超时 / 连接被拒 → 网络问题,重点看下面的「代理」部分。
  • 直连超时、走代理返回 401/200 → 代理是通的,问题在于 Codex 没走代理,看「代理没生效」。
  • 都能返回 401,但 codex 还是重连 → 多半是认证冲突或版本 Bug,跳到后面两节。

原因一:代理没配 / 配错(国内最常见)

国内网络无法直连 OpenAI,Codex 启动后连不上就会不停 Reconnecting。解决办法是让 Codex 走代理——它读取标准的代理环境变量:

~/.zshrc 或 ~/.bashrc(把端口换成你自己的)
export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="http://127.0.0.1:7890"

改完执行 source ~/.zshrc(或重开终端)让它生效,再运行 codex。端口要和你的代理客户端一致:Clash 常见 7890,部分客户端是 7897

i

不想污染全局环境,可以只在当前命令前临时加:HTTPS_PROXY=http://127.0.0.1:7890 codex。或把这几行写进 ~/.codex/ 工作目录下的 .env 文件。详细的国内代理方案见 国内使用与代理配置

代理配了却没生效?

  • 确认是在同一个终端会话里设置并启动 codex 的——新开的终端不会继承临时 export
  • 检查是否有大小写不同的变量(https_proxy 小写)覆盖了你的设置:env | grep -i proxy
  • 公司内网还有 NO_PROXY 白名单时,确保没有把相关域名排除掉。

原因二:用了 socks5 代理(Codex 不识别)

一个非常容易踩的坑:Codex 不支持 socks5 代理。如果你的 ALL_PROXYsocks5://...,它连接会失败并不停重连。解决办法是改用客户端暴露的 http 代理端口,或用工具把 socks5 转成 http:

把 socks5 换成 http
# ✗ 不要用这种
export ALL_PROXY="socks5://127.0.0.1:7891"

# ✓ 改用 http 端口(大多数代理客户端同时提供 http 与 socks5)
export HTTPS_PROXY="http://127.0.0.1:7890"

原因三:OAuth 与 API Key 同时存在(认证冲突)

当你既用 ChatGPT 账号登录过(OAuth),环境里又设置了 OPENAI_API_KEY,两套认证并存时连接会变得不稳定。清掉一套再重新登录:

  1. 退出登录并清掉缓存的认证:
    清理认证
    $ codex logout
    $ rm -f ~/.codex/auth.json
    $ unset OPENAI_API_KEY
  2. 选一种方式重新登录——用 ChatGPT 账号:codex login;或只用 API Key:codex login --with-api-key
  3. 重新运行 codex,发一句简单消息确认能正常回复。

原因四:VS Code 插件 / WSL2 网络

在编辑器或 WSL 里的重连,往往和终端里是两套网络配置:

VS Code 插件一直 Reconnecting

插件不读你终端的 export,要在 VS Code 自己的设置里配代理:按 Ctrl+, 打开设置,搜索 proxy,把 Http: Proxy 填成 http://127.0.0.1:7890,然后重启 VS Code

Windows + WSL2 连不上

Codex Desktop 在 WSL2 里启动的 codex 进程不会自动用 Windows 的系统代理。两种思路:

  • 在 WSL 里开启镜像网络模式(mirrored networking):让 WSL 与 Windows 共用 loopback,代理端口才可达。在 %USERPROFILE%\.wslconfig 写入 [wsl2]\nnetworkingMode=mirrored,然后 wsl --shutdown 重启。
  • 同样注意 socks5 不可用,WSL 内也要用 http 代理。

原因五:版本 Bug 与会话卡死

排除了网络,仍然重连或卡在 Working 不动,多半是某个版本的已知问题。按优先级处理:

  1. 关掉所有会话、单实例重启(社区反馈最有效):Ctrl+C 结束全部 codex 进程,等约 60 秒彻底退出,只开一个新会话,发一句 HELLO 确认恢复。
  2. 升级到最新版
    升级
    $ npm install -g @openai/codex@latest
    $ codex --version
    # Homebrew 用户:brew upgrade codex
  3. 排查 MCP 服务:个别 MCP server 会拖垮连接。临时在 ~/.codex/config.toml 里注释掉可疑的 [mcp_servers.*],或切换 experimental_use_rmcp_client 再试。
  4. 提交诊断:会话内运行 /feedback,它会附上请求 ID、错误日志与连接快照,便于定位。

最后手段:彻底重置

以上都试过仍不行,做一次干净重装(会清掉登录信息,需要重新登录):

彻底重装
$ npm uninstall -g @openai/codex
$ npm install -g @openai/codex@latest
# 可选:清掉配置与认证(谨慎)
$ rm -rf ~/.codex

恢复连接后看到 ● connected — gpt-5.3-codex 就说明一切正常了。建议把代理变量写进 ~/.zshrc 永久生效,下次开机即用。

常见疑问

是不是我账号被封 / 没权限?

很少是这个原因。如果是权限/额度问题,通常会返回明确的 401429 错误而不是反复重连。先用 curl 测连通性、再看 报错速查 对照具体错误码。

代理也开了、socks5 也换成 http 了,还是不行?

确认 export 和启动 codex 在同一终端;用 curl -x http://127.0.0.1:端口 -I https://api.openai.com/v1/models 验证这个端口真的能出网;再排查是否被 NO_PROXY 或大小写变量覆盖。

每次都要手动 export 太麻烦?

把三行 export 写进 ~/.zshrc(或 ~/.bashrc)就会永久生效。Windows 可在系统环境变量里加 HTTPS_PROXY