# Windows 上 Codex 突然 stream disconnected，网页还能聊

**URL:** <https://www.shiqidu.com/t/topic/1778>\
**Category:** 问题求助\
**Tags:** AICoding, Windows, 问与答, Codex\
**Created:** [2026 年10 月 25 日 07:23 UTC](https://www.shiqidu.com/t/topic/1778 "2026-10-25T07:23:46Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![shiqidu\_editor](https://www.shiqidu.com/user_avatar/www.shiqidu.com/shiqidu_editor/32/528_2.png) [@shiqidu\_editor](https://www.shiqidu.com/u/shiqidu_editor)\
发布日期： [2026 年10 月 25 日 07:23 UTC](https://www.shiqidu.com/t/topic/1778/1 "2026-10-25T07:23:46Z")

</div>

Windows 上 Codex CLI 用着好好的，某天敲完提示词就断：

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

```

网页 ChatGPT 还能聊，订阅页也看不到欠费。第一反应多半是额度用完了、账号被踢了或者代理又不稳。但在不少机器上，真正的原因是 Schannel 不认证书链，跟额度没关系。

桌面版有时更让人摸不着头脑：界面只刷 `Reconnecting... waiting for network`，不显示证书错误。CLI 至少还能在日志/报错里带上那个 `backend-api/codex/responses` URL。不管哪边，先别急着换号。

## 用 curl 对一下

PowerShell 里跑：

```bat
curl.exe -Iv https://chatgpt.com

```

如果看到：

```plaintext
schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)
The certificate chain was issued by an authority that is not trusted.

```

基本可以确定是本机 HTTPS 证书校验失败了。443 端口可能还是通的，`Test-NetConnection chatgpt.com -Port 443` 显示 `TcpTestSucceeded : True` 也常见。浏览器照样打开 [chatgpt.com](http://chatgpt.com)，因为 Chrome/Edge 自己的证书更新路径，经常和命令行用的系统 Root 库不同步。Codex（以及很多 Windows 版 curl）走 Schannel 时，握手失败就只报一句含糊的 `stream disconnected`。GitHub 上 Windows 相关 issue 里，复现路径就是：TCP 通、浏览器通、`curl.exe -Iv` 报 `SEC_E_UNTRUSTED_ROOT`，Codex 却只重连。

再顺手看一眼环境变量。有人给终端塞过临时的 `SSL_CERT_FILE`，文件删了变量还在，或者 PEM 只剩半截。Codex 会优先读 `CODEX_CA_CERTIFICATE`，没有才回退 `SSL_CERT_FILE`。bundle 指错了，浏览器用的是系统库所以没事，只有 CLI 出错。

## 系统根证书缺了或停更了

长期没打补丁、精简镜像、装机包裁过证书存储，Root 库会缺 CA，验 `chatgpt.com`（常见 Let’s Encrypt 一类链）就会失败。个人电脑上常见的做法是用管理员 CMD / PowerShell 从 Windows Update 拉当前受信任根集合，再写进本机 Root：

```bat
certutil -generateSSTFromWU roots.sst
certutil -addstore -f Root roots.sst

```

做完关掉终端重开（旧进程可能还缓存着之前的信任状态），再跑 `curl.exe -Iv https://chatgpt.com`。握手正常了再开 Codex。这两条是 Windows 自带 `certutil` 的能力，不是第三方脚本。

公司机还要看组策略有没有关掉根证书自动更新：

```bat
reg query "HKLM\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot" /v DisableRootAutoUpdate

```

值为 `1` 时，系统不会自动补根。有人在获准改策略后把该项改回 `0`，并执行：

```bat
certutil -setreg chain\ChainCacheResyncFiletime "@now"

```

再重启，`SEC_E_UNTRUSTED_ROOT` 消失，Desktop 重连循环也停了。键在 `HKLM\SOFTWARE\Policies` 下，域管机器改完可能被 GPO 刷回去，这种情况得找 IT，别自己反复改。

## 公司网在做 TLS 解密时

出口挂着企业代理 / MITM 网关时，叶子证书往往由公司私有根签发。官方认证文档写明：把公司根 CA 的 PEM 指给 Codex，`CODEX_CA_CERTIFICATE` 优先，未设则用 `SSL_CERT_FILE`；同一套对登录、普通 HTTPS、安全 WebSocket 都生效。环境变量页也是这个优先级。PowerShell 示例：

```powershell
$env:CODEX_CA_CERTIFICATE="C:\certs\corp-root.pem"
codex

```

PEM 跟 IT 要可核验的那份，别用网上来路不明的根证书。修完用 curl 对照：系统信任修好后，不带自定义 CA 的 `curl.exe -Iv https://chatgpt.com` 应能完成 TLS；若只有走公司解密的链路才通，就确认 Codex 启动的那个会话里 CA 变量还在。

## 跟额度、登录失败怎么分开看

额度不够、工作区没席位，通常会在登录或权限提示里说清楚。`token_exchange_failed` 那类是 OAuth 换票阶段的事，另开帖写过，这里不重复。这帖说的是另一种情况：已经能进对话，请求打到 `chatgpt.com/backend-api/codex/responses` 时断流，而且 curl 在证书这一层就失败，这时先修信任链。代理节点不稳也会断，但证书都过不去的话，先修 Schannel 再查线路。

修好后建议确认两件事：`curl.exe -Iv https://chatgpt.com` 能完成 TLS；新开一轮 Codex 对话不再秒断。还挂的话把 curl 完整输出、`DisableRootAutoUpdate` 查询结果、是否设置了 `CODEX_CA_CERTIFICATE`/`SSL_CERT_FILE` 贴出来，方便大家帮你看。

参考：

- Custom CA / 认证说明：[https://developers.openai.com/codex/auth](https://developers.openai.com/codex/auth)
- 环境变量（`CODEX_CA_CERTIFICATE`、`SSL_CERT_FILE`）：[https://developers.openai.com/codex/environment-variables](https://developers.openai.com/codex/environment-variables)
