Fundamentals
OAuth
OpenClaw ondersteunt "subscription auth" via OAuth voor providers die dit aanbieden (met name OpenAI Codex (ChatGPT OAuth)). Voor Anthropic is de praktische verdeling nu:
- Anthropic API-sleutel: normale Anthropic API-facturering
- Anthropic Claude CLI / subscription auth binnen OpenClaw: Anthropic-medewerkers hebben ons verteld dat dit gebruik weer is toegestaan
OpenAI Codex OAuth wordt expliciet ondersteund voor gebruik in externe tools zoals OpenClaw. Deze pagina legt uit:
Voor Anthropic in productie is authenticatie met een API-sleutel het veiliger aanbevolen pad.
- hoe de OAuth-tokenuitwisseling werkt (PKCE)
- waar tokens worden opgeslagen (en waarom)
- hoe je meerdere accounts afhandelt (profielen + overschrijvingen per sessie)
OpenClaw ondersteunt ook provider-Plugins die hun eigen OAuth- of API-sleutelstromen meeleveren. Voer ze uit via:
openclaw models auth login --provider <id>
De token-sink (waarom die bestaat)
OAuth-providers maken tijdens login-/verversingsstromen vaak een nieuwe refresh-token aan. 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 → een van beide wordt later willekeurig "uitgelogd"
Om dat te beperken behandelt OpenClaw auth-profiles.json als een token-sink:
- de runtime leest referenties vanaf één plek
- we kunnen meerdere profielen bewaren en ze deterministisch routeren
- hergebruik van externe CLI's is providerspecifiek: Codex CLI kan een leeg
openai-codex:default-profiel initialiseren, maar zodra OpenClaw een lokaal OAuth-profiel heeft, is de lokale refresh-token leidend; andere integraties kunnen extern beheerd blijven en hun CLI-authenticatieopslag opnieuw uitlezen - status- en opstartpaden die de geconfigureerde providerset al kennen, beperken externe CLI-detectie tot die set, zodat een niet-gerelateerde CLI-loginopslag niet wordt onderzocht voor een setup met één provider
Opslag (waar tokens staan)
Geheimen worden opgeslagen in authenticatieopslag van agents:
- Authenticatieprofielen (OAuth + API-sleutels + optionele refs op waardeniveau):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Compatibiliteitsbestand voor legacy:
~/.openclaw/agents/<agentId>/agent/auth.json(statischeapi_key-vermeldingen worden opgeschoond wanneer ze worden ontdekt)
Legacy-bestand alleen voor import (nog ondersteund, maar niet de hoofdopslag):
~/.openclaw/credentials/oauth.json(bij eerste gebruik geïmporteerd inauth-profiles.json)
Al het bovenstaande respecteert ook $OPENCLAW_STATE_DIR (overschrijving van state-dir). Volledige referentie: /gateway/configuration
Zie Geheimenbeheer voor statische geheimrefs en het activatiegedrag van runtime-snapshots.
Wanneer een secundaire agent geen lokaal authenticatieprofiel heeft, gebruikt OpenClaw read-through
overerving vanuit de standaard-/hoofdopslag van de agent. Het kloont de
auth-profiles.json van de hoofdagent niet bij het lezen. OAuth-refresh-tokens zijn bijzonder
gevoelig: normale kopieerstromen slaan ze standaard over omdat sommige providers refresh-tokens na gebruik roteren
of ongeldig maken. Configureer een aparte OAuth-login voor een agent
wanneer die een onafhankelijk account nodig heeft.
Compatibiliteit met Anthropic legacy-tokens
OpenClaw biedt ook Anthropic setup-token aan als een ondersteund pad voor token-authenticatie, maar geeft nu de voorkeur aan hergebruik van Claude CLI en claude -p wanneer beschikbaar.
Migratie van Anthropic Claude CLI
OpenClaw ondersteunt hergebruik van Anthropic Claude CLI weer. Als je al een lokale Claude-login op de host hebt, kan onboarding/configuratie die direct hergebruiken.
OAuth-uitwisseling (hoe login werkt)
De interactieve login-stromen van OpenClaw zijn geïmplementeerd in @mariozechner/pi-ai en gekoppeld aan de wizards/opdrachten.
Anthropic setup-token
Stroomvorm:
- start Anthropic setup-token of paste-token vanuit OpenClaw
- OpenClaw slaat de resulterende Anthropic-referentie op in een authenticatieprofiel
- modelselectie blijft op
anthropic/... - bestaande Anthropic-authenticatieprofielen blijven beschikbaar voor rollback-/volgordebeheer
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth wordt expliciet ondersteund voor gebruik buiten de Codex CLI, inclusief OpenClaw-workflows.
Stroomvorm (PKCE):
- genereer PKCE-verifier/challenge + willekeurige
state - open
https://auth.openai.com/oauth/authorize?... - probeer de callback op te vangen op
http://127.0.0.1:1455/auth/callback - als de callback niet kan binden (of je op afstand/headless werkt), plak dan de redirect-URL/code
- wissel uit op
https://auth.openai.com/oauth/token - extraheer
accountIduit de access-token en sla{ access, refresh, expires, accountId }op
Het wizardpad is openclaw onboard → authenticatiekeuze openai-codex.
Verversen + verlopen
Profielen slaan een expires-tijdstempel op.
Tijdens runtime:
- als
expiresin de toekomst ligt → gebruik de opgeslagen access-token - als die verlopen is → ververs (onder een bestandslock) en overschrijf de opgeslagen referenties
- als een secundaire agent een overgeërfd OAuth-profiel van de hoofdagent leest, schrijft verversen terug naar de opslag van de hoofdagent in plaats van de refresh-token naar de opslag van de secundaire agent te kopiëren
- uitzondering: sommige externe CLI-referenties blijven extern beheerd; OpenClaw
leest die CLI-authenticatieopslag opnieuw uit in plaats van gekopieerde refresh-tokens te gebruiken.
Codex CLI-bootstrap is bewust smaller: het seedt een leeg
openai-codex:default-profiel, waarna door OpenClaw beheerde verversingen het lokale profiel leidend houden.
De verversingsstroom is automatisch; je hoeft tokens doorgaans niet handmatig te beheren.
Meerdere accounts (profielen) + routering
Twee patronen:
1) Aanbevolen: aparte agents
Als je wilt dat "persoonlijk" en "werk" nooit met elkaar interacteren, gebruik dan geïsoleerde agents (aparte sessies + referenties + workspace):
openclaw agents add work
openclaw agents add personal
Configureer daarna authenticatie 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 configuratievolgorde (
auth.order) - per sessie via
/model ...@<profileId>
Voorbeeld (sessie-overschrijving):
/model Opus@anthropic:work
Zo zie je welke profiel-ID's bestaan:
openclaw channels list --json(toontauth[])
Gerelateerde documentatie:
- Model-failover (rotatie- + cooldownregels)
- Slash-opdrachten (opdrachtoppervlak)
Gerelateerd
- Authenticatie - overzicht van authenticatie voor modelproviders
- Geheimen - opslag van referenties en SecretRef
- Configuratiereferentie - configuratiesleutels voor authenticatie