Volver a actualizaciones
Nuevo releaseJul 26, 2026

fence v0.1.64

Ligero sandbox sin contenedores para ejecutar comandos con restricciones de red y sistema de archivos.

Compartir

Fence Banner

GitHub Release Build and test Docs Ask DeepWiki License

Fence envuelve comandos en un entorno aislado que bloquea el acceso a la red por defecto y restringe las operaciones del sistema de archivos según reglas configurables. Es muy útil para ejecutar código semiconfiable (instalaciones de paquetes, scripts de compilación, trabajos de CI, repositorios desconocidos) con efectos secundarios controlados, y también puede complementar a los agentes de codificación de IA como defensa en profundidad.

# Bloquear todo acceso a la red (por defecto)
fence curl https://example.com  # → 403 Forbidden

# Permitir dominios específicos
fence -t code npm install  # → usa la plantilla 'code' con npm/pypi/etc permitidos

# Bloquear comandos peligrosos
fence -c "rm -rf /"  # → bloqueado por reglas de denegación de comandos

Demostración de Fence Claude Code

Fence también es un gestor de permisos para tus agentes de CLI. Funciona con agentes de codificación populares como Claude Code, Codex, Amp, Gemini CLI, GitHub Copilot, OpenCode, Factory (Droid) CLI y muchos más — consulte agents.md.

Instalación

[!NOTA] Fence se ha trasladado de github.com/Use-Tusk/fence a github.com/fencesandbox/fence. Si lo instaló con Homebrew desde el antiguo tap de Tusk, cambie al nuevo tap:

brew uninstall use-tusk/tap/fence
brew untap use-tusk/tap
brew tap fencesandbox/tap
brew install fencesandbox/tap/fence

Si lo instaló con go install, reinstálelo desde la nueva ruta del módulo:

go install github.com/fencesandbox/fence/cmd/fence@latest

macOS / Linux:

curl -fsSL https://cli.fencesandbox.com/install.sh | sh

Homebrew (macOS):

brew tap fencesandbox/tap
brew install fencesandbox/tap/fence

Nix (macOS, Linux, Windows (WSL)):

nix run nixpkgs#fence -- --help

Esto lo ejecuta directamente desde el repositorio, sin instalar fence. Si desea instalarlo, siga las pautas de NixOS o nix-darwin.

Otros métodos de instalación

Instalar con Go:

go install github.com/fencesandbox/fence/cmd/fence@latest

Compilar desde el código fuente:

git clone https://github.com/fencesandbox/fence
cd fence
go build -o fence ./cmd/fence

Requisitos adicionales para Linux:

  • bubblewrap (para el aislamiento)
  • socat (para el puente de red)
  • bpftrace (opcional, para visibilidad de violaciones del sistema de archivos al monitorear con -m)

Uso

Básico

# Ejecutar comando con toda la red bloqueada (ningún dominio permitido por defecto)
fence curl https://example.com

# Ejecutar con expansión del shell
fence -c "echo hello && ls"

# Habilitar registro de depuración
fence -d curl https://example.com

# Usar una plantilla
fence -t code -- claude  # Ejecuta Claude Code usando la configuración de la plantilla `code`

# Modo monitoreo (muestra violaciones)
fence -m npm install

# Enviar los propios registros de monitoreo/depuración de Fence a un archivo
fence -m --fence-log-file /tmp/fence.log -- claude
tail -f /tmp/fence.log

# Inspeccionar la cadena de herencia de configuración y la configuración activa combinada
fence config show

# Mostrar todos los comandos y opciones
fence --help

[!CONSEJO] ¿Necesita pasar banderas al comando que está ejecutando? Use -- para separar las banderas de Fence de las del comando, por ejemplo:

fence -- claude --dangerously-skip-permissions

Configuración

Cuando no se proporciona --settings, Fence primero busca fence.jsonc (o fence.json) en el directorio actual y directorios superiores. Si no encuentra ninguno, recurre a ~/.config/fence/fence.{jsonc,json}. Ambas extensiones se tratan como JSONC (se permiten comentarios y comas finales). Consulte la referencia de configuración para más detalles.

{
  "$schema": "https://raw.githubusercontent.com/fencesandbox/fence/main/docs/schema/fence.schema.json",
  "extends": "code",
  "network": { "allowedDomains": ["private.company.com"] },
  "filesystem": { "allowWrite": ["."] },
  "command": { "deny": ["git push", "npm publish"] }
}

Para anulaciones locales del repositorio sobre la configuración normal de Fence de cada usuario, use:

{
  "extends": "@base",
  "filesystem": { "allowWrite": ["."] }
}

Use fence --settings ./custom.json para especificar una configuración diferente.

Inspeccione la configuración activa sin ejecutar un comando:

fence config show
fence config show --settings ./custom.json
fence config show --template code

fence config show imprime la cadena de configuración en stderr y la configuración completamente resuelta como JSON plano en stdout, por lo que puede canalizar el JSON a herramientas como jq.

Cree una configuración inicial con valores predeterminados sensatos:

# Crea configuración en la ruta predeterminada con:
# { "extends": "code" }
fence config init

# Incluir arreglos de andamio como sugerencias editables
fence config init --scaffold

Importar desde Claude Code

fence import --claude --save

Características

  • Aislamiento de red - Todo el tráfico saliente bloqueado por defecto; permita dominios mediante configuración
  • Restricciones del sistema de archivos - Controle las rutas de acceso de lectura/escritura
  • Bloqueo de comandos - Deniegue comandos peligrosos como rm -rf /, git push
  • Filtrado de comandos SSH - Controle qué hosts y comandos están permitidos a través de SSH
  • Plantillas integradas - Conjuntos de reglas preconfigurados para flujos de trabajo comunes
  • Monitoreo de violaciones - Registro en tiempo real de solicitudes bloqueadas (-m)
  • Multiplataforma - macOS (sandbox-exec) + Linux (bubblewrap)

Fence se puede usar como paquete Go o herramienta CLI.

Documentación

La documentación completa está alojada en fencesandbox.com/docs.

Enlaces rápidos:

Atribución

Inspirado en sandbox-runtime de Anthropic.

Categorías