大家好,我是G探险者! 今天记录一个windows环境下使用codex一直断流的问题,让我痛苦不堪,整整一天的时间,最终搞定,也是魔法打败魔法,使用chatgpt自查,反复追问,最后搞定,值得记录,能够帮到遇到类似问题的朋友们也不枉我花费一天的时间。

一、问题现象
在 Windows 本地命令行中运行 Codex CLI 时,输入正常指令后报错:
text
stream disconnected before completion: error sending request for url (https://chatgpt.com/backend-api/codex/responses)
同时,手动执行下面的网络探测命令时,曾出现过证书校验错误:
bat
curl https://chatgpt.com/backend-api/codex/responses
报错示例:
text
curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325) - 证书链是由不受信任的颁发机构颁发的。
这类现象说明,Codex CLI 表面上是"流式响应中断",但底层更可能是 HTTPS/TLS 证书链校验失败,而不是单纯的账号权限或额度问题。
二、相关背景
Codex CLI 官方安装方式是通过 npm 安装 @openai/codex,首次运行时会提示登录。CLI 默认可通过浏览器完成 ChatGPT 登录,也支持 API Key 登录。官方文档还说明,CLI 会缓存登录态,后续启动时复用本地认证信息。([OpenAI开发者][1])
另外,OpenAI 官方说明当前 ChatGPT Plus、Pro、Business、Edu 和 Enterprise 计划都包含 Codex 访问,因此"已经开通 Plus 但 CLI 突然报错"并不必然意味着套餐权限缺失。([OpenAI开发者][2])
三、问题初步判断
本次排障中,最关键的判断链路如下:
1. 先排除"套餐/权限问题"
因为用户已经升级到 Plus,而官方文档明确说明 Plus 计划包含 Codex,所以问题优先级不应放在"没有资格使用 Codex"上。([OpenAI开发者][2])
2. 再看 CLI 的网络错误表现
当 curl 直接访问 chatgpt.com 相关地址时,报出:
text
SEC_E_UNTRUSTED_ROOT
这是 Windows Schannel 的典型报错,含义是:
系统在校验证书链时,发现根证书不受信任,或本机无法正确构建信任链。
由于 Windows 下很多命令行 HTTPS 请求会依赖系统证书库,因此这类问题会直接影响 Codex CLI 与 OpenAI 服务的 TLS 握手。
3. 浏览器证书查看结果正常
随后在浏览器里查看 chatgpt.com 证书,看到的是 Let's Encrypt 链路,而不是 360、企业代理或其他中间人证书。这说明站点本身的公网证书大概率没有问题,更像是 本机 Windows 根证书库或证书链缓存异常。
4. 后续 curl -I https://chatgpt.com 返回 403
之后再次执行:
bat
curl -I https://chatgpt.com
拿到了 HTTP 403 且响应头中带有 Cloudflare challenge 标识。这个结果说明当时 TLS 握手已经能成功完成,只是被 Cloudflare 当作非浏览器请求做了挑战拦截。也就是说,到了这一步,证书层面已经不再是硬阻塞问题。
四、根因分析
本次问题的根因可以总结为:
Windows 本机根证书库/信任链异常,导致命令行环境在校验
chatgpt.com的 HTTPS 证书链时失败,进而让 Codex CLI 底层请求异常,最终表现为stream disconnected before completion。
由于 Codex CLI 需要通过 HTTPS 与 OpenAI/ChatGPT 相关服务通信,而登录态与请求流程都依赖正常的 TLS 信任链,所以一旦系统根证书库不完整、过旧、损坏,或者链构建异常,就会导致 CLI 无法稳定完成请求。官方文档也说明 Codex CLI 在首次运行时会走浏览器登录流程,并缓存登录态;如果底层网络与 TLS 不正常,CLI 的认证和请求流程都会受影响。([OpenAI开发者][3])
五、实际排查过程
步骤 1:确认是否为证书问题
执行:
bat
curl https://chatgpt.com/backend-api/codex/responses
如果看到类似下面的错误:
text
schannel: SEC_E_UNTRUSTED_ROOT
则优先怀疑系统证书链,而不是 Codex 套餐、登录态或 CLI 指令本身。
步骤 2:查看浏览器中的站点证书
在浏览器打开 https://chatgpt.com,查看证书颁发者。
本次看到的结果为 Let's Encrypt 正常链路,这说明:
- 不是明显的企业代理改签证书
- 不是 360/Fiddler/Charles 之类的中间人证书
- 更像是 Windows 命令行环境的信任链问题
步骤 3:再次验证 HTTPS 联通性
执行:
bat
curl -I https://chatgpt.com
如果拿到的是 HTTP 响应头,而不是 TLS 错误,说明握手已经恢复。 本次返回的是 Cloudflare 的 403 challenge,这属于后续访问策略层的问题,不再是根证书完全不信任的状态。
六、关键修复方案
本次真正解决问题的关键命令是:
bat
certutil -generateSSTFromWU roots.sst
certutil -addstore -f Root roots.sst
作用说明
第一条命令:
bat
certutil -generateSSTFromWU roots.sst
作用是从 Windows Update 生成最新的根证书集合文件。
第二条命令:
bat
certutil -addstore -f Root roots.sst
作用是将该根证书集合强制导入到本机的 Root 根证书库中。
执行完这两步后,Windows 对公网 HTTPS 证书链的信任能力恢复,Codex CLI 底层请求也随之恢复正常。
七、修复后的结论
修复成功后,可以得出以下结论:
- 这次问题 不是 ChatGPT Plus 权限未生效。官方文档明确说明 Plus 计划包含 Codex。([OpenAI开发者][2])
- 这次问题 不是 Codex CLI 本身逻辑坏掉。
- 这次问题 不是
chatgpt.com的公网证书本身错误。 - 真正的根因是 Windows 本机根证书库/信任链异常。
- 真正有效的修复动作是 更新 Windows 根证书库。
八、建议的标准排障模板
以后如果再遇到 Codex CLI 类似报错,可以直接按下面顺序排查。
1. 先确认 CLI 与登录方式
Codex CLI 官方支持通过 ChatGPT 登录或 API Key 登录,首次运行会拉起浏览器完成认证。([OpenAI开发者][3])
可执行:
bat
codex login status
或重新登录:
bat
codex logout
codex login
2. 检查 HTTPS 基础联通性
bat
curl -I https://chatgpt.com
如果这里就报 TLS/证书错误,优先处理系统网络信任问题。
3. 重点关注这些关键词
如果报错里出现以下字样,应优先怀疑证书链而不是业务权限:
SEC_E_UNTRUSTED_ROOTschannelcertificateSSLTLSunable to get local issuer certificate
4. 直接刷新 Windows 根证书
bat
certutil -generateSSTFromWU roots.sst
certutil -addstore -f Root roots.sst
5. 再次验证
bat
curl -I https://chatgpt.com
codex "hello world"
九、经验总结
这次排障最核心的一句话是:
Codex CLI 的
stream disconnected before completion只是表象,底层根因是 Windows 根证书库异常导致 HTTPS 证书链校验失败;更新根证书后,TLS 信任恢复,Codex CLI 也随之恢复正常。
对于这类问题,排障时不要一开始就把注意力放在:
- Plus 是否生效
- Codex 是否没额度
- 指令是否写错
更高效的思路是先判断:
- 本机是否能正常完成 HTTPS/TLS 握手
- 系统证书库是否可信
- 浏览器与命令行环境是否存在差异
- 是否有安全软件、代理、抓包工具影响系统证书链