Zurück zu den Updates
New releaseJul 26, 2026

fence v0.1.64

Leichtgewichtige, containerfreie Sandbox zum Ausführen von Befehlen mit Netzwerk- und Dateisystemeinschränkungen.

Teilen

Fence Banner

GitHub Release Build and test Docs Ask DeepWiki License

Fence kapselt Befehle in einer Sandbox, die standardmäßig den Netzwerkzugriff blockiert und Dateisystemoperationen basierend auf konfigurierbaren Regeln einschränkt. Es ist am nützlichsten, um halbvertrauenswürdigen Code auszuführen (Paketinstallationen, Build-Skripte, CI-Jobs, unbekannte Repos) mit kontrollierten Seiteneffekten, und es kann auch als Defense-in-Depth für KI-Codierungsagenten eingesetzt werden.

# Block all network access (default)
fence curl https://example.com  # → 403 Forbidden

# Allow specific domains
fence -t code npm install  # → uses 'code' template with npm/pypi/etc allowed

# Block dangerous commands
fence -c "rm -rf /"  # → blocked by command deny rules

Fence Claude Code demo

Fence ist auch ein Berechtigungsmanager für Ihre CLI-Agenten. Funktioniert mit beliebten Codierungsagenten wie Claude Code, Codex, Amp, Gemini CLI, GitHub Copilot, OpenCode, Factory (Droid) CLI und vielen mehr – siehe agents.md.

Installieren

[!NOTE] Fence wurde von github.com/Use-Tusk/fence nach github.com/fencesandbox/fence verschoben. Wenn Sie es mit Homebrew aus dem alten Tusk-Tap installiert haben, wechseln Sie zum neuen Tap:

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

Wenn Sie es mit go install installiert haben, installieren Sie es erneut mit dem neuen Modulpfad:

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

Dies führt es direkt aus dem Repository aus, ohne fence zu installieren. Wenn Sie es installieren möchten, folgen Sie den Richtlinien von NixOS oder nix-darwin.

Andere Installationsmethoden

Go install:

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

Aus dem Quellcode bauen:

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

Zusätzliche Anforderungen für Linux:

  • bubblewrap (für die Sandbox)
  • socat (für Netzwerkbrücken)
  • bpftrace (optional, für die Sichtbarkeit von Dateisystemverstößen bei Überwachung mit -m)

Verwendung

Grundlegend

# Run command with all network blocked (no domains allowed by default)
fence curl https://example.com

# Run with shell expansion
fence -c "echo hello && ls"

# Enable debug logging
fence -d curl https://example.com

# Use a template
fence -t code -- claude  # Runs Claude Code using `code` template config

# Monitor mode (shows violations)
fence -m npm install

# Send Fence's own monitor/debug logs to a file
fence -m --fence-log-file /tmp/fence.log -- claude
tail -f /tmp/fence.log

# Inspect the config inheritance chain and active merged config
fence config show

# Show all commands and options
fence --help

[!TIP] Müssen Sie Flags an den auszuführenden Befehl übergeben? Verwenden Sie --, um Fence-Flags von Befehlsflags zu trennen, zum Beispiel:

fence -- claude --dangerously-skip-permissions

Konfiguration

Wenn --settings nicht angegeben ist, sucht Fence zunächst nach fence.jsonc (oder fence.json) im aktuellen Verzeichnis und in übergeordneten Verzeichnissen. Wird keine gefunden, wird auf ~/.config/fence/fence.{jsonc,json} zurückgegriffen. Beide Erweiterungen werden als JSONC behandelt (Kommentare und nachgestellte Kommas sind erlaubt). Siehe Konfigurationsreferenz für weitere Details.

{
  "$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"] }
}

Für repo-lokale Überschreibungen zusätzlich zur normalen Fence-Konfiguration jedes Benutzers verwenden Sie:

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

Verwenden Sie fence --settings ./custom.json, um eine andere Konfiguration anzugeben.

Überprüfen Sie die aktive Konfiguration, ohne einen Befehl auszuführen:

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

fence config show gibt die Konfigurationskette an stderr und die vollständig aufgelöste Konfiguration als einfaches JSON an stdout aus, sodass Sie das JSON an Tools wie jq weiterleiten können.

Erstellen Sie eine Startkonfiguration mit sinnvollen Standardeinstellungen:

# Creates config at the default path with:
# { "extends": "code" }
fence config init

# Include scaffold arrays as editable hints
fence config init --scaffold

Import aus Claude Code

fence import --claude --save

Funktionen

  • Netzwerkisolation – Alle ausgehenden Verbindungen standardmäßig blockiert; Domains über Konfiguration auf die Whitelist setzen
  • Dateisystemeinschränkungen – Lese-/Schreibzugriffspfade steuern
  • Befehlsblockierung – Gefährliche Befehle wie rm -rf /, git push ablehnen
  • SSH-Befehlsfilterung – Steuern, welche Hosts und Befehle über SSH erlaubt sind
  • Integrierte Vorlagen – Vorkonfigurierte Regelsets für gängige Arbeitsabläufe
  • Verstoßüberwachung – Echtzeit-Protokollierung blockierter Anfragen (-m)
  • Plattformübergreifend – macOS (sandbox-exec) + Linux (bubblewrap)

Fence kann als Go-Paket oder CLI-Tool verwendet werden.

Dokumentation

Die vollständige Dokumentation ist unter fencesandbox.com/docs verfügbar.

Schnellzugriff:

Namensnennung

Inspiriert von Anthropics sandbox-runtime.

Kategorien