
OpenAI Codex: защита секретных файлов всё ещё не реализована
В репозитории OpenAI Codex открыт issue #2847: инструмент до сих пор не умеет надёжно блокировать доступ агента к секретным файлам вроде .env и ключей SSH.
Проблема, которую разработчики ждут месяцами
OpenAI Codex CLI — терминальный ИИ-агент для работы с кодом — до сих пор не имеет встроенного механизма защиты чувствительных файлов от передачи модели. Issue #2847 на GitHub остаётся открытым, несмотря на то что первые запросы появились ещё в апреле 2025 года. Проблема простая и критическая: агент потенциально может прочитать .env, приватные ключи SSH и AWS-credentials — и отправить их содержимое в облако OpenAI.
.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.
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",
]
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. Но базовый механизм защиты секретов на уровне файловой системы так и не появился.
Что это значит для отрасли
Ситуация с Codex — симптом более широкой проблемы: ИИ-агенты, получающие доступ к файловой системе, создают новый класс угроз утечки данных, который традиционные инструменты (.gitignore, права доступа) не покрывают в полной мере. Конкуренты — в частности, Claude Code от Anthropic — уже предлагают аналогичные механизмы защиты на уровне конфигурации.
Пока OpenAI не закроет этот gap, использование Codex CLI в production-репозиториях с чувствительными данными требует дополнительных мер изоляции на уровне инфраструктуры.