Authentication
Model authentication: OAuth, API keys, and setup-token
OpenClaw supports OAuth and API keys for model providers. For Anthropic accounts, we recommend using an **API key**. For Claude subscription access, use the long-lived token created by claude setup-token.
For Anthropic accounts, we recommend using an **API key**. For Claude subscription access, use the long-lived token created by claude setup-token.
See [/concepts/oauth](/concepts/oauth) for the full OAuth flow and storage layout.
Recommended Anthropic setup (API key)
If you're using Anthropic directly, use an API key.
- Create an API key in the Anthropic Console.
- Put it on the **gateway host** (the machine running
openclaw gateway).
export ANTHROPIC_API_KEY="..." openclaw models status
If the Gateway runs under systemd/launchd, prefer putting the key in ~/.openclaw/.env so the daemon can read it:
cat >> ~/.openclaw/.env <<'EOF' ANTHROPIC_API_KEY=... EOF
Then restart the daemon (or restart your Gateway process) and re-check:
openclaw models status openclaw doctor
If you'd rather not manage env vars yourself, the onboarding wizard can store API keys for daemon use: openclaw onboard.
See [Help](/help) for details on env inheritance (env.shellEnv, ~/.openclaw/.env, systemd/launchd).
Anthropic: setup-token (subscription auth)
For Anthropic, the recommended path is an **API key**. If you're using a Claude subscription, the setup-token flow is also supported. Run it on the **gateway host**:
claude setup-token
Then paste it into OpenClaw:
openclaw models auth setup-token --provider anthropic
If the token was created on another machine, paste it manually:
openclaw models auth paste-token --provider anthropic
If 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 anthropic openclaw models auth paste-token --provider openrouter
Automation-friendly check (exit 1 when expired/missing, 2 when expiring):
openclaw models status --check
Optional ops scripts (systemd/Termux) are documented here: [/automation/auth-monitoring](/automation/auth-monitoring)
Tutorial.alert.info
claude setup-token requires an interactive TTY.Checking model auth status
openclaw models status openclaw doctor
Controlling which credential is used
Credential selection depends on context. The effective priority order is:
- Session pin:
/model <alias-or-id>@<profileId> - Agent override:
openclaw models auth order ... --agent <id> - Provider default if no override
Use /model status to see candidates and which auth profile will be used next.
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)
Set an explicit auth profile order override for an agent (stored in that agent's auth-profiles.json):
openclaw models auth order get --provider anthropic openclaw models auth order set --provider anthropic anthropic:default openclaw models auth order clear --provider anthropic
Use --agent <id> to target a specific agent; omit it to use the configured default agent.
Troubleshooting
"No credentials found"
If the Anthropic token profile is missing, run claude setup-token on the **gateway host**, then re-check:
- If using API key, confirm the Gateway process can read
ANTHROPIC_API_KEY. - If using setup-token, rerun
claude setup-tokenand paste fromopenclaw models auth setup-token --provider anthropic. - If you already have a token string, use
openclaw models auth paste-token --provider anthropic.
Then re-check:
openclaw models status
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
- Claude Max or Pro subscription (for
claude setup-token) - Claude Code CLI installed (
claudecommand available)