Passer au contenu principal

Installation

Le SDK regroupe un binaire Claude Code natif pour votre plateforme en tant que dépendance optionnelle telle que @anthropic-ai/claude-agent-sdk-darwin-arm64. Vous n’avez pas besoin d’installer Claude Code séparément. Si votre gestionnaire de paquets ignore les dépendances optionnelles, le SDK lève Native CLI binary for <platform> not found ; définissez pathToClaudeCodeExecutable sur un binaire claude installé séparément à la place.

Compiler en un seul exécutable

Lorsque vous compilez votre application en un exécutable à fichier unique avec bun build --compile, le SDK ne peut pas résoudre le binaire CLI fourni au moment de l’exécution. require.resolve ne fonctionne pas à l’intérieur du système de fichiers virtuel $bunfs de l’exécutable compilé, donc le SDK lève Native CLI binary for <platform> not found. Pour contourner ce problème, intégrez le binaire de plateforme en tant que ressource de fichier, extrayez-le vers un chemin réel au démarrage avec extractFromBunfs(), et transmettez ce chemin à pathToClaudeCodeExecutable. L’assistant extractFromBunfs() nécessite @anthropic-ai/claude-agent-sdk v0.3.144 ou ultérieur. L’exemple ci-dessous compile pour macOS sur Apple Silicon :
extractFromBunfs() copie le binaire intégré hors du système de fichiers virtuel de l’exécutable compilé vers un répertoire temporaire par utilisateur et retourne le chemin réel. En dehors d’un exécutable compilé, il retourne le chemin d’entrée inchangé, donc le même code s’exécute en développement sans modification. Chaque exécutable compilé intègre le binaire d’une seule plateforme. Faites correspondre le package de plateforme dans l’importation à votre --target :
  • Pour la compilation croisée, installez le package de plateforme non correspondant, par exemple npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force.
  • Sur Windows, le sous-chemin binaire est claude.exe, par exemple @anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.

Fonctions

query()

La fonction principale pour interagir avec Claude Code. Crée un générateur asynchrone qui diffuse les messages au fur et à mesure de leur arrivée.

Paramètres

Retours

Retourne un objet Query qui étend AsyncGenerator<SDKMessage, void> avec des méthodes supplémentaires.

startup()

Préconfigure le sous-processus CLI en le générant et en complétant la poignée de main d’initialisation avant qu’une invite soit disponible. Le handle WarmQuery retourné accepte une invite plus tard et l’écrit dans un processus déjà prêt, de sorte que le premier appel query() se résout sans payer le coût de génération et d’initialisation du sous-processus en ligne.

Paramètres

Retours

Retourne une Promise<WarmQuery> qui se résout une fois que le sous-processus a été généré et a complété sa poignée de main d’initialisation.

Exemple

Appelez startup() tôt, par exemple au démarrage de l’application, puis appelez .query() sur le handle retourné une fois qu’une invite est prête. Cela déplace la génération du sous-processus et l’initialisation en dehors du chemin critique.

tool()

Crée une définition d’outil MCP type-safe pour une utilisation avec les serveurs MCP du SDK.

Paramètres

ToolAnnotations

Réexportée depuis @modelcontextprotocol/sdk/types.js. Tous les champs sont des indices optionnels ; les clients ne doivent pas s’y fier pour les décisions de sécurité.

createSdkMcpServer()

Crée une instance de serveur MCP qui s’exécute dans le même processus que votre application.

Paramètres

listSessions()

Découvre et répertorie les sessions passées avec des métadonnées légères. Filtrez par répertoire de projet ou répertoriez les sessions dans tous les projets.

Paramètres

Type de retour : SDKSessionInfo

Exemple

Imprimez les 10 sessions les plus récentes pour un projet. Les résultats sont triés par lastModified décroissant, donc le premier élément est le plus récent. Omettez dir pour rechercher dans tous les projets.

getSessionMessages()

Lit les messages utilisateur et assistant à partir d’une transcription de session passée.

Paramètres

Type de retour : SessionMessage

Exemple

getSessionInfo()

Lit les métadonnées d’une seule session par ID sans analyser le répertoire de projet complet.

Paramètres

Retourne SDKSessionInfo, ou undefined si la session n’est pas trouvée.

renameSession()

Renomme une session en ajoutant une entrée de titre personnalisé. Les appels répétés sont sûrs ; le titre le plus récent gagne.

Paramètres

tagSession()

Étiquette une session. Passez null pour effacer l’étiquette. Les appels répétés sont sûrs ; l’étiquette la plus récente gagne.

Paramètres

resolveSettings()

Résout les paramètres Claude Code effectifs pour un répertoire donné en utilisant le même moteur de fusion que l’interface CLI, sans générer l’interface CLI Claude. Utilisez-le pour inspecter quelle configuration un appel query() verrait avant d’en invoquer un.
Cette fonction est en version alpha et son API peut changer avant la stabilisation. Elle lit les sources MDM, y compris la liste de propriétés macOS et Windows HKLM/HKCU, pour la parité avec le démarrage de l’interface CLI, mais n’exécute pas le sous-processus policyHelper configuré par l’administrateur. Le champ permissions.defaultMode est retourné tel quel de tous les niveaux, y compris les paramètres de projet. Le filtre de confiance que l’interface CLI applique avant d’honorer les modes de permission croissants n’est pas appliqué.

Paramètres

resolveSettings() accepte un seul objet d’options. Tous les champs sont optionnels.

Type de retour : ResolvedSettings

resolveSettings() retourne un objet décrivant les paramètres fusionnés et la source qui a contribué à chaque clé.

Exemple

L’exemple ci-dessous résout les paramètres pour un répertoire de projet et imprime la source qui contrôle la période de nettoyage.

Types

Options

Objet de configuration pour la fonction query().

Gérer les réponses API lentes ou bloquées

