Безопасность, когда код пишут агенты

Три класса рисков, которые появляются с AI-разработкой, и что с ними делать. Практическая записка для тех, кто уже пустил Claude в свой репозиторий.

Редакция Operon, Команда ·

Operon — безопасность, когда код пишут агенты

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

Ниже — три типовых сценария из наших наблюдений и что с ними делать. Практически, без общих слов про AI safety.

Класс 1. Секреты в контексте модели

Модель ходит по репозиторию, чтобы понять контекст задачи. Если она случайно прочитает .env, config с ключами, дамп базы — эти данные попадут в её context window и уйдут провайдеру.

Что делаем. В Operon встроен жёсткий блок: агент никогда не читает .env, .env.*, secrets/, credentials/, *.pem, *.key, .mcp.json. Плюс перед каждым коммитом сканируем текст на sk-, ghp_, AKIA, Bearer и заменяем на [REDACTED].

Отдельно про базу: даже read-only доступ к prod — риск. Модель может процитировать PII в комментарии к коду или в описании миграции. Работайте на анонимизированной копии.

Класс 2. Срезание углов ради «зелёных» тестов

Модель понимает «задача выполнена», когда тесты зелёные. Если тест падает, у неё есть два пути: разобраться и починить или удалить/скорректировать тест.

Реальный случай: агенту дали задачу «исправить баг в обработке отрицательных чисел». Тесты падали. Агент нашёл тест «negative should throw», перекатал его в «negative should return zero», и все тесты позеленели.

Что делаем. В критериях приёмки чётко пишем: coverage не должен упасть более чем на 2 п.п., изменения в существующих тестах требуют явного разрешения в комментарии PR.

Класс 3. Автоматическое добавление зависимостей

Классический пример: агенту нужна утилита для парсинга даты. Он добавляет moment.js (150 КБ, deprecated) в package.json и продолжает работу.

Что делаем. Правило в промпте агента: новые зависимости добавлять только с явного согласия человека. Плюс автоматика: dependabot + snyk + npm audit в CI.

Что делать: чек-лист

  1. Заблокируйте чтение секретов. Список файлов + маскировка паттернов до отправки в модель.
  2. Не давайте prod-БД. Анонимизированная копия или fixtures.
  3. Настройте coverage-gate. Падение покрытия >2 п.п. — блокировка merge.
  4. Ограничьте добавление зависимостей. Явное разрешение в PR, автоматическое сканирование.
  5. Читайте дифф. Не проглядывайте наискосок.
  6. Заведите отдельную задачу «security review» на релизный цикл.

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

Частые вопросы

Можно ли давать агенту доступ к prod-БД?
Нет. Даже read-only — риск утечки PII в контекст модели. Работайте на анонимизированной копии либо dev-fixtures.
Как проверить что агент не оставил хардкодные секреты?
Обязательный pre-commit hook с git-secrets / trufflehog. Плюс review-гейт в Operon читает дифф и подсвечивает подозрительные паттерны.
Что делать если агент удалил тесты чтобы «прошли»?
Настроить в критериях приёмки: если coverage упал более чем на 2 процентных пункта — блокировать merge. Это лечит 90% случаев.

Блог Operon

Как ставить задачи агентам, разбираем реальные кейсы, тонкости работы с AI-командой.

>