Защита кодовой базы с помощью автономных агентов
За последние девять месяцев скорость создания PR у нас выросла в 5 раз. Инструменты безопасности на базе статического анализа или жёсткого распределения ответственности за код по-прежнему полезны. Но на этом масштабе их уже недостаточно. Мы адаптировались, начав использовать Cursor Automations — это позволило быстро собрать набор security-агентов, которые непрерывно находят и устраняют уязвимости в кодовой базе.

Сегодня мы выпускаем четыре новых шаблона автоматизаций — точные чертежи тех security-агентов, которые оказались для нас наиболее полезны. Другие security-команды могут настроить эти шаблоны под себя и создавать агентов, автоматически решающих широкий спектр задач по безопасности.
Архитектура автоматизаций
Чтобы агенты были полезны в контексте безопасности, им нужны две вещи — обе есть в Cursor Automations.
Первая — готовые интеграции для приёма webhooks (веб-хуков, HTTP-уведомлений о событиях), ответов на GitHub pull request и отслеживания изменений в кодовой базе. Это позволяет фоновым агентам понимать, когда нужно вмешаться и выполнить действие.
Вторая — полноценная среда выполнения агентов. Автоматизации работают на базе cloud agents (облачных агентов Cursor), поэтому имеют доступ ко всем инструментам, навыкам и возможностям наблюдения, доступным облачным агентам.
Чтобы сделать автоматизации ещё мощнее для security-задач, мы собрали security MCP-инструмент (MCP — протокол взаимодействия агента с внешними инструментами) и развернули его как serverless Lambda-функцию — она запускается по требованию и не потребляет ресурсы в остальное время.
MCP, референсный код которого доступен здесь, решает три задачи:
- Хранение данных. Агент использует MCP для сохранения данных. Это позволяет отслеживать и измерять влияние на безопасность во времени. Эти данные помогают непрерывно уточнять, когда и как запускать автоматизации.
- Дедупликация. Мы запускаем несколько review-агентов на каждое изменение. Поскольку их выводы генерирует LLM, разные агенты могут описывать одну и ту же проблему разными словами. Чтобы избежать дублирования работы, MCP позволяет агенту запустить классификатор на базе Gemini Flash 2.5. Он определяет, когда два разных по формулировке описания относятся к одной проблеме.
- Единообразный вывод. Агенты передают все найденные уязвимости через MCP. MCP отправляет отформатированные сообщения в Slack и обрабатывает дальнейшие действия — отклонение или откладывание (snooze) находки.
На этом фундаменте строятся четыре описанные ниже автоматизации, каждая со своим workflows и логикой триггеров. Все изменения в security-инструментах проходят стандартный процесс review и деплоя через Terraform.
Agentic Security Review
Внутри мы уже использовали Bugbot для review PR на качество кода и общие проблемы, включая некоторые security-находки. Но универсальный инструмент не идеален для безопасности: его нельзя настроить под нашу конкретную threat model (модель угроз — перечень возможных векторов атак). А нам была нужна возможность блокировать CI именно по security-находкам, не блокируя при этом каждый общий комментарий по качеству кода.
Поэтому мы собрали отдельную автоматизацию — Agentic Security Review. Сначала мы направляли её находки в приватный Slack-канал, за которым следила security-команда.

Agentic Security Review отправляет находки в приватный Slack-канал, за которым следит security-команда.
Убедившись, что инструмент выявляет реальные проблемы, мы включили комментирование PR, а затем реализовали блокирующий gate check (проверку-заградитель, которая останавливает пайплайн при обнаружении проблемы). За последние два месяца Agentic Security Review обработал тысячи PR и не допустил в прод сотни проблем.
Vuln Hunter
После успеха Agentic Security Review на новом коде мы направили агентов на существующую кодовую базу. Vuln Hunter — автоматизация, которая разбивает код на логические сегменты и ищет в каждом уязвимости. Команда выполняет триаж (сортировку и оценку) находок и обычно исправляет их, часто используя @Cursor из Slack для генерации PR.
Anybump
Патчинг зависимостей настолько трудоёмок, что большинство security-команд в итоге сдаются и перекладывают задачу на инженеров, где она тонет в бэклогах. Мы создали автоматизацию Anybump, которая почти полностью автоматизировала этот процесс.
Anybump выполняет reachability analysis (анализ достижимости — проверяет, вызывается ли уязвимый код из реальных путей выполнения). Это сужает список уязвимостей до реально влияющих. Затем автоматизация проходит по соответствующим путям кода, запускает тесты, проверяет на поломки и открывает PR после прохождения тестов. После мержа PR canary deployment pipeline (канареечный пайплайн — механизм постепенного развёртывания на часть трафика) Cursor предоставляет финальный safety gate перед попаданием чего-либо в прод.

Anybump автоматически открывает PR для патча уязвимых зависимостей после прохождения тестов.
Invariant Sentinel
Invariant Sentinel запускается ежедневно и отслеживает drift (отклонения) относительно набора security- и compliance-свойств (требований нормативных стандартов). Он разбивает репозиторий на логические сегменты и запускает субагентов для валидации кода по списку инвариантов (правил, которые должны оставаться неизменными).
После анализа агент сравнивает текущее состояние с предыдущими запусками, используя функцию памяти автоматизаций. При обнаружении drift он повторно валидирует, чтобы убедиться в корректности. Затем обновляет память и отправляет в Slack отчёт security-команде с описанием изменения и конкретными locations в коде в качестве доказательств.
Эта автоматизация работает в полноценной среде разработки. Поэтому агент может писать и выполнять код для валидации собственных предположений — дополняя традиционные функциональные, unit и integration тесты.
Дальнейшие планы
В безопасности полно возможностей для применения автоматизаций, и эти четыре — только начало. Мы уже расширяем их на приём отчётов об уязвимостях, мониторинг privacy compliance, триаж on-call алертов и provisionинг доступа (предоставление и управление правами доступа).
В каждом случае агенты дают нам покрытие и консистентность на масштабе, который вручную достичь невозможно.
