Диагностика · Codex CLI
Codex: stream error: unexpected status 401/404 — решение
HTTP-сбои посреди стрима Codex печатает как stream error: unexpected status. Что там означают 401, 404 и 429 и как воспроизвести их через curl, чтобы найти сломанную половину.
Что вы видите
stream error: unexpected status 401 UnauthorizedПочему возникает
- 401 — переменная из env_key не задана, пуста, либо её ключ не принадлежит base_url из профиля.
- 404 — base_url не подходит протоколу: пропущенный /v1, удвоенный /v1/v1 или хост, который не обслуживает Responses API.
- 429 — исчерпана поминутная пропускная способность ключа; стриму отказывают ещё до старта.
- Прокси или сетевое устройство, обрывающее SSE-стрим посреди ответа, даёт вариант с разрывом, а не со статусом.
Что делать
- Воспроизведите через curl по точному 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
Вопросы и ответы
Что означает stream error: unexpected status 401 в Codex?+
Эндпоинт отклонил учётные данные на старте стрима. Проверьте, что переменная из env_key профиля задана в работающей оболочке и что её ключ принадлежит base_url профиля.
Почему 404, если хост точно верный?+
Ошибки пути: base_url для этого шлюза должен включать /v1 и не должен его удваивать. Путь Responses Codex дописывает сам.
Стрим умирает на середине без статуса — это API?+
Обычно сетевой путь: прокси и VPN, которые буферизуют или обрывают SSE. Прежде чем винить эндпоинт, воспроизведите через curl на чистом соединении.
Пропустите сломанную настройку
apiToken.sale отдаёт стандартный Anthropic API — те же модели, те же SDK, один предоплаченный баланс. Направьте base URL вашего инструмента на него, и конфигурация с этой страницы заработает как написано.