OPENCLAW MACOS
STALE_
LAUNCHAGENT_
TOKEN.

macOS launchd und OpenClaw Gateway Token

Im Release-Zug 2026.4.x taucht immer wieder dasselbe Szenario auf: Operations rotieren das Gateway-Token über Doctor oder Control-Plane, exportieren den neuen Wert in der Shell, vielleicht sogar in Docker Compose — und dennoch antworten Telegram, Enterprise-IM, Browser-UI und Integrationsclients geschlossen mit 401 unauthorized. Lokal kann openclaw gateway status kurz grün wirken, weil der Pfad kürzer ist als der einer echten Kanalnachricht. In Wahrheit startet macOS LaunchAgent den Prozess mit einem in der plist unter EnvironmentVariables eingefrorenen OPENCLAW_GATEWAY_TOKEN. Ohne --force kann openclaw gateway install melden, der Agent sei „bereits installiert“, und die plist unverändert lassen. Dieser Artikel strukturiert Symptommatrix, Drei-Quellen-Abgleich (plist / Shell / Vault), sicheres bootout–edit–bootstrap, erzwungenes Reinstall, Remote-SSH-Checks und harte Gates. Ergänzend: Upgrade breaking & Auth v2, Docker/WS-Token, Migration & launchd, silent Gateway, systemd/launchd-Baseline.

1. Warum globale 401er mit „lebendigem“ Prozess koexistieren

Transport kann gesund sein, Credentials aber nicht: ein Gateway kann lauschen und dennoch jeden Authorization-Header mit dem alten Secret ablehnen. Kanalplugins melden sofort; minimale Healthchecks oft nicht. launchd erbt plist-Umgebung, nicht Ihre letzte zsh-Session. Wenn das Control-Plane das alte Token widerruft, kollabieren alle brokerabhängigen Pfade synchron. Das Installationswerkzeug ist idempotent — das ist korrekt — aber doppeldeutig, wenn Ihre Absicht Secret-Refresh ist; dann brauchen Sie Überschreib-Semantik (--force laut CLI-Hilfe).

2. Symptom-Evidenz-Matrix

