Codex постоянно переподключается: исправление за одну минуту

Свежие версии Codex — App, CLI и расширение для VS Code — после обновления начали рвать соединение с API: чат останавливается на середине ответа, Codex пишет connection closed и снова переподключается. Причина не в вашем ключе и не в компьютере: обновление сделало канал связи по умолчанию нестабильным. Лечится переключением Codex на устойчивый канал — одной строкой в config.toml. Ниже — все шаги для Windows, macOS и Linux.

Фикс за 1 минуту Без переустановки Чаты и настройки остаются на месте Windows · macOS · Linux

1

Полностью закройте Codex

Настройка читается только при запуске — «свернуть» недостаточно.

Windows: закройте окно Codex и проверьте трей возле часов — иконка Codex может продолжать там висеть, её тоже нужно закрыть.

macOS: нажмите Cmd+Q в приложении Codex. Linux: закройте все окна программы.

2

Откройте файл config.toml

Он лежит в папке .codex в домашней папке пользователя.

Windows: откройте диск C: → папку ПользователиВашеИмя.codex, найдите файл config.toml, кликните правой кнопкой → «Открыть с помощью» → Блокнот.

macOS: в Finder нажмите Cmd+Shift+G, введите ~/.codex и откройте config.toml в TextEdit. Папка начинается с точки, поэтому в Finder её не видно без этого перехода.

Linux: откройте ~/.codex/config.toml в любом текстовом редакторе.

Перед правкой можно сохранить копию файла куда-нибудь в сторону — но меняется ровно одна строка, риск минимальный.

3

Поменяйте одну строку: supports_websockets

Найдите строку supports_websockets = false и поставьте true.

В файле найдите строку supports_websockets = false и замените её на строку ниже (остальные строки не трогайте):

supports_websockets = true

Такой строки в файле нет? Допишите её в секцию [model_providers.aidostup] — секцию вашего провайдера. Пример, как это должно выглядеть (значения name и base_url у вас могут отличаться, важна именно строка supports_websockets):

[model_providers.aidostup]
name = "AiDostup"
base_url = "/backend-api/codex"
wire_api = "responses"
env_key = "AID_API_KEY"
supports_websockets = true

Имя ключа — supports_websockets, с «s» на конце. Ключа supports_websocket (без s) в Codex не существует: такая строка молча игнорируется, и кажется, что фикс «не сработал».

4

Сохраните и запустите Codex

Ctrl+S на Windows/Linux, Cmd+S на macOS — и откройте Codex.

Напишите что-нибудь в чат: ответ должен прийти без обрывов и бесконечных «переподключаюсь…». История чатов и настройки остаются на месте — меняется только канал связи.

Почему это происходит

Codex умеет общаться с API двумя каналами: обычным потоковым (SSE) и по WebSocket. После недавнего обновления потоковый канал стал обрываться — Codex бесконечно пишет «переподключение». Флаг supports_websockets переключает его на WebSocket-канал, который работает стабильно. Это известная проблема свежих версий Codex: она проявляется у разных провайдеров, включая крупные сервисы, — и точно так же лечится у всех.

Нюанс: не каждый API-шлюз вообще поддерживает WebSocket. С AiDostup API этот канал поддерживается сервером из коробки и протестирован — после правки одной строки всё работает. Если пользуетесь другим провайдером и после фикса соединение всё равно рвётся — уточните у него, поддерживает ли он WebSocket-транспорт Codex.

Не помогло? Короткий чеклист

Свернули окно, а не закрыли — Codex читает настройку только при полном запуске. На Windows проверьте трей возле часов.

Написали supports_websocket без s — правильное имя: supports_websockets. Другого варианта в Codex нет.

Строка не в той секции — она должна быть внутри [model_providers.…] вашего провайдера, а не в начале файла.

Файл не тот — нужен config.toml из папки .codex домашней папки пользователя (Windows: C:\Пользователи\ВашеИмя\.codex, macOS/Linux: ~/.codex), не из папки проекта.

Всё равно рвётся — переподключите Codex к API начисто готовой командой со страницы подключения (вкладка вашего Codex), затем повторите фикс.

Вопросы и ответы

Почему Codex после обновления постоянно переподключается?
Свежие версии Codex общаются с API по каналу SSE, который после обновления стал обрываться: чат останавливается, Codex пишет connection closed и снова подключается. Лечится переключением на WebSocket-транспорт: в файле ~/.codex/config.toml в секции вашего провайдера ставится supports_websockets = true — и Codex полностью перезапускается.
Codex пишет «connection closed» или «stream disconnected» — это проблема моего провайдера API?
Это известный сбой свежих версий Codex: он проявляется у разных провайдеров, включая крупные сервисы. Устраняется на вашей стороне — переключением транспорта строкой supports_websockets = true. С AiDostup API WebSocket-транспорт поддерживается из коробки.
Строки supports_websockets в config.toml нет — что делать?
Дописать её в секцию [model_providers.aidostup] (или секцию вашего провайдера) со значением true и полностью перезапустить Codex. Ключ пишется во множественном числе: supports_websockets — именно так он называется в официальном справочнике конфигурации Codex.
Поменял supports_websocket (без s), ничего не изменилось — почему?
Правильное имя ключа — supports_websockets, с «s» на конце; ключа без «s» в Codex не существует, такая строка молча игнорируется. Проверьте также, что строка в секции вашего провайдера в ~/.codex/config.toml и что Codex был полностью закрыт перед запуском.

Только подключаетесь? Команда под ваш Codex собирается на странице подключения. Баланс ключа проверяется без входа.

Подключить Codex → Проверить баланс