Token exchange failed и Your access token could not be refreshed относятся к аутентификации Codex, но возникают на разных этапах. В первом случае процесс не завершил обмен результата браузерной авторизации на токены. Во втором уже существующая сессия не смогла обновиться. OpenAI не публикует исчерпывающую таблицу, где каждая такая строка равна одной причине.
Сообщение браузера об успешном входе не доказывает, что Codex получил callback на локальный loopback-интерфейс, достиг token endpoint и сохранил credentials. Найдите реальный процесс и последний завершённый шаг. Тогда станет понятно, нужен ли повторный вход, device auth, SSH forwarding или проверка сети и TLS.
Что говорит окончание ошибки
Сохраните полный текст, предварительно удалив секреты. Последняя часть сообщения задаёт разумную первую проверку:
| Наблюдаемый признак | Что уже известно | Следующее действие |
|---|---|---|
error sending request for url (.../oauth/token), timeout или connection error | Запрос от процесса Codex к token endpoint не завершился | Проверить сеть, proxy и TLS именно на хосте процесса |
token endpoint returned status 403 | Endpoint получил запрос и отказал | Сохранить статус и очищенный контекст; проверить аккаунт, workspace и управляемые правила без догадок о регионе |
| Браузер завершил вход, а CLI продолжает ждать | Callback на локальный loopback-интерфейс мог не дойти до Codex | Проверить WSL, SSH, container или удалённый extension host |
access token could not be refreshed | Ранее сохранённая сессия не обновилась | Проверить auth status в реальном окружении и пересоздать credentials поддерживаемой командой |
CERTIFICATE_VERIFY_FAILED или явная CA-ошибка | Процесс не доверяет увиденной цепочке сертификатов | Использовать доверенный корпоративный CA bundle только при подтверждённом TLS interception |
Это границы диагностики, а не готовый диагноз. Например, 403 означает отказ, но сам по себе не называет аккаунт, подписку, регион или proxy причиной.

Сначала сохраните состояние проекта
Ошибка аутентификации сама по себе не удаляет файлы. Риск появляется, когда пользователь одновременно перезапускает несколько клиентов, создаёт дубликаты задачи или стирает каталоги в надежде очистить кэш.
Перед выходом:
- проверьте незакоммиченные изменения в репозитории;
- сохраните неотправленный запрос и полный текст ошибки без личных данных;
- запишите время и часовой пояс, версию клиента, поверхность Codex и путь проекта;
- отметьте последнее успешно завершённое действие;
- остановите повторные запуски одной задачи в разных окнах.
Никому не отправляйте auth.json, access token, refresh token, API key, OTP, Cookie или необработанный HAR. В официальной документации по аутентификации OpenAI предупреждает: файловый auth.json содержит токены доступа и должен защищаться как пароль.
Определите, где действительно работает Codex
Окно на ноутбуке может быть лишь интерфейсом. Расширение VS Code способно работать на Remote SSH, терминал — внутри WSL или контейнера, а отдельный gateway — хранить собственный OAuth-профиль.
| Поверхность | Где сначала искать сохранённую сессию | Что не является доказательством выхода |
|---|---|---|
| Codex App | Активный профиль приложения и локальное хранилище credentials | Выход из другого профиля браузера |
| Локальный CLI | Текущий пользователь ОС и его CODEX_HOME | Работающий сайт ChatGPT |
| IDE | Локальный или удалённый extension host | Переустановка только интерфейса редактора |
| WSL, SSH, контейнер, VM | Home-каталог или keyring внутри этой среды | Выход на основной машине |
| Сторонний агент | Его собственный auth-профиль | Исправный отдельный Codex CLI |
OpenAI указывает, что CLI и расширение IDE могут использовать общий кэш. Он хранится в ~/.codex/auth.json либо в системном хранилище учётных данных. Поэтому ручное удаление случайного файла — плохой первый шаг: нужные данные могут находиться в keyring или принадлежать другому пользователю.

