Intervention humaine pour OpenClaw
L’approbation humaine des appels d’outils OpenClaw, sur téléphone.
Un hook before_tool_call bloque les outils OpenClaw sensibles jusqu’à l’approbation de votre utilisateur sur son téléphone.
Ce que propose OpenClaw
Le hook before_tool_call
Un plugin OpenClaw peut enregistrer un hook before_tool_call. Il s’exécute avant l’outil ; renvoyer { block: true, blockReason } arrête l’appel et en indique le motif au modèle. C’est le bon emplacement pour une approbation : il bloque l’action au lieu de la signaler après coup.
Le point de blocage
- Seul, le hook ne joint une personne qu’à travers les approbations d’OpenClaw, par exemple dans une messagerie.
- Il ne dispose pas d’une attente qui survit à un redémarrage pendant la décision.
- Il ne conserve aucun historique de ce qui a été autorisé ou bloqué, ni de l’auteur de la décision.
La solution
Pushary recueille la réponse de votre utilisateur.
before_tool_call peut arrêter un outil. Un appel decisions.ask() à l’intérieur envoie la question sur le téléphone de votre utilisateur, attend une approbation ou un refus et enregistre la réponse. Le hook bloque tout résultat autre qu’un oui.
Le plugin protège trois outils : deploy_service, delete_record et send_email. Pour ceux-ci, le hook appelle decisions.ask() et renvoie { block: true } sauf si votre utilisateur approuve. Tous les autres appels passent sans intervention du hook. Chaque réponse est enregistrée.
npm i @pushary/serverimport { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"
import { createPusharyServer } from "@pushary/server"
const pushary = createPusharyServer({ apiKey: process.env.PUSHARY_API_KEY! })
const GATED = new Set(["deploy_service", "delete_record", "send_email"])
export default definePluginEntry({
id: "pushary-approvals",
name: "Pushary approvals",
register(api) {
api.on("before_tool_call", async (event) => {
if (!GATED.has(event.toolName)) return
const d = await pushary.decisions
.ask({ question: `Allow ${event.toolName}?`, externalId: "user_123", type: "confirm" })
.catch(() => ({ approved: false }))
if (!d.approved) {
return { block: true, blockReason: "A person did not approve this action." }
}
})
},
})Fonctionnement
De l’installation à la première réponse
Connectez votre utilisateur une seule fois. Exigez son approbation à l’étape sensible. Pushary envoie la question, attend la réponse et l’enregistre.
- 01
Installez et définissez votre clé
Exécutez npm i @pushary/server dans l’espace de travail de votre plugin et définissez PUSHARY_API_KEY.
- 02
Connectez votre utilisateur une seule fois
Un appel SDK renvoie un lien de connexion. La personne qui approuve l’ouvre sur son téléphone avec l’application Pushary gratuite. Sans compte ni paiement.
- 03
Enregistrez le hook
Dans le point d’entrée de votre plugin, enregistrez un hook before_tool_call qui appelle decisions.ask() pour les noms d’outils protégés.
- 04
Bloquez tout résultat autre qu’un oui
Renvoyez { block: true } avec un blockReason sauf si la réponse est une approbation explicite, afin qu’un non ou un délai dépassé arrête l’appel.
Une question peut demander un oui ou un non, un choix dans une liste ou une réponse écrite. Chaque réponse est enregistrée.
Avant la mise en production
Les pièges à éviter avec OpenClaw
- Posez la question dans le hook, pas dans un outil
- Un outil que le modèle choisit d’appeler est facultatif, et une consigne « demander d’abord » n’impose aucun contrôle. before_tool_call s’exécute à chaque appel, que le modèle le veuille ou non : l’approbation doit donc s’y trouver.
L’offre Partner
Votre agent interroge vos utilisateurs, pas seulement vous
Proposez votre agent à vos utilisateurs. Chacun approuve ses actions sensibles depuis son téléphone, sous votre marque.
Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.
Vos utilisateurs répondent sur leur propre téléphone
Connectez chaque utilisateur une seule fois avec un lien. Il installe l’application Pushary gratuite et répond depuis l’écran verrouillé, sans créer de compte.
Sans réponse, c’est non
Exécutez l’action uniquement après une approbation explicite. Une demande en attente, expirée ou annulée ne vaut jamais un oui. Pushary conserve chaque demande : votre code peut la reprendre après un redémarrage.
Joignez-les sur leur téléphone
L’application passe en premier, car elle seule affiche Approuver et Refuser sur l’écran verrouillé. Les notifications du navigateur viennent ensuite. Vous n’avez aucun système d’envoi à construire.
Chaque réponse est enregistrée
Chaque réponse est enregistrée avec son auteur et sa date. Vous pouvez effectuer des recherches et exporter les réponses. Avec une URL de rappel, chaque réponse est aussi envoyée à votre serveur par webhook signé.
FAQ
Les réponses à vos questions
Existe-t-il un package @pushary/openclaw ?
Comment bloquer un appel d’outil ?
Que se passe-t-il si le délai est dépassé ?
Puis-je protéger certains outils seulement ?
Qui approuve l’appel ?
Laissez votre agent OpenClaw demander avant d’agir.
Connectez un utilisateur une seule fois, posez une question en un appel et exécutez l’action uniquement après un oui. Chaque réponse est enregistrée.
Start freeOffre Partner, $99 par mois. Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.