Блог

Codex выдаёт «Request blocked»? Разбираемся, почему и как это исправить

Краткий ответ

Ошибка «Request blocked» в Codex означает, что ваш запрос вообще не дошёл до модели — его остановили ещё до выполнения. В отличие от тайм-аута (запрос зависает и в итоге отваливается) или ошибки квоты (вы исчерпали разрешённый объём использования), блокировку обычно вызывает одна из пяти причин: региональные ограничения, заблокированный IP-адрес, вмешательство прокси или VPN, недействительный либо отсутствующий API-ключ или фильтрация по контент-политике. В этой статье разберём каждую причину и конкретный способ её устранить.

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

«Request blocked», «Timeout» и «Quota exceeded»: в чём разница

Эти три ошибки часто путают, но у них разные первопричины и разные способы исправления.

Тип ошибки Что означает Типичный вид сообщения Основной способ исправления
Блокировка Запрос отклонён до обработки Request blocked, 403, blocked Исправить регион/IP/прокси/аутентификацию или пустить трафик через шлюз
Тайм-аут Запрос отправлен, но ответ не пришёл вовремя Request timed out, ETIMEDOUT Наладить соединение, повторы, проверить нагрузку на сервер
Превышение квоты Достигнут лимит расчётного периода quota, insufficient_quota, 429 Перейти на тариф выше или дождаться сброса

Важно понимать, с какой именно ошибкой вы столкнулись, потому что способы исправления почти не пересекаются. Блокировку не вылечить увеличением тайм-аута, а ошибку квоты — сменой прокси.

5 самых частых причин ошибки «Codex Request blocked»

1. Региональное ограничение

OpenAI ограничивает доступ из некоторых регионов. Если ваш IP-адрес относится к неподдерживаемому региону, Codex может сразу отклонять запросы. Это самая частая причина у разработчиков за пределами поддерживаемых рынков, и она никак не связана ни с качеством вашего кода, ни с вашим API-ключом.

Как проверить: узнайте свой публичный IP, посмотрите, к какому региону он относится, и сверьтесь со списком регионов, поддерживаемых OpenAI.

2. Заблокированный IP-адрес

Даже в поддерживаемом регионе ваш IP может попасть под подозрение. Общие IP-адреса (у некоторых VPN-провайдеров или за офисным NAT), которыми злоупотребляли другие пользователи, оказываются в чёрных списках — и вполне корректные запросы начинают падать. IP-адреса дата-центров тоже фильтруют чаще, чем домашние.

3. Вмешательство прокси или VPN

Неправильно настроенный прокси может перехватить запрос и вернуть ответ, похожий на блокировку. Особенно часто это случается с прозрачными прокси, корпоративными файрволами и фильтрацией на уровне DNS, которая перехватывает api.openai.com. Запрос вообще не доходит до OpenAI — его «блокирует» промежуточное устройство.

4. Отсутствующий, просроченный или недействительный API-ключ

Если API-ключ не задан, просрочен, отозван или у него нет нужного разрешения, запрос отклоняется ещё до выполнения. В некоторых конфигурациях CLI ключ читается не из той переменной окружения, и запросы молча уходят без аутентификации.

5. Фильтрация по контент-политике

Встречается реже, но запрос, нарушающий контент-политику провайдера модели, может быть отклонён с ошибкой, похожей на блокировку. Обычно это касается конкретного промпта, а не всех запросов. Если блокируется каждый промпт, сначала проверьте остальные причины.

Как определить, какая именно причина у вас

Выполните минимальный запрос, чтобы изолировать проблему. Самая быстрая диагностика — «сырой» HTTPS-вызов через curl:

bash
curl -sS https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

Как читать результат:

  • Request blocked / 403 даже с действующим ключом → региональное ограничение или заблокированный IP.
  • Ошибка соединения / нет ответа → ваша сеть не может достучаться до эндпоинта (проблема с прокси или файрволом, по первопричине ближе к тайм-ауту).
  • 401 Unauthorized / недействительный ключ → проблема с аутентификацией.
  • 429 / quota → проблема с оплатой или лимитом запросов, а не блокировка.

Быстрая дополнительная проверка — выполнить ту же команду curl из другой сети, например через мобильную точку доступа. Если там всё работает, значит, блокирует ваш IP или локальная сеть.

Как исправить ошибку «Codex Request blocked»

Способ 1: настроить надёжный сетевой маршрут (самый частый случай)

Если проблема в регионе или IP, может помочь VPN с выходом в поддерживаемый регион, но VPN сами по себе нестабильны и тоже могут попасть под фильтры. Более долговечное решение — направить трафик через API-шлюз со стабильной связностью. В этом случае Codex подключается к эндпоинту, доступному из вашей сети, а шлюз пересылает запросы в OpenAI из инфраструктуры в поддерживаемом регионе.

toml
# ~/.codex/config.toml
model = "gpt-5.6-codex"
model_provider = "teamo"

[model_providers.teamo]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1"
env_key = "TEAMO_API_KEY"

Задайте ключ в окружении оболочки:

bash
export TEAMO_API_KEY=tr_xxxxxxxx
codex

С такой конфигурацией Codex отправляет все запросы на эндпоинт шлюза, а не на api.openai.com, — и блокировка по региону или IP устраняется в корне.

Способ 2: проверить API-ключ и окружение

Убедитесь, что ключ действительно читается. Codex берёт ключ провайдера из переменной окружения, указанной в конфиге (env_key). Проверьте, что она задана и что у ключа нужные права:

