Skip to main content

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. La plupart des installations n’ont pas besoin d’installation Claude Code séparée. La version du SDK suit la version du binaire Claude Code fourni. Le SDK v0.3.191 regroupe Claude Code v2.1.191, donc une fonctionnalité sur cette page qui nécessite une version Claude Code a besoin de la version du SDK avec le même numéro de correctif ou ultérieur. Si votre gestionnaire de paquets ignore les dépendances optionnelles, le SDK lève Native CLI binary for <platform>-<arch> not found ; définissez pathToClaudeCodeExecutable sur un binaire claude installé séparément à la place.Si votre gestionnaire de paquets n’applique pas le champ libc de npm, comme Yarn 1.x ne le fait pas, vous obtenez à la fois les packages de plateforme glibc et musl sur Linux, ce qui double à peu près la taille d’installation. Sur Agent SDK v0.2.141 ou ultérieur, le SDK lance toujours la variante correcte. Pour récupérer l’espace dans une image conteneur, supprimez le package de plateforme qui ne correspond pas au libc où votre application s’exécute ; pour un runtime glibc sur x64, c’est rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl. Sur une machine de développement, la suppression est temporaire, car Yarn réinstalle le package lors du prochain changement de dépendance.

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

Importer l’entrée /core lors du regroupement du SDK Agent

Si votre application regroupe le SDK Agent avec ses propres dépendances, importez depuis @anthropic-ai/claude-agent-sdk/core au lieu de la racine du package. L’entrée /core nécessite le SDK Agent TypeScript v0.3.282 ou ultérieur, et ses types nécessitent TypeScript 5.0 ou ultérieur. L’entrée /core exporte les mêmes query(), startup(), tool(), createSdkMcpServer(), et resolveSettings() que l’entrée racine, ainsi que les fonctions qui renomment, balisent et suppriment les sessions, AbortError, les constantes d’exécution, et tous les types. Elle n’ajoute aucun nom qui lui soit propre. Pour garder le code que votre application charge petit, /core omet certaines exportations racine, y compris prewarm(), la classe InMemorySessionStore, et les assistants qui listent, lisent, bifurquent, importent et résument les sessions. Si vous en avez besoin, utilisez l’entrée racine à la place. L’entrée racine intègre ses propres copies de zod et @modelcontextprotocol/sdk. L’entrée /core les importe depuis votre node_modules aux plages que les peerDependencies du SDK Agent déclarent, donc un regroupement qui les inclut déjà ne porte pas une deuxième copie. Importez depuis l’entrée racine ou /core dans un processus donné, pas les deux : ce sont des regroupements séparés, et charger les deux vous donne deux copies des classes et de l’état du SDK Agent.

Fonctions

query()

La fonction principale pour interagir avec Claude Code. Crée un générateur asynchrone qui diffuse les messages en streaming 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’un prompt soit disponible. Le handle WarmQuery retourné accepte un prompt 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. Si vous ne connaissez pas encore le répertoire de travail de la session, utilisez prewarm() à la place.

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’un prompt est prêt. Cela déplace la génération du sous-processus et l’initialisation en dehors du chemin critique.

prewarm()

Alpha. Démarre un processus Claude Code en tant que spare avant de savoir quelle session il servira, de sorte que vous puissiez le lier à une session plus tard avec claim(). Utilisez-le dans une application qui démarre avant que l’utilisateur ne choisisse un dossier. Nécessite TypeScript Agent SDK v0.3.282 ou ultérieur. prewarm() complète la même poignée de main d’initialisation que startup(), avec le processus en attente dans options.cwd quand vous le définissez et sinon dans un répertoire temporaire privé sous votre répertoire de configuration Claude Code. Le répertoire de travail de la session, ses hooks SessionStart, ses serveurs MCP stdio, et son contexte CLAUDE.md et git attendent la réclamation. Un spare occupe environ 230 à 260 Mo de mémoire en attente. Si votre spawnClaudeCodeProcess exécute Claude Code sur une autre machine ou dans un conteneur, définissez options.cwd sur un répertoire qui existe là-bas pour que le spare attende.
options et initializeTimeoutMs signifient la même chose que pour startup(), sauf que options.cwd définit uniquement le répertoire dans lequel le spare attend. La promesse se résout avec un SpareProcess une fois que le processus a complété sa poignée de main d’initialisation. prewarm() lève une exception si options définit resume, continue, ou forkSession, car un spare n’a pas encore de session. Tout ce qu’une réclamation ne peut pas définir, comme mcpServers, hooks, canUseTool, settingSources, systemPrompt, et plugins, est fixé pour la durée de vie du spare, donc gardez un spare par ensemble distinct de ces options et préchauffez à nouveau quand ils changent.

Exemple

Préchauffez au démarrage de l’application, puis réclamez le spare quand l’utilisateur démarre une session :

tool()

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

Paramètres

ToolAnnotations

Définie dans @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

forkSession()

Copie la transcription d’une session dans une nouvelle session afin que vous puissiez orienter la conversation dans une autre direction tout en laissant l’originale inchangée. Pour créer une branche à partir d’un point antérieur de la conversation, passez upToMessageId.

Paramètres

Retourne { sessionId }, l’UUID de la nouvelle session. Passez-le comme resume pour poursuivre le fork. Le fork n’inclut pas les checkpoints de fichiers de la session d’origine, vous ne pouvez donc pas le rembobiner jusqu’à un checkpoint capturé avant le fork. forkSession() lève une exception lorsque :
  • sessionId n’est pas un UUID
  • la session est introuvable ou ne contient aucun message
  • upToMessageId ne correspond à aucun message de la transcription

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.
L’instantané diffère de ce qu’une session query() en direct applique :
  • policyHelper : resolveSettings() lit les sources MDM, y compris la liste de propriétés macOS et Windows HKLM/HKCU, mais n’exécute pas le sous-processus policyHelper configuré par l’administrateur.
  • Paramètres gérés par le serveur : resolveSettings() ne récupère pas les paramètres gérés par le serveur. Passez-les comme options.serverManagedSettings pour les inclure.
  • defaultMode : l’instantané retourne permissions.defaultMode tel quel de chaque niveau, de sorte qu’il peut inclure les valeurs 'auto' et 'bypassPermissions' des paramètres de projet et locaux, que une session en direct ignore.

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. Sur une machine où aucun fichier de paramètres ne définit cleanupPeriodDays, les deux lignes imprimées affichent undefined pour la valeur, ce qui est le résultat attendu plutôt qu’une erreur.

Types

Options

Objet de configuration pour la fonction query().

Gérer les réponses d’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 des blocages. 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 : nombre maximal de nouvelles tentatives d’API. Valeur par défaut 10, plafonnée à 15. Chaque nouvelle tentative dispose de sa propre fenêtre API_TIMEOUT_MS. Pour les exécutions sans surveillance qui doivent attendre la fin de pannes plus longues, définissez CLAUDE_CODE_RETRY_WATCHDOG=1 : cette variable réessaie indéfiniment en cas d’erreurs de capacité transitoires et, sur Claude Code v2.1.199 ou ultérieur, porte la valeur par défaut à 300 pour les autres erreurs transitoires et supprime le plafond de cette variable.
  • CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS : watchdog de blocage pour les sous-agents. Tant que le watchdog de flux est actif, la valeur par défaut est CLAUDE_STREAM_IDLE_TIMEOUT_MS plus 5 minutes, soit 600000 sauf si vous augmentez cette variable. Lorsque le watchdog de flux est désactivé, la valeur par défaut est 600000. Avant v2.1.257, la valeur par défaut était toujours 600000. Le minuteur est réinitialisé à chaque événement de flux. En cas de blocage, Claude Code interrompt le sous-agent et signale le blocage au parent. Pour un sous-agent en arrière-plan, il marque également la tâche comme échouée et joint tout résultat partiel.
  • CLAUDE_ENABLE_STREAM_WATCHDOG avec CLAUDE_STREAM_IDLE_TIMEOUT_MS : watchdog de flux qui interrompt la requête lorsque les en-têtes sont arrivés mais que le corps de la réponse cesse d’être transmis. Le watchdog 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 vaut 300000 par défaut et ne peut pas descendre en dessous de ce minimum. Après l’interruption, Nouvelles tentatives automatiques décrit ce que fait Claude Code, selon l’avancement de la réponse. Pendant que le watchdog attend une réponse qu’une passerelle derrière ANTHROPIC_BASE_URL maintient ouverte avec des pings keep-alive, un hôte qui définit includePartialMessages continue de recevoir des événements de flux ping ; interprétez donc ces trames comme des signes d’activité plutôt que de faire expirer la session en cas de silence. Avant v2.1.257, les trames s’arrêtaient 5 minutes après le dernier véritable événement de flux.

Objet Query

Interface renvoyée par la fonction query().

Méthodes

applyFlagSettings()

Modifie les paramètres d’une session en cours sans redémarrer la requête. Utilisez-la lorsqu’un paramètre dépourvu de setter dédié doit changer en cours de session, par exemple pour resserrer permissions après que l’agent a 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 cours de session :
  • Appliquées au tour suivant : effortLevel, ultracode, permissions, hooks, skillOverrides, fastMode, agent. Changer d’agent applique également le remplacement de modèle et les hooks de cet agent au tour suivant. Son prompt système s’applique au tour suivant ou, dans une session qui réutilise un prompt système enregistré, une fois la session compactée.
  • Appliquée pendant le tour en cours : model. Si vous changez de model pendant que Claude travaille sur un tour, la réponse que Claude est déjà en train de générer se termine avec l’ancien modèle, et le reste du tour, à partir du prochain appel que Claude Code adresse au modèle, utilise le nouveau. Les sous-agents conservent leur propre modèle. Avant v2.1.212, un changement en cours de tour attendait le tour suivant.
  • Sans effet en cours de session : les options du prompt système. Elles sont résolues une seule fois au démarrage, de sorte que la session en cours 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 demande un effort xhigh avec ultracode activé. applyFlagSettings() déclare effortLevel sans cette valeur ; en TypeScript, passez donc { ultracode: true, effortLevel: "xhigh" } pour obtenir le même résultat, ou la clé ultracode seule pour activer ultracode au niveau d’effort actuel de la session. La valeur ultracode nécessite Claude Code v2.1.203 ou ultérieure et n’est acceptée que par applyFlagSettings(), et non par la clé effortLevel d’un fichier de paramètres. Avant v2.1.284, la clé ultracode seule définissait également le niveau sur xhigh. Les valeurs sont écrites dans la couche de paramètres de flag, fusionnées par-dessus ce que l’option inline settings de query() a défini au démarrage. Il s’agit du même niveau que celui que la section sur la priorité de cette page appelle options programmatiques. Les appels successifs fusionnent superficiellement les clés de premier niveau. Un second appel avec { permissions: {...} } remplace l’intégralité de l’objet permissions de l’appel précédent au lieu de le fusionner en profondeur. Pour effacer une clé définie avec applyFlagSettings(), passez null pour cette clé. La plupart des clés se rabattent alors d’abord sur une valeur définie au démarrage par l’option settings de query(), puis sur des sources de priorité inférieure. Un model effacé revient au modèle par défaut de Claude Code, même lorsqu’un fichier de paramètres définit model. Passer undefined n’a aucun effet, car la sérialisation JSON le supprime. Trois clés en plus de model réinitialisent l’état de la session au lieu de se rabattre sur une autre valeur :
  • effortLevel: null ramène la session au niveau d’effort par défaut du modèle, et non à l’option effort de query() ni à un effortLevel provenant d’un fichier de paramètres.
  • agent: null exécute le thread principal sans agent à partir du tour suivant, au lieu de restaurer l’option agent de query() ou un agent provenant d’un fichier de paramètres. Si l’agent effacé avait appliqué son propre modèle, la session revient au modèle résolu au démarrage.
  • ultracode: null désactive ultracode, comme false, au lieu de restaurer une valeur ultracode provenant d’un fichier de paramètres. La session conserve son niveau d’effort actuel ; passez donc effortLevel dans le même appel pour le modifier.
Disponible uniquement en mode d’entrée en streaming, la même contrainte que pour setModel() et setPermissionMode(). L’exemple ci-dessous change le modèle actif en cours de session, puis efface le remplacement afin que le modèle revienne au modèle par défaut de Claude Code.
applyFlagSettings() est disponible uniquement en TypeScript. Le SDK Python n’expose pas de méthode équivalente.

updateSettings()

Écrit une clé autorisée dans un fichier de paramètres sur disque, afin que la valeur persiste pour les sessions ultérieures qui chargent cette source. Chaque source accepte une clé, avec une valeur de type chaîne :
  • "localSettings" : accepte outputStyle et le fusionne dans le fichier de paramètres locaux du projet, .claude/settings.local.json. Le nouveau style prend effet à la prochaine requête de la session.
  • "userSettings" : accepte effortLevel et l’enregistre comme niveau d’effort par défaut pour le modèle actuel de la session, sous modelSettings dans votre fichier de paramètres utilisateur. Passer max n’écrit rien, car max est limité à la session. La session en cours conserve son niveau d’effort actuel dans tous les cas ; appelez donc applyFlagSettings() si vous souhaitez également le modifier. Cette source nécessite TypeScript SDK v0.3.277 ou ultérieure, qui inclut Claude Code v2.1.277.
L’appel est rejeté lorsque la requête contient toute autre clé, lorsque la session s’exécute via un transport distant, et lorsque les settingSources de la session excluent la source que vous indiquez. La suppression d’une clé n’est pas prise en charge.

toggleMcpServer()

Désactiver un serveur le déconnecte et retire ses outils de la session. Pour les serveurs que vous avez ajoutés en cours de session et pour les serveurs in-process, cela dépend de votre version de Claude Code :
  • Un serveur stdio, SSE ou HTTP que vous avez ajouté en cours de session avec setMcpServers() : le retrait de ses outils nécessite Claude Code v2.1.285 ou ultérieure.
  • Un serveur in-process que vous avez créé avec createSdkMcpServer(), que vous l’ayez passé dans mcpServers ou avec setMcpServers() : sa déconnexion et le retrait de ses outils nécessitent Claude Code v2.1.286 ou ultérieure. La désactivation d’un tel serveur fait également échouer ses appels d’outils encore en cours, de sorte que Claude reçoit immédiatement un résultat d’erreur pour chacun d’eux, sans attendre le retour de votre handler.

WarmQuery

Handle renvoyé par startup(). Le sous-processus est déjà lancé et initialisé, de sorte qu’appeler query() sur ce handle écrit le prompt 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 un nettoyage automatique.

SpareProcess

Alpha. Handle renvoyé par prewarm() : un processus Claude Code démarré qui n’est pas encore lié à une session et qui peut être réclamé une seule fois. Nécessite TypeScript Agent SDK v0.3.282 ou ultérieure.

Membres

options.cwd est requis. Une réclamation peut également définir additionalDirectories, model, permissionMode, maxThinkingTokens, une surcouche de paramètres de flag dans settings, appendSystemPrompt, title, agents et des jetons propres à la session dans env. Claude Code peut refuser une réclamation, par exemple pour un dossier qui n’existe pas ou dont les paramètres de projet définissent env, agent ou model. Après un refus, un prompt que claim() a déjà envoyé reçoit un résultat d’erreur dont le texte commence par not_claimed, puis la requête renvoyée lève une exception. Encapsulez la boucle de la requête dans un bloc try pour continuer au-delà de l’exception. Lorsque claimed est rejetée avec un message commençant par option_not_applied, la session s’exécute sans le model ou le maxThinkingTokens que vous avez demandé. Après tout autre rejet, votre prompt n’a pas été exécuté ; démarrez donc plutôt la session avec query().

SDKControlInitializeResponse

Type de retour de initializationResult(). Contient les données d’initialisation de la session.
hooks_applied indique si Claude Code a enregistré les hooks que contenait la requête initialize. Le SDK envoie cette requête une fois au démarrage de la session, puis à chaque appel à reinitialize(). Le champ nécessite Agent SDK v0.3.238 ou ultérieure. Claude Code omet le champ lorsque la requête ne contenait aucun hook. Lorsque la requête contenait des hooks, la valeur dépend du fait que la requête soit ou non le premier initialize de la session et, pour un initialize répété, de la manière dont elle a atteint la session :
  • true : Claude Code a enregistré les hooks. Le premier initialize d’une session renvoie cette valeur. Un initialize répété envoyé via le stdin de la CLI renvoie également true. Dans ce cas, les hooks de la nouvelle requête remplacent ceux enregistrés précédemment.
  • false : Claude Code a ignoré les hooks. Un initialize répété envoyé à une session distante renvoie cette valeur, de sorte qu’un second client qui rejoint une session ne peut pas remplacer les hooks enregistrés par le premier client.
Avant Agent SDK v0.3.238, la réponse ne contenait jamais ce champ, et Claude Code ignorait hooks à chaque initialize répété. Le champ sdkMcpServerManifests de la requête et le champ sdk_mcp_manifests_parked de la réponse concernent les serveurs MCP SDK in-process que vous avez créés avec createSdkMcpServer(). Votre application ne définit ni ne lit aucun de ces champs. claude_code_version est la version de Claude Code du processus qui exécute les tours de la session. Il s’agit de la même valeur que celle du message init SDKSystemMessage, ce qui vous permet de lire la version de la CLI avant le premier tour.
  • Ce champ nécessite Agent SDK v0.3.296 ou ultérieur, qui inclut Claude Code v2.1.296.
  • Si le champ vaut undefined et que vous définissez pathToClaudeCodeExecutable, faites-le pointer vers Claude Code v2.1.296 ou ultérieur.
La réponse indique toujours fast_mode_state, et lorsqu’un élément bloque le mode rapide, fast_mode_disabled_reason fournit le code de raison en complément, afin que vous puissiez expliquer l’état bloqué au lieu de redéduire la disponibilité. Ces deux comportements nécessitent Claude Code v2.1.219 ou ultérieure. Avant v2.1.219, la réponse omettait fast_mode_state lorsque le mode rapide n’était pas disponible et ne fournissait jamais de raison. Pour les codes de raison et leur signification, consultez fast_mode_disabled_reason dans le message de résultat. Le wrapper de réponse de contrôle d’un initialize réussi contient également un tableau pending_permission_requests. Le champ se trouve sur le wrapper de réponse lui-même, et non dans le payload SDKControlInitializeResponse ci-dessus. Chaque entrée est un message control_request complet, avec la même forme { type: "control_request", request_id, request } que celle des demandes de permission que la session diffuse en flux pendant son exécution. Le tableau liste les demandes de permission que ce processus Claude Code a émises et qui ne sont pas encore résolues. Le SDK lit le tableau pour vous et distribue chaque entrée à votre callback canUseTool, la même redistribution que celle déclenchée par reinitialize() après une interruption du transport. Traitez 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 callback a déjà reçue avant la perte de connexion. Le tableau est toujours présent dans une réponse initialize réussie et il est vide lorsque ce processus n’a aucune demande de permission non résolue. Nécessite Claude Code v2.1.268 ou ultérieure. Les versions antérieures pouvaient omettre le champ ; si vous analysez vous-même le protocole filaire, considérez donc un champ manquant comme le signe d’une CLI plus ancienne plutôt que comme la preuve que rien n’est en attente.

SDKControlInterruptResponse

Le reçu d’interruption : la valeur avec laquelle interrupt() se résout sur une CLI qui annonce la capacité interrupt_receipt_v1 dans SDKSystemMessage.capabilities. Nécessite Claude Code v2.1.205 ou ultérieure. Les CLI antérieures répondent à l’interruption avec un payload de succès vide, de sorte que interrupt() se résout en undefined.
still_queued liste les UUID des messages utilisateur qui étaient en attente lorsque l’interruption est arrivée : les messages encore dans la file d’attente, ainsi que les messages que Claude Code avait déjà retirés de la file pour le tour suivant. Une fois le premier tour de la session commencé, Claude Code traite les messages listés après l’interruption, sauf si vous les annulez d’abord, et peut en fusionner plusieurs en un seul tour. Si vous interrompez avant le début du premier tour, Claude Code interrompt ce tour dès qu’il commence, et les messages listés dans ce tour ne reçoivent aucune réponse. Utilisez le reçu pour décider s’il faut renvoyer quelque chose. Un message listé que vous n’annulez pas entre dans la conversation, qu’il reçoive une réponse ou non ; le renvoyer le transmet donc deux fois à Claude. Interprétez la liste en tenant compte des réserves suivantes :
  • Seuls les messages mis en file d’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 du périmètre.
  • La liste peut inclure des UUID que votre client n’a jamais envoyés, comme les déclencheurs de tâches planifiées. Ignorez les UUID que vous ne reconnaissez pas au lieu de les traiter comme une erreur.
Un client qui pilote directement le protocole de contrôle de la CLI, plutôt que via interrupt(), peut définir cancel_queued: true sur la requête de contrôle interrupt. Claude Code v2.1.219 et versions ultérieures annoncent la prise en charge avec la capacité interrupt_cancel_queued_v1 dans SDKSystemMessage.capabilities ; les CLI plus anciennes ignorent le champ et laissent les messages en file d’attente s’exécuter normalement. Une telle interruption annule également tous les messages qui seraient sinon listés sous still_queued : le reçu les liste sous cancelled à la place, still_queued est vide, et aucun d’eux ne s’exécute. La liste cancelled comporte les mêmes réserves que still_queued. La méthode interrupt() n’envoie jamais cancel_queued, de sorte que les reçus avec lesquels elle se résout ne contiennent pas cancelled. Le reçu est un instantané pris au moment où l’interruption est traitée et, lors d’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 suivant en file d’attente, de sorte que la file que vous inspectez après le résultat a déjà changé.

SDKControlGetContextUsageResponse

Type de retour de getContextUsage(). Avec la valeur par défaut de detail, il s’agit du même payload que celui que Claude Code affiche pour la commande /context dans une session interactive ; en plus des nombres de tokens, il contient donc des champs d’affichage tels que color et gridRows que Claude Code utilise pour dessiner la grille d’utilisation de /context. L’argument optionnel detail de la méthode détermine la manière dont Claude Code compte chaque catégorie. L’argument detail nécessite Agent SDK v0.3.257 ou ultérieure.
  • 'full' : la valeur par défaut. Claude Code compte chaque catégorie avec des requêtes API de comptage de tokens. Ces requêtes n’apparaissent pas dans le flux de messages, de sorte que le suivi des coûts qui lit le flux ne les verra pas. Sur l’API Anthropic, le comptage de tokens n’est pas facturé.
  • 'summary' : passez { detail: 'summary' } pour obtenir plutôt une réponse basée sur l’utilisation de la dernière réponse et sur des estimations locales. Aucune requête de comptage de tokens n’est envoyée, et les nombres par catégorie sont approximatifs.
Lorsque vous envoyez /context comme prompt au lieu d’appeler la méthode, Claude Code joint un payload SDKContextUsage au champ context_usage du message assistant qui délivre le résultat. Ce champ nécessite Agent SDK v0.3.232 ou ultérieure.
Lisez l’attribution des tokens à partir des champs de collection :
  • categories contient les totaux par catégorie. Le kind de chaque entrée classe la ligne avec les mêmes valeurs que SDKContextUsageCategory. Classez les lignes selon ce champ plutôt que selon le name d’affichage. Le champ nécessite Agent SDK v0.3.268 ou ultérieure.
  • mcpTools et agents attribuent les tokens à des outils MCP et à des sous-agents individuels.
  • memoryFiles liste chaque fichier de mémoire chargé avec son coût.
  • skills.skillFrontmatter attribue les tokens de la liste des skills à chaque skill inclus. Les nombres par skill mesurent l’entrée de chaque skill dans la liste telle que Claude Code l’envoie réellement, qui peut être plus courte que le frontmatter complet du skill. Comparez skills.totalSkills à skills.includedSkills pour vérifier si chaque skill découvert figure dans la liste.
totalTokens représente l’utilisation actuelle du contexte de la session, et maxTokens la fenêtre par rapport à laquelle cette utilisation est mesurée. Cette fenêtre est la fenêtre de contexte du modèle, ou la fenêtre de compaction automatique inférieure lorsqu’elle s’applique. rawMaxTokens contient la même valeur que maxTokens, et percentage correspond à totalTokens exprimé en pourcentage arrondi de cette fenêtre. apiUsage contient l’utilisation issue de la dernière réponse de l’API, et non un total cumulé pour la session. Claude Code laisse non définis les diagnostics optionnels deferredBuiltinTools, systemTools et systemPromptSections ; attendez-vous donc à ce qu’ils soient absents, même si le type les déclare.

SDKControlReadFileResponse

Type de retour de readFile().
contents contient le texte du fichier, ou des données base64 lorsque vous avez demandé encoding: 'base64' ; le champ encoding de la réponse est alors défini sur 'base64'. absPath est le chemin absolu résolu. truncated est défini lorsque le fichier dépassait la limite maxBytes et que le contenu a été tronqué à cette limite.

Ce que readFile() peut lire

readFile() sert un ensemble de fichiers plus restreint que l’outil Read :
  • Un fichier ordinaire situé dans l’un des répertoires de travail de la session, tels que cwd et additionalDirectories
  • Quelques fichiers propres à Claude Code pour la session, tels que les résultats d’outils
Les règles de refus et de demande Read bloquent toujours un chemin correspondant, et une règle d’autorisation Read large n’ouvre pas le reste du système de fichiers à readFile(). Pour tout autre fichier, l’appel se résout avec null.

SDKControlReloadPluginsResponse

Type de retour de reloadPlugins().
Les champs de collection décrivent la session après l’appel :
  • commands, agents et mcpServers : les commandes, les sous-agents et l’état des serveurs MCP de la session, sous les mêmes formes que celles renvoyées par supportedCommands(), supportedAgents() et mcpServerStatus(). supportedAgents() continue de renvoyer la liste capturée lors de l’initialisation ; lisez donc agents ici pour obtenir l’ensemble après un rechargement
  • plugins : chaque plugin chargé avec son name et son path d’installation. version reprend ce que déclare le manifeste du plugin et est contrôlé par l’auteur du plugin ; validez-le donc avant de vous y fier. Il est omis lorsque le manifeste n’en déclare aucune
  • error_count : le nombre d’erreurs survenues lors du chargement des plugins
Passez { holdOnCacheImpact: true } à reloadPlugins() pour suspendre un rechargement qui invaliderait le cache de prompts de la conversation au lieu de l’appliquer. Claude Code effectue la vérification que réalise la commande interactive /reload-plugins avant d’avertir du coût pour le cache. L’option nécessite Agent SDK v0.3.268 ou ultérieure. Un exécutable Claude Code antérieur à v2.1.268, comme celui vers lequel vous faites pointer pathToClaudeCodeExecutable, ignore l’option et applique le rechargement. Lorsque vous passez l’option, lisez held pour savoir ce qui s’est passé :
  • true : le rechargement n’a pas été appliqué, et les champs de collection décrivent la session telle qu’elle est toujours. cache_impact indique ce que l’application changerait. Pour appliquer malgré tout, appelez de nouveau reloadPlugins() sans l’option.
  • false : la vérification n’a trouvé aucun impact sur le cache, et le rechargement a été appliqué.
  • Absent : vous n’avez pas passé l’option, ou l’exécutable Claude Code est antérieur à v2.1.268 et a appliqué le rechargement.
cache_impact n’est présent qu’avec held: true. mcp_servers_added et mcp_servers_removed nomment les serveurs MCP de plugins que le rechargement enregistrerait ou supprimerait, sous forme de noms à portée plugin:<plugin>:<server>. Les noms sont définis par les auteurs des plugins ; validez-les donc avant de les afficher. lsp_tool_change indique si l’application ajouterait ou retirerait l’outil LSP, ou vaut null si elle ne ferait ni l’un ni l’autre. Les formes may- signifient que la vérification n’a pas pu voir entièrement l’ensemble des plugins en attente.

SDKControlReloadSkillsResponse

Type de retour de reloadSkills().
skills liste les skills disponibles après le rechargement, sous la même forme SlashCommand que celle renvoyée par supportedCommands().

SDKControlReloadOutputStylesResponse

Type de retour de reloadOutputStyles().
available_output_styles liste les noms des styles de sortie intégrés et personnalisés disponibles après le rechargement.

SDKControlMcpReadResourceResponse

Type de retour de readMcpResource(), contenant le résultat resources/read du serveur MCP. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieure.
Passez à readMcpResource() le nom du serveur tel que le signale mcpServerStatus() et un URI ui://, comme le ui.resourceUri qu’un outil déclare dans son _meta. L’appel est rejeté pour tout autre schéma d’URI, pour un serveur MCP SDK que votre application héberge elle-même, et pour un serveur qui n’est pas connecté. Il est disponible lorsque les capabilities du message d’initialisation incluent mcp_read_resource_v1. Chaque entrée de contents est un élément de contenu tel que le serveur l’a envoyé, sans les clés _meta sous le préfixe com.anthropic/, qui est réservé à Claude Code. blob contient des données base64 pour un élément binaire, et _meta est le _meta propre à l’élément, où un serveur MCP Apps place les ui.csp et ui.permissions de la ressource. Le contenu est du HTML tiers non fiable ; affichez-le donc dans un sandbox.

AgentDefinition

Configuration d’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 un enregistrement de configuration de serveur en ligne associant des noms de serveurs à des configurations.
Où McpServerConfigForProcessTransport est McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.

SettingSource

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

Comportement par défaut

Lorsque 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. Consultez Ce que settingSources ne contrôle pas pour connaître les entrées 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 uniquement des sources de paramètres spécifiques :
Pour charger les instructions de projet CLAUDE.md, incluez "project" dans settingSources. Consultez Modifier les prompts système pour savoir comment le chargement de CLAUDE.md interagit avec les options du prompt système.

Priorité des paramètres

Lorsque plusieurs sources sont chargées, les paramètres sont fusionnés selon cet ordre de priorité (de 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 utilisateur, projet et locaux du système de fichiers. Les paramètres de politique gérés ont 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, dans le SDK, de la demande de permission interactive : elle n’est invoquée que lorsque le flux d’évaluation des permissions aboutit à une demande. Les appels d’outils déjà approuvés par une entrée allowedTools, une règle d’autorisation des paramètres ou le mode de permission, comme acceptEdits ou bypassPermissions, ne l’invoquent jamais. Pour contrôler chaque appel d’outil, utilisez plutôt un hook PreToolUse. Une règle d’autorisation ne pré-approuve pas les actions qu’aucun mode n’approuve automatiquement ; consultez Comment les permissions sont évaluées pour savoir lesquelles atteignent le callback et ce qui se passe en mode dontAsk et auto.
Le callback résout normalement la requête en renvoyant un PermissionResult, que le SDK réécrit sur son transport en tant que control_response. Renvoyez null uniquement lorsque votre application a déjà envoyé la control_response pour cette requête via son propre canal, en reprenant requestId ; le SDK ignore alors l’écriture de la réponse sur son transport. Renvoyer null dans tout autre cas bloque indéfiniment l’appel d’outil, car aucune control_response n’est jamais envoyée et les demandes de permission n’expirent 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 du comportement des outils intégrés.

McpServerConfig

Configuration des serveurs MCP.

McpStdioServerConfig

McpSSEServerConfig

McpHttpServerConfig

McpSdkServerConfigWithInstance

McpClaudeAIProxyServerConfig

SdkPluginConfig

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

Types de messages

SDKMessage

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

SDKAssistantMessage

Message de réponse de l’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 des suivants : 'authentication_failed', 'oauth_org_not_allowed', 'account_on_hold', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', 'cloud_credential_error', ou 'unknown'. Quatre de ces valeurs signifient plus que leurs noms ne l’indiquent :
  • 'model_not_found' : le modèle sélectionné n’existe pas ou n’est pas disponible pour votre compte ou déploiement
  • 'overloaded' : l’API a retourné un 529 parce que le serveur est à capacité, contrairement à 'rate_limit', qui est un 429 contre votre quota
  • 'account_on_hold' : votre compte est suspendu
  • 'cloud_credential_error' : Claude Code n’a pas pu obtenir des identifiants AWS ou Google Cloud utilisables sur la machine sur laquelle il s’exécute, donc aucune requête n’a atteint le fournisseur cloud. La cause habituelle est une connexion cloud qui a expiré ou n’a jamais été complétée sur cette machine, bien qu’un service d’identifiants brièvement inaccessible rapporte la même valeur. Voir Impossible de charger les identifiants AWS ou Google Cloud. Nécessite TypeScript Agent SDK v0.3.267 ou ultérieur, qui regroupe Claude Code v2.1.267
aborted est true quand une interruption ou un abandon a tronqué le message de l’assistant avant la fin du flux : le message n’a pas de stop_reason et le contenu peut se terminer au milieu d’un mot. Le champ est absent sur les messages normalement complétés. Il nécessite Agent SDK v0.3.214 ou ultérieur. agent_id identifie le sous-agent qui a produit le message et est absent des messages du fil principal. Sa valeur est égale au task_id présent dans l’événement task_started et les autres événements de tâche de ce sous-agent, et reste inchangée lorsque le sous-agent est repris. Le champ nécessite l’Agent SDK v0.3.292 ou ultérieur. Associez les messages d’un sous-agent à ses événements de tâche via agent_id plutôt qu’en appariant le parent_tool_use_id d’un message au tool_use_id d’un événement de tâche. Lorsqu’un appel d’outil reprend le sous-agent, les événements de tâche portent le tool_use_id de cet appel, tandis que les messages conservent le parent_tool_use_id de l’appel d’outil qui a démarré le sous-agent à l’origine, de sorte que les deux ne correspondent plus. Claude Code définit user_message_uuid et user_message_uuids sur le premier message de l’assistant du tour, dans les conditions décrites dans user_message_uuid. Lorsque le tour poursuit un tour qu’un redémarrage a interrompu, les messages de l’assistant qui portent ces champs portent également resume_reason. timestamp est l’heure ISO 8601 à laquelle le contenu du message a fini de générer sur le processus qui l’a produit. La valeur provient de l’horloge de cette machine, donc utilisez-la uniquement pour l’affichage et ne triez pas les messages par elle. Un tour API peut produire plusieurs messages d’assistant qui partagent un message.id, chacun avec son propre timestamp. Quand le champ est absent, revenez à l’heure à laquelle vous avez reçu le message. context_usage est une copie structurée du rapport /context, typée comme SDKContextUsage, et nécessite Agent SDK v0.3.232 ou ultérieur. Quand vous envoyez /context comme prompt, Claude Code livre le rapport comme un message d’assistant dont message.content contient le tableau markdown, et attache context_usage à ce même message. Claude Code ne définit le champ sur aucun autre message d’assistant, et les versions antérieures livrent le tableau /context sans lui, donc lisez la ventilation du champ quand il est présent et revenez au texte markdown quand il ne l’est pas. usage_report est une copie structurée du rapport /usage, typée SDKUsageReport, et nécessite l’Agent SDK v0.3.273 ou ultérieure. Lorsque vous envoyez /usage comme prompt, Claude Code livre le rapport sous la forme d’un message de l’assistant dont le message.content contient le texte. Il n’attache usage_report à ce même message que lorsque la session remplit toutes ces conditions :
  • La session s’authentifie avec des identifiants claude.ai
  • Les identifiants indiquent un type de forfait connu ou portent le scope user:profile
  • Le compte n’est pas en facturation à l’usage
Un jeton claude setup-token transmis via CLAUDE_CODE_OAUTH_TOKEN ne remplit pas les conditions par défaut, car il ne porte que le scope user:inference. Les autres sessions, comme les sessions avec clé API, livrent le texte sans le champ, tout comme les versions antérieures. Lisez le rapport depuis le champ lorsqu’il est présent et rabattez-vous sur le texte dans le cas contraire.

SDKUserMessage

Message d’entrée utilisateur.
Définissez pasted_content pour envoyer du contenu que l’utilisateur a collé dans votre interface de prompt plutôt que tapé, une entrée par collage, chacune étant une chaîne ou un tableau de blocs de contenu. Claude Code ajoute le texte de chaque entrée après le texte tapé, dans l’ordre, et peut envelopper chaque collage dans des balises <pasted_content>. Les blocs autres que le texte sont ignorés, donc envoyez les images et les documents dans message.content. Nécessite Agent SDK v0.3.277 ou ultérieur. Définissez inline_pastes pour indiquer à Claude Code quelles parties de message.content l’utilisateur a collées plutôt que tapées, avec une chaîne par collage. Le texte du prompt reste là où l’utilisateur l’a placé. Claude Code peut encadrer chaque collage listé de balises <pasted_content> à l’endroit où il se trouve, afin que Claude puisse distinguer le contenu collé des propres mots de l’utilisateur. Seuls les collages situés dans le dernier bloc de texte du prompt sont encadrés. Nécessite TypeScript Agent SDK v0.3.280 ou version ultérieure. Chaque champ de collage a une limite de taille :
  • pasted_content : si les entrées et les blocs de contenu qu’elles contiennent dépassent 1 000 au total, Claude Code ignore l’ensemble du champ.
  • inline_pastes : Claude Code utilise les 100 premières entrées non vides et ignore le reste.
Définissez shouldQuery, client_composed ou priority pour modifier la façon dont Claude Code traite un message que vous envoyez :
  • shouldQuery : définissez-le à false pour ajouter le message à la transcription sans déclencher un tour d’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 hors bande, sans dépenser un appel de modèle pour cela.
  • client_composed : définissez-le à true pour que Claude Code livre le texte du message tel qu’écrit. Claude Code n’étend alors pas les mentions @path ou @server:resource, et n’exécute pas le texte qui commence par / comme une commande. Tandis que l’option verbatimPrompts est activée, le SDK définit le champ sur chaque message. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur et Claude Code v2.1.248 ou ultérieur.
  • priority : contrôle le moment où un message que vous envoyez pendant un tour en cours parvient à Claude :
    • 'next', ou aucun champ priority : Claude lit le message dans le même tour, dès que les appels d’outils en cours se terminent. Si le tour se termine avant, le message démarre le tour suivant.
    • 'later' : Claude Code conserve le message jusqu’à la fin du tour et l’envoie comme un nouveau tour.
    • 'now' avec origin: { kind: "human" } : sur Claude Code v2.1.286 ou version ultérieure, le travail qui peut se poursuivre en arrière-plan y est déplacé, et Claude lit le message dans le même tour. Le travail déplaçable comprend les commandes shell, les sous-agents et les appels d’outils MCP. Sur v2.1.287 ou version ultérieure, il comprend également les appels WebFetch et WebSearch. Lorsque Claude est seulement en train de rédiger une réponse, ou que le travail en cours ne peut pas être déplacé, Claude Code interrompt plutôt le tour et Claude lit le message ensuite.
    • 'now' sans cette origine : Claude Code interrompt le tour et Claude lit le message ensuite.
Ce message, envoyé pendant qu’un tour est en cours, demande à Claude de changer de cap sans perdre une commande shell encore en cours d’exécution :
Un message utilisateur produit par un sous-agent, comme le tool_result de l’un de ses propres appels d’outils, porte agent_id. Consultez SDKAssistantMessage, qui définit ce champ et la version requise. Sur un message qui porte un bloc tool_result, tool_use_result est l’objet de sortie structurée 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 : le champ est donc typé unknown ; les formes intégrées sont répertoriées sous Types de sortie d’outils. Ces résultats nécessitent un traitement qui va au-delà de leur forme répertoriée :
  • L’outil Agent : tool_use_result est AgentOutput. Effectuez le rendu à partir de celui-ci plutôt que d’analyser le texte du tool_result. Le content d’un résultat completed contient le rapport du sous-agent ou, pour un sous-agent dont le rapport passe par un appel d’outil SubagentHandback, une courte note sur cette remise à la place du rapport. En mode auto sur Claude Code v2.1.271 ou version ultérieure, tout sous-agent qui produit un résultat completed fait son rapport de cette façon, sauf s’il s’agit d’un fork, et Claude reçoit le rapport sous la forme d’un message distinct provenant du sous-agent.
  • Un appel WebFetch ou WebSearch que Claude Code a déplacé en arrière-plan pour livrer un message 'now' : le message utilisateur qui porte le tool_result de cet appel a tool_use_result défini sur { detachedToolCall: true }. L’appel est toujours en cours et Claude reçoit son résultat une fois qu’il est terminé. Aucun second tool_result pour ce tool_use_id ne suit : si votre application affiche une ligne pour chaque appel d’outil, marquez donc cette ligne comme déplacée en arrière-plan lorsque ce message arrive. Nécessite Claude Code v2.1.287 ou version ultérieure.
  • Un outil MCP dont le résultat contient des blocs resource_link : tool_use_result est un objet doté d’un tableau resourceLinks d’entrées SDKMcpResourceLink. Claude reçoit chaque lien sous la forme d’une ligne de texte dans le bloc tool_result : lisez donc resourceLinks pour afficher les fichiers renvoyés par le serveur au lieu d’analyser ce texte. Claude Code omet resourceLinks lorsque le résultat ne contient aucun lien ainsi que sur les résultats provenant de sous-agents, conserve au maximum 50 liens par résultat et cesse d’ajouter des liens une fois que le tableau atteint 64 Kio de JSON sérialisé. resourceLinks nécessite Agent SDK v0.3.257 ou version ultérieure.
  • Un outil MCP qui renvoie structuredContent : tool_use_result est un objet dont le membre structuredContent contient ce que le serveur a envoyé et dont le membre content contient la valeur McpOutput. Les résultats provenant de sous-agents ne portent pas structuredContent.
  • Un outil MCP dont le structuredContent se sérialise en plus de 1 048 576 caractères de JSON : Claude Code omet structuredContent de tool_use_result et définit à la place structuredContentOmitted: true, afin que votre application puisse distinguer un objet abandonné d’un outil qui n’en a envoyé aucun. Les autres membres, comme content et resourceLinks, sont conservés, et ce que Claude reçoit ne change pas. Claude Code v2.1.287 ou une version ultérieure applique ce plafond. Deux types d’outils font exception :
    • Les outils provenant de serveurs SDK en processus en sont exemptés et transmettent l’objet entier.
    • Un outil dont l’entrée tools/list déclare une ressource MCP Apps ui:// a une limite de 8 388 608 caractères avec Claude Code v2.1.295 ou une version ultérieure, et les versions antérieures à v2.1.295 l’en exemptent.

SDKUserMessageReplay

Message utilisateur rejoué avec UUID requis.
Un tour utilisateur injecté de l’extérieur de la session, dont le origin est de type peer ou channel, arrive sur le flux comme un rejeu 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 quand vous relisiez la transcription.

SDKResultMessage

Message de résultat final.
Plusieurs champs sur le résultat portent des détails de diagnostic au-delà de 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 token en millisecondes, mesuré quand le premier message d’assistant complet arrive. Présent sur le bras de succès uniquement.
  • 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 en streaming le premier message. Présent sur le bras de succès uniquement.
  • user_message_uuid : l’uuid du message que vous avez envoyé auquel ce tour a répondu. Voir user_message_uuid pour savoir quels résultats le portent.
  • user_message_uuids : les uuids de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Voir user_message_uuids.
  • resume_reason : la raison pour laquelle ce tour poursuit un tour qu’un redémarrage a interrompu. Présent dans les deux branches. Consultez resume_reason.
  • local_command : le nom de la commande que le tour a envoyée, sur le résultat de succès d’un tour qu’une commande a complété sans entrer dans la boucle d’agent, comme /compact. Le nom est converti en lettres minuscules et traits de soulignement, donc /reload-plugins rapporte reload_plugins. Une commande qu’un serveur MCP fournit, et le /mcp intégré, rapportent mcp. Une commande que vous avez définie vous-même rapporte custom. Les arguments ne sont jamais inclus. Absent sur chaque tour qui est entré dans la boucle d’agent et sur les envois qui n’ont exécuté aucune commande. Nécessite Agent SDK v0.3.268 ou ultérieur.
  • request_sent_wall_ms : millisecondes d’époque auxquelles Claude Code a envoyé la requête API, pour les jointures avec les horodatages côté serveur. Présent uniquement avec user_message_uuid, sur un résultat de succès avec is_error false dont le tour a envoyé une requête API.
  • first_content_frame_ms : temps en millisecondes jusqu’au premier événement de flux content_block_start ou content_block_delta, en comptant les blocs de réflexion comme du contenu. Présent sur le bras de succès uniquement, quand is_error est false. Nécessite Agent SDK v0.3.260 ou ultérieur.
  • first_stream_post_ms, first_stream_post_ack_ms, first_stream_post_wall_ms : chronométrages pour le téléversement du premier événement de flux du tour. Claude Code les enregistre uniquement dans les sessions qu’il diffuse en streaming vers claude.ai, comme les sessions cloud, et les résultats que query() produit ne les portent pas. Nécessite Agent SDK v0.3.260 ou ultérieur.
  • usage : boucle d’agent principal uniquement. Exclut les appels de sous-agent et de modèle auxiliaire, et est par tour dans les sessions d’entrée en streaming. Préférez modelUsage pour la comptabilité des tokens/coûts.
  • modelUsage : totaux par modèle pour chaque appel de modèle effectué via le pipeline de requête pendant cet appel query(), y compris la boucle principale, les sous-agents et les appels internes tels que la compaction et les agents Workflow. Les appels d’assistance en dehors de ce pipeline, comme le classifieur de permissions et les requêtes de comptage de tokens, sont exclus. Un appel qui reprend une session compte également les totaux par modèle restaurés à partir des appels antérieurs de la session. Dans les sessions d’entrée en streaming, les totaux sont cumulatifs entre les tours, donc lisez le dernier résultat plutôt que de faire la somme entre les résultats. Voir Suivre les coûts en mode d’entrée en streaming pour les réinitialisations et Récupérer les totaux après un crash de session pour les résultats mis à zéro.
  • total_cost_usd : coût estimé cumulatif en USD, couvrant les mêmes appels que modelUsage et réinitialisé aux mêmes points. Un appel qui reprend une session compte également les totaux restaurés à partir des appels antérieurs de la session. C’est une estimation, pas un relevé de facturation. Voir Suivre le coût et l’utilisation pour les avertissements de précision.
  • queued_turn_count : le nombre de messages que vous avez envoyés avec origin: { kind: "human" } qui attendent toujours quand Claude Code a produit le résultat. Voir queued_turn_count pour ce que 0 et un champ absent vous indiquent.
  • result_index : où ce résultat se situe dans l’ordre de livraison de l’exécution, en comptant à partir de 0 sur chaque résultat que le processus écrit. Présent sur les deux bras. Un résultat dont l’écriture échoue consomme toujours son numéro, donc un écart dans la séquence signifie qu’un résultat a été perdu. Nécessite Agent SDK v0.3.268 ou ultérieur.
  • startup_failure_reason : pourquoi Claude Code a refusé de démarrer, sur le résultat error_during_execution qu’il écrit avant de quitter sur une défaillance de démarrage connue. Voir startup_failure_reason pour les valeurs et quelles défaillances le portent. Nécessite Agent SDK v0.3.274 ou ultérieur.
  • 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".
  • fast_mode_disabled_reason : pourquoi le mode rapide n’est pas disponible en ce moment. Absent quand rien ne bloque le mode rapide, bien qu’une requête puisse toujours s’exécuter à vitesse standard. Pendant le refroidissement après une limite de débit du mode rapide, Claude Code rapporte fast_mode_state: "cooldown" sans code de raison et réactive le mode rapide quand le refroidissement expire. Nécessite Claude Code v2.1.219 ou ultérieur.
Utilisez le code de raison pour expliquer pourquoi le mode rapide est désactivé dans votre propre interface utilisateur au lieu de redériver la disponibilité. Chaque code nomme la vérification qui a bloqué le mode rapide : La même paire de champs apparaît sur SDKSystemMessage et sur SDKControlInitializeResponse, donc vous pouvez lire l’état du mode rapide avant le premier tour. Le champ origin transmet le SDKMessageOrigin du message utilisateur qui a déclenché ce résultat. Quand le SDK injecte un tour de suivi synthétique, comme pour une tâche en arrière-plan terminée, le SDKResultMessage résultant porte origin: { kind: "task-notification" }. Les routines dont le déclencheur s’est déclenché et les messages vérifiés par le serveur provenant de vos autres sessions arrivent aussi avec ce type, chacun avec le subkind décrit dans Sous-types de notification de tâche. Vérifiez kind pour distinguer les résultats qui répondent à votre prompt des suivis injectés avant de les router ou de les supprimer. Si votre application déclare des exécutions planifiées, leurs résultats portent aussi kind: "task-notification", donc ne supprimez pas sur la base de kind seul. Quand plusieurs complétions de tâches en arrière-plan sont mises en file d’attente ensemble, Claude Code peut y répondre en un seul tour plutôt qu’en un tour chacune. Chaque complétion produit toujours son propre résultat avec cette origine. Toutes les complétions auxquelles Claude Code répond ensemble, sauf la dernière, produisent des résultats vides avec num_turns: 0, dans l’ordre, et le résultat de la dernière porte le tour qui répond à toutes. 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. Voir Différer un appel d’outil pour plus tard pour le trajet complet.

user_message_uuid

L’uuid du SDKUserMessage auquel le tour répond, renvoyé en écho pour que vous puissiez faire correspondre la réponse de Claude Code au message que vous avez envoyé. Claude Code renvoie un uuid uniquement si vous en définissez un sur le message. Le champ est optionnel sur SDKUserMessage, et un prompt sous forme de chaîne passé à query() n’en porte aucun. Le message de votre part auquel un tour répond dépend de la façon dont le tour a commencé :
  • Un message régulier que vous avez envoyé, c’est-à-dire sans isSynthetic: true : le tour répond à ce message pour toute sa durée. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un seul tour, et le champ porte alors uniquement l’uuid du dernier message. Pour faire correspondre la réponse à l’un des messages fusionnés, utilisez user_message_uuids.
  • Un message que vous avez envoyé avec isSynthetic: true : le tour répond d’abord à ce message. Si Claude Code prend en compte un message régulier de votre part entre les appels d’outils, le tour répond à ce message à partir de là. Renvoyer l’uuid d’un message synthétique nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne renvoient rien sur les tours synthétiques.
  • Le prompt que Claude Code génère pour poursuivre un tour interrompu sous CLAUDE_CODE_RESUME_INTERRUPTED_TURN : lorsque le dernier prompt du tour interrompu est un message ordinaire que vous avez envoyé, qu’il ait ouvert le tour ou que Claude Code l’ait pris en compte pendant le tour, le tour poursuivi répond d’abord à ce message. resume_reason distingue les trames du tour poursuivi de celles de la tentative interrompue. Lorsque le dernier prompt n’est pas l’un de vos messages ordinaires, le tour poursuivi ne répond d’abord à aucun de vos messages. Si Claude Code prend en compte un de vos messages ordinaires entre deux appels d’outils, le tour répond dès lors au message pris en compte. Le renvoi du prompt du tour interrompu nécessite le SDK Agent v0.3.268 ou ultérieur.
  • Tout autre prompt que Claude Code a généré lui-même : le tour ne répond d’abord à aucun message de votre part et ses cadres ne portent aucun écho. Si Claude Code prend en compte un message régulier de votre part entre les appels d’outils, le tour répond à ce message à partir de là. L’écho de prise en compte nécessite Agent SDK v0.3.265 ou ultérieur ; les versions antérieures ne renvoient rien sur ces tours.
Claude Code renvoie l’uuid du message auquel il répond sur trois types de cadre :
  • Le résultat : chaque résultat d’un tour qui a répondu à un message que vous avez envoyé. Chacun de ces résultats le porte sur Agent SDK v0.3.265 ou ultérieur. Avant v0.3.265, le résultat de succès d’un tour démarré par un message régulier ne le portait pas quand le tour n’envoyait aucune requête API ou se terminait par un appel d’outil différé. Avant v0.3.246, les résultats d’erreur ne le portaient pas non plus, et avant v0.3.216 aucun résultat ne le portait.
  • La première réponse du tour : le premier message d’assistant et, avec includePartialMessages, également le premier événement de flux dont event.type n’est pas ping, pour que vous puissiez lier la réponse avant l’arrivée du résultat. L’écho de première réponse nécessite Agent SDK v0.3.246 ou ultérieur. Avant v0.3.269, avec includePartialMessages, Claude Code le définissait uniquement sur ce premier événement de flux, ou sur le premier message d’assistant quand le tour ne diffusait rien en streaming. Quand le message auquel le tour répond change en cours de tour, la première réponse après le changement porte aussi le champ, sur Agent SDK v0.3.265 ou ultérieur ; les versions antérieures le définissent sur un seul cadre de réponse par tour.
  • Chaque cadre thinking_tokens du tour : pour que vous puissiez attribuer la progression de la réflexion au message que vous avez envoyé sans attendre la première réponse du tour. Nécessite Agent SDK v0.3.260 ou ultérieur.
Claude Code omet le champ dans ces cas :
  • Cadres de réponse autres que ces premières réponses
  • Cadres de sous-agent
  • Tours qui ne répondent à aucun message de votre part, ou répondent à un message que vous avez envoyé sans uuid
  • Résultats qui ne répondent à aucun message que vous avez envoyé, comme le résultat mis à zéro après un crash du processus worker

user_message_uuids

Les uuids de chaque message que vous avez envoyé auquel Claude Code a répondu dans ce tour. Quand vous envoyez plusieurs messages rapprochés, Claude Code peut les fusionner en un seul tour, et user_message_uuid nomme alors uniquement le dernier d’entre eux. Pour faire correspondre la réponse à l’un des messages fusionnés, cherchez l’uuid de ce message n’importe où dans cette liste. Nécessite Agent SDK v0.3.259 ou ultérieur. Claude Code définit la liste avec user_message_uuid sur chaque cadre de réponse qui porte ce champ et sur le résultat. Pour l’ensemble complet des cadres du tour qui renvoient l’uuid du message auquel il est répondu, et la version que chacun nécessite, voir user_message_uuid. La liste contient toujours user_message_uuid et contient au maximum 64 entrées. Quand Claude Code prend en compte un message régulier que vous avez envoyé pendant qu’un tour s’exécutait, il ajoute l’uuid de ce message à la liste du résultat. Quand une première réponse ou un résultat porte user_message_uuid sans la liste, il provient d’une version antérieure de Claude Code, donc revenez au champ unique.

resume_reason

La raison pour laquelle ce tour poursuit un tour qu’un redémarrage a interrompu. Claude Code définit ce champ sur un tour qui poursuit un tour interrompu sous CLAUDE_CODE_RESUME_INTERRUPTED_TURN, afin que vous puissiez distinguer la réponse et le résultat du tour poursuivi de ceux de la tentative interrompue. Nécessite le SDK Agent v0.3.268 ou ultérieur. Claude Code définit le champ sur deux types de cadre :
  • Le résultat du tour poursuivi : dans la branche de succès comme dans la branche d’erreur, que le résultat porte ou non user_message_uuid.
  • Les trames de réponse du tour poursuivi : celles qui portent user_message_uuid.
La valeur est un court token en minuscules, tel que interrupted_turn.

queued_turn_count

Le nombre de messages que vous avez envoyés avec origin: { kind: "human" } qui attendent toujours dans la file de commandes quand Claude Code a produit le résultat. Nécessite Agent SDK v0.3.242 ou ultérieur. Ce que 0 et un champ absent vous indiquent :
  • 0 : Claude Code ne compte pas les messages que vous avez envoyés sans cet origin, et ne compte pas les notifications de tâche, donc un tour peut toujours suivre.
  • Absent : le résultat final que Claude Code émet après un crash ou une erreur de démarrage fatale omet le champ, et peut porter des totaux mis à zéro.

startup_failure_reason

Pourquoi Claude Code a refusé de démarrer, pour que votre application puisse proposer la correction au lieu d’une nouvelle tentative. Claude Code le définit sur le résultat error_during_execution qu’il écrit avant de quitter sur une défaillance de démarrage connue. Ce résultat porte des totaux mis à zéro, et son tableau errors porte le même texte que stderr. Le champ est absent sur tous les autres résultats. Nécessite Agent SDK v0.3.274 ou ultérieur. Définissez CLAUDE_CODE_STARTUP_FAILURE_RESULTS à 1 dans env pour recevoir ce résultat pour chaque valeur SDKStartupFailureReason. Sans cette variable, Claude Code écrit le résultat uniquement pour ces défaillances, et les autres se terminent par une sortie stderr, un code de sortie non nul et aucun message de résultat :
  • Une reprise que Claude Code arrête parce qu’il ne peut pas ramener la session dans son worktree, avec worktree_unverified ou worktree_resume_refused. Cette section indique quelle erreur porte quelle valeur.
  • Un continue refusé d’une conversation détenue par une session en arrière-plan, avec session_held_by_background. Pour un resume refusé d’une telle conversation, Claude Code écrit le résultat uniquement quand la variable est définie.
Chaque valeur nomme un refus :

SDKSystemMessage

Message d’initialisation du système.
fast_mode_state rapporte l’état du mode rapide de la session. Quand quelque chose bloque le mode rapide, fast_mode_disabled_reason nomme la vérification qui l’a bloqué ; le champ nécessite Claude Code v2.1.219 ou ultérieur. Pour les codes de raison et leurs significations, voir fast_mode_disabled_reason sur le message de résultat. terminal_slash_commands nomme les entrées dans slash_commands dont l’interface est liée au terminal local, comme exit. Vous pouvez les envoyer comme n’importe quelle autre entrée dans slash_commands ; le champ existe pour qu’un client distant ou mobile puisse les masquer de ses menus de commandes. Le champ est présent uniquement quand il n’est pas vide, et nécessite Agent SDK v0.3.229 ou ultérieur.
  • source sur chaque entrée mcp_servers : d’où provient la définition du serveur, avec les mêmes valeurs que source de McpServerStatus. Nécessite Agent SDK v0.3.274 ou ultérieur.
  • effort : le niveau d’effort que Claude Code envoie sur la prochaine requête de la session, ou null quand il n’en envoie aucun. Claude Code définit le champ uniquement sur le message d’initialisation qu’il envoie aux clients Remote Control, et l’omet du message d’initialisation que votre application lit. Nécessite Agent SDK v0.3.234 ou ultérieur.
Le tableau capabilities nomme les comportements de protocole que cette CLI implémente, pour que vous puissiez faire de la détection de 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 du comportement. Le champ nécessite Claude Code v2.1.205 ou ultérieur et est absent sur les CLI antérieures. Le tableau plugin_errors liste les défaillances de chargement de plugin. Une entrée décrit soit un plugin qui n’a pas été chargé et est absent de plugins, soit un plugin qui a été chargé sans l’une de ses parties, comme son fichier de hooks. La clé est omise quand rien n’a échoué. SDKSystemMessage déclare plugin_errors dans Agent SDK v0.3.283 ou ultérieur. Quand un répertoire ou une archive de votre option plugins échoue lui-même à se charger, le champ plugin de l’entrée contient une balise positionnelle comme inline[0] au lieu d’un nom de plugin. Cela se produit, par exemple, quand le chemin n’existe pas ou que le manifeste est invalide. Faites correspondre une telle entrée à votre option par son champ path. Le tableau ci-dessous liste les champs de chaque entrée plugin_errors.

SDKPartialAssistantMessage

Message partiel en streaming (uniquement lorsque includePartialMessages vaut true). Le champ parent_tool_use_id est toujours null : les événements de flux ne sont émis que pour la session principale. Pour l’attribution aux sous-agents, utilisez les messages complets, qui portent agent_id et parent_tool_use_id, ou activez forwardSubagentText pour recevoir le texte et la réflexion des sous-agents sous forme de messages complets.
Claude Code définit user_message_uuid et user_message_uuids sur le premier événement de flux du tour qui n’est pas un ping, puis de nouveau lorsque le message auquel le tour répond change, dans les conditions décrites dans user_message_uuid. Lorsque le tour poursuit un tour qu’un redémarrage a interrompu, les événements de flux qui portent ces champs portent également resume_reason.

SDKCompactBoundaryMessage

Message indiquant une limite de compaction de conversation.

SDKInformationalMessage

Bannière de texte générique émise par la boucle. Porte les avertissements, les avis et autres lignes d’état non-erreur que Claude Code émet, ainsi que les retours de hook comme la raison du blocage d’un hook UserPromptSubmit. Sur Claude Code v2.1.227 ou ultérieur, le systemMessage d’un hook peut arriver comme ce message, avec chaque ligne préfixée par le nom du hook, comme PostToolUse:Bash says:. Chaque section d’événement sur la page des hooks indique comment la sortie s’affiche. Rendez content comme texte brut au level donné.

SDKWorkerShuttingDownMessage

Émis lors d’un arrêt propre du worker pour que les clients distants puissent montrer pourquoi le worker s’est arrêté au lieu d’attendre l’expiration du délai de heartbeat. La reason est une courte chaîne snake_case définie par la CLI hôte, comme "host_exit" ou "remote_control_disabled". Agissez sur ceci uniquement lors du streaming 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 des plugins de marketplace avant le premier tour. Les statuts started et completed encadrent l’installation globale. Les statuts installed et failed rapportent les marketplaces individuelles et incluent name.

SDKPermissionDeniedMessage

Événement de flux émis quand le système de permissions refuse un appel d’outil sans demande de permission interactive. Utilisez-le pour afficher le refus dans votre interface utilisateur au moment où il se produit, plutôt que d’observer uniquement le résultat d’outil is_error qui suit. Les refus qu’il rapporte dépendent de la façon dont l’exécution gère les demandes de permission :
  • Avec un callback canUseTool et le permissionPrompts: 'host' par défaut : les demandes de permission vont à votre callback, et cet événement rapporte les refus que Claude Code décide par lui-même sans l’appeler.
  • Sans l’un ni l’autre : une exécution -p nue, ou un query() qui ne définit ni canUseTool ni permissionPromptToolName, refuse tout appel d’outil qui aurait déclenché une demande, à moins qu’un hook PermissionRequest ne l’autorise, et cet événement signale ces refus ainsi que ceux que Claude Code décide de lui-même. Avant v2.1.223, Claude Code n’émettait pas cet événement dans les exécutions sans callback.
  • Avec un outil de demande de permission MCP, défini avec permissionPromptToolName ou le flag --permission-prompt-tool, et le permissionPrompts: 'host' par défaut : Claude Code n’émet pas du tout cet événement, pas même pour les refus de règle qu’il décide par lui-même.
  • Avec permissionPrompts: 'none' : Claude Code refuse les appels qui auraient déclenché une demande de permission, même quand canUseTool ou un outil de demande de permission MCP est aussi défini, et cet événement rapporte ces refus ainsi que ceux que Claude Code décide par lui-même. Nécessite Claude Code v2.1.259 ou ultérieur.
Dans chaque configuration, cet événement ignore tout refus décidé sur le chemin du hook PreToolUse, que le hook ait refusé l’appel lui-même ou qu’une règle de refus ait remplacé la décision d’autorisation ou de demande du hook. L’événement est aussi fourni au mieux : occasionnellement, Claude Code enregistre un refus sans émettre cet événement, donc permission_denials sur le message de résultat est le registre faisant autorité.

SDKPermissionDenial

Information sur un usage d’outil refusé.

SDKContextUsage

Forme structurée du rapport /context, portée comme context_usage sur le SDKAssistantMessage qui livre un résultat /context. Agent SDK v0.3.232 et ultérieur exportent le type. Contrairement à SDKControlGetContextUsageResponse, il porte uniquement les données nécessaires pour rendre la ventilation d’utilisation, sans champs d’affichage comme color et gridRows. Claude Code calcule le rapport avec des requêtes API de comptage de tokens qui n’apparaissent pas dans le flux de messages ; voir comment ces requêtes sont gérées.
Le tableau liste ce que Claude Code met dans chaque champ. Les champs de model à over_limit décrivent la session dans son ensemble, et les champs de collection attribuent les tokens aux éléments individuels. over_limit.kind enregistre comment Claude Code a résolu la fenêtre, pas si l’API accepte la prochaine requête :
  • hard_limit : la fenêtre est ce que Claude Code croit être la limite propre du modèle, au-delà de laquelle l’API refuse les requêtes
  • compaction_window : la fenêtre est une fenêtre de politique de compaction, qui peut ou non coïncider avec la limite du modèle
Claude Code fait évoluer le type de manière additive, en ajoutant de nouvelles données comme des champs optionnels plutôt qu’en remodelant les existants. Lisez les champs que vous connaissez et ignorez ceux que vous ne reconnaissez pas.

SDKContextUsageCategory

Une ligne de la ventilation d’utilisation par catégorie de /context.
Le tableau liste ce que Claude Code met dans chaque champ d’une ligne. Chaque valeur kind indique ce que sont les tokens de la ligne :
  • used : contenu qui occupe la fenêtre de contexte
  • free : la fenêtre restante
  • buffer : la réserve de compaction
  • deferred : schémas d’outils que Claude Code tient hors de la fenêtre et exclut du calcul d’utilisation, listés à titre informatif

SDKUsageReport

Forme structurée du rapport /usage, transportée en tant que usage_report sur le SDKAssistantMessage qui livre un résultat /usage. L’Agent SDK v0.3.273 et ultérieures exportent ce type. Le type est expérimental : sa forme peut changer.
Les champs de premier niveau sont session et rate_limits :
  • session : les totaux courants de coût et d’utilisation de Claude Code, lus dans le même registre que total_cost_usd et modelUsage sur SDKResultMessage. Chaque entrée de model_usage est un ModelUsage.
  • rate_limits : les lignes d’utilisation du forfait dans limits et les dépenses en crédits d’utilisation dans extra_usage. Vaut null lorsque Claude Code n’a pas pu obtenir l’utilisation du forfait, par exemple lorsque le jeton OAuth de la session ne dispose pas du scope user:profile.
Claude Code calcule session.total_cost_usd localement à partir du nombre de tokens : il s’agit donc d’une estimation, et non de ce que facture votre forfait. Les dépenses en crédits d’utilisation signalées par le serveur figurent dans le bloc distinct extra_usage. Consultez Suivre les coûts et l’utilisation pour les réserves concernant la précision. limits contient les lignes d’utilisation du serveur telles que le serveur les a envoyées : les compteurs applicables, leur portée, leurs libellés, leur gravité et leur ordre relèvent du serveur, affichez donc les lignes telles quelles.
  • Un tableau vide signifie que le serveur n’a signalé aucun compteur.
  • null signifie que Claude Code n’a aucune ligne à signaler.
Chaque ligne de limits décrit un compteur d’utilisation : Avant l’Agent SDK v0.3.277, le type déclarait severity et is_active comme facultatifs et nullables, et une ligne pouvait arriver sans eux. extra_usage correspond aux dépenses et au plafond de crédits d’utilisation pour la période de facturation tels que le serveur les signale, présent lorsque le forfait dispose de crédits d’utilisation. Les montants sont exprimés dans les sous-unités de currency, les cents pour l’USD.
  • monthly_limit vaut null lorsque ce compte n’a pas de plafond de dépenses propre. Sur les forfaits Team et Enterprise, n’affichez pas null comme illimité.
  • is_enabled vaut false tant que les crédits d’utilisation ne peuvent pas payer les requêtes.

SDKMessageOrigin

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

Sous-types de notification de tâche

Quand Claude Code livre une notification de tâche dans une session, il définit subkind sur l’origin de la notification si les serveurs Anthropic ont vérifié d’où provenait cette notification. Il définit aussi subkind quand votre application déclare elle-même le message comme une exécution planifiée, ce qui nécessite TypeScript Agent SDK v0.3.280 ou ultérieur. subkind nécessite Claude Code v2.1.213 ou ultérieur, et prend l’une de deux valeurs :
  • scheduled-trigger : la notification est le prompt stocké d’une routine, livré parce que l’un des déclencheurs de la routine s’est déclenché : sa planification, son déclencheur API, son déclencheur GitHub, ou Exécuter maintenant. Un prompt que votre application déclare comme une exécution planifiée porte aussi cette valeur. Claude Code présente ces notifications au modèle comme la tâche assignée de la session, avec un avis différent de l’avis que portent les autres notifications de tâche.
  • peer-send-message : la notification est un message qu’une autre de vos sessions a envoyé avec l’outil côté serveur send_message que les sessions cloud utilisent pour s’envoyer des messages, et non l’outil SendMessage entre sessions, et les serveurs Anthropic ont vérifié que les deux sessions appartiennent au même groupe privé de sessions. Nécessite Claude Code v2.1.224 ou ultérieur. Une livraison send_message que les serveurs n’ont pas vérifiée de cette façon n’obtient pas de subkind.
Toutes les autres notifications de tâche n’ont pas de subkind. Cela inclut l’activité PR livrée dans une session et les événements en arrière-plan comme une tâche terminée. Les messages de l’outil SendMessage entre sessions ne sont pas du tout des notifications de tâche : qu’ils proviennent d’une session sur la même machine ou, via les serveurs Anthropic, d’une autre machine, Claude Code leur donne kind: "peer" et les champs d’origine pair. fireReason indique pourquoi une notification scheduled-trigger s’est déclenchée, sous la forme d’un court jeton en minuscules comme scheduled, manual, retry, catch_up, ou api. Les serveurs Anthropic le définissent sur les livraisons d’une routine, et votre application le définit quand elle déclare une exécution planifiée. Il est absent quand ni l’un ni l’autre n’en a envoyé. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur. Une tâche en arrière-plan peut s’exécuter plusieurs fois sous le même task_id, par exemple lorsque Claude reprend un sous-agent. Chaque exécution possède son propre run_id. Lorsque la notification d’une exécution atteint votre session sous forme de message utilisateur, runId sur l’origine task-notification de ce message contient la même valeur. Une notification peut arriver après le démarrage de l’exécution suivante de la tâche, et elle porte toujours l’ID de l’exécution précédente. Pour savoir à quelle exécution appartient un tour, comparez runId, et non task_id. Nécessite le SDK Agent TypeScript v0.3.292 ou une version ultérieure.

Déclarer une exécution planifiée

Si votre application exécute des prompts selon sa propre planification, déclarez chaque exécution pour que Claude Code présente le tour au modèle comme une tâche planifiée plutôt que comme une entrée en direct de l’utilisateur. Démarrez la session avec CLAUDE_CODE_HOST_SCHEDULED_RUN défini à 1 dans env, puis envoyez le SDKUserMessage de l’exécution avec origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" } et sans isSynthetic. Claude Code ignore la déclaration dans un processus démarré sans cette variable. Il l’ignore aussi dans un processus dont l’environnement porte CLAUDECODE ou CLAUDE_CODE_CHILD_SESSION. Claude Code conserve fireReason uniquement quand la valeur est composée de 1 à 32 lettres minuscules ou traits de soulignement. Nécessite TypeScript Agent SDK v0.3.280 ou ultérieur.

Champs d’origine pair

Une origine peer identifie quel agent a envoyé le message : un coéquipier en processus envoyant à main avec SendMessage, ou un pair entre sessions, une autre de vos sessions Claude Code. Les pairs entre sessions nécessitent Claude Code v2.1.224 ou ultérieur sur macOS et Linux ; voir disponibilité de la messagerie entre sessions pour l’exigence Windows native. Un pair entre sessions peut s’exécuter sur la même machine, ou sur une autre de vos machines ou dans le cloud quand son message arrive via Remote Control. Les deux types d’expéditeur remplissent les champs différemment :
  • from : le nom du coéquipier, ou l’adresse de l’expéditeur pour un pair entre sessions. Pour un message entre machines unidirectionnel, l’expéditeur n’a pas d’adresse de réponse et from est "unknown". La valeur est rédigée par l’expéditeur ; verifiedPeerPid est l’identité vérifiée.
  • fromMode : la classe de permission de la session d’envoi, bypass ou prompting, déclarée par un hôte qui relaie un message pair entre vos sessions, comme l’application de bureau. Claude Code la lit dans la session de réception quand il applique les contrôles entrants. Nécessite Agent SDK v0.3.234 ou ultérieur.
  • senderTaskId : l’ID de tâche du coéquipier. Absent pour un pair entre sessions.
  • name : le nom d’affichage de l’expéditeur, normalisé par Claude Code : il supprime les points de code Unicode de contrôle, de format, de substitut et de séparateur de ligne ou de paragraphe, puis élague le résultat et le limite à 64 points de code avec une ellipse. Nécessite Claude Code v2.1.205 ou ultérieur.
  • body : le corps du message décodé, sans l’enveloppe de pair, identique octet pour octet à ce que voit le modèle. Présent pour un message de coéquipier unique, absent lorsque plusieurs sont fusionnés ; pour un pair inter-sessions, présent uniquement lorsque le tour correspond exactement à une enveloppe de pair formée par Claude Code. Affichez name et body au lieu d’analyser à nouveau le texte du message. Avant la v2.1.299, les messages fusionnés conservaient le body du premier message. Nécessite Claude Code v2.1.205 ou ultérieur.
  • fromSession : l’ID de session de l’expéditeur ouvrable par l’hôte, défini par l’hôte de l’expéditeur pour que votre interface utilisateur puisse renvoyer vers la session d’envoi. Comme from, il est déclaré par l’expéditeur : utilisez-le uniquement comme cible de navigation, et ne le traitez pas comme une preuve de l’identité de l’expéditeur. Nécessite Claude Code v2.1.216 ou ultérieur.
  • verifiedPeerPid : l’ID du processus qui s’est connecté au socket de messagerie entre sessions de cette session, vérifié par le noyau et lu à partir de la connexion elle-même, jamais à partir du payload. Utilisez-le, et non from, pour identifier l’expéditeur : from peut être falsifié par n’importe quel processus du même utilisateur. Le champ est absent quand Claude Code ne peut pas le vérifier, comme sur Windows ou pour une entrée hors socket, donc une valeur absente signifie que l’expéditeur n’est pas vérifié. Pour le trafic relayé, il identifie le relais plutôt que l’auteur du message, et les ID de processus sont recyclables, donc traitez-le comme une indication de provenance plutôt que comme un jeton d’authentification. Nécessite Claude Code v2.1.216 ou ultérieur.

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

mcp_server est présent quand l’outil provient d’un serveur MCP ; voir McpServerProvenance. Les entrées PostToolUse, PostToolUseFailure, PermissionRequest et PermissionDenied portent le même champ. Le champ nécessite Agent SDK v0.3.274 ou ultérieur.

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.

PermissionDeniedHookInput

NotificationHookInput

UserPromptSubmitHookInput

UserPromptExpansionHookInput

SessionStartHookInput

SessionEndHookInput

StopHookInput

StopFailureHookInput

SubagentStartHookInput

SubagentStopHookInput

PreCompactHookInput

PostCompactHookInput

PreModelSwitchHookInput

S’exécute avant qu’un changement de modèle demandé ne prenne effet. context_tokens et les champs qui le suivent estiment le coût de renvoi de la conversation au nouveau modèle. Pour les descriptions complètes des champs et la sémantique de blocage, voir PreModelSwitch.

PostModelSwitchHookInput

S’exécute après que le modèle de la session change. Il porte les mêmes champs que PreModelSwitchHookInput, avec deux valeurs source supplémentaires. Voir PostModelSwitch.

PermissionRequestHookInput

SetupHookInput

TeammateIdleHookInput

TaskCreatedHookInput

TaskCompletedHookInput

ElicitationHookInput

ElicitationResultHookInput

ConfigChangeHookInput

InstructionsLoadedHookInput

DirectoryAddedHookInput

directory est le chemin absolu du répertoire qui a été ajouté. source est "slash_command" quand /add-dir l’a ajouté et "register_repo_root" quand la demande de contrôle du SDK l’a fait.

WorktreeCreateHookInput

WorktreeRemoveHookInput

CwdChangedHookInput

FileChangedHookInput

MessageDisplayHookInput

HookJSONOutput

Valeur de retour du hook.

AsyncHookJSONOutput

SyncHookJSONOutput

Types d’entrée d’outil

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

ToolInputSchemas

Union de types d’entrée d’outil exportée depuis @anthropic-ai/claude-agent-sdk/sdk-tools ; les membres incluent :

Agent

Nom de l’outil : Agent. Le nom précédent Task est toujours accepté comme alias, et le tableau tools dans le message d’initialisation SDKSystemMessage répertorie actuellement cet outil comme Task pour la compatibilité rétroactive.
Le champ mode est déprécié et ignoré sur Claude Code v2.1.212 ou version ultérieure. Un sous-agent s’exécute soit en mode de permission de la session parent, soit en mode de sa définition permissionMode, et les règles d’héritage des sous-agents décident lequel.
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 avec délai d’expiration optionnel et exécution en arrière-plan. Le répertoire de travail persiste entre les commandes, y compris les commandes exécutées dans les tours ultérieurs d’une session multi-tour ; l’état du shell tel que les variables d’environnement exportées ne persiste pas. Pour les limites sur les changements de répertoire qui persistent, voir Ce qui persiste entre les commandes. Pour ce qui définit le plafond de premier plan, voir Délai d’expiration et limites de sortie. Pour la limite de temps en arrière-plan, voir Limite de temps pour les commandes en arrière-plan.

Monitor

Nom de l’outil : Monitor
Exécute une source en arrière-plan 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. timeout_ms est la date limite de la surveillance en millisecondes. Elle est par défaut 300 000 et accepte les valeurs jusqu’à 3 600 000. La date limite effective est au maximum 1 800 000, soit 30 minutes, donc une valeur acceptée plus grande est raccourcie à cela. À la date limite, la surveillance se termine et Claude reçoit un avis pour qu’il puisse démarrer une nouvelle surveillance s’il en a toujours besoin. Le type exporté marque timeout_ms comme requis car le schéma remplit la valeur par défaut ; un appel qui l’omet valide. Lorsque Monitor exécute une commande, il suit les mêmes règles de permission que Bash ; une surveillance 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

Supprimé dans Claude Code v2.1.277, ainsi que son type TaskOutputInput. Récupérait précédemment la sortie d’une tâche en arrière-plan en cours d’exécution ou terminée ; Claude lit le fichier de sortie d’une tâche en arrière-plan avec Read à la place. Une entrée disallowedTools ou une règle de refus qui nomme toujours TaskOutput est ignorée sans avertissement.

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").
  • allow_large permet à Claude de lire un fichier texte au-delà des limites de taille habituelles lorsque la fenêtre de contexte de la session a de la place. Il nécessite Agent SDK v0.3.296 ou version ultérieure, qui intègre Claude Code v2.1.296.
Pour un PDF, Claude reçoit le contenu du fichier dans le tool_result de l’appel Read. Une lecture qui retourne la sortie pdf porte un bloc text de résumé suivi d’un bloc document. Une qui retourne la sortie parts porte le bloc text de résumé suivi d’un bloc par page extraite : un bloc image, ou un bloc text nommant la page lorsque Claude Code n’a pas pu la rendre en tant qu’image. Avant Agent SDK v0.3.242, Claude Code livrait le contenu du fichier en tant que message user séparé après le résultat de l’outil.

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 construit sur ripgrep avec support regex.

TaskStop

Nom de l’outil : TaskStop
Arrête une tâche en arrière-plan 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’agents ou un agent en arrière-plan 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. offset est le nombre de caractères à ignorer depuis le début de la page. Claude le définit pour poursuivre la lecture d’une page longue. Le champ nécessite Agent SDK v0.3.290 ou version ultérieure.

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 workflow 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.
Les outils suivants sont disponibles par défaut uniquement sur Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 et les modèles antérieurs. Sur tous les autres modèles, y compris les identifiants de modèle que Claude Code ne reconnaît pas, ils ne sont pas disponibles sauf si vous les activez :
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Partout où les outils sont disponibles, Claude Code fournit les quatre outils Task, ou TodoWrite à la place lorsque vous définissez CLAUDE_CODE_ENABLE_TASKS=0.Cet ensemble par défaut s’applique dans Claude Code v2.1.268 et versions ultérieures, que le SDK TypeScript Agent regroupe à partir de v0.3.268.Voir Disponibilité du modèle pour vous inscrire.

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 plan. 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 prompts 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 dépôt actuel ou, dans un espace de travail multi-dépôt, d’un dépôt imbriqué à l’intérieur ; depuis une session worktree, elle doit être sous .claude/worktrees/ du dépôt de la session. name et path s’excluent mutuellement.

ExitWorktree

Nom de l’outil : ExitWorktree
Quitte le worktree git actuel et retourne au répertoire de travail d’origine. L’action keep laisse le worktree et la branche sur le disque, tandis que remove supprime les deux. discard_changes doit être true lors de la suppression d’un worktree qui a des fichiers non commités ou des commits non fusionnés.

EnterPlanMode

Nom de l’outil : EnterPlanMode
Entre en mode plan, où Claude recherche et présente un plan avant de faire des modifications.

CronCreate

Nom de l’outil : CronCreate
Planifie un prompt pour s’exécuter selon un calendrier cron à 5 champs en heure locale. Définissez recurring à false pour se déclencher une seule fois à la prochaine correspondance. Les tâches sont limitées à la session par défaut, et reprendre avec --resume ou --continue restaure les tâches qui n’ont pas expiré. Voir Tâches planifiées. Définir durable à true demande la persistance vers .claude/scheduled_tasks.json pour que la tâche survive aux redémarrages. La planification durable n’est pas disponible dans chaque session : lorsqu’elle ne l’est pas, Claude Code accepte durable: true mais crée la tâche en session uniquement. Lisez le champ durable de la sortie pour voir si la tâche a persisté.

CronDelete

Nom de l’outil : CronDelete
Supprime une tâche cron planifiée par l’ID retourné par CronCreate.

CronList

Nom de l’outil : CronList
Répertorie les tâches cron planifiées : les tâches durables de .claude/scheduled_tasks.json et les tâches en session uniquement de la session actuelle.

ScheduleWakeup

Nom de l’outil : ScheduleWakeup
Planifie un réveil unique qui déclenche le prompt donné après un délai. Cet outil soutient la commande /loop à rythme personnel. Le runtime limite delaySeconds entre 60 et 3 600 secondes. Les champs delaySeconds, reason, prompt et noop sont requis sauf si stop est true. noop: true signale un réveil où rien n’a changé. Définir stop: true annule le réveil en attente et termine le /loop à rythme personnel. Le champ stop nécessite Claude Code v2.1.202 ou version ultérieure. Voir la ligne ScheduleWakeup dans la référence des outils.

RemoteTrigger

Nom de l’outil : RemoteTrigger
Gère les Routines, les exécutions Claude Code planifiées et déclenchées hébergées dans le cloud. Cet outil soutient la commande /schedule. trigger_id est requis pour les actions get, update, run et list_runs. body est requis pour create, update et create_webhook_trigger, et optionnel pour run. create_webhook_trigger attache une source d’événement à une routine existante, telle qu’un événement GitHub qui la déclenche. Le body nomme la source, les événements et la routine à déclencher. Nécessite Claude Code v2.1.225 ou version ultérieure. list_runs répertorie les exécutions récentes d’une routine, et get_run_log lit le journal d’une exécution. session_id nomme l’exécution à lire, à partir d’un résultat list_runs, et cursor pagine à travers les résultats de l’une ou l’autre action. Les deux actions nécessitent Claude Code v2.1.227 ou version ultérieure. Cet outil n’est disponible que lorsque la session est authentifiée avec un compte claude.ai sur un plan avec Routines activées, et est absent lorsque la politique de votre organisation désactive les sessions cloud. Sur Claude Code v2.1.227 ou version ultérieure, l’outil est également absent lorsqu’un propriétaire a désactivé les routines pour l’organisation. Avant v2.1.227, une session avec seulement le basculement des routines désactivé affichait toujours l’outil, et le serveur refusait ses appels.

PushNotification

Nom de l’outil : PushNotification
Envoie une notification push proactive à l’utilisateur. Gardez message sous 200 caractères car les systèmes d’exploitation mobiles tronquent le texte plus long. Voir la ligne PushNotification dans la référence des outils pour la disponibilité du fournisseur ; la livraison push s’effectue via l’infrastructure hébergée par Anthropic qui n’est pas accessible depuis Amazon Bedrock, Claude Platform sur AWS, Google Cloud’s Agent Platform ou Microsoft Foundry.

REPL

Supprimé dans v2.1.275. Jusqu’à v2.1.274, un outil REPL expérimental pouvait être activé avec CLAUDE_CODE_REPL=1 dans l’option env.

ReportFindings

Nom de l’outil : ReportFindings
Signale les résultats de revue de code sous forme de liste structurée pour que Claude Code puisse les rendre au lieu de les imprimer en tant que texte. Les résultats sont ordonnés du plus grave au moins grave, avec au maximum 32 par appel, et le tableau est vide lorsqu’aucun n’a survécu. Nécessite Claude Code v2.1.196 ou version ultérieure. level est optionnel et contient le niveau d’effort que Claude indique pour la revue. Claude Code ne le compare pas au niveau auquel la revue s’est exécutée, les deux peuvent donc différer. Chaque résultat porte ces champs :
  • file : chemin relatif au dépôt où se trouve le résultat. Le line optionnel est la ligne indexée à 1 à laquelle il s’ancre.
  • summary : déclaration d’une phrase du défaut. failure_scenario décrit les entrées concrètes et l’état qui mènent à la sortie incorrecte ou au crash.
  • short_summary : étiquette compressée optionnelle d’au maximum 60 caractères pour l’affichage compact. Nécessite Claude Code v2.1.212 ou version ultérieure.
  • category : slug kebab-case court optionnel du type de résultat, tel que correctness ou test-coverage. Nécessite Claude Code v2.1.199 ou version ultérieure.
  • verdict : défini lorsqu’une passe de vérification s’est exécutée ; absent sur les revues en ligne uniquement.
  • outcome : défini uniquement lors de la signalisation après l’application des correctifs.

Artifact

Nom de l’outil : Artifact
Publie un fichier .html ou .md local en tant que page d’artefact hébergée, ou répertorie les artefacts publiés de l’utilisateur. Omettez action ou passez "publish" pour publier file_path, qui est requis pour l’action de publication. Chaque champ ci-dessous s’applique à une publication :
  • icon : un mot générique court pour l’icône de l’onglet du navigateur de l’artefact, tel que chart ou map. Claude l’inclut à la première publication et l’omet à une mise à jour, ce qui conserve l’icône stockée de l’artefact.
  • favicon : déprécié, et Claude l’omet.
  • title : nomme la page publiée dans l’onglet du navigateur et la galerie lorsque le fichier HTML n’a pas de balise <title>.
  • url : cible un artefact existant à mettre à jour sur place au lieu de créer un nouveau.
force est un dernier recours qui écrase une version plus récente qu’une autre session a publiée. En cas de conflit, la publication échouée retourne le contenu plus récent ; Claude fusionne ses modifications sur ce contenu, ou relit l’artefact, et publie à nouveau. Passez force uniquement lorsque l’utilisateur demande explicitement de rejeter cette version. Passez "list" pour énumérer les artefacts publiés de l’utilisateur ; seuls limit et scope peuvent l’accompagner. scope par défaut à "mine", qui répertorie les artefacts que l’utilisateur possède ; "shared" répertorie les artefacts que d’autres personnes ont partagés avec l’utilisateur, et "all" répertorie les deux. limit définit le nombre maximal d’artefacts qu’une liste retourne, de 1 à 200. Un limit supérieur à 50 nécessite Agent SDK v0.3.292 ou version ultérieure. Sans limit, une liste retourne jusqu’à 25 artefacts.
  • capabilities : les capacités d’exécution que la page publiée utilise, indexées par nom de capacité, telles que les connecteurs que la page peut appeler. Le service d’artefact valide la déclaration et rejette une publication qui nomme une capacité que le compte ne peut pas utiliser ou en donne une configuration invalide. Passez {} pour effacer une déclaration stockée, et omettez le champ lors d’un redéploiement pour la conserver. Nécessite Agent SDK v0.3.235 ou version ultérieure.
  • contract : la version d’exécution contre laquelle la page publiée s’exécute. Omettez-la pour conserver la version actuelle de l’artefact, passez "latest" pour mettre à niveau, ou passez une version spécifique pour épingler ou revenir en arrière. Nécessite Agent SDK v0.3.235 ou version ultérieure.
Les types sont exportés, mais l’outil est désactivé par défaut dans les sessions Agent SDK. La publication nécessite également chaque condition du tableau de disponibilité des artefacts, que les sessions authentifiées avec une clé API ne satisfont pas.

Projects

Nom de l’outil : Projects
Lit et écrit le Project claude.ai attaché à la session. Distribue sur method :
  • project_info : retourne les métadonnées du projet et la liste des documents.
  • project_read : lit un document par path.
  • project_search : interroge la base de connaissances du projet avec query. n limite les résultats et vaut par défaut 5.
  • project_write : crée ou remplace un document à path à partir d’exactement l’un de content, qui porte du texte en ligne, ou local_path, qui nomme un fichier dans le répertoire de travail. present_to_user: true marque le document écrit comme le livrable que l’utilisateur doit voir.
  • project_delete : supprime un document par path.

ReadMcpResourceDir

Nom de l’outil : ReadMcpResourceDirTool
Répertorie les enfants directs d’une ressource de répertoire sur un serveur MCP. Utilisable uniquement contre un serveur qui a déclaré le support de la liste des répertoires ; la liste n’est pas récursive. La liste des répertoires n’est pas activée dans chaque session : lorsqu’elle est désactivée, l’appel retourne une liste resources vide et le champ error signale que la liste des répertoires n’est pas activée.

RefreshMcpTools

Nom de l’outil : RefreshMcpTools
Réinterroge la liste des outils des serveurs MCP connectés et applique les modifications. Les types sont exportés, mais Claude Code enregistre l’outil uniquement lorsque vous définissez CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 dans l’option env, et uniquement dans les sessions avec au moins un serveur MCP. Nécessite Claude Code v2.1.211 ou version ultérieure.

ShowOnboardingRolePicker

Nom de l’outil : ShowOnboardingRolePicker
Rend une ligne de puces de sélecteur de rôle cliquable lors de l’intégration Cowork pour que l’utilisateur puisse choisir son rôle et obtenir un plugin correspondant installé. Ne prend aucun argument ; la liste des rôles est définie par le client. L’appel se bloque jusqu’à ce que l’utilisateur réponde.

McpInput

Nom de l’outil : noms d’outils MCP dynamiques de la forme mcp__<server>__<tool>
Les arguments des outils MCP sont un objet ouvert : chaque serveur définit ses propres paramètres, donc le type ne place aucune contrainte sur les noms de champs ou les valeurs. Consultez le schéma d’outil du serveur pour les champs qu’un outil spécifique accepte.

Types de sortie d’outils

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

ToolOutputSchemas

Union des types de sortie d’outils exportés depuis @anthropic-ai/claude-agent-sdk/sdk-tools ; les membres incluent :

Agent

Nom de l’outil : Agent. Le nom précédent Task est toujours accepté comme alias, et le tableau tools dans le message d’initialisation SDKSystemMessage liste actuellement cet outil comme Task pour la compatibilité rétroactive.
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 en arrière-plan, et "remote_launched" pour les tâches que Claude Code a envoyées à une session cloud, où sessionUrl renvoie à cette session et taskId l’identifie. Sur la variante completed, resolvedModel nomme le modèle sur lequel le sous-agent a démarré, qui peut différer du model d’entrée demandé lorsque availableModels ou une autre substitution s’applique. Ce champ nécessite Claude Code v2.1.174 ou ultérieur. Sur async_launched, il nomme le modèle en cours d’utilisation lorsque la tâche est passée en arrière-plan. modelsUsed énumère les modèles utilisés par le sous-agent, dans l’ordre. Le champ n’est présent que lorsqu’un changement de modèle en cours d’exécution s’est produit, et un modèle réapparaît lorsque l’exécution a basculé vers lui. Sur async_launched, la liste couvre les modèles utilisés avant la mise en arrière-plan. À la fois modelsUsed et le comportement de mise en arrière-plan de resolvedModel nécessitent Claude Code v2.1.212 ou ultérieur. Si Claude Code a conservé le worktree isolé du sous-agent, worktreePath sur le résultat completed indique où le trouver. worktreeBranch est sa branche, présente lorsque Claude Code a créé le worktree avec git. Claude Code remplit usage et totalTokens à partir de la dernière requête API du sous-agent, pas de l’ensemble de l’exécution, donc usage.service_tier est la chaîne de niveau de service que l’API a signalée sur cette requête. Lorsqu’il est présent, usage.output_tokens_details.thinking_tokens est le nombre de tokens de sortie de cette requête qui étaient des tokens de réflexion. Le champ output_tokens_details nécessite TypeScript SDK v0.3.228 ou ultérieur, qui regroupe Claude Code v2.1.228. Le champ fallback_credit nécessite TypeScript SDK v0.3.285 ou ultérieur, qui regroupe Claude Code v2.1.285. usage.output_tokens_details correspond à Usage.output_tokens_details en signification, limité à cette dernière requête, mais chaque niveau est optionnel ici. Protégez à la fois l’objet et le champ, par exemple usage.output_tokens_details?.thinking_tokens ?? 0, plutôt que de le lire directement. 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 tapait 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
Les champs stdout, stderr et backgroundTaskId contiennent : timedOutAfterMs est le délai d’expiration en millisecondes, défini lorsque la commande a atteint son délai d’expiration et s’est déplacée en arrière-plan plutôt que de démarrer explicitement. backgroundCwdHint est défini lorsque la commande mise en arrière-plan contenait un builtin de changement de répertoire tel que cd, pushd, popd ou chdir, et note que le répertoire de travail de la session n’a pas changé. Les deux champs nécessitent Claude Code v2.1.210 ou ultérieur. Lorsqu’un sous-agent s’exécutant au premier plan possède une commande mise en arrière-plan, la commande se termine lorsque l’exécution de ce sous-agent se termine. Claude Code définit backgroundEndsWithFinalResponse à true sur de telles commandes, et omet le champ lorsque la commande survit au tour, comme les commandes démarrées par la conversation principale ou par les sous-agents en arrière-plan. Le champ nécessite Claude Code v2.1.227 ou ultérieur. Claude Code définit gitOperation.commit.branch sur la branche nommée dans la ligne de résumé du commit git, et l’omet pour un commit effectué sur un HEAD détaché. Le champ nécessite Agent SDK v0.3.227 ou ultérieur. Claude Code signale une commande gh pr reopen comme l’action PR reopened, ce qui nécessite Agent SDK v0.3.234 ou ultérieur.

Monitor

Nom de l’outil : Monitor
Retourne l’ID de la tâche en arrière-plan 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 de l’écriture avec les informations de diff structuré. Ce que originalFile et structuredPatch contiennent dépend de l’écriture :
  • Pour un fichier nouvellement créé, originalFile est null et structuredPatch est vide
  • Sur une réécriture, originalFile contient le contenu précédent, sauf lorsque ce contenu est plus grand qu’environ 10 Mo : Claude Code omet alors le diff et retourne originalFile null et structuredPatch vide
  • structuredPatch est également vide lorsque l’écriture n’a rien changé ou que le diff a expiré

Glob

Nom de l’outil : Glob
Retourne les chemins de fichiers correspondant au motif glob, triés par heure de modification. totalMatches et countIsComplete nécessitent Claude Code v2.1.191 ou ultérieur. totalMatches signale le nombre de fichiers correspondants avant la troncature. Lorsque countIsComplete est false, totalMatches est une limite inférieure car la recherche sous-jacente a tronqué sa propre sortie.

Grep

Nom de l’outil : Grep
Retourne les résultats de la recherche. La forme varie selon mode : liste de fichiers, contenu avec correspondances, ou comptages de correspondances. En mode count, numFiles et numMatches sont des totaux sur l’ensemble des résultats, pas la tranche paginée. Avant v2.1.208, une head_limit ou un offset qui tronquait les entrées listées tronquait également ces totaux. totalFiles nécessite Claude Code v2.1.208 ou ultérieur et signale le nombre total de résultats avant la pagination head_limit et offset en mode files_with_matches. totalLines nécessite Claude Code v2.1.210 ou ultérieur et signale le nombre total de lignes avant la pagination en mode content.

TaskStop

Nom de l’outil : TaskStop
Retourne une confirmation après l’arrêt de la tâche en arrière-plan.

NotebookEdit

Nom de l’outil : NotebookEdit
Retourne le résultat de l’édition du notebook avec les contenus de 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. artifactRead est le propre enregistrement de Claude Code d’une lecture d’artefact, présent uniquement lorsque Claude a récupéré un artefact que la session peut publier. Claude Code le relit lorsqu’une session reprend afin qu’une publication ultérieure s’appuie sur la bonne version ; votre code n’a pas besoin d’agir dessus. slug nomme l’artefact, ver est la version que la lecture a enregistrée et est absent lorsqu’elle n’en a enregistré aucune, et seeded: false marque une lecture dont la source complète n’a pas atteint Claude. Le champ seeded nécessite Agent SDK v0.3.239 ou ultérieur.

WebSearch

Nom de l’outil : WebSearch
Retourne les résultats de la recherche sur le 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 comme une fin 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.
Les outils suivants sont disponibles par défaut uniquement sur Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 et les modèles antérieurs. Sur tous les autres modèles, y compris les identifiants de modèle que Claude Code ne reconnaît pas, ils ne sont pas disponibles sauf si vous les activez :
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Partout où les outils sont disponibles, Claude Code fournit les quatre outils Task, ou TodoWrite à la place lorsque vous définissez CLAUDE_CODE_ENABLE_TASKS=0.Cet ensemble par défaut s’applique dans Claude Code v2.1.268 et versions ultérieures, que le SDK TypeScript Agent regroupe à partir de v0.3.268.Voir Disponibilité du modèle pour vous inscrire.

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

ListMcpResources

Nom de l’outil : ListMcpResourcesTool
Retourne un tableau des 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.

ExitWorktree

Nom de l’outil : ExitWorktree
Retourne l’action entreprise et les détails sur le worktree qui a été quitté.

EnterPlanMode

Nom de l’outil : EnterPlanMode
Retourne une confirmation que le mode plan a été activé.

CronCreate

Nom de l’outil : CronCreate
Retourne l’ID du travail et une description lisible par l’homme de l’horaire.

CronDelete

Nom de l’outil : CronDelete
Retourne l’ID du travail supprimé.

CronList

Nom de l’outil : CronList
Retourne les travaux cron planifiés : les travaux durables de .claude/scheduled_tasks.json et les travaux de session uniquement de la session actuelle. Un travail de session uniquement porte durable: false ; les travaux lus à partir du disque omettent le champ.

ScheduleWakeup

Nom de l’outil : ScheduleWakeup
Retourne quand le réveil se déclenchera en tant qu’horodatage d’époque en millisecondes, le délai réellement utilisé, et si le délai demandé a été limité. Le champ stopped est true lorsque l’appel a terminé la boucle avec stop: true. Il nécessite Claude Code v2.1.202 ou ultérieur. Le champ cancelledWakeups compte combien de réveils en attente un appel stop: true a annulés. Une valeur de 0 signifie que rien n’était en attente, et un cron /loop récurrent n’est pas annulé par stop: true. Il nécessite Claude Code v2.1.206 ou ultérieur.

RemoteTrigger

Nom de l’outil : RemoteTrigger
Retourne le statut de réponse API et le corps pour l’opération de déclenchement.

PushNotification

Nom de l’outil : PushNotification
Retourne les détails de livraison, y compris si une notification push ou locale a été envoyée et pourquoi la livraison a été ignorée.

ReportFindings

Nom de l’outil : ReportFindings
Retourne le nombre de résultats signalés, la valeur level transmise par Claude, et les résultats renvoyés pour le corps du résultat. Nécessite Claude Code v2.1.196 ou ultérieur. Le champ short_summary renvoyé nécessite Claude Code v2.1.212 ou ultérieur.

Artifact

Nom de l’outil : Artifact
Retourne l’url de la page publiée et le path local qui a été publié pour l’action de publication, avec updated défini à true lorsque la publication a redéployé un artefact existant, et warnings contenant tous les avis au moment de la publication. L’action de liste retourne les lignes artifacts à la place, avec truncated défini lorsque plus d’artefacts existent que la limite demandée. Sur les listes dont la portée n’est pas "mine", chaque ligne porte rel marquant si l’utilisateur possède l’artefact ou s’il lui a été partagé, et la scope de la sortie enregistre quelle portée non-défaut a produit la liste ; les deux sont absents sur les listes par défaut. Un résultat de liste signale également total, le nombre d’artefacts correspondant à la portée listée, y compris ceux au-delà de limit. Lorsque total_at_least est défini, ce nombre est une limite inférieure et d’autres artefacts peuvent exister. Les deux champs nécessitent Agent SDK v0.3.292 ou ultérieur.

Projects

Nom de l’outil : Projects
Discriminé sur le champ method, reflétant l’entrée. project_read retourne les petits documents texte en ligne dans content et écrit les documents plus volumineux dans un chemin local_file à la place ; project_search retourne les hits RAG avec rag: true lorsque l’index du projet est disponible et revient à une liste de chemin docs sinon.

ReadMcpResourceDir

Nom de l’outil : ReadMcpResourceDirTool
Retourne les enfants directs de la ressource de répertoire. Les sous-répertoires apparaissent avec mimeType "inode/directory" ; error contient un message lisible par l’homme lorsque le serveur n’a pas pu lister le répertoire.

RefreshMcpTools

Nom de l’outil : RefreshMcpTools
Retourne une entrée par serveur : refreshed signifie que la liste d’outils réinterrogée a été appliquée, error signifie que la réinterrogation a échoué et l’ensemble d’outils précédent a été conservé, et not_connected signifie que le serveur n’a pas de connexion active pour interroger.

ShowOnboardingRolePicker

Nom de l’outil : ShowOnboardingRolePicker
Retourne la sélection de l’utilisateur : role lorsqu’il a choisi une puce de rôle ou en a tapé une, et dismissed: true lorsqu’il a fermé le sélecteur. Un objet vide signifie que l’utilisateur a approuvé l’appel sans choisir de rôle.

McpOutput

Nom de l’outil : noms d’outils MCP dynamiques de la forme mcp__<server>__<tool>
Les résultats des outils MCP sont retournés sous forme de chaîne ou de tableau de blocs de contenu, selon le serveur. La branche d’objet simple finale du type exporté est un artefact de génération de schéma. Pour un résultat qui contient également structuredContent ou des liens de ressources, consultez tool_use_result, qui contient cette valeur dans son membre content. À l’exécution, la valeur peut également être undefined, bien que le type exporté ne modélise pas cela.

Types de permission

PermissionUpdate

Opérations pour mettre à jour les permissions.

PermissionBehavior

PermissionUpdateDestination

PermissionRuleValue

Autres types

ApiKeySource

D’où provient la clé API pour les requêtes de la session, signalée comme apiKeySource sur le message d’initialisation SDKSystemMessage.
Claude Code signale l’une de quatre valeurs : Agent SDK v0.3.234 et versions ultérieures listent ces quatre valeurs dans le type. Le type conserve également user, project, org, temporary et oauth afin que le code plus ancien soit toujours compilé, et Claude Code ne les signale pas.

SdkBeta

Les fonctionnalités bêta disponibles qui peuvent être activées via l’option betas. Consultez En-têtes bêta pour plus d’informations.
Sur l’API Claude, la bêta context-1m-2025-08-07 est retirée pour Claude Sonnet 4.5 et Claude Sonnet 4. Si vous la transmettez encore avec l’un de ces modèles, les requêtes qui dépassent la fenêtre de contexte standard de 200 000 tokens renvoient une erreur ; retirez-la donc de betas. Pour exécuter une session avec une fenêtre de contexte de 1 M de tokens, définissez model sur un modèle qui s’exécute par défaut avec la fenêtre de 1 M, tel que claude-sonnet-5-5 ou claude-opus-5-5. Pour un modèle qui n’atteint 1 M que via sa variante [1m], ajoutez le suffixe à l’ID du modèle, comme dans claude-opus-4-6[1m].

SlashCommand

Informations sur une commande disponible.
builtin est true sur une ligne lorsque la commande est celle de Claude Code et que taper /name l’exécute. Elle est absente pour une commande définie par un utilisateur, un projet, un plugin ou un serveur MCP, et pour une commande groupée que l’un de ceux-ci remplace par nom. Nécessite Agent SDK v0.3.277 ou version ultérieure.

ModelInfo

Informations sur un modèle disponible.

AgentInfo

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

McpServerProvenance

Le serveur MCP qui sert un outil mcp__*, et d’où provient la définition de ce serveur. Les entrées de hook PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest et PermissionDenied le portent comme mcp_server, et les options CanUseTool le portent comme mcpServer. Les deux l’omettent pour les outils qui ne proviennent pas d’un serveur MCP.
source prend l’une des valeurs suivantes. L’ensemble est ouvert, donc traitez une valeur que vous ne reconnaissez pas comme une source configurée, jamais comme sdk :
  • sdk : un serveur en processus que votre application a enregistré. Seule l’application hôte du SDK peut en enregistrer un, donc un serveur configuré ne signale jamais sdk, quel que soit son nom.
  • plugin : un serveur qu’un plugin fournit. Son name est la forme plugin:<plugin-name>:<server-name> délimitée décrite sous serveurs MCP fournis par plugin.
  • Une portée de configuration : user, project, local, dynamic, managed, enterprise, claudeai ou agent. Un serveur .mcp.json signale project, et les portées d’installation MCP définissent local, project et user. Les serveurs que votre application transmet dans l’option mcpServers, autres que les serveurs SDK en processus, signalent dynamic.
Basez les décisions de confiance sur source, pas sur name ou le préfixe du nom d’outil mcp__<server>__. Pour toute source autre que sdk, name est du texte non fiable : échappez-le avant l’affichage. McpServerProvenance et les champs qui le portent nécessitent Agent SDK v0.3.274 ou version ultérieure.

McpServerStatus

État d’un serveur MCP connecté.
source indique d’où provient la définition du serveur, avec les mêmes valeurs et règle de confiance que le source de McpServerProvenance. Le champ nécessite Agent SDK v0.3.274 ou version ultérieure et est absent sur les versions antérieures. _meta sur une entrée tools porte les membres MCP Apps de _meta de cet outil, afin que votre application puisse trouver la ressource ui:// à rendre avec readMcpResource(). Claude Code transmet l’objet ui et la chaîne ui/resourceUri plate dépréciée, et retient toute autre clé. À l’intérieur de ui, resourceUri est une chaîne ui:// et visibility un tableau de "model" et "app" lorsque le serveur les définit, et tout autre membre passe inchangé. Claude Code supprime l’une ou l’autre clé lorsque la valeur est malformée, et omet _meta d’un outil qui ne déclare ni l’une ni l’autre. Le champ est présent uniquement lorsque les capabilities du message d’initialisation incluent mcp_tool_ui_meta_v1, et nécessite TypeScript Agent SDK v0.3.280 ou version ultérieure.

McpServerStatusConfig

La configuration d’un serveur MCP telle que signalée par mcpServerStatus(). C’est l’union de tous les types de transport de serveur MCP.
Consultez 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 renvoyées dans les messages de résultat. La valeur costUSD est une estimation côté client. Consultez Suivre le coût et l’utilisation pour les avertissements de facturation.
thinkingTokens compte les tokens de réflexion que ce modèle a générés. outputTokens les inclut déjà, donc n’additionnez pas les deux. Le champ est absent jusqu’à ce qu’un tour s’exécute sur une version de Claude Code qui l’enregistre, donc une session reprise qui a commencé sur une version antérieure signale un décompte partiel. thinkingTokens nécessite Agent SDK v0.3.257 ou version ultérieure. Les champs canonicalModel et provider nécessitent Claude Code v2.1.218 ou version ultérieure. canonicalModel est l’ID de modèle canonique que la recherche de prix utilise ; il peut différer de la chaîne de modèle brute qui sert de clé à l’entrée, par exemple lorsque cette chaîne est un ID spécifique au fournisseur ou un alias. provider nomme le backend API qui a servi le modèle, tel que firstParty, bedrock, vertex, foundry, anthropicAws, mantle ou gateway. costBasis nomme la table de prix qui a tarifé la dernière requête du modèle : list pour le prix catalogue, managed pour une table modelPricing, ou unknown lorsqu’aucune ne correspondait à l’ID du modèle. Le champ nécessite Claude Code v2.1.246 ou version ultérieure.

ConfigScope

NonNullableUsage

Une version de Usage avec tous les champs nullables rendus non-nullables, sauf fallback_credit, qui peut toujours être null.

Usage

Statistiques d’utilisation des tokens. C’est le type BetaUsage de @anthropic-ai/sdk.
BetaServerToolUsage, BetaIterationsUsage, BetaOutputTokensDetails et BetaFallbackCreditUsage sont définis dans @anthropic-ai/sdk. output_tokens_details décompose la sortie facturée par catégorie. Il porte actuellement un champ, thinking_tokens: number, comptant les tokens de sortie que le modèle a générés comme raisonnement interne, y compris les délimiteurs de bloc de réflexion. Le champ output_tokens_details nécessite TypeScript SDK v0.3.228 ou version ultérieure, qui regroupe Claude Code v2.1.228.
  • Facturation : lisez la décomposition pour l’observabilité, pas pour la facturation. output_tokens reste le total faisant autorité, et output_tokens - thinking_tokens approxime la sortie sans raisonnement.
  • Ce que le décompte couvre : le raisonnement brut que le modèle a produit, qui peut être plus long que le texte de réflexion renvoyé dans le corps de la réponse. L’API le calcule en retokenisant ce texte brut, donc il peut différer du décompte de génération exact du modèle de quelques tokens.
  • Streaming : sur les messages d’assistant diffusés en streaming, cette décomposition, comme output_tokens, est un espace réservé message_start et ne porte aucun décompte réel, donc lisez-la à partir du usage du message de résultat comme Lire les tokens de sortie du message de résultat le décrit. Sur le message de résultat, thinking_tokens vaut 0 lorsque le modèle ou le fournisseur ne signale aucune décomposition.
  • Cas null : output_tokens_details lui-même est null sur les messages d’assistant que Claude Code synthétise, tels que les messages d’erreur API.
La présence de fallback_credit dans Usage dépend de la version de @anthropic-ai/sdk que vous avez installée, qui l’a ajouté dans la version 0.115.0.

CallToolResult

Type de résultat d’outil MCP (de @modelcontextprotocol/sdk/types.js). structuredContent est un objet JSON qui peut être renvoyé aux côtés de content, y compris les blocs d’image. Consultez Retourner des données structurées.
Un fichier qu’un outil MCP a renvoyé par référence. Claude Code construit chaque entrée à partir d’un bloc resource_link dans le résultat de l’outil et livre la liste comme resourceLinks sur SDKUserMessage.tool_use_result, ou comme resource_links sur SDKTaskNotificationMessage lorsque l’appel s’est terminé en arrière-plan. Nécessite Agent SDK v0.3.257 ou version ultérieure.
Claude Code supprime un bloc dont uri ou name n’est pas une chaîne, et omet un champ optionnel dont la valeur n’est pas du type listé.

ThinkingConfig

Contrôle le comportement de réflexion/raisonnement de Claude. A priorité sur le maxThinkingTokens déprécié.
Le champ optionnel display contrôle si le texte de réflexion est renvoyé "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. Claude Code ne transmet pas votre valeur display à certains fournisseurs, tels qu’Amazon Bedrock et la plateforme Agent de Google Cloud. Sur ces fournisseurs, Opus 4.7 et versions ultérieures renvoient des blocs thinking vides même lorsque vous définissez display sur "summarized".

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 transmises à la fonction de génération personnalisée.
Le champ signal indique à votre fonction de génération quand arrêter le processus. Transmettez-le comme l’option signal au spawn() de Node, ou transmettez-le à votre gestionnaire d’arrêt de VM ou de conteneur.Ce signal ne se déclenche pas à l’instant 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 à partir de sa portée englobante.

McpSetServersResult

Résultat d’une opération setMcpServers().
Lorsque vous appelez setMcpServers(), Claude Code applique ces règles :
  • Serveurs que l’appel ne nomme pas : en dehors d’une session cloud, Claude Code déconnecte les serveurs qu’un appel setMcpServers() antérieur a ajoutés ainsi que les serveurs SDK en processus, et les liste dans removed. Les autres serveurs continuent de s’exécuter et ne sont pas listés dans removed, parmi lesquels les serveurs stdio, HTTP et SSE de l’option mcpServers, les serveurs des fichiers de paramètres et les serveurs fournis par plugin.
  • Serveurs que l’appel nomme : Claude Code remplace un serveur stdio, HTTP ou SSE qu’un appel setMcpServers() antérieur a ajouté uniquement lorsque sa configuration diffère de celle que vous avez transmise. Un serveur SDK en processus déjà enregistré sous ce nom reste tel quel ; pour en remplacer un, omettez-le d’un appel et ajoutez-le dans le suivant.
  • Serveurs intégrés que l’interface de ligne de commande a démarrés au démarrage : si l’appel en nomme un, Claude Code supprime cette entrée et la signale dans errors.
La promesse se résout après que les serveurs stdio, HTTP et SSE nouvellement ajoutés se connectent ou échouent, donc les outils des serveurs qui se sont connectés sont disponibles au tour suivant. added liste les serveurs que Claude Code a ajoutés ou remplacés, qu’ils se soient connectés ou non. Un serveur qui n’a pas pu se connecter apparaît à la fois dans added et errors, avec le texte d’échec sous errors et une ligne failed dans mcpServerStatus(). Avant Claude Code v2.1.257, un serveur dont la tentative de connexion a levé une exception était signalé uniquement sous errors.

RewindFilesResult

Résultat d’une opération rewindFiles().
skippedLinks compte les chemins suivis que le rembobinage a refusé de restaurer ou de supprimer pour la sécurité des liens : un lien symbolique, un lien physique ou un autre fichier non régulier au chemin suivi, un répertoire parent qui ne se résout plus à l’endroit où il pointait lorsque le checkpoint a été pris, ou une sauvegarde qui n’a pas pu être lue en toute sécurité. Le champ nécessite Claude Code v2.1.216 ou version ultérieure. Un appel d’aperçu avec rewindFiles(userMessageId, { dryRun: true }) ne le définit jamais.

SDKStatusMessage

Message de mise à jour d’état (par exemple, compactage).

SDKTaskNotificationMessage

Notification lorsqu’une tâche en arrière-plan se termine, échoue ou est arrêtée. Les tâches en arrière-plan incluent les commandes Bash run_in_background, les surveillances Monitor et les sous-agents en arrière-plan. Pour les champs run_id et ambient, consultez SDKTaskStartedMessage, qui les définit ainsi que leurs exigences de version.
reason est défini lorsqu’une tâche se termine pour une cause autre que sa propre complétion, son échec ou son arrêt, et nécessite Agent SDK v0.3.273 ou version ultérieure. Claude Code le définit uniquement dans les sessions qui se connectent via claude.ai : les sessions cloud, y compris celles sur des runners auto-hébergés, et les sessions Remote Control. Un appel query() local ne le définit jamais. Son unique valeur, worker_restart, signifie que le processus Claude Code qui exécutait la tâche a redémarré. La notification porte l’état "stopped" ; ne traitez donc la tâche ni comme terminée ni comme échouée. Lorsque Claude Code déplace un long appel d’outil MCP en arrière-plan, le bloc tool_result pour cet appel ne contient qu’un espace réservé et le résultat réel de l’appel arrive dans cette notification. Faites correspondre la notification à l’appel avec tool_use_id. Sur une notification completed, resource_links liste les fichiers que l’outil a renvoyés par référence comme entrées SDKMcpResourceLink, avec les mêmes limites de 50 liens et 64 KiB que tool_use_result.resourceLinks. Claude Code omet resource_links lorsque le résultat n’avait pas de liens et sur les notifications pour les tâches qui ne sont pas des appels d’outil MCP. resource_links nécessite Agent SDK v0.3.257 ou version ultérieure. Claude Code ajoute un avis à chaque notification de tâche qu’il envoie au modèle, sauf les livraisons estampillées avec le sous-type scheduled-trigger, qui portent plutôt un cadrage de tâche assignée. L’avis indique qu’aucune entrée humaine n’a eu lieu, donc le modèle ne traite pas la notification comme une instruction ou une approbation de l’utilisateur. Pour détecter un tour de notification de tâche, vérifiez origin.kind === "task-notification" sur SDKUserMessage ou SDKResultMessage plutôt que de faire correspondre le texte de l’avis. Lisez subkind à partir du même champ si vous avez besoin de savoir ce qui l’a soulevé. Avant v2.1.205, Claude Code laissait l’avis hors des notifications qui arrivaient pendant que la session était inactive.

SDKToolUseSummaryMessage

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

SDKHookStartedMessage

Émis lorsqu’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 toujours au démarrage de la session. Claude Code v2.1.169 à v2.1.203 livrait ces messages en un 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 lorsqu’un hook termine son exécution.

SDKToolProgressMessage

Émis périodiquement pendant qu’un outil s’exécute pour indiquer la progression.
Pendant qu’un appel d’outil s’exécute dans la conversation principale, Claude Code émet un message tool_progress toutes les 30 secondes avec heartbeat: true. Chaque battement porte le nom de l’outil et les secondes écoulées, afin que vous puissiez distinguer un appel de longue durée d’une session bloquée. Claude Code n’émet pas de battements pour les appels d’outil à l’intérieur d’un sous-agent. Le champ heartbeat nécessite Agent SDK v0.3.214 ou version ultérieure. Avant v2.1.257, Claude Code n’émettait pas non plus de battements pour un appel d’outil Agent au premier plan. Sur les messages tool_progress pour l’outil Agent autres que les battements, subagent_type nomme le type de sous-agent en cours d’exécution, tel que general-purpose. subagent_retry est présent pendant que ce sous-agent attend un backoff d’erreur API, tel qu’une limite de débit ou une surcharge, avec un message par nouvelle tentative. Les deux champs nécessitent Agent SDK v0.3.214 ou version ultérieure. Pour rendre un indicateur de nouvelle tentative à partir de subagent_retry :
  • Suivez l’indicateur par parent_tool_use_id, qui est unique par sous-agent. tool_use_id est partagé par les sous-agents parallèles d’un tour d’assistant, donc le suivi par celui-ci laisserait la mise à jour d’un sous-agent effacer l’indicateur d’un autre.
  • Effacez l’indicateur lorsqu’un tool_progress ultérieur pour le même parent_tool_use_id arrive sans subagent_retry ni heartbeat: true, ou lorsque le message de résultat de l’outil arrive. Les cadres avec heartbeat: true ne signalent que la vivacité, donc conservez l’indicateur lorsqu’un arrive. attempt peut dépasser max_retries sous une nouvelle tentative persistante, donc ne dérivez pas l’effacement des compteurs.
  • Traitez error_category comme un jeton pour choisir votre propre texte de message, pas comme du texte d’affichage. Les valeurs sont rate_limit, overloaded, authentication_failed, server_error, cloud_credential_error et unknown. Gérez une valeur que vous ne reconnaissez pas de la même manière que vous gérez unknown, car les versions ultérieures peuvent ajouter des valeurs.

SDKAuthStatusMessage

Émis pendant les flux d’authentification.

SDKTaskStartedMessage

Émis lorsqu’une tâche commence. Le champ task_type est "local_bash" pour les commandes Bash et les surveillances Monitor, "local_agent" pour les sous-agents, ou "remote_agent".
run_id identifie une exécution de la tâche. Lorsqu’une tâche s’exécute de nouveau sous le même task_id, comme un sous-agent que Claude reprend, la nouvelle exécution reçoit un nouveau run_id. Le champ nécessite Agent SDK v0.3.292 ou version ultérieure. Utilisez-le pour distinguer les exécutions d’une même tâche :
  • Associer les messages à une exécution : les messages task_started, task_progress, task_updated et task_notification d’une même exécution portent le même run_id. L’entrée de l’exécution dans chaque SDKBackgroundTasksChangedMessage le porte également, tout comme le runId sur l’origine du message utilisateur qui livre la notification de l’exécution.
  • Détecter un message tardif : comparés comme de simples chaînes, les ID d’exécution d’une tâche se trient dans l’ordre de démarrage des exécutions ; un message dont le run_id se trie avant l’exécution que vous affichez provient donc d’une exécution antérieure. Traitez la valeur comme opaque en dehors de cette comparaison.
  • Se rabattre sur task_id : lorsqu’un message ne porte aucun run_id, comme le task_notification qu’une session reprise émet pour clôturer une tâche que le processus précédent avait démarrée, attribuez-le par task_id.
Par exemple, ces trois messages, réduits à leurs champs d’identification, proviennent d’un sous-agent en arrière-plan que Claude a repris une fois. Les deux messages task_started partagent un task_id, et la notification qui a mis fin à la première exécution porte l’ID de la première exécution :
ambient est true pour les tâches qui ne font pas partie du travail de la session, telles que les tâches que Claude Code exécute pour son propre fonctionnement. Les surveillances de mise à jour en direct sont également ambiantes, y compris les surveillances que l’utilisateur a demandées. Excluez les tâches ambiantes des indicateurs d’activité. Le champ nécessite Agent SDK v0.3.247 ou version ultérieure. ambient apparaît également sur SDKTaskNotificationMessage et sur les entrées SDKBackgroundTasksChangedMessage. is_backgrounded et spawn_depth décrivent comment Claude Code a démarré la tâche. Les deux champs nécessitent Agent SDK v0.3.238 ou version ultérieure.
  • is_backgrounded : Claude Code le définit sur les tâches "local_agent" et "local_bash". true signifie que la tâche s’exécute en arrière-plan. false signifie que la tâche s’exécute au premier plan, et l’appel d’outil qui l’a démarrée reste bloqué jusqu’à ce que la tâche se termine ou se déplace en arrière-plan.
  • spawn_depth : Claude Code le définit uniquement sur les tâches "local_agent". Un sous-agent que le thread principal a généré a une profondeur 1. Un sous-agent qu’un sous-agent de profondeur 1 a généré a une profondeur 2, et ainsi de suite.
Un sous-agent repris signale toujours is_backgrounded: true, car Claude Code exécute chaque sous-agent repris en arrière-plan. Lorsqu’une tâche au premier plan se déplace en arrière-plan plus tard, Claude Code signale la nouvelle valeur is_backgrounded dans un message task_updated plutôt que d’envoyer un second task_started. parent_task_id contient le task_id du sous-agent qui a lancé cette tâche. Utilisez-le pour regrouper chaque tâche sous le sous-agent qui l’a démarrée. Claude Code le définit sur les tâches de sous-agent, Bash et Monitor. Le champ nécessite Agent SDK v0.3.292 ou version ultérieure. Il est absent lorsque :
  • Le thread principal a lancé la tâche
  • Claude Code ne suit plus la tâche parente
  • Un coéquipier ou un agent à l’intérieur d’un workflow a lancé la tâche
Le parent peut être une tâche au premier plan ou une tâche déjà terminée ; traitez donc un ID que vous ne reconnaissez pas comme l’absence de parent.

SDKTaskProgressMessage

Émis périodiquement pendant qu’un sous-agent ou une tâche en arrière-plan s’exécute. Pour le champ run_id, consultez SDKTaskStartedMessage, qui le définit ainsi que son exigence de version. Pour une tâche de sous-agent, le champ summary porte un résumé de progression généré par le modèle et n’est rempli que lorsque agentProgressSummaries est activé. Pour un appel d’outil MCP mis en arrière-plan, summary porte le dernier progrès signalé par le serveur MCP et ne dépend pas de cette option.

SDKTaskUpdatedMessage

Émis lorsque l’état d’une tâche en arrière-plan change, par exemple lorsqu’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 horodatage d’époque Unix en millisecondes, comparable avec Date.now(). Pour le champ run_id, consultez SDKTaskStartedMessage, qui le définit ainsi que son exigence de version.

SDKBackgroundTasksChangedMessage

Émis chaque fois que l’ensemble des tâches en arrière-plan en direct change : une tâche démarre, se termine ou est tuée ; un agent au premier plan est mis en arrière-plan ; ou le champ description, ambient ou parent_task_id d’une tâche change. Pour les champs run_id et parent_task_id de chaque entrée, consultez SDKTaskStartedMessage, qui les définit ainsi que leurs exigences de version. Le tableau tasks est l’ensemble en direct complet. Remplacez tout ensemble mis en cache par chaque payload au lieu d’appairer les événements task_started et task_notification, afin que le prochain changement d’appartenance corrige tout événement que vous avez manqué. Lorsqu’une tâche se termine, ses messages task_updated et task_notification arrivent avant le background_tasks_changed qui la retire de la liste. L’ordre relatif aux événements par tâche n’est sinon pas spécifié. 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’appartenance le repeupler. Lorsque vous envoyez une demande de contrôle initialize répétée à une session en cours d’exécution, par exemple avec reinitialize() après une interruption du transport, Claude Code fait suivre la réponse d’un instantané de l’ensemble en direct actuel, même lorsqu’il est vide. Un hôte qui se reconnecte apprend donc ce qui s’exécute sans attendre le prochain changement d’appartenance. Avant Agent SDK v0.3.239, Claude Code n’envoyait aucun instantané après un initialize répété. Nécessite Claude Code v2.1.203 ou version ultérieure.
subagent_type nomme le type de sous-agent sur les entrées dont le task_type est "local_agent", tel que general-purpose ou le nom d’un sous-agent personnalisé. Le champ nécessite Agent SDK v0.3.293 ou version ultérieure.

SDKThinkingTokensMessage

Émis pendant que Claude produit un bloc de réflexion, y compris un bloc expurgé. estimated_tokens est une estimation en cours des tokens de réflexion générés jusqu’à présent dans le bloc actuel, et estimated_tokens_delta est l’incrément porté par ce cadre. Utilisez ces estimations pour l’affichage de la progression. Lorsque le modèle ou le fournisseur signale une décomposition, le décompte final pour la boucle d’agent de haut niveau est le usage.output_tokens_details.thinking_tokens du message de résultat, qui n’inclut pas les tokens de sous-agent. Nécessite Claude Code v2.1.153 ou version ultérieure.

SDKSessionStateChangedMessage

Émis lorsque Claude Code signale l’état de la session. Pour recevoir ces messages, définissez CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS=1. Claude Code peut signaler le même état plus d’une fois ; lisez donc un message comme l’état actuel de la session plutôt que comme une transition. Le champ state porte l’une de ces valeurs :
  • running : la session est en train de travailler.
  • idle : Claude Code attend votre prochain prompt.
  • requires_action : la session est bloquée en attente d’une réponse à une demande qu’elle a envoyée à votre hôte, telle qu’une demande de permission.
Le message idle d’un tour et son message result peuvent arriver dans n’importe quel ordre. Pour modifier le fait que idle attende ou non le travail en arrière-plan, tel qu’un sous-agent en arrière-plan ou une exécution de workflow, consultez CLAUDE_CODE_BG_TASKS_REPORT_RUNNING.

SDKFilesPersistedEvent

Émis lorsque les checkpoints de fichiers sont persistés sur le disque.

SDKRateLimitEvent

Émis lorsque la session rencontre une limite de débit.
Lorsque 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 en dossier. Les 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 version ultérieure.

SDKLocalCommandOutputMessage

Claude Code n’émet pas ce type de message. Lorsque vous envoyez une commande telle que /context ou /usage comme prompt, sa sortie arrive comme SDKAssistantMessage.

SDKCommandsChangedMessage

Émis lorsque l’ensemble des commandes disponibles change en milieu de session, par exemple lorsque Claude Code découvre des skills à mesure que l’agent entre dans un sous-répertoire. Le tableau commands est la liste complète mise à jour, donc remplacez tout cache de liste de commandes par ce payload. L’appel de supportedCommands() après ce message renvoie la même liste mise à jour, car la méthode suit le dernier push ; cela nécessite Agent SDK v0.3.216 ou version ultérieure. Dans les versions antérieures du SDK, supportedCommands() renvoie l’instantané capturé à l’initialisation et ne reflète jamais les changements en milieu de session. Claude Code émet également ce message lorsque les prompts d’un serveur MCP rejoignent ou quittent la liste, par exemple lorsqu’un serveur termine de se connecter après le démarrage de la session. Cela nécessite Claude Code v2.1.281 ou version ultérieure.

SDKPromptSuggestionMessage

Émis après un tour lorsque promptSuggestions est activé et que Claude Code a généré une suggestion pour ce tour. Contient le prochain prompt utilisateur prédit. Pour les tours qui n’en reçoivent pas, consultez Quand Claude Code ignore les suggestions.

SDKConversationResetMessage

Émis lorsque la conversation de la session est remplacée sans terminer la session. Dans un appel query(), seul /clear et ses alias produisent ce message. Montez une transcription vide sous new_conversation_id et jetez tout titre de session mis en cache.
Les champs optionnels décrivent la réinitialisation :
  • trigger : ce qui a supprimé la conversation. Réinitialisez votre transcription sur chaque message conversation_reset, y compris celui où ce champ est absent ou porte une valeur que vous ne reconnaissez pas.
  • user_message_uuid : l’uuid du message utilisateur qui portait le /clear. Utilisez-le pour faire correspondre la réinitialisation à ce message.
  • timestamp : quand la réinitialisation s’est produite, sous forme de chaîne ISO 8601 en UTC. Utilisez-le pour l’affichage, pas pour l’ordre des messages.
Les champs trigger, user_message_uuid et timestamp nécessitent Claude Code v2.1.281 ou version ultérieure. Les typages publiés du SDK déclarent SDKConversationResetMessage dans Claude Code v2.1.203 et versions ultérieures. Avant v2.1.203, SDKMessage référençait le type sans le déclarer, donc le rétrécissement sur type === "conversation_reset" échouait à la vérification de type lorsque skipLibCheck était désactivé.

AbortError

Classe d’erreur personnalisée pour les opérations d’arrêt.
AbortError est la seule classe d’erreur dans l’API typée du SDK. Les autres défaillances, telles que la sortie ou l’échec du lancement du processus Claude Code, rejettent l’itération de message avec des erreurs qui ne portent aucune classe SDK à laquelle se référer. Dépannage répertorie ces erreurs par message, avec la cause et la correction pour chacune.

Configuration du sandbox

SandboxSettings

Configuration du 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. Lorsque 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 seul appel query(), le SDK lance une exception après avoir cédé 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 s’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 qui s’étendent en dehors du sandbox. Par exemple, autoriser /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 lorsque enabled est true dans le parent SandboxSettings. Ils ne restreignent pas l’outil WebFetch, qui utilise à la place des règles de permission.
Le proxy sandbox intégré applique allowedDomains en fonction du nom d’hôte demandé et ne termine ni n’inspecte 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.

Système de permissions de secours pour les commandes non sandboxées

Lorsque 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 de mettre en œuvre une logique d’autorisation personnalisée. Vos entrées excludedCommands prennent plutôt un appel en dehors du sandbox sans intervention du modèle ; sandbox.excludedCommands couvre le moment où une entrée s’applique. Dans l’exemple ci-dessous, isCommandAuthorized représente une vérification d’autorisation que vous définissez.
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 invites d’approbation, à l’exception des actions qu’aucun mode n’approuve automatiquement. Cette combinaison permet effectivement au modèle d’échapper à l’isolation du sandbox silencieusement.

Voir aussi