Le sous-processus CLI lit plusieurs variables d’environnement qui contrôlent les délais d’expiration de l’API et la détection de blocage. Transmettez-les via l’option env :
  • API_TIMEOUT_MS : délai d’expiration par requête sur le client Anthropic, en millisecondes. Par défaut 600000. S’applique à la boucle principale et à tous les sous-agents.
  • CLAUDE_CODE_MAX_RETRIES : tentatives API maximales. Par défaut 10, limité à 15. Chaque tentative obtient sa propre fenêtre API_TIMEOUT_MS, donc le pire cas de temps mural est approximativement API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1) plus le backoff. Pour les exécutions sans surveillance qui doivent attendre des pannes plus longues, définissez CLAUDE_CODE_RETRY_WATCHDOG=1 : il réessaye les erreurs de capacité indéfiniment, et à partir de Claude Code v2.1.199 augmente la valeur par défaut pour les autres erreurs transitoires à 300 et supprime le plafond sur cette variable.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS : chien de garde de blocage pour les sous-agents lancés avec run_in_background. Par défaut 600000. Réinitialise à chaque événement de flux ; en cas de blocage, il abandonne le sous-agent, marque la tâche comme échouée et expose l’erreur au parent avec tout résultat partiel. Ne s’applique pas aux sous-agents synchrones.
  • CLAUDE_ENABLE_STREAM_WATCHDOG avec CLAUDE_STREAM_IDLE_TIMEOUT_MS : abandonne la requête quand les en-têtes sont arrivés mais que le corps de la réponse cesse de diffuser. Le chien de garde est activé par défaut pour tous les fournisseurs ; définissez CLAUDE_ENABLE_STREAM_WATCHDOG=0 pour le désactiver. CLAUDE_STREAM_IDLE_TIMEOUT_MS par défaut à 300000 et est limité à ce minimum. La requête abandonnée passe par le chemin de tentative normal.

Objet Query

Interface retournée par la fonction query().

Méthodes

applyFlagSettings()

Change n’importe quel paramètre sur une session en cours d’exécution sans redémarrer la requête. Utilisez-le quand un paramètre qui n’a pas de setter dédié doit changer en milieu de session, comme resserrer permissions après que l’agent ait lu une entrée non fiable. setModel() et setPermissionMode() sont des setters dédiés pour ces deux clés ; applyFlagSettings() est la forme générale qui accepte n’importe quel sous-ensemble des clés de paramètres, et passer model ici se comporte de la même manière que setModel(). Seules certaines clés prennent effet en milieu de session :
  • Appliquées au tour suivant : model, effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Basculer agent applique également le remplacement de modèle, les hooks et l’invite système de cet agent au tour suivant.
  • Aucun effet en milieu de session : les options d’invite système. Celles-ci sont résolues une fois au démarrage, donc la session en cours d’exécution conserve la valeur d’origine même si l’appel réussit. Pour les modifier, démarrez une nouvelle session.
effortLevel accepte un nom de niveau d’effort. Il accepte également "ultracode", qui exécute la session au niveau d’effort xhigh et active ultracode. Le type Settings déclare effortLevel sans cette valeur, donc passez l’équivalent { ultracode: true } en TypeScript. La valeur ultracode nécessite Claude Code v2.1.203 ou ultérieur et n’est acceptée que par applyFlagSettings(), pas par la clé effortLevel dans un fichier de paramètres. Les valeurs sont écrites dans la couche de paramètres d’indicateur, la même couche que l’option settings en ligne de query() remplit au démarrage. Les paramètres d’indicateur se situent près du haut de l’ordre de précédence des paramètres : ils remplacent les paramètres utilisateur, projet et locaux, et seuls les paramètres de politique gérée peuvent les remplacer. C’est le même niveau que la section de précédence sur la page appelle les options programmatiques. Les appels successifs fusionnent superficiellement les clés de niveau supérieur. Un deuxième appel avec { permissions: {...} } remplace l’objet permissions entier de l’appel précédent plutôt que de le fusionner profondément. Pour effacer une clé de la couche d’indicateur et revenir aux sources de précédence inférieure, passez null pour cette clé. Passer undefined n’a aucun effet car la sérialisation JSON le supprime. Disponible uniquement en mode d’entrée en diffusion, la même contrainte que setModel() et setPermissionMode(). L’exemple ci-dessous bascule le modèle actif en milieu de session, puis efface le remplacement pour que le modèle revienne à ce que les paramètres utilisateur ou projet spécifient.
applyFlagSettings() est TypeScript uniquement. Le SDK Python n’expose pas de méthode équivalente.

WarmQuery

Handle retourné par startup(). Le sous-processus est déjà généré et initialisé, donc appeler query() sur ce handle écrit l’invite directement dans un processus prêt sans latence de démarrage.

Méthodes

WarmQuery implémente AsyncDisposable, il peut donc être utilisé avec await using pour le nettoyage automatique.

SDKControlInitializeResponse

Type de retour de initializationResult(). Contient les données d’initialisation de session.
Quand un client envoie initialize à une session qui est déjà en cours d’exécution, le wrapper de réponse de contrôle porte également un tableau pending_permission_requests optionnel. Le champ se trouve sur le wrapper de réponse lui-même, pas dans la charge utile SDKControlInitializeResponse ci-dessus. Chaque entrée est un message control_request complet avec la même forme { type: "control_request", request_id, request } que la session diffuse pour les demandes de permission lors de l’exécution. Ce sont des demandes qui ont été émises avant que le client se connecte et attendent toujours une réponse. Le SDK lit le tableau pour vous et distribue chaque entrée à votre rappel canUseTool, la même redistribution que reinitialize() déclenche après une interruption de transport. Gérez les ID de requête répétés de manière idempotente, car une entrée peut répéter une requête que le rappel a déjà reçue avant que la connexion ne soit interrompue.

SDKControlInterruptResponse

