Это было моё самое близкое знакомство с AI/ML Security, пока фаундеры на нынешней работе не загнали меня в угол и не заставили ковырять агентскую безопасность. Спустя три месяца мы релизим OpenAPPA - Agentic Permissions Policy Algebra.
APPA - это переосмысление классического information flow control под агентские нужды. Главная проблема текущей агентской безопасности в том, что тулколл оценивают в вакууме. Авто-моды и LLM-ревьюеры просят вторую модель угадать, выглядит ли действие безопасным. Чтобы эту модель саму не накачали промпт-инъекцией, из её контекста обычно вырезают предыдущие выводы тулов. В итоге ревьюер видит
curl ... и понятия не имеет, что в пейлоаде: публичный README, креды от прод-базы или секреты клиента, которые агент прочитал два хода назад.Как это решает APPA:
1. Контроль происхождения данных (provenance), а не команд в вакууме. В отличие от чёрно-белых списков, тут не нужен ворох ифов и регулярок. В отличие от auto-mode в кодинг-агентах, APPA смотрит не на то, «выглядит ли команда безобидно», а откуда пришли данные и куда текут. Сами полиси при этом остаются компактными: не надо расписывать комбинаторный взрыв - достаточно разметить источники и приемники (sources and sinks), остальное движок инферит по траектории сам.
2. Remedy-планы вместо дедлоков. Плохой секьюрити-софт либо дырявый, либо превращает агента в бесполезный кирпич при первой же ошибке. APPA возвращает не просто отказ, а инструкцию, как его можно обойти в рамках полиси (например, почистить PII через санитайзер, заспавнить сабагента со structured output или спросить человека ровно на один вызов). В итоге utility остаётся на уровне ~90% от бейзлайна (серьёзные конкуренты падают ниже 50%), а оверхед по токенам незначительный - всего +4.2% на Tau-Bench.
3. Под громким словом «алгебра» скрывается нехитрый fold. Буквально одна чистая функция над логом событий (в статье мы пафосно говорим про finite meet-semilattice where permissions only monotonically narrow, но в коде это дружище fold). Просто, но с доказуемыми инвариантами по построению. Зато снаружи к нему можно цеплять любые костыли под грязную реальность: от корпоративного каталога пользователей до локального ML-классификатора, который динамически размечает неструктурированные тулколлы вроде произвольного баша. Благодаря этому любые наработки - от любимой пачки ифов до автомода или jev-классификатора - отлично ложатся как дополнение.
Можно поиграться локально (ставится в Claude Code одной командой), можно примерить для взрослого энтерпрайза (нативная поддержка в платформе archestra.ai), можно как угодно использовать у себя - исходники на гитхабе под MIT.
P.S. Этот пост можно лайкнуть или даже репостнуть в линкедине, заранее большое спасибо!