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)
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”
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
~/.openclaw/credentials/oauth.json(geïmporteerd inauth-profiles.jsonbij eerste gebruik)
$OPENCLAW_STATE_DIR (override van de state-dir). Volledige referentie: /gateway/configuration
Anthropic setup-token (abonnementsauthenticatie)
Voerclaude setup-token uit op een willekeurige machine en plak het daarna in OpenClaw:
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)
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
openclaw onboard → auth-keuze openai-codex.
Refresh + vervaldatum
Profielen slaan eenexpires-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
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):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>
/model Opus@anthropic:work
openclaw channels list --json(toontauth[])
- /concepts/model-failover (rotatie + cooldown-regels)
- /tools/slash-commands (opdrachtinterface)