Пересоздайте сессию CLI и IDE
Запускайте команды на том хосте, где выполняется проблемный процесс. Сначала посмотрите активный способ аутентификации:
bashcodex login status
Команда показывает наличие credentials и активный режим. Это помогает обнаружить, например, API-key режим вместо ожидаемого входа ChatGPT или другого пользователя ОС в удалённой среде.
Затем используйте поддерживаемый выход и новый вход:
bashcodex logout codex login
В браузере выберите нужный аккаунт ChatGPT и workspace. После завершения снова выполните codex login status.
Текущая документация по аутентификации описывает codex login, codex login status и codex logout. После повторного входа полностью перезапустите IDE: уже работающий extension host может удерживать старое состояние, даже когда общий кэш обновлён.
В приложении Codex проверьте аккаунт или статус API key в меню профиля, выйдите именно там, полностью закройте приложение и войдите снова. Выход из chatgpt.com в одном браузере не гарантирует очистку локальных данных приложения.
Если повторный вход не возвращается в Codex
После очистки старых credentials сбой нового входа — уже другая ветка. Если CLI запущен на удалённой машине без браузера или локальный callback недоступен, используйте device code, когда он разрешён аккаунтом или администратором:
bashcodex login --device-auth
Откройте выданную ссылку, войдите и введите одноразовый код. Не пересылайте этот код другим людям.
Если сохраняется обычный browser flow, а CLI запущен на доступном по SSH хосте, официальный callback по умолчанию использует локальный loopback-порт 1455. Создайте туннель с локальной машины и запустите вход в той же SSH-сессии:
bashssh -L 1455:[::1]:1455 user@remote codex login
Не открывайте порт 1455 в интернет и не добавляйте туннель для локального CLI. Этот способ исправляет только маршрут callback; он не устраняет 403 endpoint или ошибку сертификата.
В корпоративной сети TLS-прокси может подменять сертификат. Официальная документация предусматривает CODEX_CA_CERTIFICATE с доверенным PEM bundle. Прямой запуск codex login также создаёт отдельный codex-login.log в настроенном каталоге логов. Он полезен для диагностики callback, сертификата и браузерного входа, но перед передачей удалите токены, email, идентификаторы workspace и приватные пути.
Управляемая среда может принудительно требовать ChatGPT или API key и ограничивать вход определённым workspace. Если свежий аккаунт немедленно отклоняется, дальнейшее удаление локального кэша бессмысленно: администратор должен проверить membership, provisioning, разрешённый метод и workspace.
Workload identity — отдельное исключение. Когда credentials выдаёт окружение процесса, codex login и codex logout отклоняются. Исправлять нужно identity provider, federation rule или конфигурацию runtime, а не пользовательский файл.
Проверьте не экран входа, а маленькую задачу
У восстановления есть три наблюдаемых признака:
codex login statusпоказывает ожидаемый режим.- App или IDE показывает нужный аккаунт и workspace, если эта информация доступна.
- Небольшая безопасная задача завершается в том же проекте и окружении, где была ошибка.
Начните с чтения и краткого описания одного несекретного файла. Не возобновляйте крупную запись сразу. Если тест проходит, сначала проверьте уже существующие изменения, а затем продолжайте исходную задачу.
Новый код ошибки меняет диагностику. HTTP 429 относится к ограничениям Codex, зависшее соединение или инструмент — к диагностике тайм-аута, а запрос телефона, MFA или device verification — к проверке входа Codex.
Что передать в поддержку
Если новый официальный вход выполнен на правильном хосте, но ошибка обновления повторяется, подготовьте минимальный пакет:
- очищенный текст ошибки, время и часовой пояс;
- App, CLI или IDE и версию;
- ОС и контекст: local, WSL, SSH, контейнер или VM;
- активный способ входа без токена и полного идентификатора аккаунта;
- результат logout и нового browser/device flow;
- результат одной небольшой проверочной задачи;
- очищенный фрагмент
codex-login.log, только если не завершился новый вход.
Не прикладывайте auth.json, токены, API keys, OTP, Cookie, полный HAR или скриншоты с секретами. Исправление завершено не тогда, когда снова появилась форма входа, а когда новые credentials на правильном хосте связаны с нужным аккаунтом и выполняют ограниченную задачу Codex.



