KI / Automatisierung 11. Mai 2026

2026-05-11 OpenClaw-Workspace-Wurzeln, Repository-Erlaubnislisten & Monorepo-Leitplanken auf einem headless gemieteten Apple-Silicon-Cloud-Mac (HK / JP / KR / SG / US)

MacXCode Engineering Team 11. Mai 2026 ~20 Min. Lesezeit

Headless-Gateways wirken unsichtbar, bis ein Tool das Repo verlässt, das Sie bearbeiten wollten. Auf gemieteten Mac mini M4-Hosts in Hongkong, Tokio, Seoul, Singapur und den USA teilt sich oft dieselbe UID OpenClaw, xcodebuild-Lanes und langlebiges Signaturmaterial — „Workspace“ ist also eine Sicherheitseigenschaft, kein Gefühl. Dieses 2026-05-11-Playbook verbindet Pfadrichtlinien für Dateitransfer, launchd-Umgebung & Geheimnis-Hygiene, Session-Checkpoint-Disziplin und Parallel-Lane-Isolation zu expliziten erlaubten Wurzeln, aufgelösten Symlinks und Operator-Drills, die fail-closed reagieren, wenn Assistenten ~/Library oder benachbarte CI-Bäume anfassen.

Warum Workspace-Leitplanken den Schadensradius auf geteilten Lease-Hosts bestimmen

Falsch gesetzte Wurzeln machen harmlose Lesezugriffe zu „Keychain-nah“-Überraschungen: Das Modell folgt einem relativen Pfad, die Shell expandiert ~ unter launchd anders, oder ein alter Symlink springt von einem „erlaubten“ Teilbaum in den Checkout eines anderen Mandanten. Produktions-Gateways veröffentlichen daher positive Listen von Dateisystemwurzeln — verlassen Sie sich nie allein auf „Modell-Alltagswissen“. Verknüpfen Sie diese Listen mit Automatisierungs-Tickets, damit jede Infra-Config-Merge sowohl OpenClaw-Richtlinien als auch benachbarte CI-Wrapper prüft.

Fail-closed-Standard: Wenn ein Pfad nicht auf einen gelisteten realpath normalisiert werden kann, vor nativen Tools ablehnen — Ablehnung mit Korrelations-IDs der strukturierten Logging-Pipeline protokollieren.

Anatomie: OPENCLAW_STATE_DIR, CI-Checkouts und DerivedData-Nachbarschaft

Behandeln Sie persistenten Assistant-Zustand als Datenebenen-Speicher: nicht mit flüchtigen /tmp-Klonen und nicht mit Xcode-DerivedData-Bäumen kollokieren, die Reiniger mitten im Job löschen. Dokumentieren Sie drei Ringe — state (Checkpoint + Richtlinien), workspace (von Ihnen autorisierte git-Wurzeln), scratch (Wegwerf-Exporte) — und stellen Sie sicher, dass Cron die Grenzen respektiert. Teilen sich CI und Assistenten eine UID, folgen Sie der Trennung aus Parallel-Lane-Artikeln, damit keine Waisen-Locks entstehen.

  • State-Ring — versionskontrollierte Snippets für Erlaubnislisten + versiegeltes JSON falls nötig.
  • Workspace-Ring — eine oder mehrere absolute Wurzeln pro Repo/Service-Linie.
  • Scratch-Ring — TTL-Verzeichnisse unter job-spezifischen TMP-Präfixen.

Erlaubnislisten mit Dateitransfer- und Shell-Tool-Richtlinien

Die Transfer-Plugin-Defaults vom 2026-05-07 tendieren zur Ablehnung; Workspace-Wurzeln sollten das spiegeln, damit fetch/Verzeichnislisten nicht zu Eltern klettern, die nur durch Symlink-Hops existieren. Kodieren Sie Wurzeln pro Umgebung (staging vs. prod) und halten Sie beide in Git — Promotion per PR statt Ad-hoc-SSH. Bei Microservices im Monorepo: Namensraum-Wurzeln pro Paket, um querlesende „Erkundungen“ zu verhindern.

Audit-Tipp: Monatliche readlink -f-Sweeps auf jeder konfigurierten Wurzel; APFS-Firmlinks und VPN-Mounts können Pfade umleiten, ohne den Config-Text auf der Platte zu ändern.

Monorepo-Sonderfälle: SwiftPM-Verschachtelung, Xcode-Workspaces und git-Submodule

Große Monorepos locken mit mehreren Package.swift-Manifesten und hybriden Xcode-Projekten. Separate Wurzeln pinnen, wenn Teams über Eigentumsgrenzen uneins sind — z. B. /build/mobile/ios vs. /platform/android — und seitliche Sprünge ohne zweiten Listeneintrag verbieten. Submodule erben nur nach Security-Review die Eltern-Autorisierung; sonst verschachtelte .git-Verzeichnisse als engere explizite Wurzeln behandeln.

