一句话答案
stream disconnected before completion 的意思是:Codex 这一轮的响应流,在请求已经被接受之后、模型回复完成之前中断或出错了。它不是某一个具体错误。Codex 会把真正的原因写在冒号后面,看那一段就知道该怎么办:
| 冒号后面的文字 | 指向的问题 |
|---|---|
error sending request for url (...)、os error 10053、os error 10061 |
你的网络、VPN、代理或防火墙 |
stream closed before response.completed |
回复到一半连接被关了,可能是你和服务器之间的任何一环 |
idle timeout waiting for SSE |
超过空闲超时(默认 5 分钟)没有收到数据 |
An error occurred while processing your request. ... request ID ... |
服务端出错 |
Rate limit reached for ... / Request too large for ... |
每分钟 token 数或每分钟请求数的限制 |
Codex 会先自己重试,也就是报错前看到的 Reconnecting... 1/5。偶尔出现一次,重新发这一轮就行;每次都出现的话,按冒号后面的文字找原因。
报错长什么样
这条消息定义在 Codex 源码 codex-rs/protocol/src/error.rs 里,格式是 stream disconnected before completion: {原因},用于 HTTP 握手成功之后、response.completed 之前流断开或出错的情况。Codex 把它当作临时错误,会自动重试这一轮。
重试时会显示计数,比如 openai/codex#47538:
Reconnecting... 1/5 (stream disconnected before completion: stream closed before response.completed)
重试次数用完后,Codex 可能从 WebSocket 切换到 HTTPS 再试一次(#38366,有删节):
⚠ Falling back from WebSockets to HTTPS transport. stream disconnected before completion: Request too large for gpt-5.6-luna in organization org-... on tokens per min (TPM): Limit 200000, Requested 208334. The input or output tokens must be reduced in order to run successfully.
Codex issue 里报告过的其他原因:
stream disconnected before completion: error sending request for url (https://chatgpt.com/backend-api/codex/responses)
stream disconnected before completion: IO error: An established connection was aborted by the software in your host machine. (os error 10053)
stream disconnected before completion: No connection could be made because the target machine actively refused it. (os error 10061)
stream disconnected before completion: idle timeout waiting for SSE
stream disconnected before completion: An error occurred while processing your request. You can retry your request, or contact us through our help center at help.openai.com if the error persists. Please include the request ID <id> in your message.
出处:#38212、#54459、#49466、#53578、#53557。
消息里的 URL 也能看出 Codex 用的是哪个接口:ChatGPT 账号登录时是 chatgpt.com/backend-api/codex/...,用 OpenAI API Key 时是 api.openai.com/v1/...,用自定义 provider 时是它的 base_url。
按原因逐个解决
网络:error sending request、os error 10053、os error 10061
Codex 没能把请求发出去,或者连接被你本机关掉了。
- Windows 上的
os error 10061(连接被拒绝)。 Codex 尝试的地址上没有程序应答。如果 Codex 走的是本地代理,确认代理在运行、监听的端口和 Codex 用的一致,或者删掉让 Codex 走这个代理的设置。 - Windows 上的
os error 10053。 本机上的某个软件中止了连接:防火墙、杀毒软件、VPN 客户端或代理。暂停它们测一下,再给 Codex 加例外。 error sending request for url。 请求发出前就失败了:DNS、代理或网络问题。在同一个终端里确认 URL 里的主机能解析、能连上。
运行 codex doctor 查看 Codex 的运行环境。然后在同一个终端里测一下消息 URL 里的主机,比如 curl -I https://chatgpt.com 或 curl -I https://api.openai.com/v1/models。拿到任何 HTTP 状态码都说明主机能连上;报连接错误说明是网络链路的问题,不是 Codex 的问题。
中途断开:stream closed before response.completed
回复已经开始了,但在最后一个事件到达之前连接被关掉。你和服务器之间的任何一环都可能造成:不稳定的 Wi-Fi、VPN 切换节点、会掐断长连接的代理,或者服务器本身。
- 偶尔出现:让 Codex 自己重试,或者重新发这一轮。
- 在某个网络下经常出现:换个网络,或者关掉 VPN、代理测一下。
- 用了自定义 provider 或网关:去它的日志里查这条请求。中间的网关也可能关掉流。
空闲超时:idle timeout waiting for SSE
流上超过空闲超时没有收到任何事件。长时间推理或连接卡住都可能导致。自定义 provider 的超时是 ~/.codex/config.toml 里该 provider 配置块中的 stream_idle_timeout_ms(默认 300000,即 5 分钟),见 配置参考。
服务端错误:An error occurred while processing your request
流开始之后服务端返回了错误。重试这一轮。如果一直出现,用 /feedback 反馈,并附上消息里的 request ID。
这类报告经常扎堆出现:#45949、#45965、#46161、#46248 都是 2026 年 9 月 16–17 日提交的。在 #45925 里,一位用户在同一台机器、同一个网络下测出,失败率会随登录的 ChatGPT 账号变化。如果你什么都没改、错误突然开始出现,先去 issue 里看看,再决定要不要动本地配置。
限流或请求太大:Rate limit reached / Request too large
这类文字会写明是每分钟 token 数(TPM)还是每分钟请求数(RPM)的限制。
Rate limit reached for ... Please try again in 13.694s(#10060)是临时的,等提示的时间就行。Request too large for ... The input or output tokens must be reduced in order to run successfully.的意思是单个请求就超过了整个每分钟限额,等多久都没用。在 #38366 里,Codex 一直在重发一个 20.8 万 token 的请求,而 TPM 限额是 20 万。开一个新会话,或者运行/compact把对话压缩一下。
给自定义 provider 调整重试和超时
Codex 用的是你在 [model_providers.<id>] 下定义的 provider 时,可以在它的配置块里设置下面这些键。默认值来自 配置参考,高级配置 页面有示例:
| 键 | 默认值 | 作用 |
|---|---|---|
request_max_retries |
4 | 向 provider 发 HTTP 请求的重试次数 |
stream_max_retries |
5 | 流中断后的重试次数 |
stream_idle_timeout_ms |
300000 | 流可以沉默多久,超过就当作连接已断 |
网络偶尔断连时,多重试几次有帮助;如果原因是请求太大或配置写错了,加重试没有用。
用 TeamoRouter 的 Key 跑 Codex
TeamoRouter 是一个 API 网关,一个 Key 可以调 GPT、Claude、Gemini、DeepSeek。它支持 OpenAI Responses API(/v1/responses),Codex 可以把它当作自定义 provider 接入。没有订阅,按用量付费。
- 在 TeamoRouter 控制台 创建 API Key,Key 以
sk-teamo-开头。 - 充值,最低 $5。 充值弹窗支持银行卡;也可以点 「USDT支付」,用 USDT、USDC 或 ETH,从任意交易所 App 转账——收银台会按金额显示可用网络(BEP20 从 $5 起就能用)。步骤见 用 USDT 充值。
- 在
~/.codex/config.toml里加上 provider,最后两行可选:
model_provider = "teamorouter"
model = "gpt-6-sol"
[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"
stream_max_retries = 10
stream_idle_timeout_ms = 300000
- 在准备运行 Codex 的终端里设置 Key,并测一下链路:
export OPENAI_API_KEY="sk-teamo-..."
curl https://api.teamorouter.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
返回模型列表,说明链路和 Key 都没问题。然后在同一个终端里启动 codex。Windows 的命令见 安装与配置 Codex。
常见问题
「stream disconnected」是网络问题吗?
有时候是。它包着很多种原因,看冒号后面的文字:os error 错误码和 error sending request 是网络问题,Rate limit reached 和 An error occurred while processing your request 就不是。
Codex 会自动重试吗?
会。Reconnecting... N/5 就是 Codex 在重试。重试用完后,它还可能从 WebSocket 退回 HTTPS,再显示错误。
退出登录再登录能解决吗? 网络或限流原因的话不能。只有问题跟着账号走时(像 #45925 报告的那样)才有关系。
为什么在「remote compact task」时也会出现?
压缩也是一次请求,会因为同样的原因失败。像 Error running remote compact task: stream disconnected before completion: ... 这样的消息,原因在第二个冒号后面。