Codex偶尔超时是明确配置问题信号,需先运行codex doctor诊断,确认代理是否生效(curl测试+端口监听检查),再延长MCP启动超时至60秒、设置CODEX_REQUEST_TIMEOUT=120000,并为macOS桌面端注入launchctl环境变量。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

codex偶尔连接超时不是正常现象,而是明确的网络链路或配置问题信号——国内用户在未调优状态下,连续三次请求中出现一次超时,基本可判定为代理未生效、超时阈值过短或GUI环境变量缺失。
先确认是不是真超时
执行诊断命令:codex doctor 或 codex --print "ping" --max-turns 1。如果输出里带 Error: Request timeout exceeded 30000ms 或 ETIMEDOUT,就是实打实的超时,不是偶然抖动。
这一步必须做,因为“偶尔超时”常被误判——实际可能是每次请求都走直连,只是某些时段DNS缓存刚好命中,看起来像偶尔成功。
检查代理是否真正生效
方法一:终端里直接测试代理链路
运行 curl -x http://127.0.0.1:7890 https://api.openai.com/v1/models -I --max-time 10。返回 HTTP/2 401 或 HTTP/2 200 才算通;若报 Connection refused,说明代理根本没跑,或者端口不对。
方法二:查代理进程监听状态
macOS/Linux 执行 lsof -i :7890,Windows 执行 netstat -ano | findstr :7890。输出里必须有 LISTEN 状态,否则代理服务压根没绑定端口。
【关键前提】代理工具(Clash、Stash等)必须已开启且 HTTP/Socks5 端口设置为 7890(或你配置的实际端口),仅打开软件界面不等于服务在运行。
延长超时阈值(最常用修复)
第一步:打开 ~/.codex/config.toml(Windows 路径为 C:\Users\用户名\.codex\config.toml)
第二步:在文件末尾新增配置块:
[mcp_servers.codex_apps]startup_timeout_sec = 60
第三步:同时设置全局请求超时
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
执行 export CODEX_REQUEST_TIMEOUT=120000(临时)或写入 ~/.zshrc 永久生效。
默认 30 秒对国内代理链路严重不足——TLS 握手 + 上游响应 + 首 chunk 返回,60 秒才刚够稳住,120 秒能覆盖高延迟波动。
修复 macOS 桌面端“Reconnecting…” 循环
如果你用 Finder 或 Dock 点开 Codex 桌面 App,但终端里 codex 命令能正常跑,问题几乎 100% 出在这里。
原因:macOS GUI 应用不读 ~/.zshrc,导致 HTTP_PROXY 变量丢失 → Codex 直连 OpenAI → 全部超时 → 无限重连。
执行以下三步:
① 注入代理变量到系统级 launchd 环境:launchctl setenv HTTP_PROXY http://127.0.0.1:7890launchctl setenv HTTPS_PROXY http://127.0.0.1:7890
② 完全退出 Codex 桌面应用(右键 Dock 图标 → 退出,不能只关窗口)
③ 重新从 Dock 启动,观察重试计数是否归零。
这一步做完立刻生效,不用重启电脑,也不用改任何配置文件。
验证当前网络路径是否绕过代理
运行 codex login,复制命令行输出的回调 URL(形如 http://localhost:1455/callback?code=xxx),粘贴进 Chrome 地址栏回车。
看到 Cannot GET /callback 表示本地服务已启动但未处理请求;
看到 ERR_CONNECTION_REFUSED 表示服务根本没起来——大概率是 Windows 系统把 1455 端口划入排除区间,需执行 net stop winnat && net start winnat 释放。
【注意】Edge 和 Firefox 会拦截 localhost 回调,必须用 Chrome 测试。

