Le reçu d’interruption : la valeur que interrupt() se résout avec sur une CLI qui annonce la capacité interrupt_receipt_v1 dans SDKSystemMessage.capabilities. Nécessite Claude Code v2.1.205 ou ultérieur. Les CLI antérieures répondent à l’interruption avec une charge utile de succès vide, donc interrupt() se résout à undefined.
still_queued liste les UUID des messages utilisateur qui survivent à l’interruption : messages toujours en attente, plus tout lot déjà retiré de la file d’attente pour le tour suivant mais pas encore accessible par l’abandon. Chacun s’exécute comme son propre tour après l’interruption sauf si vous l’annulez d’abord. Utilisez le reçu pour décider si vous devez renvoyer quelque chose ; renvoyer un message qui est déjà listé produit un tour en double. Interprétez la liste avec ces avertissements :
  • Seuls les messages qui ont été mis en attente avec un UUID apparaissent. Un tableau vide ne signifie pas que rien d’autre ne s’exécutera.
  • Seuls les messages du thread principal sont listés. Les messages adressés à un sous-agent sont hors de portée.
  • La liste peut inclure des UUID que votre client n’a jamais envoyés, comme les déclencheurs de tâche programmée. Ignorez les UUID que vous ne reconnaissez pas au lieu de les traiter comme une erreur.
Le reçu est un instantané pris au moment où l’interruption est traitée, et sur une interruption propre, il arrive avant le SDKResultMessage du tour interrompu. Lisez le reçu plutôt que d’inspecter la file d’attente après ce résultat : la boucle démarre immédiatement le tour en attente suivant, donc la file d’attente que vous inspectez après le résultat a déjà changé.

AgentDefinition

Configuration pour un sous-agent défini par programmation.

AgentMcpServerSpec

Spécifie les serveurs MCP disponibles pour un sous-agent. Peut être un nom de serveur (chaîne référençant un serveur de la configuration mcpServers du parent) ou une configuration de serveur en ligne enregistrant les noms de serveur aux configurations.
McpServerConfigForProcessTransport est McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

Contrôle les sources de configuration basées sur le système de fichiers que le SDK charge les paramètres à partir de.

Comportement par défaut

Quand settingSources est omis ou undefined, query() charge les mêmes paramètres du système de fichiers que la CLI Claude Code : utilisateur, projet et local. Les paramètres de politique gérée sont chargés dans tous les cas ; les paramètres gérés par le serveur sont récupérés quand la session s’authentifie avec une credential d’organisation sur une configuration éligible. Voir Ce que settingSources ne contrôle pas pour les entrées qui sont lues indépendamment de cette option, et comment les désactiver.

Pourquoi utiliser settingSources

Désactiver les paramètres du système de fichiers :
Charger tous les paramètres du système de fichiers explicitement :
Charger uniquement des sources de paramètres spécifiques :
Environnements de test et CI :
Applications SDK uniquement :
Chargement des instructions de projet CLAUDE.md :

Précédence des paramètres

Quand plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (la plus haute à la plus basse) :
  1. Paramètres locaux (.claude/settings.local.json)
  2. Paramètres de projet (.claude/settings.json)
  3. Paramètres utilisateur (~/.claude/settings.json)
Les options programmatiques telles que agents, allowedTools, et settings remplacent les paramètres du système de fichiers utilisateur, projet et local. Les paramètres de politique gérée ont la priorité sur les options programmatiques.

PermissionMode

CanUseTool

Type de fonction de permission personnalisée pour contrôler l’utilisation des outils. La fonction est le remplacement SDK pour l’invite de permission interactive : elle est invoquée uniquement quand le flux d’évaluation de permission se termine par une invite. Les appels d’outils déjà approuvés par une entrée allowedTools, une règle d’autorisation de paramètres, ou le mode de permission, comme acceptEdits ou bypassPermissions, ne l’invoquent jamais. Pour contrôler chaque appel d’outil, utilisez un hook PreToolUse à la place. AskUserQuestion, les outils MCP marqués requiresUserInteraction, et les outils connecteur que votre organisation a définis sur ask l’atteignent même quand une règle d’autorisation correspond. En mode dontAsk ces appels sont refusés à la place, sans l’invoquer.
Le rappel résout normalement la demande en retournant un PermissionResult, que le SDK écrit en retour sur son transport en tant que control_response. Retournez null uniquement quand votre application a déjà envoyé la control_response pour cette demande sur son propre canal, en répétant requestId ; le SDK saute alors l’écriture de la réponse sur son transport. Retourner null dans tout autre cas laisse l’appel d’outil bloqué indéfiniment, car aucune control_response n’est jamais envoyée et les invites de permission ne s’écoulent pas. L’option requestId et la valeur de retour null nécessitent Claude Code v2.1.199 ou ultérieur.

PermissionResult

Résultat d’une vérification de permission.

ToolConfig

Configuration pour le comportement des outils intégrés.

McpServerConfig

Configuration pour les serveurs MCP.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

Configuration pour charger les plugins dans le SDK.
Exemple :
Pour des informations complètes sur la création et l’utilisation de plugins, voir Plugins.

Types de messages

SDKMessage

Type union de tous les messages possibles retournés par la requête.

SDKAssistantMessage

Message de réponse assistant.
Le champ message est un BetaMessage du SDK Anthropic. Il inclut des champs comme id, content, model, stop_reason et usage. SDKAssistantMessageError est l’un de : 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens' ou 'unknown'. 'model_not_found' signifie que le modèle sélectionné n’existe pas ou n’est pas disponible pour votre compte ou déploiement. 'overloaded' signifie que l’API a retourné un 529 parce que le serveur est à pleine capacité, par opposition à 'rate_limit', qui est un 429 contre votre quota.

SDKUserMessage

Message d’entrée utilisateur.
Définissez shouldQuery sur false pour ajouter le message à la transcription sans déclencher un tour assistant. Le message est conservé et fusionné dans le prochain message utilisateur qui déclenche un tour. Utilisez ceci pour injecter du contexte, comme la sortie d’une commande que vous avez exécutée en dehors de la bande, sans dépenser un appel de modèle. Sur un message qui porte un bloc tool_result, tool_use_result est l’objet de sortie structuré de l’outil plutôt que le texte envoyé au modèle. Sa forme dépend de l’outil nommé par le bloc tool_use correspondant, donc le champ est typé unknown ; les formes intégrées sont listées sous Types de sortie d’outil. Pour l’outil Agent, tool_use_result est AgentOutput. Sur un résultat completed, content contient le rapport du sous-agent sans l’ID d’agent et la remorque d’utilisation que Claude Code ajoute au texte tool_result, donc rendez à partir de tool_use_result au lieu d’analyser ce texte.

