ИИ-агенту дали доступ к терминалу. Что может пойти не так?
Последнее время активно занимаюсь настройкой собственного AI-агента на базе OpenClaw. И постепенно пришёл к интересному наблюдению: заставить агента выполнять задачи оказалось проще, чем организовать его безопасную работу.
На первый взгляд всё выглядит довольно заманчиво.
Подключаешь модель, предоставляешь инструменты, даёшь доступ к терминалу – и вот у тебя уже есть помощник, который может писать код, запускать тесты, работать с файлами и выполнять целые последовательности действий.
Но довольно быстро возникает вопрос: а насколько безопасно предоставлять ИИ такие полномочия?
Ведь если агент умеет выполнять команды, он потенциально может не только создавать файлы, но и удалять их. Не только анализировать данные, но и получать доступ к информации, которая ему совершенно не нужна.
И проблема даже не обязательно в ошибках самой модели.
Например, агент может прочитать документацию, страницу сайта или содержимое репозитория, где окажутся инструкции, подталкивающие его к нежелательным действиям. Это одна из разновидностей атак через prompt injection.
Поэтому, настраивая OpenClaw, я решил двигаться от минимально необходимых полномочий.
Для начала выделил отдельную среду, ограничил доступ к файловой системе и отключил прямое выполнение произвольных команд через терминал.
Вместо этого начал подключать отдельные инструменты с заранее определёнными возможностями.
Например, если агенту нужно запустить тесты, необязательно предоставлять ему полноценный доступ к командной строке. Можно дать инструмент, который выполняет конкретную операцию в изолированном контейнере с ограничениями по ресурсам и сетевому доступу.
В отдельных тестовых сценариях на синтетическом коде уже удалось проверить такой цикл: агент вносит исправления, запускает тесты через разрешённый инструмент и проверяет результат. При этом до полноценной автономной работы ещё предстоит проверить множество пограничных случаев.
Недостаточно просто запретить опасные команды. Важно определить перечень разрешённых операций и проверить, что установленные ограничения действительно соблюдаются.
Какие инструменты доступны агенту? Какие файлы он может прочитать? Может ли запустить что-то за пределами изолированной среды? Что произойдёт при ошибке или неожиданном ответе инструмента?
В результате заметная часть времени уходит не на расширение возможностей агента, а на настройку и проверку этих ограничений.
И чем глубже погружаюсь в эту тему, тем больше понимаю, что безопасность AI-агентов – это отдельная инженерная задача.
Причём даже изоляция сама по себе не даёт абсолютных гарантий. Важно сочетать ограничения доступа, контролируемое выполнение операций и проверку результатов.
А вы бы доверили ИИ-агенту самостоятельное выполнение команд на своём компьютере? Или пока предпочитаете контролировать каждый шаг?