bash
# Confirm the variable is set (without printing the whole key)
test -n "$TEAMO_API_KEY" && echo "key is set" || echo "key missing"

# Confirm Codex sees the provider
codex login status

Если вы недавно ротировали или отозвали ключ, сгенерируйте новый в консоли и обновите окружение.

Способ 3: исключить вмешательство прокси

Если в вашей оболочке остались переменные прокси от другого инструмента, они могут мешать:

bash
# Inspect current proxy settings
env | grep -i proxy

# For a clean test, unset them and retry
unset http_proxy https_proxy all_proxy
codex "Say hello"

Если после сброса прокси всё заработало, виновата конфигурация прокси — либо исправьте её, либо пустите трафик Codex в обход. Проверьте также переменную NO_PROXY: она должна покрывать хост шлюза, которым вы пользуетесь.

Способ 4: проверить, не связана ли блокировка с конкретным промптом

Попробуйте тривиальный промпт:

bash
codex "Reply with exactly: OK"

Если тривиальный промпт проходит, а конкретный блокируется, дело в контент-политике. Переформулируйте промпт и избегайте шаблонов, на которые срабатывает фильтрация. Если блокируется даже тривиальный промпт, причина почти наверняка в сети, IP или аутентификации, а не в содержимом.

Способ 5: сменить сеть, чтобы подтвердить диагноз

Выполните ту же команду из другой сети (мобильная точка доступа, подключение коллеги или другой регион). Если работает — заблокирована ваша локальная сеть или IP. Этот единственный тест позволяет отличить «меня блокирует провайдер» от «меня блокирует моя сеть».

Как не допускать «Request blocked» в будущем

  • Используйте стабильный эндпоинт. Шлюз даёт один эндпоинт, который работает независимо от вашего локального IP и сети, — это убирает самую частую повторяющуюся причину.
  • Следите за действительностью и областью действия API-ключей. Ротируйте их по расписанию и не коммитьте в систему контроля версий.
  • Не полагайтесь на общие IP-адреса VPN. Если без VPN никак, по возможности выбирайте выделенный IP.
  • Разделяйте ошибки при диагностике. Логируйте, чем именно вызван сбой — blocked, timeout или quota, — чтобы применять правильное исправление, а не гадать.

Когда это на самом деле тайм-аут

Если запрос долго висит, а потом возвращает ошибку с упоминанием timed out, у вас проблема со связностью, а не блокировка. Увеличьте тайм-аут и число повторов на стороне клиента, проверьте состояние эндпоинта и уменьшите размер очень больших запросов. Способы из этой статьи (маршрутизация через шлюз, проверка прокси) всё равно помогут, но путь диагностики другой.

Диагностический чек-лист, который можно скопировать

Столкнувшись с блокировкой, пройдите этот список по порядку:

bash
# 1. Is the endpoint reachable at all?
curl -sS -o /dev/null -w "HTTP %{http_code} in %{time_total}s\n" \
  https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

# 2. Is your API key set and visible to Codex?
test -n "$TEAMO_API_KEY" && echo "key set" || echo "key missing"

# 3. Are stale proxy variables interfering?
env | grep -i proxy

# 4. Is the block prompt-specific?
codex "Reply with exactly: OK"

Запишите, на каком шаге возникает сбой. Одно это наблюдение подскажет, с какой из пяти причин вы имеете дело и какой способ из статьи подходит.

Часто задаваемые вопросы

«Request blocked» — это то же самое, что ошибка лимита запросов 429?

Нет. Ошибка 429 означает, что ваш запрос поняли, но вы превысили лимит запросов или квоту. Блокировка означает, что запрос отклонён ещё до обработки — чаще всего это отказ в духе 403, связанный с регионом, IP или аутентификацией. Исправляются они по-разному, так что сначала определите, какую именно ошибку вы видите.

Может ли VPN вызвать ошибку «Request blocked»?

Да. Некоторые IP-адреса VPN общие и могут быть в чёрных списках, а некоторые VPN-провайдеры расположены в регионах, которые OpenAI фильтрует. Если блокировка появляется только при включённом VPN, попробуйте другой сервер, выделенный IP или маршрутизацию через шлюз.

Поможет ли смена API-ключа при региональной блокировке?

Только если блокировка связана с аутентификацией. Если заблокирован ваш регион или IP, новый ключ ничего не изменит. Выполните «сырой» curl из той же сети — если он по-прежнему сообщает о блокировке, дело не в ключе.

Работает ли TeamoRouter с Codex, если я нахожусь в регионе с ограничениями?

Да. TeamoRouter предоставляет эндпоинт, доступный из сетей с ограничениями, и пересылает запросы в OpenAI из поддерживаемой инфраструктуры — блокировки по региону и IP снимаются уже за счёт самой архитектуры. При этом кэширование промптов остаётся целым, так что за связность не приходится платить ростом расходов на токены.

Итог

«Codex Request blocked» — отдельная ошибка с коротким списком причин: регион, IP, прокси, аутентификация или контент-политика. Проведите диагностику одним curl, устраните первопричину — и быстро вернётесь к работе. Для разработчиков в сетях с ограничениями самое чистое долгосрочное решение — направить Codex через API-шлюз вроде TeamoRouter: он снимает блокировки по региону и IP за счёт самой архитектуры, помогает держать API-ключ действительным и с ограниченной областью действия и даёт один стабильный эндпоинт, на который можно положиться.

Готовы подключиться?Войдите в консоль, пополните баланс и создайте API-ключ.
Codex выдаёт «Request blocked»? Разбираемся, почему и как это исправить · TeamoRouter