# Symlinks vor Freigabe neuer Wurzeln auflösen /usr/bin/python3 - <<'PY' import os roots = ["/var/ci/job123/acme"] for r in roots: print(os.path.realpath(r)) PY

Wo CI neben interaktiven Assistenten klont

Ephemeres CI klont oft in gehashte Ordner unter /var/tmp oder auf eigene Volumes; per SSH gestartete Assistenten defaulten auf ~/workspace. Konventionen angleichen: ASSISTANT_WORKSPACE_ROOT regional exportieren und Orchestratoren nur unter autorisierten Präfixen mounten lassen. Routen Self-Hosted-GitHub-Actions-Labels auf denselben Mac wie OpenClaw, erzwingen Sie getrennte Pfade, damit PR-Cleanup nicht gleichzeitig Assistant-Scratch löscht.

launchd: Wurzeln an nicht-interaktive Gateways exportieren

Interaktive Shells laden Profile-Snippets; Daemons nicht. Spiegeln Sie Erlaubnislisten in plist-EnvironmentVariables oder referenzierten env-Dateien mit Checksummen-Prüfung. Gateways nach Updates per kontrolliertem launchctl kickstart neu laden und stdout gemäß Health-Probe-Leitfaden erfassen — HTTP-Readiness und Dateisystem-Sonden auf verbotene Pfade prüfen.

Entscheidungsmatrix: Pfadabsicht vs. Durchsetzungsschicht

Szenario Risiko Bevorzugte Abschwächung
Assistant liest Repo und folgt ../ Flucht zu Geheimnissen benachbarter Services Positive Präfixprüfungen + ..-Segmente nach Normalisierung ablehnen
Symlink zu Schreibtisch/Dokumente TCC-Erwartungen unterscheiden headless vs. GUI Symlink-Ziel auflösen; mit macOS-Datenschutzdokumenten abgleichen
Geteilte UID CI + Assistant Lösch-Races auf überlappenden Bäumen Getrennte TMPDIR-Namensräume pro Orchestrierungs-ID
Notfall-Hotfix-Branch Temporäre Erweiterung ohne Rollback-Plan Zeitbox-Erlaubnis-Tickets + automatisches Ablaufen

Achtstufiges Rollout für Workspace-Governance

  1. Alle Pfade der letzten 30 Tage per Audit-Log inventarisieren.
  2. Minimale Erlaubnislisten kodieren; Erweiterungen mit VPEng + Sec-Review.
  3. Richtlinien in Git mergen; Checksumme ans Automatisierungs-Bundle hängen.
  4. plist/env regional ausrollen mit Health-Curls.
  5. Skriptierte Deny-Tests inklusive Symlink-Fluchten.
  6. On-Call schulen, Erlaubnislisten-PRs schnell zurückzunehmen.
  7. Reinigungs-Skripte an Scratch-TTL-Verträge binden.
  8. Vierteljährlich Retrospektiv-Metriken zu abgelehnten vs. erlaubten Operationen veröffentlichen.

SLO-Signale für Workspace-Governance

Signal Schwelle Aktion
Nicht genehmigte Pfadversuche > 3 pro Woche und Gateway Config-Änderungen einfrieren; Incident-Spuren replayen
Listendrift vs. Git Jede nicht ausgerollte manuelle Änderung Host rollback; nur-PR-Workflow erzwingen
Symlink-Audit-Fehler > 0 kritische Befunde Release blockieren; gelöste Wurzelkarte neu aufbauen

FAQ

Frage Praktische Antwort (2026-05-11)
Sollen Wurzeln /Users/ci komplett enthalten? Nein — pro Pipeline oder Mandant partitionieren; Komplettwurzeln neutralisieren Listen.
Dürfen Assistenten außerhalb des Workspace für Cache schreiben? Nur in deklarierten Scratch-Präfixen mit Quotas und automatischer Eviction.

Warum Mac-mini-M4-Mieten die Dateisystem-Governance vereinfachen

Schnelles NVMe und vorhersagbarer Unified Memory erlauben Symlink-Audits, Dreifach-Klone und parallele Gateway-Healthchecks ohne Swap-Druck — wichtig bei Incident-Iterationen von Listen. Regionale Kapazität über Preise planen; unsichere Engineers vor Wurzel-Erweiterung zu SSH/VNC-Hilfe leiten.

Builder mieten, auf denen Workspace-Richtlinien durchsetzbar sind

HK / JP / KR / SG / US · SSH / optional VNC