SDKUserMessageReplay

Message utilisateur rejoué avec UUID requis.
Un tour utilisateur injecté de l’extérieur de la session, dont le origin est peer ou channel, atteint le flux en tant que relecture, qu’il ait été livré pendant un tour actif ou ait démarré un nouveau tour alors que la session était inactive. Avant v2.1.207, un tour injecté livré alors que la session était inactive ne produisait aucun message sur le flux et n’apparaissait que lorsque vous relisiez la transcription.

SDKResultMessage

Message de résultat final.
Plusieurs champs du résultat portent des détails diagnostiques au-delà du subtype :
  • api_error_status : le code de statut HTTP de l’erreur API qui a terminé la conversation. Absent ou null quand le tour s’est terminé sans erreur API.
  • ttft_ms : temps jusqu’au premier jeton en millisecondes, mesuré quand le premier message assistant complet arrive. Présent uniquement sur le bras de succès.
  • ttft_stream_ms : temps en millisecondes jusqu’au premier événement de flux message_start, quand le flux de réponse s’ouvre. Inférieur à ttft_ms ; l’écart entre les deux est le temps passé à diffuser le premier message. Présent uniquement sur le bras de succès.
  • terminal_reason : pourquoi la boucle s’est terminée. L’un de "completed", "max_turns", "tool_deferred", "aborted_streaming", "aborted_tools", "hook_stopped", "stop_hook_prevented", "background_requested", "blocking_limit", "rapid_refill_breaker", "prompt_too_long", "image_error", "model_error", "api_error", "malformed_tool_use_exhausted", "budget_exhausted", "structured_output_retry_exhausted", "tool_deferred_unavailable" ou "turn_setup_failed".
  • fast_mode_state : l’un de "on", "off" ou "cooldown".
Le champ origin transmet le SDKMessageOrigin du message utilisateur qui a déclenché ce résultat. Quand une tâche de fond se termine et que le SDK injecte un tour de suivi synthétique, le SDKResultMessage résultant porte origin: { kind: "task-notification" }. Vérifiez ce champ pour distinguer les résultats qui répondent à votre invite des résultats émis pour les suivis de tâches de fond, afin que vous puissiez acheminer ou supprimer ces derniers. Le champ est absent pour les résultats émis avant tout tour utilisateur, comme les erreurs de démarrage. Quand un hook PreToolUse retourne permissionDecision: "defer", le résultat a stop_reason: "tool_deferred" et deferred_tool_use porte l’id, le name et l’input de l’outil en attente. Lisez ce champ pour afficher la demande dans votre propre interface utilisateur, puis reprenez avec le même session_id pour continuer. Consultez Différer un appel d’outil pour plus tard pour le trajet complet.

SDKSystemMessage

Message d’initialisation système.
Le tableau capabilities nomme les comportements de protocole que ce CLI implémente, afin que vous puissiez détecter les fonctionnalités au lieu de comparer les chaînes claude_code_version. C’est un ensemble ouvert : ignorez les valeurs que vous ne reconnaissez pas, et vérifiez la capacité spécifique dont vous dépendez. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent sur les CLI antérieurs.

SDKPartialAssistantMessage

Message partiel en diffusion (uniquement quand includePartialMessages est true). Le champ parent_tool_use_id est toujours null : les événements de flux sont émis pour la session principale uniquement. Pour l’attribution de sous-agent, utilisez les messages complets, qui portent parent_tool_use_id, ou activez forwardSubagentText pour recevoir le texte et la réflexion du sous-agent en tant que messages complets.

SDKCompactBoundaryMessage

Message indiquant une limite de compaction de conversation.

SDKInformationalMessage

Bannière de texte générique émise par la boucle. Porte les lignes d’état non-erreur, les retours de hook comme la raison de blocage d’un hook UserPromptSubmit, et la sortie de commande. Rendez content en texte brut au level donné.

SDKWorkerShuttingDownMessage

Émis lors de l’arrêt gracieux du worker afin que les clients distants puissent montrer pourquoi le worker a disparu au lieu d’attendre l’expiration du heartbeat. La reason est une courte chaîne snake_case définie par le CLI hôte, comme "host_exit" ou "remote_control_disabled". Agissez sur ceci uniquement lors de la diffusion en direct. Une session reprise rejoue les instances passées de ce message, donc ignorez-les dans ce cas.

SDKPluginInstallMessage

Événement de progression d’installation de plugin. Émis quand CLAUDE_CODE_SYNC_PLUGIN_INSTALL est défini, pour que votre application Agent SDK puisse suivre l’installation du plugin de marketplace avant le premier tour. Les statuts started et completed encadrent l’installation globale. Les statuts installed et failed rapportent les marchés individuels et incluent name.

SDKPermissionDeniedMessage

Événement de flux émis quand le système de permissions refuse automatiquement un appel d’outil sans invite interactive. Utilisez-le pour afficher le refus dans votre interface utilisateur au fur et à mesure, plutôt que d’observer uniquement le résultat d’outil is_error qui suit. Le chemin de demande interactive atteint votre application séparément via le callback canUseTool. Les refus émis par un hook PreToolUse ne sont pas signalés via cet événement. Cet événement nécessite Claude Code v2.1.136 ou ultérieur.

SDKPermissionDenial

Informations sur une utilisation d’outil refusée.

SDKMessageOrigin

Provenance d’un message de rôle utilisateur. Ceci apparaît comme origin sur SDKUserMessage et est transmis au SDKResultMessage correspondant afin que vous puissiez dire ce qui a déclenché un tour donné.

Types de hook

Pour un guide complet sur l’utilisation des hooks avec des exemples et des modèles courants, voir le guide des hooks.

HookEvent

Événements de hook disponibles.

HookCallback

Type de fonction de rappel de hook.

HookCallbackMatcher

Configuration de hook avec matcher optionnel.

HookInput

Type union de tous les types d’entrée de hook.

BaseHookInput

