CrabTrap
- title
- CrabTrap
- type
- toolbox
- summary
- HTTP-прокси с оценкой через LLM-as-a-judge, перехватывающий и проверяющий на соответствие политикам каждый запрос AI-агента
- tags
- ai-agents, security, proxy, llm-judge
- language
- Unknown
- license
- Unknown
- created
- 2026-04-22
- updated
- 2026-04-22
- lang
- ru
- translation_of
- crabtrap
- source_updated
- 2026-04-22
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-high
CrabTrap - это open-source решение от Brex для запуска AI-агентов в проде без потери контроля над тем, что им разрешено делать. Оно работает как HTTP-прокси между агентом и внешними сервисами: трафик агента идёт через CrabTrap, который сверяет каждый запрос с политикой и в реальном времени либо разрешает, либо блокирует его. Предусмотрено два уровня проверки - статические правила (fast path) и оценка через LLM-as-a-judge (для всего остального).
Что он делает
Агент настраивается на отправку своего HTTP-трафика через CrabTrap в качестве MITM-прокси. При установке CrabTrap требует установить CA-сертификат (через ./scripts/generate-certs.sh), чтобы перехватывать TLS. Для каждого перехваченного запроса:
- Статические правила проверяются первыми - шаблоны URL, метод, целевой хост, значения заголовков. Детерминированное разрешение или запрет.
- LLM-судья оценивает всё, что не подошло под статическое правило. Политика пишется на обычном английском - например: "The agent is a code assistant that uses GitHub for issues, post messages, and read repository data. It should never delete repositories, send emails to external addresses, or send messages on Slack."
- Решение вместе с обоснованием логируется, после чего запрос либо пропускается, либо блокируется.
Почему выбрана такая архитектура
У альтернативных подходов есть известные пробелы:
- Ограничения на уровне песочницы (hazmat, bubblewrap-dev-env) блокируют файловую систему, процессы, а иногда и сетевой egress на уровне ОС. Но HTTPS на порту 443 практически невозможно заблокировать, не сломав вызовы API, поэтому агент внутри песочницы всё ещё может сливать данные на любой сервер с TLS - hazmat прямо признаёт этот пробел.
- Ограничения на уровне промпта (в системном промпте написано "don't delete repos") легко обходятся достаточно враждебным контекстом и зависят от того, насколько рассуждения агента остаются в заданных рамках.
- Белые списки для отдельных инструментов работают, когда агент использует структурированные инструменты в стиле MCP, но ломаются в тот момент, когда агент вызывает curl через оболочку.
Идея CrabTrap - перехватывать запросы на уровне HTTP, где и происходят реальные действия. В момент, когда агент собирается дёрнуть эндпоинт удаления репозитория в GitHub, можно проверить URL, метод и тело запроса и принять решение. Это не зависит от того, как агент был настроен и к каким выводам пришёл в процессе рассуждений.
Этап с LLM-судьёй - дорогая, но гибкая часть: политика на естественном языке избавляет оператора от необходимости перечислять все разрешённые шаблоны URL, однако каждый запрос требует вызова модели для оценки. Конвейер со статическими правилами на первом месте сохраняет приемлемую пропускную способность, отсекая детерминированные случаи без лишних задержек.
Компромиссы
- Требуется установка CA-сертификата. Прокси должен расшифровывать TLS, а значит, корнем доверия становится уровень безопасности ключей самого CrabTrap. Утечка закрытого ключа CA скомпрометирует всё, чему доверял агент.
- LLM-судья увеличивает задержки. Каждый запрос, не попавший под статические правила, ждёт оценки политики. На высоконагруженных путях это ощутимо бьёт по скорости.
- Политику нужно тщательно формулировать. "The agent should never delete repos" - это разумная политика; "the agent should make good decisions" - нет. Качество политики напрямую определяет качество принимаемых решений.
- Агент всё ещё может слить данные через разрешённые эндпоинты. Если создание issue в GitHub разрешено, агент может опубликовать украденные секреты в заголовке задачи. CrabTrap блокирует очевидные действия, а не хитрые обходные пути.
Где это применимо
В таксономии sandboxing-ai-agents CrabTrap занимает квадрант сетевого уровня с контролем политик - отдельно от файловых песочниц вроде hazmat и bubblewrap-dev-env, системных инструментов уровня сисколов вроде syscall-binary-rewriting и инструментов управления контекстом вроде ctx. Он отлично с ними сочетается: эшелонированная защита вместо полной замены.
Сам паттерн LLM-judge универсален - это общий подход к применению политик, когда правила проще описать на естественном языке, чем закодировать. Тот же паттерн встречается в системах модерации контента и фильтрах использования инструментов для агентов.
Репозиторий
https://github.com/brexhq/CrabTrap - проект от Brex с открытым исходным кодом. Установка выполняется через make setup после клонирования, что запускает генерацию сертификатов и сборку UI. Демо-стенд доступен на brex.com/crabtrap с интерактивным редактором политик и визуализатором решений по запросам.
Связанные заметки
- hazmat, bubblewrap-dev-env - песочницы на уровне файловой системы; дополняют, а не заменяют
- sandboxing-ai-agents - более широкая концепция, охватывающая уровни контроля
- charlie-daemons - другой взгляд на агентов в проде: автономные фоновые процессы, требующие схожих ограничений
- supply-chain-security - тот же принцип: "определи, что разрешено, блокируй всё остальное"