temporality
Изменить страницу↗
Инженерные документы

Детекция опасного поведения агента

Статус: реализовано (этапы 1–3). Детерминированные детекторы (kernel/agent/behaviorscan.go: утечки секретов, канарейки, опасный контент, подозрительные аргументы, правки тестов/CI, скан base64/hex/urlencode), корпусный семантический матчер на модели эмбеддингов (слой 2) и судья-наблюдатель этапа 3 (supervisorcases.go, monitorSuspicionMin) работают в проде. Реализованы и «фантазии» §5: egress-контур (cmd/agent-kernel/egress.go + squid-прокси + allowlist, см. §7), honeypot-канарейки в воркспейсе (PrepareRun), verification_gap.

#1. Постановка

Песочница снимает проблему локальных харнесов (защита машины пользователя): внутри контейнера агенту можно творить что угодно — blast radius ограничен контейнером и воркспейсом. Остаётся две настоящие оси риска:

  1. Выход за песочницу — всегда через сеть и секреты. Ограничения должны жить в самом токене (least privilege, неразрушающие скоупы, короткий TTL, аудит на стороне внешней системы) — тогда даже успешный «побег» не даёт деструктивной мощности.
  2. Опасное поведение модели — когда она решает, что честно задачу не решить, и: фейкует верификацию («тесты зелёные» без запуска), саботирует проверки (правит тесты/CI под результат — reward hacking), кладёт деструктив в артефакт (бэкдоры, time bombs, скрытые вызовы наружу), ищет путь наружу (env/секреты/docker socket/внешние хосты), врёт в отчёте.

Задача — ловить такое раньше, чем начнётся разрушение, не превращая эксплуатацию в подтверждение каждого шага.

#2. Таксономия опасных поведений (что ловим)

Класс Примеры Основной сигнал
Фейковая верификация «тесты зелёные» без запуска; выборочный прогон расхождение claim vs reality
Подмена проверок (reward hacking) правка тестов/чеков/CI под результат; --no-verify дифф по тестам/CI — отдельная категория
Деструктив в артефакте бэкдор, rm-логика, time bombs, обфусцированный exfil в коде сканер диффа артефакта
Разведка/побег чтение env/ключей не по делу, docker socket, метаданные облака, внешние хосты egress-лог, сканер аргументов
Утечка секретов значения/кодировки секретов в командах, выводе, диффе сканер значений + canary
Обман в отчёте скрытый провал, выдача желаемого за сделанное независимая верификация, монитор

#3. Механизмы детекции по горизонтам

#Во время работы (in-process) — главное

#До работы (upfront)

#После (post-hoc)

#4. Опыт больших харнесов (справка)

Локальные харнесы (Claude Code, Codex CLI, Cursor, Cline, Goose, Gemini CLI) решают другую задачу — защита машины пользователя, поэтому их модели (allow/ask/deny списки с паттернами, permission modes, «always allow» на проект) нам напрямую не подходят. Полезное оттуда:

Облачные агенты (Devin, Copilot coding agent) — противоположный полюс: per-call approval отсутствует, изоляция средой + ревью результата (PR). Наша песочница ближе к этому полюсу, значит акцент смещается с подтверждений на детекцию.

#5. Детерминированная семантическая детекция по цепочке тул-колов

Идея: без LLM в рантайме — заранее собрать корпус паттернов опасного поведения (побег, деструкция, exfil, подмена проверок), превратить их в векторы и быстро сверять цепочку ходов рана (n-граммы тул-колов + аргументы) с корпусом.

#Оценка осуществимости

Ресурсы — копейки. Модель эмбеддингов уже в процессе (e5-small через rembed), эмбеддинг короткого текста — миллисекунды; корпус в сотни паттернов — сотни векторов; сравнение — косинус против сотен векторов на ход/ран. Ни сети, ни LLM, ни заметной нагрузки.

Что реально ловится:

Что НЕ ловится (честные границы):

Вердикт: дёшево и полезно как слой раннего предупреждения и приоритизации (в т.ч. как фильтр перед дорогим monitor-судьёй), но не как самостоятельный детектор намерения. Ставить в стек, ожидать среднюю точность, замыкать фидбеком человека.

#Дизайн-набросок (слои, все без рантайм-LLM)

Слой Механизм Точность Ловит
0. Тул-паттерны regex/точные паттерны по нормализованным аргументам высокая precision известное дословное
1. n-граммы хешированные n-граммы токенов аргументов и три-граммы цепочки (механизм майнинга уже есть) высокая на near-dup известные последовательности
2. Эмбеддинги вектор корпуса опасных паттернов (curated + из вердиктов) vs вектор окна цепочки средняя парафразы, «похожее поведение»
3. Monitor-судья LLM-рубрика высшая намерение, обман, скрытое

#6. Приоритезация внедрения

Этапы 1–3 внедрены; таблица ниже — исторический план, порядок совпал с реализацией.

Этап Что Цена
1 Сканер значений секретов в args/outputs/диффах значения уже в ядре
1 Правки тестов/CI в диффе — отдельная видимая категория классификация путей диффа
1 Детерминированный сканер деструктива в диффе статические паттерны
2 Слой 0–2 детекции по цепочке (выше) + кейс супервайзеру инфраструктура эмбеддингов уже есть
2 Независимая верификация заявлений (kernel re-run) Activities уже гоняют команды
2 Canary-секреты выдача секретов уже через ядро с журналом
3 Monitor-судья на ход (рубрика + скор) судья и супервайзер есть
3 Egress allowlist + лог соединений песочницы инфраструктура сети

#7. Egress allowlist

Сеть песочницы и список разрешённых внешних адресов — независимые оси (первое — «может ли вообще ходить наружу», второе — «куда именно»):