Codex 桌面端一直 Reconnecting 5/5?根因分析与逐步修复指南(macOS/Windows)
Codex 桌面端反复显示 “Reconnecting…”、重试计数从 1/5 走到 5/5 然后循环——这个问题在国内网络环境下的最常见根因是macOS 从 Finder/Dock 启动的 GUI 应用不会继承你写在~/.zshrc里的代理环境变量导致 Codex app-server 绕过了本地代理直连 OpenAI连接全部超时。这不是猜测是 GitHub Issue #306952026-06-30复现验证过的结论且有确认可行的修复方案用launchctl setenv把代理变量注入用户级 launchd 环境完全退出并重启 Codex 后重试事件归零。本文给出这条主路径的逐步操作、验证方法codex doctor以及排除法覆盖的其他三类 Reconnecting 场景长任务流断开、WebSocket 提前关闭、Windows 远程配对超时。症状确认你的问题是不是这一个先对号入座。Issue #30695 记录的典型症状对话界面反复出现“Reconnecting…”约15 秒一轮重试重试计数1/5 → 5/5循环往复日志中出现codex_core::responses_retry事件关键鉴别点同一台机器终端里的 Codex CLI 正常桌面 App 不正常或 App 从终端open启动正常、从 Finder/Dock 点图标启动就断连最后一条如果符合基本可以锁定是 GUI 代理环境变量问题直接看下一节。不符合的看本文后半部分的排除法。根因GUI 应用不读你的 .zshrc复现链条Issue #30695 报告者的分析官方标签已确认为 bug你的网络访问 OpenAI 需要本地代理如http://127.0.0.1:7890代理变量HTTP_PROXY/HTTPS_PROXY只写在~/.zshrc里终端进程会加载.zshrc所以 CLI 一切正常Finder/Dock 启动的 GUI 应用走 launchd不加载交互式 shell 配置Codex app-server 拿不到代理变量 → 直连 OpenAI → 全部超时 → 无限 Reconnecting这是 macOS 的机制问题不止 Codex任何依赖代理的 GUI 开发工具都可能踩到。修复launchctl setenv 三步走已验证第 1 步注入代理变量到 launchd 用户环境把127.0.0.1:7890换成你自己的代理地址端口launchctl setenv HTTP_PROXYhttp://127.0.0.1:7890launchctl setenv HTTPS_PROXYhttp://127.0.0.1:7890launchctl setenv http_proxyhttp://127.0.0.1:7890launchctl setenv https_proxyhttp://127.0.0.1:7890launchctl setenv NO_PROXYlocalhost,127.0.0.1大小写都要设——不同组件读取的变量名大小写不一致。第 2 步完全退出并重启 Codex注意是CmdQ 完全退出Dock 图标右键 → 退出不是关窗口。launchd 环境变量只对重启后新建的进程生效。第 3 步验证修复codex doctor--jsonIssue 中记录的修复成功标志WebSocket 握手返回HTTP 101 Switching Protocolstransport 初始化时reconnectAttempt0不再产生新的 retry 事件两个注意事项launchctl setenv是会话级的——注销或重启系统后失效需要重新执行。想持久化把这几条命令做成登录时运行的 LaunchAgent或写个 alias 一键执行撤销方法launchctl unsetenv HTTP_PROXY每个变量各执行一次已确认无效的路径给自定义 provider 设置supports_websockets false不能解决此问题——gpt-5.5 会直接报模型不支持错误Codex-Responses-Lite header 限制另案 #30224 跟踪中。不是代理问题其他三类 Reconnecting 场景排除法如果终端 CLI 同样断连或者你不在需要代理的网络按下表排查场景特征对应 Issue处理长任务流断开长时间运行的任务中途 “stream disconnected before completion”#30997官方未修复缓解大任务拆小、避免单轮超长生成CLI WebSocket 提前关闭CLI 反复重连后降级websocket 在 response.completed 前关闭#30933网络链路不稳定信号换稳定出口后重试Windows 远程配对超时模型思考中超时 remote pairing/reconnect 失败#30590官方未修复避免在思考中断开远程会话SSH 认证失效死循环桌面端反复重试已认证失败的 SSH 连接不退避#31080手动断开该远程连接重新认证后再连另一个容易混淆的问题App 冻结不是 Reconnecting。如果 Codex 在使用内置浏览器插件时整个界面卡死、无法输入那是 #30624日志里会有上万条 “app-server initialize handshake timed out”——只能强制退出重启官方未修复缓解方法是让 Codex 用系统 Chrome 而不是内置浏览器做页面验证。排查工具箱日志位置macOS# App 日志ls~/Library/Logs/com.openai.codex/# 会话记录ls~/.codex/sessions在日志里搜这两个关键词定位问题类型responses_retry→ 代理/网络连接问题本文主路径initialize handshake timed out→ app-server 握手问题#30624 家族版本核对——桌面 App 和 CLI 版本可能不同步报 Bug 前先确认codex--version/Applications/Codex.app/Contents/Resources/codex--version上报问题在 App 输入框键入/发送反馈可附带会话 IDGitHub 提 issue 前先搜connectivity标签避免重复。注意外发日志前检查其中是否含密钥和内网地址官方文档明确提醒。常见问题Q为什么终端里的 Codex CLI 好好的桌面 App 就不行终端进程加载~/.zshrc拿到了代理变量Finder/Dock 启动的 GUI 应用走 launchd不读交互式 shell 配置。这就是两者行为差异的全部原因也是launchctl setenv能修复的原理。Q每次重启电脑都要重新执行 launchctl setenv 吗是的它是会话级设置。一劳永逸的做法写一个~/Library/LaunchAgents/下的 plist 在登录时自动执行或者接受每次开机跑一次脚本。官方 Issue 里请求的App 内代理设置项截至发稿尚未实现。Q系统代理网络偏好设置开了为什么 Codex 还是连不上Issue #30695 的报告者明确请求 Codex Desktop “honor macOS system proxy settings”——也就是说当前版本26.623.x不读系统代理设置只认环境变量。这正是很多人明明开了代理还是断连的原因。QReconnecting 循环时正在跑的任务会丢吗会话记录在~/.codex/sessions本地保留。恢复连接后可以 resume但注意 #30424 报告过 SSH 断连后 resume 可能产生两个分叉的 agent——恢复后先确认只有一个活跃会话在跑。Q国内网络下有没有不折腾代理的替代路径Codex 桌面端必须直连 OpenAI 服务代理不可绕过。如果你的场景只是要一个能干活的编码 Agent而非必须 Codex可以考虑走国内可直连的 API 方案如七牛云的 Anthropic 兼容端点 Claude Code 工具链网络层零配置——工具选型时把网络可达性列为一票否决项能省掉这整篇文章的排查。总结Codex 桌面端 Reconnecting 5/5 的排查决策树很短先做鉴别终端 CLI 正常而 App 断连 → 代理环境变量问题主路径修复用launchctl setenv注入五个代理变量 完全重启 codex doctor验证HTTP 101不匹配再走排除法长任务流断开/#30997、WebSocket 提前关闭/#30933、Windows 远程配对/#30590。记住三个事实当前版本不读 macOS 系统代理设置、launchctl setenv重启后失效、内置浏览器冻结是另一个问题不要混淆。这些结论全部来自官方仓库 Issue 原文修复方案在 #30695 中有完整验证记录。据 openai/codex GitHub Issues2026-07-02 抓取相关 Issue 均为 Open 状态。官方修复合入后本文方案可能不再必要建议关注 Issue #30695 的后续动态。延伸资源国内直连的 Agent 工具链配置https://zcn3fx96oxg4.feishu.cn/wiki/XKnIwXE4GiGtfUkeUJfcUhRAnJg