Warum KI-Agenten eine eigene Sandbox brauchen
SSH-Zugang für Menschen ist planbar: Sie wissen, wer welche Ressourcen braucht. Für KI-Agenten gilt das nicht.
Frameworks wie LangGraph, AutoGen oder Cursor Background Agent erben bei Tool-Aufrufen die vollen OS-Rechte des aktuellen Nutzers.
Ein Agent, der „alle TODO-Kommentare als Markdown-Tabelle“ extrahieren soll, braucht zum Lesen nur /workspace und eine Ausgabedatei –
tatsächlich kann er aber auch auf ~/Library/Keychains zugreifen, SSH-Privatkeys lesen oder per curl Daten nach außen senden.
Der Agent tut das nicht absichtlich, doch Shell-Tools oder Plugins im Framework können solche Aufrufe auslösen – oft, während Sie nicht am Bildschirm sind.
Apple M4 macht das wichtiger, nicht weniger: Die 38 TOPS Neural Engine senkt Inferenzkosten deutlich – Agenten auf dem Mac laufen häufiger, und das Risikofenster wächst proportional. OpenClaw vermeidet Docker (verliert Xcode-Toolchain) und VM-Rebuilds pro Aufgabe (zu teuer): echtes macOS, Policy Engine blockiert Syscalls, Policy als normales YAML versioniert mit dem Code.
Hardware: Mac mini M4 · 10-Core CPU · 16 GB Unified Memory · 256 GB NVMe SSD · 1 Gbps exklusive Bandbreite (VPSRox Singapur).
System: macOS 15 Sequoia. OpenClaw CLI 0.9.x, Policy-Format v2.
Demo: öffentliches GitHub-Repo klonen → rg für TODO → Markdown-Report, nur /workspace, kein Egress.
Alles per SSH, kein VNC nötig.
Voraussetzungen: vier Punkte vor dem Start
Ihr lokales System spielt keine Rolle – Windows, Linux oder macOS reichen, wenn SSH verfügbar ist. Diese vier Punkte müssen vor dem Start erfüllt sein, sonst hängt der Ablauf mittendrin.
M4-Instanz
Credentials & Port
instance-token
(Vorlage in Abschnitt 4)
M4-Instanz: noch nicht aktiv? Bestellseite – Knoten und Laufzeit wählen, nach 1–5 Min. bereit, SSH-Daten unter „Zugang“ in der Konsole. Fünf Knoten (Singapur, Tokio, Seoul, Hongkong, US Ost) mit gleicher Hardware und Preis – nach Netzlatenz wählen.
instance-token: beim ersten Aktivieren unter „Sicherheit & Sandbox“ erzeugt, nur einmal sichtbar – sofort ins Team-Secret-Store (1Password, Bitwarden usw.). Nach Verlassen der Seite nicht mehr abrufbar; Rotation nur auf derselben Seite (alter Token sofort ungültig).
OpenClaw in der Konsole aktivieren
OpenClaw ist nicht standardmäßig aktiv – pro Instanz steuerbar, um unnötigen Audit-Overhead zu vermeiden. Der Pfad in der Konsole ist kurz; Status „Aktiviert“ auf dem Bildschirm bestätigen, bevor Sie weitermachen.
-
01
Instanz-Detailseite öffnen
VPSRox-Konsole öffnen, Instanzname für Details anklicken. Unter „Sicherheit & Sandbox“ den OpenClaw-Schalter finden.
-
02
instance-token aktivieren und speichern
Schalter aktivieren; Dialog zeigt
instance-token(oct-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx). Token vor Schließen ins Secret-Store kopieren, speichern, dann „Gespeichert, weiter“. -
03
Status „Aktiviert“ bestätigen
Nach Schließen des Dialogs grünes Badge „Aktiviert“ im OpenClaw-Bereich. Bleibt nach 30 Sek. „Wird aktiviert“, Seite neu laden. Einziger Schritt, der im Browser nötig ist.
CLI-Installation und drei Health-Checks
Per SSH einloggen, OpenClaw CLI in einer Zeile installieren. Skript erkennt macOS-Version und CPU-Architektur; auf M4 dauert die Installation meist unter 30 Sekunden.
curl -fsSL https://api.vpsrox.com/openclaw/install.sh | bash
openclaw auth login --token <instance-token>
openclaw status
openclaw status liefert drei Komponenten – alle müssen healthy sein:
| Komponente | Aufgabe | Erwarteter Status |
|---|---|---|
| Policy Engine | YAML-Policies parsen, Entscheidungen vor Syscalls | healthy |
| Sandbox Runtime | Sandbox-Lebenszyklus, Prozessisolierung und Dateimapping | healthy |
| Audit Bus | Entscheidungsereignisse asynchron ins persistente Log, ohne Hauptpfad zu blockieren | healthy |
Dreimal grün ist nötig, nicht hinreichend – Policy Engine healthy heißt nur Prozess OK,
nicht korrektes YAML. Validierung folgt im nächsten Schritt.
degraded oder unavailable: openclaw doctor – oft wartet Kernel-Erweiterung auf Freigabe
(Systemeinstellungen → Datenschutz & Sicherheit per VNC, nicht per SSH).
Minimal-Privilegien-YAML: Felder erklärt
Die Policy-Datei legt fest, was der Agent in der Sandbox darf. Prinzip streng zuerst:
Erstes YAML nur mit minimal nötigen Pfaden, deny-Logs beobachten, dann schrittweise lockern –
nicht breit starten und später einschränken.
Unten eine Read-only-Vorlage für „Repo klonen → statischer Scan → Report“;
speichern unter ~/policies/quickstart-readonly.yaml.
apiVersion: openclaw.vpsrox.com/v2
kind: SandboxPolicy
metadata:
name: quickstart-readonly
spec:
filesystem:
allow:
- path: /workspace
access: [read, write] # Agent writes scan report here
deny:
- path: "**/Keychains/**" # block signing certificates
- path: "**/.ssh/**" # block private keys
- path: "**/Library/Cookies/**" # block browser session data
process:
allow: [git, rg, python3, zsh, bash]
network:
egress: deny-all # no outbound in quickstart mode
Designentscheidungen: filesystem.deny vor allow – auch bei RW auf /workspace
blockiert die deny-Liste. process.allow = Prozess-Whitelist – fehlt node oder npm, folgt E_POLICY_DENY: process.
network.egress: deny-all blockiert auch DNS – beabsichtigt für die Demo,
damit ein deny-Eintrag zeigt, dass die Engine aktiv ist.
Nach dem Schreiben des YAML validieren, Syntaxfehler vor Sandbox-Erstellung finden:
openclaw policy validate -f ~/policies/quickstart-readonly.yaml
Erwartet: policy valid (0 warnings). Bei Pfadkonflikt oder Tippfehler zeigt validate die Zeilennummer.
Erste Agent-Aufgabe: Sandbox erstellen und ausführen
Vor LangGraph oder eigenem Framework empfehlen wir ein deterministisches Shell-Skript für den vollen Ablauf. Vorteil: vorhersehbares Verhalten, klare Trennung von „Policy-Entscheidung“ und „Agent-Logik“ – bei Fehlern wissen Sie, ob Policy oder Agent-Code angepasst werden muss.
-
01
Sandbox erstellen
openclaw sandbox create --name quickstart --policy ~/policies/quickstart-readonly.yaml
Erfolg: Sandbox-ID und Statusready. Idempotent – gleicher Name erneut ausführen meldet „existiert bereits“. -
02
Zweites Terminal: Audit-Log live verfolgen
openclaw audit tail --sandbox quickstart --follow
Fenster offen lassen – Agent-Ausführung und Audit parallel beobachten. Entscheidungen erscheinen meist 50–200 ms nach der Agent-Aktion. -
03
Agent-Einstiegsskript im ersten Terminal
Beispielskript nach
/workspace/agent-entry.sh(auf Host anlegen, Sandbox mappt automatisch), dann in der Sandbox:
openclaw sandbox exec quickstart -- /bin/zsh /workspace/agent-entry.sh -
04
Sandbox nach Aufgabe stoppen
openclaw sandbox stop quickstart
Workspace-Daten bleiben auf dem Host unter/workspace, beim nächstensandbox createautomatisch gemountet. Vollständig löschen:--rm.
#!/bin/zsh
set -euo pipefail
cd /workspace
# Attempt network — will be denied by policy (intentional demo)
git clone --depth 1 https://github.com/apple/swift-sample-code.git repo 2>/dev/null || echo "clone blocked (expected)"
rg -rn "TODO|FIXME" . --glob '*.swift' > scan-report.txt 2>/dev/null || true
echo "Scan complete: $(wc -l < scan-report.txt | tr -d ' ') matches" > summary.txt
cat summary.txt
Mit network.egress: deny-all wird git clone blockiert, Skript gibt "clone blocked (expected)" –
gewollt, damit ein decision: deny-network-Event im Audit-Log erscheint.
Erreicht das Skript rg, sind /workspace-Rechte korrekt.
Auf M4 Singapur: volles Skript (inkl. blockiertem clone) ~2,3 Sek., Policy-Overhead < 80 ms.
Audit-Logs lesen: Bedeutung jeder Zeile
Audit-Logs sind der zentrale Unterschied von OpenClaw. Kein nachträglicher Bericht, sondern Echtzeit-Stream synchron zur Policy-Entscheidung – während der Aufgabe oder später exportierbar. Jeder Eintrag hat feste Felder; deren Bedeutung ist nötig, um Probleme im Log zu erkennen.
Format einer typischen allow-Zeile (Dateilesezugriff):
ts=2026-07-24T08:03:12.481Z
sandbox=quickstart
pid=8231
syscall=open
resource=filesystem
path=/workspace/agent-entry.sh
access=read
decision=allow
policy_rule=filesystem.allow[0]
latency_us=34
latency_us = Mikrosekunden für die Policy-Entscheidung; policy_rule verweist auf die YAML-Regel,
damit Sie schnell sehen, welche allow- oder deny-Regel greift.
Format einer deny-Zeile (Netzwerk blockiert):
ts=2026-07-24T08:03:12.512Z
sandbox=quickstart
pid=8233
syscall=connect
resource=network
dst=140.82.113.4:443
decision=deny
policy_rule=network.egress.deny-all
latency_us=19
Entspricht blockiertem git clone im Agent-Skript.
dst=140.82.113.4:443 ist GitHub – präzise Whitelist in der Policy:
network.egress auf allow-list und github.com:443,
validate, dann openclaw sandbox update --name quickstart --policy ... – Sandbox bleibt.
Häufige Log-Abfragen:
Alle deny-Einträge der letzten Stunde: openclaw audit query --decision deny --since 1h.
Nach Pfad filtern: openclaw audit query --resource filesystem --path "/workspace/**".
JSON-Export (SIEM/Skripte): openclaw audit export --sandbox quickstart --since 24h --format json > audit.json.
Sechs häufige Fehler und Diagnose
Beim Einstieg trifft fast jeder mindestens einen dieser Fehler. Tabelle nach Häufigkeit sortiert, mit Ursache und kürzestem Fix – ohne die vollständige Doku.
| Fehlersymptom | Ursache | Schnellste Lösung |
|---|---|---|
auth login meldet ungültigen Token |
Leerzeichen beim Kopieren oder Token bereits rotiert | Token erneut unter Konsole „Sicherheit & Sandbox“ kopieren; mit pbpaste prüfen |
openclaw status zeigt unavailable |
Kernel-Erweiterung wartet auf Freigabe (Erstinstallation) | Per VNC anmelden → Systemeinstellungen → Datenschutz & Sicherheit → OpenClaw-Erweiterung freigeben → CLI neu starten |
policy validate meldet unknown field |
YAML-Feld falsch geschrieben oder v1-Feldnamen verwendet | apiVersion prüfen: openclaw.vpsrox.com/v2; Vorlage in Abschnitt 5 |
E_POLICY_DENY: filesystem |
Agent griff auf Pfad außerhalb der YAML-allow-Liste zu | openclaw audit query --decision deny --since 1h, Zielpfad finden, in filesystem.allow ergänzen |
E_POLICY_DENY: process |
Agent startete ausführbare Datei außerhalb von process.allow |
Audit-Log nach resource=process-deny durchsuchen, Prozess zur Whitelist hinzufügen |
git clone in Sandbox timeout ohne deny-Log |
DNS blockiert, connect erreicht deny nicht – Timeout |
Mit --verbose git-Ausgabe prüfen; 8.8.8.8:53 zur Netzwerk-Allow-Liste oder Domain-Whitelist |
instance-token = hochprivilegierte Instanz-Anmeldedaten – nicht in Kommentare, .env oder Git.
In Produktion mit mehreren Nutzern: pro Person Zero-Trust-Gerätezertifikat und Mindestrolle (viewer / operator / admin),
nicht denselben instance-token teilen.
Vom schnellen Test zum stabilen Agent-Workflow
Read-only-Sandbox in fünf Minuten ist der Start – Produktion ist komplexer:
Agent ruft xcodebuild (mehr Prozesse und Temp-Verzeichnisse), npm oder PyPI (feine Egress-Whitelist),
CI pro Pull Request Sandbox erstellen/zerstören (REST API oder GitHub Actions). Gemeinsamer Weg:
Policy über deny-Einträge im Audit-Log iterieren, nicht mit lockerer Policy raten.
Rechenleistung: Mac mini M4 · 16 GB Unified Memory stabil mit 2 parallelen xcodebuild-Sandboxen inkl. DerivedData-Cache,
plus ~4 GB für OpenClaw-Audit und Systemdienste. Bei wachsender Last:
VPSRox Thunderbolt-5-Cluster verbindet mehrere Mac mini mit 80 Gbps – Policies pro Instanz,
Audit-Logs pro Instanz isoliert.
Ohne dedizierten Cloud-Mac haben Alternativen klare Grenzen. Lokale Maschine 7×24 für Hintergrund-Agenten stört die Entwicklung, Kühlung unter Dauerlast; öffentliche macOS-VMs (z. B. GitHub Actions) teilen Ressourcen, ohne native OpenClaw-Integration, Warteschlangen in Spitzenzeiten; eigenes Mac mini im Büro: Abschreibung, Wartung, feste öffentliche IP.
VPSRox exklusiver Mac mini M4 (10-Core CPU · 16 GB Unified Memory · 256 GB NVMe · 38 TOPS Neural Engine), OpenClaw standardmäßig, fünf Knoten (Singapur, Tokio, Seoul, Hongkong, US Ost) mit eigener IPv4 und 1 Gbps exklusive Bandbreite, Lieferung 1–5 Min., ab $21.8/Tag. Experimente täglich, nach Validierung monatlich $109.1 – ohne Vertrag, Laufzeit jederzeit anpassbar.
Ein dedizierter Cloud-Mac mit OpenClaw für AI Agent
VPSRox Mac mini M4 exklusiv, OpenClaw vorinstalliert: Policy Engine + Sandbox-Runtime + Audit-Bus, sofort einsatzbereit. 16 GB Unified Memory und 38 TOPS Neural Engine für Agent-Inferenz und macOS-Toolchain parallel; fünf globale Knoten mit eigener IPv4, Tagesmiete ohne Vertrag.