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 inauth-profiles.jsonbij 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:
- voer
claude setup-tokenuit - plak de token in OpenClaw
- 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):
- genereer PKCE verifier/challenge + willekeurige
state - open
https://auth.openai.com/oauth/authorize?... - probeer de callback te onderscheppen op
http://127.0.0.1:1455/auth/callback - als de callback niet kan binden (of je werkt remote/headless), plak de redirect-URL/code
- uitwisselen bij
https://auth.openai.com/oauth/token - extraheer
accountIduit 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
expiresin 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(toontauth[])
Gerelateerde documentatie:
- /concepts/model-failover (rotatie + cooldown-regels)
- /tools/slash-commands (opdrachtinterface)