Коротко (TL;DR)
Codex — агент OpenAI, который сам пишет и запускает код, — перед первой работой просит представиться. Аутентификация Codex устроена как развилка из двух путей: вход через аккаунт ChatGPT и вход по API-ключу OpenAI. Это не «логин и пароль», а выбор, от которого зависит, с чьего счёта списываются деньги и какие функции вам доступны.
- Коротко (TL;DR)
- Два способа входа: в чём разница
- Как войти через аккаунт ChatGPT
- Как войти по API-ключу
- Где какой способ применять
- Где хранится вход и как им управлять
- Проверить, выйти и сменить аккаунт
- Вход в CI/CD и на автоматическом раннере
- Безопасность и риски: как не потерять доступ и деньги
- Типичные ошибки входа и как их чинить
- FAQ
Если коротко:
- Вход через ChatGPT — команда
codex login, открывается браузер, вы подтверждаете вход своим аккаунтом. Codex входит в ваш план ChatGPT на всех уровнях — от бесплатного Free и Go до Plus, Pro, Business, Edu и Enterprise (состав планов на 17 июля 2026), отдельно платить не нужно. Это способ по умолчанию для живой работы за своим компьютером. - Вход по API-ключу — команда
codex login --with-api-key, ключ берётся из личного кабинета OpenAI. Оплата идёт по факту (pay-as-you-go) через ваш аккаунт на платформе OpenAI, а не из кредитов плана ChatGPT. Это способ для скриптов, серверов и CI/CD. - На сервере или по SSH, где нет браузера, есть третий приём —
codex login --device-auth: Codex покажет короткий код, вы вводите его в браузере на телефоне или другом устройстве. - Проверить, кто вошёл —
codex login status. Выйти —codex logout.
Один вход покрывает сразу все локальные поверхности Codex: CLI в терминале, расширение в редакторе и десктоп-приложение. А вот Codex в облаке требует именно входа через ChatGPT — API-ключ там не работает. Дальше разберём каждый путь по шагам, где физически лежит токен и как не потерять ключ.
Два способа входа: в чём разница
Оба способа приводят к одному результату — Codex получает право обращаться к моделям OpenAI от вашего имени. Но за этим правом стоят разные счета и разные правила.
Вход через ChatGPT — это OAuth-авторизация: тот же механизм, по которому вы «входите через Google» на сторонних сайтах. Вы не отдаёте Codex пароль — браузер подтверждает вашу личность и возвращает в терминал временные токены доступа. Расход считается из лимитов вашего плана ChatGPT, а доступ и хранение данных подчиняются правам вашего рабочего пространства (роли, retention, политики).
Вход по API-ключу — это отдельный платёжный доступ к платформе OpenAI. Ключ (строка вида sk-proj-…) привязан к вашей API-организации, и каждый запрос Codex тарифицируется по стандартным ценам API, а не из подписки. Кредиты плана ChatGPT при этом не тратятся вовсе — это два независимых кошелька.
Разница между входом через подписку и оплатой по факту — та же развилка, что и у соседних инструментов: например, у Claude Code выбор между оплатой подписки Claude и доступом по API устроен по тому же принципу. Логика «подписка для работы руками, ключ для автоматизации» повторяется у всех агентных ассистентов.
Вот как два пути соотносятся по ключевым параметрам:Параметр Вход через ChatGPT Вход по API-ключу Команда входа codex logincodex login --with-api-keyКак подтверждается OAuth в браузере (или --device-auth)ключ sk-proj-… из кабинета OpenAIКто платит лимиты вашего плана ChatGPT ваш счёт на платформе OpenAI, по факту Отдельная оплата не нужна (входит в план) да, по тарифам API Политика данных права и retention рабочего пространства ChatGPT настройки вашей API-организации Codex в облаке работает не работает (нужен вход через ChatGPT) Когда удобнее живая работа в CLI, IDE, десктопе скрипты, серверы, CI/CD, отдельный биллинг
Дальше — как пройти каждый путь на практике.
Как войти через аккаунт ChatGPT
Это способ по умолчанию и рекомендованный для повседневной работы за своим компьютером. Предполагается, что Codex CLI уже установлен (если нет — начните с установки; механика входа одинаковая на Windows, macOS и Linux).
Шаг 1. Запустите команду входа.
codex login
Если вы запускаете Codex впервые, можно просто набрать codex и выбрать в меню пункт «Sign in with ChatGPT».
Шаг 2. Подтвердите вход в браузере. Codex поднимает локальный сервер входа на http://localhost (порт случайный) и сам открывает браузер на странице авторизации OpenAI. В терминале вы увидите примерно такое:
Starting local login server on http://localhost:1455.
If your browser did not open, navigate to this URL to authenticate:
https://auth.openai.com/authorize?...
On a remote or headless machine? Use `codex login --device-auth` instead.
Если браузер не открылся сам — скопируйте ссылку из терминала и вставьте её вручную.
Шаг 3. Войдите своим аккаунтом ChatGPT и разрешите доступ. После подтверждения браузер вернёт вас на страницу успеха, а в терминале появится:
Successfully logged in
Всё — Codex готов к работе в рамках вашего плана. Можно сразу давать задачу:
codex "объясни, что делает этот проект"
Вход на сервере или по SSH: device-auth
Обычный codex login рассчитан на то, что рядом есть браузер. Но если вы работаете на удалённом сервере, внутри SSH-сессии или в headless-окружении без графики, открывать локальный браузер некому — и вход зависает. Это одна из самых частых жалоб новичков (в репозитории Codex по ней не одно открытое обсуждение).
Решение — авторизация по коду устройства:
codex login --device-auth
Codex покажет короткий код и ссылку:
Visit https://auth.openai.com/activate
Enter code: ABCD-EFGH
Откройте эту ссылку на любом устройстве с браузером — телефоне, ноутбуке — введите код, войдите аккаунтом ChatGPT и подтвердите доступ. Вернитесь в терминал сервера: там появится Successfully logged in. Дальше Codex на удалённой машине работает как обычно. Тот же приём выручает, если браузер на локальной машине по каким-то причинам не открывается.
Как войти по API-ключу
Этот путь нужен, когда Codex должен работать без вашего участия (в скрипте, на сервере, в конвейере CI) или когда вы хотите держать расходы отдельным счётом по API. Ключ выступает и логином, и паролем одновременно, поэтому обращаться с ним нужно как с паролем.
Шаг 1. Получите ключ в кабинете OpenAI. Зайдите в раздел ключей на платформе (https://platform.openai.com/api-keys) и создайте новый секретный ключ. Он выглядит как sk-proj-… и показывается только один раз — скопируйте сразу и не вставляйте потом в переписку, тикеты или скриншоты.
Шаг 2. Проверьте, под кем вы сейчас вошли. Полезно перед сменой аккаунта убедиться, что не перезапишете чужую сессию:
codex login status
Если вывод показывает лишний аккаунт — выйдите (codex logout) перед загрузкой нового ключа.
Шаг 3. Передайте ключ в Codex через стандартный ввод (stdin). Здесь важная деталь безопасности: Codex не принимает ключ как аргумент команды. Ключ подаётся только через stdin — чтобы он не остался в истории оболочки (~/.bash_history, ~/.zsh_history), откуда его легко подсмотреть.
Самый аккуратный способ — сначала положить ключ в переменную окружения, потом «пропустить» её в команду входа:
export OPENAI_API_KEY="sk-proj-…"
printenv OPENAI_API_KEY | codex login --with-api-key
В терминале появится:
Reading API key from stdin...
Successfully logged in
Можно передать ключ и из файла (cat api-key.txt | codex login --with-api-key). Вариант echo "sk-proj-…" | codex login --with-api-key тоже работает, но вписанный прямо в команду ключ снова попадает в историю — на общей машине так лучше не делать.
Шаг 4. Проверьте, что вошли именно по ключу:
codex login status
Logged in using an API key - sk-proj-***ABCD1
Хвост ключа замаскирован — это нормально. Если строка про API-ключ на месте, вход прошёл.
Шаг 5. Уберите ключ из открытой переменной, если он больше не нужен в этой сессии:
unset OPENAI_API_KEY
Codex при этом из системы не выйдет: он уже сохранил вход локально в своём кэше. Сброс переменной просто убирает открытую копию ключа из текущей оболочки.
Отдельно стоит держать в голове разницу трёх переменных, которые легко перепутать.
OPENAI_API_KEY— та, что вы подаёте на вход при логине.CODEX_API_KEY— ключ на один неинтерактивный запускcodex exec, а не постоянный вход.CODEX_ACCESS_TOKEN— токен доступа ChatGPT для доверенной автоматизации (подаётся черезcodex login --with-access-token). Ниже разберём их таблицей.
Где какой способ применять
Метод входа стоит выбирать под задачу, а не «раз и навсегда». Простое дерево решений:
- Работаете руками в терминале, редакторе или десктоп-приложении на своём компьютере → вход через ChatGPT (
codex login). Ничего сверх подписки не платите, доступны все возможности плана. - Codex нужен в облаке (облачные задачи, готовый pull request) → только вход через ChatGPT. API-ключ облако не принимает.
- Работаете на удалённом сервере или по SSH → вход через ChatGPT, но по коду устройства (
codex login --device-auth). - Codex запускается в скрипте, пайплайне CI/CD или на автоматическом раннере → вход по API-ключу. Это официально рекомендованный способ для автоматизации.
- Нужен отдельный, предсказуемый счёт по факту использования (не хотите тратить лимиты плана) → вход по API-ключу.
Смысл развилки: вход через ChatGPT — «я, живой человек, работаю в рамках своей подписки»; вход по API-ключу — «программа работает от имени моей API-организации и платит по счётчику». У соседних агентов логика та же — если вы уже настраивали доступ, устанавливая Claude Code, схема «аккаунт для интерактива, ключ для скриптов» будет знакомой.
Где хранится вход и как им управлять
После успешного входа Codex кэширует данные и переиспользует их при следующих запусках — заново авторизоваться каждый раз не нужно. Важно понимать, где именно лежит этот кэш.
По умолчанию Codex сохраняет вход локально: либо в простом текстовом файле ~/.codex/auth.json, либо в системном хранилище учётных данных операционной системы. Файл auth.json — это плейнтекст: внутри лежат токены доступа. Обращаться с ним нужно как с паролем.
Каталог хранения задаёт переменная CODEX_HOME (по умолчанию ~/.codex). А способом хранения управляет параметр cli_auth_credentials_store в файле конфигурации config.toml:
# file | keyring | auto
cli_auth_credentials_store = "keyring"
file— хранить вauth.jsonвнутриCODEX_HOME;keyring— хранить в системном хранилище (Keychain на macOS, Secret Service на Linux, Credential Manager на Windows);auto— брать системное хранилище, если оно доступно, иначе откатываться наauth.json.
На общей или рабочей машине надёжнее переключиться на keyring, чтобы токены не лежали открытым файлом.
Ещё одна деталь: CLI и расширение для редактора делят один и тот же кэш входа. Если вы вышли (codex logout) в одном из них — при следующем запуске второго тоже придётся войти заново.
Для входа через ChatGPT есть приятный бонус: Codex сам обновляет токены до истечения срока. В текущем открытом клиенте сессия считается устаревшей примерно через 8 дней, и Codex обновляет её при очередном запуске — активная работа обычно не требует повторного входа через браузер.
Переменные окружения, отвечающие за вход
Часть поведения входа управляется переменными окружения. Их легко перепутать, поэтому вот назначение каждой:Переменная Где используется Зачем OPENAI_API_KEYвход по ключу ключ, который вы подаёте в codex login --with-api-key; экспортируете и «пропускаете» в команду через stdinCODEX_API_KEYтолько codex execключ на один неинтерактивный запуск; задаётся строчно, не постоянный вход CODEX_ACCESS_TOKENCLI, доверенная автоматизация токен доступа ChatGPT/Codex; для постоянного входа подаётся в codex login --with-access-tokenCODEX_HOMECLI, расширение, установщики каталог состояния Codex (конфиг, вход, логи); по умолчанию ~/.codexCODEX_CA_CERTIFICATEHTTPS и вход путь к своему CA-сертификату для корпоративных сетей с TLS-перехватом
Проверить, выйти и сменить аккаунт
Три команды закрывают всё управление сессией.
Проверить текущий вход:
codex login status
Возможные ответы: Logged in using ChatGPT, Logged in using an API key - sk-proj-***… или Not logged in.
Выйти:
codex logout
Successfully logged out
Данные входа удаляются из ~/.codex/. Чтобы снова пользоваться Codex, нужно авторизоваться заново.
Сменить аккаунт или способ входа — это просто связка: codex logout, затем нужный codex login (через ChatGPT) или codex login --with-api-key (по ключу). Отдельной команды «переключить аккаунт» нет — выход и повторный вход и есть переключение.
Вход в CI/CD и на автоматическом раннере
Для конвейеров сборки правило простое: используйте API-ключ. Ключ кладут в секреты CI (GitHub Actions, GitLab CI) и подают на вход тем же способом через stdin.
# GitHub Actions
- name: Login to Codex
run: echo "${{ secrets.OPENAI_API_KEY }}" | codex login --with-api-key
# GitLab CI
script:
- echo "$OPENAI_API_KEY" | codex login --with-api-key
- codex exec "прогони тесты"
Есть и продвинутый путь — работать в CI под своим аккаунтом ChatGPT (когда нужны именно возможности рабочего пространства, а не голый API). Тогда auth.json один раз создают на доверенной машине через codex login, кладут в секрет-хранилище и подкладывают раннеру. Тонкость: Codex сам обновляет токены в этом файле (сессия «протухает» примерно за 8 дней), поэтому нельзя перезатирать обновлённый auth.json исходным секретом на каждом прогоне — иначе выбросите свежие токены, которые Codex только что записал. Этот приём OpenAI помечает как «для доверенной приватной инфраструктуры» и прямо не советует для публичных и open-source репозиториев. Для большинства пайплайнов достаточно API-ключа.
Безопасность и риски: как не потерять доступ и деньги
Аутентификация — это ровно та точка, где неосторожность стоит денег. Главные риски входа и что с ними делать:
- API-ключ = доступ к вашему счёту. Утёкший в публичный репозиторий ключ — это чужие расходы по вашему тарифу API. Никогда не коммитьте ключ, не вставляйте его в тикеты, чаты и скриншоты. Именно поэтому Codex принимает ключ только через stdin, а не аргументом — чтобы он не осел в истории команд.
~/.codex/auth.json— это пароль в открытом виде. Файл содержит токены доступа. Не добавляйте его в git, не копируйте в логи и публичные артефакты. На общей машине переключите хранение на системный keyring (cli_auth_credentials_store = "keyring")..envв проекте — в.gitignore. Если хранитеOPENAI_API_KEYв файле.envпроекта, добавьте.envв.gitignoreпервым делом. Codex умеет подхватывать переменные из.env, но и git подхватит его так же охотно, если не запретить.- Права на файлы. На Unix-системах разумно ограничить доступ:
chmod 700 ~/.codexиchmod 600 ~/.codex/auth.json, чтобы читать их мог только владелец. - Способ входа меняет политику данных. Вход через ChatGPT подчиняется правам и retention вашего рабочего пространства; вход по API-ключу — настройкам API-организации. Для командной работы это не мелочь: выбирайте вход осознанно, а не «лишь бы залогиниться».
Отдельно про деньги: вход через ChatGPT и вход по ключу — два разных кошелька. Легко думать, что «уже плачу за Plus, значит API бесплатно» — нет. Ключ тарифицируется по API отдельно, и в скрипте, который гоняет Codex в цикле, счёт растёт незаметно. Если считаете расходы — держите в голове, из какого кармана в этот момент платит Codex.
Типичные ошибки входа и как их чинить
| Симптом | Причина | Что делать |
|---|---|---|
codex login зависает, браузер не открывается | нет графики/браузера (сервер, SSH, headless) | войти по коду устройства: codex login --device-auth |
| Ссылка входа не открывается из SSH-сессии | локальный порт входа недоступен снаружи | codex login --device-auth и открыть ссылку на своём устройстве |
«No API key was provided» при --with-api-key | OPENAI_API_KEY не задана или не экспортирована | export OPENAI_API_KEY="sk-…", затем printenv OPENAI_API_KEY \| codex login --with-api-key |
| «Invalid API key» | ключ с опечаткой, отозван или истёк | проверить/создать ключ заново в кабинете OpenAI; ключ начинается с sk- или sk-proj- |
| Вход не сохраняется между запусками | сбой с хранилищем учётных данных | проверить codex login status; при нужде задать cli_auth_credentials_store в config.toml |
| Codex в облаке не пускает по ключу | облако требует вход через ChatGPT | войти через codex login (OAuth), API-ключ для облака не подходит |
| Permission denied к сохранённому входу | слишком строгие/битые права каталога | chmod 700 ~/.codex и chmod 600 ~/.codex/auth.json |
FAQ
Нужно ли платить отдельно за вход в Codex? Нет, если вы входите через аккаунт ChatGPT: Codex входит в ваш план ChatGPT на любом уровне — от бесплатного Free до Enterprise, отдельной подписки на Codex нет. Отдельная оплата появляется только при входе по API-ключу — там расход тарифицируется по ценам API поверх (или вместо) подписки.
Можно ли войти в Codex без браузера?
Да. На сервере, по SSH или в headless-окружении используйте codex login --device-auth: Codex покажет код, вы вводите его в браузере на любом другом устройстве. Это тот же вход через ChatGPT, просто подтверждение переносится на устройство с браузером.
Где Codex хранит данные входа?
По умолчанию — в файле ~/.codex/auth.json (открытый текст с токенами) или в системном хранилище учётных данных. Каталог задаёт переменная CODEX_HOME, способ хранения — параметр cli_auth_credentials_store в config.toml (file, keyring или auto).
Как переключиться с API-ключа на аккаунт ChatGPT?
Выйдите командой codex logout, затем войдите заново через codex login. Отдельной команды переключения нет — выход и новый вход и есть смена способа. Проверить текущее состояние всегда можно через codex login status.
Codex CLI и расширение в редакторе — это два разных входа? Нет, они делят один кэш входа. Авторизовались в одном — второй тоже войдёт; вышли из одного — второй при следующем запуске попросит войти снова.
Что будет, если мой API-ключ утечёт?
Ключ — это платёжный доступ к вашему аккаунту OpenAI, поэтому его могут использовать за ваш счёт. При подозрении на утечку сразу отзовите ключ в кабинете OpenAI и создайте новый. Чтобы этого не случилось, не коммитьте ключ и auth.json в git, держите .env в .gitignore и передавайте ключ только через stdin.
Курс «OpenAI Codex: агентный кодинг» · модуль «Старт и доступ». Полная программа и два маршрута обучения — на странице курса.
Предыдущий урок: Доступ и тарифы: планы ChatGPT, оплата · Следующий урок: Первый запуск: первая задача за 15 минут
