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 (statische api_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 in auth-profiles.json importiert)

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:

  1. claude setup-token ausfuehren
  2. Token in OpenClaw einfuegen
  3. 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):

  1. PKCE-Verifier/Challenge + zufaelligen state generieren
  2. https://auth.openai.com/oauth/authorize?... oeffnen
  3. versuchen, den Callback auf http://127.0.0.1:1455/auth/callback abzufangen
  4. wenn der Callback-Port nicht gebunden werden kann (oder du remote/headless bist), die Redirect-URL/den Code manuell einfuegen
  5. Austausch unter https://auth.openai.com/oauth/token
  6. accountId aus 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 expires in 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 (zeigt auth[])

Verwandte Docs: