Stream disconnected before completion переводится как «поток отключился до завершения»: Codex соединился с сервером, начал получать ответ, но тот оборвался раньше конца. Причину называет текст после двоеточия. Чаще всего в поиске встречается you have no credits remaining - это значит, что кончился баланс OpenAI API при входе по ключу, и сеть тут ни при чём. Остальные варианты - обрыв или молчание соединения, закрытый сервером WebSocket или сбой самого сервера.
Всё ниже сверено 2 октября 2026 года с исходным кодом Codex версии 0.160.0, официальной документацией OpenAI и обсуждениями на GitHub, где отвечают разработчики. Руками каждый вариант ошибки не воспроизводился, поэтому там, где официального объяснения нет, так и написано.
Где ты сейчас
- В тексте есть
no credits remaining. Дело в балансе, сеть исправна. Иди в раздел про кредиты API. - В тексте
error sending request,idle timeoutилиwebsocket closed. Это соединение. Тебе нужны разделы про сеть и про повторы, а для настройки VPN - отдельная статья про Codex и VPN. - Перед ошибкой мелькали
Reconnecting... 1/5и дальше. Codex уже сам пытался переподключиться. Раздел про повторы объясняет, что значат эти цифры. - Ошибка начинается с
error running remote compact task. Не удалось автоматически сжать контекст перед ответом; этому посвящён отдельный раздел.
Если Codex ещё не входит в аккаунт и ругается на этапе входа, это другая ошибка: её разбирает статья про token exchange failed в Codex.
Что значит ошибка и откуда она берётся
В коде Codex у этой ошибки есть точное описание (перевод с английского): её возвращает клиент, когда поток ответа обрывается или выдаёт ошибку уже после успешного соединения, но до того, как пришло событие response.completed. Шаблон сообщения - stream disconnected before completion: {текст}, и на место {текст} подставляется конкретная причина.
К этому типу Codex относит три группы ошибок:
- Сетевые сбои, когда не удалось отправить запрос или дочитать ответ.
- Ошибки, которые сервер прислал в потоке с незнакомым Codex кодом. Сюда попадали и проблемы с оплатой.
- Превышение частоты запросов на стороне API.
По самой фразе причину не определить - смотри текст после двоеточия.
Судя по коду, Codex считает эту ошибку временной и сам повторяет запрос. Сообщение, которое ты видишь, обычно значит, что все автоматические попытки уже кончились.
Разработчик OpenAI на GitHub (etraut-openai) в нескольких обсуждениях называет самые частые причины одинаково: VPN, прокси, файрвол или DNS - всё, что влияет на сеть.
Таблица: что написано после двоеточия
| Что после двоеточия | Что значит | Что делать |
|---|---|---|
you have no credits remaining. add credits to continue using the api... |
Кончился баланс OpenAI API, Codex вошёл по ключу | codex login status, пополнить баланс на platform.openai.com или войти через ChatGPT |
error sending request for url (https://chatgpt.com/backend-api/codex/responses) |
Не удалось отправить запрос к серверу Codex или дочитать ответ | Проверить VPN, прокси, файрвол, DNS; обновить Codex |
idle timeout waiting for sse |
5 минут по соединению HTTPS не пришло ни одного события | Проверить сеть и status.openai.com, повторить |
idle timeout waiting for websocket |
То же самое, но для WebSocket | То же; обычно следом Codex переходит на HTTPS |
websocket closed by server before response.completed |
Сервер закрыл WebSocket до конца ответа | Подождать повторов, проверить статус; официального решения нет |
unable to verify model access right now. please retry. |
Официального объяснения нет | Повторить, как просит сам текст |
Префикс error running remote compact task: |
Не удалось автоматически сжать контекст | Обновить Codex; при повторе - /feedback |
No credits remaining: кончился баланс API
Полный текст выглядит так:
stream disconnected before completion: You have no credits remaining. Add credits to continue using the API at https://platform.openai.com/settings/organization/billing/.
Перевод хвоста: «У вас не осталось кредитов. Пополните баланс, чтобы продолжить пользоваться API». Это ответ OpenAI API о нулевом предоплаченном балансе. Официальной расшифровки текста я не нашёл, но в тестах самого Codex коды insufficient_quota и credit_balance_exhausted проверяются как одна ошибка - исчерпанная квота (quota_exceeded.rs).
История исправлений объясняет, почему сообщение начинается с ошибки обрыва потока. Раньше Codex не распознавал код credit_balance_exhausted, когда тот приходил внутри потока, и считал его обычной временной ошибкой. Поэтому он пять раз безрезультатно повторял запрос. Исправления вышли в сентябре 2026 года: PR #44492 вошёл в версию 0.155.0 от 17 сентября, PR #45602 - в 0.156.0 от 22 сентября. По коду новых версий вместо обрыва потока должно появляться Quota exceeded. Check your plan and billing details. без повторов. Вживую этот новый текст я не воспроизводил.
Откуда берутся кредиты API. Ошибка относится к входу по ключу API. В документации OpenAI сказано (перевод): «OpenAI списывает использование по ключу API через твой аккаунт OpenAI Platform по стандартным тарифам API». Подписка ChatGPT этот баланс не пополняет, это два разных кошелька. Подробнее о разнице - в статье про Codex API и оплату по токенам.
Что делать по шагам:
- Проверь, как ты вошёл в Codex:
codex login status
- Если вход по ключу и ты хочешь работать дальше так же - открой ссылку из текста ошибки,
platform.openai.com/settings/organization/billing, выбери нужную организацию и пополни баланс. Порядок покупки кредитов описан в статье как оплатить Codex. - Если у тебя есть подписка ChatGPT и тратить деньги на API ты не собирался - выйди и войди через ChatGPT:
codex logout
codex login
codex login без аргументов открывает вход через ChatGPT. Для обратного перехода на ключ выполни команду - вводить в неё сам ключ вручную не нужно:
printenv OPENAI_API_KEY | codex login --with-api-key
Для пополнения баланса API учти правило из справки OpenAI: prepaid-карты для покупки API credits не принимаются.
Я сам плачу за ChatGPT и Codex картой для подписок «Плати по миру»: выпускается за пару минут, пополняется рублями через СБП. Оформить картуРеклама. ООО "Капибара". ИНН 9703231520. erid: CQH36pWzJqNS1hfhQNyQNjbmhaUSfywWpWF3LE48uoYyEF
Ошибка при входе через ChatGPT. На GitHub есть открытое обсуждение #40573 от 25 августа 2026 года. Пользователь пишет, что в приложении Codex при входе через ChatGPT, без ключей API, эта ошибка возникла в фоновой задаче, которая создаёт заголовок треда. Основные задачи при этом работали. Разработчики OpenAI на момент проверки не ответили, причина не подтверждена. Если ты точно не входил по ключу, а codex login status это подтверждает, твой случай может быть таким же - тогда отправь логи через /feedback.
Не путай нулевой баланс API с лимитом подписки. Когда заканчивается лимит сообщений по подписке ChatGPT, Codex пишет про лимит использования. Где смотреть остаток - в статье где посмотреть лимиты Codex, а что делать, когда он кончился, - в статье как сбросить лимиты Codex.
Error sending request for url: запрос не ушёл
Текст error sending request for url (https://chatgpt.com/backend-api/codex/responses) значит, что запрос к серверу Codex не удалось отправить или дочитать ответ. Адрес в скобках - тот, к которому Codex обращается при входе через ChatGPT. При входе по ключу базовый адрес другой, https://api.openai.com/v1.
Разработчик OpenAI в обсуждении #10378 советует при работе в корпоративной сети сообщить IT-отделу, что Codex нужен доступ именно к https://chatgpt.com/backend-api/codex/responses. В других ответах он добавляет, что такое часто бывает с VPN и прокси или просто при нестабильном соединении.
Известный сценарий - ошибка после сна MacBook: обсуждение #3355 открыто с сентября 2025 года, официального решения нет.
В коде версии 0.160.0 адрес из текста ошибки вырезается, а сбой соединения выводится как Connection failed: .... Значит, текст с адресом в скобках, скорее всего, признак старой версии. Это вывод из кода, вживую не проверялся. Как обновить Codex, описано в статье как установить Codex.
Как проверить маршрут той программы, где запущен Codex, разобрано в статье про сетевые причины и VPN.
Idle timeout: сервер замолчал
idle timeout waiting for sse значит: по соединению HTTPS дольше заданного времени не пришло ни одного события, и Codex решил, что связь потеряна. По умолчанию это время - 300 000 миллисекунд, то есть 5 минут. SSE - способ, которым сервер присылает ответ кусками по обычному HTTPS.
idle timeout waiting for websocket - то же самое для WebSocket, другого способа держать соединение. Таймаут задаётся той же настройкой и по умолчанию тоже составляет 5 минут.
Встроенный провайдер OpenAI в Codex по умолчанию работает через WebSocket. Поэтому часто появляется такое сообщение:
Falling back from WebSockets to HTTPS transport. stream disconnected before completion: idle timeout waiting for websocket
Первая часть - только предупреждение: пять попыток по WebSocket не помогли, и Codex до конца сессии переходит на HTTPS.
Пользователь в открытом обсуждении #38638 подсчитал: если соединение «зависло», каждая попытка по WebSocket ждёт полные 5 минут, и до перехода на HTTPS можно прождать около 25 минут. Это оценка пользователя, разработчики её не подтверждали. Выключить WebSocket штатно нельзя: флаги responses_websockets и responses_websockets_v2 в версии 0.160.0 помечены как удалённые. Запрос на режим «только HTTPS» (обсуждение #27381) открыт.
Websocket closed by server и unable to verify model access
websocket closed by server before response.completed значит, что сервер прислал сигнал закрытия WebSocket до конца ответа. Codex считает это временной ошибкой и повторяет. Главное обсуждение - #18960 «Frequent reconnect loop in Codex App», открыто с апреля 2026 года. Решения от разработчиков OpenAI в нём и в похожих обсуждениях нет. Остаётся ждать автоповторов, проверить статус и при повторении отправить логи.
unable to verify model access right now. please retry. - перевод: «Сейчас не удаётся проверить доступ к модели. Повторите попытку». Этой строки нет в коде Codex, её присылает сервер OpenAI. Официального объяснения OpenAI я не нашёл, обсуждений с этим текстом в репозитории Codex тоже. Сторонние проекты называют её временным сбоем на стороне провайдера, но первоисточником это считать нельзя. Следуй подсказке в самом тексте: повтори запрос.
Error running remote compact task: упало сжатие контекста
Когда разговор становится длинным, Codex перед очередным запросом сжимает контекст - кратко пересказывает историю разговора. Если сжатие завершается ошибкой, к обычной ошибке добавляется префикс error running remote compact task:, а дальше идёт сообщение об обрыве потока. Сжатие использует тот же механизм повторов, что и обычный ответ.
Разработчик OpenAI в июне 2026 года написал в обсуждении #14860, что сжатие перевели на более надёжную схему через тот же адрес, что и обычные запросы, и это (перевод) «устраняет ошибки remote compaction». При повторении он просит отправить логи через /feedback и открыть новое обсуждение. Новые сообщения с этим префиксом при этом продолжают появляться и в августе-сентябре 2026 года.
Обнови Codex. Ещё один возможный обходной путь - начать новый тред командой /new, но это предположение: официально такой способ решения не описан.
Reconnecting 1/5 и переход на HTTPS
Строка Reconnecting... 1/5 - счётчик автоповтора: попытка номер один из пяти. Как это устроено по коду 0.160.0:
- Поток ответа переподключается до 5 раз, HTTP-запрос повторяется до 4 раз.
- Между попытками пауза: 0,2 секунды, потом вдвое больше - 0,4, 0,8, 1,6, 3,2 секунды, с разбросом 10%. Если сервер сам указал, сколько ждать, Codex ждёт столько.
- В обычных сборках первая попытка по WebSocket не показывается, чтобы не показывать лишнее уведомление, поэтому счёт может начаться с 2/5. По HTTPS видна и первая.
- Когда пять попыток по WebSocket кончились, Codex один раз переходит на HTTPS, обнуляет счётчик и пробует ещё до пяти раз.
- Если и они не помогли - показывается окончательная ошибка.
Разработчик OpenAI в обсуждении #13811 описал это так (перевод): «Повторяем до пяти раз с паузами. Если пять неудач подряд - считаем ошибку непоправимой и останавливаемся».
Отдельно работает режим для полного обрыва сети, когда не удаётся даже установить соединение. Он включён по умолчанию, повторяет без ограничения числа попыток с паузой от 5 до 60 секунд, пишет Reconnecting... waiting for network и не учитывает эти попытки в счётчике 1/5.
Некоторые ошибки Codex не повторяет вовсе: исчерпанная квота, достигнутый лимит использования, перегруженная модель (Selected model is at capacity), переполненное окно контекста.
Что помогает и что нет
Помогает:
- Прочитать хвост ошибки и пойти по своему разделу выше.
- Проверить страницу статуса OpenAI. У Codex там отдельные строки: Codex, Codex API, Codex Web и Codex in ChatGPT Desktop. Зелёный статус не доказывает исправность твоего запроса, красный снимает вопросы к своей сети.
- Обновить Codex: часть ошибок из этой статьи исправлена в версиях сентября 2026 года.
- При повторяющейся ошибке набрать внутри Codex
/feedback, отправить логи и указать thread ID в обсуждении на GitHub. Так прямо просят разработчики.
Не помогает при обычном входе: менять число повторов и таймауты. В справочнике настроек есть ключи stream_max_retries (по умолчанию 5, максимум 100), request_max_retries (4) и stream_idle_timeout_ms (300 000). Но все они задаются в блоке собственного провайдера [model_providers.<id>]. Встроенный провайдер OpenAI переопределить нельзя: документация прямо говорит не создавать [model_providers.openai], а Codex отклоняет такой блок ошибкой «Built-in providers cannot be overridden». Использование собственного провайдера вместо встроенного не описано в документации как способ исправить эту ошибку. Проверить такой вариант я не мог, поэтому не советую. Кроме того, такие ключи не работают из проектного .codex/config.toml - только из пользовательского ~/.codex/config.toml.
Сетевые настройки, прокси и разницу маршрутов браузера и терминала смотри в статье про Codex и VPN. Смена сети или VPN не обязана помочь: по одной ошибке нельзя заранее сказать, что виноват именно маршрут.
Что сделать до повтора задачи
До обрыва Codex мог уже поменять файлы, запустить команды или наполовину переписать код. Если сразу отправить ту же задачу заново, он может повторить уже сделанное.
- Посмотри, какие файлы изменились с начала задачи. Если проект в git, изменения видны в редакторе или в git.
- Оцени, на каком шаге оборвалась работа: что из задуманного уже сделано, что нет.
- Сформулируй повтор с учётом сделанного, например «продолжи с шага такого-то». Исходный запрос целиком не отправляй.
- Если в тексте ошибки были кредиты API - сначала реши вопрос с балансом или входом, иначе повтор закончится той же ошибкой.
Как правильно ставить задачи агенту и проверять его работу, разобрано в статье как пользоваться Codex.
Чек-лист
Шаг 1. Скопировать полный текст ошибки
Сохранить строку целиком, включая часть после двоеточия и строки Reconnecting... перед ней. Ключи и токены в текст не добавлять.
Шаг 2. Определить вариант по таблице
Найти хвост в таблице выше: кредиты API, отправка запроса, таймаут, закрытый WebSocket, проверка доступа к модели или сжатие контекста.
Шаг 3. Для no credits проверить вход
Выполнить codex login status. При входе по ключу пополнить баланс организации на platform.openai.com или выйти через codex logout и войти через ChatGPT.
Шаг 4. Для сетевых вариантов проверить статус и сеть
Открыть status.openai.com и строки Codex, затем проверить VPN, прокси и файрвол той программы, где запущен Codex.
Шаг 5. Обновить Codex
Поставить свежую версию: с версий 0.155.0 и 0.156.0 ошибка нулевого баланса API больше не вызывает бесполезных повторов.
Шаг 6. Посмотреть изменения до повтора
Проверить, какие файлы агент успел поменять, и повторять задачу с того места, где она оборвалась.
Шаг 7. При повторении отправить логи
Набрать /feedback внутри Codex и указать thread ID в обсуждении на GitHub.