最快路径:在启动 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 走代理——它读取标准的代理环境变量:
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。
不想污染全局环境,可以只在当前命令前临时加: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_PROXY 是 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,两套认证并存时连接会变得不稳定。清掉一套再重新登录:
- 退出登录并清掉缓存的认证:
$ codex logout $ rm -f ~/.codex/auth.json $ unset OPENAI_API_KEY - 选一种方式重新登录——用 ChatGPT 账号:
codex login;或只用 API Key:codex login --with-api-key。 - 重新运行
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 不动,多半是某个版本的已知问题。按优先级处理:
- 关掉所有会话、单实例重启(社区反馈最有效):
Ctrl+C结束全部 codex 进程,等约 60 秒彻底退出,只开一个新会话,发一句HELLO确认恢复。 - 升级到最新版:
$ npm install -g @openai/codex@latest $ codex --version # Homebrew 用户:brew upgrade codex - 排查 MCP 服务:个别 MCP server 会拖垮连接。临时在
~/.codex/config.toml里注释掉可疑的[mcp_servers.*],或切换experimental_use_rmcp_client再试。 - 提交诊断:会话内运行
/feedback,它会附上请求 ID、错误日志与连接快照,便于定位。
最后手段:彻底重置
以上都试过仍不行,做一次干净重装(会清掉登录信息,需要重新登录):
$ npm uninstall -g @openai/codex
$ npm install -g @openai/codex@latest
# 可选:清掉配置与认证(谨慎)
$ rm -rf ~/.codex
恢复连接后看到 ● connected — gpt-5.3-codex 就说明一切正常了。建议把代理变量写进 ~/.zshrc 永久生效,下次开机即用。
常见疑问
是不是我账号被封 / 没权限?
很少是这个原因。如果是权限/额度问题,通常会返回明确的 401 或 429 错误而不是反复重连。先用 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。