疑难排查 · 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 status
  • stream 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 复现,再怪端点。

跳过折腾坏掉的配置

apiToken.sale 提供标准的 Anthropic API——同样的模型、同样的 SDK、一个预付余额。把你工具的 base URL 指向它,本页的配置即可原样生效。