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.

natif
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.

bash
npm i @pushary/claude-agent-sdk @anthropic-ai/claude-agent-sdk
une option
import { 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

$99/ mois, tous les frameworks inclus
Start free

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 ?
Pour soumettre les appels d’outils à vos utilisateurs, oui : @pushary/claude-agent-sdk fournit canUseTool et transmet chaque appel nécessitant une autorisation sur leur téléphone. Les outils autorisés via allowedTools ne l’atteignent jamais. Pour vos propres agents, le serveur MCP hébergé ne nécessite aucune installation : une entrée mcpServers et allowedTools suffisent.
Quels noms d’outils dois-je autoriser pour le serveur MCP ?
mcp__pushary__ask_user, mcp__pushary__wait_for_answer, mcp__pushary__send_notification et mcp__pushary__cancel_question. Le préfixe est mcp, puis le nom du serveur et celui de l’outil. Placez le serveur dans mcpServers avec votre clé API comme jeton Bearer.
Cela fonctionne-t-il avec Claude Agent SDK en Python ?
L’adaptateur est réservé à TypeScript. En Python, passez le serveur MCP hébergé dans ClaudeAgentOptions(mcp_servers={...}) avec l’en-tête Bearer et autorisez les mêmes noms d’outils, ou appelez decisions.ask de pip install pushary dans votre propre can_use_tool.
Qui répond à la question ?
Avec l’adaptateur, la personne dont vous passez l’identifiant utilisateur, votre propre identifiant pour elle. Elle connecte son téléphone une fois avec le lien de connect(). Vous pouvez aussi passer une fonction qui choisit une personne par appel. Via MCP, les téléphones connectés à votre espace Pushary répondent.
Et si personne ne répond avant la fin du délai ?
L’outil ne s’exécute pas. Le contrôle refuse l’appel et le modèle reçoit un refus qu’il peut lire. Annuler l’exécution arrête l’attente et refuse immédiatement.

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 free

Offre Partner, $99 par mois. Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.