Interface de base que tous les types d’entrée de hook étendent.
Le champ prompt_id est un UUID identifiant l’invite utilisateur actuellement traitée. Il correspond à l’attribut prompt.id sur les événements OpenTelemetry et est absent jusqu’à la première entrée utilisateur. Nécessite Claude Code v2.1.196 ou ultérieur.

PreToolUseHookInput

PostToolUseHookInput

PostToolUseFailureHookInput

PostToolBatchHookInput

S’exécute une fois après que chaque appel d’outil dans un lot ait été résolu, avant la prochaine demande de modèle. tool_response porte le contenu tool_result sérialisé que le modèle voit ; la forme diffère de l’objet Output structuré de PostToolUseHookInput.

NotificationHookInput

UserPromptSubmitHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCompletedHookInput

ConfigChangeHookInput

WorktreeCreateHookInput

WorktreeRemoveHookInput

MessageDisplayHookInput

HookJSONOutput

Valeur de retour du hook.

AsyncHookJSONOutput

SyncHookJSONOutput

Types d’entrée d’outil

Documentation des schémas d’entrée pour tous les outils Claude Code intégrés. Ces types sont exportés depuis @anthropic-ai/claude-agent-sdk et peuvent être utilisés pour les interactions d’outils type-safe.

ToolInputSchemas

Union de tous les types d’entrée d’outil, exportée depuis @anthropic-ai/claude-agent-sdk.

Agent

Nom de l’outil : Agent (précédemment Task, qui est toujours accepté comme alias)
Lance un nouvel agent pour gérer les tâches complexes et multi-étapes de manière autonome.

AskUserQuestion

Nom de l’outil : AskUserQuestion
Pose des questions de clarification à l’utilisateur pendant l’exécution. Voir Gérer les approbations et l’entrée utilisateur pour les détails d’utilisation.

Bash

Nom de l’outil : Bash
Exécute les commandes bash dans une session shell persistante avec délai d’expiration optionnel et exécution en arrière-plan.

Monitor

Nom de l’outil : Monitor
Exécute une source de fond et livre chaque événement à Claude pour qu’il puisse réagir sans interrogation : command exécute un script et émet un événement par ligne stdout, et ws ouvre une WebSocket et émet un événement par trame texte. Fournissez exactement l’un de command ou ws. La source ws nécessite Claude Code v2.1.195 ou version ultérieure. Définissez persistent: true pour les montres de longueur de session telles que les queues de journal. Lorsque Monitor exécute une commande, il suit les mêmes règles de permission que Bash ; une montre WebSocket demande une approbation séparément. Voir la référence de l’outil Monitor pour le comportement et la disponibilité du fournisseur.

TaskOutput

Nom de l’outil : TaskOutput
Récupère la sortie d’une tâche de fond en cours d’exécution ou terminée.

Edit

Nom de l’outil : Edit
Effectue des remplacements de chaînes exacts dans les fichiers.

Read

Nom de l’outil : Read
Lit les fichiers du système de fichiers local, y compris le texte, les images, les PDF et les carnets Jupyter. Utilisez pages pour les plages de pages PDF (par exemple, "1-5").

Write

Nom de l’outil : Write
Écrit un fichier dans le système de fichiers local, en écrasant s’il existe.

Glob

Nom de l’outil : Glob
Correspondance de motif de fichier rapide qui fonctionne avec n’importe quelle taille de base de code.

Grep

Nom de l’outil : Grep
Outil de recherche puissant construit sur ripgrep avec support regex.

TaskStop

Nom de l’outil : TaskStop
Arrête une tâche de fond en cours d’exécution ou un shell par ID. À partir de v2.1.198, task_id accepte également un coéquipier d’équipe d’agent ou un agent de fond nommé par ID d’agent ou nom.

NotebookEdit

Nom de l’outil : NotebookEdit
Édite les cellules dans les fichiers de carnet Jupyter.

WebFetch

Nom de l’outil : WebFetch
Récupère le contenu d’une URL et le traite avec un modèle IA.

WebSearch

Nom de l’outil : WebSearch
Recherche le web et retourne les résultats formatés.

Workflow

Nom de l’outil : Workflow
Exécute un flux de travail dynamique : un script qui orchestre de nombreux sous-agents en arrière-plan et retourne un résultat consolidé. L’outil Workflow est disponible dans Agent SDK v0.3.149 et versions ultérieures. Au moins l’un de script, name ou scriptPath est requis.

TodoWrite

Nom de l’outil : TodoWrite
Crée et gère une liste de tâches structurée pour suivre la progression.
À partir du TypeScript Agent SDK 0.3.142, TodoWrite est désactivé par défaut. Utilisez TaskCreate, TaskGet, TaskUpdate et TaskList à la place. Voir Migrer vers les outils Task pour mettre à jour votre code de surveillance, ou définissez CLAUDE_CODE_ENABLE_TASKS=0 pour revenir à TodoWrite.

TaskCreate

Nom de l’outil : TaskCreate
Crée une seule tâche et retourne son ID assigné.

TaskUpdate

Nom de l’outil : TaskUpdate
Corrige une tâche par ID. Définissez status à "deleted" pour la supprimer.

TaskGet

Nom de l’outil : TaskGet
Retourne les détails complets d’une tâche, ou null lorsque l’ID n’est pas trouvé.

TaskList

Nom de l’outil : TaskList
Retourne un instantané de toutes les tâches dans la liste actuelle.

ExitPlanMode

Nom de l’outil : ExitPlanMode
Quitte le mode de planification. Le champ allowedPrompts est déprécié et ignoré ; Claude Code l’accepte toujours pour que les appelants existants et les transcriptions se valident. Avant v2.1.205, il demandait des permissions Bash basées sur les invites pour implémenter le plan.

ListMcpResources

Nom de l’outil : ListMcpResourcesTool
Répertorie les ressources MCP disponibles à partir des serveurs connectés.

ReadMcpResource

Nom de l’outil : ReadMcpResourceTool
Lit une ressource MCP spécifique à partir d’un serveur.

EnterWorktree

