KI / Automatisierung 11. Mai 2026

2026: OpenClaw-Gateway-Tokens unter launchd auf gemieteten ProxyMac Mac mini—SSH zeigt Auth, der Daemon wiederholt aber token_missing_config

ProxyMac Engineering-Team 11. Mai 2026 ca. 13 Min. Lesezeit

Teams, die OpenClaw auf Apple-Silicon-Mac-mini-Hosts in Hongkong, Japan, Korea, Singapur oder den USA betreiben, fügen oft ein Bearer-Token in die Konsole ein, sehen openclaw gateway status grün, booten neu—und launchd startet den Gateway neu mit Logs, die token_missing_config oder „Auth konfiguriert, Token fehlt“ melden. Das Problem ist selten Kryptografie; es sind drei Welten, die über den Ort der Credentials uneins sind: Ihre interaktive Shell, der JSON-Baum unter ~/.openclaw/ und der für launchd bereinigte Umgebungsblock. Dieser Beitrag liefert (1) ein klares Modell für diese Drift, (2) eine vierzeilige Paritätsmatrix, (3) Dateisystemprüfungen vor dem Pager, (4) gehärtete Plist-Muster, (5) ein neunstufiges Betriebs-Runbook plus Links zu launchd vs. SSH, Keychain-Secrets, Gateway-Wiederherstellung und JSONL-Diagnostik.

  • Symptomstapel: Exit-Code-78-ähnliche Neustarts alle 45–90 Sekunden, während manuelle CLI-Tests noch bestehen.
  • Versteckte Falle: Gateway läuft als Benutzer runner, JSON liegt unter /Users/admin/—klassischer Multi-Account-Drift.
  • Telemetrie-Anker: JSONL-Zeilen mit auth mit launchctl print gui/$(id -u) nach Label-Änderungen korrelieren.

Warum der Gateway Tokens „vergisst“, nachdem Sie sie exportiert haben

OpenClaw löst Gateway-Auth zuerst aus Konfigurationsdateien, dann optional aus Umgebungsüberschreibungen. Eine SSH-Session lädt ~/.zprofile, erbt Exporte aus dem Onboarding und liest Dateien der interaktiven UID. Ein LaunchAgent startet aus launchd, erbt nur explizite EnvironmentVariables und ein gestutztes PATH, und löst ~ relativ zum Dienstkonto auf—auch wenn Sie JSON als anderer Administrator bearbeitet haben. Bis diese Fakten übereinstimmen, loop der Daemon unabhängig von der Cloud-Region.

Faustregel: Wenn sudo -u svcaccount printenv OPENCLAW_GATEWAY_TOKEN leer ist, Ihr Terminal aber einen Wert zeigt, haben Sie eine Umgebungsinkonsistenz bewiesen—kein schlechtes Token.

Drei-Wege-Matrix: interaktive Shell, JSON auf der Festplatte, LaunchAgent-Umgebung

Quelle Liest ~/.openclaw/openclaw.json Sieht Shell-Exports Empfohlen für unbeaufsichtigten Gateway
SSH-Login-Shell Ja—UID muss zum Dienstbenutzer passen Ja—nach Dotfiles Nur Debugging
ssh host command Nicht-Login Eventuell—abhängig vom Shell-Modus Oft nein Kanarien-Tests
LaunchAgent-plist Ja—Home vom Konto, das den Job ausführt Nur plist-Schlüssel Produktions-Baseline
Wrapper-Skript aus plist Ja—wenn das Skript Privilegien korrekt setzt Was das Skript vor exec exportiert Erweiterte Secret-Injektion

JSON-Ort, Eigentümerschaft und POSIX-Rechte prüfen, bevor Sie APIs beschuldigen

