Fundamentals
OAuth
OpenClaw supporta l'"autenticazione tramite abbonamento" via OAuth per i provider che la offrono (in particolare OpenAI Codex (ChatGPT OAuth)). Per Anthropic, la distinzione pratica ora è:
- Chiave API Anthropic: normale fatturazione dell'API Anthropic
- Anthropic Claude CLI / autenticazione tramite abbonamento dentro OpenClaw: lo staff di Anthropic ci ha comunicato che questo utilizzo è di nuovo consentito
OpenAI Codex OAuth è esplicitamente supportato per l'uso in strumenti esterni come OpenClaw. Questa pagina spiega:
Per Anthropic in produzione, l'autenticazione con chiave API è il percorso consigliato più sicuro.
- come funziona lo scambio di token OAuth (PKCE)
- dove vengono archiviati i token (e perché)
- come gestire più account (profili + override per sessione)
OpenClaw supporta anche Plugin dei provider che includono i propri flussi OAuth o con chiave API. Eseguili tramite:
openclaw models auth login --provider <id>
Il token sink (perché esiste)
I provider OAuth generano comunemente un nuovo refresh token durante i flussi di accesso/refresh. Alcuni provider (o client OAuth) possono invalidare i refresh token precedenti quando ne viene emesso uno nuovo per lo stesso utente/app.
Sintomo pratico:
- accedi tramite OpenClaw e tramite Claude Code / Codex CLI → uno dei due in seguito risulta "disconnesso" in modo casuale
Per ridurre questo problema, OpenClaw tratta auth-profiles.json come un token sink:
- il runtime legge le credenziali da un solo punto
- possiamo mantenere più profili e instradarli in modo deterministico
- il riutilizzo di CLI esterne è specifico del provider: Codex CLI può inizializzare un profilo
openai-codex:defaultvuoto, ma una volta che OpenClaw ha un profilo OAuth locale, il refresh token locale è canonico; le altre integrazioni possono restare gestite esternamente e rileggere il proprio archivio di autenticazione CLI - i percorsi di stato e avvio che conoscono già l'insieme dei provider configurati limitano l'individuazione delle CLI esterne a quell'insieme, quindi l'archivio di accesso CLI non correlato non viene interrogato per una configurazione con un solo provider
Archiviazione (dove risiedono i token)
I segreti sono archiviati negli archivi di autenticazione degli agenti:
- Profili di autenticazione (OAuth + chiavi API + riferimenti opzionali a livello di valore):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - File di compatibilità legacy:
~/.openclaw/agents/<agentId>/agent/auth.json(le voci staticheapi_keyvengono rimosse quando rilevate)
File legacy solo per importazione (ancora supportato, ma non è l'archivio principale):
~/.openclaw/credentials/oauth.json(importato inauth-profiles.jsonal primo utilizzo)
Tutti i percorsi precedenti rispettano anche $OPENCLAW_STATE_DIR (override della directory di stato). Riferimento completo: /gateway/configuration
Per i riferimenti statici ai segreti e il comportamento di attivazione degli snapshot a runtime, consulta Gestione dei segreti.
Quando un agente secondario non ha un profilo di autenticazione locale, OpenClaw usa l'ereditarietà
in lettura dall'archivio dell'agente predefinito/principale. Non clona auth-profiles.json
dell'agente principale in lettura. I refresh token OAuth sono particolarmente
sensibili: i normali flussi di copia li ignorano per impostazione predefinita perché alcuni provider ruotano
o invalidano i refresh token dopo l'uso. Configura un accesso OAuth separato per un
agente quando ha bisogno di un account indipendente.
Compatibilità con i token legacy di Anthropic
OpenClaw espone anche il token di configurazione Anthropic come percorso di autenticazione con token supportato, ma ora preferisce il riutilizzo della Claude CLI e claude -p quando disponibili.
Migrazione della Claude CLI di Anthropic
OpenClaw supporta di nuovo il riutilizzo della Claude CLI di Anthropic. Se hai già un accesso locale a Claude sull'host, onboarding/configure può riutilizzarlo direttamente.
Scambio OAuth (come funziona l'accesso)
I flussi di accesso interattivi di OpenClaw sono implementati in @mariozechner/pi-ai e collegati a wizard/comandi.
Token di configurazione Anthropic
Forma del flusso:
- avvia il token di configurazione Anthropic o incolla il token da OpenClaw
- OpenClaw archivia la credenziale Anthropic risultante in un profilo di autenticazione
- la selezione del modello resta su
anthropic/... - i profili di autenticazione Anthropic esistenti restano disponibili per rollback/controllo dell'ordine
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth è esplicitamente supportato per l'uso fuori dalla Codex CLI, inclusi i flussi di lavoro OpenClaw.
Forma del flusso (PKCE):
- genera verificatore/challenge PKCE +
statecasuale - apri
https://auth.openai.com/oauth/authorize?... - prova a catturare il callback su
http://127.0.0.1:1455/auth/callback - se il callback non riesce a collegarsi (o sei remoto/headless), incolla l'URL/codice di redirect
- esegui lo scambio su
https://auth.openai.com/oauth/token - estrai
accountIddal token di accesso e archivia{ access, refresh, expires, accountId }
Il percorso del wizard è openclaw onboard → scelta di autenticazione openai-codex.
Refresh + scadenza
I profili archiviano un timestamp expires.
A runtime:
- se
expiresè nel futuro → usa il token di accesso archiviato - se è scaduto → esegui il refresh (sotto file lock) e sovrascrivi le credenziali archiviate
- se un agente secondario legge un profilo OAuth ereditato dall'agente principale, il refresh scrive nell'archivio dell'agente principale invece di copiare il refresh token nell'archivio dell'agente secondario
- eccezione: alcune credenziali CLI esterne restano gestite esternamente; OpenClaw
rilegge quegli archivi di autenticazione CLI invece di consumare refresh token copiati.
L'inizializzazione di Codex CLI è intenzionalmente più ristretta: crea un profilo
openai-codex:defaultvuoto, poi i refresh gestiti da OpenClaw mantengono canonico il profilo locale.
Il flusso di refresh è automatico; in genere non devi gestire i token manualmente.
Più account (profili) + instradamento
Due schemi:
1) Preferito: agenti separati
Se vuoi che "personale" e "lavoro" non interagiscano mai, usa agenti isolati (sessioni + credenziali + workspace separati):
openclaw agents add work
openclaw agents add personal
Poi configura l'autenticazione per agente (wizard) e instrada le chat all'agente corretto.
2) Avanzato: più profili in un agente
auth-profiles.json supporta più ID profilo per lo stesso provider.
Scegli quale profilo usare:
- globalmente tramite l'ordine di configurazione (
auth.order) - per sessione tramite
/model ...@<profileId>
Esempio (override di sessione):
/model Opus@anthropic:work
Come vedere quali ID profilo esistono:
openclaw channels list --json(mostraauth[])
Documentazione correlata:
- Failover dei modelli (regole di rotazione + cooldown)
- Comandi slash (superficie dei comandi)
Correlati
- Autenticazione - panoramica sull'autenticazione dei provider di modelli
- Segreti - archiviazione delle credenziali e SecretRef
- Riferimento alla configurazione - chiavi di configurazione dell'autenticazione