Два входа в Codex: аккаунт ChatGPT для работы, API-ключ для скриптов

21 мин. чтения

Коротко (TL;DR)

Codex — агент OpenAI, который сам пишет и запускает код, — перед первой работой просит представиться. Аутентификация Codex устроена как развилка из двух путей: вход через аккаунт ChatGPT и вход по API-ключу OpenAI. Это не «логин и пароль», а выбор, от которого зависит, с чьего счёта списываются деньги и какие функции вам доступны.

Если коротко:

  • Вход через 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; экспортируете и «пропускаете» в команду через stdin
CODEX_API_KEYтолько codex execключ на один неинтерактивный запуск; задаётся строчно, не постоянный вход
CODEX_ACCESS_TOKENCLI, доверенная автоматизациятокен доступа ChatGPT/Codex; для постоянного входа подаётся в codex login --with-access-token
CODEX_HOMECLI, расширение, установщикикаталог состояния Codex (конфиг, вход, логи); по умолчанию ~/.codex
CODEX_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-keyOPENAI_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 минут

Поделиться
Связаться:
Крипто- и data-аналитик, инженер-программист (факультет компьютерных наук ХНУРЭ). В IT с 2008 года: администрировал корпоративный мониторинг в «Vodafone Украина», семь лет разрабатывал и продвигал веб-проекты, пять лет руководил маркетингом на метриках — конверсия, CTR, ROI, LTV.Криптовалютными рынками занимаюсь с 2021 года: ончейн-метрики, токеномика, макроэкономические индикаторы. Разработал собственную data-driven модель анализа рынка на 30+ метрик. Стек — Python (pandas, NumPy, SciPy, matplotlib), математическая статистика и EDA; сбор и сверку данных автоматизирую AI-агентами.Принцип — «Don't trust, verify»: каждая цифра проверена по первоисточнику, ключевые — минимум по двум независимым; прогнозы — только сценарии с условиями. Тезис без данных не публикуется.