Authentication
Authentication (Model Providers)
Section titled “Authentication (Model Providers)”OpenClaw supports OAuth and API keys for model providers. For always-on gateway hosts, API keys are usually the most predictable option. Subscription/OAuth flows are also supported when they match your provider account model.
See /concepts/oauth for the full OAuth flow and storage
layout.
For SecretRef-based auth (env/file/exec providers), see Secrets Management.
For credential eligibility/reason-code rules used by models status --probe, see
Auth Credential Semantics.
Recommended setup (API key, any provider)
Section titled “Recommended setup (API key, any provider)”If you’re running a long-lived gateway, start with an API key for your chosen provider. For Anthropic specifically, API key auth is the safe path and is recommended over subscription setup-token auth.
- Create an API key in your provider console.
- Put it on the gateway host (the machine running
openclaw gateway).
export <PROVIDER>_API_KEY="..."openclaw models status- If the Gateway runs under systemd/launchd, prefer putting the key in
~/.openclaw/.envso the daemon can read it:
cat >> ~/.openclaw/.env <<'EOF'<PROVIDER>_API_KEY=...EOFThen restart the daemon (or restart your Gateway process) and re-check:
openclaw models statusopenclaw doctorIf you’d rather not manage env vars yourself, onboarding can store
API keys for daemon use: openclaw onboard.
See Help for details on env inheritance (env.shellEnv,
~/.openclaw/.env, systemd/launchd).
Anthropic: setup-token (subscription auth)
Section titled “Anthropic: setup-token (subscription auth)”If you’re using a Claude subscription, the setup-token flow is supported. Run it on the gateway host:
claude setup-tokenThen paste it into OpenClaw:
openclaw models auth setup-token --provider anthropicIf the token was created on another machine, paste it manually:
openclaw models auth paste-token --provider anthropicIf you see an Anthropic error like:
This credential is only authorized for use with Claude Code and cannot be used for other API requests.…use an Anthropic API key instead.
Manual token entry (any provider; writes auth-profiles.json + updates config):
openclaw models auth paste-token --provider anthropicopenclaw models auth paste-token --provider openrouterAuth profile refs are also supported for static credentials:
api_keycredentials can usekeyRef: { source, provider, id }tokencredentials can usetokenRef: { source, provider, id }- OAuth-mode profiles do not support SecretRef credentials; if
auth.profiles.<id>.modeis set to"oauth", SecretRef-backedkeyRef/tokenRefinput for that profile is rejected.
Automation-friendly check (exit 1 when expired/missing, 2 when expiring):
openclaw models status --checkOptional ops scripts (systemd/Termux) are documented here: Auth monitoring scripts
claude setup-tokenrequires an interactive TTY.
Anthropic: Claude CLI migration
Section titled “Anthropic: Claude CLI migration”If Claude CLI is already installed and signed in on the gateway host, you can switch an existing Anthropic setup over to the CLI backend instead of pasting a setup-token:
openclaw models auth login --provider anthropic --method cli --set-defaultThis keeps your existing Anthropic auth profiles for rollback, but changes the
default model selection to claude-cli/... and adds matching Claude CLI
allowlist entries under agents.defaults.models.
Onboarding shortcut:
openclaw onboard --auth-choice anthropic-cliChecking model auth status
Section titled “Checking model auth status”openclaw models statusopenclaw doctorAPI key rotation behavior (gateway)
Section titled “API key rotation behavior (gateway)”Some providers support retrying a request with alternative keys when an API call hits a provider rate limit.
- Priority order:
OPENCLAW_LIVE_<PROVIDER>_KEY(single override)<PROVIDER>_API_KEYS<PROVIDER>_API_KEY<PROVIDER>_API_KEY_*
- Google providers also include
GOOGLE_API_KEYas an additional fallback. - The same key list is deduplicated before use.
- OpenClaw retries with the next key only for rate-limit errors (for example
429,rate_limit,quota,resource exhausted). - Non-rate-limit errors are not retried with alternate keys.
- If all keys fail, the final error from the last attempt is returned.
Controlling which credential is used
Section titled “Controlling which credential is used”Per-session (chat command)
Section titled “Per-session (chat command)”Use /model <alias-or-id>@<profileId> to pin a specific provider credential for the current session (example profile ids: anthropic:default, anthropic:work).
Use /model (or /model list) for a compact picker; use /model status for the full view (candidates + next auth profile, plus provider endpoint details when configured).
Per-agent (CLI override)
Section titled “Per-agent (CLI override)”Set an explicit auth profile order override for an agent (stored in that agent’s auth-profiles.json):
openclaw models auth order get --provider anthropicopenclaw models auth order set --provider anthropic anthropic:defaultopenclaw models auth order clear --provider anthropicUse --agent <id> to target a specific agent; omit it to use the configured default agent.
Troubleshooting
Section titled “Troubleshooting””No credentials found”
Section titled “”No credentials found””If the Anthropic token profile is missing, run claude setup-token on the
gateway host, then re-check:
openclaw models statusToken expiring/expired
Section titled “Token expiring/expired”Run openclaw models status to confirm which profile is expiring. If the profile
is missing, rerun claude setup-token and paste the token again.
Requirements
Section titled “Requirements”- Anthropic subscription account (for
claude setup-token) - Claude Code CLI installed (
claudecommand available)