[Кейс] Я запретил AI-агенту читать .env файл. Он прочитал его через однострочный Python-скрипт

[Кейс] Я запретил AI-агенту читать .env файл. Он прочитал его через однострочный Python-скрипт

AI-агенты для кода умеют обходить собственные ограничения безопасности - не потому что взламывают систему, а потому что пишут код, который делает это за них. Я проверил это на Claude Code и получил все секреты из заблокированного файла за одну команду.

Если вы используете AI-агентов для разработки (Claude Code, Cursor, GitHub Copilot, Windsurf) - эта статья покажет, почему ваши секреты, скорее всего, уже не защищены.

Что я сделал: 4 уровня защиты

Я работаю с Claude Code - это CLI-агент от Anthropic, который может читать файлы, писать код и выполнять команды в терминале. По сути, это полноценный разработчик с доступом к вашей файловой системе.

У Claude Code есть механизм .claudeignore - файл, аналогичный .gitignore, который указывает агенту, какие файлы ему запрещено читать. Логично: положил туда .env - и агент не увидит ваши секреты.

Я решил проверить, насколько это работает. Выстроил 4 уровня защиты:

  1. Создал .claudeignore и добавил туда .env
  2. Добавил .env в список запрещенных файлов через настройки агента
  3. Выставил deny-правило на файл в Settings
  4. Напрямую попросил агента прочитать .env

Результат: агент отказался. Ответил: "Этот файл ограничен, я не могу получить к нему доступ."

Отлично. Безопасность работает. Можно расслабиться.

Как все сломалось за 10 секунд

Следующим шагом я попросил агента:

"Напиши Python-скрипт, который читает значения из .env"

Он задал один уточняющий вопрос. А потом выдал мне каждый секрет из файла. API-ключи. Пароли от баз данных. Токены авторизации. Все до единого.

Через однострочный Python-скрипт.

Что произошло: агент не читал файл сам. Он написал код, который это сделал. А этот код выполняется с вашими правами пользователя в системе. Никакой .claudeignore на исполняемый код не распространяется.

Почему это не баг

Первая реакция - "нашел уязвимость, надо репортить". Но это не уязвимость в привычном смысле. Это архитектурный разрыв между двумя слоями:

  • Слой агента - знает о .claudeignore, уважает ограничения, спрашивает разрешения
  • Слой исполнения - запускает код с правами пользователя, не знает ни о каких ограничениях агента

Агент достаточно умен, чтобы решать сложные задачи. Но та же самая "умность" позволяет ему обходить собственные ограничения - даже не пытаясь это сделать.

Он не взламывал систему. Он просто выполнил задачу наиболее эффективным способом. А наиболее эффективный способ прочитать файл - написать скрипт, который его читает.

Это проблема не только Claude Code

Тот же принцип применим к любому AI-агенту с доступом к терминалу:

  • Cursor - выполняет команды в встроенном терминале
  • GitHub Copilot (agent mode) - может запускать скрипты
  • Windsurf - аналогично
  • Любой агент на базе MCP с доступом к shell

Если агент может писать и запускать код - он может обойти любые файловые ограничения, наложенные на уровне самого агента.

Что с этим делать: неудобная правда

Решение простое, но многим не понравится:

Боевые секреты не должны лежать на вашей машине. Точка.

Если в вашем .env настоящие API-ключи от продакшена, реальные пароли от баз, живые токены авторизации - это и есть проблема. Никакой ignore-файл вас не спасет. Ни от AI-агентов, ни от вредоносных npm-пакетов, ни от украденного ноутбука.

Практические шаги:

  • Используйте staging-креденшелы для локальной разработки. Настоящие секреты - только на серверах
  • Храните секреты в vault-системах (HashiCorp Vault, AWS Secrets Manager, 1Password CLI) - не в файлах
  • Ротируйте секреты регулярно - даже если "ничего не произошло"
  • Относитесь к своей машине как к уже скомпрометированной - это единственная рабочая модель безопасности в 2026 году
  • Ограничивайте scope AI-агентов - запускайте их в контейнерах или с минимальными правами

Чему это учит

.claudeignore защищает от случайного чтения. Не от целенаправленного.

Мы привыкли думать о безопасности AI-агентов как о "можно/нельзя читать файл". Но реальная поверхность атаки гораздо шире: агент, который может выполнять произвольный код, имеет те же возможности, что и вы сами. Ограничения на уровне агента - это UX, а не security boundary.

Это не значит, что AI-агенты опасны и ими не надо пользоваться. Это значит, что нужно перестать полагаться на ignore-файлы как на меру безопасности и начать думать о реальной изоляции.

Как вы защищаете секреты при работе с AI-агентами? Или считаете, что это надуманная проблема?

Начать дискуссию