- Chiave API Anthropic: normale fatturazione dell’API Anthropic
- Anthropic Claude CLI / auth tramite abbonamento dentro OpenClaw: lo staff Anthropic ci ha comunicato che questo uso è di nuovo consentito
openai. Gli id profilo openai-codex:* più vecchi e le
voci auth.order.openai-codex sono stato legacy riparato da
openclaw doctor --fix; usa gli id profilo openai:* e auth.order.openai per
la nuova config.
Per Anthropic in produzione, l’auth con chiave API è il percorso consigliato più sicuro.
Questa pagina spiega:
- come funziona lo scambio di token OAuth (PKCE)
- dove vengono archiviati i token (e perché)
- come gestire più account (profili + override per sessione)
Il token sink (perché esiste)
I provider OAuth spesso emettono un nuovo refresh token durante i flussi di login/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 viene casualmente “disconnesso” in seguito
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 riuso della CLI esterna è specifico del provider: Codex CLI può inizializzare
un profilo
openai:defaultvuoto, ma una volta che OpenClaw ha un profilo OAuth locale, il refresh token locale è canonico. Se quel refresh token locale viene rifiutato, OpenClaw segnala il profilo gestito per la riautenticazione invece di usare il materiale token di Codex CLI come fallback di runtime parallelo. Altre integrazioni possono rimanere gestite esternamente e rileggere il proprio store auth della CLI - i percorsi di stato e avvio che conoscono già il set di provider configurato limitano la discovery della CLI esterna a quel set, quindi uno store di login CLI non correlato non viene sondato per una configurazione con un solo provider
Archiviazione (dove vivono i token)
I segreti sono archiviati negli store auth degli agenti:- Profili auth (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 ripulite quando rilevate)
~/.openclaw/credentials/oauth.json(importato inauth-profiles.jsonal primo utilizzo)
$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 runtime, vedi Gestione dei segreti.
Quando un agente secondario non ha un profilo auth locale, OpenClaw usa
ereditarietà read-through dallo store 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 saltano per impostazione
predefinita perché alcuni provider ruotano o invalidano i refresh token dopo l’uso.
Configura un login OAuth separato per un agente quando gli serve un account
indipendente.
Compatibilità con token legacy Anthropic
OpenClaw espone anche il setup-token Anthropic come percorso di auth con token supportato, ma ora preferisce il riuso della Claude CLI eclaude -p quando disponibili.
Migrazione di Anthropic Claude CLI
OpenClaw supporta di nuovo il riuso di Anthropic Claude CLI. Se hai già un login Claude locale sull’host, onboarding/configure può riutilizzarlo direttamente.Scambio OAuth (come funziona il login)
I flussi di login interattivi di OpenClaw sono implementati inopenclaw/plugin-sdk/llm e collegati alle procedure guidate/ai comandi.
setup-token Anthropic
Forma del flusso:- avvia setup-token Anthropic o paste-token da OpenClaw
- OpenClaw archivia la credenziale Anthropic risultante in un profilo auth
- la selezione del modello rimane su
anthropic/... - i profili auth Anthropic esistenti rimangono disponibili per rollback/controllo dell’ordine
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth è esplicitamente supportato per l’uso al di fuori della Codex CLI, inclusi i workflow OpenClaw. Il comando di login usa ancora l’id provider OpenAI canonico:--profile-id openai:<name> per più account ChatGPT/Codex OAuth in
un agente. Non usare openai-codex:<name> per nuovi profili. Doctor migra
quel prefisso più vecchio a un id profilo openai:* senza collisioni; esegui
openclaw models auth list --provider openai dopo la riparazione prima di copiare
gli id profilo in auth.order o /model ...@<profileId>.
Forma del flusso (PKCE):
- genera verifier/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 può fare bind (o sei remoto/headless), incolla l’URL/codice di reindirizzamento
- esegui lo scambio su
https://auth.openai.com/oauth/token - estrai
accountIddall’access token e archivia{ access, refresh, expires, accountId }
openclaw onboard → scelta auth openai.
Refresh + scadenza
I profili archiviano un timestampexpires.
A runtime:
- se
expiresè nel futuro → usa l’access token archiviato - se è scaduto → esegue il refresh (sotto file lock) e sovrascrive le credenziali archiviate
- se un agente secondario legge un profilo OAuth ereditato dall’agente principale, il refresh riscrive nello store dell’agente principale invece di copiare il refresh token nello store dell’agente secondario
- eccezione: alcune credenziali CLI esterne restano gestite esternamente; OpenClaw
rilegge quegli store auth CLI invece di consumare refresh token copiati.
Il bootstrap di Codex CLI è intenzionalmente più ristretto: può popolare un
openai:defaultvuoto o un profilo OpenAI richiesto esplicitamente solo prima che OpenClaw possieda OAuth per il provider. Dopo di che, i refresh di proprietà di OpenClaw mantengono canonici i profili locali e la discovery non aggiunge auth Codex CLI in alcuno slot parallelo. Se un refresh gestito fallisce, OpenClaw segnala il profilo interessato per la riautenticazione invece di restituire materiale token dalla CLI esterna.
Più account (profili) + routing
Due pattern:1) Preferito: agenti separati
Se vuoi che “personale” e “lavoro” non interagiscano mai, usa agenti isolati (sessioni + credenziali + workspace separati):2) Avanzato: più profili in un agente
auth-profiles.json supporta più ID profilo per lo stesso provider.
Scegli quale profilo viene usato:
- globalmente tramite ordinamento della config (
auth.order) - per sessione tramite
/model ...@<profileId>
/model Opus@anthropic:work
openclaw channels list --json(mostraauth[])
- Failover del modello (regole di rotazione + cooldown)
- Comandi slash (superficie dei comandi)
Correlati
- Autenticazione - panoramica dell’auth dei provider di modelli
- Segreti - archiviazione delle credenziali e SecretRef
- Riferimento della configurazione - chiavi di config auth