agentutils CLI

Три UNIX-утилиты: форк каталога без копирования, запуск агента в песочнице и патч с его правками.

  • 64 ★ репозитория
  • Последний коммит
  • MIT
CLI

Расширенный доступ

Почему такой уровень

  • Изоляция не закрывает сеть: запущенная команда отправит наружу все, что ей разрешено читать.
  • Записываемые пути остаются читаемыми, и лежащие там токены доступны.
Все причины и проверки

penberg/agentutils

Установка

Работает в

Ручная установка

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 нет, утилита завершается с ошибкой и не запускает команду без изоляции.

Обсуждение

Вопросов и отзывов пока нет.

Docker-песочница для кодинг-агентов: образ на Debian с Copilot CLI, Codex и Pi, а доступ по SSH, RDP и Docker включается флагами.

CLIРасширенный доступ154Звезды репозитория

CLI ставит общие скиллы, команды, субагентов, хуки и MCP-серверы сразу в восемь ИИ-инструментов в их родных форматах

CLIРасширенный доступ91Звезды репозитория

Консольный SSH-инструмент для агентов: выполнение команд, загрузка и скачивание файлов, белые и черные списки команд.

CLIШирокий доступ87Звезды репозитория

CLI запускает команды и ИИ-агентов в изолированных микро-ВМ с загрузкой до 125 мс и скрывает ключи API от самой песочницы.

CLIШирокий доступ62Звезды репозитория

Нативный терминал для macOS на базе Ghostty с вертикальными вкладками и уведомлениями, когда агенту нужен ответ

CLIШирокий доступ28,8 тыс.Звезды репозитория

Коротко о README

Каждая утилита решает одну задачу, а друг о друге они знают минимум. К командам есть справочные страницы `man`, их ставит `make install`.

Бейдж для README

Сообщить о проблеме