Справочник по CLI Codex Security
Аргументы, форматы вывода, артефакты сканирования, провайдеры и коды завершения CLI Codex Security.
Используйте этот справочник, чтобы ознакомиться с поддерживаемыми командами codex-security, флагами,
форматами вывода и поведением при завершении. Пошаговое выполнение первого сканирования описано в
кратком руководстве по CLI.
Запустите CLI с помощью npx @openai/codex-security.
Обзор команд
usage: codex-security [--version] <command> [options]CLI предоставляет следующие команды:
| Команда | Назначение |
|---|---|
codex-security scan |
Запустить сканирование Codex Security. |
codex-security install-hook |
Установить проверку безопасности Git перед коммитом. |
codex-security bulk-scan |
Найти репозитории и запустить возобновляемое массовое сканирование. |
codex-security scans |
Вывести список сохранённых журналов сканирования, просмотреть, сравнить и получить их. |
codex-security findings |
Просмотреть и обновить сохранённые уязвимости. |
codex-security export |
Экспортировать завершённые находки в CSV, JSON или SARIF. |
codex-security publish |
Опубликовать находки завершённого сканирования в Linear. |
codex-security validate |
Проверить одну или несколько предполагаемых уязвимостей. |
codex-security patch |
Исправить одну или несколько проблем безопасности. |
codex-security login |
Выполнить вход, сохранить учётные данные или проверить состояние входа. |
codex-security logout |
Удалить сохранённые данные входа. |
codex-security info |
Показать доступные только для чтения метаданные SDK и встроенного плагина. |
CLI также предоставляет следующие команды интеграции:
| Команда | Назначение |
|---|---|
codex-security completions |
Создать сценарии автодополнения для оболочки. |
codex-security mcp |
Зарегистрировать CLI как MCP server. |
codex-security skills |
Синхронизировать навыки Codex Security с агентами. |
Вывести все доступные команды:
npx @openai/codex-security --helpДобавьте --help к команде, чтобы просмотреть её аргументы и параметры:
npx @openai/codex-security scan --helpcodex-security --version выводит установленную версию и завершает работу.
codex-security info --json сообщает версии SDK и встроенного плагина.
Ни одна из этих команд не требует Python.
Поиск команд и подключение агентов
Вывести доступный агентам манифест команд:
npx @openai/codex-security --llmsПросмотреть схему аргументов сканирования в формате JSON:
npx @openai/codex-security scan --schema --format jsonСоздать автодополнения для Bash:
npx @openai/codex-security completions bashДля соответствующих оболочек замените bash на zsh или fish.
Для результатов сканирования поддерживаются --format toon|json|yaml|jsonl и --full-output. Этот
параметр уровня фреймворка --format отличается от --export-format, который выбирает
формат артефакта, экспортируемого из завершённого сканирования. В общей справке по командам
также указан md, но результаты сканирования не поддерживают вывод в Markdown.
Зарегистрировать CLI как MCP server:
npx @openai/codex-security mcp addСинхронизировать навыки Codex Security с вашими агентами:
npx @openai/codex-security skills addMCP предоставляет только доступную для чтения команду метаданных info. Сканирование, экспорт,
аутентификация, проверка и исправление доступны только в CLI.
codex-security scan
Запустите сканирование репозитория, выбранных путей, зафиксированных изменений или рабочего дерева.
usage: codex-security scan [-h] [--auth {auto,chatgpt,api-key}]
[--provider {openai,openrouter,fireworks,amazon-bedrock}]
[--path PATH | --diff BASE | --working-tree]
[--head HEAD] [--base BASE]
[--knowledge-base PATH] [--scan-prompt-file FILE]
[--post-scan-prompt-file FILE]
[--mode {standard,deep}] [--workers N]
[--subagents N] [--stop-after-no-new N]
[--max-discovery-runs N] [--max-time-hours HOURS]
[--model MODEL]
[--effort {minimal,low,medium,high,xhigh,max}]
[--output-dir DIR]
[--archive-existing]
[--plugin-path PATH] [--python PATH]
[--codex KEY=VALUE] [--fail-on-severity LEVEL]
[--patch] [--patch-severity {critical,high,medium,low}]
[--create-pr]
[--max-cost USD] [--dry-run] [--headless] [--verbose]
[--json] [--format {toon,json,yaml,jsonl}]
[--full-output] [repository]По умолчанию repository указывает на текущий каталог.
Выбор аутентификации для сканирования
Используйте --auth auto, заданный по умолчанию, для автоматического выбора учётных данных. Если доступны и
вход через ChatGPT, и OPENAI_API_KEY или CODEX_API_KEY,
при интерактивном сканировании с текстовым выводом появится запрос на выбор учётных данных. При сканировании в CI, с выводом JSON и
JSONL, а также при других сканированиях без интерактивного терминала используется
API key из окружения. Пробные запуски не выводят запрос и не загружают учётные данные.
Чтобы использовать сохранённые учётные данные, передайте --auth chatgpt:
npx @openai/codex-security scan . --auth chatgptЧтобы использовать API key из окружения, передайте --auth api-key:
npx @openai/codex-security scan . --auth api-keyЧтобы сохранённые учётные данные автоматически использовались по умолчанию, выполните
unset OPENAI_API_KEY CODEX_API_KEY.
Использование OpenRouter или Fireworks
Выберите OpenRouter с его API key и явно указанной моделью:
export OPENROUTER_API_KEY="your-openrouter-api-key"
npx @openai/codex-security scan . \
--provider openrouter \
--model anthropic/claude-sonnet-4.5Выберите Fireworks с его API key и явно указанной моделью:
export FIREWORKS_API_KEY="your-fireworks-api-key"
npx @openai/codex-security scan . \
--provider fireworks \
--model accounts/fireworks/models/qwen3-235b-a22bОба провайдера также поддерживают bulk-scan.
Использование Amazon Bedrock
Используйте --provider amazon-bedrock и идентификатор модели Bedrock с scan или
bulk-scan. После предоставления доступа к модели со стороны AWS сканирование использует учётные данные AWS
без --auth, входа в OpenAI или API key OpenAI.
Daybreak Blue и Daybreak Red
Для Daybreak Blue и Daybreak Red требуется одобрение в рамках Trusted Access for Cyber. Чтобы запросить доступ, отправьте заявку на корпоративный доступ или свяжитесь с командой OpenAI, обслуживающей вашу организацию. После одобрения обратитесь к команде AWS, обслуживающей вашу организацию, чтобы настроить доступ к моделям в Amazon Bedrock.
Одобрение доступа к Daybreak Red не включает доступ к GPT-5.6-Cyber. Для GPT-5.6-Cyber требуется отдельное одобрение правительства США (USG). Попросите команду OpenAI, обслуживающую вашу организацию, запросить это дополнительное одобрение перед настройкой доступа к GPT-5.6-Cyber в Amazon Bedrock. См. требования для доступа к Daybreak.
| Доступ | Идентификатор модели Bedrock | Регион AWS |
|---|---|---|
| Daybreak Blue | openai.gpt-daybreak-blue-5.6-sol |
us-east-2 |
| Daybreak Red | openai.gpt-5.6-cyber |
us-east-2 |
Сведения о доступности см. в карточках моделей Daybreak Blue и Daybreak Red в AWS.
Для сканирования с Daybreak Blue замените <aws-profile-name> на профиль AWS,
у которого есть доступ к модели Daybreak Blue:
export AWS_PROFILE="<aws-profile-name>"
export AWS_REGION="us-east-2"
npx @openai/codex-security scan . \
--provider amazon-bedrock \
--model openai.gpt-daybreak-blue-5.6-sol --effort highДля сканирования с Daybreak Red выберите профиль AWS с доступом к GPT-5.6-Cyber. Он может отличаться от профиля, который вы используете для Daybreak Blue:
export AWS_PROFILE="<aws-profile-name>"
export AWS_REGION="us-east-2"
npx @openai/codex-security scan . \
--provider amazon-bedrock \
--model openai.gpt-5.6-cyber --effort highВы также можете пройти аутентификацию с помощью AWS_BEARER_TOKEN_BEDROCK или стандартной
цепочки учётных данных AWS. Для временных ключей доступа требуется AWS_SESSION_TOKEN.
Задайте учётные данные и AWS_REGION в той же оболочке или задании CI, где выполняется сканирование.
Локальные результаты и проверка доступа
Сохранённые локальные отчёты, scans show и export доступны без облачных учётных данных.
Для загрузки обнаруженных проблем в Codex Security Cloud требуется отдельный вход в ChatGPT
и доступ к месту назначения.
info и scan --dry-run не проверяют учётные данные AWS или доступ к модели. Запустите
сканирование для проверки доступа. При ошибках аутентификации AWS или отказе в доступе проверьте
учётные данные, регион и разрешения на использование модели.
Статус поддержки Bedrock в выпусках
@openai/codex-security@0.1.31 поддерживает сканирование через Amazon Bedrock. Эта версия
не предоставляет оценку стоимости и не поддерживает --max-cost для указанных выше идентификаторов моделей Daybreak Blue
и Daybreak Red.
Проверьте версии установленного пакета и входящего в его состав Codex:
npx @openai/codex-security --version
npx @openai/codex-security info --jsonИспользуйте npx @openai/codex-security scan --help, чтобы проверить параметры, доступные
в установленной у вас версии.
Выбор цели сканирования
Для каждого сканирования выберите один тип цели.
| Аргумент | Описание |
|---|---|
--path PATH |
Сканировать путь относительно репозитория. Повторите флаг, чтобы указать дополнительные пути. |
--diff BASE |
Сканировать зафиксированные изменения от BASE до --head. По умолчанию конечная ревизия — HEAD. |
--head HEAD |
Задать конечную ревизию для --diff. |
--working-tree |
Сканировать индексированные и неиндексированные изменения относительно --base. По умолчанию базовая ревизия — HEAD. |
--base BASE |
Задать базовую ревизию для --working-tree. |
--mode {standard,deep} |
Выбрать режим сканирования. По умолчанию используется standard. |
--path, --diff и --working-tree взаимно исключают друг друга. Для --head
требуется --diff, а для --base — --working-tree. Глубокий режим поддерживает
цели в виде репозитория и пути.
При сканировании различий и рабочего дерева аргумент репозитория должен указывать на корень рабочего дерева Git. Выбранные ссылки должны существовать в этой рабочей копии.
Сканировать весь репозиторий:
npx @openai/codex-security scan .Сканировать выбранные пути:
npx @openai/codex-security scan . --path src --path testsСканировать зафиксированные изменения:
npx @openai/codex-security scan . --diff origin/main --head HEADСканировать индексированные и неиндексированные изменения:
npx @openai/codex-security scan . --working-tree --base HEADВыполнить более глубокую проверку репозитория:
npx @openai/codex-security scan . --mode deepНастройка глубокого сканирования
Используйте эти параметры с --mode deep для управления параллелизмом обработчиков и временем выполнения:
| Аргумент | Описание |
|---|---|
--workers N |
Ограничение числа параллельно работающих независимых обработчиков стандартного сканирования. По умолчанию — 4. |
--subagents N |
Число субагентов, доступных каждому обработчику. По умолчанию — 3. |
--stop-after-no-new N |
Остановиться, если N последовательных завершённых сканирований обработчиков не обнаружат новых проблем. По умолчанию — 4. |
--max-discovery-runs N |
Ограничение общего числа независимых запусков стандартного сканирования. По умолчанию — 40. |
--max-time-hours HOURS |
Ограничение времени работы обработчика в часах. По умолчанию — 96; допускаются дробные значения. |
--subagents принимает ноль или положительное целое число. --max-time-hours принимает
положительное число не больше 96. Остальным параметрам требуется положительное
целое число. Эти параметры недоступны для стандартного сканирования.
Например, чтобы использовать два обработчика, разрешить до десяти запусков и остановить их работу через 1,5 часа:
npx @openai/codex-security scan . \
--mode deep \
--workers 2 \
--subagents 0 \
--stop-after-no-new 3 \
--max-discovery-runs 10 \
--max-time-hours 1.5По истечении лимита времени сканирование останавливает незавершённые рабочие процессы, сохраняет готовые результаты сканирования и объединяет их в итоговый отчёт. Проверьте в отчёте проверенные области и отложенные задачи. Само по себе истечение срока не определяет код выхода: он зависит от статуса выполнения и политики серьёзности.
Задайте постоянные значения по умолчанию в ~/.codex/codex-security/config.toml либо в
$CODEX_HOME/codex-security/config.toml, если задан CODEX_HOME:
[deep_scan]
workers = 2
subagents = 0
stop_after_no_new = 3
max_discovery_runs = 10
max_time_hours = 1.5Параметры командной строки переопределяют эти значения. scan --workers управляет
независимыми обработчиками стандартного сканирования внутри одного глубокого сканирования; bulk-scan --workers
управляет параллельным сканированием репозиториев. Задавайте stop_after_consecutive_errors только
в файле TOML; значение по умолчанию — 3.
Добавление контекста безопасности
Используйте --knowledge-base PATH, чтобы предоставить документы по архитектуре, модели угроз
или политики безопасности. Повторите параметр, чтобы указать дополнительные файлы или каталоги:
npx @openai/codex-security scan . \
--knowledge-base /path/to/architecture.md \
--knowledge-base /path/to/security-policiesПоддерживаются документы в файлах .md, .markdown, .txt, .pdf и .docx.
CLI рекурсивно обходит каталоги, отклоняет входные пути, представляющие собой ссылки,
пропускает элементы каталогов, представляющие собой ссылки, и хранит извлечённое содержимое документов
за пределами сохранённых результатов сканирования.
Добавление инструкций для сканирования
Чтобы добавить инструкции сканирования, укажите текстовый файл или файл Markdown с помощью
--scan-prompt-file. Используйте --post-scan-prompt-file для выполнения последующих
инструкций в том же аутентифицированном сеансе после успешных сканирований и
ошибок сканирования:
npx @openai/codex-security scan . \
--scan-prompt-file security-focus.md \
--post-scan-prompt-file follow-up.mdНапример, с помощью запроса сканирования можно сосредоточить проверку на границах авторизации, а в
дополнительной инструкции запросить создание нового файла post-scan-summary.md в каталоге сканирования.
Если дополнительная инструкция завершится ошибкой, CLI выведет предупреждение и сохранит завершённое сканирование.
Дополнительная инструкция не выполняется после отмены или достижения сканированием ограничения
стоимости.
Настройка параметров вывода и политик
Используйте эти параметры, чтобы сохранять артефакты и предыдущие результаты или создать машиночитаемый результат.
| Аргумент | Описание |
|---|---|
--output-dir DIR |
Записать артефакты сканирования в закрытый каталог за пределами охватывающего рабочего дерева Git. По умолчанию используется постоянное состояние Codex Security. |
--archive-existing |
Переместить существующие результаты в DIR.previous-<timestamp>-<id> и начать с пустого каталога вывода. Требуется --output-dir. |
--fail-on-severity LEVEL |
Вернуть код 1, если завершённое сканирование обнаружит находку с уровнем не ниже critical, high, medium или low. |
--patch |
Исправить и проверить выбранные находки после полного сканирования. |
--patch-severity LEVEL |
Исправить находки с уровнем не ниже critical, high, medium или low. По умолчанию — low. |
--create-pr |
Зафиксировать проверенные файлы исправлений и открыть запрос на включение изменений в GitHub. Требуется --patch. |
--max-cost USD |
Остановить сканирование, когда оценочная стоимость использования модели превысит указанную сумму в USD. |
--dry-run |
Проверить репозиторий, цель, базу знаний, каталог вывода и конфигурацию Codex, не запуская сканирование. |
--headless |
Показывать ход выполнения обычным текстом вместо интерактивной панели сканирования. |
--verbose |
Выводить в stderr диагностические сведения с удалёнными конфиденциальными данными о жизненном цикле, аутентификации, ходе выполнения и стоимости. |
--json |
Вывести манифест, находки, покрытие, пути и метаданные шагов в одном документе JSON. |
--format FORMAT |
Вывести полный результат сканирования как toon, json, yaml или jsonl. |
--full-output |
Вывести полный результат в стандартном формате структурированного вывода. |
Лимит стоимости является оценочным, а не жёстким ограничением расходов. Уже выполняющиеся
запросы могут завершиться с небольшим превышением лимита. Если глубокое сканирование достигает лимита
после того, как Codex Security объединит результаты завершённых рабочих процессов, CLI может зафиксировать
завершённый результат и вывести предупреждение о бюджете. Он возвращает 0 или 1, если
обнаруженные проблемы достигают заданного порога серьёзности. Если сформировать корректный
завершённый результат невозможно, он возвращает 2 и оставляет все доступные выходные данные на диске.
Если --output-dir не указан, результаты сохраняются в
$CODEX_HOME/state/plugins/codex-security/scans/<repository>. Значение CODEX_HOME
по умолчанию — ~/.codex. Задайте CODEX_SECURITY_STATE_DIR, чтобы вместо этого хранить результаты в
$CODEX_SECURITY_STATE_DIR/scans/<repository>. Эти каталоги могут
содержать фрагменты исходного кода и сведения об уязвимостях, поэтому соответствующим образом управляйте разрешениями
и сроком хранения.
Рабочая среда хранит историю сканирования в
$CODEX_HOME/state/plugins/codex-security/workbench.sqlite3. При задании
CODEX_SECURITY_STATE_DIR база данных рабочей среды также перемещается.
Каталог вывода должен находиться за пределами сканируемого каталога и любого охватывающего его
рабочего дерева Git. Сканирование может заменить существующий каталог результатов с помощью
--archive-existing.
Чтобы сохранить предыдущие результаты перед повторным использованием каталога вывода:
npx @openai/codex-security scan . \
--output-dir /path/outside/repository/results \
--archive-existingПо умолчанию сканирование только формирует отчёт. Добавьте --fail-on-severity для оценки
политики уровней серьёзности в CI:
npx @openai/codex-security scan . \
--diff origin/main \
--output-dir /path/outside/repository/results \
--json \
--fail-on-severity high \
> /path/outside/repository/codex-security.jsonПробный запуск проверяет локальные входные данные, включая документы базы знаний, без загрузки учётных данных, запуска Codex или проверки интерпретатора Python плагина:
npx @openai/codex-security scan . \
--output-dir /path/outside/repository/results \
--dry-runНастройка среды выполнения
Используйте параметры среды выполнения, если необходимо явно указать модель, интерпретатор, плагин или значение конфигурации Codex.
| Аргумент | Описание |
|---|---|
--auth {auto,chatgpt,api-key} |
Выбрать учётные данные для сканирования. По умолчанию — auto. |
--provider {openai,openrouter,fireworks,amazon-bedrock} |
Выбрать провайдера логического вывода. По умолчанию — openai. |
--model MODEL |
Выбрать модель. По умолчанию — gpt-5.6-sol. Обязательно для OpenRouter, Fireworks и Amazon Bedrock. |
--effort {minimal,low,medium,high,xhigh,max} |
Выбрать интенсивность рассуждений модели. По умолчанию — xhigh. |
--plugin-path PATH |
Использовать каталог или ZIP-архив плагина Codex Security вместо встроенного плагина. |
--python PATH |
Выбрать интерпретатор Python для среды выполнения плагина. |
--codex KEY=VALUE |
Переопределить изолированное значение конфигурации Codex. Значения записываются в синтаксисе TOML. Повторите флаг для дополнительных значений. |
Чтобы выбрать другую модель и уровень рассуждений без написания TOML, используйте модель, доступную с вашими учётными данными. Если вы входите через ChatGPT, проверьте доступность GPT-6.1 Sol, прежде чем использовать эти примеры:
npx @openai/codex-security scan . --model gpt-6.1-sol --effort mediumЗаключайте строковые значения, передаваемые через --codex, в кавычки, чтобы синтаксический анализатор TOML получил
строку:
npx @openai/codex-security scan . --codex 'model="gpt-6.1-sol"'codex-security install-hook
Установить проверку безопасности Git перед коммитом для текущего репозитория:
npx @openai/codex-security install-hookПроверка сканирует индексированные и неиндексированные изменения перед каждым коммитом и блокирует
находки высокой серьёзности или ошибки сканирования. Она учитывает core.hooksPath и не
заменяет существующий сценарий перед коммитом. При необходимости задайте другой порог серьёзности:
npx @openai/codex-security install-hook . --fail-on-severity mediumcodex-security bulk-scan
Находите и сканируйте репозитории GitHub или запускайте возобновляемое сканирование на основе CSV со списком репозиториев.
Полное руководство по поиску в GitHub, перечням CSV, результатам кампаний и сканированию в контейнерах см. в разделе Массовое сканирование безопасности.
usage: codex-security bulk-scan [input] [--output-dir DIR]
[--workers N] [--mode {standard,deep}]
[--provider {openai,openrouter,fireworks,amazon-bedrock}]
[--model MODEL]
[--effort {minimal,low,medium,high,xhigh,max}]
[--knowledge-base PATH]
[--scan-prompt-file FILE]
[--post-scan-prompt-file FILE]
[--max-attempts N] [--plugin-path PATH]
[--python PATH] [--codex KEY=VALUE]Запустите npx @openai/codex-security bulk-scan без аргументов, чтобы выбрать
репозитории в интерактивном режиме. Для этого требуется вход через GitHub CLI.
Чтобы выбрать модель и уровень рассуждений при интерактивном поиске репозиториев, используйте модель, доступную с вашими учётными данными. См. доступность GPT-6.1 Sol при входе через ChatGPT и связанные ограничения:
npx @openai/codex-security bulk-scan --model gpt-6.1-sol --effort mediumДля подготовленного списка репозиториев укажите CSV и --output-dir:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4В CSV обязательны столбцы id, repository и revision. Ревизии должны быть
полными хешами коммитов. Необязательные столбцы scope, mode и prompt настраивают
отдельные репозитории:
id,repository,revision,scope,mode,prompt
service,https://github.com/example/service.git,0123456789abcdef0123456789abcdef01234567,src,standard,Review authorization boundaries.Используйте --knowledge-base PATH, чтобы предоставить документы по безопасности всем
репозиториям. Используйте --scan-prompt-file FILE для добавления общих инструкций сканирования;
столбец prompt в CSV добавляет инструкции для конкретного репозитория после общих
инструкций. --post-scan-prompt-file FILE выполняет последующие инструкции после каждого
сканирования, в том числе при ошибках сканирования. Они не выполняются после
отмены или достижения лимита стоимости сканирования.
--workers ограничивает число одновременных сканирований репозиториев и по умолчанию равен 4. --mode
по умолчанию имеет значение standard, а --max-attempts — 1. Задайте
--max-attempts для повторных попыток при ошибках репозитория или сканирования. Завершённые сканирования не
повторяются из-за пробелов в охвате или нарушений политики серьёзности. Их результаты
остаются доступными.
Запустите ту же команду ещё раз, чтобы возобновить работу из существующего выходного каталога. CLI пропускает завершённые сканирования, в том числе с пробелами в охвате.
Инструкции для кампаний в контейнерах см. в разделе Массовое сканирование в Docker.
codex-security scans
Поиск сохранённых сканирований
Вывести сохранённые сканирования для текущего каталога:
npx @openai/codex-security scansВывести сканирования для другого репозитория:
npx @openai/codex-security scans list /path/to/repositoryНайти сканирования, сохранённые в указанном каталоге вывода:
npx @openai/codex-security scans list --scan-root /path/outside/repository/resultsПросмотр или повтор сканирования
Показать результаты и конфигурацию сохранённого сканирования:
npx @openai/codex-security scans show SCAN_IDДобавьте --show-linked-findings, чтобы включить ссылки на находки из предыдущих сканирований.
Повторно просканировать текущую рабочую копию с исходной конфигурацией:
npx @openai/codex-security scans rerun SCAN_IDДля повторного запуска требуется версия плагина, записанная исходным сканированием. Если установленная версия отличается, команда останавливается, не запуская сканирование с другим плагином.
Просмотр сохранённых журналов сканирования
Прочитайте все сохранённые события сеанса сканирования и его обработчиков. Конфиденциальные данные в этих журналах не скрываются и могут содержать исходный код или учётные данные, поэтому проверяйте их перед предоставлением другим лицам:
npx @openai/codex-security scans logs SCAN_IDДобавьте --json для структурированного вывода.
Сопоставление и сравнение находок
Сравните два сканирования, чтобы найти новые, сохраняющиеся, повторно открытые, не обнаруженные, устранённые и неизвестные проблемы:
npx @openai/codex-security scans compare PREVIOUS_SCAN_ID CURRENT_SCAN_IDПри сравнении автоматически сопоставляются находки с одной первопричиной
и повторно используются сохранённые сопоставления. Чтобы явно сохранить сопоставления, используйте scans match:
npx @openai/codex-security scans match PREVIOUS_SCAN_ID CURRENT_SCAN_IDПроблема считается неизвестной, если её путь исключён или сопоставление неоднозначно. Если
более позднее сканирование не находит её в проверенном коде, она считается не обнаруженной.
Устранённой считается только проблема, явно закрытая как уже исправленная. Добавьте --force
к match, если нужно заново вычислить существующее сопоставление.
Чтобы сопоставить все завершённые сканирования текущего репозитория, включая сканирования из других рабочих копий:
npx @openai/codex-security scans match --allРезультаты могут различаться даже при повторном запуске с той же конфигурацией. Сопоставление и
сравнение отслеживают изменения; они не делают результаты детерминированными и не доказывают, что
уязвимость больше не существует. Используйте validate, чтобы повторно проверить критически важную для безопасности
находку в текущем коде.
codex-security findings
Вывести открытые находки из сканирований текущего репозитория:
npx @openai/codex-security findings listПередайте путь репозитория, чтобы проверить другую рабочую копию:
npx @openai/codex-security findings list /path/to/repositoryДобавьте --json для структурированного вывода. Список включает находки, обнаруженные при
последнем сканировании, и более ранние находки, не подтверждённые при этом сканировании.
Ранее обнаруженные проблемы остаются открытыми, пока не будут устранены или отклонены. Их отсутствие в последнем сканировании не доказывает, что они исправлены.
Чтобы отметить проверенную находку как ложноположительную:
usage: codex-security findings false-positive OCCURRENCE_ID
--reason REASONПросмотрите сохранённое сканирование, чтобы определить экземпляр находки:
npx @openai/codex-security scans show SCAN_IDЗапишите конкретное объяснение ложноположительного результата:
npx @openai/codex-security findings false-positive FINDING_OCCURRENCE_ID \
--reason "The framework escapes this input before it reaches the query"Причина не может быть пустой. Codex Security сохраняет решение для репозитория и предоставляет его последующим сканированиям в качестве контекста. Каждое сканирование независимо перепроверяет текущий исходный код, средства контроля и достижимость. Предыдущее решение не отключает правило, путь или класс уязвимостей.
codex-security export
Экспортируйте CSV, JSON или SARIF из завершённого и зафиксированного сканирования. Перед записью экспорт проверяет артефакты сканирования и не затрагивает среду выполнения Codex и учётные данные.
usage: codex-security export [--export-format {csv,json,sarif}]
[--output FILE|-] [--source-root PATH]
[--python PATH] scan_dirscan_dir — каталог завершённого сканирования.
| Аргумент | Описание |
|---|---|
--export-format {csv,json,sarif} |
Выбрать формат экспорта. По умолчанию — sarif. |
--output FILE|- |
Записать выбранный формат в файл или stdout. По умолчанию записывается файл в текущем каталоге. |
--source-root PATH |
Добавить в SARIF отпечатки строк исходного кода, используя рабочую копию репозитория. |
--python PATH |
Выбрать интерпретатор Python для встроенного экспортёра. |
--source-root работает только с --export-format sarif. JSON сохраняет
зафиксированный документ с находками. CSV содержит переносимые столбцы находок и не
включает локальное состояние сортировки рабочей среды.
Без --output CLI записывает SARIF в results.sarif, JSON в
findings.json, а CSV в findings.csv в текущем рабочем каталоге.
Экспортированные данные могут содержать фрагменты исходного кода и сведения об уязвимостях. Запускайте команду
за пределами репозитория или передайте --output с закрытым путём за пределами
сканируемой рабочей копии.
Записать SARIF в файл:
npx @openai/codex-security export /path/to/scan \
--export-format sarif \
--source-root /path/to/repository \
--output /path/outside/repository/exports/results.sarifЗаписать SARIF в stdout:
npx @openai/codex-security export /path/to/scan \
--export-format sarif \
--source-root . \
--output -Экспортировать находки как JSON:
npx @openai/codex-security export /path/to/scan \
--export-format json \
--output /path/outside/repository/exports/findings.jsonЭкспортировать находки как CSV:
npx @openai/codex-security export /path/to/scan \
--export-format csv \
--output /path/outside/repository/exports/findings.csvcodex-security publish scan
Опубликовать все находки из завершённого сканирования в Linear:
usage: codex-security publish scan [SCAN_DIR] --to linear
[--linear-team TEAM_ID]
[--project PROJECT_ID]
[--linear-api-key KEY]
[--linear-assignee EMAIL_OR_USER_ID]
[--dry-run] [--json]SCAN_DIR должен содержать завершённое и зафиксированное сканирование. Не указывайте его в интерактивном
терминале, чтобы выбрать завершённое сканирование из локальной истории. Для создания задач
также требуется, чтобы сканирование и его находки присутствовали в локальной истории. Пробный
запуск проверяет зафиксированные артефакты без проверки их сохранения.
| Аргумент | Описание |
|---|---|
--to linear |
Опубликовать в Linear. Этот аргумент обязателен. |
--linear-team TEAM_ID |
Выбрать команду Linear. Если параметр не указан, используется CODEX_SECURITY_LINEAR_TEAM; требуется одно из этих значений. |
--project PROJECT_ID |
Выбрать проект Linear. Если параметр не указан, используется CODEX_SECURITY_LINEAR_PROJECT. Если не задано ни одно значение, задачи создаются непосредственно в команде. |
--linear-api-key KEY |
Использовать персональный API key Linear для прямой публикации. Если параметр не указан, используется CODEX_SECURITY_LINEAR_API_KEY. |
--linear-assignee EMAIL_OR_USER_ID |
Назначить созданные задачи по адресу электронной почты или идентификатору пользователя Linear. Требуется --linear-api-key или CODEX_SECURITY_LINEAR_API_KEY. Если параметр не указан, задачи остаются без исполнителя. |
--dry-run |
Подготовить данные задач без запуска Codex, обращения к Linear, создания задач или записи состояния публикации. |
--json |
Записать структурированные результаты публикации в stdout. Ход выполнения по-прежнему выводится в stderr. |
При каждом непробном запуске предпринимается попытка создать новую задачу для каждой находки.
Повторная публикация того же сканирования не сопоставляет, не обновляет и не использует повторно существующие задачи.
Если некоторые находки опубликовать не удалось, команда сохраняет успешно созданные задачи и
возвращает код завершения 2.
При использовании --json перед повторной попыткой проверьте результаты created и failed,
чтобы избежать дубликатов.
Предварительно просмотреть данные задач перед публикацией:
npx @openai/codex-security publish scan /path/to/completed-scan \
--to linear \
--linear-team TEAM_ID \
--dry-run \
--jsonПубликация через подключённое приложение Linear
Если API key Linear отсутствует, команда запускает Codex с вашей существующей конфигурацией и подключённым приложением Linear. Перед публикацией войдите в систему и подключите Linear к своей учётной записи Codex:
npx @openai/codex-security login
npx @openai/codex-security publish scan /path/to/completed-scan \
--to linear \
--linear-team TEAM_ID \
--project PROJECT_IDПубликация с API key Linear
Если указан --linear-api-key или CODEX_SECURITY_LINEAR_API_KEY, публикация выполняется
непосредственно через API Linear без запуска Codex. При прямой публикации задачи
остаются без исполнителя, если вы его не выбрали:
export CODEX_SECURITY_LINEAR_API_KEY=YOUR_LINEAR_PERSONAL_API_KEY
npx @openai/codex-security publish scan /path/to/completed-scan \
--to linear \
--linear-team TEAM_ID \
--linear-assignee teammate@example.comЗначения командной строки переопределяют соответствующие переменные окружения. Для API
key предпочтительнее использовать CODEX_SECURITY_LINEAR_API_KEY, а не --linear-api-key, поскольку
аргументы командной строки могут отображаться в истории оболочки и списках процессов.
codex-security validate и codex-security patch
Проверить достоверность предполагаемой находки:
npx @openai/codex-security validate findings.json \
"Possible SQL injection in src/query.ts:42"Создать исправление с помощью встроенного навыка устранения проблем:
npx @openai/codex-security patch findings.json \
"Missing authorization check in src/routes.ts:18"Каждый позиционный аргумент принимает текстовое значение или путь к файлу. Эти входные данные относятся к
текущему каталогу. Используйте validate для повторной проверки находки после исправления или когда
последующее сканирование больше не обнаруживает её. Одно лишь сравнение сканирований не доказывает, что исправление
сработало.
Используйте --effort, чтобы выбрать интенсивность рассуждений для любой из команд:
npx @openai/codex-security validate "Possible SQL injection" --effort highИсправление находок после сканирования
Используйте scan --patch для исправления находок после полного сканирования. Для этого требуется
@openai/codex-security версии 0.1.15 или новее. Порог серьёзности по умолчанию —
low. Эта команда выбирает находки высокого и критического уровня:
npx @openai/codex-security scan . --patch --patch-severity high --jsonПроверенные и уже исправленные находки не запускают --fail-on-severity.
Исправление сохранённых находок
Передайте идентификатор находки или её экземпляра, чтобы исправить исходный репозиторий, либо выберите находки из сохранённого сканирования:
npx @openai/codex-security patch OCCURRENCE_ID
npx @openai/codex-security patch --scan SCAN_ID --severity high --json
npx @openai/codex-security patch --scan latest --severity medium--scan latest выбирает последнее завершённое сканирование текущего репозитория.
Команды для сохранённых находок поддерживают --json; текстовые значения и входные файлы — нет.
Добавьте --create-pr, чтобы зафиксировать только проверенные файлы исправлений и открыть запрос на включение изменений
с помощью GitHub CLI:
npx @openai/codex-security patch --scan SCAN_ID --severity high --create-prЕсли отправка изменений или создание запроса на их включение завершатся ошибкой, выполните выведенную команду patch --resume-pr BRANCH
из того же репозитория для повторной попытки.
Исправление задач Linear
Задайте CODEX_SECURITY_LINEAR_API_KEY или LINEAR_API_KEY для персонального API key
либо LINEAR_ACCESS_TOKEN для токена OAuth. Используйте переменную окружения вместо
--linear-api-key KEY, чтобы ключ не попал в историю оболочки.
Импортируйте задачу по идентификатору или URL. Повторите --linear-issue, чтобы выбрать несколько
задач:
npx @openai/codex-security patch --linear-issue SEC-123 --linear-issue SEC-124Используйте --linear-project, чтобы выбрать открытые задачи проекта. Добавьте --linear-filter,
чтобы сузить выборку:
npx @openai/codex-security patch --linear-project "Security backlog" \
--linear-filter '{"labels":{"name":{"eq":"security"}}}'CLI исключает завершённые и отменённые задачи, если фильтр не задаёт state.
Он не изменяет задачи Linear.
codex-security login, logout и info
Выполнить интерактивный вход:
npx @openai/codex-security loginИспользовать аутентификацию устройства на удалённом компьютере или компьютере без монитора:
npx @openai/codex-security login --device-authПроверить текущий вход:
npx @openai/codex-security login statusУдалить сохранённые данные входа:
npx @openai/codex-security logoutСохранить API key, передав его через stdin:
printenv OPENAI_API_KEY | npx @openai/codex-security login --with-api-keyСохранить корпоративный токен доступа:
printenv CODEX_ACCESS_TOKEN | npx @openai/codex-security login --with-access-tokenПросмотреть доступные только для чтения метаданные SDK и встроенного плагина:
npx @openai/codex-security info --jsonКогда CLI предоставляется как MCP server, info является единственной доступной командой.
Сканирование, экспорт, публикация, вход, проверка и исправление доступны только в CLI.
Чтение результатов сканирования
По умолчанию сканирование отправляет сведения о ходе выполнения, итоговые сводки и ошибки в stderr,
не записывая полный результат сканирования в stdout. Укажите --json,
--format или --full-output, чтобы отправить структурированные результаты сканирования в stdout.
В интерактивных терминалах отображается динамическая панель с текущей фазой сканирования,
проверенными файлами, активностью, использованием токенов и оценочной стоимостью. В CI и при перенаправленном
выводе ход выполнения отображается обычным текстом. Добавьте --headless, чтобы использовать обычный текст в
интерактивном терминале:
npx @openai/codex-security scan . --headlessНа панели также отображаются текущие сведения о сеансе. Конфиденциальные данные в них не скрываются и могут содержать исходный код или учётные данные. Проверяйте их перед предоставлением другим лицам.
Подробная диагностика
Добавьте --verbose, чтобы выводить в stderr диагностические сведения с удалёнными конфиденциальными данными о жизненном цикле, аутентификации, ходе выполнения и стоимости:
npx @openai/codex-security scan . --verboseЗадайте CODEX_SECURITY_LOG_LEVEL=debug, чтобы включить ту же диагностику без
флага. LOG_LEVEL=debug также включает диагностику, если
CODEX_SECURITY_LOG_LEVEL не задан.
Итоговая сводка
Завершённое сканирование выводит в stderr число открытых проблем репозитория, распределение по серьёзности, затраченное время, путь к отчёту и каталог результатов. Оно также указывает расход токенов и расчётную стоимость, если эти данные доступны. Например:
REPORT /path/to/scan/report.md
FINDINGS 4 (3 confirmed this scan; 1 previously found; 1 critical, 2 high, 1 informational)
ELAPSED 1s
TOKENS 1,250 input, 200 cached, 30 output
RESULTS /path/to/scanИнформационные находки учитываются в общем количестве сводки. Политики уровней серьёзности
оценивают только находки critical, high, medium и low из текущего
сканирования, а не более ранние находки, показанные в общем количестве для репозитория.
Вывод JSON
scan --json записывает в stdout один полный документ JSON. Его структура верхнего уровня
выглядит так:
manifest
repositoryFindings
findings
coverage
scanDir
threadId
reportPath
artifactsDir
sarifPath
cost
turn
id
status
durationMs
finalResponse
usageПри исправлении вывод JSON также содержит результаты исправления и созданный запрос на включение изменений, если он есть.
Сведения о ходе выполнения, сводки завершения, уведомления об архивировании и ошибки по-прежнему выводятся в stderr.
Завершённое сканирование выводит полный результат JSON даже тогда, когда политика серьёзности
приводит к коду выхода 1.
Артефакты сканирования
Завершённое сканирование сохраняет удобочитаемый отчёт вместе со структурированными артефактами. Зафиксированный манифест содержит хеши артефактов, чтобы впоследствии можно было проверить, что эти файлы не изменились:
<scan-directory>/
├── scan-manifest.json
├── findings.json
├── coverage.json
├── report.md
├── artifacts/
└── exports/
└── results.sarif # when producedСтруктурированные файлы предназначены для разных задач:
| Файл | Содержимое |
|---|---|
scan-manifest.json |
Идентификационные данные сканирования, статус, цель, область проверки, создатель и записи о зафиксированных артефактах. |
findings.json |
Идентификаторы находок, серьёзность, уверенность, классификация, расположение, доказательства, валидация, поток данных, достижимость и устранение. |
coverage.json |
Проверенные области, исключения, отложенная работа и открытые вопросы. |
report.md |
Отчёт о сканировании в удобном для чтения виде. |
artifacts/ |
Вспомогательные артефакты сканирования. |
exports/results.sarif |
SARIF, сформированный при сканировании, если он есть. |
Статус выполнения указан в scan.status в scan-manifest.json: completed,
failed, canceled или interrupted. Новые результаты не содержат
coverage.completeness. Изучите отложенные области проверки, явные исключения и
открытые вопросы в coverage.json, чтобы понять, что было проверено при сканировании.
Коды завершения и сигналы
CLI использует следующие коды завершения:
| Код выхода | Условие |
|---|---|
0 |
Сканирование или массовая кампания завершены с соблюдением политики серьёзности, публикация завершена без сбоев либо другая команда выполнена успешно. |
1 |
Завершённое сканирование или массовая кампания выявили находку с серьёзностью не ниже заданного уровня. |
2 |
Произошёл сбой ввода, выполнения, проверки целостности результатов, обязательного вывода или экспорта либо при публикации не удалось опубликовать одну или несколько находок. |
130 |
Ctrl-C прервало сканирование или публикацию. |
143 |
SIGTERM завершил сканирование или публикацию. |
Пробелы в покрытии не меняют код выхода завершённого сканирования и не отменяют его политику
серьёзности. Код выхода 0 не означает, что проверен каждый файл. Если вы запрашиваете
структурированный вывод, завершённые сканирования и
частично выполненные публикации всё равно записывают доступные результаты в stdout. CLI
выводит расположение частичных результатов после прерывания или ошибки
выполнения.
Разрешения для локального сканирования
Сканирования CLI и SDK выполняются с вашими локальными разрешениями операционной системы. Каждое сканирование
использует профиль файловой системы codex_security_scan и задаёт для approvalPolicy значение
"never". Этот профиль разрешает чтение локальной файловой системы и запись в
корни рабочих пространств и выбранный каталог состояния сканирования. При сканировании интерактивное
подтверждение не запрашивается.
Параметры, переданные через --codex CLI или codexOverrides SDK, включая
approval_policy, sandbox_mode и разрешения файловой системы, не могут заменить
или ограничить эти средства контроля сканирования. Ограничения хоста и сети продолжают действовать.
Процессы сканирования и workbench могут наследовать ваше окружение, включая не относящиеся к задаче токены API и облачные учётные данные. Удалите посторонние учётные данные перед запуском сканирования.
Аутентификация и предварительные требования
Задайте OPENAI_API_KEY или CODEX_API_KEY, выполните вход с помощью
npx @openai/codex-security login либо используйте существующие данные входа Codex,
хранящиеся в файле. Для OpenRouter или Fireworks задайте API key провайдера и выберите
модель. Для Amazon Bedrock вместо этого используйте API key Bedrock или стандартную
цепочку учётных данных AWS.
Сведения о выборе учётных данных см. в разделе Выбор аутентификации для сканирования.
В CI ограничьте область действия API key шагом сканирования и используйте доверенный рабочий процесс.
Для CLI требуется Node.js 24 или 26 либо Node.js 22 начиная с 22.13.0. Для сканирования, массового сканирования,
экспорта, истории сканирований и сохранённых находок также требуется Python 3.10 или новее.
Для Python 3.10 также требуется tomli. Используйте --python с scan, bulk-scan или
export либо задайте PYTHON для любой команды, использующей Python.
Продолжите с кратким руководством по CLI, руководством по массовому сканированию, часто задаваемыми вопросами о CLI, руководством по CI или руководством по TypeScript SDK.
Текстовые псевдонимы
- --output FILE|-