← 返回帮助中心

使用 VPN 时 OpenAI Codex 报错「stream disconnected before completion」怎么办?

如果你在连接 VPN 的情况下使用 OpenAI Codex(命令行工具),可能会遇到类似下面的报错, 导致任务中断、代码审查跑不完:

■ stream disconnected before completion: error sending request for url
(https://chatgpt.com/backend-api/codex/responses)

或者在重试若干次后失败:

Reconnecting... 1/5 (stream disconnected before completion ...)
Reconnecting... 2/5 ...
...
Falling back from WebSockets to HTTPS transport.

这篇文章解释原因,并给出在 Windows 和 macOS 上的完整解决方法。

一句话结论

不是 VPN 的故障,而是 Codex 命令行工具默认的 WebSocket 长连接, 经过任何代理时都容易超时/断开的已知兼容性问题。解决方法是:修改 Codex 配置,禁用 WebSocket、强制走更稳定的 HTTP/SSE 传输。

为什么会断开?

OpenAI Codex 新版默认使用 WebSocket 作为传输通道。WebSocket 是一种「长连接」—— 需要长时间保持不断开。而这种长连接在经过任何代理/VPN 时,都容易因为以下原因被中断:

  • 中间网络设备对长时间连接的空闲回收;
  • WebSocket 握手在代理环境下超时;
  • 基于 UDP/QUIC 的传输协议在长连接场景下更易被运营商网络掐断。

这是 Codex 客户端层面的传输兼容性问题,社区已有大量相同反馈。好在有成熟的解决办法。

解决方法:让 Codex 改走 HTTP/SSE

我们让 Codex 禁用 WebSocket、强制使用更稳定的 HTTP/SSE 传输。 只需修改 Codex 的配置文件 config.toml

第 1 步:找到 / 创建配置文件

Windows:

C:\Users\你的用户名\.codex\config.toml

macOS:

~/.codex/config.toml

~ 代表你的用户主目录,完整路径通常是 /Users/你的用户名/.codex/config.toml。 如果 .codex 文件夹或 config.toml 文件不存在,手动创建即可 (.codex 是隐藏文件夹)。

如何快速打开(可选)

Windows(PowerShell):

notepad "$env:USERPROFILE\.codex\config.toml"

macOS(终端):

mkdir -p ~/.codex && open -e ~/.codex/config.toml

第 2 步:写入以下配置

把下面内容添加config.toml(如果文件已有其他内容,追加即可):

model_provider = "openai_http"

[model_providers.openai_http]
name = "OpenAI HTTP only"
base_url = "https://chatgpt.com/backend-api/codex"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false

关键在最后一行 supports_websockets = false——它会让 Codex 跳过最容易断开的 WebSocket 通道,改用更稳定的 HTTP/SSE。

第 3 步:保存并重启 Codex

保存文件后,完全关闭并重新启动 Codex(命令行用户请退出当前会话、重新运行codex),让新配置生效。

验证是否解决

  1. 重新运行一个 Codex 任务(例如代码审查或较长的对话)。
  2. 观察是否还会出现 stream disconnectedReconnecting... x/5

绝大多数情况下,禁用 WebSocket 后即可恢复稳定。如果仍偶发断开,可尝试切换到 VPN 的 其他节点后再试。

常见疑问

Q:改了配置会影响 Codex 其他功能吗?

这是社区广泛采用的稳定性解法。它只是切换传输通道(从 WebSocket 改为 HTTP/SSE), 不影响你正常使用 Codex 的能力。如果未来 Codex 官方修复了 WebSocket 兼容问题, 你可以随时删除这段配置恢复默认。

Q:这是 VPN 的问题吗?

不是。该报错在任何代理/VPN 环境下都可能出现,根源是 Codex 客户端默认传输方式与代理的兼容性, 按上面的方法修改 Codex 配置即可解决。

Q:我不用命令行,用的是图形界面 / 其他工具?

原理相同——核心是避免不稳定的 WebSocket 长连接。若该工具支持切换传输方式, 同样建议关闭 WebSocket、改用 HTTP/SSE。

如果按上述步骤操作后仍有问题,欢迎通过客户端内的「用户中心」联系我们, 并附上完整的报错信息,我们会进一步协助排查。