Флаг Codex CLI --remote-auth-token-env применяется для настройки аутентификации при удалённом подключении к Codex CLI: вместо того чтобы передавать секретный токен прямо в командной строке или записывать его в конфигурационный файл, вы указываете имя переменной окружения, из которой CLI должен получить токен. Такой подход особенно полезен для удалённых серверов, CI/CD, контейнеров и автоматизированных процессов, где секреты должны храниться отдельно от команд и исходного кода.
--remote-auth-token-envуказывает не сам токен, а имя переменной окружения, в которой этот токен находится. Это важное различие: в параметре передаётся, например,CODEX_REMOTE_TOKEN, а не длинная строка авторизационного значения.
Переменная окружения при этом должна быть задана в том окружении, где запускается Codex CLI. Если переменная отсутствует, пуста или содержит неправильный токен, удалённое соединение не будет авторизовано. Поэтому флаг лучше рассматривать не как самостоятельный способ входа, а как связующее звено между системой хранения секретов и удалённым режимом работы Codex CLI.
- Как использовать
- Базовая последовательность настройки
- Когда применять
- Локальная разработка
- CI/CD
- Контейнеры
- Системные службы
- Kubernetes
- Примеры использования
- Однократный запуск в Linux или macOS
- Запуск после export
- Проверка переменной без раскрытия секрета
- Запуск из shell-скрипта
- Передача в Docker
- Передача через файл окружения Docker Compose
- Запуск в CI с защищённой переменной
- Проверка имени переменной в CI
- Использование в systemd
- Использование в Kubernetes
- Использование собственного имени переменной
- Чем отличается от других способов и команд
- --remote-auth-token-env и передача токена напрямую
- --remote-auth-token-env и обычный вход пользователя
- --remote-auth-token-env и --api-key
- --remote-auth-token-env и настройки удалённого адреса
- Типичные ошибки
- Ошибка: после флага указан сам токен
- Ошибка: переменная названа иначе
- Ошибка: переменная есть в терминале, но отсутствует у службы
- Ошибка: секрет пустой
- Ошибка: используется неподдерживаемая версия CLI
- Безопасность и управление токенами
- Как безопасно диагностировать проблему
- Ротация токена
- Краткая памятка
Как использовать
Флаг применяется в команде запуска Codex CLI, которая устанавливает удалённое взаимодействие. В типичном сценарии сначала создаётся переменная окружения с токеном, затем в --remote-auth-token-env передаётся имя этой переменной. Сам секрет не попадает в историю shell-команд и не отображается в списке аргументов процесса в виде обычного значения.
Хорошая практика состоит в том, чтобы разделять имя секрета, способ его хранения и команду запуска. Команда должна знать, где искать токен, но не обязана содержать его непосредственно.
Например, в Linux или macOS переменную можно временно задать перед запуском процесса:
export CODEX_REMOTE_TOKEN="токен-для-удалённого-доступа" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
В этом примере CODEX_REMOTE_TOKEN — только имя переменной. Codex CLI самостоятельно обращается к окружению процесса, читает её значение и использует его для удалённой аутентификации. Если переменная уже задана системой, достаточно указать флаг:
codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
У разных версий Codex CLI набор команд и доступных параметров может отличаться. Поэтому перед настройкой на рабочем сервере стоит проверить локальную справку:
codex --help codex app-server --help
| Элемент | Что указывается | Чего указывать не нужно |
|—|—|—|
| Флаг | --remote-auth-token-env | Другое имя параметра без проверки версии |
| Аргумент флага | Имя переменной, например CODEX_REMOTE_TOKEN | Сам секретный токен |
| Источник токена | Переменная окружения процесса | Произвольный файл, если это не поддерживается конкретной версией |
| Место настройки | Shell, CI/CD, контейнер или менеджер секретов | Публичный репозиторий |
| Результат | CLI получает токен из окружения | Автоматическое создание токена |
Базовая последовательность настройки
Перед первым запуском полезно разделить настройку на отдельные шаги. Это помогает понять, где именно возникла проблема: в токене, переменной окружения, синтаксисе команды или удалённом сервисе.
- Получите действительный токен с необходимыми правами.
- Сохраните его в защищённом хранилище или переменной окружения.
- Убедитесь, что переменная доступна именно тому пользователю и процессу, который запускает Codex CLI.
- Передайте имя переменной в
--remote-auth-token-env. - Проверьте результат подключения по журналу или диагностическому выводу.
# 1. Создание переменной только для текущей сессии export CODEX_REMOTE_TOKEN="секретное-значение" # 2. Проверка наличия переменной без вывода самого токена if [ -n "$CODEX_REMOTE_TOKEN" ]; then echo "Переменная задана" else echo "Переменная отсутствует" fi # 3. Запуск Codex CLI codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Не следует без необходимости выполнять команду вроде echo "$CODEX_REMOTE_TOKEN". Даже если вывод не попадёт в репозиторий, он может сохраниться в истории терминала, журнале CI или системе сбора логов.
| Шаг | Проверяемый вопрос | Признак корректной настройки |
|---|---|---|
| Токен | Существует ли он и не истёк ли? | Токен действителен и имеет нужные права |
| Переменная | Задана ли она в текущем процессе? | Проверка длины или наличия проходит успешно |
| Имя | Совпадает ли имя в shell и в аргументе флага? | Одинаковое написание без опечаток |
| Команда | Поддерживает ли её установленная версия CLI? | Флаг отображается в справке |
| Соединение | Принимает ли удалённая сторона токен? | Нет ошибки авторизации |
Когда применять
Флаг особенно уместен там, где Codex CLI запускается не вручную на личном компьютере, а как часть удалённой инфраструктуры. Это могут быть сервер разработки, контейнер, агент автоматической сборки или отдельная машина, к которой подключаются несколько пользователей.
В интерактивной локальной работе иногда удобнее использовать штатный механизм входа Codex CLI. Но если процесс запускается автоматически, передача токена через переменную окружения обычно безопаснее и удобнее, чем включение секрета в команду или конфигурацию проекта.
Переменная окружения — не магический сейф, но она позволяет не смешивать секрет с операционной логикой: команду можно хранить в скрипте, а значение токена — в защищённой среде.
| Сценарий | Насколько подходит флаг | Почему |
|—|—:|—|
| Локальный ручной запуск | Иногда | Удобен, если нужен именно удалённый режим |
| CI/CD | Да | Секрет можно передать через secret variables |
| Docker-контейнер | Да | Токен передаётся во время запуска контейнера |
| Kubernetes | Да | Можно использовать Secret и переменную окружения |
| Общий сервер | Да | Значение не приходится записывать в общий скрипт |
| Публичный пример команды | Да | В примере можно показать только имя переменной |
| Хранение токена в Git | Нет | Секрет нельзя коммитить в репозиторий |
Локальная разработка
На рабочем компьютере флаг можно использовать, если вы тестируете именно удалённую схему аутентификации или запускаете локальный процесс, к которому обращается другой компонент. Для кратковременной проверки лучше задавать переменную только на время одной shell-сессии или одной команды.
CODEX_REMOTE_TOKEN="временный-токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Такой вариант не сохраняет переменную в профиле shell. Однако секрет всё равно нужно получать из безопасного источника и не вставлять в публичные скрипты.
CI/CD
В системе непрерывной интеграции токен обычно создаётся как защищённая переменная проекта. В job передаётся имя переменной, а не её содержимое. Это позволяет использовать один и тот же сценарий в разных окружениях, не меняя саму команду.
steps:
- name: Start Codex remote service
run: codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
env:
CODEX_REMOTE_TOKEN: ${{ secrets.CODEX_REMOTE_TOKEN }}
Конкретный синтаксис зависит от CI-системы. Важны два принципа: значение должно быть замаскировано в логах, а переменная должна быть доступна процессу, запускающему CLI.
| Практика в CI/CD | Правильный вариант | Рискованный вариант |
|---|---|---|
| Передача секрета | Protected/secret variable | Строка в YAML-файле |
| Вывод в лог | Проверять только наличие | Печатать значение токена |
| Область действия | Только нужная job | Глобально для всех задач |
| Ротация | Периодически заменять токен | Использовать бессрочный секрет |
| Права | Минимально необходимые | Максимальные права «на всякий случай» |
Контейнеры
В Docker токен можно передать через переменную окружения во время запуска контейнера. Команду запуска при этом можно оставить одинаковой для разных сред, меняя только источник секрета.
docker run --rm -e CODEX_REMOTE_TOKEN codex-runtime:latest codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
В этом варианте Docker получает значение переменной из окружения хоста. Не стоит записывать секрет в Dockerfile: образ может попасть в реестр, кеш сборки или к другому разработчику.
Системные службы
Если Codex CLI запускается через systemd, supervisor или другой менеджер процессов, переменную нужно передать именно службе. Наличие значения в вашем интерактивном терминале не означает, что его увидит фоновый процесс.
[Service] Environment="CODEX_REMOTE_TOKEN=значение_из_защищённого_источника" ExecStart=/usr/local/bin/codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN Restart=on-failure
Для production-среды предпочтительнее использовать отдельный механизм секретов, а не хранить токен в открытом unit-файле. После изменения переменной службу обычно нужно перезапустить, иначе старый процесс продолжит работать с прежним окружением.
Kubernetes
В Kubernetes токен обычно помещают в объект Secret и подключают к контейнеру как переменную окружения. В манифесте приложения остаётся только ссылка на секрет.
env:
- name: CODEX_REMOTE_TOKEN
valueFrom:
secretKeyRef:
name: codex-auth
key: remote-token
args:
- app-server
- --remote-auth-token-env
- CODEX_REMOTE_TOKEN
Доступ к Secret следует ограничить политиками Kubernetes. Сам факт использования переменной окружения не отменяет требований к правам доступа к pod, журналам и диагностическим инструментам.
| Среда | Где хранить значение | Что передавать CLI |
|---|---|---|
| Локальный shell | Временная переменная | Имя переменной |
| GitHub Actions-подобная CI | Repository/organization secret | Имя переменной job |
| Docker | Secret manager или окружение хоста | Имя переменной контейнера |
| systemd | Защищённый EnvironmentFile или менеджер секретов | Имя переменной службы |
| Kubernetes | Secret | Имя переменной контейнера |
Примеры использования
В этом разделе собраны практические варианты для разных окружений. Во всех примерах важно следить за тем, что в --remote-auth-token-env передаётся именно имя переменной, а не значение секрета.
Однократный запуск в Linux или macOS
Этот способ подходит для проверки настройки без изменения профиля пользователя. Переменная существует только во время запуска указанного процесса.
CODEX_REMOTE_TOKEN="токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Запуск после export
Такой вариант удобен, когда процесс перезапускается несколько раз в течение одной рабочей сессии.
export CODEX_REMOTE_TOKEN="токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Проверка переменной без раскрытия секрета
Проверять нужно наличие значения, а не выводить его целиком. Например, можно проверить, что длина строки больше нуля.
if [ -z "${CODEX_REMOTE_TOKEN:-}" ]; then
echo "Ошибка: CODEX_REMOTE_TOKEN не задан"
exit 1
fi
codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Запуск из shell-скрипта
Скрипт может завершаться до запуска CLI, если секрет не передан. Это лучше, чем запускать сервис, который гарантированно завершится с ошибкой авторизации.
#!/usr/bin/env bash
set -euo pipefail
: "${CODEX_REMOTE_TOKEN:?Переменная CODEX_REMOTE_TOKEN не задана}"
exec codex app-server
--remote-auth-token-env CODEX_REMOTE_TOKEN
Передача в Docker
В команду Docker можно передать только имя переменной, оставив её значение на стороне хоста или менеджера секретов.
export CODEX_REMOTE_TOKEN="токен" docker run --rm --env CODEX_REMOTE_TOKEN codex-runtime:latest codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Передача через файл окружения Docker Compose
Файл окружения должен находиться под контролем доступа и не должен попадать в репозиторий. В публичном проекте обычно добавляют его в .gitignore.
# .env CODEX_REMOTE_TOKEN=токен # compose-команда docker compose run --rm codex codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Запуск в CI с защищённой переменной
CI-система должна подставить секрет в окружение job. В репозитории остаётся только имя переменной.
export CODEX_REMOTE_TOKEN="$CI_CODEX_REMOTE_TOKEN" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Проверка имени переменной в CI
Иногда ошибка возникает не в Codex CLI, а из-за того, что secret настроен под другим именем. Проверка должна сообщать только факт наличия значения.
if [ -n "${CI_CODEX_REMOTE_TOKEN:-}" ]; then
echo "CI-секрет получен"
else
echo "CI-секрет не передан"
exit 1
fi
export CODEX_REMOTE_TOKEN="$CI_CODEX_REMOTE_TOKEN"
codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Использование в systemd
Фоновая служба не наследует переменные из терминала пользователя автоматически. Поэтому значение нужно передать в конфигурации службы или подключить через отдельный защищённый файл.
[Unit] Description=Codex remote application server After=network-online.target [Service] EnvironmentFile=/etc/codex/codex.env ExecStart=/usr/local/bin/codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN Restart=on-failure [Install] WantedBy=multi-user.target
Использование в Kubernetes
В манифесте можно связать переменную контейнера с ключом Kubernetes Secret.
apiVersion: apps/v1
kind: Deployment
metadata:
name: codex-remote
spec:
template:
spec:
containers:
- name: codex
image: codex-runtime:latest
env:
- name: CODEX_REMOTE_TOKEN
valueFrom:
secretKeyRef:
name: codex-auth
key: remote-token
args:
- app-server
- --remote-auth-token-env
- CODEX_REMOTE_TOKEN
Использование собственного имени переменной
Имя переменной не обязано быть именно CODEX_REMOTE_TOKEN. Можно выбрать название, соответствующее внутренним правилам проекта.
export INTERNAL_REMOTE_AUTH="токен" codex app-server --remote-auth-token-env INTERNAL_REMOTE_AUTH
| Пример | Где хранится токен | Что видит команда |
|—|—|—|
| Однократный shell-запуск | Окружение текущего процесса | Имя переменной |
| Shell-скрипт | Переданное окружение | Имя переменной |
| Docker | Окружение хоста или secret store | Имя переменной контейнера |
| CI/CD | Защищённая переменная job | Имя переменной job |
| systemd | EnvironmentFile или secret manager | Имя переменной службы |
| Kubernetes | Secret | Имя переменной контейнера |
| Пользовательское имя | Любой разрешённый источник | Выбранное имя |
Чем отличается от других способов и команд
Название --remote-auth-token-env легко перепутать с параметрами, которые передают сам токен, включают удалённый режим или настраивают общий вход пользователя. На практике это разные уровни конфигурации: один параметр выбирает режим, другой — источник секрета, третий — адрес или способ подключения.
Главный вопрос при выборе параметра: вы настраиваете транспорт, аутентификацию или способ хранения секрета? У этих задач могут быть разные команды и флаги.
--remote-auth-token-env и передача токена напрямую
Флаг с суффиксом -env получает имя переменной. Гипотетическая прямая передача токена, если она поддерживается конкретной версией, работала бы иначе: в аргументе находилось бы само значение. Такой способ опаснее, потому что аргументы процесса могут быть видны через системные инструменты и попадать в историю shell.
# Предпочтительный вариант export CODEX_REMOTE_TOKEN="токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN # Не следует делать без крайней необходимости codex app-server --remote-auth-token "токен"
| Критерий | Через переменную окружения | Через значение в аргументе |
|—|—|—|
| Попадание в history shell | Обычно нет, если export выполнен безопасно | Возможно |
| Видимость в списке процессов | Обычно не отображается как аргумент | Может отображаться |
| Удобство для CI | Высокое | Низкое |
| Риск случайного коммита | Ниже | Выше |
| Удобство быстрой проверки | Высокое | Формально высокое, но небезопасное |
--remote-auth-token-env и обычный вход пользователя
Интерактивная авторизация предназначена для входа конкретного пользователя через поддерживаемый механизм Codex CLI. Переменная с удалённым токеном больше подходит для процесса, которому нужно автоматически проходить удалённую проверку без ручного ввода.
# Интерактивный режим, если он предусмотрен установленной версией codex login # Неинтерактивная передача удалённого токена codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Нельзя автоматически считать эти варианты взаимозаменяемыми. Локальная сессия пользователя может быть успешно авторизована, но не иметь отношения к токену, который нужен удалённому серверу.
--remote-auth-token-env и --api-key
Параметр вроде --api-key, если он есть в конкретной версии или связанном инструменте, обычно означает прямое указание ключа или другой формы учетных данных. --remote-auth-token-env решает другую задачу: указывает, из какой переменной взять токен для удалённой аутентификации.
# Переменная окружения для удалённого токена codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN # Не смешивайте назначение параметров без проверки справки codex app-server --api-key CODEX_REMOTE_TOKEN
Последняя команда не обязана быть корректной: наличие похожего по смыслу параметра в другом CLI не означает, что он поддерживается Codex CLI.
--remote-auth-token-env и настройки удалённого адреса
Адрес удалённого сервиса, порт, протокол и токен — разные параметры. Даже правильный токен не поможет, если клиент подключается не к тому адресу или сервис не слушает нужный порт.
export CODEX_REMOTE_TOKEN="токен" codex app-server --listen ws://127.0.0.1:4500 --remote-auth-token-env CODEX_REMOTE_TOKEN
Названия и доступность параметров вроде --listen нужно сверять со справкой установленной версии. Не стоит переносить синтаксис из документации другой версии без проверки.
| Задача | Что обычно отвечает за неё | Пример категории |
|---|---|---|
| Источник токена | --remote-auth-token-env |
Переменная окружения |
| Адрес сервиса | Параметр адреса или прослушивания | Хост и порт |
| Интерактивный вход | Механизм login | Пользовательская сессия |
| Режим выполнения | Команда CLI | Сервер, exec или другой режим |
| Права токена | Система, выпустившая токен | Области доступа и срок действия |
Типичные ошибки
Большинство проблем с этим флагом связано не со сложностью синтаксиса, а с неверным представлением о том, что именно он делает. Пользователь видит слово token и вставляет секрет после флага, хотя CLI ожидает имя переменной.
Ошибка: после флага указан сам токен
Это самая распространённая ошибка. Аргументом должен быть идентификатор переменной, а не её содержимое.
# Неправильно codex app-server --remote-auth-token-env "длинный-секретный-токен" # Правильно export CODEX_REMOTE_TOKEN="длинный-секретный-токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Исправление простое: вынесите значение в окружение и передайте название переменной.
Ошибка: переменная названа иначе
В shell переменная может называться CODEX_REMOTE_TOKEN, а в команде случайно указано CODEX_REMOTE_AUTH_TOKEN. Для программы это два разных имени.
export CODEX_REMOTE_TOKEN="токен" # Ошибка: такого имени нет codex app-server --remote-auth-token-env CODEX_REMOTE_AUTH_TOKEN # Исправленный вариант codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Проверяйте имена посимвольно, включая подчёркивания, дефисы и регистр букв.
Ошибка: переменная есть в терминале, но отсутствует у службы
Переменная, заданная в интерактивном shell, не обязательно передаётся systemd, Docker daemon, Kubernetes или CI runner. Каждый процесс получает собственное окружение.
# В терминале это может работать export CODEX_REMOTE_TOKEN="токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN # Но служба может не увидеть переменную systemctl restart codex-remote
Нужно настроить переменную в том же механизме, который запускает Codex CLI, а затем перезапустить процесс.
Ошибка: секрет пустой
Переменная может существовать, но содержать пустую строку. С точки зрения приложения это почти то же самое, что отсутствие токена.
if [ -z "${CODEX_REMOTE_TOKEN:-}" ]; then
echo "Токен пустой или не задан"
exit 1
fi
codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Особенно часто это происходит в CI, когда секрет не передаётся в pull request из внешнего репозитория или недоступен ветке с ограниченными правами.
Ошибка: используется неподдерживаемая версия CLI
Если команда сообщает, что параметр неизвестен, возможно, установленная версия Codex CLI не поддерживает этот флаг или он доступен у другой подкоманды.
codex --version codex --help codex app-server --help
Не стоит исправлять проблему случайным удалением флага. Сначала определите, в какой команде и в какой версии он доступен.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Unknown option | Старая версия или неверная подкоманда | --help и версию CLI |
| Переменная не найдена | Опечатка в имени | Совпадение имени в окружении и команде |
| Ошибка авторизации | Неверный или истёкший токен | Срок действия и права токена |
| Локально работает, в CI нет | Секрет не передан job | Настройки secret variables |
| В контейнере не работает | Переменная не проброшена | docker run --env или манифест |
| Сервис использует старый токен | Процесс не перезапущен | Перезапуск службы или pod |
Безопасность и управление токенами
Переменная окружения снижает риск случайной публикации секрета, но не делает его невидимым для всех. Пользователь с достаточными правами на хосте, отладчик процесса или система сбора окружения потенциально могут получить доступ к переменным.
Секрет должен быть доступен только тому процессу, которому он нужен, и только на то время, пока он действительно нужен.
Поэтому желательно соблюдать несколько правил:
- не записывать токен в Git, Dockerfile и открытые конфигурационные файлы;
- не выводить переменную в лог;
- ограничивать права токена минимально необходимым набором;
- задавать срок действия и регулярно выполнять ротацию;
- удалять старые токены после перевыпуска;
- ограничивать доступ к серверу, CI-проекту, Kubernetes Secret и журналам;
- проверять, не попадает ли окружение процесса в диагностические отчёты.
| Угроза | Как возникает | Мера защиты |
|—|—|—|
| Секрет в Git | Токен записали в скрипт или YAML | Secret variables и проверка коммитов |
| Утечка через логи | Переменную напечатали для диагностики | Проверять только наличие |
| Доступ другого пользователя | Общий сервер без изоляции | Разделение пользователей и прав |
| Старый токен | Секрет не отозван после замены | Регулярная ротация |
| Утечка из образа | Токен попал в Dockerfile или слой | Передавать при запуске |
| Слишком широкие права | Токен выдан «на всё» | Принцип минимальных привилегий |
Как безопасно диагностировать проблему
Диагностика должна подтверждать наличие переменной, но не раскрывать её содержимое. Для этого можно вывести длину значения или статус проверки.
if [ -n "${CODEX_REMOTE_TOKEN:-}" ]; then
echo "CODEX_REMOTE_TOKEN задан"
echo "Длина значения: ${#CODEX_REMOTE_TOKEN}"
else
echo "CODEX_REMOTE_TOKEN отсутствует"
fi
Даже длина иногда может быть чувствительной информацией, поэтому в строгих окружениях лучше выводить только сообщение «задано/не задано».
Ротация токена
При ротации сначала создают новый токен, затем обновляют секрет в окружении и перезапускают процесс. Старый токен отзывают после проверки новой конфигурации.
# Проверка, что новое значение передано процессу
test -n "${CODEX_REMOTE_TOKEN:-}" || exit 1
# Запуск с текущим секретом
codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
# После проверки — отзыв старого токена
# выполняется в системе управления токенами
Порядок действий может быть другим, если система не позволяет одновременно держать два действительных токена. В production лучше заранее продумать короткое окно переключения.
Краткая памятка
Флаг --remote-auth-token-env нужен для того, чтобы Codex CLI получил удалённый токен из переменной окружения. Он не принимает секрет напрямую и не заменяет настройку адреса сервиса, выбор режима запуска или интерактивную авторизацию.
Запомнить можно одной фразой: после
--remote-auth-token-envпишут имя переменной, а не токен.
| Вопрос | Короткий ответ |
|—|—|
| Что делает флаг? | Указывает переменную окружения с удалённым токеном |
| Что передавать после флага? | Имя переменной, например CODEX_REMOTE_TOKEN |
| Где хранить значение? | В secret manager, CI secret, Docker Secret или защищённом окружении |
| Нужно ли печатать токен для проверки? | Нет |
| Работает ли переменная из терминала для systemd? | Обычно нет, её нужно настроить отдельно |
| Что делать при ошибке неизвестного флага? | Проверить версию и справку конкретной подкоманды |
| Можно ли использовать другое имя переменной? | Да, если оно корректно задано и указано в команде |
| Заменяет ли флаг обычный login? | Нет, это другой способ передачи удалённых учетных данных |
| Нужно ли перезапускать службу после смены токена? | Да, уже запущенный процесс обычно не получит новое окружение |
| Можно ли коммитить токен в репозиторий? | Нет, никогда |
Минимальный шаблон выглядит так:
export CODEX_REMOTE_TOKEN="ваш-токен" codex app-server --remote-auth-token-env CODEX_REMOTE_TOKEN
Перед использованием в конкретном окружении проверьте справку установленной версии Codex CLI:
codex --version codex app-server --help
Если команда запускается в CI, контейнере или системной службе, убедитесь не только в правильности синтаксиса, но и в том, что переменная действительно передаётся нужному процессу. Именно на этом этапе чаще всего скрывается причина ошибки: CLI запущен правильно, но секрет до него просто не добрался.
