Короткий ответ
«Request timed out» в Codex почти никогда не означает сбой у OpenAI — это проблема сетевого маршрута. Самые частые причины, по убыванию: в терминале не настроен прокси, песочница macOS молча блокирует доступ к сети, MCP-серверы не успевают запуститься за отведённое время, а в сетях с ограничениями мешают блокировки DNS/SNI. Самое надёжное решение в 2026 году — направить Codex на стабильный эндпоинт, доступный из любой точки мира, например TeamoRouter: это одним шагом снимает отравление DNS, конфликты прокси и троттлинг эндпоинта. Ниже — семь рабочих способов, от самого простого к самому основательному.
Почему запросы Codex завершаются по таймауту
Codex CLI по умолчанию отправляет каждый запрос на https://api.openai.com/v1/responses. Когда запрос зависает, вы видите одну из нескольких типовых ошибок:
| Сообщение об ошибке | Наиболее вероятная причина |
|---|---|
Error: Connection timeout after 30000ms |
Первый API-запрос заблокирован на сетевом уровне |
fetch failed: request to https://api.openai.com/v1/responses failed |
Проблема с DNS, прокси или SNI |
ETIMEDOUT |
TCP-соединение так и не устанавливается |
read ECONNRESET |
Соединение сброшено посреди сессии |
request timed out |
Завис MCP-сервер или потоковый вызов |
Network Error |
Desktop App / веб-клиент |
У них есть общая черта: браузер на той же машине часто работает нормально, а терминал — нет. Эта асимметрия и есть главная диагностическая подсказка: браузер читает системные настройки прокси, а большинство CLI-инструментов — нет. Почините сетевой маршрут терминала — и таймаут исчезнет.
Как определить, на каком уровне сбой
Прежде чем пробовать способы наугад, потратьте 60 секунд на диагностику и найдите уровень, на котором всё ломается. Ответ подскажет, какой способ вам нужен:
| Проверка | Команда | Что означает результат |
|---|---|---|
| Разрешается ли DNS? | ping -c 3 api.openai.com |
Постоянные сбои DNS → способ 6 |
| Доступен ли API? | curl -I --max-time 20 https://api.openai.com/v1/models |
Быстрый 401 → сеть в порядке, проблема в другом |
| Работает ли прокси? | curl -x http://127.0.0.1:7890 -I --max-time 20 https://api.openai.com/v1/models |
401 → прокси работает; таймаут → плохой прокси-узел |
| Дело в shell-команде? | Выполните ls внутри сессии Codex в песочнице |
Зависает → способ 7 |
| Дело в MCP-сервере? | Посмотрите, какой процесс запускается перед таймаутом | Запуск MCP → способ 3 |
| Обрыв посреди потока? | Обратите внимание, возникает ли таймаут через несколько минут работы | Истёкшая авторизация → способ 5 |
Если curl быстро возвращает 401, сетевой маршрут до OpenAI исправен, а таймаут возникает на уровне песочницы, MCP, авторизации или инициализации оболочки. Если curl зависает, проблема в DNS, прокси или SNI — переходите к сетевым способам.
Способ 1: настройте прокси в терминале
Если браузер открывает OpenAI, а Codex уходит в таймаут, терминал почти наверняка работает в обход вашего прокси. Codex учитывает только эти переменные окружения — он не читает системные настройки прокси, PAC-файлы и автообнаружение WPAD:
export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7890"
export NO_PROXY="localhost,127.0.0.1"
Добавьте их в ~/.zshrc (macOS/Linux) или задайте на уровне системы в Windows, затем откройте новый терминал. Прежде чем винить Codex, проверьте маршрут:
curl -I --max-time 20 https://api.openai.com/v1/models
Быстрый ответ 401 означает, что маршрут через прокси работает и можно идти дальше. Любой другой результат говорит о том, что узкое место — сам прокси-узел.
Способ 2: песочница macOS молча блокирует доступ к сети
В macOS параметр network_access = true в ~/.codex/config.toml молча игнорируется песочницей seatbelt, которая безусловно выставляет CODEX_SANDBOX_NETWORK_DISABLED=1. В результате исходящие вызовы из shell-команд в песочнице завершаются таймаутом соединения, хотя сам API доступен.
Решение — запускать Codex с полным доступом к сети на уровне CLI:
codex --sandbox danger-full-access "your prompt"
Для удобства добавьте алиас, чтобы доступ к сети был в каждой сессии:
alias codex='CODEX_SANDBOX_NETWORK_DISABLED=0 codex --sandbox danger-full-access'
Учтите: одного sandbox_mode = "danger-full-access" в config.toml недостаточно — реально срабатывает именно флаг CLI. Если вы запускаете внутри Codex много shell-команд (сборки, тесты, git push), один этот способ обычно убирает большинство ошибок «request timed out».
Способ 3: увеличьте таймаут запуска MCP-серверов
MCP-серверы (Context7, Playwright, Dart, Firebase и подобные) часто выдают request timed out в Windows, потому что Codex запускает их напрямую, минуя cmd.exe. Ломаются две вещи: исполняемые файлы из PATH не находятся, а медленный первый запуск не укладывается в таймаут по умолчанию.
Оберните команды MCP в cmd.exe /c и увеличьте таймаут в ~/.codex/config.toml:
[mcp_servers.context7]
command = "cmd"
args = ["/c", "npx", "-y", "@upstash/context7-mcp", "--api-key", "your-key"]
env = { SystemRoot = "C:\\Windows" }
startup_timeout_ms = 30_000
Разумное значение startup_timeout_ms — от 20 000 до 60 000 мс: при первом вызове npx скачивает пакет и легко выходит за таймаут по умолчанию. Если удалённый MCP-сервер продолжает уходить в таймаут, установите mcp-remote глобально (npm install -g mcp-remote) и укажите серверу удалённый URL.
Способ 4: пробросьте прокси через SSH (удалённые хосты)
Когда Codex работает на удалённой машине через VSCode Remote SSH, он использует сеть удалённого хоста. Если с этого хоста api.openai.com недоступен, запросы уходят в таймаут, хотя на локальной машине всё в порядке.
Пробросьте локальный прокси на удалённую машину в ~/.ssh/config:
Host myserver
RemoteForward 10808 127.0.0.1:10808
Затем экспортируйте прокси на удалённом хосте:
export HTTPS_PROXY=http://127.0.0.1:10808
export HTTP_PROXY=http://127.0.0.1:10808
Проверьте с удалённого хоста командой curl -I --max-time 20 -x http://127.0.0.1:10808 https://api.openai.com/v1/models — быстрый 401 подтверждает, что туннель работает. Также задайте http.proxy / https.proxy в Remote Settings (JSON) в VSCode, чтобы вызовы, встроенные в редактор, шли тем же маршрутом.
Способ 5: истёкшая или отозванная авторизация
request timed out посреди потока (а не при запуске) иногда оказывается замаскированной проблемой авторизации. В релизах Codex эпохи 0.41 была известная проблема: истёкшие или отозванные refresh-токены вызывали таймауты при стриминге. Если таймаут стабильно появляется через несколько минут работы, а сетевой маршрут чист, обновите сессию:
codex logout
codex login
Если вы авторизуетесь по API-ключу, а не через вход в ChatGPT, убедитесь, что ключ действителен и на нём есть баланс: отозванный ключ может проявиться как зависание ещё до того, как придёт настоящий 401.
Способ 6: устраните блокировки DNS и SNI в сетях с ограничениями
Если вы находитесь в регионе с ограниченным доступом в интернет, цепочка сбоев обычно глубже, чем проблема с прокси:
- Отравление DNS —
api.openai.comразрешается в поддельный или мёртвый IP. - Блокировка по SNI — проверка TLS-рукопожатия вызывает сброс соединения даже при правильном DNS.
- Троттлинг диапазонов IP — диапазоны серверов OpenAI ограничиваются по скорости или блокируются в часы пик.
VPN или прокси помогает, только если покрыт весь маршрут трафика, — поэтому ситуация «браузер работает, а Codex нет» так распространена. Если вы не можете надёжно контролировать DNS и SNI для каждого процесса, надёжное решение — сменить эндпоинт, с которым общается Codex. Шлюз вроде TeamoRouter размещает OpenAI-совместимый эндпоинт на доменах, которые не блокируются, так что отравление DNS и вмешательство в SNI исчезают в самом источнике. Направьте на него Codex двумя переменными окружения — и вообще без прокси:
export OPENAI_API_KEY="your-key"
export OPENAI_BASE_URL="https://gateway.teamorouter.com/v1"
codex
Способ 7: исключите таймауты shell-команд в песочнице
Иногда «таймаут» вообще не связан с API — зависает shell-команда, запущенная внутри песочницы Codex. Если для тривиальных команд вроде ls или git status вы видите код выхода 124 (GNU timeout), виновата инициализация вашей оболочки. Известный триггер — версии pyenv до 2.6.16, которые зависают на rehash внутри песочницы.
Решение: обновите pyenv, передавайте больший timeout_ms в вызовы shell-инструмента или запускайте сессию с --yolo, когда доверяете задаче. Если запуск в песочнице падает ещё до какого-либо ответа OpenAI, считайте это проблемой среды выполнения, а не API.
Самый быстрый путь: не тушить пожары
Каждый из этих способов по отдельности решает один слой стека: прокси, песочница, MCP, SSH, авторизация, DNS. Но многие пользователи спотыкаются о два-три слоя сразу — корпоративный прокси, И песочница macOS, И нестабильный VPN-узел. Разбираться с ними по очереди — верный способ потерять полдня.
Поэтому прагматичное решение 2026 года — убрать хрупкие слои, а не отлаживать их. TeamoRouter даёт Codex единый OpenAI-совместимый эндпоинт, напрямую доступный из большинства сетей: без прокси и без танцев с сетью в песочнице. Вся настройка — две переменные окружения:
- Зарегистрируйтесь на TeamoRouter и скопируйте свой API-ключ
- Задайте
OPENAI_API_KEYиOPENAI_BASE_URL(см. руководство по установке Codex) - Запустите
codex— если таймаут был на сетевом уровне, теперь всё заработает
FAQ
Почему браузер открывает OpenAI, а Codex CLI уходит в таймаут?
Браузер читает системные настройки прокси (или использует VPN-расширение), а CLI-инструменты полностью игнорируют системные настройки и полагаются на переменные окружения HTTPS_PROXY / HTTP_PROXY. Задайте их или переключите Codex на эндпоинт с прямым доступом.
«Request timed out» возникает из-за того, что OpenAI лежит?
Почти никогда. Таймауты в подавляющем большинстве случаев — проблемы сетевого маршрута: прокси, песочницы, запуск MCP или вмешательство в DNS/SNI. Когда API OpenAI доступен, он возвращает структурированные ошибки (401, 429, 5xx); зависание или ETIMEDOUT означает, что запрос так и не прошёл туда и обратно.
Нужен ли для TeamoRouter прокси или VPN?
Нет. Эндпоинт TeamoRouter напрямую доступен из большинства сетей, поэтому вы один раз задаёте base URL и полностью убираете слой прокси.
Почему Codex Desktop App уходит в таймаут, а CLI работает?
Desktop App использует системную сетевую конфигурацию — это другой маршрут, не тот, что задают переменные окружения терминала. Сначала проверьте системные настройки прокси, а затем впишите base URL шлюза прямо в настройках приложения, чтобы оба клиента ходили по одному стабильному маршруту.
С чего начать
Самое простое решение — сменить эндпоинт:
- Зарегистрируйтесь на TeamoRouter и получите API-ключ
- Задайте
OPENAI_API_KEYиOPENAI_BASE_URL - Проверьте соединение через
curl— должен быстро прийти код состояния, отличный от 000, — и запускайтеcodex
Стабильный доступ к Codex, Claude Code и Gemini CLI через TeamoRouter.