Fence CLI
Fence запускает команды и агентов вроде Claude Code в песочнице: сеть блокирована по умолчанию, доступ к файлам и команды задает конфигурация
- 999 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Запускает любую переданную команду в песочнице на вашей машине, включая установку зависимостей и сборочные скрипты
- Сетевой мост на Linux через socat пропускает трафик к доменам, которые вы сами разрешили в конфигурации
- Команда fence import переносит и сохраняет действующие разрешения Claude Code в свой конфигурационный файл
Установка
- Работает в
Ручная установка
brew tap fencesandbox/tap && brew install fencesandbox/tap/fenceСпособ для macOS. На Linux дополнительно нужны bubblewrap и socat, bpftrace опционален.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Запускает любую переданную команду в песочнице на вашей машине, включая установку зависимостей и сборочные скрипты
- Сетевой мост на Linux через socat пропускает трафик к доменам, которые вы сами разрешили в конфигурации
- Команда fence import переносит и сохраняет действующие разрешения Claude Code в свой конфигурационный файл
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Fence — обертка командной строки, которая оборачивает любую команду в песочницу перед запуском: на macOS через встроенный `sandbox-exec`, на Linux через `bubblewrap`. По умолчанию весь исходящий сетевой доступ блокирован, список разрешенных доменов, пути для чтения и записи файлов и запрещенные команды вроде `git push` или `npm publish` задаются в файле `fence.jsonc`, который Fence ищет сначала в текущей папке и ее родителях, а если не находит, в `~/.config/fence/fence.jsonc`. Команда `fence config show` печатает всю цепочку наследования конфигурации и итоговый объединенный результат в формате JSON, а `fence config init` создает стартовый файл с базовыми настройками. Готовые шаблоны конфигурации под конкретный сценарий подключаются флагом `-t`, например `fence -t code -- claude` запускает Claude Code с настройками шаблона code. Отдельно есть фильтрация SSH-команд: можно ограничить, к каким хостам и какими командами агент может подключаться по SSH. Режим мониторинга `-m` в реальном времени показывает заблокированные попытки обращения к сети или файлам, а на Linux с установленным `bpftrace` добавляет видимость нарушений на уровне файловой системы. Команда `fence import --claude --save` переносит текущие разрешения Claude Code в конфигурацию Fence, а любую команду Fence можно собрать и использовать как библиотеку Go, а не только как отдельный исполняемый файл.
Для кого. Для разработчиков, которые запускают кодинг-агентов и непроверенные скрипты (сборки, установку пакетов, незнакомые репозитории) и хотят ограничить им сеть, файлы и опасные команды дополнительным слоем сверх разрешений самого агента.
Подходит, если
- Нужно запустить Claude Code, Codex или другого агента с дополнительным ограничением сети и файловой системы помимо его собственных разрешений
- Нужно безопасно прогнать установку пакетов или сборочный скрипт из незнакомого репозитория без доступа в сеть по умолчанию
- Нужно заблокировать конкретные опасные команды вроде git push или npm publish независимо от разрешений самого агента
- Нужно видеть в реальном времени, что агент пытался сделать за пределами разрешенного: сеть, файлы, команды
Не подходит, если
- Нужна изоляция уровня виртуальной машины с отдельным ядром: Fence использует sandbox-exec на macOS и bubblewrap на Linux, это песочница процесса, а не отдельная система
- На Linux не установлены bubblewrap и socat: без них сетевая изоляция и мост для разрешенных доменов не заработают
- Нужна защита от агента с правами администратора или от уязвимости в самом ядре: песочница ограничивает обычный процесс, а не привилегированный доступ
Пример запроса к агенту
Запусти установку зависимостей проекта через fence с шаблоном code, чтобы сеть и файлы вне проекта были заблокированыОграничения
Лицензия Apache-2.0.
- На Linux кроме самого Fence нужны `bubblewrap` для песочницы и `socat` для сетевого моста, а `bpftrace` опционален и нужен только для видимости нарушений файловой системы в режиме мониторинга.
- Песочница ограничивает обычный процесс через sandbox-exec на macOS и bubblewrap на Linux, это не замена виртуальной машине с отдельным ядром.
- Проект перенесен из `github.com/Use-Tusk/fence`: установленный ранее через Homebrew из старого крана нужно переставить на новый командами `brew untap` и `brew tap fencesandbox/tap`, иначе обновления не придут.
- Фильтрация SSH ограничивает, к каким хостам и какими командами можно подключаться, но не проверяет содержимое уже установленного соединения после разрешенного запроса.
- Конфигурация ищется по цепочке: явный путь из --settings, затем fence.jsonc в текущей папке и родительских папках, затем ~/.config/fence/fence.jsonc, и ошибка в любом файле этой цепочки отражается в выводе fence config show.
Как отключить. Удалите бинарник (`brew uninstall fencesandbox/tap/fence` или удаление файла после go install) и файл конфигурации `fence.jsonc` или `~/.config/fence/fence.jsonc`, если он не нужен для других целей.
Частые вопросы
Блокирует ли Fence сеть по умолчанию?
Да, без настроенных разрешенных доменов весь исходящий сетевой доступ запущенной команды заблокирован. Нужные домены добавляются в network.allowedDomains конфигурационного файла, остальная сеть остается закрытой.
Можно ли использовать Fence вместе с Claude Code без ручной настройки правил?
Да, команда fence import --claude --save переносит текущие разрешения Claude Code в формат конфигурации Fence и сохраняет их. Шаблон code, который подключается флагом -t code, тоже рассчитан на запуск кодинг-агентов с готовыми настройками.
Как Fence блокирует опасные команды вроде git push?
Список запрещенных команд задается в поле command.deny конфигурационного файла, например {"command": {"deny": ["git push", "npm publish"]}}. Команда из этого списка не выполняется внутри песочницы независимо от того, какие права дал сам агент.
Что показывает режим мониторинга -m?
Он в реальном времени печатает заблокированные попытки обращения к сети, файлам или запрещенным командам, а вывод можно направить в отдельный файл флагом --fence-log-file и читать tail -f. На Linux с установленным bpftrace к этим данным добавляется видимость нарушений на уровне файловой системы.
Fence заменяет виртуальную машину или контейнер Docker?
Нет, это песочница процесса через sandbox-exec на macOS и bubblewrap на Linux, без отдельного ядра и образа. Для изоляции на уровне ядра или полного контейнера нужен отдельный инструмент, Fence решает более легкую задачу — ограничить обычный процесс на той же машине.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыКоманда safehouse запускает Claude Code, Codex и другие агенты в песочнице macOS: файлы закрыты по умолчанию, нужные папки открываются флагами
AgentShield проверяет папку .claude на ключи в открытом виде, широкие разрешения, опасные хуки и небезопасные MCP-серверы и ставит оценку от A до F
Набор для авторизованного багбаунти: 50 субагентов, 26 команд и 2 MCP-сервера площадок багбаунти для Claude Code, Codex и еще пяти агентов
Песочница для команд и кода от ИИ-агента: запись, сеть и переменные среды закрыты по умолчанию, ключи подставляются только для разрешенных доменов
CLI с политиками, который перехватывает опасные команды AI-агентов вроде rm -rf, force push или чтения .env до их выполнения
CLI по безопасности для кодовых агентов: сканирование секретов, политики на команды, pre-commit хуки, аудит сторонних скиллов
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| Fence (эта запись) | да | 999 | ||
| AIO Sandbox | нет | ключ необязателен | 6 217 | полноценный докер-контейнер с браузером, терминалом и VS Code внутри, а не обертка команды песочницей на своей машине |
| Zerobox | нет | 724 | песочница для команд и кода от ИИ-агента |
Коротко о README
Описание репозитория открывается коротким определением и примерами базового использования: блокировка сети, запуск с подстановкой оболочки, режим отладки, запуск по шаблону. Дальше идет раздел конфигурации с примером файла fence.jsonc и описанием цепочки наследования настроек, после него раздел переноса правил из Claude Code и список возможностей по пунктам. В конце короткий раздел Attribution: автор указывает, что проект вдохновлен экспериментальным sandbox-runtime от Anthropic.