OAuth
O OpenClaw oferece suporte a “subscription auth” via OAuth para provedores que o oferecem (notavelmente OpenAI Codex (ChatGPT OAuth)). Para assinaturas da Anthropic, use o fluxo setup-token. Esta página explica:- como funciona a troca de tokens OAuth (PKCE)
- onde os tokens são armazenados (e por quê)
- como lidar com múltiplas contas (perfis + substituições por sessão)
O sumidouro de tokens (por que ele existe)
Provedores OAuth comumente geram um novo refresh token durante fluxos de login/atualização. Alguns provedores (ou clientes OAuth) podem invalidar refresh tokens antigos quando um novo é emitido para o mesmo usuário/app. Sintoma prático:- você faz login via OpenClaw e via Claude Code / Codex CLI → um deles acaba sendo “desconectado” aleatoriamente depois
auth-profiles.json como um sumidouro de tokens:
- o runtime lê credenciais de um único lugar
- podemos manter múltiplos perfis e roteá-los de forma determinística
Armazenamento (onde os tokens ficam)
Segredos são armazenados por agente:- Perfis de autenticação (OAuth + chaves de API):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Cache de runtime (gerenciado automaticamente; não edite):
~/.openclaw/agents/<agentId>/agent/auth.json
~/.openclaw/credentials/oauth.json(importado paraauth-profiles.jsonno primeiro uso)
$OPENCLAW_STATE_DIR (substituição do diretório de estado). Referência completa: /gateway/configuration
setup-token da Anthropic (subscription auth)
Executeclaude setup-token em qualquer máquina e depois cole no OpenClaw:
Troca OAuth (como o login funciona)
Os fluxos interativos de login do OpenClaw são implementados em@mariozechner/pi-ai e integrados aos assistentes/comandos.
Anthropic (Claude Pro/Max) setup-token
Formato do fluxo:- execute
claude setup-token - cole o token no OpenClaw
- armazene como um perfil de autenticação por token (sem refresh)
openclaw onboard → escolha de autenticação setup-token (Anthropic).
OpenAI Codex (ChatGPT OAuth)
Formato do fluxo (PKCE):- gerar verificador/desafio PKCE +
statealeatório - abrir
https://auth.openai.com/oauth/authorize?... - tentar capturar o callback em
http://127.0.0.1:1455/auth/callback - se o callback não conseguir vincular (ou você estiver remoto/headless), colar a URL/código de redirecionamento
- trocar em
https://auth.openai.com/oauth/token - extrair
accountIddo token de acesso e armazenar{ access, refresh, expires, accountId }
openclaw onboard → escolha de autenticação openai-codex.
Atualização + expiração
Os perfis armazenam um carimbo de data/horaexpires.
Em runtime:
- se
expiresestiver no futuro → usar o token de acesso armazenado - se estiver expirado → atualizar (sob um bloqueio de arquivo) e sobrescrever as credenciais armazenadas
Múltiplas contas (perfis) + roteamento
Dois padrões:1. Preferido: agentes separados
Se você quer que “pessoal” e “trabalho” nunca interajam, use agentes isolados (sessões + credenciais + workspace separados):2. Avançado: múltiplos perfis em um agente
auth-profiles.json oferece suporte a múltiplos IDs de perfil para o mesmo provedor.
Escolha qual perfil é usado:
- globalmente via ordenação de configuração (
auth.order) - por sessão via
/model ...@<profileId>
/model Opus@anthropic:work
openclaw channels list --json(mostraauth[])
- /concepts/model-failover (regras de rotação + cooldown)
- /tools/slash-commands (superfície de comandos)