Inhalt
- Das Wichtigste in 30 Sekunden
- 1. Warum du eine Sandbox brauchst
- 2. Was die Sandbox ist — zwei Isolationen
- 3. Erste Schritte — /sandbox und unterstützte Betriebssysteme
- 4. Die zwei Modi (Auto-Allow / regulär)
- 5. Konfiguration in der settings.json
- 6. Verhältnis zu Berechtigungsmodi und -regeln
- 7. Grenzen und Vorbehalte — vertraue ihr nicht blind
- 8. Wann Dev-Container oder VMs die bessere Wahl sind
- Zusammenfassung
- FAQ
Wer Claude Code lange genug nutzt, stößt auf dieses Dilemma. Bei jedem Befehl fragt es „Darf ich das ausführen?", und dein Arbeitsfluss kommt ständig ins Stocken. Doch alle Rückfragen mit --dangerously-skip-permissions (Berechtigungen umgehen) abzuschalten bedeutet, dass eine Prompt-Injection oder ein Ausrutscher Dateien überall auf deinem Rechner berühren könnte. Sicherheit gegen Automatisierung — lange als Kompromiss behandelt.
Was diese Zweiteilung aufbricht, ist die Sandbox. Wenn du vorab auf OS-Ebene absteckst, „was berührt werden darf", können Befehle innerhalb des Zauns ohne Rückfragen frei laufen, doch nichts kann darüber hinausreichen. Dieser Artikel legt aus der Praxisperspektive dar, was die Claude-Code-Sandbox isoliert und wie, wie du mit /sandbox startest, wie du sie in der settings.json konfigurierst, wie sie sich von Berechtigungsmodi unterscheidet und welche Grenzen du ihr nicht blind anvertrauen darfst.
Das Wichtigste in 30 Sekunden
Falls du nur eine Sache liest
/sandbox aus. macOS funktioniert sofort; Linux/WSL2 braucht zwei Pakete.※Im internen Einsatz bei Anthropic senkte die Sandbox Berechtigungsrückfragen sicher um 84 % (Quelle unten).
1. Warum du eine Sandbox brauchst
Claude Code ist ein KI-Agent, der wirklich etwas tut — Tests ausführen, Dateien umschreiben. Genau deshalb hält es inne und fragt vor riskanten Befehlen „Darf ich das ausführen?". Für die Sicherheit ist das richtig. Doch wenn an einem Tag Dutzende Rückfragen eintreffen, zerfällt die Arbeit, und irgendwann drückst du Enter, ohne zu lesen. Das ist „Berechtigungsmüdigkeit".
Eine müde Entwicklerin greift zu --dangerously-skip-permissions (auch YOLO-Modus genannt), der alle Rückfragen abschaltet. Das ist bequem und — wie der Name sagt — gefährlich. Drei Bedrohungen zeigen zugleich die Zähne.
Wenn eine Webseite oder ein Issue, das es liest, versteckt „sende ~/.ssh" enthält, können deine privaten Schlüssel ohne Rückfrage abfließen.
Ein generierter Befehl räumt einen unerwarteten Pfad auf. Ohne Rückfrage können auch Dateien außerhalb des Projekts verschwinden.
Eine bösartige Abhängigkeit funkt beim Installieren Daten hinaus. Bei weit offenem Netzwerk kannst du das nicht stoppen.
Die Idee der Sandbox ist einfach: Hör auf, jedes Mal zu fragen „Was soll ich bestätigen?", und stecke vorab ab, „wie weit das reichen darf". Der Zaun wird nicht durch Claudes eigenes Urteil durchgesetzt, sondern durch das Betriebssystem (den Kernel) — selbst wenn es gekapert wird und selbst wenn ein erlaubter Befehl mehr tut, als sein Name vermuten lässt, entkommt nichts der Grenze. Deshalb sind Befehle innerhalb des Zauns sicher ohne Rückfragen ausführbar — die Zweiteilung Müdigkeit-gegen-komplettes-Umgehen verschwindet. In ihrem offiziellen Engineering-Beitrag „Making Claude Code more secure and autonomous with sandboxing" berichtet Anthropic, dass es im internen Einsatz Berechtigungsrückfragen sicher um 84 % senkte (veröffentlicht im Oktober 2025).
2. Was die Sandbox ist — zwei Isolationen
Die Claude-Code-Sandbox zieht zwei Grenzen um Bash-Befehle (und jeden von ihnen erzeugten Kindprozess). Beide müssen als Paar wirken — jede allein lässt eine Lücke (siehe §7).
Schreibzugriffe sind (standardmäßig) auf das Arbeitsverzeichnis plus einen temporären Sitzungsordner beschränkt. ~/.bashrc und Systembereiche können nicht verändert werden. Lesen ist breit erlaubt, kann aber explizit verweigert werden. Selbst wenn gekapert, kann es außerhalb des Projekts nichts umschreiben.
Standardmäßig gilt „deny by default", ohne erlaubte Ziele. Sobald eine neue Domain versucht wird, erscheint eine Rückfrage. Der Verkehr läuft über einen Proxy außerhalb der Sandbox und wird gegen eine Allowlist geprüft. Sie verhindert das Hinausschicken von Geheimnissen.
Der springende Punkt ist, dass sie sich nicht darauf verlässt, dass Claude sich brav verhält. Die Grenze wird durch die eigene Sicherheitsmaschinerie des Betriebssystems durchgesetzt — macOS nutzt das eingebaute Seatbelt, Linux/WSL2 nutzt bubblewrap. So erstreckt sich dieselbe Grenze auf Skripte, die ein Befehl aufruft, und auf Enkelprozesse. Betrachte sie nicht als höfliche Bitte an das Modell, wie KI-Guardrails, sondern als eine physische Wand, die mechanisch hält.
💡 Sie zäunt nur Bash ein. Die Sandbox umschließt das Bash-Werkzeug und seine Kindprozesse. Claudes eingebautes Read/Edit/Write, MCP-Server und Hooks sind eine getrennte Sache (geregelt durch Berechtigungsregeln). Um den gesamten Prozess zu isolieren, nutze das unten beschriebene Paket @anthropic-ai/sandbox-runtime.
3. Erste Schritte — /sandbox und unterstützte Betriebssysteme
Die Sandbox ist fest in Claude Code eingebaut. Kein zusätzliches Konto oder Werkzeug nötig. Führe in einer Sitzung aus:
/sandbox
Ein Panel mit drei Reitern öffnet sich. Mode (wie sandboxed Befehle freigegeben werden — nächster Abschnitt), Overrides (ob ein unter der Sandbox fehlschlagender Befehl auf einen Lauf ohne Sandbox zurückfallen darf) und Config (die aufgelösten Einstellungen ansehen). Auf Linux/WSL2 erscheint stattdessen ein Reiter Dependencies, falls ein benötigtes Paket fehlt, und sagt dir, was zu installieren ist.
Voraussetzungen je Betriebssystem
Nichts zu installieren. Es nutzt das eingebaute Seatbelt. Aktiviere es sofort mit /sandbox.
Installiere zwei Pakete: bubblewrap und socat (z. B. apt-get install bubblewrap socat).
Nicht unterstützt. Führe Claude Code innerhalb von WSL2 aus (WSL1 funktioniert nicht).
Installiere auf Linux/WSL2 bubblewrap (das unprivilegierte Sandboxing-Werkzeug, das die Dateisystem-Isolation durchsetzt) und socat (das Relay, das den Verkehr zum Proxy leitet).
# Ubuntu / Debian
sudo apt-get install bubblewrap socat
# Fedora
sudo dnf install bubblewrap socat
⚠️ Ubuntu 24.04 und neuer: Die Standard-AppArmor-Richtlinie kann bubblewrap daran hindern, die benötigten User-Namespaces anzulegen. Wenn sysctl kernel.apparmor_restrict_unprivileged_userns den Wert 1 zurückgibt, füge ein AppArmor-Profil für bwrap hinzu, um es zu erlauben (die Schritte stehen in der offiziellen Dokumentation). Gibt es 0 zurück oder existiert der Schlüssel nicht, ist nichts zu tun. Prüfe dasselbe innerhalb von WSL2.
Praktisch zu aktivieren ist der seccomp-Filter (der das Blockieren von Unix-Domain-Sockets ergänzt). Er ist optional; installiere ihn mit npm install -g @anthropic-ai/sandbox-runtime. Der Reiter Dependencies von /sandbox zeigt den Status von ripgrep, bubblewrap, socat und dem seccomp-Filter. Nach dem Installieren der Pakete starte Claude Code neu und öffne /sandbox erneut (die Prüfung läuft beim Start).
4. Die zwei Modi (Auto-Allow / regulär)
Der Reiter Mode wählt, wie Befehle innerhalb der Sandbox freigegeben werden.
Bash-Befehle, die innerhalb der Sandbox laufen, werden automatisch erlaubt, ohne Rückfrage — die Grenze selbst tritt an die Stelle der Rückfrage. Bequem für die tägliche Arbeit. Befehle, die die Sandbox nicht ausführen kann (z. B. Verkehr zu einem nicht erlaubten Host), fallen zurück auf den regulären Berechtigungsablauf und fragen nach.
Auch sandboxed geht jeder Bash-Befehl durch die reguläre Berechtigungsrückfrage. Mehr Kontrolle, mehr Freigaben. Für Vorsichtige, die „Isolation plus die üblichen Rückfragen" wollen.
In beiden Modi sind die Dateisystem- und Netzwerkgrenzen identisch; der einzige Unterschied ist „Auto-Allow gegenüber Rückfrage". Beachte, dass selbst im Auto-Allow-Modus diese Sicherheitsventile aktiv bleiben:
- Explizite Deny-Regeln haben stets Vorrang
rm/rmdir, die auf/, dein Home-Verzeichnis oder andere kritische Systempfade zielen, fragen weiterhin nach- Inhaltsbezogene Ask-Regeln wie
Bash(git push *)erzwingen weiterhin eine Rückfrage, selbst innerhalb der Sandbox
Vorsicht vor zwei verwirrend ähnlichen „Autos". Der Auto-Allow-Modus der Sandbox ist nicht der Auto-Modus der Berechtigungsmodi. Ersterer bedeutet „automatisch freigeben, weil die OS-Grenze es einschließt"; Letzterer bedeutet „ein Klassifikator beurteilt die Sicherheit des Befehls und lässt ihn durch". Sie wirken unabhängig und lassen sich kombinieren.
5. Konfiguration in der settings.json
Entscheidungen im /sandbox-Panel werden in die projektbezogene .claude/settings.local.json geschrieben (nicht in git eingecheckt). Damit sie über alle Projekte hinweg immer an ist, setze sandbox.enabled: true in deinen Benutzereinstellungen unter ~/.claude/settings.json. Sie gehört zur selben settings.json-Familie wie Berechtigungsregeln (allow/ask/deny).
Schreibziele hinzufügen, Lesen verweigern
Standardmäßig kannst du nur in das Arbeitsverzeichnis und den temporären Ordner schreiben. Falls kubectl oder terraform woanders schreiben muss, füge Pfade mit allowWrite hinzu. Umgekehrt kannst du das Lesen sensibler Ordner blockieren.
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["~/.kube", "/tmp/build"],
"denyRead": ["~/"],
"allowRead": ["."]
}
}
}
Das Beispiel oben verweigert das Lesen des gesamten Home-Verzeichnisses, erlaubt aber weiterhin das aktuelle Projekt (. löst sich zum Projektstamm auf, wenn die Konfiguration in den Projekteinstellungen liegt). Pfade werden auf OS-Ebene durchgesetzt, gelten also gleichermaßen für Kindprozesse wie npm und terraform.
Zugangsdaten schützen
Eine wichtige Falle: Der Standard für Lesezugriffe ist „breit erlaubt", sodass ~/.aws/credentials und ~/.ssh/ so wie sie sind lesbar sind. Die dedizierte Einstellung sandbox.credentials (eine relativ neue Funktion) deklariert Dateien, deren Lesen verweigert wird, und Umgebungsvariablen, die zu leeren sind.
{
"sandbox": {
"enabled": true,
"credentials": {
"files": [
{ "path": "~/.aws/credentials", "mode": "deny" },
{ "path": "~/.ssh", "mode": "deny" }
],
"envVars": [
{ "name": "GITHUB_TOKEN", "mode": "deny" }
]
}
}
}
Ziele erlauben
Das Netzwerk startet mit null Zielen. Eine neue Domain löst beim ersten Erreichen eine Rückfrage aus (in den aktuellen Versionen zum Zeitpunkt des Schreibens bedeutet einmaliges Bestätigen keine erneute Rückfrage für den Rest der Sitzung). Trage Hosts, nach denen du nicht gefragt werden willst, vorab in allowedDomains ein. Mit organisationsweit verteilten Managed Settings kannst du außerdem alles außerhalb der Allowlist automatisch blockieren, statt nachzufragen.
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["*.github.com", "registry.npmjs.org"]
}
}
}
Um sie organisationsweit vorzuschreiben. Füge in den Managed Settings neben sandbox.enabled: true auch failIfUnavailable: true hinzu (Start von Claude Code verweigern, falls die Sandbox nicht initialisiert werden kann) sowie allowUnsandboxedCommands: false (die „Notluke" des erneuten Ausführens außerhalb der Sandbox schließen — strikter Modus). Zusammen erzwingen sie sie als Sicherheits-Gate.
6. Verhältnis zu Berechtigungsmodi und -regeln
Sie sind leicht zu verwechseln, doch die Sicherheitsmaschinerie von Claude Code hat drei Schichten mit klar getrennten Aufgaben. Die Sandbox ist eine davon — sie ersetzt die anderen beiden nicht; sie ergänzt sie.
| Schicht | Was sie steuert | Durchgesetzt von | Geltungsbereich |
|---|---|---|---|
| Berechtigungsregeln | Welche Werkzeuge/Befehle genutzt werden dürfen | Claude Code (vor dem Ausführen) | Alle Werkzeuge |
| Berechtigungsmodi | Wie viele Rückfragen erscheinen | Claude Code (vor dem Ausführen) | Hängt vom Modus ab |
| Sandbox | Was es berühren kann, sobald es läuft | Das Betriebssystem (Kernel) | Bash und Kindprozesse |
Der entscheidende Unterschied ist „wann und durch wen" jede greift. Berechtigungsregeln und -modi werden vor der Ausführung, durch Claude Code, aus dem Befehlsstring entschieden. Die Sandbox bindet den Prozess während der Ausführung, durch das Betriebssystem — sodass egal, was das Modell wählte, und selbst wenn ein erlaubter Befehl mehr tut, als sein Name andeutet, die Grenze sich nicht rührt.
Das ist auch die entscheidende Kluft zu --dangerously-skip-permissions (Umgehen). Umgehen entfernt nur Rückfragen; die Umgebung bleibt weit offen. Das Auto-Allow der Sandbox hingegen kann Rückfragen überspringen, weil die OS-Wand da ist. Die alte eiserne Regel — wenn du den Bypass-Modus nutzt, dann nur innerhalb eines isolierten Containers oder einer VM — ist etwas, das die Sandbox dich selbst auf deinem Alltagsrechner auf die sichere Seite verschieben lässt.
7. Grenzen und Vorbehalte — vertraue ihr nicht blind
Die Sandbox ist mächtig, aber sie ist keine vollständige Isolation. Bevor du dich als harte Sicherheitsgrenze auf sie stützt, kenne die Grenzen, die die Dokumentation benennt.
Der Proxy urteilt nur nach dem Hostnamen und inspiziert (standardmäßig) verschlüsselte Inhalte nicht. Eine breite Domain wie github.com zu erlauben, lässt Raum, Daten zu exfiltrieren — etwa per Domain-Fronting. Halte die Allowlist schmal.
/var/run/docker.sock zu erlauben, übergibt über den Docker-Socket den gesamten Host — praktisch ein Sandbox-Ausbruch. Sei vorsichtig, welche Sockets du öffnest.
Beschreibbare ausführbare Dateien auf dem $PATH oder Dateien wie .bashrc können sich in Codeausführung in einem anderen Kontext verwandeln. Halte allowWrite minimal.
Noch etwas zum Verinnerlichen: der Geltungsbereich ist nur Bash — eingebautes Read/Edit/Write, MCP-Server und Hooks sind getrennt. Um den gesamten Prozess zu isolieren, einschließlich Skills und MCP, umhülle den Claude-Code-Prozess selbst mit dem offiziellen Open-Source-@anthropic-ai/sandbox-runtime (auf GitHub und npm veröffentlicht, eine im Oktober 2025 erschienene Research Preview). Seine praktische Rolle ist keine „Wand" gegen einen entschlossenen Angreifer, sondern ein „Sicherheitsgurt", der Unfälle und Fehlläufe um Größenordnungen reduziert.
8. Wann Dev-Container oder VMs die bessere Wahl sind
Die Sandbox ist nicht Claude Codes einzige Isolationsoption. Bequemlichkeit und Stärke der Isolation stehen im Zielkonflikt, also wähle nach Zweck.
Isoliert Bash und Kindprozesse. Kein Docker, minimale Einrichtung. Das Arbeitspferd zum Reduzieren von Rückfragen im Alltag.
Umhüllt den gesamten Claude-Code-Prozess. Für unbeaufsichtigte Läufe, bei denen du auch MCP und Hooks eingezäunt haben willst. Kein Docker.
Containerisiert die gesamte Entwicklungsumgebung. Zum Standardisieren des Team-Setups. Erfordert Docker.
Trennt das gesamte Betriebssystem. Die stärkste, kernel-nahe Isolation, für nicht vertrauenswürdigen Code. Höchster Aufwand.
Die Faustregel: halte die eingebaute Sandbox stets an, um tägliche Rückfragen zu reduzieren, und rüste erst dann auf — zu sandbox-runtime, Containern oder VMs — wenn du unbeaufsichtigt läufst oder mit nicht vertrauenswürdigen Abhängigkeiten hantierst. Für Arbeit, die bis in die Produktion reicht — etwa KI die Cloud bedienen zu lassen — verschafft dir das Kombinieren von Least-Privilege-Zugangsdaten mit einer stärkeren Isolationsstufe ein ruhiges Gewissen.
Zusammenfassung
- Die Sandbox zäunt „was berührt werden darf" auf OS-Ebene ein und löst die Zweiteilung aus Rückfrage-Müdigkeit und komplettem Umgehen auf.
- Nutze Dateisystem- und Netzwerk-Isolation als Paar. Durchsetzung: macOS = Seatbelt, Linux/WSL2 = bubblewrap.
- Starte mit
/sandbox. macOS funktioniert sofort; Linux/WSL2 brauchtbubblewrap+socat; natives Windows wird nicht unterstützt (nutze WSL2). - Der Auto-Allow-Modus überspringt Rückfragen und bleibt dennoch sicher, weil die Grenze OS-durchgesetzt ist. Deny-Regeln, riskantes
rmund inhaltsbezogene Ask-Regeln gelten weiterhin. - Sie ist eine ergänzende Schicht, verschieden von Berechtigungsregeln/-modi — die Sandbox bindet nach der Ausführung, über das Betriebssystem, sodass sie sich nicht rührt.
- Doch sie ist keine vollständige Wand — achte auf nicht inspiziertes TLS, Unix-Sockets und zu breite Freigaben. Der Geltungsbereich ist nur Bash.
Die Sandbox bricht die Grundannahme selbst auf, dass Sicherheit und Automatisierung im Zielkonflikt stehen müssen. Öffne einfach einmal /sandbox — allein das verändert, wie du die Zügel von Claude Code hältst. Für die exakte, aktuelle Konfigurationsreferenz behandle die offizielle Dokumentation zu den Sandbox-Einstellungen als deine primäre Quelle.
FAQ
F. Wie unterscheidet sich die Sandbox von --dangerously-skip-permissions?
A. Umgehen entfernt nur Rückfragen und lässt die Umgebung schutzlos. Die Sandbox zäunt auf OS-Ebene ein, was berührt werden darf, sodass selbst beim Überspringen von Rückfragen nichts nach außen reicht. Umgehen ist nur für isolierte Umgebungen; die Sandbox ist selbst auf deinem Alltagsrechner sicher nutzbar — das ist der entscheidende Unterschied.
F. Kann ich sie unter Windows nutzen?
A. Natives Windows wird nicht unterstützt. Führe Claude Code innerhalb von WSL2 aus, dann funktioniert es (WSL1 nicht). Unter WSL2 können sandboxed Befehle keine Windows-Binaries wie cmd.exe aufrufen; füge sie bei Bedarf zu excludedCommands hinzu, um sie außerhalb der Sandbox auszuführen.
F. Verlangsamt das Aktivieren die Dinge?
A. Laut Anthropic ist der Overhead minimal — einige Dateisystemoperationen können etwas langsamer sein. In der Praxis steigt das gefühlte Arbeitstempo oft, weil die Zahl der Rückfragen stark sinkt.
F. Sind meine privaten Schlüssel mit aktivierter Sandbox garantiert sicher?
A. Nicht „garantiert". Der Standard für Lesezugriffe ist breit, sodass ~/.ssh und ~/.aws/credentials standardmäßig lesbar sind. Blockiere sie explizit mit sandbox.credentials oder denyRead und halte die Netzwerk-Allowlist schmal. Dateisystem- und Netzwerk-Isolation müssen stets als Paar wirken.
F. Werden MCP-Server und Hooks ebenfalls sandboxed?
A. Nein. Die eingebaute Sandbox deckt nur Bash-Befehle und Kindprozesse ab. MCP, Hooks und das eingebaute Read/Edit/Write sind getrennt (geregelt durch Berechtigungsregeln). Um sie alle einzuzäunen, umhülle den gesamten Prozess mit @anthropic-ai/sandbox-runtime.