Eine Toolaufruf-Sandbox ist ein Vertrag: welche Binärdateien laufen dürfen, welche Verzeichnisse sich ändern dürfen und wie lange ein entlaufener Subprozess lebt, bevor er zum Vorfall wird. Übernehmen Sie die Wegwerf-VM-Logik aus E2B-ähnlichen Clouds — auch auf einem Remote Mac — oder Ihr LLM Agent erbt stillschweigend die Keychain Ihres interaktiven Nutzers.

Dieser Leitfaden richtet sich an Ingenieure, die Gateways, Runner und Frameworks verdrahten. Ergänzend zu LangGraph-Checkpoints, Kontingenten und Timeouts und dem IDE-Bridge-Sandbox-Playbook mit Diff- und Health-Pfaden verbinden wir hier sandbox-exec-Denkweise mit messbarer Abnahme; für Retry-Semantik am Gateway siehe JSON-Schema-Tool-Retries und Timeout-Sicherungen. Kontext zur Plattform: Startseite, Preise und der Tech-Blogohne Login lesbar.

Inhalt: Entscheidungsmatrix · Bedrohungsmodell · Konfigurationsfragmente · CI-Gates · Abnahmeliste · Fehlmodus-FAQ · Richtlinien

Vergleichsmatrix: Cloud-Sandbox vs. lokaler Remote-Mac

Dimension E2B-ähnliche Cloud-Sandbox Lokale bzw. Remote-Mac-Strategie
Isolation Frische VM oder Mikro-VM pro Aufgabe; Kernel-Grenze; schnelles Vernichten. Eigener macOS-Benutzer, dediziertes APFS-Dataset, keine gemeinsame Login-Sitzung mit Menschen.
Rechtefläche IAM plus Hypervisor; kurzlebige Geheimnisse pro Job. ACLs, SIP-sensible Pfade, TCC durch headless Dienstdesign vermeiden; Runner ohne Entwickler-Apple-ID.
Pfadstabilität Ephemeres /workspace; reproduzierbare Image-Schichten. Explizites AGENT_ROOT, TMPDIR, Cache-Umleitung; keine stillen Schreibzugriffe unter ~/Library für Automation.
Timeout-Modell VM-Wanduhr plus cgroup-ähnliche Limits wo verfügbar. Asyncio- oder Subprozess-Deckel, ulimit -t falls sinnvoll, HTTP-Deadlines, Graph-Fuse.
Beobachtbarkeit Serielle Konsole, Cloud-Agent, Snapshot vor Destroy. Strukturierte JSON-Zeilen, git diff --stat-Spuren, gedrosselte launchd-Healthchecks zum Loopback-Gateway.
Standardwahl Öffentlich nicht vertrauenswürdiger Codegen. Apple-Frameworks, Metal, MLX, Xcode-Nahtstellen, On-Prem-Vorgaben.

Bedrohungsmodell — Kurztabelle (Einzeiler je Zeile)

Jede Zeile soll mindestens einen automatisierten Test oder eine Alarmregel tragen.

Akteur / Vektor Asset Fehlmodus Primärkontrolle
Modell-vorgeschlagene Shell Home, SSH-Schlüssel Rekursives Löschen oder Archiv-Exfiltration Allowlist für argv0, cwd-Sperre, Repo nur read-only
Unverdächtiges Tool, bösartige Eingabe Nachbar-Projekte Pfadtraversierung in Geschwister-Repos Präfix-Zwang, realpath-Prüfungen
Install-Hooks von Abhängigkeiten Netz-Egress Supply-Chain-Telefonie nach außen Egress-Proxy Deny-by-Default, Offline-Spiegel in CI
Hängender Subprozess Worker-Pool Queue-Stall, GPU-Sperre SIGTERM-Frist dann SIGKILL, Lease-TTL auf Session-ID
Prompt-Injection über Tool-Output Folge-LLM-Aufrufe Rekursiver Tool-Fächer Byte-Obergrenzen, Schema-Validierung, max Tool-Tiefe

Lokale Sandbox: Konfigurationsfragmente

Apples historisches sandbox-exec- bzw. Seatbelt-Profil-Vokabular bleibt nützlich als Denkschablone für Verbotslisten. Auf aktuellen macOS-Versionen sollten Teams sandbox-exec als Dokumentation von Constraints behandeln, die der Runner neu implementiert: eigener Benutzer, festes Arbeitsverzeichnis, bereinigte Umgebung, explizite Dateideskriptoren — statt stillschweigend vorauszusetzen, dass jedes Flottenmitglied dieselbe CLI mitliefert.

