疑难排查 · Codex CLI
Codex stream error: unexpected status 401/404 解决方法
Codex 里流式过程中的 HTTP 故障会打印为 stream error: unexpected status。401、404 和 429 在这里分别意味着什么,以及如何用 curl 复现来定位坏掉的那一半。
你看到的报错
stream error: unexpected status 401 Unauthorized为什么会发生
- 401——env_key 变量未设置、为空,或它的密钥不属于 profile 里的 base_url。
- 404——base_url 与线上协议不匹配:缺 /v1、重复成 /v1/v1,或主机根本不提供 Responses API。
- 429——密钥的每分钟吞吐量耗尽;流在开始之前就被拒绝。
- 代理或网络设备在响应中途切断 SSE 流,会产生没有状态码的断连变体。
如何解决
- 用 curl 对 profile 里的确切 base_url 加 /responses 复现,发送同一把密钥——状态码会告诉你坏的是哪一半。
- 401 就修密钥/端点配对;404 就把 base_url 改成文档给出的值;429 就等过窗口并减少并行运行。
- 对于反复出现、没有状态码的流中断连,关掉 VPN 或代理再测——SSE 是干扰性中间设备的第一个牺牲品。
在 Codex 之外复现
curl https://openai.api.apitoken.sale/v1/responses \
-H "Authorization: Bearer $APITOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.6-sol","input":"Reply with exactly: connected"}'相关搜索
codex stream error unexpected statusstream disconnected before completion
常见问题
Codex 里的 stream error: unexpected status 401 是什么意思?+
端点在流开始时就拒绝了凭据。检查 profile 的 env_key 变量是否在运行中的 shell 里已设置,以及它的密钥是否属于 profile 的 base_url。
主机明明是对的,为什么 404?+
路径错误:针对本网关,base_url 必须包含 /v1,且不能重复。Responses 路径由 Codex 自己追加。
流在半路死掉且没有状态码——是 API 的问题吗?+
通常是网络路径的问题:缓冲或截断 SSE 的代理和 VPN。先在干净的连接上用 curl 复现,再怪端点。