Codex постоянно переподключается: исправление за одну минуту
Свежие версии Codex — App, CLI и расширение для VS Code — после обновления начали рвать соединение с API: чат останавливается на середине ответа, Codex пишет connection closed и снова переподключается. Причина не в вашем ключе и не в компьютере: обновление сделало канал связи по умолчанию нестабильным. Лечится переключением Codex на устойчивый канал — одной строкой в config.toml. Ниже — все шаги для Windows, macOS и Linux.
Фикс за 1 минуту Без переустановки Чаты и настройки остаются на месте Windows · macOS · Linux
Полностью закройте Codex
Настройка читается только при запуске — «свернуть» недостаточно.
Windows: закройте окно Codex и проверьте трей возле часов — иконка Codex может продолжать там висеть, её тоже нужно закрыть.
macOS: нажмите Cmd+Q в приложении Codex. Linux: закройте все окна программы.
Откройте файл config.toml
Он лежит в папке .codex в домашней папке пользователя.
Windows: откройте диск C: → папку Пользователи → ВашеИмя → .codex, найдите файл config.toml, кликните правой кнопкой → «Открыть с помощью» → Блокнот.
macOS: в Finder нажмите Cmd+Shift+G, введите ~/.codex и откройте config.toml в TextEdit. Папка начинается с точки, поэтому в Finder её не видно без этого перехода.
Linux: откройте ~/.codex/config.toml в любом текстовом редакторе.
Перед правкой можно сохранить копию файла куда-нибудь в сторону — но меняется ровно одна строка, риск минимальный.
Поменяйте одну строку: 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 не существует: такая строка молча игнорируется, и кажется, что фикс «не сработал».
Сохраните и запустите 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 пишет «connection closed» или «stream disconnected» — это проблема моего провайдера API?
Строки supports_websockets в config.toml нет — что делать?
Поменял supports_websocket (без s), ничего не изменилось — почему?
Только подключаетесь? Команда под ваш Codex собирается на странице подключения. Баланс ключа проверяется без входа.