Nom de l’outil : EnterWorktree
Crée et entre dans un worktree git temporaire pour un travail isolé. Passez path pour basculer dans un worktree existant au lieu d’en créer un nouveau. À la première entrée, la cible doit être un worktree enregistré du référentiel actuel ou, dans un espace de travail multi-référentiel, d’un référentiel imbriqué à l’intérieur ; depuis une session worktree, elle doit être sous .claude/worktrees/ du référentiel de la session. name et path s’excluent mutuellement.

Types de sortie d’outil

Documentation des schémas de sortie pour tous les outils Claude Code intégrés. Ces types sont exportés depuis @anthropic-ai/claude-agent-sdk et représentent les données de réponse réelles retournées par chaque outil.

ToolOutputSchemas

Union de tous les types de sortie d’outil.

Agent

Nom de l’outil : Agent (précédemment Task, qui est toujours accepté comme alias)
Retourne le résultat du sous-agent. Discriminé sur le champ status : "completed" pour les tâches terminées, "async_launched" pour les tâches de fond, et "remote_launched" pour les tâches que Claude Code a envoyées à une session cloud distante, où sessionUrl renvoie à cette session et taskId l’identifie. Le champ resolvedModel sur les variantes completed et async_launched nomme le modèle sur lequel le sous-agent a réellement fonctionné, qui peut différer du modèle demandé en entrée model lorsque availableModels ou une autre substitution s’applique. Ce champ nécessite Claude Code v2.1.174 ou ultérieur. Sur la variante completed, worktreePath est défini lorsque le sous-agent s’est exécuté dans un worktree git isolé, et worktreeBranch nomme la branche de ce worktree lorsque Claude Code l’a créée. usage.service_tier porte la chaîne de niveau de service que l’API a signalée pour les demandes du sous-agent. Avant v2.1.207, le type publié était plus étroit. Il omettait worktreePath, worktreeBranch, citations, toolStats.frameCount, et les champs d’utilisation inference_geo, speed et iterations, et il typait service_tier comme "standard" | "priority" | "batch". Les champs que le type marque comme optionnels peuvent être absents sur les résultats enregistrés par les versions antérieures.

AskUserQuestion

Nom de l’outil : AskUserQuestion
Retourne les questions posées et les réponses de l’utilisateur. response est défini lorsque l’utilisateur a tapé une réponse libre au lieu de répondre aux questions structurées ; lorsqu’il est présent, Claude reçoit « L’utilisateur a répondu : … » au lieu de la liste de réponses par question.

Bash

Nom de l’outil : Bash
Retourne la sortie de la commande avec stdout/stderr séparés. Les commandes de fond incluent un backgroundTaskId.

Monitor

Nom de l’outil : Monitor
Retourne l’ID de tâche de fond pour le moniteur en cours d’exécution. Utilisez cet ID avec TaskStop pour annuler la surveillance plus tôt.

Edit

Nom de l’outil : Edit
Retourne le diff structuré de l’opération d’édition.

Read

Nom de l’outil : Read
Retourne le contenu du fichier dans un format approprié au type de fichier. Discriminé sur le champ type.

Write

Nom de l’outil : Write
Retourne le résultat d’écriture avec les informations de diff structuré.

Glob

Nom de l’outil : Glob
Retourne les chemins de fichiers correspondant au motif glob, triés par heure de modification.

Grep

Nom de l’outil : Grep
Retourne les résultats de recherche. La forme varie selon mode : liste de fichiers, contenu avec correspondances ou comptages de correspondances.

TaskStop

Nom de l’outil : TaskStop
Retourne la confirmation après l’arrêt de la tâche de fond.

NotebookEdit

Nom de l’outil : NotebookEdit
Retourne le résultat de l’édition du carnet avec le contenu du fichier original et mis à jour.

WebFetch

Nom de l’outil : WebFetch
Retourne le contenu récupéré avec le statut HTTP et les métadonnées.

WebSearch

Nom de l’outil : WebSearch
Retourne les résultats de recherche du web.

Workflow

Nom de l’outil : Workflow
Retourne immédiatement après que l’outil accepte l’invocation. Le résultat final arrive plus tard en tant que complément de tâche. Vérifiez error avant de traiter l’exécution comme démarrée : un script qui échoue sa vérification de syntaxe retourne status: "async_launched" avec error défini, et ne s’exécute jamais.

TodoWrite

Nom de l’outil : TodoWrite
Retourne les listes de tâches précédentes et mises à jour.
À partir du TypeScript Agent SDK 0.3.142, TodoWrite est désactivé par défaut. Utilisez TaskCreate, TaskGet, TaskUpdate et TaskList à la place. Consultez Migrer vers les outils Task pour mettre à jour votre code de surveillance, ou définissez CLAUDE_CODE_ENABLE_TASKS=0 pour revenir à TodoWrite.

TaskCreate

Nom de l’outil : TaskCreate
Retourne la tâche créée avec son ID assigné.

TaskUpdate

Nom de l’outil : TaskUpdate
Retourne le résultat de la mise à jour, y compris les champs qui ont changé.

TaskGet

Nom de l’outil : TaskGet
Retourne l’enregistrement de tâche complet, ou null lorsque l’ID n’est pas trouvé.

TaskList

Nom de l’outil : TaskList
Retourne un instantané de toutes les tâches dans la liste actuelle.

ExitPlanMode

Nom de l’outil : ExitPlanMode
Retourne l’état du plan après la sortie du mode de planification.

ListMcpResources

Nom de l’outil : ListMcpResourcesTool
Retourne un tableau de ressources MCP disponibles.

ReadMcpResource

Nom de l’outil : ReadMcpResourceTool
Retourne le contenu de la ressource MCP demandée.

EnterWorktree

Nom de l’outil : EnterWorktree
Retourne les informations sur le worktree git.

Types de permission

PermissionUpdate

Opérations pour mettre à jour les permissions.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Autres types

ApiKeySource

SdkBeta

Fonctionnalités bêta disponibles qui peuvent être activées via l’option betas. Voir En-têtes bêta pour plus d’informations.
La bêta context-1m-2025-08-07 est retirée à partir du 30 avril 2026. Passer cette valeur avec Claude Sonnet 4.5 ou Sonnet 4 n’a aucun effet, et les demandes qui dépassent la fenêtre de contexte standard de 200 k tokens retournent une erreur. Pour utiliser une fenêtre de contexte de 1 M tokens, migrez vers Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7 ou Claude Opus 4.8, qui incluent 1 M de contexte à prix standard sans en-tête bêta requis.

SlashCommand

Informations sur une commande slash disponible.

ModelInfo

Informations sur un modèle disponible.

AgentInfo

Informations sur un sous-agent disponible qui peut être invoqué via l’outil Agent.

McpServerStatus

Statut d’un serveur MCP connecté.

McpServerStatusConfig

La configuration d’un serveur MCP telle que rapportée par mcpServerStatus(). C’est l’union de tous les types de transport de serveur MCP.
Voir McpServerConfig pour les détails sur chaque type de transport.

AccountInfo

Informations de compte pour l’utilisateur authentifié.

ModelUsage

Statistiques d’utilisation par modèle retournées dans les messages de résultat. La valeur costUSD est une estimation côté client. Voir Suivi des coûts et de l’utilisation pour les avertissements de facturation.

ConfigScope

NonNullableUsage

Une version de Usage avec tous les champs nullables rendus non nullables.

Usage

Statistiques d’utilisation des tokens. C’est le type BetaUsage de @anthropic-ai/sdk.
BetaServerToolUsage et BetaIterationsUsage sont définis dans @anthropic-ai/sdk.

CallToolResult

Type de résultat d’outil MCP (depuis @modelcontextprotocol/sdk/types.js). structuredContent est un objet JSON qui peut être retourné aux côtés de content, incluant des blocs d’image. Voir Retourner des données structurées.

ThinkingConfig

Contrôle le comportement de réflexion/raisonnement de Claude. Prend la priorité sur le maxThinkingTokens déprécié.
Le champ display optionnel contrôle si le texte de réflexion est retourné "summarized" ou "omitted". Sur Claude Opus 4.7 et versions ultérieures, la valeur par défaut de l’API est "omitted", donc définissez "summarized" pour recevoir le contenu de réflexion dans les blocs thinking.

SpawnedProcess

Interface pour la génération de processus personnalisée (utilisée avec l’option spawnClaudeCodeProcess). ChildProcess satisfait déjà cette interface.

SpawnOptions

Options passées à la fonction de génération personnalisée.
Le champ signal indique à votre fonction de génération quand arrêter le processus. Passez-le comme option signal à spawn() de Node, ou passez-le à votre gestionnaire d’arrêt de VM ou de conteneur.Ce signal ne se déclenche pas au moment où Options.abortController s’arrête. Le SDK ferme d’abord stdin du processus et attend environ deux secondes pour que l’interface de ligne de commande s’arrête proprement, puis arrête ce signal. Pour réagir au moment où l’appelant s’arrête, écoutez votre propre Options.abortController.signal, que votre fonction de génération peut référencer depuis sa portée englobante.

McpSetServersResult

Résultat d’une opération setMcpServers().

RewindFilesResult

Résultat d’une opération rewindFiles().

SDKStatusMessage

Message de mise à jour de statut (par exemple, compaction).

SDKTaskNotificationMessage

Notification quand une tâche de fond se termine, échoue ou est arrêtée. Les tâches de fond incluent les commandes Bash run_in_background, les montres Monitor et les sous-agents de fond.

SDKToolUseSummaryMessage

Résumé de l’utilisation des outils dans une conversation.

SDKHookStartedMessage

Émis quand un hook commence à s’exécuter. Claude Code livre ce message, SDKHookProgressMessage et SDKHookResponseMessage au flux de messages immédiatement, y compris pendant qu’un hook SessionStart ou Setup s’exécute encore lors du démarrage de la session. Claude Code v2.1.169 à v2.1.203 a livré ces messages en un seul lot après qu’un hook SessionStart ou Setup se soit terminé ; v2.1.204 a restauré la livraison en direct.

SDKHookProgressMessage

Émis pendant qu’un hook s’exécute, avec la sortie stdout/stderr.

SDKHookResponseMessage

Émis quand un hook termine l’exécution.

SDKToolProgressMessage

Émis périodiquement pendant qu’un outil s’exécute pour indiquer la progression.

SDKAuthStatusMessage

Émis pendant les flux d’authentification.

SDKTaskStartedMessage

Émis quand une tâche de fond commence. Le champ task_type est "local_bash" pour les commandes Bash de fond et les montres Monitor, "local_agent" pour les sous-agents ou "remote_agent".

SDKTaskProgressMessage

Émis périodiquement pendant qu’un sous-agent ou une tâche de fond s’exécute. Le champ summary est rempli uniquement quand agentProgressSummaries est activé.

SDKTaskUpdatedMessage

Émis quand l’état d’une tâche de fond change, par exemple quand elle passe de running à completed. Fusionnez patch dans votre carte de tâches locale indexée par task_id. Le champ end_time est un timestamp Unix epoch en millisecondes, comparable avec Date.now().

SDKBackgroundTasksChangedMessage

Émis chaque fois que l’ensemble des tâches de fond en direct change : une tâche démarre, se termine, est tuée, ou un agent de premier plan est mis en arrière-plan. Le tableau tasks est l’ensemble complet en direct. Remplacez tout ensemble en cache par chaque charge utile au lieu d’associer les événements task_started et task_notification, de sorte que le prochain changement d’adhésion corrige tout événement que vous avez manqué. L’ordre par rapport à ces événements par tâche n’est pas spécifié, donc ne mettez pas en corrélation les deux flux. Rien n’est émis au démarrage. Réinitialisez à un ensemble vide chaque fois que le processus CLI de la session démarre ou redémarre et laissez le prochain changement d’adhésion le repeupler. Nécessite Claude Code v2.1.203 ou ultérieur.

SDKThinkingTokensMessage

Émis pendant que Claude produit un bloc de réflexion, y compris un bloc masqué, portant une estimation en cours des tokens de réflexion générés jusqu’à présent. estimated_tokens est le total en cours pour le bloc de réflexion actuel et estimated_tokens_delta est l’incrément porté par cette trame. Utilisez-le pour l’affichage de la progression. Le décompte final pour la boucle d’agent de haut niveau est le usage.output_tokens du message de résultat, qui n’inclut pas les tokens des sous-agents ; utilisez modelUsage pour la comptabilité de l’arborescence complète. Nécessite Claude Code v2.1.153 ou ultérieur.

SDKFilesPersistedEvent

Émis quand les points de contrôle de fichiers sont persistés sur disque.

SDKRateLimitEvent

Émis quand la session rencontre une limite de débit.
Quand errorCode est "credits_required", le rejet provient d’un abonnement claude.ai dont l’utilisation incluse est épuisée, et la session ne peut pas continuer jusqu’à ce que l’utilisateur achète des crédits d’utilisation. canUserPurchaseCredits indique si l’utilisateur authentifié peut acheter des crédits pour le compte, et hasChargeableSavedPaymentMethod indique si une méthode de paiement enregistrée est disponible. Ces trois champs sont absents sur les événements de limite de débit qui ne sont pas des rejets de crédits requis. Nécessite Claude Code v2.1.181 ou ultérieur.

SDKLocalCommandOutputMessage

Sortie d’une commande slash locale (par exemple, /voice ou /usage). Affichée comme du texte de style assistant dans la transcription.

SDKCommandsChangedMessage

Émis quand l’ensemble des commandes disponibles change en cours de session, par exemple quand des compétences sont découvertes alors que l’agent entre dans un sous-répertoire. Le tableau commands est la liste complète mise à jour, donc remplacez toute liste de commandes en cache par cette charge utile. Appeler supportedCommands() à nouveau n’est pas équivalent : cette méthode retourne l’instantané capturé à l’initialisation et ne reflète pas les changements en cours de session.

SDKPromptSuggestionMessage

Émis après chaque tour quand promptSuggestions est activé. Contient une invite utilisateur suivante prédite.

SDKConversationResetMessage

Émis quand la conversation de la session est remplacée sans terminer la session, par exemple après /clear, à la sortie du mode plan, ou quand une nouvelle conversation démarre. Montez une transcription vide sous new_conversation_id et abandonnez tout titre de session en cache.
Les typages publiés du SDK déclarent SDKConversationResetMessage dans Claude Code v2.1.203 et ultérieur. Avant v2.1.203, SDKMessage référençait le type sans le déclarer, donc le rétrécissement sur type === "conversation_reset" n’a pas pu être typé quand skipLibCheck était désactivé.

AbortError

Classe d’erreur personnalisée pour les opérations d’abandon.

Configuration du sandbox

SandboxSettings

Configuration pour le comportement du sandbox. Utilisez ceci pour activer le sandboxing des commandes et configurer les restrictions réseau par programmation.
Le sandbox dépend du support de la plateforme et, sur Linux, d’outils comme bubblewrap et socat. Quand enabled est true et que le sandbox ne peut pas démarrer, query() signale un message result avec subtype: "error_during_execution" et la raison dans errors. Pour un appel query() à message unique, le SDK lève une exception après avoir produit ce résultat d’erreur, donc enveloppez la boucle dans un bloc try pour continuer au-delà. Voir Gérer le résultat pour le contrat d’erreur.Pour exécuter sans sandbox à la place, définissez failIfUnavailable: false.

Exemple d’utilisation

Sécurité des sockets Unix : L’option allowUnixSockets peut accorder l’accès à des services système puissants. Par exemple, permettre /var/run/docker.sock accorde effectivement un accès complet au système hôte via l’API Docker, contournant l’isolation du sandbox. Autorisez uniquement les sockets Unix strictement nécessaires et comprenez les implications de sécurité de chacun.

SandboxNetworkConfig

Configuration spécifique au réseau pour le mode sandbox. Ces paramètres s’appliquent aux commandes Bash sandboxées quand enabled est true dans le parent SandboxSettings. Ils ne restreignent pas l’outil WebFetch, qui utilise à la place les règles de permissions.
Le proxy sandbox intégré applique allowedDomains en fonction du nom d’hôte demandé et ne termine pas ou n’inspecte pas le trafic TLS, donc des techniques telles que le domain fronting peuvent potentiellement le contourner. Voir Limitations de sécurité du sandboxing pour les détails et Déploiement sécurisé pour configurer un proxy qui termine TLS.

SandboxFilesystemConfig

Configuration spécifique au système de fichiers pour le mode sandbox.

Repli des permissions pour les commandes non sandboxées

Quand allowUnsandboxedCommands est activé, le modèle peut demander l’exécution de commandes en dehors du sandbox en définissant dangerouslyDisableSandbox: true dans l’entrée de l’outil. Ces demandes reviennent au système de permissions existant, ce qui signifie que votre gestionnaire canUseTool est invoqué, vous permettant d’implémenter une logique d’autorisation personnalisée. Dans l’exemple ci-dessous, isCommandAuthorized représente une vérification d’autorisation que vous définissez.
excludedCommands vs allowUnsandboxedCommands :
  • excludedCommands : Une liste statique de commandes qui contournent toujours le sandbox automatiquement (par exemple, ['docker']). Le modèle n’a aucun contrôle sur ceci.
  • allowUnsandboxedCommands : Permet au modèle de décider à l’exécution s’il faut demander l’exécution non sandboxée en définissant dangerouslyDisableSandbox: true dans l’entrée de l’outil.
Ce modèle vous permet de :
  • Auditer les demandes du modèle : Enregistrer quand le modèle demande l’exécution non sandboxée
  • Implémenter des listes blanches : Permettre uniquement à des commandes spécifiques de s’exécuter sans sandbox
  • Ajouter des flux d’approbation : Exiger une autorisation explicite pour les opérations privilégiées
Les commandes s’exécutant avec dangerouslyDisableSandbox: true ont un accès complet au système. Assurez-vous que votre gestionnaire canUseTool valide ces demandes avec soin.Si permissionMode est défini sur bypassPermissions et allowUnsandboxedCommands est activé, le modèle peut exécuter de manière autonome des commandes en dehors du sandbox sans aucune invite d’approbation (une règle ask explicite en force toujours une). Cette combinaison permet effectivement au modèle d’échapper à l’isolation du sandbox silencieusement.

Voir aussi