Год спустя Codex от OpenAI всё ещё нельзя запретить читать ваш .env

Кто-то открыл issue #2847 с просьбой о простом .codexignore, чтобы агент никогда не лез в .env, *.pem или ключи .ssh. Вердикт треда: даже если OpenAI это выпустит, защита будет показной.

Вкратце

Просьба скромная: конфиг вроде .gitignore, который оставляет node_modules доступным для поиска, но велит агенту никогда не читать и не отправлять .env, *.pem, id_*, .aws и .ssh. Issue висит открытым с августа.

Инженеры в треде доказывают: безопасно это не сделать. Если модель может запускать shell, случайный rg foo, поймавший строку из .env, всё равно сольёт секрет. Лекарство, которое называют снова и снова, — не чёрный список, а песочница.

Фича в одну строку, которую так и не выпускают

Issue #2847 OpenAI Codex на GitHub
Issue #2847 OpenAI Codex на GitHub

28 августа 2025 года пользователь mkusaka открыл issue #2847 в репозитории OpenAI Codex: дать агенту способ исключать чувствительные файлы. Просьба конкретна: конфиг в стиле .codexignore, работающий и на уровне репозитория, и глобально, который «оставлял бы node_modules/ доступным для проверок реализации, но никогда не читал и не отправлял .env, .env., .pem, id_, .aws/, .ssh/»*. Он ссылается на более раннюю issue (#205), закрытую при переписывании Codex на Rust, но защита тогда так и не вернулась. Метки — Enhancement и Sandbox. Issue всё ещё открыта.

Почему чёрный список не удержит секрет

Самое острое возражение в треде: в нарисованном виде фича перестаёт работать в тот миг, когда у агента появляется shell.

«А если модель запустит rg foo, и один из этих файлов содержит строку foo? Она выгрузит вывод инструмента, а в нём — содержимое файла… единственное решение — сделать так, чтобы процесс codex вообще не имел доступа к этим файлам: через контейнер, через права unix или удалив файлы.» — комментатор с кармой \~9,7 тыс., разобравший сценарий сбоя

Отсюда и постоянный раскол: люди хотят, чтобы правило накрывало bash, а не только инструменты чтения и правки, но при этом давало make трогать те же файлы, а идеально так не выйдет. Второй голос уложил опасность всё-таки выпустить такое в одну строку.

«.agentsignore — это НЕ инструмент безопасности… использовать его, чтобы не дать утечь секретам, было бы БОЛЬШОЙ ошибкой. Просто нет способа гарантировать, что агент проигнорирует то, что в ignore-файле. И даже ограничение на уровне обвязки всё равно работает внутри процесса, а его взбунтовавшийся агент скомпрометирует без труда.» — автор песочницы yoloai

Мейнтейнер проекта-песочницы под Linux назвал это фундаментальной ошибкой слоёв: рантайм не должен следить сам за собой.

«Файлы, к которым имеют доступ codex и любой другой кодовый агент, должны быть opt-in, а НЕ opt-out. По-моему, codex — не тот слой, где это стоит решать, если нужен вменяемый UX в один клик.» — инженер, построивший внутренний терминал-песочницу вокруг Claude и Codex

Что люди используют на самом деле

Под возражениями лежит тихий консенсус о том, что работает уже сегодня: chmod убирает файлы из досягаемости, запуск в контейнере не монтирует ничего чувствительного, либо секреты просто перестают держать в файлах репозитория. Один комментатор доказывал, что настоящий баг — сама конвенция .env: ключам стоит ходить через прокси вроде ssh-agent, а не лежать на диске, откуда их зачерпнёт вызов инструмента. Тред плотно набит работающими альтернативами (apptainer, bind-маунты, devcontainers, обёртки-песочницы macOS), и для OpenAI это неприятное чтение: спрос на #2847 громкий именно потому, что безопасный ответ требует выйти из собственного UI агента, а переключатель в один клик, который выглядел бы защитой, оказался бы хуже той дыры, что он закрывает.

Получайте такие разборы каждый день

Главные истории Hacker News — на email, в Telegram или RSS.

Следующая новость · 10 из 34 Читать дальше
🌍Other

ЕС воскрешает дважды отклонённый Chat Control в закрытом трилоге, в понедельник утром

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

★ 605 · 💬 352 · patrick-breyer.de · 4 мин