Führen Sie ls -le ~/.openclaw/openclaw.json als dieselbe UID aus, die Ihr LaunchAgent kodiert. Erwarten Sie 600 und Eigentum dieser UID—nie root, außer Sie betreiben absichtlich einen System-Daemon (auf Mandanten-Minis selten). Wenn mehrere Ingenieure per sudo tee anfassten, können ACL-Fragmente den Gateway-Benutzer verweigern, während Admins interaktiv noch lesen. Kombinieren Sie mit launchctl print gui/$UID (Domain je nach Bedarf gui vs. user), um zu bestätigen, welches Plist-Label OpenClaw überwacht.

Wenn Sie Konfigurationswurzeln wegen Speicherdruck verschoben haben—siehe Disk-Rotation—prüfen Sie, dass relative Pfade in JSON noch vom Arbeitsverzeichnis des Daemons aufgelöst werden.

Plist-Muster: EnvironmentVariables vs. Wrapper-exec

Für kurze Nicht-Geheimnis-Flags wie OPENCLAW_LOG_LEVEL=debug direkt in EnvironmentVariables. Für Bearer-Tokens lieber Dateireferenzen oder kleine Wrapper, die Secrets per Keychain nach Secrets-Leitfaden laden, statt mehrkilobyte Strings in XML. Wrapper unter /usr/local/libexec/openclaw/ oder abgeschottetem ~/svc/bin mit vierteljährlicher Eigentümerprüfung.

Vorsicht bei Rotation: Nach Token-Wechsel genau einmal launchctl kickstart -k gui/$(id -u)/your.label—schnelles Mehrfachfeuern überlagert Job-Transaktionen und verwischt JSONL-Zeitachsen aus der strukturierten Protokollierung.

Neunstufiges Runbook für HK / JP / KR / SG / US Minis

  1. CI-Hooks einfrieren, die den Gateway automatisch neu starten, bis Menschen einen sauberen Boot-Zyklus haben.
  2. UID/GID festhalten aus id in der LaunchAgent-Session (launchctl print user/$(id -u)).
  3. Configs diffen: diff ~/.openclaw/openclaw.json vs. Backup aus Git laut Konfigversionsführung.
  4. JSON-Syntax: python3 -m json.tool oder jq . für hängende Kommas nach Notfall-Edits.
  5. Umgebung vergleichen: env | sort per SSH vs. EnvironmentVariables-Stanza aus launchctl print.
  6. PATH ausrichten: openclaw via absolute ProgramArguments gemäß PATH-Leitfaden.
  7. Sauber neu starten: Recovery-Reihenfolge—kickstart, kein chaotisches bootout.
  8. JSONL tailen: vor Wiedereröffnen des Inbounds authenticated=true-Äquivalente bestätigen.
  9. Dokumentieren: maskierte Auszüge ins Ticket plus Plist-Checksum.

FAQ

Sollen Mandanten ein Token über Regionen teilen? Bevorzugen Sie getrennte Credentials pro Region, wenn das Dashboard es erlaubt—kleinerer Blast-Radius bei Mini-Rotation.

Zerschiebt Migration auf eine neue Mini Tokens? Dateien wandern; ausstellerseitige Sessions können weiter gelten—planen Sie explizite Rotation bei Host-Identitätswechsel.

Wo passen eingehende Webhooks hin? Nach stabiler Auth Automatisierung mit HTTP-Gateway-Mustern verdrahten, damit Retries keine halbfertigen Setups verstärken.

Warum deterministische Homes ProxyMac-Mandanten helfen

Gemietete Mac-mini-M4-Kapazität in HK / JP / KR / SG / US liefert langlebige Pfade für Konfigurationsbäume, vorhersagbare UIDs für Automatisierungskonten und Apple-Silicon-Effizienz für Dauer-Gateways—ohne Hardware pro Region zu kaufen. Regionen auf der Preisseite vergleichen, Betrieb über den Hilfebereich üben und GUI-abhängige Freigaben per VNC erledigen, wenn Keychain-Dialoge nicht headless laufen.

Tokens einmal binden—Wochen lang Gateways stabil

OpenClaw · launchd · HK / JP / KR / SG / US