Проблема, которую разработчики ждут месяцами

OpenAI Codex CLI — терминальный ИИ-агент для работы с кодом — до сих пор не имеет встроенного механизма защиты чувствительных файлов от передачи модели. Issue #2847 на GitHub остаётся открытым, несмотря на то что первые запросы появились ещё в апреле 2025 года. Проблема простая и критическая: агент потенциально может прочитать .env, приватные ключи SSH и AWS-credentials — и отправить их содержимое в облако OpenAI.

⚠ Риск для команд
Если вы используете Codex CLI в рабочем репозитории, агент технически может прочитать .env, .pem, id_rsa и другие секреты через shell-команды типа cat или rg — даже если файлы есть в .gitignore.

Что именно не работает

Автор issue, разработчик mkusaka, описал желаемый механизм ещё 28 августа 2025 года: нужен способ явно пометить файлы и пути, которые агент не должен читать и отправлять модели — на уровне репозитория (.codexignore) и глобально (пользовательский файл игнора).

Пример сценария из issue:

«Пусть node_modules/ остаётся доступным для поиска реализаций, но .env, .pem, id_*, .aws/, .ssh/ никогда не читаются и не отправляются модели.»

Ключевое требование — конфигурация должна быть детерминированной и разделяемой в команде, а не зависеть от неформальных договорённостей в документации.

При этом в отдельном обсуждении (#5523) выяснилась неприятная деталь: когда файлы указываются напрямую через @, .gitignore работает корректно. Но при использовании shell-команд типа rg, cat или полнотекстового поиска по воркспейсу — те же самые игнорируемые файлы могут быть прочитаны и попасть в ответ Codex.

ℹ Контекст
Иssue #205 (.codexignore) был закрыт в пользу реализации на Rust (codex-rs). Однако по состоянию на середину 2026 года сопоставимая функция в codex-rs по-прежнему отсутствует — и issue #2847 фактически перезапускает ту же дискуссию.

Как устроена текущая «защита»

Codex CLI использует sandbox-изоляцию на уровне ОС. По умолчанию сетевой доступ отключён, а права на запись ограничены активным воркспейсом. Но это не решает проблему чтения секретов внутри директории проекта.


graph TD
    A[Запрос пользователя] --> B[Codex CLI агент]
    B --> C{Тип обращения к файлу}
    C -- "Прямая ссылка @file" --> D[.gitignore работает ✅]
    C -- "Shell: cat / rg / find" --> E[Игнор НЕ работает ❌]
    E --> F[Содержимое попадает в контекст модели]
    F --> G[Отправляется в OpenAI API]

Что предлагает сообщество как обходное решение

Пока официального фикса нет, разработчики предлагают ручную конфигурацию через config.toml с запретом на чтение конкретных путей:

[".env"] = "deny"
[".env.*"] = "deny"
["**/.env"] = "deny"
["**/*.pem"] = "deny"
["**/*.key"] = "deny"
["**/id_rsa"] = "deny"
["**/id_ed25519"] = "deny"
["**/.npmrc"] = "deny"
["**/secrets/**"] = "deny"

[shell_environment_policy]
inherit = "core"
exclude = [
  "AWS_*",
  "AZURE_*",
  "OPENAI_API_KEY",
  "*TOKEN*",
  "*SECRET*",
  "*PASSWORD*",
]

Для организаций дополнительно рекомендуется централизованный запрет на уровне permissions.filesystem:

[permissions.filesystem]
deny_read = [
  "/**/.env",
  "/**/.env.*",
  "~/.ssh",
  "~/.aws/credentials",
  "~/.config/gcloud",
  "~/.netrc",
]
💡 Совет для macOS
На macOS можно задействовать sandbox на уровне seatbelt.rs, добавив правила типа (deny file-read* (regex "\\.env$")). Это даёт наиболее надёжную блокировку — на уровне ОС, а не логики агента.

Сравнение подходов к защите

МетодНадёжностьКомандная настройкаСложность
.gitignoreЧастичная (только прямые ссылки)ДаНизкая
config.toml deny-listСредняяДа (через репо)Средняя
Unix-permissions / контейнерВысокаяНет (ручная)Высокая
seatbelt (macOS sandbox)Очень высокаяНет (ручная)Высокая
.codexignore (желаемое)ВысокаяДаНизкая

Масштаб проблемы

Иssue #2847 — не единственный. Аналогичные запросы появляются регулярно: #1397 (июнь 2025), #3456 (сентябрь 2025), #6530 (ноябрь 2025, закрыт как дубликат #2847), #24993 (май 2026). Последний прямо указывает: issue #205 был закрыт «по ошибке» — судя по всему, самим же агентом Codex, который сообщил, что функция реализована, хотя это не так.

При этом Codex CLI активно развивается: инструмент переписан на Rust, поддерживает macOS, Windows и Linux, работает с моделями GPT-5.5 и GPT-5.4-mini. Репозиторий набрал более 94 тысяч звёзд на GitHub. Но базовый механизм защиты секретов на уровне файловой системы так и не появился.

📝 Для enterprise-команд
До появления официального решения рекомендуется: запускать Codex CLI в изолированном контейнере без монтирования директорий с секретами, либо использовать Unix-права доступа, чтобы процесс агента физически не мог прочитать критичные файлы.

Что это значит для отрасли

Ситуация с Codex — симптом более широкой проблемы: ИИ-агенты, получающие доступ к файловой системе, создают новый класс угроз утечки данных, который традиционные инструменты (.gitignore, права доступа) не покрывают в полной мере. Конкуренты — в частности, Claude Code от Anthropic — уже предлагают аналогичные механизмы защиты на уровне конфигурации.

Пока OpenAI не закроет этот gap, использование Codex CLI в production-репозиториях с чувствительными данными требует дополнительных мер изоляции на уровне инфраструктуры.