Fundamentals
OAuth
OpenClaw prend en charge OAuth (« authentification par abonnement ») pour les fournisseurs qui le proposent, notamment OpenAI Codex (OAuth ChatGPT) et la réutilisation de la CLI Anthropic Claude. Pour Anthropic, la distinction pratique est la suivante :
- Clé d'API Anthropic : facturation normale de l'API Anthropic.
- CLI Anthropic Claude / authentification par abonnement dans OpenClaw : le personnel d'Anthropic
nous a indiqué que cet usage était de nouveau autorisé. OpenClaw considère donc la réutilisation de la CLI Claude et
l'utilisation de
claude -pcomme autorisées pour cette intégration, sauf si Anthropic publie une nouvelle politique. Pour Anthropic en production, l'authentification par clé d'API reste la méthode recommandée la plus sûre.
OpenClaw stocke l'authentification par clé d'API OpenAI et l'OAuth ChatGPT/Codex sous
l'identifiant canonique de fournisseur openai. Les anciens identifiants de profils openai-codex:* et
les entrées auth.order.openai-codex constituent un état hérité corrigé par
openclaw doctor --fix ; utilisez les identifiants de profils openai:* et auth.order.openai pour
les nouvelles configurations.
Cette page explique :
- le fonctionnement de l'échange de jetons OAuth (PKCE)
- l'emplacement où les jetons sont stockés (et pourquoi)
- la gestion de plusieurs comptes (profils et remplacements par session)
Les Plugins de fournisseur qui incluent leur propre flux OAuth ou de clé d'API passent par le même point d'entrée :
openclaw models auth login --provider <id>Le réceptacle de jetons (pourquoi il existe)
Les fournisseurs OAuth émettent généralement un nouveau jeton d'actualisation à chaque connexion ou actualisation. Certains fournisseurs invalident le jeton d'actualisation précédent lorsqu'un nouveau jeton est émis pour le même utilisateur ou la même application. Symptôme concret : connectez-vous via OpenClaw et via Claude Code / la CLI Codex, et l'un des deux finit par être déconnecté de manière aléatoire.
Pour limiter ce problème, OpenClaw traite le magasin de profils d'authentification comme un réceptacle de jetons :
- l'environnement d'exécution lit les identifiants depuis un emplacement unique par agent
- plusieurs profils peuvent coexister et être acheminés de manière déterministe
- la réutilisation d'une CLI externe dépend du fournisseur : dès qu'OpenClaw possède un profil OAuth
local pour un fournisseur, le jeton d'actualisation local fait autorité. Si ce jeton
d'actualisation local est rejeté, OpenClaw signale que le profil doit être
réauthentifié au lieu de recourir aux données de jeton d'une CLI externe.
L'amorçage depuis la CLI Codex est encore plus restreint : il peut uniquement initialiser un profil vide
de type
openai:defaultavant qu'OpenClaw ne possède l'OAuth de ce fournisseur ; ensuite, les actualisations gérées par OpenClaw restent la référence - les chemins d'état et de démarrage limitent la détection des CLI externes à l'ensemble de fournisseurs déjà configurés, afin que le magasin de connexion d'une CLI sans rapport ne soit pas interrogé dans une configuration à fournisseur unique
Stockage (emplacement des jetons)
Les secrets sont propres à chaque agent et indexés par le nom logique auth-profiles.json (le
magasin sous-jacent est la base de données SQLite de l'agent ; le nom JSON est conservé pour
la compatibilité et l'affichage dans les outils) :
- Profils d'authentification (OAuth, clés d'API et références facultatives au niveau des valeurs) :
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Fichier de compatibilité hérité :
~/.openclaw/agents/<agentId>/agent/auth.json(les entrées statiquesapi_keysont supprimées lorsqu'elles sont détectées)
Fichier hérité destiné uniquement à l'importation (toujours pris en charge, mais ne constituant pas le magasin principal) :
~/.openclaw/credentials/oauth.json(importé dans le magasin de profils d'authentification lors de la première utilisation)
Tous les éléments ci-dessus respectent également $OPENCLAW_STATE_DIR (remplacement du répertoire d'état). Référence complète : /gateway/configuration-reference#auth-storage
Pour les références statiques de secrets et le comportement d'activation des instantanés d'exécution, consultez Gestion des secrets.
Lorsqu'un agent secondaire ne possède aucun profil d'authentification local, OpenClaw utilise un héritage en lecture depuis le magasin de l'agent principal/par défaut ; il ne clone pas le magasin de l'agent principal lors de la lecture. Les jetons d'actualisation OAuth sont particulièrement sensibles : les flux de copie normaux les ignorent par défaut, car certains fournisseurs font tourner ou invalident les jetons d'actualisation après leur utilisation. Configurez une connexion OAuth distincte pour un agent lorsqu'il a besoin d'un compte indépendant.
Réutilisation de la CLI Anthropic Claude
OpenClaw prend en charge la réutilisation de la CLI Anthropic Claude et claude -p comme
méthode d'authentification autorisée. Si vous disposez déjà d'une connexion Claude locale sur l'hôte,
l'intégration initiale ou la configuration peut la réutiliser directement. Le jeton de configuration Anthropic reste
disponible comme méthode d'authentification par jeton prise en charge, mais OpenClaw privilégie la réutilisation de la CLI Claude
lorsqu'elle est disponible.
Échange OAuth (fonctionnement de la connexion)
Les flux de connexion interactifs d'OpenClaw sont implémentés dans openclaw/plugin-sdk/llm.ts et reliés aux assistants et aux commandes.
Jeton de configuration Anthropic
Déroulement du flux :
- lancer le jeton de configuration Anthropic ou coller un jeton depuis OpenClaw
- OpenClaw stocke l'identifiant Anthropic obtenu dans un profil d'authentification
- la sélection du modèle reste sur
anthropic/... - les profils d'authentification Anthropic existants restent disponibles pour revenir en arrière ou contrôler l'ordre
OpenAI Codex (OAuth ChatGPT)
L'utilisation d'OAuth OpenAI Codex en dehors de la CLI Codex, notamment dans les flux de travail OpenClaw, est explicitement prise en charge.
La commande de connexion utilise l'identifiant canonique du fournisseur OpenAI :
openclaw models auth login --provider openaiUtilisez --profile-id openai:<name> pour plusieurs comptes OAuth ChatGPT/Codex dans
un même agent. N'utilisez pas openai-codex:<name> pour les nouveaux profils. Doctor migre
cet ancien préfixe vers un identifiant de profil openai:* sans collision ; exécutez
openclaw models auth list --provider openai après la correction, avant de copier les
identifiants de profils dans auth.order ou /model ...@<profileId>.
Déroulement du flux (PKCE) :
- générer un vérificateur/défi PKCE et une valeur
statealéatoire - ouvrir
https://auth.openai.com/oauth/authorize?...(portéeopenid profile email offline_access) - tenter de capturer le rappel sur
http://localhost:1455/auth/callback(l'hôte de rappel est par défautlocalhostet n'accepte que les hôtes local loopback ; remplacez-le avecOPENCLAW_OAUTH_CALLBACK_HOST) - si vous pouvez coller un code avant l'arrivée du rappel (ou si vous travaillez à distance/sans interface graphique et que le rappel ne peut pas ouvrir de port), collez plutôt l'URL de redirection ou le code : le collage manuel entre en concurrence avec le rappel du navigateur et le premier à aboutir l'emporte
- échanger le code sur
https://auth.openai.com/oauth/token - extraire
accountIddu jeton d'accès et stocker{ access, refresh, expires, accountId }
Le chemin de l'assistant est openclaw onboard → choix d'authentification openai.
Actualisation et expiration
Les profils stockent un horodatage expires. À l'exécution :
- si
expiresest dans le futur, utiliser le jeton d'accès stocké - s'il a expiré, l'actualiser (sous verrou de fichier) et remplacer les identifiants stockés
- si un agent secondaire lit un profil OAuth hérité de l'agent principal, l'actualisation est réécrite dans le magasin de l'agent principal au lieu de copier le jeton d'actualisation dans le magasin de l'agent secondaire
- les identifiants de CLI gérés en externe (CLI Claude, amorçage restreint depuis la CLI Codex ; voir Le réceptacle de jetons) sont relus au lieu de consommer un jeton d'actualisation copié. Si une actualisation gérée échoue, OpenClaw signale que le profil concerné doit être réauthentifié au lieu de renvoyer les données de jeton d'une CLI externe.
Le flux d'actualisation est automatique ; vous n'avez généralement pas besoin de gérer les jetons manuellement.
Plusieurs comptes (profils) et acheminement
Deux approches :
1) Recommandée : des agents distincts
Si vous souhaitez que les environnements « personnel » et « professionnel » n'interagissent jamais, utilisez des agents isolés (sessions, identifiants et espaces de travail distincts) :
openclaw agents add workopenclaw agents add personalConfigurez ensuite l'authentification par agent (avec l'assistant) et acheminez les conversations vers l'agent approprié.
2) Avancée : plusieurs profils dans un même agent
Le magasin de profils d'authentification prend en charge plusieurs identifiants de profils pour un même fournisseur. Choisissez celui qui est utilisé :
- globalement via l'ordre de configuration (
auth.order) - par session via
/model ...@<profileId>
Exemple (remplacement pour la session) :
/model Opus@anthropic:work
Répertoriez les identifiants de profils existants avec :
openclaw models auth list --provider <id>Documentation associée :
- Basculement de modèle (règles de rotation et de temporisation)
- Commandes slash (interface de commande)
Voir aussi
- Authentification - présentation de l'authentification des fournisseurs de modèles
- Secrets - stockage des identifiants et SecretRef
- Référence de configuration - clés de configuration de l'authentification