OAuth
OpenClaw unterstuetzt “Subscription Auth” per OAuth fuer Anbieter, die das anbieten (insbesondere OpenAI Codex (ChatGPT OAuth)). Fuer Anthropic-Abonnements nutzt du den Setup-Token-Flow. Anthropic hat in der Vergangenheit bei manchen Nutzern die Abo-Nutzung ausserhalb von Claude Code eingeschraenkt — entscheide selbst, ob du dieses Risiko eingehen willst, und pruefe die aktuellen Anthropic-Richtlinien. OpenAI Codex OAuth ist ausdruecklich fuer externe Tools wie OpenClaw freigegeben. Auf dieser Seite erfaehrst du:
Fuer Anthropic im Produktivbetrieb ist API-Key-Auth der sicherere und empfohlene Weg gegenueber Subscription-Setup-Token-Auth.
- wie der OAuth-Token-Austausch funktioniert (PKCE)
- wo Tokens gespeichert werden (und warum)
- wie du mehrere Konten verwaltest (Profile + sitzungsspezifische Overrides)
OpenClaw unterstuetzt ausserdem Provider-Plugins, die eigene OAuth- oder API-Key-Flows mitbringen. Starte sie mit:
openclaw models auth login --provider <id>
Der Token-Sink (wozu er da ist)
OAuth-Anbieter erzeugen bei Login-/Refresh-Flows haeufig einen neuen Refresh-Token. Manche Anbieter (oder OAuth-Clients) koennen aeltere Refresh-Tokens entwerten, sobald ein neuer fuer denselben Nutzer/dieselbe App ausgestellt wird.
Praktisches Symptom:
- du loggst dich ueber OpenClaw und ueber Claude Code / Codex CLI ein — und eins von beiden wird spaeter zufaellig “abgemeldet”
Um das zu vermeiden, behandelt OpenClaw auth-profiles.json als Token-Sink:
- die Runtime liest Credentials aus einer einzigen Stelle
- mehrere Profile lassen sich deterministisch routen
Speicherung (wo Tokens liegen)
Secrets werden pro Agent gespeichert:
- Auth-Profile (OAuth + API-Keys + optionale Wert-Referenzen):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Legacy-Kompatibilitaetsdatei:
~/.openclaw/agents/<agentId>/agent/auth.json(statischeapi_key-Eintraege werden beim Entdecken bereinigt)
Legacy-Import-Datei (wird noch unterstuetzt, ist aber nicht der Haupt-Speicherort):
~/.openclaw/credentials/oauth.json(wird bei der ersten Nutzung inauth-profiles.jsonimportiert)
All das respektiert auch $OPENCLAW_STATE_DIR (State-Dir-Override). Vollstaendige Referenz: /gateway/configuration
Fuer statische Secret-Referenzen und das Aktivierungsverhalten von Runtime-Snapshots siehe Secrets Management.
Anthropic Setup-Token (Subscription Auth)
Warnung: Anthropic-Setup-Token-Unterstuetzung ist technische Kompatibilitaet, keine Richtlinien-Garantie. Anthropic hat in der Vergangenheit Abo-Nutzung ausserhalb von Claude Code bei manchen Nutzern blockiert. Entscheide selbst, ob du Subscription Auth nutzen willst, und pruefe die aktuellen Anthropic-Bedingungen.
Fuehre claude setup-token auf einem beliebigen Rechner aus und fuege den Token in OpenClaw ein:
openclaw models auth setup-token --provider anthropic
Falls du den Token woanders generiert hast, fuege ihn manuell ein:
openclaw models auth paste-token --provider anthropic
Ueberpruefen:
openclaw models status
OAuth-Austausch (wie der Login funktioniert)
Die interaktiven Login-Flows von OpenClaw sind in @mariozechner/pi-ai implementiert und in die Wizards/Befehle eingebunden.
Anthropic Setup-Token
Flow-Ablauf:
claude setup-tokenausfuehren- Token in OpenClaw einfuegen
- als Token-Auth-Profil speichern (kein Refresh)
Der Wizard-Pfad ist openclaw onboard — Auth-Wahl setup-token (Anthropic).
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth ist ausdruecklich fuer die Nutzung ausserhalb der Codex CLI freigegeben, einschliesslich OpenClaw-Workflows.
Flow-Ablauf (PKCE):
- PKCE-Verifier/Challenge + zufaelligen
stategenerieren https://auth.openai.com/oauth/authorize?...oeffnen- versuchen, den Callback auf
http://127.0.0.1:1455/auth/callbackabzufangen - wenn der Callback-Port nicht gebunden werden kann (oder du remote/headless bist), die Redirect-URL/den Code manuell einfuegen
- Austausch unter
https://auth.openai.com/oauth/token accountIdaus dem Access-Token extrahieren und{ access, refresh, expires, accountId }speichern
Wizard-Pfad: openclaw onboard — Auth-Wahl openai-codex.
Refresh + Ablauf
Profile speichern einen expires-Zeitstempel.
Zur Laufzeit:
- falls
expiresin der Zukunft liegt — gespeicherten Access-Token verwenden - falls abgelaufen — Refresh (unter File-Lock) und gespeicherte Credentials ueberschreiben
Der Refresh-Flow laeuft automatisch; du musst Tokens in der Regel nicht manuell verwalten.
Mehrere Konten (Profile) + Routing
Zwei Muster:
1) Empfohlen: separate Agents
Wenn “privat” und “Arbeit” sich nie beruehren sollen, nutze isolierte Agents (getrennte Sessions + Credentials + Workspace):
openclaw agents add work
openclaw agents add personal
Konfiguriere dann Auth pro Agent (per Wizard) und leite Chats an den richtigen Agent weiter.
2) Fortgeschritten: mehrere Profile in einem Agent
auth-profiles.json unterstuetzt mehrere Profil-IDs fuer denselben Anbieter.
Waehle das aktive Profil:
- global ueber die Config-Reihenfolge (
auth.order) - pro Sitzung ueber
/model ...@<profileId>
Beispiel (Sitzungs-Override):
/model Opus@anthropic:work
So siehst du, welche Profil-IDs existieren:
openclaw channels list --json(zeigtauth[])
Verwandte Docs:
- /concepts/model-failover (Rotation + Cooldown-Regeln)
- /tools/slash-commands (Befehlsoberflaeche)