codex命令超时问题根源在于请求生命周期阻断,需按顺序排查代理监听、dns解析、服务端负载、代理协议匹配及mcp启动超时五类原因,并针对性设置环境变量或配置文件。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在终端输入 codex 命令后长时间卡在“reconnecting”或直接报错“Request timeout exceeded 30000ms”,说明客户端已发出请求,但未在默认30秒内收到服务端有效响应——这不是简单的“连不上”,而是请求生命周期在某个环节被阻断。
网络链路不稳定
本地到 api.openai.com 的路径中任一节点丢包、延迟突增或 TLS 握手超时,都会触发 ETIMEDOUT。国内用户尤其常见于无线切换、代理工具端口未监听、SOCKS5 与 HTTP 代理混用导致协议不匹配。
运行 lsof -i :7890(macOS/Linux)或 netstat -ano | findstr :7890(Windows),确认代理进程确实在该端口处于 LISTEN 状态;若无输出,代理根本未生效,后续所有超时都是无效排查。
这一步必须先做。否则调大超时、换模型、重装 CLI 全是白忙。
服务端响应缓慢或过载
OpenAI 服务端在流量高峰、模型高负载或区域性限流时,首字节返回可能超过30秒。此时错误日志显示 “Request timeout exceeded 30000ms”,但 ping 和 curl -I 能通,说明网络可达,问题出在服务端处理链路上。
方法一:延长请求总超时
执行 export CODEX_REQUEST_TIMEOUT=120000,再运行 codex 命令。该变量将超时阈值从30秒提至120秒,覆盖 TLS 握手 + 上下文加载 + 首 chunk 返回全过程。
方法二:同步延长流式响应等待时间
export CODEX_STREAM_TIMEOUT=180000,避免长任务因中途无数据推送而中断。两项环境变量需同时设置才完整生效。
DNS 解析失败
错误提示为 ENOTFOUND Could not resolve api.openai.com,本质是本地 DNS 服务器无法将域名转为 IP。常见于企业内网 DNS 被劫持、家用路由器缓存污染、或系统 hosts 文件误写。
第一步:用 nslookup api.openai.com 查看解析结果
若返回空或非 34.120.x.x 段 IP,说明 DNS 异常。
第二步:临时绕过系统 DNS
执行 curl -x http://127.0.0.1:7890 https://34.120.112.200/v1/models -I --max-time 10(IP 来自上一步 nslookup 正确结果),若返回 200 或 401,即证实是 DNS 问题而非网络或代理问题。
【注意】不要直接修改 hosts 绑定 IP——OpenAI 证书绑定的是域名,硬写 IP 会导致 TLS 验证失败。
代理配置错误
代理端口正确但协议类型错配(如把 SOCKS5 代理填进 HTTP_PROXY)、代理工具未启用 HTTP/Socks5 模块、或环境变量未被 Codex 进程继承,都会导致连接被静默拒绝。
① 检查 ~/.codex/.env 文件是否存在且包含两行:
http_proxy=http://127.0.0.1:7890
https_proxy=http://127.0.0.1:7890
② 若使用 Clash/Stash/Surge,请进入其设置页,确认「HTTP 代理」和「Socks5 代理」开关均已打开,且端口号与上述 env 中一致。
③ 在同一终端中执行 echo $https_proxy,确保输出与 .env 一致;若为空,说明终端未加载该文件,需手动 source 或重启终端。
MCP 服务启动超时
Codex 启动时需先拉起本地 MCP(Model Control Protocol)子服务,该服务默认仅等待30秒。国内经代理链路后,TLS 握手+证书验证+上下文初始化常超时,导致整个 Codex 进程卡死在“Reconnecting”。
打开 ~/.codex/config.toml,在文件末尾新增段落:
[mcp_servers.codex_apps]
startup_timeout_sec = 60
这一项必须放在 [mcp_servers] 下级,不能嵌套在 [model_providers] 或其他任意段落内;若已有同名段落,直接修改数值即可。60秒是实测可覆盖国内典型代理链路全周期的底线值。











