Ключевые факты
- Fence — это инструмент командной строки, который оборачивает любую команду в песочницу, блокируя сетевой доступ по умолчанию и ограничивая запись в файловую систему.
- Инструмент использует встроенные в ОС технологии песочницы, в частности sandbox-exec в macOS и bubblewrap в Linux, для обеспечения изоляции.
- Сетевая фильтрация обрабатывается через локальный HTTP/SOCKS-прокси, который требует от приложений соблюдения переменной окружения HTTP_PROXY.
- Изначально он был разработан для изоляции тестируемых сервисов во время воспроизведения API-тестов, блокируя локальные подключения для принудительного использования моков.
- Fence предлагает режим мониторинга, который позволяет разработчикам видеть, что было бы заблокировано, без фактического применения ограничений.
- Инструмент может импортировать существующие наборы разрешений из других инструментов, таких как Claude Code, с помощью специальной команды импорта.
Новый уровень безопасности для командной строки
Разработчики часто выполняют команды, которые несут в себе неотъемлемые риски, от установки новых пакетов до выполнения скриптов из незнакомых репозиториев. Новый инструмент командной строки нацелен на снижение этих рисков, оборачивая любую команду в изолированную среду.
Названный Fence, инструмент блокирует сетевой доступ по умолчанию и ограничивает запись в файловую систему. Это создает контролируемую среду для выполнения кода, предотвращая непреднамеренные побочные эффекты или несанкционированную передачу данных.
Основная цель — обеспечить защиту при выполнении полу-доверенного кода. Будь то скрипт сборки, установка пакета или инструмент, который может «звонить домой», Fence предлагает способ выполнения этих команд с предсказуемым, ограниченным поведением.
Основная функциональность и режимы
Fence работает путем перехвата системных вызовов и сетевых запросов, эффективно изолируя целевую команду от хост-системы. По умолчанию он блокирует все исходящие сетевые соединения и предотвращает операции записи вне указанного каталога.
Инструмент предлагает несколько режимов работы для различных сценариев:
- Режим по умолчанию: Блокирует весь сетевой трафик и ограничивает запись в файловую систему.
- Режим шаблонов: Применяет предварительно настроенные правила, например, разрешение доступа к конкретным реестрам для менеджеров пакетов.
- Режим мониторинга: Выполняет команду, регистрируя, что было бы заблокировано, обеспечивая видимость без применения ограничений.
Например, выполнение fence curl https://example.com приводит к заблокированному соединению. В противоположность этому, использование шаблона с fence -t code -- npm install разрешает доступ к необходимым реестрам npm, сохраняя при этом другие ограничения.
«Я быстро понял, что это может быть универсальным инструментом, который также будет полезен в качестве менеджера разрешений для агентов командной строки».
— Разработчик Fence
Техническая архитектура
Инструмент использует встроенные в ОС технологии песочницы для обеспечения изоляции. В macOS он использует sandbox-exec, а в Linux — bubblewrap. Эти базовые механизмы обеспечивают надежную основу для ограничения возможностей процессов.
Для сетевой фильтрации Fence использует локальный HTTP/SOCKS-прокси. Этот прокси перехватывает сетевые запросы и применяет правила фильтрации на основе доменов. Однако этот подход имеет конкретное ограничение: он требует, чтобы программы, помещаемые в песочницу, учитывали переменную окружения HTTP_PROXY.
Архитектура разработана для легковесности и минимального вмешательства, используя стандартные системные утилиты вместо требующих модулей ядра или слоев сложной виртуализации.
Примеры использования и применение
Инструмент был изначально задуман для решения конкретной проблемы в API-тестировании. Разработчик, стоящий за Fence, работает над системой Tusk Drift, которая записывает и воспроизводит реальный трафик в качестве API-тестов. Во время воспроизведения тестов было необходимо изолировать тестируемый сервис, чтобы блокировать исходящие локальные подключения к базам данных, таким как Postgres и Redis, заставляя приложение использовать моки вместо реальных сервисов.
Эта утилита расширяется на более широкие случаи использования, особенно с AI-агентами для кодирования. Запуск агентов с меньшим количеством запросов на интерактивные разрешения может быть рискованным. Fence позволяет разработчикам изолировать этих агентов, снижая риск непреднамеренных действий.
Например, агент может быть запущен с командой: fence -t code -- claude --dangerously-skip-permissions. Кроме того, Fence может импортировать существующие наборы разрешений, например, из Claude Code, с помощью команды fence import --claude.
«Я быстро понял, что это может быть универсальным инструментом, который также будет полезен в качестве менеджера разрешений для агентов командной строки».
Ограничения и соображения
Хотя Fence обеспечивает ценный уровень безопасности, он не является панацеей. Документация прямо указывает, что он не обеспечивает надежной защиты от вредоносного ПО. Сложный вредоносный код может найти способы обойти фильтрацию на основе прокси или использовать другие уязвимости системы.
Зависимость от фильтрации на основе прокси означает, что приложения, которые не учитывают переменную окружения HTTP_PROXY, не будут подвергаться фильтрации сетевого трафика. Это критический момент для разработчиков, оценивающих инструмент для их конкретного стека.
Несмотря на эти ограничения, Fence представляет собой практический шаг к более безопасному выполнению командной строки. Он обеспечивает баланс между безопасностью и удобством использования, позволяя разработчикам выполнять необходимые, но потенциально рискованные команды с большей уверенностью.
Взгляд в будущее
Fence решает общую больную точку в современных рабочих процессах разработки: необходимость выполнять ненадежный или полу-доверенный код без ущерба для целостности системы. Предоставляя простой интерфейс командной строки для мощных технологий песочницы, он снижает порог входа для безопасного выполнения кода.
Инструмент в настоящее время доступен для macOS и Linux, охватывая большинство сред разработки. Его открытая природа приглашает к обратной связи сообщества и потенциальным вкладам для расширения его возможностей.
Поскольку рабочие процессы разработки все больше включают AI-агентов и сторонние скрипты, инструменты, подобные Fence, вероятно, станут важными компонентами набора инструментов безопасной разработки. Разработчик активно ищет обратную связь и примеры использования от сообщества.
Часто задаваемые вопросы
Какова основная цель инструмента Fence?
Fence разработан для выполнения команд в изолированной среде, блокируя сетевой доступ по умолчанию и ограничивая запись в файловую систему. Это позволяет разработчикам выполнять полу-доверенный код, такой как установка пакетов или скрипты сборки, с контролируемыми побочными эффектами.
Как Fence обеспечивает свою песочницу?
Он использует встроенные в ОС технологии песочницы: sandbox-exec в macOS и bubblewrap в Linux. Для сетевой фильтрации он использует локальный HTTP/SOCKS-прокси для блокировки или разрешения конкретных доменов, хотя это требует, чтобы целевое приложение учитывало настройки прокси.
Каковы основные случаи использования Fence?
Инструмент полезен для запуска AI-агентов для кодирования с уменьшенным риском, безопасного выполнения незнакомых репозиториев и блокировки инструментов, которые «звонят домой». Он был специально создан для изоляции сервисов во время воспроизведения API-тестов, предотвращая подключения к локальным базам данных.
Каковы ограничения Fence?
Он не считается надежной защитой от сложного вредоносного ПО. Кроме того, его фильтрация на основе прокси работает только если программа, помещаемая в песочницу, учитывает переменную окружения HTTP_PROXY, что не является универсальным.










