Naar hoofdinhoud gaan

OAuth

OpenClaw ondersteunt “subscription auth” via OAuth voor providers die dit aanbieden (met name OpenAI Codex (ChatGPT OAuth)). Voor Anthropic-abonnementen gebruik je de setup-token-stroom. Deze pagina legt uit:
  • hoe de OAuth tokenuitwisseling werkt (PKCE)
  • waar tokens worden opgeslagen (en waarom)
  • hoe je meerdere accounts afhandelt (profielen + per-sessie overrides)
OpenClaw ondersteunt ook provider plugins die hun eigen OAuth- of API‑sleutel- stromen meeleveren. Start ze via:
openclaw models auth login --provider <id>

De token sink (waarom die bestaat)

OAuth-providers geven vaak een nieuwe refresh token uit tijdens login-/refreshstromen. Sommige providers (of OAuth-clients) kunnen oudere refresh tokens ongeldig maken wanneer er een nieuwe wordt uitgegeven voor dezelfde gebruiker/app. Praktisch symptoom:
  • je logt in via OpenClaw en via Claude Code / Codex CLI → één van beide raakt later willekeurig “uitgelogd”
Om dit te verminderen behandelt OpenClaw auth-profiles.json als een token sink:
  • de runtime leest referenties uit één plek
  • we kunnen meerdere profielen behouden en ze deterministisch routeren

Opslag (waar tokens leven)

Secrets worden per agent opgeslagen:
  • Auth-profielen (OAuth + API-sleutels): ~/.openclaw/agents/<agentId>/agent/auth-profiles.json
  • Runtimecache (automatisch beheerd; niet bewerken): ~/.openclaw/agents/<agentId>/agent/auth.json
Legacy import-only bestand (nog steeds ondersteund, maar niet de hoofdopslag):
  • ~/.openclaw/credentials/oauth.json (geïmporteerd in auth-profiles.json bij eerste gebruik)
Al het bovenstaande respecteert ook $OPENCLAW_STATE_DIR (override van de state-dir). Volledige referentie: /gateway/configuration

Anthropic setup-token (abonnementsauthenticatie)

Voer claude setup-token uit op een willekeurige machine en plak het daarna in OpenClaw:
openclaw models auth setup-token --provider anthropic
Als je de token elders hebt gegenereerd, plak deze dan handmatig:
openclaw models auth paste-token --provider anthropic
Verifiëren:
openclaw models status

OAuth-uitwisseling (hoe inloggen werkt)

De interactieve loginstromen van OpenClaw zijn geïmplementeerd in @mariozechner/pi-ai en gekoppeld aan de wizards/opdrachten.

Anthropic (Claude Pro/Max) setup-token

Stroom vorm:
  1. voer claude setup-token uit
  2. plak de token in OpenClaw
  3. opslaan als een token-authprofiel (geen refresh)
Het wizardpad is openclaw onboard → auth-keuze setup-token (Anthropic).

OpenAI Codex (ChatGPT OAuth)

Vorm van de stroom (PKCE):
  1. genereer PKCE verifier/challenge + willekeurige state
  2. open https://auth.openai.com/oauth/authorize?...
  3. probeer de callback te onderscheppen op http://127.0.0.1:1455/auth/callback
  4. als de callback niet kan binden (of je werkt remote/headless), plak de redirect-URL/code
  5. uitwisselen bij https://auth.openai.com/oauth/token
  6. extraheer accountId uit de access token en sla { access, refresh, expires, accountId } op
Het wizardpad is openclaw onboard → auth-keuze openai-codex.

Refresh + vervaldatum

Profielen slaan een expires-tijdstempel op. Tijdens runtime:
  • als expires in de toekomst ligt → gebruik de opgeslagen access token
  • als deze is verlopen → refresh (onder een file lock) en overschrijf de opgeslagen referenties
De refresh-stroom is automatisch; je hoeft tokens doorgaans niet handmatig te beheren.

Meerdere accounts (profielen) + routering

Twee patronen:

1. Voorkeur: gescheiden agents

Als je wilt dat “persoonlijk” en “werk” nooit met elkaar interacteren, gebruik geïsoleerde agents (gescheiden sessies + referenties + werkruimte):
openclaw agents add work
openclaw agents add personal
Configureer vervolgens auth per agent (wizard) en routeer chats naar de juiste agent.

2. Geavanceerd: meerdere profielen in één agent

auth-profiles.json ondersteunt meerdere profiel-ID’s voor dezelfde provider. Kies welk profiel wordt gebruikt:
  • globaal via config-volgorde (auth.order)
  • per sessie via /model ...@<profileId>
Voorbeeld (sessie-override):
  • /model Opus@anthropic:work
Zo zie je welke profiel-ID’s bestaan:
  • openclaw channels list --json (toont auth[])
Gerelateerde documentatie: