Intervention humaine pour Claude Agent SDK
L’intervention humaine pour Claude Agent SDK, en un seul canUseTool.
Lorsque votre agent Claude demande un outil soumis à autorisation, votre utilisateur touche Approuver ou Refuser sur son téléphone.
Ce que propose Claude Agent SDK
Le callback canUseTool
Claude Agent SDK permet de vérifier un appel d’outil avant son exécution. Tout outil qui exige une autorisation passe d’abord par votre callback canUseTool, où vous renvoyez allow ou deny et pouvez réécrire l’entrée.
const result = query({
prompt,
options: {
canUseTool: async (toolName, input) => {
// your decision goes here
return { behavior: "allow", updatedInput: input }
},
},
})Le point de blocage
- Le callback répond dans votre processus. Il ne peut pas joindre une personne loin de cette machine.
- Il doit répondre avant que le SDK cesse d’attendre : une longue attente humaine doit donc être gérée en dehors.
- allow et deny ne laissent aucune trace. Aucun historique consultable n’est constitué.
La solution
Pushary recueille la réponse de votre utilisateur.
canUseTool décide si un outil s’exécute. pusharyCanUseTool remplit ce rôle : la question arrive sur le téléphone de votre utilisateur, sa réponse revient comme allow ou deny et chaque réponse est enregistrée.
Passez pusharyCanUseTool() avec votre propre identifiant utilisateur dans les options de query(). Une approbation exécute l’outil sans modifier son entrée. Un refus, ou l’absence de réponse à temps, renvoie un refus lisible par le modèle. Les questions AskUserQuestion de Claude arrivent aussi sur le téléphone sous forme de choix.
npm i @pushary/claude-agent-sdk @anthropic-ai/claude-agent-sdkimport { query } from "@anthropic-ai/claude-agent-sdk"
import { pusharyCanUseTool } from "@pushary/claude-agent-sdk"
for await (const message of query({
prompt: "Refund order 1234",
options: { canUseTool: pusharyCanUseTool({ externalId: user.id }) },
})) {
if (message.type === "result") console.log(message.subtype)
}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 l’adaptateur
Exécutez npm i @pushary/claude-agent-sdk @anthropic-ai/claude-agent-sdk et définissez PUSHARY_API_KEY avec la clé obtenue lors de l’inscription Partner.
- 02
Connectez le téléphone de chaque utilisateur une seule fois
connect() renvoie un lien. Votre utilisateur l’ouvre une fois sur son téléphone et installe l’application Pushary gratuite. Sans compte Pushary ni paiement.
- 03
Passez le contrôle à query()
Définissez canUseTool sur pusharyCanUseTool() avec votre propre identifiant utilisateur. Prenez cet identifiant depuis l’utilisateur connecté, jamais depuis l’entrée de l’outil, car le modèle écrit cette entrée.
- 04
Agissez selon la réponse
Une approbation exécute l’outil sans modification. Un refus, une absence de réponse ou une exécution annulée renvoie un refus motivé, et l’outil ne s’exécute pas.
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 Claude Agent SDK
- Vos règles Pushary sont désactivées tant que vous ne les activez pas
- Les outils Claude portent les mêmes noms que ceux de votre propre Claude Code : Bash, Read, Write. Une règle destinée à vos sessions répondrait aussi aux appels de vos utilisateurs. Par défaut, chaque appel contrôlé est donc soumis à une personne. Définissez policy: true uniquement pour des règles écrites pour cet agent.
- Refuser sans motif perturbe le modèle
- Un refus sans motif pousse souvent l’agent à essayer une commande légèrement différente pour obtenir le même résultat. Donnez un motif pour que le modèle comprenne qu’une personne a décidé, et non que l’appel était mal formé, et cesse de reformuler.
- Vérifiez l’entrée, pas seulement le nom de l’outil
- Le nom Bash couvre aussi bien git status que rm -rf. Un contrôle fondé sur le nom seul interrompt constamment ou laisse passer l’appel sensible. La décision doit lire les arguments.
- Les sous-agents appellent aussi des outils
- Le travail confié à un sous-agent utilise toujours des outils. Si vous imaginez un callback pour une seule session linéaire, les appels du travail délégué peuvent vous surprendre.
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
Ai-je besoin d’un package npm Pushary pour Claude Agent SDK ?
Quels noms d’outils dois-je autoriser pour le serveur MCP ?
Cela fonctionne-t-il avec Claude Agent SDK en Python ?
Qui répond à la question ?
Et si personne ne répond avant la fin du délai ?
Laissez votre agent Claude Agent SDK 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.