/v1/* compatible avec OpenAI, l’authentification par jeton porteur reposant sur un secret partagé est considérée comme un accès opérateur de confiance à l’ensemble du Gateway.
POST /tools/invoke- Même port que le Gateway (multiplexage WS + HTTP) :
http://<gateway-host>:<port>/tools/invoke - Taille maximale par défaut du corps de la requête : 2 Mo
Authentification
Utilise la configuration d’authentification du Gateway. Méthodes courantes d’authentification HTTP :- authentification par secret partagé (
gateway.auth.mode="token"ou"password") :Authorization: Bearer <token-or-password> - authentification HTTP de confiance porteuse d’identité (
gateway.auth.mode="trusted-proxy") : acheminez la requête via le proxy configuré prenant en charge les identités et laissez-le injecter les en-têtes d’identité requis - authentification ouverte sur un point d’entrée privé (
gateway.auth.mode="none") : aucun en-tête d’authentification requis
mode="token"utilisegateway.auth.token(ouOPENCLAW_GATEWAY_TOKEN).mode="password"utilisegateway.auth.password(ouOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"exige que la requête HTTP provienne d’une source de proxy de confiance configurée ; les proxys local loopback sur le même hôte nécessitent la définition explicite degateway.auth.trustedProxy.allowLoopback = true.- Les appelants internes sur le même hôte qui contournent le proxy peuvent utiliser
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDcomme solution de repli locale directe. Toute présence des en-têtesForwarded,X-Forwarded-*ouX-Real-IPmaintient plutôt la requête sur le chemin du proxy de confiance. - Si
gateway.auth.rateLimitest configuré et qu’un trop grand nombre d’échecs d’authentification survient, le point de terminaison renvoie429avecRetry-After.
Périmètre de sécurité (important)
Considérez ce point de terminaison comme une surface offrant un accès opérateur complet à l’instance du Gateway.- Ici, l’authentification HTTP par jeton porteur ne constitue pas un modèle de portée restreinte par utilisateur.
- Un jeton ou mot de passe Gateway valide pour ce point de terminaison doit être considéré comme un identifiant de propriétaire ou d’opérateur.
- Pour les modes d’authentification par secret partagé (
tokenetpassword), le point de terminaison rétablit les portées complètes par défaut de l’opérateur, même si l’appelant envoie un en-têtex-openclaw-scopesplus restrictif. - L’authentification par secret partagé considère également les appels directs d’outils sur ce point de terminaison comme des tours provenant du propriétaire.
- Les modes HTTP de confiance porteurs d’identité (authentification par proxy de confiance, ou
gateway.auth.mode="none"sur un point d’entrée privé) respectentx-openclaw-scopeslorsqu’il est présent et utilisent sinon l’ensemble normal des portées par défaut de l’opérateur. - Limitez ce point de terminaison au local loopback, au réseau Tailscale ou à un point d’entrée privé ; ne l’exposez pas directement à l’Internet public.
Corps de la requête
tool/name(chaîne, obligatoire) : nom de l’outil à appeler.nameest prioritaire si les deux sont envoyés.action(chaîne, facultatif) : fusionné dansargs.actionsi le schéma de l’outil prend en charge une propriétéactionet siargsne l’a pas déjà définie.args(objet, facultatif) : arguments propres à l’outil.sessionKey(chaîne, facultatif) : clé de la session cible. Si elle est omise ou vaut"main", le Gateway utilise la clé de session principale configurée (en respectantsession.mainKeyet l’agent par défaut, ouglobaldans la portée de session globale).agentId(chaîne, facultatif) : résout la clé de session de cet agent. Renvoie une erreur400en cas de conflit avec une valeursessionKeyexplicite déjà associée à un autre agent.idempotencyKey(chaîne, facultatif) : utilisée pour dériver un identifiant stable d’appel d’outil pour cette invocation.dryRun(booléen, facultatif) : réservé à un usage futur ; actuellement ignoré.
Comportement de la politique et du routage
La disponibilité des outils est filtrée au moyen de la même chaîne de politiques que celle utilisée par les agents du Gateway :tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- politiques de groupe (si la clé de session correspond à un groupe ou à un canal)
- politique de sous-agent (lors d’un appel avec une clé de session de sous-agent)
- Les approbations d’exécution sont des garde-fous destinés aux opérateurs, et non un périmètre d’autorisation distinct pour ce point de terminaison HTTP. Si un outil est accessible ici par l’authentification du Gateway et la politique des outils,
/tools/invoken’ajoute aucune demande d’approbation supplémentaire par appel. - Si
execest accessible ici, considérez-le comme une surface d’interpréteur de commandes capable d’effectuer des modifications. Refuserwrite,edit,apply_patchou les outils HTTP d’écriture dans le système de fichiers ne rend pas l’exécution de commandes accessible en lecture seule. - Ne partagez pas les identifiants porteurs du Gateway avec des appelants non fiables. Si vous devez séparer plusieurs périmètres de confiance, exécutez des Gateways distincts, idéalement avec des utilisateurs ou des hôtes de système d’exploitation distincts.
cron, gateway et nodes sont également réservés au propriétaire : même en dehors de cette liste de refus par défaut, les appelants non propriétaires ne peuvent pas les invoquer sur cette surface.
Personnalisez la liste générale de refus via gateway.tools :
gateway.tools.allow est une dérogation d’exposition, et non une élévation de portée. Dans les modes HTTP porteurs d’identité, cron, gateway et nodes restent indisponibles pour les appelants dépourvus d’une identité de propriétaire ou d’administrateur (operator.admin), même lorsqu’ils figurent dans gateway.tools.allow. L’authentification par jeton porteur reposant sur un secret partagé continue de suivre la règle de confiance opérateur complète décrite ci-dessus.
Pour aider les politiques de groupe à résoudre le contexte, vous pouvez facultativement définir :
x-openclaw-message-channel: <channel>(exemple :slack,telegram)x-openclaw-account-id: <accountId>(lorsque plusieurs comptes existent)x-openclaw-message-to: <target>(cible de livraison pour la politique des outils de messagerie)x-openclaw-thread-id: <threadId>(contexte du fil pour la politique des outils de messagerie)