OAuth¶
Sinusuportahan ng OpenClaw ang “subscription auth” sa pamamagitan ng OAuth para sa mga provider na nag-aalok nito (lalo na ang OpenAI Codex (ChatGPT OAuth)). Para sa mga subscription ng Anthropic, gamitin ang setup-token na daloy. Ipinapaliwanag ng pahinang ito ang:
- kung paano gumagana ang OAuth token exchange (PKCE)
- kung saan iniimbak ang mga token (at kung bakit)
- kung paano pangasiwaan ang maraming account (mga profile + per-session na override)
Sinusuportahan din ng OpenClaw ang provider plugins na may sariling OAuth o API‑key flows. Run them via:
openclaw models auth login --provider <id>
Ang token sink (bakit ito umiiral)¶
Karaniwang nag-iisyu ang mga OAuth provider ng bagong refresh token sa panahon ng mga daloy ng login/refresh. Ang ilang provider (o OAuth clients) ay maaaring magpawalang-bisa ng mga mas lumang refresh token kapag may bagong inilabas para sa parehong user/app.
Praktikal na sintomas:
- nag-login ka sa OpenClaw at sa Claude Code / Codex CLI → isa sa mga ito ay biglang “nalo-log out” kalaunan
Upang mabawasan ito, tinatrato ng OpenClaw ang auth-profiles.json bilang token sink:
- binabasa ng runtime ang mga kredensyal mula sa iisang lugar
- maaari naming panatilihin ang maraming profile at iruta ang mga ito nang deterministiko
Storage (kung saan nakatira ang mga token)¶
Ang mga sikreto ay iniimbak per-agent:
- Mga auth profile (OAuth + API keys):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Runtime cache (awtomatikong pinamamahalaan; huwag i-edit):
~/.openclaw/agents/<agentId>/agent/auth.json
Legacy na import-only file (suportado pa rin, ngunit hindi ang pangunahing store):
~/.openclaw/credentials/oauth.json(ini-import saauth-profiles.jsonsa unang gamit)
Ang lahat ng nasa itaas ay sumusunod din sa $OPENCLAW_STATE_DIR (override ng state dir). Buong sanggunian: /gateway/configuration
Anthropic setup-token (subscription auth)¶
Patakbuhin ang claude setup-token sa anumang makina, pagkatapos ay i-paste ito sa OpenClaw:
openclaw models auth setup-token --provider anthropic
Kung nabuo mo ang token sa ibang lugar, i-paste ito nang manu-mano:
openclaw models auth paste-token --provider anthropic
I-verify:
openclaw models status
OAuth exchange (kung paano gumagana ang login)¶
Ang mga interactive login flow ng OpenClaw ay ipinatutupad sa @mariozechner/pi-ai at ikinokonekta sa mga wizard/command.
Anthropic (Claude Pro/Max) setup-token¶
Hugis ng flow:
- patakbuhin ang
claude setup-token - i-paste ang token sa OpenClaw
- i-store bilang token auth profile (walang refresh)
Ang wizard path ay openclaw onboard → auth choice setup-token (Anthropic).
OpenAI Codex (ChatGPT OAuth)¶
Hugis ng flow (PKCE):
- bumuo ng PKCE verifier/challenge + random
state - buksan ang
https://auth.openai.com/oauth/authorize?... - subukang kunin ang callback sa
http://127.0.0.1:1455/auth/callback - kung hindi makapag-bind ang callback (o remote/headless ka), i-paste ang redirect URL/code
- mag-exchange sa
https://auth.openai.com/oauth/token - kunin ang
accountIdmula sa access token at i-store ang{ access, refresh, expires, accountId }
Ang wizard path ay openclaw onboard → auth choice openai-codex.
Pag-refresh + pag-expire¶
Ang mga profile ay nag-iimbak ng expires timestamp.
Sa runtime:
- kung ang
expiresay nasa hinaharap → gamitin ang nakaimbak na access token - kung expired → mag-refresh (sa ilalim ng file lock) at i-overwrite ang nakaimbak na mga kredensyal
Awtomatiko ang refresh flow; karaniwan ay hindi mo kailangang pamahalaan ang mga token nang manu-mano.
Maraming account (mga profile) + routing¶
Dalawang pattern:
1. Inirerekomenda: hiwalay na mga agent¶
Kung gusto mong hindi kailanman magkahalo ang “personal” at “work,” gumamit ng mga isolated agent (hiwalay na mga session + kredensyal + workspace):
openclaw agents add work
openclaw agents add personal
Pagkatapos ay i-configure ang auth per-agent (wizard) at iruta ang mga chat sa tamang agent.
2. Advanced: maraming profile sa iisang agent¶
Sinusuportahan ng auth-profiles.json ang maraming profile ID para sa parehong provider.
Piliin kung aling profile ang gagamitin:
- global sa pamamagitan ng pag-aayos ng config (
auth.order) - per-session sa pamamagitan ng
/model ...@<profileId>
Halimbawa (session override):
/model Opus@anthropic:work
Paano makita kung anong mga profile ID ang umiiral:
openclaw channels list --json(ipinapakita angauth[])
Kaugnay na docs:
- /concepts/model-failover (mga patakaran sa rotation + cooldown)
- /tools/slash-commands (command surface)