
sandbox-runtime v0.0.74
Ein leichtgewichtiges Sandboxing-Tool zur Durchsetzung von Dateisystem- und Netzwerkbeschränkungen für beliebige Prozesse auf Betriebssystemebene, ohne dass ein Container erforderlich ist.
Anthropic Sandbox Runtime (srt)
Ein leichtgewichtiges Sandboxing-Tool zur Durchsetzung von Dateisystem- und Netzwerkeinschränkungen für beliebige Prozesse auf Betriebssystemebene, ohne dass ein Container erforderlich ist.
srt verwendet native Sandboxing-Primitive des Betriebssystems (sandbox-exec unter macOS, bubblewrap unter Linux) und proxy-basierte Netzwerkfilterung. Es kann verwendet werden, um das Verhalten von Agenten, lokalen MCP-Servern, Bash-Befehlen und beliebigen Prozessen in einer Sandbox zu isolieren.
Beta Research Preview
Die Sandbox Runtime ist eine Forschungsvorschau, die für Claude Code entwickelt wurde, um sicherere KI-Agenten zu ermöglichen. Sie wird als frühe Open-Source-Vorschau verfügbar gemacht, um dem breiteren Ökosystem zu helfen, sicherere agentische Systeme zu entwickeln. Da es sich um eine frühe Forschungsvorschau handelt, können sich APIs und Konfigurationsformate weiterentwickeln. Wir freuen uns über Feedback und Beiträge, um KI-Agenten standardmäßig sicherer zu machen!
Installation
npm install -g @anthropic-ai/sandbox-runtime
Grundlegende Verwendung
# Network restrictions
$ srt "curl anthropic.com"
Running: curl anthropic.com
<html>...</html> # Request succeeds
$ srt "curl example.com"
Running: curl example.com
Connection blocked by network allowlist # Request blocked
# Filesystem restrictions
$ srt "cat README.md"
Running: cat README.md
# Anthropic Sandb... # Current directory access allowed
$ srt "cat ~/.ssh/id_rsa"
Running: cat ~/.ssh/id_rsa
cat: /Users/ollie/.ssh/id_rsa: Operation not permitted # Specific file blocked
Überblick
Dieses Paket bietet eine eigenständige Sandbox-Implementierung, die sowohl als CLI-Tool als auch als Bibliothek verwendet werden kann. Es ist mit einer Secure-by-Default-Philosophie konzipiert, die auf gängige Entwickler-Anwendungsfälle zugeschnitten ist: Prozesse starten mit minimalem Zugriff, und Sie öffnen explizit nur die Lücken, die Sie benötigen.
Wesentliche Fähigkeiten:
- Netzwerkbeschränkungen: Steuern Sie, auf welche Hosts/Domains über HTTP/HTTPS und andere Protokolle zugegriffen werden kann
- Dateisystembeschränkungen: Steuern Sie, welche Dateien/Verzeichnisse gelesen/geschrieben werden können
- Unix-Socket-Beschränkungen: Steuern Sie den Zugriff auf lokale IPC-Sockets
- Verletzungsüberwachung: Greifen Sie unter macOS auf den Sandbox-Verletzungsprotokollspeicher des Systems für Echtzeitwarnungen zu
Beispielanwendungsfall: Sandboxing von MCP-Servern
Ein wichtiger Anwendungsfall ist das Sandboxing von Model Context Protocol (MCP)-Servern, um deren Fähigkeiten einzuschränken. Um beispielsweise den Dateisystem-MCP-Server zu sandboxen:
Ohne Sandboxing (.mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
Mit Sandboxing (.mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "srt",
"args": ["npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
Dann konfigurieren Sie Einschränkungen in ~/.srt-settings.json:
{
"filesystem": {
"denyRead": [],
"allowWrite": ["."],
"denyWrite": ["~/sensitive-folder"]
},
"network": {
"allowedDomains": [],
"deniedDomains": []
}
}
Nun wird der MCP-Server daran gehindert, in den verweigerten Pfad zu schreiben:
> Write a file to ~/sensitive-folder
✗ Error: EPERM: operation not permitted, open '/Users/ollie/sensitive-folder/test.txt'
Funktionsweise
Die Sandbox verwendet Betriebssystem-Primitive, um Einschränkungen durchzusetzen, die für den gesamten Prozessbaum gelten:
- macOS: Verwendet
sandbox-execmit dynamisch generierten Seatbelt-Profilen - Linux: Verwendet bubblewrap zur Containerisierung mit Netzwerk-Namespace-Isolierung
- Windows: Führt den sandboxed Prozess unter einem dedizierten lokalen Benutzerkonto
srt-sandboxaus, mit einem Windows Filtering Platform-Egress-Zaun, der auf die SID dieses Kontos abgestimmt ist, sowie sitzungsspezifischen expliziten ACEs auf dem Arbeitsverzeichnis
0d1c612947c798aef48e6ab4beb7e8544da9d41a-4096x2305
Duales Isolationsmodell
Sowohl Dateisystem- als auch Netzwerkisolierung sind für effektives Sandboxing erforderlich. Ohne Dateiisolierung könnte ein kompromittierter Prozess SSH-Schlüssel oder andere sensible Dateien exfiltrieren. Ohne Netzwerkisolierung könnte ein Prozess aus der Sandbox entkommen und uneingeschränkten Netzwerkzugriff erlangen.
Dateisystemisolierung erzwingt Lese- und Schreibbeschränkungen:
- Lesen (Deny-then-Allow-Muster): Standardmäßig ist Lesezugriff überall erlaubt. Sie können breite Bereiche verweigern (z. B.
/Users) und dann bestimmte Pfade darin wieder erlauben (z. B..).allowReadhat Vorrang vordenyRead— das Gegenteil von Schreiben, wodenyWriteVorrang vorallowWritehat. EindenyRead-Eintrag, der spezifischer ist als derallowRead-Bereich, in den er fällt (z. B.denyRead: ["**/.env"]oder["./secrets"]mitallowRead: ["."]), bleibt weiterhin verweigert. - Schreiben (Nur-Erlauben-Muster): Standardmäßig ist Schreibzugriff überall verweigert. Sie müssen Pfade explizit erlauben (z. B.
.,/tmp). Eine leere Erlaubnisliste bedeutet keinen Schreibzugriff.
Netzwerkisolierung (Nur-Erlauben-Muster): Standardmäßig ist jeglicher Netzwerkzugriff verweigert. Sie müssen Domains explizit erlauben. Eine leere allowedDomains-Liste bedeutet keinen Netzwerkzugriff. Netzwerkverkehr wird über Proxy-Server geleitet, die auf dem Host laufen:
-
Linux: Anfragen werden über das Dateisystem über einen Unix-Domain-Socket geleitet. Der Netzwerk-Namespace des sandboxed Prozesses wird vollständig entfernt, sodass der gesamte Netzwerkverkehr über die Proxies laufen muss, die auf dem Host laufen (die auf Unix-Sockets lauschen, die in die Sandbox bind-mounted sind)
-
macOS: Das Seatbelt-Profil erlaubt Kommunikation nur zu einem bestimmten localhost-Port. Die Proxies lauschen auf diesem Port und schaffen einen kontrollierten Kanal für den gesamten Netzwerkzugriff
-
Windows: Ein maschinenweiter WFP-Filtersatz blockiert alle ausgehenden Verbindungen, die vom
srt-sandbox-Konto ausgehen, außer Loopback zum Proxy-Portbereich. Die Proxies lauschen innerhalb dieses Bereichs und schaffen einen kontrollierten Kanal für den gesamten Netzwerkzugriff
Sowohl HTTP/HTTPS (über HTTP-Proxy) als auch anderer TCP-Verkehr (über SOCKS5-Proxy) werden durch diese Proxies vermittelt, die Ihre Domain-Allowlists und -Denylists durchsetzen.
Weitere Details zum Sandboxing in Claude Code finden Sie unter:
- Claude Code Sandboxing Documentation
- Beyond Permission Prompts: Making Claude Code More Secure and Autonomous