В комментариях к посту про локальных агентов упомянули песочницу для агентов nono, немного с ней поигрался 👀
Изоляция агента выполняется с помощью встроенных возможностей операционной системы. В Linux работает через Landlock и Seccomp, в macOS — через Seatbelt (насколько я понял, Apple этот механизм официально не документирует, но на его базе построен App Sandbox). В Windows работает внутри WSL2 с ограниченным функционалом.
Запуск агента в песочнице выглядит довольно просто, например:
nono run --profile nolabs-ai/claude -- claude
Профили для популярных агентов есть готовые, но можно и свои создавать, в том числе наследуясь от уже существующих.
⭐️ Ограничение доступа к файлам
Работает по принципу «запрещено всё, что не разрешено». Агенту будет доступно только то, что явно прописано в конфигурации. Можно указывать отдельно: чтение, запись, чтение+запись.
⭐️ Ограничение доступа в сеть
По умолчанию нет ограничений, но можно разрешить запросы по белому списку доменов и ограничить доступные локальные порты.
⭐️ Проксирование секретов
Позволяет скрыть от агента реальный секрет, подменяя его фиктивным.
Например, для
gh можно сохранить GitHub-токен в файле, недоступном в песочнице и настроить nono таким образом, чтобы в песочницу передавался фиктивный ключ, который при запросе к api.github.com подменялся на настоящий.⭐️ Наследование ограничений дочерними процессами
Все дочерние процессы, то есть инструменты, запускаемые агентом по умолчанию, наследуют все ограничения самого агента.
Это из того, что я попробовал.
Помимо описанных выше возможностей nono умеет в снапшоты/откаты, ограничение запуска команд в зависимости от переданных аргументов, а также позволяет запускать дочерние процессы в отдельных песочницах с отдельными настройками.
На первый взгляд nono мне понравился: конфигурация в JSON-формате, широкие возможности, удобства запуска и диагностики. В отличие от контейнеров, здесь агент работает прямо в системе, что сразу снимает целый пласт проблем, связанных с взаимодействием между хостом и контейнером.
Есть и свои нюансы. Например, мне не удалось заставить работать панель агентов Claude Code с включенным фильтрующим прокси nono (есть проблема со встроенным в nono ограничителем частоты запросов). Но я ей и не пользуюсь 🙃
Песочница nono — открытый проект от Люка Хайндса (похоже, хороший инженер), активно развивается, у репозитория на GitHub почти 4000 звёзд (хотя для ИИ-проекта это мало о чем говорит сегодня). В целом, не без шероховатостей, но задачу свою выполняет. На текущий момент планирую использовать nono дальше, а там посмотрим.
