Как обуздать ИИ-агентов с помощью Agent Governance Toolkit
Представьте, что вы дали ИИ-агенту доступ к своей файловой системе и попросили «навести порядок». Через пять минут вы обнаруживаете, что он удалил папку с проектом, потому что посчитал её «мусором», и отправил ваши SSH-ключи в техподдержку OpenAI, пытаясь «отладить подключение». Звучит как кошмар, но в реальности это классическая проблема безопасности автономных систем.
Обычно мы пытаемся защититься промптами в духе «пожалуйста, не делай ничего плохого». Но тесты показывают, что такие просьбы игнорируются в 26% случаев. Microsoft выкатила Agent Governance Toolkit (AGT) — инструмент, который решает эту проблему не уговорами, а жестким программным контролем.
Что это такое и зачем оно в вашем стеке
Если коротко: AGT — это слой управления (governance) для ИИ-агентов. Он вклинивается между «мозгом» модели и реальным миром. Каждый раз, когда агент хочет вызвать функцию, прочитать файл или отправить сообщение другому агенту, AGT проверяет это действие по заранее прописанным правилам.
Проект сейчас в статусе Public Preview. Это значит, что API может немного измениться, но код уже подписан Microsoft и готов к серьезным тестам. Самое приятное — поддержка языков. Тут не только Python, но и TypeScript, .NET, Rust и даже Go.
Как это работает на практике
Основная фишка проекта — Policy Engine. Это движок, который принимает решение «разрешить или запретить» быстрее, чем за 0.1 миллисекунды. Это настолько быстро, что задержка вообще не ощущается в пайплайне.
Самый простой способ защитить инструмент в Python выглядит так:
from agentmesh.governance import govern
# Оборачиваем опасную функцию в «броню»
safe_tool = govern(my_tool, policy="policy.yaml")
Теперь любой вызов my_tool будет проходить через фильтр. Если агент решит передать туда аргументы, нарушающие политику, выполнение просто не начнется.
Для тех, кто любит полный контроль, есть низкоуровневый API. Можно описывать правила прямо в коде:
evaluator = PolicyEvaluator(policies=[PolicyDocument(
name="security-policy",
rules=[PolicyRule(
name="block-delete",
condition=PolicyCondition(
field="tool_name",
operator=PolicyOperator.IN,
value=["delete_file", "rm_rf"]
),
action=PolicyAction.DENY
)],
)])
Пять уровней защиты от «восстания машин»
Разработчики из Microsoft не ограничились простыми фильтрами. В AGT заложено несколько концепций, которые обычно встречаются в серьезном энтерпрайзе или системном программировании.
Нулевое доверие и репутация
Каждый агент получает свой идентификатор на базе Ed25519. У агентов есть скоринг доверия (от 0 до 1000). Если агент начинает вести себя странно или пытается выйти за рамки своих полномочий, его рейтинг падает. Что важно: если один агент делегирует задачу другому, «наследник» никогда не получит прав больше, чем было у родителя.
Кольца привилегий
Тут всё как в операционных системах. Есть четыре кольца: kernel, supervisor, user и untrusted. Вы можете запустить критически важные функции в защищенном кольце, куда «глупый» агент-помощник просто не дотянется.
Песочница и «красная кнопка»
В AGT встроен механизм Kill Switch. Если система мониторинга видит, что агент пошел вразнос, его можно мгновенно терминировать. Также реализована схема Saga для сложных рабочих процессов: если агент выполнил три шага и на четвертом нарушил политику, AGT поможет откатить изменения (компенсация транзакций).
Защита от отравления инструментов
Если вы используете Model Context Protocol (MCP), AGT умеет сканировать определения инструментов на предмет скрытых инструкций, опечаток в названиях (typosquatting) и дрейфа описаний. Это закрывает дыру, когда злонамеренный инструмент подменяет собой легитимный.
Аудит по цепочке Меркла
Все решения агента и проверки политик записываются в логи, защищенные от подделки. Это не просто текстовый файл, а структура, похожая на блокчейн (Merkle-chained logs). Вы всегда сможете доказать, почему агент совершил то или иное действие и какая именно строчка в конфиге это разрешила.
Техническая начинка
Проект впечатляет подходом к качеству. В репозитории почти тысяча (992, если быть точным) тестов на соответствие спецификациям. Microsoft опубликовала 10 формальных спецификаций (RFC 2119), описывающих, как должны работать политики, идентификация и выполнение.
Интеграция покрывает почти все популярные фреймворки:
- LangChain и LangGraph
- CrewAI
- AutoGen
- Semantic Kernel
- OpenAI Agents SDK
Если вы используете что-то из этого списка, AGT подключается как Middleware или адаптер.
Стоит ли это пробовать
Инструмент специфический. Если вы просто балуетесь с чат-ботом, который советует рецепты, AGT вам не нужен. Но если вы строите систему, где ИИ имеет доступ к базе данных клиентов, может удалять ресурсы в облаке или распоряжаться деньгами — это маст-хэв.
Главный плюс — детерминизм. Вы точно знаете, что агент не удалит файл, потому что это запрещено кодом, а не потому что модель «сегодня в хорошем настроении». Из минусов можно отметить разве что статус превью: документация местами может быть перегружена спецификациями, а некоторые функции доступны в полном объеме только для Python.
Начать изучение лучше всего с CLI-утилиты agt doctor, которая проверит ваше окружение, и agt red-team scan, которая прогонит ваши промпты через 12 векторов атак на инъекции. Это отличный способ быстро найти дыры в безопасности еще до того, как вы напишете первую строчку кода с использованием SDK.
