Token exchange failed - это сбой на последнем шаге входа в Codex через ChatGPT: вход в браузере прошёл, а программа Codex на компьютере не смогла обменять полученный код на токены у сервера OpenAI. Что делать, зависит от текста после двоеточия. error sending request for url сообщает об ошибке отправки запроса процесса Codex; подробности нужны для выбора проверки. 403 Forbidden: Country, region, or territory not supported - отказ по стране, и для России официального способа его снять нет.
Обновление 25 октября 2026 года: обмен токена и проверка рабочего пространства сверены с кодом Codex 0.163.0 и документацией OpenAI. В установленном CLI 0.163.0 проверена справка команд. Намеренно вызывать ошибку входа, менять сеть и проверять исправление на живом аккаунте не стали. Ни один способ ниже не назван воспроизведённым решением; советы из обращений остаются опытом их авторов.
Где ты сейчас
- После
token exchange failedнаписаноerror sending request for url. Иди в раздел про сеть процесса Codex. - После него написано
403 Forbidden: Country, region, or territory not supported. Это отказ по стране, читай раздел про 403. - В браузере открылась страница Sign-in could not be completed. Причина записана в строке Details.
- Вход прошёл, но приложение или VS Code пишет
workspace routing discovery failed. У этой ошибки свой раздел.
Если Codex ещё не установлен или команда codex не находится, начни с инструкции по установке Codex, а на Windows - со статьи про Codex на Windows.
Если для Codex нужен платный план ChatGPT, картой российского банка его не оплатить: OpenAI принимает карты только банков из поддерживаемых стран. Какой план выбрать, разобрано в статье как оплатить Codex.
Я сам плачу за ChatGPT и Codex картой для подписок «Плати по миру»: выпускается за пару минут, пополняется рублями через СБП. Оформить картуРеклама. ООО "Капибара". ИНН 9703231520. erid: CQH36pWzJqNS1hfhQNyQNjbmhaUSfywWpWF3LE48uoYyEF
Как найти свой вариант ошибки
Причину сбоя показывает последняя часть строки. Два частых варианта:
войти в систему не удалось: login server error: token exchange failed: error sending request for url (https://auth.openai.com/oauth/token)
войти в систему не удалось: login server error: token exchange failed: token endpoint returned status 403 forbidden: country, region, or territory not supported
Начало «Войти в систему не удалось» в открытом коде Codex не встречается. Вероятно, это русская локализация интерфейса приложения или расширения, аналог английского «Sign-in failed». На смысл ошибки начало строки не влияет. Префикс Login server error добавляют приложение и расширение VS Code к той же ошибке входа, что и в терминале.
| Строка или симптом | Что это значит | Что делать |
|---|---|---|
error sending request for url (https://auth.openai.com/oauth/token) |
Отправка запроса не завершилась успешно; в полной причине могут быть соединение, прокси, DNS или сертификат | Проверить сеть именно процесса Codex: прокси, ~/.codex/.env, сертификаты |
token endpoint returned status 403 Forbidden: Country, region, or territory not supported |
Сервер OpenAI ответил и отказал по стране, откуда пришёл запрос | Сверить страну со списком OpenAI; официального обхода нет |
token endpoint returned status 403 Forbidden и другой текст |
Сервер ответил отказом, причина в тексте после статуса | Прочитать текст, приложить лог через /feedback |
workspace routing discovery failed |
Сбой проверки маршрута выбранного рабочего пространства | Сохранить полный вариант ошибки, сверить аккаунт и сеть процесса Codex |
Port ... is already in use |
Локальный порт входа 1455 занят | Закрыть лишнее окно входа или войти по коду |
Почему браузер вошёл, а Codex нет
Вход через ChatGPT идёт в два этапа, и выполняют их разные программы.
- Команда
codex loginили кнопка входа в приложении запускает на компьютере локальный сервер на порту 1455. - Браузер открывает страницу OpenAI, ты входишь в аккаунт, и OpenAI возвращает браузер на адрес
localhost:1455/auth/callbackс одноразовым кодом. - Дальше браузер больше не участвует. Сам процесс Codex отправляет этот код на
https://auth.openai.com/oauth/tokenи получает в ответ токены.
Ошибка token exchange failed возникает на третьем шаге. Браузер может работать через расширение-прокси или VPN только для себя, а процесс Codex - выходить в интернет другим маршрутом: его запрос не доходит или приходит из другой страны.
По коду сервера входа при ошибке обмена Codex показывает в браузере Token exchange failed: <причина> с кодом token_exchange_failed, а в терминале Token exchange error: <причина>. Причина - либо текст сетевой ошибки, либо HTTP-статус и ответ сервера.
Error sending request: сеть процесса Codex
Эта строка сообщает о неуспешной отправке. По ней нельзя утверждать, что запрос точно не достиг сервера, или исключить все остальные причины. Сохрани полное продолжение ошибки без ключей и токенов; затем проверяй соединение, прокси, DNS и сертификаты по названной причине.
Прокси в окружении
Частая причина, судя по обращениям на GitHub, - устаревшие переменные HTTP_PROXY, HTTPS_PROXY или ALL_PROXY. Они указывают на порт, где прокси когда-то работал, а сейчас уже не работает. Браузер при этом ходит через системный прокси и работает. В обращении 26764 пользователь Windows нашёл ровно это (перевод): «причиной была устаревшая пользовательская переменная прокси, а не само приложение Codex».
Что проверить:
- Запусти
codex doctor: в выводе есть переменные прокси, системный прокси и доступность chatgpt.com. - Сравни адрес прокси из вывода с тем, где сейчас реально работает твой прокси. Если в переменной старый порт, исправь или удали переменную.
- После смены переменных перезапусти терминал. Приложение Codex и VS Code тоже перезапусти: они подхватывают окружение при старте.
codex doctor
Советы пользователей из обращений, в документации их нет:
- задавать переменные прокси в том же окне терминала, где потом запускаешь
codex login; - добавлять
no_proxy=127.0.0.1,localhost,::1, чтобы локальный адрес входа не уходил в прокси; - для SOCKS писать адрес с
socks5://.
Скрытый файл ~/.codex/.env
Codex при запуске читает файл .env в своей папке настроек, обычно это ~/.codex/.env, и загружает из него переменные окружения. Старый адрес HTTPS_PROXY из этого файла может попасть в окружение Codex и стать причиной ошибки, даже если в терминале переменной нет. Выбранный маршрут зависит от версии и режима: в 0.163.0 при включённом respect_system_proxy системное решение имеет приоритет; переменные окружения используются, если оно недоступно. Это видно в коде выбора маршрута.
Если вход с чистой папкой настроек проходит, а со старой ~/.codex нет, мешает что-то в ней, чаще всего этот .env. Не удаляй папку без копии: там настройки, история и файл входа.
Сертификаты и корпоративная сеть
Если корпоративная сеть проверяет зашифрованный трафик своим сертификатом, Codex может не доверять соединению. В документации OpenAI о входе для этого описана переменная CODEX_CA_CERTIFICATE с путём к файлу сертификатов в формате PEM. Если она не задана, Codex берёт SSL_CERT_FILE. По документации эти настройки действуют и на вход, и на обычные запросы.
Из кода следует, что переменные, которые начинаются с CODEX_, из файла ~/.codex/.env не загружаются. На практике это не проверялось. Поэтому CODEX_CA_CERTIFICATE задавай в окружении терминала или системы, а SSL_CERT_FILE в .env прочитается. Файл сертификата бери у администратора сети.
Пользователи сообщают, что корпоративные шлюзы вроде Zscaler блокируют такие запросы. Решения от OpenAI для этого в обращениях нет.
DNS и разная сеть у браузера и Codex
Без прокси проверь, что компьютер открывает auth.openai.com. Если в сети работает корпоративный или другой VPN-клиент, посмотри, трафик каких программ проходит через него: режим для отдельных приложений может вести браузер одним маршрутом, а терминал другим. Официального описания настройки VPN-клиентов для Codex у OpenAI нет. Региональные правила OpenAI при любой настройке сети остаются в силе.
С версии 0.156.0, вышедшей 22 сентября 2026 года, Codex может повторить обмен кода через системный прокси, но только если первая попытка завершилась ошибкой соединения. Это описано в релизе 0.156.0 и PR 46562. На ответ сервера с кодом 403 повтор не срабатывает, потому что код входа одноразовый. Если у тебя старая версия Codex, сначала обнови её.
Подробнее о том, как проверять маршрут отдельной программы и чем VPN отличается от прокси, - в статье если причина в сети и VPN.
403 country, region, or territory not supported
Перевод текста ошибки: «Страна, регион или территория не поддерживаются».
Здесь сеть сработала: запрос дошёл до сервера OpenAI, и сервер отказал. В теле такого ответа, по сообщениям пользователей на GitHub, стоит код unsupported_country_region_territory. Запрос обмена токена пришёл с адреса страны, которую OpenAI не обслуживает.
На 2 октября 2026 года России нет ни в списке стран ChatGPT, ни в списке стран OpenAI API. Во втором прямо сказано (перевод): «отдельного списка неподдерживаемых стран мы не публикуем. Если страны нет в списке ниже, API там не поддерживается». На странице ChatGPT есть предупреждение (перевод): доступ к сервисам вне перечисленных стран может привести к блокировке или приостановке аккаунта.
Сотрудник OpenAI на такую ошибку в обращении 9714 ответил только ссылкой на список стран. Официального способа войти из неподдерживаемой страны нет.
Если ты в поддерживаемой стране, но видишь этот отказ, помни: сервер определяет страну по адресу, с которого приходит запрос процесса Codex. В одном из обращений программа шла в обход прокси напрямую и получала 403, а через прокси обмен прошёл. Проверь маршрут процесса Codex по разделу выше. Если отказ остаётся, напиши в поддержку OpenAI с текстом ошибки.
Переустановка и оплата не помогают
Отказ выдаёт сервер OpenAI. Переустановка Codex, смена версии, удаление папки настроек и смена пароля его не снимают. Повтор через системный прокси, о котором шла речь выше, на ответ 403 не срабатывает.
Оплата тоже не меняет правила доступа: подписка или баланс API не добавляют страну в список OpenAI. Как и где платить, разобрано в статье как оплатить Codex.
Страница Sign-in could not be completed
Иногда ошибку видно в браузере. Открывается страница с заголовком «Sign-in could not be completed» («Вход не удалось завершить»). Под ним подсказка (перевод): «Вернись в Codex, чтобы повторить попытку, сменить аккаунт или связаться с администратором рабочего пространства, если доступ ограничен».
Это общий шаблон для любой ошибки на шаге возврата в Codex, подсказка про администратора пишется всегда. Причина - в строке Details, например Token exchange failed: error sending request for url ... с кодом token_exchange_failed. По ней выбери строку в таблице выше.
Workspace routing discovery failed
Сообщение workspace routing discovery failed встречается в CLI, приложении и расширении VS Code. Оно относится к проверке маршрута выбранного рабочего пространства. В коде Codex 0.163.0 проверка запрашивает маршрут у сервиса ChatGPT. Ошибка этого шага сама по себе не означает, что нужно заново менять прокси или покупать подписку.
Что видно в коде:
- любая ошибка этого запроса, кроме 401, даёт
workspace routing discovery failed; - при 401 после попытки обновить токен - сообщение
unauthorized (401); - на весь шаг отведено 15 секунд, после них -
workspace routing discovery timed out.
С 25 сентября по 2 октября 2026 года на GitHub пошла волна жалоб на эту ошибку с macOS, Windows, Ubuntu и VS Code, в том числе на версии 0.160.0. В логах рядом встречается ответ сервера 432 «Workspace routing is unavailable». Ответов сотрудников OpenAI в этих обращениях нет.
Что пробуют пользователи, без гарантий:
- Закрыть Codex полностью, включая фоновые процессы, и запустить заново. Один из авторов считает, что долго работающий фоновый процесс хранит устаревшие данные о маршрутизации.
- Проверить доступ к chatgpt.com из той же сети, что и Codex, или сменить сеть. В корпоративной сети спросить администратора, не перехватывает ли шлюз эти запросы.
Если не помогло, отправь логи через /feedback: часть таких обращений закрыта со статусом completed без объяснений.
Login server error в приложении и VS Code
Login server error в начале значит, что ты входишь из приложения Codex или расширения VS Code. Механизм входа тот же, что в терминале, причину ищи по продолжению строки.
Особый случай - VS Code с подключением к удалённой машине по SSH. Сервер входа запускается на удалённой машине, и обмен токена тоже происходит на ней: браузеру нужен проброс её порта 1455, а ей самой - выход в интернет. В обращении 8158 так и получали 403, и сотрудник OpenAI посоветовал вход по коду.
Для WSL пользователи входят в Codex в Windows и копируют файл входа в ~/.codex/ внутри WSL. Такой способ описан и в официальной документации.
Вход по коду: что обходит, а что нет
Команда codex login --device-auth позволяет войти без возврата браузера на localhost: ты открываешь страницу на любом устройстве и вводишь код. Codex сам подсказывает её при входе: на удалённой машине или машине без экрана используй вход по коду.
codex login --device-auth
Сначала вход по коду надо разрешить в настройках безопасности ChatGPT или, для рабочего пространства, в правах администратора. Статус способа - beta.
В конце входа по коду Codex выполняет обмен по тому же адресу /oauth/token, а при сбое выводит device code exchange failed. Поэтому сетевые причины остаются: пользователи с error sending request сообщают об ошибке и при входе по коду. Отказ по стране, судя по коду, тоже останется, хотя отдельных сообщений об этом нет. Вход по коду помогает, когда занят порт 1455 или браузер не может подключиться к localhost удалённой машины.
Ещё два официальных запасных способа: войти на машине с браузером и скопировать файл ~/.codex/auth.json, либо пробросить порт входа по SSH (ssh -L 1455:localhost:1455 вместе с адресом сервера). Файл auth.json содержит данные для входа, никому его не пересылай.
Вход по ключу API
Второй официальный способ входа - ключ API с оплатой по тарифам API, без браузера и обмена кода. Документация советует передавать ключ через стандартный ввод:
printenv OPENAI_API_KEY | codex login --with-api-key
России в списке стран API тоже нет, а оплата по ключу идёт отдельно от подписки ChatGPT. Подробнее - в статье про Codex API. Если вход прошёл, а ответы обрываются, читай Codex: stream disconnected before completion.
Как проверить вход и собрать лог
После любой правки проверь, каким способом Codex сейчас вошёл:
codex login status
Если нужен повторный вход и у тебя есть доступ к своему способу авторизации, выйти и войти можно так. codex logout завершит сохранённый вход; по одной общей сетевой ошибке выполнять его не нужно:
codex logout
codex login
Если ошибка повторяется, найди отдельный лог codex-login.log в папке логов Codex: он создаётся при прямом запуске codex login.
Сотрудник OpenAI в обращениях на GitHub просит после неудачной попытки входа отправить логи командой /feedback внутри Codex. Приложи версию, способ входа и строку ошибки. Ключи API, токены, ссылку авторизации и файл auth.json не отправляй.
Чек-лист
Шаг 1. Найти продолжение ошибки
Прочитать текст после token exchange failed или строку Details на странице Sign-in could not be completed и выбрать свой вариант в таблице.
Шаг 2. При error sending request проверить сеть Codex
Запустить codex doctor, сверить HTTP_PROXY, HTTPS_PROXY, ALL_PROXY в терминале и в ~/.codex/.env, перезапустить терминал, приложение или VS Code.
Шаг 3. В корпоративной сети задать сертификат
Получить PEM-файл у администратора и указать его в CODEX_CA_CERTIFICATE в окружении, не в .env, или в SSL_CERT_FILE.
Шаг 4. При 403 по стране сверить список OpenAI
Открыть списки стран ChatGPT и API. Не переустанавливать Codex и не платить ради снятия этого отказа.
Шаг 5. Выбрать способ входа под ситуацию
На удалённой машине - codex login --device-auth, при оплате по API - вход по ключу через --with-api-key.
Шаг 6. Проверить результат или собрать лог
Выполнить codex login status. Если ошибка осталась - взять codex-login.log и отправить логи через /feedback без ключей и auth.json.
Дальше выбирай по результату:
- Команда не запускается - установка Codex.
- Нужна проверка маршрута именно терминала - Codex и VPN.
- Вход прошёл - первая работа с Codex.