2026 OpenClaw-Plugins: fail-closed-Standard und verpflichtendes Manifest auf physischem Fern-Mac-7×24-Gateway—openclaw doctor-Audit-Checkliste, ACP-Dispatch-Schalter und Runbook für kontrolliertes Rollback (grep-Snippets + FAQ)
Plattform- und Sicherheitsverantwortliche, die einen physischen Fern-Mac als unbeaufsichtigtes Gateway betreiben, merken schnell: Jedes Plugin ist Lieferkette—ein stiller Allow-List-Bypass kann um drei Uhr morgens nicht deklarierten Netz- oder Dateizugriff ausführen. Dieser Artikel verbindet verpflichtende Manifeste (ohne gültiges Manifest kein Laden) mit fail-closed (Validierungsfehler verweigern Ausführung statt still zu erlauben). Sie erhalten wer welche Haltung braucht, zwei Entscheidungsmatrizen, ein siebenstufiges Rollback-Runbook, kopierbare grep-Abnahme-Snippets und eine FAQ. Für Erstinstallation und 24/7-Basis siehe OpenClaw v2026.4 Installations-Guide auf physischen Knoten; für Metriken und Alarme am selben Host-Typ Prometheus & Grafana auf physischem Fern-Mac 7×24.
Einleitung und Umfang
Auf einem headless Mac im entfernten Rack sind Plugins Teil Ihrer Angriffsfläche. Das gängige Muster 2026: verpflichtende Manifeste (ohne konformes Manifest kein Laden) plus fail-closed (fehlgeschlagene Validierung verweigert Ausführung statt still zu erlauben).
Dieser Leitfaden macht daraus doctor-gestützte Checklistenpunkte und grep, die Sie an ein Change-Ticket hängen können, und behandelt ACP-Dispatch (Agent Client Protocol) als Hauptschalter dafür, wer den Plugin-Scheduler erreichen darf. Kombinieren Sie das mit Snapshots, damit die Rollback-RTO innerhalb Ihres Wartungsfensters bleibt. Umfang schließt keine Anbieter-Modellverträge ein; es wird angenommen, dass launchd den Dienstbenutzer festpinnt und WorkingDirectory gesetzt ist. Parallel dazu lohnt sich auf demselben Host-Typ das OpenClaw-v2026.4.5-Notfall-Runbook zu Anthropic-API-Änderungen und WebSocket-Härtung; für mehregionale 7×24-Standortentscheidungen mit physischen Fern-Macs die APNs-/Push- und CI/CD-Entscheidungsmatrix.
Schmerzpunkte
- Randbedingung: implizite Rechte und «es läuft, also live». Fähigkeiten wie
fs,networkodersubprocess, die im Manifest fehlen, werden im fail-open-Modus oft still erlaubt—Audits können dann nicht belegen, was erlaubt war. - Versteckte Kosten: doctor-grün ≠ Policy live.
openclaw doctorprüft Laufzeit und Ports, während Hot Reload neue Manifest-Durchsetzungsflags nie übernommen hat—extern sehen Sie weiter Legacy-Verhalten. - Stabilität und Audit: Rollback ohne gepaarte Snapshots ist Fiktion. Aggressives fail-closed bricht legitime Automation über Nacht; ohne Konfig- und Plugin-Bündel-Snapshots editieren Sie JSON im Pager-Dienst und verletzen 7×24-SLOs.
Entscheidungsmatrizen: fail-closed × Manifest
Die erste Tabelle beantwortet «wie streng?»; die zweite ordnet Änderungssignale den Prüfschritten zu.
| Umgebung | Manifest | fail-closed | ACP-Dispatch |
|---|---|---|---|
| Produktions-7×24-Gateway | Verpflichtend | Ein | Nur allow-listete clientId / Workspace |
| Staging-Integration | Verpflichtend | Ein (Shadow pro Plugin erlaubt) | Team-Tenant mit vollem JSONL lockern |
| Entwickler-Laptop | Verpflichtend empfohlen (Prod spiegeln) | Optional aus für schnelle Iteration | Lokal all-open oder an Loopback gebunden |
| Änderungssignal | Empfohlene Aktion | Zusätzliche Abnahme |
|---|---|---|
| Neues Plugin oder Major-Upgrade | Canary-Knoten + Dual-Manifest-Diff | doctor + grep auf deklarierte Schema-Version |
| Mehr externe ACP-/Agent-Clients | Dispatch-Allow-List und Rate-Limits verschärfen | Plugin-Spans per requestId nachverfolgen |
| Fehlerspitze mit «denied» in Logs | Zuerst Shadow-Zähler, dann Rollback entscheiden | Fünf-Minuten-Fenster vor/nach Rollback diffen |
openclaw doctor-Audit-Checkliste
Behandeln Sie doctor als Nachweis, dass die Policy wirklich geladen wurde—haken Sie jeden Punkt auf dem Change-Ticket ab (Schlüssel auf openclaw.json oder Umgebungsvariablen gemäß Ihrer Distribution).
- Laufzeit und PATH: Entspricht dem launchd-Benutzer;
which openclawentspricht dem Binary-Pfad aus der Plist. - Manifest-Auflösung: Gibt effektive Plugin-Roots aus; lehnt Verzeichnisse ohne Manifest ab, wenn Durchsetzung aktiv ist.
- fail-closed-Flags: Doctor gibt Booleans und Herkunftsdatei aus; WARN ist ein Release-Blocker.
- ACP-Dispatch: Schalterzustand plus Kardinalität der Allow-List; leere Allow-List bei aktivem Dispatch sollte warnen «keine Clients können eintreten».
- Externe Gesundheit: Paaren Sie localhost-
curlmit/ready(falls vorhanden), damit nicht «Selbstcheck grün, Reverse-Proxy rot» entsteht.
ACP-Dispatch-Schalter
ACP-Dispatch bedeutet hier, ob Anfragen von Agent-Clients (IDEs, CLIs, externe Orchestrierung) den Plugin-Scheduler erreichen dürfen. Bei fail-closed die Reihenfolge: Plugin-Set zuerst per Manifest validieren, dann Dispatch nutzen, um die Haustür zu sichern—ein kompromittierter Client soll nicht direkt in einen Hochrisiko-Hook springen.
Illustratives JSON (Schlüssel vor Produktion an Ihr Release-Schema anpassen):
{
"plugins": {
"requireManifest": true,
"failClosed": true,
"manifestSchemaVersion": "2026-05"
},
"acp": {
"dispatchEnabled": true,
"allowedClientIds": ["ci-runner-prod", "vscode-workspace-ops"],
"denyByDefault": true
}
}
Richten Sie allowedClientIds an interne OAuth- oder mTLS-Subjects aus und protokollieren Sie das kartesische Produkt clientId × pluginId in JSONL für Forensik.
grep-Abnahme-Snippets
Aus Archiv oder Live-Workspace ausführen (Pfade anpassen):
# Explizite fail-closed / requireManifest-Flags
grep -RniE 'failClosed|fail_closed|requireManifest|require_manifest' \
~/.config/openclaw ./openclaw.json 2>/dev/null
# Jedes Plugin-Verzeichnis sollte ein Manifest tragen (fehlend = sollte nicht laden)
find "$OPENCLAW_PLUGIN_ROOT" -maxdepth 2 -type f \( -name 'manifest.json' -o -name 'plugin.yaml' \) | wc -l
# ACP-Dispatch-Allow-List in Produktion nicht leer lassen
grep -Rni 'dispatchEnabled|allowedClientIds|denyByDefault' ~/.config/openclaw ./openclaw.json 2>/dev/null
Liefert der erste grep nichts, fahren Sie vermutlich noch implizites fail-open—Produktion nicht allein aus Muskelgedächtnis freigeben.
Siebenstufiges Runbook für kontrolliertes Rollback
- Einfrieren: Wartung posten; Cron-Jobs pausieren, die die Aufrufoberfläche vergrößern.
- Snapshot:
openclaw.json, Plugin-Bäume, launchd-Plists und doctor-Stdout archivieren (tar). - Verpflichtende Manifeste an: Neu laden, per grep verifizieren, Zähler «Load verweigert» beobachten.
- fail-closed an: Einheitliche Fehlercodes für nicht deklarierte Fähigkeiten; JSONL-Baseline über fünf Minuten halten.
- ACP-Dispatch verschärfen: Zuerst Shadow (nur Log), dann deny-by-default.
- Rollback-Trigger: Bei SLO-Bruch gepaarte Snapshots wiederherstellen,
launchctl kickstart, doctor erneut. - RCA: grep-Checkliste und Ticket aktualisieren; nächsten Canary terminieren.
Zitierfähige Kennzahlen
- Beobachtungsfenster: Mindestens ein gleitendes Fenster von fünf Minuten nach Policy-Änderungen abwarten, bevor Bleiben/Rollback entschieden wird—Start-Spitzen sind kein Incident.
- Snapshot-Retention: In Produktion drei wiederherstellbare Konfig-Revisionen mit je einer Plugin-Tarball-Prüfsumme vorhalten.
- Audit-Retention: Vollständigen doctor-Output plus grep-Captures ≥30 Tage mit dem Ticket speichern—typische interne Compliance-Stichproben.
FAQ
Manifest listet Fähigkeiten—warum «undeclared»?
Vergleichen Sie den aufgelösten Pfad, den doctor ausgibt, mit der bearbeiteten Datei; auf Schema-Version und Feld-Casing achten. Bei Bedarf dasselbe Bündel auf Staging mit vollen Load-Logs erneut fahren.
Nach Abschalten des Dispatch: rufen alte Sessions weiter Plugins auf?
Abhängig von Warteschlangen und Implementierung: neu laden, nicht quittierte Arbeit verwerfen wenn das SLO es erlaubt, dann read-only-Smoke auf kritischen Pfaden.
Kann fail-closed mit Shadow-Modus koexistieren?
Ja—Shadow erhöht «hätte verweigert»-Zähler ohne HTTP-Status zu ändern; nach flachen Metriken auf hartes Deny promoten.
Englische Fassung: OpenClaw plugins fail-closed & manifest (English).
Fazit: Warum Mac mini zu diesem Workload passt
Plugin-Governance verschiebt Vertrauen von Stammtischwissen auf maschinell prüfbare Policy: Manifeste binden Fähigkeiten, fail-closed definiert das Versagensverhalten, ACP-Dispatch verkleinert die Ingress-Fläche, doctor plus grep liefern die Beweiskette, die Auditoren erwarten.
Unter macOS fügt sich das sauber zu launchd, Unified Logging, Gatekeeper und SIP. Apple-Silicon-Mac mini M4 idelt in der Größenordnung 4 W—ideal für Dauer-Gateways und Nebenproben; gegenüber generischen Mini-PCs im gleichen Preisband fallen lange Sessions oft ruhiger aus, wenn OpenClaw, Health-Exporter und ein leichter CI-Agent einen physischen Rechner teilen.
Wenn Sie dieses Runbook auf einem dedizierten gehosteten Knoten statt eigenem Colo-Metal fahren wollen, bleibt der Mac mini M4 2026 einer der preiswertesten Einstiege—physischen Fern-Mac anfragen und Manifest-Durchsetzung plus Rollback zur wiederholbaren Routine machen.
Dedizierter Fern-Mac für OpenClaw-Plugin-Governance?
Mac-mini-Cloud-Knoten für 7×24-Gateways, Manifest-Härtung und auditierbare Rollbacks.