agentutils CLI
Три UNIX-утилиты: форк каталога без копирования, запуск агента в песочнице и патч с его правками.
- 64 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Изоляция не закрывает сеть: запущенная команда отправит наружу все, что ей разрешено читать.
- Записываемые пути остаются читаемыми, и лежащие там токены доступны.
Установка
- Работает в
Ручная установка
make installСобирает команды и ставит их в `~/.local/bin`, справку в `~/.local/share/man`. Для другого места задайте `PREFIX`. Нужен Rust.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Изоляция не закрывает сеть: запущенная команда отправит наружу все, что ей разрешено читать.
- Записываемые пути остаются читаемыми, и лежащие там токены доступны.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
agentutils состоит из трех отдельных команд. `fsfork` клонирует каталог с копированием при записи: форк лежит рядом, не занимает места до первых правок и включает незакоммиченные изменения. `confine` запускает команду в таком форке и дает писать только туда, а чтение секретов в домашней папке закрыто. `fsdiff` показывает, что агент изменил в форке, в виде патча для `git apply`. Форк — обычная папка, ее путь служит именем, а остальное делают `ls`, `rm` и `git`. Служебной базы у утилит нет. На macOS изоляцию дает Seatbelt, на Linux Landlock. Сеть не ограничивается.
Для кого. Разработчикам, которые запускают Claude Code или другого агента без подтверждений и хотят изолировать рабочую копию, не заводя контейнер.
Подходит, если
- Агент должен переписать половину проекта, а вы хотите проверить результат патчем перед применением.
- В домашней папке лежат `~/.ssh` и `~/.aws`, и запущенная команда не должна их прочитать.
- Параллельно идут несколько попыток одной задачи, и каждой нужна своя копия каталога.
- Репозиторий большой, а полная копия заняла бы лишнее время и диск.
- После сеанса надо убрать форки одной командой `fsfork --prune`.
Не подходит, если
- Нужна изоляция сети: `confine` не закрывает исходящие соединения и отправку в удаленные репозитории.
- Файловая система не умеет общие блоки: форк тогда превращается в полную копию.
- Сборка зависит от ядра Linux старше 5.19: без Landlock `confine` откажется запускаться.
Пример запроса к агенту
Запусти Claude Code в форке этого проекта, а потом покажи патч с его изменениями.Ограничения
Работает на macOS и Linux. На macOS нужна APFS, а форки должны лежать на том же томе. На Linux для `confine` нужно ядро 5.19 или новее с Landlock, а для быстрого `fsfork` файловая система с общими блоками, например Btrfs или XFS. Команда `fsdiff` требует `git`. Сеть остается открытой: изолированный процесс отправит куда угодно все, что ему разрешено читать. Записываемые пути читаются тоже, поэтому токен в `~/.cargo/credentials.toml` доступен. Сборки в форке стартуют холодными, пока не указан `--no-ignore`.
Как отключить. Выполните `make uninstall` с тем же `PREFIX`, что при установке. Форки удалите вручную вместе с базами `.имя.N.base`.
Частые вопросы
Как запустить Claude Code в песочнице через confine?
Перейдите в каталог проекта и выполните `confine -w ~/.claude claude`. Утилита создаст форк `проект.1`, скажет об этом и запустит там агента. Флаг `-w ~/.claude` оставляет Claude Code место для сессий и настроек.
Как забрать правки агента?
Выполните `fsdiff ../проект.1 | git apply`. Команда сравнивает форк с базой, сделанной в момент форка, поэтому в патче только изменения агента, а не ваши правки в основном каталоге.
Что делает флаг --rm?
С `--rm` команда `confine` ждет завершения агента и сама удаляет форк. Без него форк остается, и `fsfork -l` покажет его состояние, а `fsfork --prune` уберет неизмененные.
Защищает ли confine от утечки по сети?
Нет. Сеть не ограничивается, поэтому команда может отправить прочитанное наружу или сделать push туда, куда у нее есть доступ. Утилита закрывает только запись вне форка и чтение секретов домашней папки.
Какие системы поддерживаются?
macOS с APFS и Linux. На Linux для `confine` нужно ядро 5.19 или новее с Landlock. Если Landlock нет, утилита завершается с ошибкой и не запускает команду без изоляции.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыDocker-песочница для кодинг-агентов: образ на Debian с Copilot CLI, Codex и Pi, а доступ по SSH, RDP и Docker включается флагами.
CLI ставит общие скиллы, команды, субагентов, хуки и MCP-серверы сразу в восемь ИИ-инструментов в их родных форматах
Консольный SSH-инструмент для агентов: выполнение команд, загрузка и скачивание файлов, белые и черные списки команд.
CLI запускает команды и ИИ-агентов в изолированных микро-ВМ с загрузкой до 125 мс и скрывает ключи API от самой песочницы.
Нативный терминал для macOS на базе Ghostty с вертикальными вкладками и уведомлениями, когда агенту нужен ответ
Платформа на вашем сервере, которая выдает каждому агенту свою Linux-машину с SSH и MCP-инструментами для команд и файлов
Коротко о README
Каждая утилита решает одну задачу, а друг о друге они знают минимум. К командам есть справочные страницы `man`, их ставит `make install`.