前言
不知道大家有没有遇到过这种情况:无论是 Codex CLI 还是 Codex App,每次启动或刚发送问题时,都会先出现一串 Reconnecting...。
几乎每次都要经历 5 次重连后,才能正常响应。明明只是想快速处理一点代码问题,却把时间都浪费在反复重连上。更让人头疼的是,它并不是完全无法连接,而是前 5 次全部失败,最后一次却又成功了。这种“明明可以连接,却偏偏要反复重试”的体验,真的非常影响使用效率。
📌 报错特征
Reconnecting...🔍 问题原因:为什么会出现 tls handshake eof?
问题的根本原因在于:WebSocket(WSS)协议在当前局域网或代理环境下,无法正常完成全双工通信。
Codex 默认会优先建立 WebSocket 流式连接。当代理环境对 WSS 支持不佳,或握手失败时,它会不断尝试重新连接。只有在达到重试上限后,才会降级为 HTTP 模式。这正是导致漫长 5 次 Reconnecting 的主要原因。
🛠️ 解决方案(实测有效)
经过多台设备测试,目前共有以下 3 种有效解决方案,可根据自己的代理软件和使用习惯选择最适合的一种。
方案一:修改 config.toml,禁用 WebSocket(⭐⭐⭐⭐⭐ 强烈推荐)
通过修改 Codex 的配置文件,在对应的 Provider 中明确禁用 WebSocket,并强制使用 HTTP 通信,从根源上避免 WSS 重连问题。
第一步:找到配置文件
配置文件通常位于用户目录下的 .codex 文件夹中。
Windows
C:\Users\你的用户名\.codex\config.tomlLinux / macOS
~/.codex/config.toml第二步:修改配置
如果使用官方接口,建议新建一个自定义 Provider(实测成功率高于直接修改默认配置)。
model = "gpt-5.4-mini"
model_reasoning_effort = "high"
disable_response_storage = true
model_provider = "openai_http"
[model_providers.openai_http]
name = "OpenAI HTTP Only"
requires_openai_auth = true
wire_api = "responses"
supports_websockets = false关键配置说明
| 配置项 | 作用 |
|---|---|
wire_api = "responses" | 强制使用 Responses API,避免容易出问题的流式连接 |
supports_websockets = false | 明确禁用 WebSocket,阻止 Codex 优先尝试 WSS |
提示: 如果你已经配置了其他 Provider,不想新建,也可以直接在原有 Provider 中增加以上两项配置进行测试。
方案二:开启代理软件的 TUN 模式(适用于 Clash Verge 等)
如果你使用的是 Clash Verge 或其他支持 TUN 模式 的代理客户端,可以直接在设置中开启 TUN Mode。
原理
TUN 模式会从系统底层接管网络流量,不再依赖应用程序是否正确使用系统代理,而是统一接管所有网络请求,包括 WebSocket(WSS)流量。
对于经常使用终端工具(例如 Codex CLI、Claude Code 等)的开发者来说,这是兼容性最好、最省心的方案之一。
方案三:为 Codex 配置 .env 代理环境变量
在 ~/.codex 目录下创建或修改 .env 文件,明确指定代理地址,避免 Codex 无法正确识别代理。
方法一:手动配置
假设你的 HTTP(或 Mixed)代理端口为 7890:
HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890
ALL_PROXY=http://127.0.0.1:7890
NO_PROXY=localhost,127.0.0.1,::1方法二:让 AI 自动配置(推荐)
如果不想自己查找代理端口,可以直接把下面这段提示词发送给 Codex:
帮我修复 Codex App 一直 Reconnecting 的问题。
请定位我本机正在使用的代理端口和代理协议,然后创建或更新 ~/.codex/.env,并写入以下代理配置。
不要写死端口,请自动替换为实际端口;如果文件已经存在,请保留其他配置。
HTTP_PROXY="http://127.0.0.1:<HTTP 或 Mixed 端口>"
HTTPS_PROXY="http://127.0.0.1:<HTTP 或 Mixed 端口>"
NO_PROXY=localhost,127.0.0.1,::1
配置完成后,请检查是否生效,并告诉我如何重启 Codex。⚠️ 避坑指南:为什么修改后还是没有效果?
一定要彻底关闭旧进程,再重新启动 Codex。
修改配置文件或环境变量后,如果后台仍然存在旧的 Codex 进程,新配置通常不会立即生效。
请确保彻底退出 Codex(可通过任务管理器或 kill 命令结束所有相关进程),然后重新启动。
Windows: 可以在任务管理器结束所有Codex.exe或相关进程。
Linux / macOS: 可以执行:
pkill -f codex重新启动 Codex 后,新的配置才能正确加载,彻底告别反复 Reconnecting,恢复流畅使用体验。
📋 总结
| 方案 | 推荐指数 | 难度 | 是否推荐 |
|---|---|---|---|
修改 config.toml 禁用 WebSocket | ⭐⭐⭐⭐⭐ | ★☆☆☆☆ | ✅ 最推荐 |
| 开启 TUN 模式 | ⭐⭐⭐⭐☆ | ★★☆☆☆ | ✅ 推荐 |
配置 .env 代理变量 | ⭐⭐⭐⭐☆ | ★★☆☆☆ | ✅ 推荐 |
如果你的 Codex 每次都会出现 Reconnecting ×5,建议优先尝试 方案一。绝大多数情况下,仅需增加两行配置即可彻底解决问题。