我估计大家在用 Codex 的时`候,一定对这个场景并不陌生。
当你打算让 Codex 开始干活的时候。

当你想让 Codex 给出有效指导的时候。

当你想用 Codex 跑任务的时候。

这个 Reconnecting 是神 TM 烦,这到底是啥玩意?
别急,这个 Reconnecting ,有说法的。
一般来说,这个 Reconnecting 的出现,会分为两种情况:
- Codex 没有走代理
- 已经连到服务器,但被服务器拒绝
先说第一种情况,这个大家应该都能理解,毕竟你都用上 Codex 了,肯定能理解咋回事了。
但是这种连不上,它在日志中直接体现的就是 WebSocket 握手超时。
为什么会这样?因为 Codex Desktop 是一个桌面应用,它不像浏览器那样会自动吃系统代理。它启动的时候,需要显式读取环境变量里的 HTTP_PROXY、HTTPS_PROXY 这些,才会走代理。如果这些变量没设,它就以为自己能直达,结果就是等半天没响应,只好进入重连循环。
这种情况的处理方式是直接在 ~/.codex/.env 中写入代理变量。
以 Mac 为例,如果你用的是 Clash 或类似工具,常见 HTTP/SOCKS5 混合端口是 7890,但每个人的实际端口可能不一样,所以动手前最好先确认一下。你可以直接看代理工具的设置,或者在终端跑一下 env | grep -i proxy 看看当前 shell 已经用了什么
大家可以直接用我下面的 Prompt ,直接让 Codex 给你加上,如果你 Codex 实在连不上,用其他 Agent 也行。
ini
帮我修复 Codex Desktop 一直 Reconnecting 的问题。
请定位我本机正在使用的代理端口和代理协议,然后创建或更新 ~/.codex/.env,写入以下代理配置。不要写死 7890,请替换成实际端口;如果文件已经存在,保留其他配置。
HTTP_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
HTTPS_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
ALL_PROXY="socks5h://127.0.0.1:<SOCKS5 或 mixed 端口>"
NO_PROXY="localhost,127.0.0.1,::1"
写入后检查配置是否正确,并告诉我需要如何重启 Codex Desktop。
如果你想手搓,那就用编辑器打开(或新建)~/.codex/.env,写入:
HTTP_PROXY="http://127.0.0.1:<端口,一般为 7890>" HTTPS_PROXY="http://127.0.0.1:<端口,一般为 7890>" ALL_PROXY="socks5h://127.0.0.1:<端口,一般为 7890>" NO_PROXY="localhost,127.0.0.1,::1"
到这里,第一种情况基本就解决了。
第二种情况更隐蔽,也是我自己遇到的。
请求已经到达了服务器,但是服务器把请求给拒了。

为什么会拒?如果你用的是 ChatGPT 账号,而账号开启了多因素认证(MFA),但 Codex 在初次认证时没有走完整的 MFA 流程,服务器就会把后续连接判定为未授权,直接断开。
这其实不是 Codex 的 Bug,而是 OpenAI 的安全策略在起作用:启用了 MFA 之后,一些旧 Session 或者不携带二次验证信息的连接会被强制失效。Codex Desktop 的登录状态恰好就可能因为缺少 MFA 验证而被踢下去,但又不会像网页端那样弹出二次验证提示,于是就卡在 Reconnecting 这个死循环里。
这种处理方式是
开启 ChatGPT MFA,然后按 Cmd + Q 完全退出 Codex,再重新打开。
别怀疑,官方也是这么说的。


我按照这个教程设置好 MFA,再把 Codex 完全退出重启后,就搞定了。
那个 Reconnecting 的提示再也没有出现过。
速度很快,非常丝滑。