# Sitzungsstart — semantik eines "Wegwerf-Roots" lokal nachbilden export SESSION_ID="${SESSION_ID:-$(uuidgen | tr '[:upper:]' '[:lower:]')}" export AGENT_ROOT="$HOME/llm-agent-sand/$SESSION_ID" mkdir -p "$AGENT_ROOT"/{workspace,tmp,cache,logs} chmod 700 "$AGENT_ROOT" cd "$AGENT_ROOT/workspace" || exit 1 export TMPDIR="$AGENT_ROOT/tmp" export XDG_CACHE_HOME="$AGENT_ROOT/cache" ulimit -t 180 2>/dev/null || true

Ergänzen Sie ein versioniertes Tool-Manifest: absolute Pfade zu Binärdateien, maximale Argumentlänge, verbotene Umgebungsvariablen und die Regel, dass $HOME des Agentenbenutzers nur den Sandbox-Präfix umfasst. Gateway-Pfade spiegeln die read-only-Repo- plus beschreibbare-Scratch-Trennung aus dem verlinkten IDE-Bridge-Artikel.

Anbindung an CI-Gates

Sandboxes scheitern, wenn nur Menschen sich an Knöpfe erinnern. Heben Sie dieselben Verträge in CI:

  • Registry-Diff — Build bricht, wenn ein neuer Toolname ohne JSON Schema, Owner und Standard-Timeout erscheint.
  • Dry-Run-Harness — jeder Toolpfad läuft gegen synthetischen Workspace auf einem Mac-Runner; Schreibpfade müssen unter AGENT_ROOT bleiben.
  • Budgettabelle — exportierte Maximal-Wandzeiten pro Toolklasse; CI scheitert, wenn Summen die Nacht-SLA übersteigen.
  • Secret-Scanner — Commits mit Loopback-Gateway-Token oder .p12-Blobs in Agent-Templates blockieren.

Merge-Queues werden zur Mini-Cloud: jede Änderung belegt Pfad- und Timeout-Invarianten, bevor Templates die Flotte erreichen.

Timeout- und Pfad-Abnahmeliste (objektiv prüfbar)

Erst ausliefern, wenn jedes Kriterium wahr ist — in Tickets oder SOC-Reviews einfügen.

  • SESSION_ID präfixiert jeden Schreibpfad; Löschen der Sitzung entfernt Workspace, tmp und cache.
  • TMPDIR und XDG_CACHE_HOME liegen unter AGENT_ROOT; kein Fallback auf gemeinsames /tmp.
  • Jedes Tool hat Wand-Timeout pro Aufruf plus Prozessgruppen-Kill bei Ablauf.
  • Graph oder Workflow besitzt einen globalen Fuse unterhalb der Infrastruktur-Idle-Abschaltung.
  • Quell-Repos read-only oder per ACL; git push nur nach zweitem menschlichem Schritt.
  • Egress standardmäßig verweigert; Host- und Port-Allowlist pro Toolprofil.
  • Logs redigieren Token; Fehler liefern strukturiertes JSON ans Modell, keine Roh-stderr-Wände.
  • Soak auf dediziertem Remote Mac: doppelte erwartete Parallelität eine Stunde ohne Zombie-PIDs.

Fehlmodus-FAQ

Warum lecken Allowlist-Tools dennoch Daten? Namenslisten ersetzen keine Pfad- und Umgebungsdisziplin. Kombinieren Sie argv-Prüfung, cwd-Sperren, bereinigtes TMPDIR und Ausgabe-Byte-Deckel.

Wann ist Cloud zwingend sicherer? Wenn Code vollständig fremd ist und keine Apple-APIs nötig sind — VM zerstören; Mac-Runner für signierte Pipelines reservieren.

Was bricht zuerst unter Last? Selten das Modell — verwaiste Shells, volle Scratch-Disks, Checkpoint-Verzeichnisse im Konflikt mit Tool-Caches. Inodes und Bytes gemeinsam überwachen.

Wie formulieren Sie Timeouts für das LLM? TOOL_TIMEOUT nur mit Retry-Hinweis bei Idempotenz; sonst terminalen Policy-Code liefern, damit der Agent nicht endlos schleift.

Ausführbare Richtlinien (ins README kopieren)

  1. Kein Tool läuft als interaktiver Entwicklerbenutzer; Automation nutzt dedizierten Account ohne Login-Objekte.
  2. Jeder Remote-Aufruf trägt SESSION_ID, AGENT_ROOT und einen herunterzählenden maximalen Tool-Tiefenzähler.
  3. Timeouts existieren in drei Schichten: HTTP-Client, Subprozess, Graph — dokumentiert in derselben Datei wie die Tool-Registry.
  4. CI muss Pfad-Einschluss und Timeout-Verhalten auf macOS belegen, bevor Agent-Templates in Produktionszweige wandern.

Weiterlesen: Tech-Blog-Übersicht · Kaufen / Mieten · Hilfezentrum