Codex VPN: почему по этому запросу находится не то?
Коротко: словосочетание Codex VPN описывает две несвязанные вещи. Первая - сторонний VPN-сервис с таким же названием, к OpenAI он отношения не имеет. Вторая - настройка сети, без которой агент Codex в терминале не соединяется с серверами OpenAI. Статья про вторую: что именно обрывается, как это проверить руками и чем ты при этом рискуешь.
Проверил подсказки Яндекса 10 сентября 2026 года. На «codex vpn» поисковик предложил девять продолжений, и только одно из них про агента OpenAI - «codex работает без vpn». Остальные восемь ведут к стороннему сервису: «codex vpn скачать», «codex vpn отзывы», «codex vpn bot», «codex vpn прокси», «codex vpn ru» и ещё три в том же духе.
Кириллицей запрос набирают как «кодекс впн», и картина та же: «кодекс впн телеграм», «бесплатный прокси для телеграм кодекс впн». Так что если ты пришёл сюда за приложением с таким названием - это другая статья и другой продукт.
Людей, которым нужен агент, поисковик слышит по другой формулировке. На «codex из россии» подсказки идут уже по делу: «как войти в codex из россии», «как оплатить codex из россии», «как пользоваться codex в россии».
Codex VPN в этой статье означает одно: сеть, через которую агент связывается с серверами OpenAI.
Дальше под словом Codex я имею в виду агента OpenAI, который работает в терминале. Установка разобрана отдельно: как установить Codex. Сам термин - в словаре.
Что понадобится
Коротко: понадобятся установленный Codex CLI, терминал, аккаунт ChatGPT или ключ платформы OpenAI и туннель с системным режимом. Туннель здесь - тот самый VPN из запроса: программа, которая уводит трафик через сервер в другой стране. Расширение для браузера в этот список не входит, и почему - разобрано ниже отдельным разделом. Это минимальный набор, без которого дальше идти нет смысла.
- Установленный Codex CLI. Проверяется командой
codex --version. Если его ещё нет, ставится он отдельно. - Терминал - тот, что уже есть в системе. Шаги одинаковые на macOS, Windows и Linux; отличия Windows с WSL вынесены в раздел про ошибки.
- Аккаунт ChatGPT либо ключ платформы OpenAI.
- Туннель, который умеет работать в системном режиме. Дальше по тексту я зову его туннелем: слово VPN в этой теме занято одноимённым сервисом из первого раздела.
Сразу про цену вопроса. OpenAI считает доступ из неподдерживаемой страны основанием закрыть аккаунт, и это написано на её собственной странице. Первоисточник и формулировка - в разделе про риск, но знать это лучше заранее.
Где обрывается соединение между Codex и OpenAI?
Коротко: у Codex три сетевых участка, и туннель нужен на каждом. Браузер открывает страницу входа на домене auth.openai.com. Терминал отдельным запросом обменивает код на токен там же. После входа рабочие запросы уходят на домен chatgpt.com и держатся постоянным соединением. Обрыв на каждом участке выглядит по-своему, и чинятся они по-разному.
Участок 1 - браузерный вход. Команда codex login поднимает локальный сервер и открывает страницу авторизации. В терминале это выглядит так:
Starting local login server on http://localhost:1455.
If your browser did not open, navigate to this URL to authenticate:
https://auth.openai.com/oauth/authorize?...
Порт 1455 назван и в официальной документации: локальный callback-сервер, который ловит ответ браузера, по умолчанию слушает localhost:1455.
Участок 2 - обмен кода на токен. Браузер показывает строку Authentication successful. Return to your terminal to continue. - и дальше работает уже терминал. Он отправляет запрос на https://auth.openai.com/oauth/token. Это отдельный запрос отдельной программы, и маршрут у него свой.
Участок 3 - рабочий канал. При входе по аккаунту ChatGPT запросы агента уходят на https://chatgpt.com/backend-api/codex/responses и держатся постоянным соединением WebSocket. Домен здесь chatgpt.com, хотя по привычке многие ждут api.openai.com. Адрес виден прямо в тексте ошибки из разбора 37682.
Дальше настройка Codex VPN сводится к одному: провести через туннель все три участка сразу.
Как понять, что дело в сети, а не в установке?
Коротко: сначала проверь программу, потом маршрут. Команда codex –version печатает версию, команда codex login status показывает активный способ входа. Версия печатается, а вход не проходит - установка целая, разбираться надо с сетью. Только учти: ответ от curl подтверждает маршрут, но ещё не подтверждает, что агент пойдёт тем же путём.
Три команды по порядку. Первая печатает версию программы:
codex --version
Вторая показывает, каким способом ты вошёл и вошёл ли вообще:
codex login status
Третья проверяет тот самый адрес, на котором чаще всего и обрывается вход:
curl -sS -o /dev/null -w "%{http_code}\n" https://auth.openai.com/oauth/token
Ответ 405 тут нормальный: адрес принимает только POST, а простой запрос curl уходит методом GET. Важно другое - что HTTP-код вообще пришёл, значит запрос дошёл до сервера OpenAI. Таймаут или ошибка соединения означают, что маршрут не собрался.
Тут есть ловушка, о которой стоит знать заранее. В разборе 41434 автор показал: с той же машины и по тому же маршруту curl до адреса /oauth/token доходит, шифрованное соединение устанавливается, ответ приходит, а сам агент на этом шаге падает. Так что curl подтверждает только сам маршрут.
Почему VPN в браузере не помогает терминалу?
Коротко: расширение для браузера уводит в туннель трафик одного браузера. Codex работает в терминале и выходит в сеть отдельной программой. Поэтому страница входа открывается и даже отдаёт Authentication successful, а следующий шаг уходит с домашнего адреса и получает отказ по стране. Это самый частый сценарий у тех, кто настраивает Codex VPN впервые.
Как выглядит такой отказ, видно в разборе 14215 в трекере openai/codex - публичном списке ошибок и запросов, который ведут сами разработчики. Браузерная авторизация там прошла, локальный сервер ответ поймал, а обмен токена на https://auth.openai.com/oauth/token вернул вот это:
403 {"error":{"code":"unsupported_country_region_territory","message":"Country, region, or territory not supported","param":null,"type":"request_forbidden"}}
Код unsupported_country_region_territory означает одно: сервер проверил адрес, с которого пришёл запрос, и отказал по стране. Пароль, тариф и целость установки тут ни при чём.
Оговорю честно, чем закончился тот разбор: спотыкался там сторонний клиент, который настройки прокси не применял. Официальный codex-cli на той же машине работал, и запись закрыли как не-ошибку. Вывод от этого только крепче: маршрут у каждой программы свой, и адрес выхода у них может отличаться.
Отсюда простое правило: туннель поднимается на уровне системы, чтобы под него попали все программы разом.
Шаг 1. Поднять туннель на всю систему
Коротко: включи туннель в системном режиме, чтобы через него пошёл трафик всех программ, включая терминал. Режим «только для выбранных сайтов» и расширение для браузера для этой задачи не подходят. После включения перезапусти терминал и проверь адрес выхода именно из него: терминал и браузер проверяются по отдельности. С этого шага настройка и начинается.
Порядок такой, он одинаковый на macOS и на Windows:
- Включи туннель в системном режиме. В разных клиентах он называется по-разному: системный, TUN, «весь трафик».
- Закрой терминал и открой заново. Часть клиентов меняет маршрут только для новых процессов.
- Проверь адрес выхода прямо из терминала - подойдёт любой сервис, который печатает адрес обратно.
- Сверь ответ с тем, что показывает браузер. Разные адреса означают, что под туннель попал только браузер.
Команда для третьего пункта:
curl -s https://api.ipify.org
И отдельная просьба: не переключай туннель, пока агент отвечает. В трекере есть замер такого случая: после обрыва канала CLI оставался в активном ходе 299.987 секунды, то есть почти пять минут, без сообщения об ошибке.
Шаг 2. Пройти вход codex login до конца
Коротко: команда codex login поднимает локальный сервер на порту 1455 и открывает браузер. Надпись Authentication successful в браузере появляется раньше, чем вход закончен: последним шагом терминал сам обменивает код на токен. Проверяется это командой codex login status - она показывает активный способ входа.
Запускай вход при уже поднятом туннеле:
codex login
Что тут ломается чаще всего:
- Порт 1455 занят. Он фиксированный, и его делят между собой окна редактора, расширение и вторая копия приложения. В трекере это дословный заголовок записи 3927:
Port 127.0.0.1:1455 is already in use. - В браузере пусто. Новичок видит
This site can't be reachedи думает про блокировку, хотя локальный сервер входа просто не поднялся. В трекере на это есть отдельная запись: сообщение не объясняет, что порт callback уже занят. - Браузера нет вообще. Для машины без окна есть отдельный способ входа:
codex login --device-auth. - Вход по ключу платформы. Ключ передаётся так:
printenv OPENAI_API_KEY | codex login --with-api-key. Браузерного шага и локального порта при таком входе нет, значит уходит и весь класс проблем с портом 1455. - Прокси подменяет сертификат. На этот случай в документации Codex названа переменная
CODEX_CA_CERTIFICATE: в неё кладётся путь к файлу с сертификатами в формате PEM, и делать это надо до входа.
Шаг 3. Убедиться, что агент отвечает
Коротко: вход закрывает только половину задачи, рабочий канал идёт на другой домен и работает через постоянное соединение. Проверка занимает одну команду: codex exec с коротким запросом. Полный ответ означает, что туннель работает на обоих участках. Обрыв на середине указывает на рабочий канал: вход при этом целый.
Проверка одной строкой, без рабочего экрана:
codex exec "перечисли файлы в этой папке"
Полный ответ означает, что можно работать. Обрыв на середине указывает в другое место: вход уже пройден, обрывается длинное соединение с chatgpt.com. Разбор таких обрывов по тексту ошибки идёт отдельной таблицей.
И оговорка, без которой инструкция была бы неполной. Ни один из шагов не обещает, что соединение поднимется: адрес выхода видит и вторая сторона, а правила доступа задаёт тоже она. Статья показывает, где смотреть и что означают ошибки; решение работать так или не работать остаётся за тобой.
Заодно проверь лимиты своего тарифа: обрыв ответа иногда путают с упёршимся лимитом, а это разные вещи и решаются они по-разному.
Что делать, если VPN включён, а Codex всё равно падает?
Коротко: если туннель уже поднят, а агент всё равно падает, смотри на дословный текст ошибки: он однозначно указывает участок. Отказ по стране приходит кодом unsupported_country_region_territory, в тексте про провал входа стоит адрес oauth/token, а при обрыве работы - адрес backend-api/codex/responses. Дальше по таблице: каждой строке соответствует свой шаг из этой инструкции.
Все строки ниже взяты из разборов в трекере openai/codex, ссылки на них - в блоке источников.
| Что печатает терминал | Что это значит | Куда идти |
|---|---|---|
unsupported_country_region_territory |
Отказ по стране выхода | Шаг 1; если туннель уже поднят - смотри разбор под таблицей |
Token exchange error: error sending request for url (https://auth.openai.com/oauth/token) |
Браузер вошёл, терминал до обмена токена не дошёл | Шаг 1, затем Шаг 2 |
oauth token exchange transport failure is_timeout=false is_connect=true is_request=true |
Соединение не установилось вообще; в одном из разборов запрос ушёл не на тот резолвер DNS - службу, которая превращает имя домена в адрес | Шаг 1: переподнять туннель и перезапустить терминал |
stream disconnected before completion: error sending request for url (https://chatgpt.com/backend-api/codex/responses) |
Оборвался рабочий канал, вход при этом целый | Шаг 3 |
stream disconnected before completion: idle timeout waiting for websocket |
Постоянное соединение осталось без данных и было закрыто по таймауту | Не трогать туннель во время ответа |
Port 127.0.0.1:1455 is already in use |
Порт входа занят другой копией Codex | Шаг 2, закрыть лишние окна |
This site can't be reached в браузере |
Локальный сервер входа не поднялся | Шаг 2, тот же порт 1455 |
Туннель поднят, а отказ по стране всё равно приходит. Так тоже бывает, и означает это одно: сервер OpenAI не принял сам адрес, с которого пришёл запрос. На форуме OpenAI разбирали ровно такой заход. У автора серверы физически стояли в Калифорнии, страна поддерживается, а в ответ на запросы приходил тот же код unsupported_country_region_territory. В ответе ему посоветовали взять свой адрес и прогнать его через несколько сервисов геолокации: купленный диапазон адресов может до сих пор числиться в базах за другой страной.
Вывод отсюда прикладной. Дешёвый и перегруженный сервер туннеля часто отдаёт адрес, размеченный в базах неверно, и перезапуск Codex этого не меняет. Проверяется это сменой локации или сервера. Повторный вход тут ничего не даст.
Отдельный случай - Windows с WSL. Туннель, поднятый в основной системе, внутри WSL может не наследоваться, и агент там работает в своей сети. Значит, маршрут в этой связке проверяется дважды: в основной системе и внутри самой WSL. В трекере на эту тему есть записи с обеих сторон: и провал обмена токена в WSL2, и занятый порт входа именно в WSL.
Почему переменные HTTPS_PROXY здесь не работают?
Коротко: Codex CLI сам переменные HTTPS_PROXY, HTTP_PROXY и ALL_PROXY не читает. Запрос на то, чтобы он начал их применять, висит в трекере открытым с сентября 2025 года. Ключи network_proxy в файле config.toml относятся к другому: это прокси для команд, которые агент запускает в песочнице.
Здесь тема Codex VPN делится на две разные задачи, и их постоянно путают.
| Трафик самого Codex до OpenAI | Трафик команд, которые агент запускает | |
|---|---|---|
| Кто ходит наружу | сам агент | команды внутри песочницы |
Ключ в config.toml |
нет такого ключа | features.network_proxy, [permissions.<имя>.network] |
| Переменные окружения | не читаются, запросы открыты | учитываются встроенным прокси песочницы |
| Чем настраивается | маршрутом на уровне системы | настройками песочницы |
Задача первая - трафик самого Codex до OpenAI. В официальном справочнике конфигурации ключа для него нет. В трекере лежат два открытых запроса. Issue 4242 - про то, чтобы клиент сам применял переменные HTTPS_PROXY, HTTP_PROXY и ALL_PROXY во всех исходящих запросах. Issue 6060 - про отдельное поле http_proxy в config.toml. Оба открыты, то есть готового поведения на них ссылаться нельзя. Переменная NO_PROXY в справочнике не описана.
Задача вторая - трафик команд, которые запускает сам агент. Вот для неё в ~/.codex/config.toml есть целая ветка: features.network_proxy с полями enabled, proxy_url, socks_url, domains, и секция [permissions.<имя>.network]. По официальному описанию это прокси для команд в песочнице - ограниченном окружении, в котором агент запускает команды на твоей машине. Собственный канал агента наружу эти ключи не настраивают.
Практический вывод простой: настраивай маршрут на уровне системы. Переменные окружения эту задачу не решают. Терминальные клиенты со строчными http_proxy в окружении в трекере встречаются, но подтверждённого правила «выставь переменную и заработает» нет.
Чем рискует аккаунт и что об этом пишет OpenAI?
Коротко: России в официальном списке поддерживаемых стран OpenAI нет. На той же странице написано, что доступ к сервисам за пределами перечисленных стран может привести к блокировке или приостановке аккаунта. Условия использования отдельно запрещают обход ограничений. Решение принимаешь ты, но условие стоит знать до того, как поднимаешь туннель.
Я открыл официальную страницу поддерживаемых стран 10 сентября 2026 года. В перечне 208 стран и территорий; России и Беларуси среди них нет, Украина указана с пометкой про исключения, даты последнего обновления на странице не видно.
«Доступ к нашим сервисам за пределами перечисленных ниже стран и территорий, равно как и предоставление такого доступа другим, может привести к блокировке или приостановке вашего аккаунта» - так написано на официальной странице Supported countries and territories. Перевод мой, оригинал по ссылке.
Условия использования OpenAI отдельным пунктом запрещают обход ограничений и защитных мер. Дословную формулировку не привожу: страница политик отдаёт отказ на автоматическую загрузку, а цитировать по чужому пересказу я не буду.
Что из этого следует по-человечески. Аккаунт может быть закрыт - это прямо написанное условие сервиса. Чужие аккаунты и перепродажа доступа риск только увеличивают: отвечает владелец аккаунта. Конкретных сервисов я не советую и в статье не называю, выбор маршрута остаётся за тобой вместе с ответственностью за него.
Что дальше
Коротко: если Codex ещё не стоит - начни с установки, она разобрана по шагам отдельно. Если туннель настроен и агент отвечает - следующий вопрос обычно про оплату и лимиты. Если хочется не только запустить агента, но и научить его своим задачам, дальше идут скиллы и плагины.
- Как установить Codex - четыре способа установки и проверка через
codex doctor. - Оплата Codex из России - вторая стена, которую проходят после сетевой.
- Лимиты Codex - где посмотреть свой расход.
- Скиллы в Codex - как подключить к агенту готовые навыки.
Настройки и скиллы, которые я держу для своих проектов, собраны в базе знаний ClaudeBase: файлы ставятся в проект по инструкции, агент читает их в рабочем контексте.
Источники
- Аутентификация в Codex, официальная документация OpenAI - команды входа, порт локального сервера, переменная для своего сертификата.
- Справочник конфигурации Codex, официальная документация OpenAI - полный перечень сетевых ключей файла настроек.
- Supported countries and territories, OpenAI - официальный список стран и предупреждение о блокировке аккаунта.
- Разбор 14215 в трекере openai/codex - набор эндпоинтов входа и дословный отказ по стране при рабочем туннеле.
- Обсуждение 41434 - провал обмена токена при том, что curl тот же адрес проходит.
- Запись 42528 - случай, когда финальный обмен токена ушёл на другой резолвер DNS.
- Тред 22048 - занятый порт локального сервера входа и что видит новичок в браузере.
- Случай 3927 - тот же занятый порт 1455, но внутри WSL.
- Замер 42914 - зависание почти на пять минут после обрыва туннеля.
- Обрыв 37682 - адрес рабочего канала в тексте ошибки.
- Запрос 4242 - открытое предложение поддержать переменные прокси.
- Ветка 6060 - открытое предложение завести ключ прокси в файле настроек.
- Обсуждение на форуме OpenAI - отказ по стране при сервере в поддерживаемой стране и совет проверить свой адрес по базам геолокации.