Gateway
1Password
OpenClaw s’associe à 1Password de deux manières indépendantes :
- Secrets de configuration : tout champ SecretRef dans
openclaw.jsonpeut être résolu à l’exécution par la CLIop, afin que les clés API ne figurent jamais dans le fichier de configuration. - Workflows des agents : la compétence
1passwordintégrée apprend aux agents à se connecter et à lire ou injecter des secrets avecoppour leurs propres tâches.
Prérequis
- La CLI 1Password (
op) doit être installée sur l’hôte du Gateway (brew install 1password-clisous macOS). - Un mode d’authentification pour
op:- Compte de service (recommandé pour les Gateways sans interface graphique) : exportez
OP_SERVICE_ACCOUNT_TOKENdans l’environnement du service Gateway. Aucune application de bureau ni connexion interactive. - Intégration à l’application de bureau : l’application 1Password s’exécute sur la même machine avec l’intégration à la CLI activée. Les premiers appels peuvent déclencher Touch ID ou l’authentification système.
- Connexion autonome :
op signinaffiche une invite à chaque session. Cette méthode convient aux agents grâce à la compétence, mais pas à la résolution des secrets de configuration sur un Gateway sans interface graphique.
- Compte de service (recommandé pour les Gateways sans interface graphique) : exportez
Résoudre les secrets de configuration avec op
Déclarez un fournisseur de secrets exec qui exécute op read avec une référence op://vault/item/field, puis faites pointer tout champ compatible avec SecretRef vers celui-ci :
{ secrets: { providers: { onepassword_openai: { source: "exec", command: "/opt/homebrew/bin/op", allowSymlinkCommand: true, // requis pour les binaires Homebrew liés symboliquement trustedDirs: ["/opt/homebrew"], args: ["read", "op://Personal/OpenClaw QA API Key/password"], passEnv: ["HOME"], jsonOnly: false, }, }, }, models: { providers: { openai: { baseUrl: "https://api.openai.com/v1", models: [{ id: "gpt-5", name: "gpt-5" }], apiKey: { source: "exec", provider: "onepassword_openai", id: "value" }, }, }, },}Fonctionnement des différents éléments :
commanddoit être un chemin absolu ;trustedDirsmarque son répertoire comme fiable, etallowSymlinkCommandest nécessaire, car Homebrew installeopsous forme de lien symbolique.argstransmet la référenceop://vault/item/fieldtelle quelle. OpenClaw n’analyse pas lui-même le schémaop://; le binaireople résout.passEnvtransmet les variables répertoriées depuis l’environnement du Gateway. L’intégration à l’application de bureau nécessiteHOME; les comptes de service nécessitent également queOP_SERVICE_ACCOUNT_TOKENsoit présent dans l’environnement du service Gateway (ajoutez-le àpassEnv, ou définissez-le viaenvuniquement si vous acceptez que le jeton soit lisible dans le fichier de configuration).- Pour une sortie à valeur unique, conservez
id: "value". AvecjsonOnly: trueet une charge utile JSON, référencez plutôt les champs à l’aide d’un identifiant de pointeur JSON. - Une entrée de fournisseur par secret permet de maintenir la traçabilité des références ; nommez les fournisseurs d’après leur consommateur (
onepassword_openai,onepassword_telegram).
Consultez Secrets du Gateway pour connaître l’ordre de résolution, la mise en cache et la sémantique des échecs, ainsi que Surface d’identifiants SecretRef pour connaître tous les champs qui acceptent les SecretRefs.
Configuration d’un compte de service pour les Gateways sans interface graphique
- Créez un compte de service dans votre compte 1Password et accordez-lui un accès en lecture uniquement aux éléments de coffre dont le Gateway a besoin.
- Fournissez
OP_SERVICE_ACCOUNT_TOKENau service Gateway (plist launchd, unité systemd ou environnement du conteneur). - Ajoutez
"OP_SERVICE_ACCOUNT_TOKEN"à la listepassEnvdu fournisseur. - Effectuez la vérification depuis l’environnement de l’hôte du Gateway :
op whoamidoit afficher le compte de service sans présenter d’invite.
Les lectures par compte de service nécessitent que le coffre soit explicitement nommé dans la référence op://. Limitez strictement la portée du compte ; il s’agit d’un identifiant d’accès au porteur.
La compétence 1password pour les agents
OpenClaw intègre une compétence 1password qui permet aux agents de maîtriser op : elle détecte le mode d’authentification disponible (compte de service, intégration à l’application de bureau ou connexion autonome), vérifie l’accès avec op whoami avant toute lecture et privilégie op run / op inject plutôt que l’écriture des valeurs secrètes sur le disque. La compétence nécessite le binaire op et propose une installation avec Homebrew s’il est absent.
Les agents l’utilisent pour leurs propres workflows, par exemple pour lire un jeton de déploiement au cours d’une tâche ou injecter des variables d’environnement dans une commande. Elle est indépendante de la résolution des secrets de configuration ; le Gateway résout les SecretRefs sans intervention d’une compétence.
Remarques de sécurité
- Les valeurs secrètes résolues par les fournisseurs exec restent dans la mémoire du Gateway ; les instantanés de configuration et les réponses
config.getmasquent les champs SecretRef. - Ne placez jamais de valeurs secrètes dans
openclaw.json, les journaux ou les conversations. Conservez les noms des éléments dans la configuration et les valeurs dans 1Password. - La piste d’audit de 1Password affiche chaque lecture effectuée par un compte de service, ce qui facilite la rotation des clés et l’examen des incidents.
Dépannage
command not foundou erreurs de lancement de processus : utilisez le cheminopabsolu et incluez son répertoire danstrustedDirs.opest résolu, mais les lectures échouent avec des erreurs de lien symbolique : définissezallowSymlinkCommand: truepour les installations Homebrew.account is not signed in: pour les comptes de service, vérifiez queOP_SERVICE_ACCOUNT_TOKENparvient au service Gateway et figure danspassEnv; pour l’intégration à l’application de bureau, vérifiez que l’application est en cours d’exécution et déverrouillée.- Premières lectures lentes : augmentez
timeoutMssur le fournisseur ; les démarrages à froid deoppeuvent dépasser les délais d’expiration stricts sur les hôtes très sollicités.