В вашем CI работает ИИ‑агент. Запустить его может чужая задача.
Вы встроили ИИ‑агента в GitHub Actions, чтобы разбирать задачи и ревьюить пул‑реквесты. Он работает на тексте, который может написать кто угодно, и при этом держит настоящие секреты. agentpipe находит эту цепочку раньше атакующего.
pip install agentpipe-scan$ agentpipe scan . scanning .github/workflows … 3 files ✗ AWI-01 reachable · high untrusted trigger runs an agent with a secret sink .github/workflows/triage.yml:11 ✗ AWI-02 reachable · high untrusted issue title interpolated into the prompt .github/workflows/triage.yml:18 ✗ AWI-05 plausible · high agent runs with --dangerously-skip-permissions .github/workflows/triage.yml:24 4 findings · 4 high · 1 file fix: agentpipe fix . prove: agentpipe prove AWI-01
Одна открытая задача, и ваш пайплайн публикует за постороннего
Сценарий сборки срабатывает на задачу или пул‑реквест и подставляет заголовок задачи прямо в промпт агента. А это задание держит npm‑токен и права на публикацию. Теперь любой, кто открыл задачу, передаёт инструкции процессу, который может опубликовать ваш пакет или слить ваши ключи. Никто ничего не нажимал. Этот класс мы называем clinejection, и он встречается в реальных репозиториях.
Каждая открытая цепочка, по всем репозиториям, на одном дашборде
SaaS-приложение проверяет каждый пул‑реквест в реальном времени и записывает находки. Вы получаете детектор, вердикт, точный файл со строкой и динамику во времени.
| Repo | Findings | Status |
|---|---|---|
| cyberbobas/agentpipe | 4 | 4 HIGH |
agentpipe fix patches it for you.Три способа запустить один и тот же движок
От разовой проверки на ноутбуке до сервиса, который следит за всей организацией. Движок один, а сколько автоматизировать, решаете вы.
CLI
Запустили команду, прочитали находки. На сервер ставить ничего не нужно. Хорошо для разовой проверки или чтобы попробовать.
pip install agentpipe-scan
agentpipe scan .
agentpipe localGitHub Action
Добавляете один файл сборки. На каждый пул-реквест бот вешает один липкий комментарий и выгружает результаты во вкладку «Безопасность» (SARIF).
# .github/workflows/agentpipe.yml
uses: cyberbobas/agentpipe@v0
with:
fail-on: high
comment: trueSaaS-приложение
Ставите один раз на GitHub-организацию. Ни файлов сборки, ни сервера. Следит за каждым репозиторием, комментирует пул-реквесты и даёт дашборд.
- Все репозитории, текущие и будущие
- Комментарии в реальном времени
- Общий дашборд и тренд
- Орг-политика, которую репозиторий не ослабит
Что SaaS-приложение умеет, а один CLI нет
CLI это фонарик, которым вы светите сами. SaaS-приложение это пожарная сигнализация, разведённая по всему зданию. Движок один, а охват совсем разный.
| Что | CLI | Action | SaaS |
|---|---|---|---|
| Когда работает | по команде | на каждый пул-реквест, в одном репо | на каждый пул-реквест, вся организация, автоматически |
| Настройка | вручную каждый раз | файл сборки в каждый репо | один клик на организацию |
| Охват | один репо, один прогон | один репо | каждый репозиторий, текущие и будущие |
| Кто видит результат | только вы, в терминале | в пул-реквесте | в пул-реквесте и на общем дашборде |
| История и тренд | нет | нет | полная история и тренд во времени |
| Орг-политика, которую репо не ослабит | нет | по репо, менять может любой | да |
| Обслуживание | запускаете сами | поддерживаете файл сборки | ноль, держим мы |
Ставите один раз. Дальше оно работает само.
Установка на организацию
Выбираете репозитории или сразу все, включая будущие. Один клик, без конфиг-файлов.
Открывается пул-реквест
Кто-то открывает или обновляет пул-реквест в любом подключённом репозитории. GitHub уведомляет наш сервер по подписанному, проверенному вебхуку.
Мы читаем файлы сборки
Короткоживущий токен читает только файлы сборки ровно той версии, что в пул-реквесте. Мы не трогаем ваш исходный код и секреты.
Движок работает
Тот же статический движок прослеживает каждый путь от недоверенного триггера через агента к опасному действию, который добавляет этот пул-реквест.
Один понятный комментарий
В пул-реквесте появляется один комментарий: какие цепочки нашли и одно изменение, которое чинит каждую. Только по делу, без шума.
Видно на дашборде
Покрытие, что открыто по репозиториям, и тренд во времени. Доказательство, которое вы покажете аудитору.
Не линтер. Не ограничитель.
Линтеры проверяют конфиг сборки. Сканеры кода проверяют код. Ограничители на входе модели (guardrails) проверяют промпт. Ни один из них статически не прослеживает в CI путь от недоверенного события через агента к вашему секрету. Это наша задача.
Не линтер и не сканер кода
zizmor и CodeQL ловят ошибки конфигурации и инъекции в коде. Мы прослеживаем саму связь: недоверенное событие доходит до шага с ИИ-агентом, а тот до секрета, записи или публикации.
Не ограничитель модели
Ограничители смотрят на промпт, который идёт в модель. Мы смотрим на действие, которое шаг модели совершает в CI. Чистый промпт проходит ограничитель, а потом агент читает токен и публикует. Это ловим мы.
Честно по построению
Каждая находка говорит, что доказано, что нет, и одно изменение, которое чинит. agentpipe prove подтверждает безобидной канарейкой, а не эксплойтом.
Бесплатно на время беты, с разумными лимитами
CLI и Action безлимитны и с открытым кодом, навсегда. SaaS-приложение бесплатно на время беты с разумными лимитами, чтобы оставаться быстрым для всех: сканы пул-реквестов, дашборд и покрытие всей организации включены. Нужна корпоративная политика или больше репозиториев? Напишите про ранний доступ.
Частые вопросы
Вы запускаете или храните мой код?
Это правда бесплатно?
Работает с Copilot, Claude и другими агентами?
Он завалит мои пул-реквесты комментариями?
Можно ли развернуть у себя?
Напишите нам, ответим быстро
Ранний доступ к SaaS, вопросы по внедрению или корпоративная политика на весь парк репозиториев. Оставьте контакт, вернёмся в течение рабочего дня.
Найдите цепочку раньше атакующего
Запустите сами бесплатным CLI, или поставьте SaaS-приложение один раз и дайте ему следить за каждым репозиторием, на каждом пул-реквесте, с дашбордом для всей команды.
Безопасность связи с ИИ-агентом в вашем CI. Часть набора Agentoffense.