SichtbarHypotheseBeleg
Alle Kanäle gleichzeitig 401Gateway nutzt widerrufenes TokenZeitstempel mit Rotations-Ticket; HTTP-Body
nur launchd-Instanz tot, Foreground okveralteter plist-Wertplutil -p ~/Library/LaunchAgents/*openclaw*.plist
install „erfolgreich“, kein Fixkeine plist-Änderungmtime/Hash vorher–nachher
nur Remote-Macfalscher Benutzer oder launchd-Domainlaunchctl print gui/$(id -u)

3. Wie LaunchAgents den Fehler verstärken

Die plist ist deklarative Infrastruktur: einmal serialisiertes OPENCLAW_GATEWAY_TOKEN überlebt Reboots unverändert, bis Sie bootout, Datei ändern und neu laden. Behandeln Sie Rotation wie ein Mini-Release: Geheimnis im Vault → alle Materialisationen (plist, compose) → Gateway neu starten → geschäftlichen Smoke-Test (echte Nachricht), nicht nur localhost-curl.

4. Sieben Schritte

Step 01 — Einfrieren

CLI-Versionen, LaunchAgent-Label, Rotationszeitpunkt dokumentieren; parallele unkoordinierte Restarts vermeiden.

Step 02 — plist finden

Typisch ~/Library/LaunchAgents/; bei dediziertem Benutzer dessen $HOME.

ls ~/Library/LaunchAgents/*openclaw* 2>/dev/null launchctl list | grep -i openclaw

Step 03 — drei Quellen

plist, interaktive Shell (forensisch), Vault-Fingerprint — keine Klartext-Secrets in Chat.

Step 04 — bootout, editieren, bootstrap

Domäne/Label laut Dokumentation, dann neu laden.

Step 05 — CLI mit force

openclaw gateway install --force falls Hilfe es vorsieht; Akzeptanzkriterium: geänderte plist-Metadaten.

Step 06 — Schichtprüfung

Logs healthy → echter Kanal-Roundtrip → UI. Zweite plist oder Docker-Duplikat suchen.

Step 07 — Hygiene

alte Tokens im Vault widerrufen; Backups verschlüsseln; Keychain oder 0600-Dateien bevorzugen.

5. Remote-Mac: zehn SSH-Punkte

Gleicher Unix-Benutzer, $HOME, launchctl print, ProgramArguments-Pfad, alte Workspace-Pfade nach Migration, Firewall, Aqua-Anmeldung, Log-Verzeichnisrechte, Docker-Vorrang gegenüber launchd (Docker-Leitfaden), redigierte Logs im Ticket.

Harte Gates

A: Innerhalb von 10 Minuten nach Rotation muss die plist mtime springen oder ein Force-Install dokumentiert sein. B: mindestens eine nicht-synthetische Transaktion mit Erfolg. C: superseded Token im Vault als revoked.

6. Missverständnisse

Nur .env ändern, während launchd der Owner ist, reicht nicht. Grüner Installer-Text ohne plist-Änderung ist kein Alignment. Ein localhost-curl beweist nicht Telegram-Webhooks.

7. Grenze zu Upgrade und Migration

Breaking-Releases verschieben oft Device Identity und Attestation. Doctor ohne plist-Refresh erzeugt „halb grün“. Konvergieren Sie mit Migration-Runbook auf eine einzige Secret-Pipeline.

8. Incident-Zeitleiste (erste 30 Minuten)

T+0–2: zweite Installation verbieten, Label und Build-Hash pinnen. T+3–8: 401-Antwortkörper und Gateway-Auth-Zeile korrelieren; nur Clients schreien → anderer Proxy/Port. T+9–15: plist, optional Compose, Vault parallel — zwei Wahrheiten = Drift, nicht Control-Plane-Ausfall. T+16–25: bootout → Patch oder Force → bootstrap; genau eine Rollenreihenfolge pro Vorfall. T+26–30: ohne Gates A–C kein „grün“. Headless-Rack-Macs haben keine Schulter zum Antippen — schriftliche Schritte bestimmen MTTR.

9. Doppel-Gateways, Ports, Reverse-Proxy

Vordergrund-Debugging und launchd besetzen verschiedene Loopbacks; TLS-Zertifikate sind neu, aber proxy_pass zeigt noch auf die alte Kiste; Docker fügt eine dritte Env-Schicht hinzu — alles sieht nach „Token stimmt, 401 bleibt“ aus. Build-/Commit-Health auf Loopback und öffentlichem Hostnamen messen; Hash muss übereinstimmen. Entweder einen Supervisor wählen (nur launchd oder nur Compose) oder Dual-Write in jedem RFC erzwingen.

10. Dreieck plist ↔ launchctl ↔ Prozess

SchichtGesundKaputt
Dateimtime springt, plutil okXML-Fehler, Rechte drift
launchctlProgrammpfad passt zu whichverwaister nvm-Pfad
Prozess envFingerprint = Vaultfehlender Key trotz Start
Logs401-Wellen = Authnur CPU — jsonl/bootstrap zuerst

systemd-Umgebungsdateien 1:1 zu übernehmen ist riskant; LaunchAgents serialisieren Literale. Ohne dieses Dreieck verirren sich Remote-Teams.

11. FAQ

F: plist geändert, weiter 401. A: Pfad aus launchctl print gegen Cloud-Duplikate prüfen. F: Zuerst revoken? A: gefährlich — Reihenfolge im Runbook fixieren. F: Doctor grün, Kanal tot. A: echte Nachricht schließen den Vorfall. F: Multi-User-Mini? A: getrennte Unix-Konten, getrennte LaunchAgents.

12. Fazit

Universelle 401er nach Token-Arbeit auf macOS sind fast immer Konfigurationsdrift, nicht mystische TLS-Bugs. Für dauerhaftes Apple-Silicon-Hosting: MACGPU-Preise, Telegram (Stichwort MACGPU). Maßgeblich ist stets die offizielle CLI-Hilfe Ihrer Version.