Installation
Le SDK regroupe un binaire Claude Code natif pour votre plateforme en tant que dépendance optionnelle telle que
@anthropic-ai/claude-agent-sdk-darwin-arm64. Vous n’avez pas besoin d’installer Claude Code séparément. Si votre gestionnaire de paquets ignore les dépendances optionnelles, le SDK lève Native CLI binary for <platform> not found ; définissez pathToClaudeCodeExecutable sur un binaire claude installé séparément à la place.Compiler en un seul exécutable
Lorsque vous compilez votre application en un exécutable à fichier unique avecbun build --compile, le SDK ne peut pas résoudre le binaire CLI fourni au moment de l’exécution. require.resolve ne fonctionne pas à l’intérieur du système de fichiers virtuel $bunfs de l’exécutable compilé, donc le SDK lève Native CLI binary for <platform> not found.
Pour contourner ce problème, intégrez le binaire de plateforme en tant que ressource de fichier, extrayez-le vers un chemin réel au démarrage avec extractFromBunfs(), et transmettez ce chemin à pathToClaudeCodeExecutable.
L’assistant extractFromBunfs() nécessite @anthropic-ai/claude-agent-sdk v0.3.144 ou ultérieur. L’exemple ci-dessous compile pour macOS sur Apple Silicon :
extractFromBunfs() copie le binaire intégré hors du système de fichiers virtuel de l’exécutable compilé vers un répertoire temporaire par utilisateur et retourne le chemin réel. En dehors d’un exécutable compilé, il retourne le chemin d’entrée inchangé, donc le même code s’exécute en développement sans modification.
Chaque exécutable compilé intègre le binaire d’une seule plateforme. Faites correspondre le package de plateforme dans l’importation à votre --target :
- Pour la compilation croisée, installez le package de plateforme non correspondant, par exemple
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - Sur Windows, le sous-chemin binaire est
claude.exe, par exemple@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Fonctions
query()
La fonction principale pour interagir avec Claude Code. Crée un générateur asynchrone qui diffuse les messages au fur et à mesure de leur arrivée.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | L’invite d’entrée sous forme de chaîne ou d’itérable asynchrone pour le mode de diffusion |
options | Options | Objet de configuration optionnel (voir le type Options ci-dessous) |
Retours
Retourne un objetQuery qui étend AsyncGenerator<SDKMessage, void> avec des méthodes supplémentaires.
startup()
Préconfigure le sous-processus CLI en le générant et en complétant la poignée de main d’initialisation avant qu’une invite soit disponible. Le handle WarmQuery retourné accepte une invite plus tard et l’écrit dans un processus déjà prêt, de sorte que le premier appel query() se résout sans payer le coût de génération et d’initialisation du sous-processus en ligne.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
options | Options | Objet de configuration optionnel. Identique au paramètre options de query() |
initializeTimeoutMs | number | Temps maximum en millisecondes à attendre pour l’initialisation du sous-processus. Par défaut 60000. Si l’initialisation ne se termine pas à temps, la promesse est rejetée avec une erreur de délai d’expiration |
Retours
Retourne unePromise<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
Appelezstartup() tôt, par exemple au démarrage de l’application, puis appelez .query() sur le handle retourné une fois qu’une invite est prête. Cela déplace la génération du sous-processus et l’initialisation en dehors du chemin critique.
tool()
Crée une définition d’outil MCP type-safe pour une utilisation avec les serveurs MCP du SDK.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
name | string | Le nom de l’outil |
description | string | Une description de ce que fait l’outil |
inputSchema | Schema extends AnyZodRawShape | Schéma Zod définissant les paramètres d’entrée de l’outil (supporte Zod 3 et Zod 4) |
handler | (args, extra) => Promise<CallToolResult> | Fonction asynchrone qui exécute la logique de l’outil |
extras | { annotations?: ToolAnnotations } | Annotations MCP optionnelles fournissant des indices comportementaux aux clients |
ToolAnnotations
Réexportée depuis @modelcontextprotocol/sdk/types.js. Tous les champs sont des indices optionnels ; les clients ne doivent pas s’y fier pour les décisions de sécurité.
| Champ | Type | Par défaut | Description |
|---|---|---|---|
title | string | undefined | Titre lisible par l’homme pour l’outil |
readOnlyHint | boolean | false | Si true, l’outil ne modifie pas son environnement |
destructiveHint | boolean | true | Si true, l’outil peut effectuer des mises à jour destructrices (uniquement significatif quand readOnlyHint est false) |
idempotentHint | boolean | false | Si true, les appels répétés avec les mêmes arguments n’ont aucun effet supplémentaire (uniquement significatif quand readOnlyHint est false) |
openWorldHint | boolean | true | Si true, l’outil interagit avec des entités externes (par exemple, recherche web). Si false, le domaine de l’outil est fermé (par exemple, un outil de mémoire) |
createSdkMcpServer()
Crée une instance de serveur MCP qui s’exécute dans le même processus que votre application.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
options.name | string | Le nom du serveur MCP |
options.version | string | Chaîne de version optionnelle |
options.tools | Array<SdkMcpToolDefinition> | Tableau de définitions d’outils créées avec tool() |
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
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
options.dir | string | undefined | Répertoire pour lequel répertorier les sessions. Lorsqu’il est omis, retourne les sessions dans tous les projets |
options.limit | number | undefined | Nombre maximum de sessions à retourner |
options.includeWorktrees | boolean | true | Quand dir est à l’intérieur d’un référentiel git, inclure les sessions de tous les chemins worktree |
Type de retour : SDKSessionInfo
| Propriété | Type | Description |
|---|---|---|
sessionId | string | Identifiant de session unique (UUID) |
summary | string | Titre d’affichage : titre personnalisé, résumé généré automatiquement ou première invite |
lastModified | number | Heure de dernière modification en millisecondes depuis l’époque |
fileSize | number | undefined | Taille du fichier de session en octets. Rempli uniquement pour le stockage JSONL local |
customTitle | string | undefined | Titre de session défini par l’utilisateur (via /rename) |
firstPrompt | string | undefined | Première invite utilisateur significative dans la session |
gitBranch | string | undefined | Branche Git à la fin de la session |
cwd | string | undefined | Répertoire de travail pour la session |
tag | string | undefined | Étiquette de session définie par l’utilisateur (voir tagSession()) |
createdAt | number | undefined | Heure de création en millisecondes depuis l’époque, à partir de l’horodatage de la première entrée |
Exemple
Imprimez les 10 sessions les plus récentes pour un projet. Les résultats sont triés parlastModified 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
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
sessionId | string | requis | UUID de session à lire (voir listSessions()) |
options.dir | string | undefined | Répertoire de projet pour trouver la session. Lorsqu’il est omis, recherche dans tous les projets |
options.limit | number | undefined | Nombre maximum de messages à retourner |
options.offset | number | undefined | Nombre de messages à ignorer à partir du début |
Type de retour : SessionMessage
| Propriété | Type | Description |
|---|---|---|
type | "user" | "assistant" | Rôle du message |
uuid | string | Identifiant de message unique |
session_id | string | Session à laquelle ce message appartient |
message | unknown | Charge utile de message brute de la transcription |
parent_tool_use_id | string | null | Pour les messages de sous-agent, le tool_use_id de l’appel d’outil Agent qui l’a généré. null pour les messages de session principale et les sessions plus anciennes |
Exemple
getSessionInfo()
Lit les métadonnées d’une seule session par ID sans analyser le répertoire de projet complet.
Paramètres
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
sessionId | string | requis | UUID de la session à rechercher |
options.dir | string | undefined | Chemin du répertoire de projet. Lorsqu’il est omis, recherche dans tous les répertoires de projet |
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
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
sessionId | string | requis | UUID de la session à renommer |
title | string | requis | Nouveau titre. Doit être non vide après suppression des espaces blancs |
options.dir | string | undefined | Chemin du répertoire de projet. Lorsqu’il est omis, recherche dans tous les répertoires de projet |
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
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
sessionId | string | requis | UUID de la session à étiqueter |
tag | string | null | requis | Chaîne d’étiquette, ou null pour effacer |
options.dir | string | undefined | Chemin du répertoire de projet. Lorsqu’il est omis, recherche dans tous les répertoires de projet |
resolveSettings()
Résout les paramètres Claude Code effectifs pour un répertoire donné en utilisant le même moteur de fusion que l’interface CLI, sans générer l’interface CLI Claude. Utilisez-le pour inspecter quelle configuration un appel query() verrait avant d’en invoquer un.
Cette fonction est en version alpha et son API peut changer avant la stabilisation. Elle lit les sources MDM, y compris la liste de propriétés macOS et Windows HKLM/HKCU, pour la parité avec le démarrage de l’interface CLI, mais n’exécute pas le sous-processus
policyHelper configuré par l’administrateur. Le champ permissions.defaultMode est retourné tel quel de tous les niveaux, y compris les paramètres de projet. Le filtre de confiance que l’interface CLI applique avant d’honorer les modes de permission croissants n’est pas appliqué.Paramètres
resolveSettings() accepte un seul objet d’options. Tous les champs sont optionnels.
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
options.cwd | string | process.cwd() | Répertoire pour résoudre les paramètres de projet et locaux par rapport à |
options.settingSources | SettingSource[] | Toutes les sources | Quelles sources du système de fichiers charger. Passez [] pour ignorer les paramètres utilisateur, projet et locaux. Les paramètres de politique gérée se chargent dans tous les cas |
options.managedSettings | Settings | undefined | Paramètres de politique restrictive fournis par l’hôte d’intégration. Supprimés par défaut quand un niveau géré déployé par l’administrateur est présent ; fusionnés sous ce niveau quand parentSettingsBehavior est "merge". Les clés non restrictives telles que model sont silencieusement supprimées pour que cette option puisse renforcer la politique gérée mais pas l’assouplir |
options.serverManagedSettings | Settings | undefined | Charge utile de paramètres gérés par le serveur depuis /api/claude_code/settings. Les clés non restrictives passent sans filtre |
Type de retour : ResolvedSettings
resolveSettings() retourne un objet décrivant les paramètres fusionnés et la source qui a contribué à chaque clé.
| Propriété | Type | Description |
|---|---|---|
effective | Settings | Paramètres fusionnés après application de toutes les sources activées dans l’ordre de précédence |
provenance | Partial<Record<keyof Settings, ProvenanceEntry>> | Pour chaque clé de niveau supérieur dans effective, quelle source a fourni la valeur |
sources | Array<{ source, settings, path?, policyOrigin? }> | Paramètres bruts par source, ordonnés de la plus basse à la plus haute précédence |
Exemple
L’exemple ci-dessous résout les paramètres pour un répertoire de projet et imprime la source qui contrôle la période de nettoyage.Types
Options
Objet de configuration pour la fonction query().
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
abortController | AbortController | new AbortController() | Contrôleur pour annuler les opérations |
additionalDirectories | string[] | [] | Répertoires supplémentaires auxquels Claude peut accéder |
agent | string | undefined | Nom de l’agent pour le thread principal. L’agent doit être défini dans l’option agents ou dans les paramètres |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | Définir programmatiquement les sous-agents |
agentProgressSummaries | boolean | false | Quand true, générer des résumés de progression d’une ligne pour les sous-agents et les transférer sur les événements task_progress via le champ summary. S’applique aux sous-agents de premier plan et d’arrière-plan |
allowDangerouslySkipPermissions | boolean | false | Activer le contournement des permissions. Requis lors de l’utilisation de permissionMode: 'bypassPermissions' |
allowedTools | string[] | [] | Outils à approuver automatiquement sans demander. Cela ne restreint pas Claude à seulement ces outils ; les outils non répertoriés passent à permissionMode et canUseTool. Utilisez disallowedTools pour bloquer les outils. Voir Permissions |
betas | SdkBeta[] | [] | Activer les fonctionnalités bêta |
canUseTool | CanUseTool | undefined | Fonction de permission personnalisée pour l’utilisation des outils |
continue | boolean | false | Continuer la conversation la plus récente |
cwd | string | process.cwd() | Répertoire de travail actuel |
debug | boolean | false | Activer le mode débogage pour le processus Claude Code |
debugFile | string | undefined | Écrire les journaux de débogage dans un chemin de fichier spécifique. Active implicitement le mode débogage |
disallowedTools | string[] | [] | Outils à refuser. Un nom simple tel que "Bash" supprime l’outil du contexte de Claude. Une règle délimitée telle que "Bash(rm *)" laisse l’outil disponible et refuse les appels correspondants dans chaque mode de permission, y compris bypassPermissions. Voir Permissions |
effort | 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'high' | Contrôle l’effort que Claude met dans sa réponse. Fonctionne avec la réflexion adaptative pour guider la profondeur de réflexion |
enableFileCheckpointing | boolean | false | Activer le suivi des modifications de fichiers pour le rembobinage. Voir Sauvegarde de fichiers |
env | Record<string, string | undefined> | process.env | Variables d’environnement. Quand défini, cela remplace l’environnement du sous-processus au lieu de fusionner avec process.env, donc passez { ...process.env, YOUR_VAR: 'value' } pour conserver les variables héritées comme PATH. Voir Gérer les réponses API lentes ou bloquées pour un exemple de ce modèle, et Variables d’environnement pour les variables que la CLI sous-jacente lit. Définissez CLAUDE_AGENT_SDK_CLIENT_APP pour identifier votre application dans l’en-tête User-Agent |
executable | 'bun' | 'deno' | 'node' | Détection automatique | Runtime JavaScript à utiliser |
executableArgs | string[] | [] | Arguments à passer à l’exécutable |
extraArgs | Record<string, string | null> | {} | Arguments supplémentaires |
fallbackModel | string | undefined | Modèle à utiliser si le principal échoue |
forkSession | boolean | false | Lors de la reprise avec resume, bifurquer vers un nouvel ID de session au lieu de continuer la session d’origine |
forwardSubagentText | boolean | false | Transférer les blocs de texte et de réflexion des sous-agents en tant que messages assistant et utilisateur avec parent_tool_use_id défini, pour que les consommateurs puissent afficher une transcription imbriquée. Par défaut, seuls les blocs tool_use et tool_result des sous-agents sont émis |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | Rappels de hook pour les événements |
includeHookEvents | boolean | false | Inclure les événements du cycle de vie du hook dans le flux de messages en tant que SDKHookStartedMessage, SDKHookProgressMessage, et SDKHookResponseMessage |
includePartialMessages | boolean | false | Inclure les événements de message partiel |
loadTimeoutMs | number | 60000 | Alpha. Délai d’expiration en millisecondes pour chaque appel sessionStore.load() et sessionStore.listSubkeys() lors de la matérialisation de la reprise. Si l’adaptateur ne se règle pas dans cette fenêtre, la requête échoue au lieu de rester bloquée. Ignoré quand sessionStore n’est pas défini |
managedSettings | Settings | undefined | Paramètres de niveau politique fournis par le processus parent qui génère. Supprimés quand un niveau de paramètres gérés contrôlé par l’informatique existe déjà sur la machine, sauf si cet administrateur accepte avec parentSettingsBehavior: 'merge'. Filtrés aux clés restrictives uniquement |
maxBudgetUsd | number | undefined | Arrêter la requête quand l’estimation du coût côté client atteint cette valeur en USD. Comparé à la même estimation que total_cost_usd ; voir Suivi des coûts et de l’utilisation pour les avertissements de précision |
maxThinkingTokens | number | undefined | Déprécié : Utilisez thinking à la place. Tokens maximum pour le processus de réflexion |
maxTurns | number | undefined | Tours agentiques maximum (allers-retours d’utilisation d’outils) |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | Configurations de serveur MCP |
model | string | Par défaut de CLI | Modèle Claude à utiliser |
onElicitation | (request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult> | undefined | Rappel pour gérer les demandes d’élicitation MCP. Appelé quand un serveur MCP demande une entrée utilisateur et aucun hook ne la gère en premier. Quand non fourni, les demandes d’élicitation non gérées sont automatiquement refusées |
outputFormat | { type: 'json_schema', schema: JSONSchema } | undefined | Définir le format de sortie pour les résultats de l’agent. Voir Sorties structurées pour les détails |
outputStyle | string | undefined | Pas un champ Options. Définissez outputStyle dans l’objet settings en ligne ou un fichier de paramètres à la place. Voir Activer un style de sortie |
pathToClaudeCodeExecutable | string | Résolu automatiquement à partir du binaire natif groupé | Chemin vers l’exécutable Claude Code. Nécessaire uniquement si les dépendances optionnelles ont été ignorées lors de l’installation ou si votre plateforme ne figure pas dans l’ensemble pris en charge |
permissionMode | PermissionMode | 'default' | Mode de permission pour la session |
permissionPromptToolName | string | undefined | Nom de l’outil MCP pour les invites de permission |
persistSession | boolean | true | Quand false, désactive la persistance de session sur disque. Les sessions ne peuvent pas être reprises plus tard |
planModeInstructions | string | undefined | Instructions de flux de travail personnalisées pour le mode plan. Quand permissionMode est 'plan', cette chaîne remplace le corps du flux de travail du mode plan par défaut. La CLI l’enveloppe toujours avec le préambule d’application en lecture seule et le pied de page du protocole ExitPlanMode |
plugins | SdkPluginConfig[] | [] | Charger les plugins personnalisés à partir de chemins locaux. Voir Plugins pour les détails |
promptSuggestions | boolean | false | Activer les suggestions d’invite. Émet un message prompt_suggestion après chaque tour avec une invite utilisateur suivante prédite |
resume | string | undefined | ID de session à reprendre |
resumeSessionAt | string | undefined | Reprendre la session à un UUID de message spécifique |
sandbox | SandboxSettings | undefined | Configurer le comportement du sandbox par programmation. Voir Paramètres du sandbox pour les détails |
sessionId | string | Généré automatiquement | Utiliser un UUID spécifique pour la session au lieu d’en générer un automatiquement |
sessionStore | SessionStore | undefined | Refléter les transcriptions de session vers un backend externe pour que n’importe quel hôte puisse les reprendre. Voir Persister les sessions vers un stockage externe |
sessionStoreFlush | 'batched' | 'eager' | 'batched' | Alpha. Mode de vidage pour sessionStore. Ignoré quand sessionStore n’est pas défini |
settings | string | Settings | undefined | Objet paramètres en ligne ou chemin vers un fichier de paramètres. Remplit la couche de paramètres d’indicateur dans l’ordre de précédence. Modifiez à l’exécution avec applyFlagSettings() |
settingSources | SettingSource[] | Paramètres par défaut de CLI (toutes les sources) | Contrôler les paramètres du système de fichiers à charger. Passez [] pour désactiver les paramètres utilisateur, projet et locaux. Les paramètres de politique gérée se chargent indépendamment. Voir Utiliser les fonctionnalités Claude Code |
skills | string[] | 'all' | undefined | Compétences disponibles pour la session. Passez 'all' pour activer chaque compétence découverte, ou une liste de noms de compétences. Quand défini, le SDK active l’outil Skill automatiquement sans le lister dans allowedTools. Voir Compétences |
spawnClaudeCodeProcess | (options: SpawnOptions) => SpawnedProcess | undefined | Fonction personnalisée pour générer le processus Claude Code. Utilisez pour exécuter Claude Code dans des VM, des conteneurs ou des environnements distants |
stderr | (data: string) => void | undefined | Rappel pour la sortie stderr |
strictMcpConfig | boolean | false | Utiliser uniquement les serveurs passés dans mcpServers et ignorer le projet .mcp.json, les paramètres utilisateur, les serveurs MCP fournis par les plugins, et les connecteurs claude.ai |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean } | undefined (invite minimale) | Configuration de l’invite système. Passez une chaîne pour une invite personnalisée, ou { type: 'preset', preset: 'claude_code' } pour utiliser l’invite système de Claude Code. Lors de l’utilisation de la forme d’objet prédéfini, ajoutez append pour l’étendre avec des instructions supplémentaires, et définissez excludeDynamicSections: true pour déplacer le contexte par session dans le premier message utilisateur pour une meilleure réutilisation du cache d’invite sur les machines |
taskBudget | { total: number } | undefined | Alpha. Budget de tâche côté API en tokens. Quand défini, le modèle est informé de son budget de tokens restant pour qu’il puisse adapter l’utilisation des outils et terminer avant la limite |
thinking | ThinkingConfig | { type: 'adaptive' } pour les modèles pris en charge | Contrôle le comportement de réflexion/raisonnement de Claude. Voir ThinkingConfig pour les options |
title | string | undefined | Titre d’affichage pour la session. Lors de la reprise via resume ou continue, le titre persistant de la session reprise a la priorité ; utilisez renameSession() pour renommer une session existante |
toolAliases | Record<string, string> | undefined | Mapper les noms d’outils intégrés aux noms d’outils MCP pour que Claude appelle votre implémentation MCP à la place de l’intégrée. Par exemple, { Bash: 'mcp__workspace__bash' } |
toolConfig | ToolConfig | undefined | Configuration pour le comportement des outils intégrés. Voir ToolConfig pour les détails |
tools | string[] | { type: 'preset'; preset: 'claude_code' } | undefined | Configuration des outils. Passez un tableau de noms d’outils ou utilisez le prédéfini pour obtenir les outils par défaut de Claude Code |
Gérer les réponses API lentes ou bloquées
Le sous-processus CLI lit plusieurs variables d’environnement qui contrôlent les délais d’expiration de l’API et la détection de blocage. Transmettez-les via l’optionenv :
API_TIMEOUT_MS: délai d’expiration par requête sur le client Anthropic, en millisecondes. Par défaut600000. S’applique à la boucle principale et à tous les sous-agents.CLAUDE_CODE_MAX_RETRIES: tentatives API maximales. Par défaut10. Chaque tentative obtient sa propre fenêtreAPI_TIMEOUT_MS, donc le pire cas de temps mural est approximativementAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)plus le backoff.CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: chien de garde de blocage pour les sous-agents lancés avecrun_in_background. Par défaut600000. Réinitialise à chaque événement de flux ; en cas de blocage, il abandonne le sous-agent, marque la tâche comme échouée et expose l’erreur au parent avec tout résultat partiel. Ne s’applique pas aux sous-agents synchrones.CLAUDE_ENABLE_STREAM_WATCHDOG=1avecCLAUDE_STREAM_IDLE_TIMEOUT_MS: abandonne la requête quand les en-têtes sont arrivés mais que le corps de la réponse cesse de diffuser. Désactivé par défaut.CLAUDE_STREAM_IDLE_TIMEOUT_MSpar défaut à300000et est limité à ce minimum. La requête abandonnée passe par le chemin de tentative normal.
Objet Query
Interface retournée par la fonction query().
Méthodes
| Méthode | Description |
|---|---|
interrupt() | Interrompt la requête (disponible uniquement en mode d’entrée en diffusion) |
rewindFiles(userMessageId, options?) | Restaure les fichiers à leur état au message utilisateur spécifié. Passez { dryRun: true } pour prévisualiser les modifications. Nécessite enableFileCheckpointing: true. Voir Sauvegarde de fichiers |
setPermissionMode() | Change le mode de permission (disponible uniquement en mode d’entrée en diffusion) |
setModel() | Change le modèle (disponible uniquement en mode d’entrée en diffusion) |
setMaxThinkingTokens() | Déprécié : Utilisez l’option thinking à la place. Change les tokens de réflexion maximum |
applyFlagSettings(settings) | Fusionne les paramètres dans la couche de paramètres d’indicateur de la session à l’exécution (disponible uniquement en mode d’entrée en diffusion). Voir applyFlagSettings() |
initializationResult() | Retourne le résultat d’initialisation complet incluant les commandes prises en charge, les modèles, les informations de compte et la configuration du style de sortie |
supportedCommands() | Retourne les commandes slash disponibles |
supportedModels() | Retourne les modèles disponibles avec les informations d’affichage |
supportedAgents() | Retourne les sous-agents disponibles en tant que AgentInfo[] |
mcpServerStatus() | Retourne l’état des serveurs MCP connectés |
accountInfo() | Retourne les informations de compte |
reconnectMcpServer(serverName) | Reconnecter un serveur MCP par nom |
toggleMcpServer(serverName, enabled) | Activer ou désactiver un serveur MCP par nom |
setMcpServers(servers) | Remplacer dynamiquement l’ensemble des serveurs MCP pour cette session. Retourne des informations sur les serveurs ajoutés, supprimés et les erreurs |
streamInput(stream) | Diffuser les messages d’entrée vers la requête pour les conversations multi-tours |
stopTask(taskId) | Arrêter une tâche de fond en cours d’exécution par ID |
close() | Fermer la requête et terminer le processus sous-jacent. Termine de force la requête et nettoie toutes les ressources |
applyFlagSettings()
Change n’importe quel paramètre sur une session en cours d’exécution sans redémarrer la requête. Utilisez-le quand un paramètre qui n’a pas de setter dédié doit changer en milieu de session, comme resserrer permissions après que l’agent ait lu une entrée non fiable. setModel() et setPermissionMode() sont des setters dédiés pour ces deux clés ; applyFlagSettings() est la forme générale qui accepte n’importe quel sous-ensemble des clés de paramètres, et passer model ici se comporte de la même manière que setModel().
Seules certaines clés prennent effet en milieu de session :
- Appliquées au tour suivant :
model,effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,awaySummaryEnabled,agent. Basculeragentapplique également le remplacement de modèle, les hooks et l’invite système de cet agent au tour suivant. - Aucun effet en milieu de session : les options d’invite système. Celles-ci sont résolues une fois au démarrage, donc la session en cours d’exécution conserve la valeur d’origine même si l’appel réussit. Pour les modifier, démarrez une nouvelle session.
settings en ligne de query() remplit au démarrage. Les paramètres d’indicateur se situent près du haut de l’ordre de précédence des paramètres : ils remplacent les paramètres utilisateur, projet et locaux, et seuls les paramètres de politique gérée peuvent les remplacer. C’est le même niveau que la section de précédence sur la page appelle les options programmatiques.
Les appels successifs fusionnent superficiellement les clés de niveau supérieur. Un deuxième appel avec { permissions: {...} } remplace l’objet permissions entier de l’appel précédent plutôt que de le fusionner profondément. Pour effacer une clé de la couche d’indicateur et revenir aux sources de précédence inférieure, passez null pour cette clé. Passer undefined n’a aucun effet car la sérialisation JSON le supprime.
Disponible uniquement en mode d’entrée en diffusion, la même contrainte que setModel() et setPermissionMode().
L’exemple ci-dessous bascule le modèle actif en milieu de session, puis efface le remplacement pour que le modèle revienne à ce que les paramètres utilisateur ou projet spécifient.
applyFlagSettings() est TypeScript uniquement. Le SDK Python n’expose pas de méthode équivalente.WarmQuery
Handle retourné par startup(). Le sous-processus est déjà généré et initialisé, donc appeler query() sur ce handle écrit l’invite directement dans un processus prêt sans latence de démarrage.
Méthodes
| Méthode | Description |
|---|---|
query(prompt) | Envoyer une invite au sous-processus préchauffé et retourner une Query. Ne peut être appelé qu’une fois par WarmQuery |
close() | Fermer le sous-processus sans envoyer d’invite. Utilisez ceci pour abandonner une requête chaude qui n’est plus nécessaire |
WarmQuery implémente AsyncDisposable, il peut donc être utilisé avec await using pour le nettoyage automatique.
SDKControlInitializeResponse
Type de retour de initializationResult(). Contient les données d’initialisation de session.
initialize à une session qui est déjà en cours d’exécution, le wrapper de réponse de contrôle porte également un tableau pending_permission_requests optionnel. Le champ se trouve sur le wrapper de réponse lui-même, pas dans la charge utile SDKControlInitializeResponse ci-dessus. Chaque entrée est un message control_request complet avec la même forme { type: "control_request", request_id, request } que la session diffuse pour les demandes de permission lors de l’exécution.
Ce sont des demandes qui ont été émises avant que le client se connecte et attendent toujours une réponse, donc lisez ce tableau pour afficher immédiatement les invites de permission en vol ; elles ne seront pas renvoyées.
AgentDefinition
Configuration pour un sous-agent défini par programmation.
| Champ | Requis | Description |
|---|---|---|
description | Oui | Description en langage naturel de quand utiliser cet agent |
tools | Non | Tableau de noms d’outils autorisés. S’il est omis, hérite tous les outils du parent. Pour précharger les compétences dans le contexte de l’agent, utilisez le champ skills plutôt que de lister 'Skill' ici |
disallowedTools | Non | Tableau de noms d’outils à explicitement interdire pour cet agent |
prompt | Oui | L’invite système de l’agent |
model | Non | Remplacement de modèle pour cet agent. Accepte un alias tel que 'sonnet', 'opus', 'haiku', 'inherit', ou un ID de modèle complet. S’il est omis ou 'inherit', utilise le modèle principal |
mcpServers | Non | Spécifications de serveur MCP pour cet agent |
skills | Non | Tableau de noms de compétences à précharger dans le contexte de l’agent |
initialPrompt | Non | Auto-soumis comme le premier tour utilisateur quand cet agent s’exécute en tant qu’agent du thread principal |
maxTurns | Non | Nombre maximum de tours agentiques (allers-retours API) avant arrêt |
background | Non | Exécuter cet agent en tant que tâche de fond non-bloquante quand invoqué |
memory | Non | Source de mémoire pour cet agent : 'user', 'project', ou 'local' |
effort | Non | Niveau d’effort de raisonnement pour cet agent. Accepte un niveau nommé ou un entier |
permissionMode | Non | Mode de permission pour l’exécution des outils dans cet agent. Voir PermissionMode |
criticalSystemReminder_EXPERIMENTAL | Non | Expérimental : Rappel critique ajouté à l’invite système |
AgentMcpServerSpec
Spécifie les serveurs MCP disponibles pour un sous-agent. Peut être un nom de serveur (chaîne référençant un serveur de la configuration mcpServers du parent) ou une configuration de serveur en ligne enregistrant les noms de serveur aux configurations.
McpServerConfigForProcessTransport est McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Contrôle les sources de configuration basées sur le système de fichiers que le SDK charge les paramètres à partir de.
| Valeur | Description | Emplacement |
|---|---|---|
'user' | Paramètres utilisateur globaux | ~/.claude/settings.json |
'project' | Paramètres de projet partagés (contrôle de version) | .claude/settings.json |
'local' | Paramètres de projet locaux (gitignorés) | .claude/settings.local.json |
Comportement par défaut
QuandsettingSources est omis ou undefined, query() charge les mêmes paramètres du système de fichiers que la CLI Claude Code : utilisateur, projet et local. Les paramètres de politique gérée sont chargés dans tous les cas. Voir Ce que settingSources ne contrôle pas pour les entrées qui sont lues indépendamment de cette option, et comment les désactiver.
Pourquoi utiliser settingSources
Désactiver les paramètres du système de fichiers :Précédence des paramètres
Quand plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (la plus haute à la plus basse) :- Paramètres locaux (
.claude/settings.local.json) - Paramètres de projet (
.claude/settings.json) - Paramètres utilisateur (
~/.claude/settings.json)
agents, allowedTools, et settings remplacent les paramètres du système de fichiers utilisateur, projet et local. Les paramètres de politique gérée ont la priorité sur les options programmatiques.
PermissionMode
CanUseTool
Type de fonction de permission personnalisée pour contrôler l’utilisation des outils.
| Option | Type | Description |
|---|---|---|
signal | AbortSignal | Signalé si l’opération doit être abandonnée |
suggestions | PermissionUpdate[] | Mises à jour de permission suggérées pour que l’utilisateur ne soit pas invité à nouveau pour cet outil. Les invites Bash incluent une suggestion avec la destination localSettings, donc retourner dans updatedPermissions écrit la règle à .claude/settings.local.json et persiste entre les sessions. |
blockedPath | string | Le chemin de fichier qui a déclenché la demande de permission, le cas échéant |
decisionReason | string | Explique pourquoi cette demande de permission a été déclenchée |
toolUseID | string | Identifiant unique pour cet appel d’outil spécifique dans le message assistant |
agentID | string | Si exécuté dans un sous-agent, l’ID du sous-agent |
PermissionResult
Résultat d’une vérification de permission.
ToolConfig
Configuration pour le comportement des outils intégrés.
| Champ | Type | Description |
|---|---|---|
askUserQuestion.previewFormat | 'markdown' | 'html' | Accepte le champ preview sur les options AskUserQuestion et définit son format de contenu. Lorsqu’il n’est pas défini, Claude n’émet pas de prévisualisations |
McpServerConfig
Configuration pour les serveurs MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Configuration pour charger les plugins dans le SDK.
| Champ | Type | Description |
|---|---|---|
type | 'local' | Doit être 'local' (seuls les plugins locaux sont actuellement pris en charge) |
path | string | Chemin absolu ou relatif au répertoire du plugin |
Types de messages
SDKMessage
Type union de tous les messages possibles retournés par la requête.
SDKAssistantMessage
Message de réponse assistant.
message est un BetaMessage du SDK Anthropic. Il inclut des champs comme id, content, model, stop_reason et usage.
SDKAssistantMessageError est l’un de : 'authentication_failed', 'oauth_org_not_allowed', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens' ou 'unknown'. 'model_not_found' signifie que le modèle sélectionné n’existe pas ou n’est pas disponible pour votre compte ou déploiement. 'overloaded' signifie que l’API a retourné un 529 parce que le serveur est à pleine capacité, par opposition à 'rate_limit', qui est un 429 contre votre quota.
SDKUserMessage
Message d’entrée utilisateur.
shouldQuery sur false pour ajouter le message à la transcription sans déclencher un tour assistant. Le message est conservé et fusionné dans le prochain message utilisateur qui déclenche un tour. Utilisez ceci pour injecter du contexte, comme la sortie d’une commande que vous avez exécutée en dehors de la bande, sans dépenser un appel de modèle.
SDKUserMessageReplay
Message utilisateur rejoué avec UUID requis.
SDKResultMessage
Message de résultat final.
subtype :
api_error_status: le code de statut HTTP de l’erreur API qui a terminé la conversation. Absent ounullquand le tour s’est terminé sans erreur API.ttft_ms: temps jusqu’au premier jeton en millisecondes. Présent uniquement sur le bras de succès.terminal_reason: pourquoi la boucle s’est terminée. L’un de"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error"ou"model_error".fast_mode_state: l’un de"on","off"ou"cooldown".
origin transmet le SDKMessageOrigin du message utilisateur qui a déclenché ce résultat. Quand une tâche de fond se termine et que le SDK injecte un tour de suivi synthétique, le SDKResultMessage résultant porte origin: { kind: "task-notification" }. Vérifiez ce champ pour distinguer les résultats qui répondent à votre invite des résultats émis pour les suivis de tâches de fond, afin que vous puissiez acheminer ou supprimer ces derniers. Le champ est absent pour les résultats émis avant tout tour utilisateur, comme les erreurs de démarrage.
Quand un hook PreToolUse retourne permissionDecision: "defer", le résultat a stop_reason: "tool_deferred" et deferred_tool_use porte l’id, le name et l’input de l’outil en attente. Lisez ce champ pour afficher la demande dans votre propre interface utilisateur, puis reprenez avec le même session_id pour continuer. Consultez Différer un appel d’outil pour plus tard pour le trajet complet.
SDKSystemMessage
Message d’initialisation système.
SDKPartialAssistantMessage
Message partiel en diffusion (uniquement quand includePartialMessages est true).
SDKCompactBoundaryMessage
Message indiquant une limite de compaction de conversation.
SDKPluginInstallMessage
Événement de progression d’installation de plugin. Émis quand CLAUDE_CODE_SYNC_PLUGIN_INSTALL est défini, pour que votre application Agent SDK puisse suivre l’installation du plugin de marketplace avant le premier tour. Les statuts started et completed encadrent l’installation globale. Les statuts installed et failed rapportent les marchés individuels et incluent name.
SDKPermissionDeniedMessage
Événement de flux émis quand le système de permissions refuse automatiquement un appel d’outil sans invite interactive. Utilisez-le pour afficher le refus dans votre interface utilisateur au fur et à mesure, plutôt que d’observer uniquement le résultat d’outil is_error qui suit. Le chemin de demande interactive atteint votre application séparément via le callback canUseTool. Les refus émis par un hook PreToolUse ne sont pas signalés via cet événement.
Cet événement nécessite Claude Code v2.1.136 ou ultérieur.
| Champ | Type | Description |
|---|---|---|
tool_name | string | Nom de l’outil qui a été refusé |
tool_use_id | string | ID du bloc tool_use auquel ce refus répond |
agent_id | string | ID du sous-agent quand l’appel refusé provient d’un sous-agent. Reflète le champ sur can_use_tool pour l’acheminement côté hôte |
decision_reason_type | string | Discriminateur du composant qui a décidé, tel que "rule", "mode", "classifier" ou "asyncAgent" |
decision_reason | string | Raison lisible par l’homme du composant décideur, quand disponible |
message | string | Message de rejet retourné au modèle dans le tool_result |
SDKPermissionDenial
Informations sur une utilisation d’outil refusée.
SDKMessageOrigin
Provenance d’un message de rôle utilisateur. Ceci apparaît comme origin sur SDKUserMessage et est transmis au SDKResultMessage correspondant afin que vous puissiez dire ce qui a déclenché un tour donné.
kind | Signification |
|---|---|
human | Entrée directe de l’utilisateur final. Sur les messages utilisateur, une origin absente signifie également une entrée humaine. |
channel | Message arrivant sur un canal. server est le nom du serveur MCP source. |
peer | Message d’une autre session d’agent via SendMessage. from est l’adresse de l’expéditeur ; name est le nom d’affichage de l’expéditeur quand disponible. |
task-notification | Tour synthétique injecté après la fin d’une tâche de fond. Voir SDKTaskNotificationMessage. |
coordinator | Message d’un coordinateur d’équipe dans une équipe d’agents. |
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.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
S’exécute une fois après que chaque appel d’outil dans un lot ait été résolu, avant la prochaine demande de modèle. tool_response porte le contenu tool_result sérialisé que le modèle voit ; la forme diffère de l’objet Output structuré de PostToolUseHookInput.
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCompletedHookInput
ConfigChangeHookInput
WorktreeCreateHookInput
WorktreeRemoveHookInput
MessageDisplayHookInput
HookJSONOutput
Valeur de retour du hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Types d’entrée d’outil
Documentation des schémas d’entrée pour tous les outils Claude Code intégrés. Ces types sont exportés depuis@anthropic-ai/claude-agent-sdk et peuvent être utilisés pour les interactions d’outils type-safe.
ToolInputSchemas
Union de tous les types d’entrée d’outil, exportée depuis @anthropic-ai/claude-agent-sdk.
Agent
Nom de l’outil :Agent (précédemment Task, qui est toujours accepté comme alias)
AskUserQuestion
Nom de l’outil :AskUserQuestion
Bash
Nom de l’outil :Bash
Monitor
Nom de l’outil :Monitor
persistent: true pour les montres de longueur de session telles que les queues de journal. Monitor suit les mêmes règles de permission que Bash. Voir la référence de l’outil Monitor pour le comportement et la disponibilité du fournisseur.
TaskOutput
Nom de l’outil :TaskOutput
Edit
Nom de l’outil :Edit
Read
Nom de l’outil :Read
pages pour les plages de pages PDF (par exemple, "1-5").
Write
Nom de l’outil :Write
Glob
Nom de l’outil :Glob
Grep
Nom de l’outil :Grep
TaskStop
Nom de l’outil :TaskStop
NotebookEdit
Nom de l’outil :NotebookEdit
WebFetch
Nom de l’outil :WebFetch
WebSearch
Nom de l’outil :WebSearch
Workflow
Nom de l’outil :Workflow
Workflow est disponible dans Agent SDK v0.3.149 et versions ultérieures. Au moins l’un de script, name ou scriptPath est requis.
| Champ | Type | Description |
|---|---|---|
script | string | Script de flux de travail en ligne. Doit commencer par export const meta = { name, description, phases } comme littéral, suivi du corps du script utilisant agent(), parallel(), pipeline() et phase() |
name | string | Nom d’un flux de travail intégré ou d’un flux de travail enregistré dans .claude/workflows/. Résolu en script |
scriptPath | string | Chemin vers un fichier de script de flux de travail sur le disque. Prend la priorité sur script et name. Chaque invocation persiste son script et retourne le chemin dans le résultat, afin que vous puissiez éditer ce fichier et réinvoquer avec le même scriptPath pour itérer |
args | unknown | Valeur d’entrée exposée au script en tant que args global, pour les flux de travail nommés paramétrés tels qu’une question de recherche ou une liste de chemins de fichiers. Passez les tableaux et les objets comme des valeurs JSON réelles, pas comme une chaîne codée en JSON |
resumeFromRunId | string | ID d’exécution d’une invocation Workflow antérieure à reprendre. Les appels agent() complétés avec des entrées inchangées retournent les résultats en cache ; seuls les appels modifiés ou nouveaux s’exécutent en direct. Même session uniquement |
TodoWrite
Nom de l’outil :TodoWrite
À partir du TypeScript Agent SDK 0.3.142,
TodoWrite est désactivé par défaut. Utilisez TaskCreate, TaskGet, TaskUpdate et TaskList à la place. Voir Migrer vers les outils Task pour mettre à jour votre code de surveillance, ou définissez CLAUDE_CODE_ENABLE_TASKS=0 pour revenir à TodoWrite.TaskCreate
Nom de l’outil :TaskCreate
TaskUpdate
Nom de l’outil :TaskUpdate
status à "deleted" pour la supprimer.
TaskGet
Nom de l’outil :TaskGet
null lorsque l’ID n’est pas trouvé.
TaskList
Nom de l’outil :TaskList
ExitPlanMode
Nom de l’outil :ExitPlanMode
ListMcpResources
Nom de l’outil :ListMcpResourcesTool
ReadMcpResource
Nom de l’outil :ReadMcpResourceTool
EnterWorktree
Nom de l’outil :EnterWorktree
path pour basculer dans un worktree existant du référentiel actuel au lieu d’en créer un nouveau. name et path s’excluent mutuellement.
Types de sortie d’outil
Documentation des schémas de sortie pour tous les outils Claude Code intégrés. Ces types sont exportés depuis@anthropic-ai/claude-agent-sdk et représentent les données de réponse réelles retournées par chaque outil.
ToolOutputSchemas
Union de tous les types de sortie d’outil.
Agent
Nom de l’outil :Agent (précédemment Task, qui est toujours accepté comme alias)
status : "completed" pour les tâches terminées, "async_launched" pour les tâches de fond et "sub_agent_entered" pour les sous-agents interactifs.
AskUserQuestion
Nom de l’outil :AskUserQuestion
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
backgroundTaskId.
Monitor
Nom de l’outil :Monitor
TaskStop pour annuler la surveillance plus tôt.
Edit
Nom de l’outil :Edit
Read
Nom de l’outil :Read
type.
Write
Nom de l’outil :Write
Glob
Nom de l’outil :Glob
Grep
Nom de l’outil :Grep
mode : liste de fichiers, contenu avec correspondances ou comptages de correspondances.
TaskStop
Nom de l’outil :TaskStop
NotebookEdit
Nom de l’outil :NotebookEdit
WebFetch
Nom de l’outil :WebFetch
WebSearch
Nom de l’outil :WebSearch
Workflow
Nom de l’outil :Workflow
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.
| Champ | Type | Description |
|---|---|---|
status | "async_launched" | L’outil a accepté l’invocation. C’est la seule valeur que le champ prend |
taskId | string | Identifiant de tâche de fond pour l’exécution |
runId | string | Identifiant d’exécution de workflow à transmettre en tant que resumeFromRunId lors d’une invocation ultérieure |
summary | string | Description d’une ligne de ce que fait le workflow |
transcriptDir | string | Répertoire où les transcriptions de sous-agent sont écrites pendant l’exécution |
scriptPath | string | Chemin du script de workflow persisté pour cette exécution. Modifiez-le et transmettez-le en tant que scriptPath pour réexécuter sans renvoyer le script |
error | string | Défini lorsque le script échoue sa vérification de syntaxe. Lorsqu’il est présent, l’exécution n’a pas démarré malgré le statut async_launched |
TodoWrite
Nom de l’outil :TodoWrite
À partir du TypeScript Agent SDK 0.3.142,
TodoWrite est désactivé par défaut. Utilisez TaskCreate, TaskGet, TaskUpdate et TaskList à la place. Consultez Migrer vers les outils Task pour mettre à jour votre code de surveillance, ou définissez CLAUDE_CODE_ENABLE_TASKS=0 pour revenir à TodoWrite.TaskCreate
Nom de l’outil :TaskCreate
TaskUpdate
Nom de l’outil :TaskUpdate
TaskGet
Nom de l’outil :TaskGet
null lorsque l’ID n’est pas trouvé.
TaskList
Nom de l’outil :TaskList
ExitPlanMode
Nom de l’outil :ExitPlanMode
ListMcpResources
Nom de l’outil :ListMcpResourcesTool
ReadMcpResource
Nom de l’outil :ReadMcpResourceTool
EnterWorktree
Nom de l’outil :EnterWorktree
Types de permission
PermissionUpdate
Opérations pour mettre à jour les permissions.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Autres types
ApiKeySource
SdkBeta
Fonctionnalités bêta disponibles qui peuvent être activées via l’option betas. Voir En-têtes bêta pour plus d’informations.
SlashCommand
Informations sur une commande slash disponible.
ModelInfo
Informations sur un modèle disponible.
AgentInfo
Informations sur un sous-agent disponible qui peut être invoqué via l’outil Agent.
| Champ | Type | Description |
|---|---|---|
name | string | Identifiant de type d’agent (par exemple, "Explore", "general-purpose") |
description | string | Description de quand utiliser cet agent |
model | string | undefined | Alias de modèle que cet agent utilise. S’il est omis, hérite le modèle du parent |
McpServerStatus
Statut d’un serveur MCP connecté.
McpServerStatusConfig
La configuration d’un serveur MCP telle que rapportée par mcpServerStatus(). C’est l’union de tous les types de transport de serveur MCP.
McpServerConfig pour les détails sur chaque type de transport.
AccountInfo
Informations de compte pour l’utilisateur authentifié.
ModelUsage
Statistiques d’utilisation par modèle retournées dans les messages de résultat. La valeur costUSD est une estimation côté client. Voir Suivi des coûts et de l’utilisation pour les avertissements de facturation.
ConfigScope
NonNullableUsage
Une version de Usage avec tous les champs nullables rendus non nullables.
Usage
Statistiques d’utilisation des tokens. C’est le type BetaUsage de @anthropic-ai/sdk.
BetaServerToolUsage et BetaIterationsUsage sont définis dans @anthropic-ai/sdk.
CallToolResult
Type de résultat d’outil MCP (depuis @modelcontextprotocol/sdk/types.js). structuredContent est un objet JSON qui peut être retourné aux côtés de content, incluant des blocs d’image. Voir Retourner des données structurées.
ThinkingConfig
Contrôle le comportement de réflexion/raisonnement de Claude. Prend la priorité sur le maxThinkingTokens déprécié.
display optionnel contrôle si le texte de réflexion est retourné "summarized" ou "omitted". Sur Claude Opus 4.7 et versions ultérieures, la valeur par défaut de l’API est "omitted", donc définissez "summarized" pour recevoir le contenu de réflexion dans les blocs thinking.
SpawnedProcess
Interface pour la génération de processus personnalisée (utilisée avec l’option spawnClaudeCodeProcess). ChildProcess satisfait déjà cette interface.
SpawnOptions
Options passées à la fonction de génération personnalisée.
Le champ
signal indique à votre fonction de génération quand arrêter le processus. Passez-le comme option signal à spawn() de Node, ou passez-le à votre gestionnaire d’arrêt de VM ou de conteneur.Ce signal ne se déclenche pas au moment où Options.abortController s’arrête. Le SDK ferme d’abord stdin du processus et attend environ deux secondes pour que l’interface de ligne de commande s’arrête proprement, puis arrête ce signal. Pour réagir au moment où l’appelant s’arrête, écoutez votre propre Options.abortController.signal, que votre fonction de génération peut référencer depuis sa portée englobante.McpSetServersResult
Résultat d’une opération setMcpServers().
RewindFilesResult
Résultat d’une opération rewindFiles().
SDKStatusMessage
Message de mise à jour de statut (par exemple, compaction).
SDKTaskNotificationMessage
Notification quand une tâche de fond se termine, échoue ou est arrêtée. Les tâches de fond incluent les commandes Bash run_in_background, les montres Monitor et les sous-agents de fond.
SDKToolUseSummaryMessage
Résumé de l’utilisation des outils dans une conversation.
SDKHookStartedMessage
Émis quand un hook commence à s’exécuter.
SDKHookProgressMessage
Émis pendant qu’un hook s’exécute, avec la sortie stdout/stderr.
SDKHookResponseMessage
Émis quand un hook termine l’exécution.
SDKToolProgressMessage
Émis périodiquement pendant qu’un outil s’exécute pour indiquer la progression.
SDKAuthStatusMessage
Émis pendant les flux d’authentification.
SDKTaskStartedMessage
Émis quand une tâche de fond commence. Le champ task_type est "local_bash" pour les commandes Bash de fond et les montres Monitor, "local_agent" pour les sous-agents ou "remote_agent".
SDKTaskProgressMessage
Émis périodiquement pendant qu’un sous-agent ou une tâche de fond s’exécute. Le champ summary est rempli uniquement quand agentProgressSummaries est activé.
SDKTaskUpdatedMessage
Émis quand l’état d’une tâche de fond change, par exemple quand elle passe de running à completed. Fusionnez patch dans votre carte de tâches locale indexée par task_id. Le champ end_time est un timestamp Unix epoch en millisecondes, comparable avec Date.now().
SDKFilesPersistedEvent
Émis quand les points de contrôle de fichiers sont persistés sur disque.
SDKRateLimitEvent
Émis quand la session rencontre une limite de débit.
SDKLocalCommandOutputMessage
Sortie d’une commande slash locale (par exemple, /voice ou /usage). Affichée comme du texte de style assistant dans la transcription.
SDKCommandsChangedMessage
Émis quand l’ensemble des commandes disponibles change en cours de session, par exemple quand des compétences sont découvertes alors que l’agent entre dans un sous-répertoire. Le tableau commands est la liste complète mise à jour, donc remplacez toute liste de commandes en cache par cette charge utile. Appeler supportedCommands() à nouveau n’est pas équivalent : cette méthode retourne l’instantané capturé à l’initialisation et ne reflète pas les changements en cours de session.
SDKPromptSuggestionMessage
Émis après chaque tour quand promptSuggestions est activé. Contient une invite utilisateur suivante prédite.
AbortError
Classe d’erreur personnalisée pour les opérations d’abandon.
Configuration du sandbox
SandboxSettings
Configuration pour le comportement du sandbox. Utilisez ceci pour activer le sandboxing des commandes et configurer les restrictions réseau par programmation.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
enabled | boolean | false | Activer le mode sandbox pour l’exécution des commandes |
failIfUnavailable | boolean | true | S’arrêter au démarrage si enabled est true mais que le sandbox ne peut pas démarrer. Définissez false pour revenir à l’exécution non sandboxée avec un avertissement sur stderr |
autoAllowBashIfSandboxed | boolean | true | Approuver automatiquement les commandes bash quand le sandbox est activé |
excludedCommands | string[] | [] | Commandes qui contournent toujours les restrictions du sandbox (par exemple, ['docker']). Celles-ci s’exécutent sans sandbox automatiquement sans implication du modèle |
allowUnsandboxedCommands | boolean | true | Permettre au modèle de demander l’exécution de commandes en dehors du sandbox. Quand true, le modèle peut définir dangerouslyDisableSandbox dans l’entrée de l’outil, qui revient au système de permissions |
network | SandboxNetworkConfig | undefined | Configuration du sandbox spécifique au réseau |
filesystem | SandboxFilesystemConfig | undefined | Configuration du sandbox spécifique au système de fichiers pour les restrictions de lecture/écriture |
ignoreViolations | Record<string, string[]> | undefined | Carte des catégories de violation aux motifs à ignorer (par exemple, { file: ['/tmp/*'], network: ['localhost'] }) |
enableWeakerNestedSandbox | boolean | false | Activer un sandbox imbriqué plus faible pour la compatibilité |
ripgrep | { command: string; args?: string[] } | undefined | Configuration de binaire ripgrep personnalisée pour les environnements sandbox |
Le sandbox dépend du support de la plateforme et, sur Linux, d’outils comme
bubblewrap et socat. Quand enabled est true et que le sandbox ne peut pas démarrer, query() signale un message result avec subtype: "error_during_execution" et la raison dans errors, puis s’arrête. Surveillez ce subtype plutôt que de vous attendre à ce que query() lève une exception avant de produire des messages.Pour exécuter sans sandbox à la place, définissez failIfUnavailable: false.Exemple d’utilisation
SandboxNetworkConfig
Configuration spécifique au réseau pour le mode sandbox. Ces paramètres s’appliquent aux commandes Bash sandboxées quand enabled est true dans le parent SandboxSettings. Ils ne restreignent pas l’outil WebFetch, qui utilise à la place les règles de permissions.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
allowedDomains | string[] | [] | Noms de domaine auxquels les processus sandboxés peuvent accéder |
deniedDomains | string[] | [] | Noms de domaine auxquels les processus sandboxés ne peuvent pas accéder. Prend la priorité sur allowedDomains |
allowManagedDomainsOnly | boolean | false | Paramètres gérés uniquement. Quand défini dans les paramètres gérés, seules les entrées allowedDomains des paramètres gérés sont honorées et les entrées des paramètres utilisateur, projet ou locaux sont ignorées. N’a aucun effet quand défini via les options SDK |
allowLocalBinding | boolean | false | Permettre aux processus de se lier aux ports locaux (par exemple, pour les serveurs de développement) |
allowUnixSockets | string[] | [] | Chemins de socket Unix auxquels les processus peuvent accéder (par exemple, socket Docker) |
allowAllUnixSockets | boolean | false | Permettre l’accès à tous les sockets Unix |
httpProxyPort | number | undefined | Port du proxy HTTP pour les demandes réseau |
socksProxyPort | number | undefined | Port du proxy SOCKS pour les demandes réseau |
Le proxy sandbox intégré applique
allowedDomains en fonction du nom d’hôte demandé et ne termine pas ou n’inspecte pas le trafic TLS, donc des techniques telles que le domain fronting peuvent potentiellement le contourner. Voir Limitations de sécurité du sandboxing pour les détails et Déploiement sécurisé pour configurer un proxy qui termine TLS.SandboxFilesystemConfig
Configuration spécifique au système de fichiers pour le mode sandbox.
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
allowWrite | string[] | [] | Motifs de chemin de fichier pour permettre l’accès en écriture |
denyWrite | string[] | [] | Motifs de chemin de fichier pour refuser l’accès en écriture |
denyRead | string[] | [] | Motifs de chemin de fichier pour refuser l’accès en lecture |
Repli des permissions pour les commandes non sandboxées
QuandallowUnsandboxedCommands est activé, le modèle peut demander l’exécution de commandes en dehors du sandbox en définissant dangerouslyDisableSandbox: true dans l’entrée de l’outil. Ces demandes reviennent au système de permissions existant, ce qui signifie que votre gestionnaire canUseTool est invoqué, vous permettant d’implémenter une logique d’autorisation personnalisée.
excludedCommands vs allowUnsandboxedCommands :excludedCommands: Une liste statique de commandes qui contournent toujours le sandbox automatiquement (par exemple,['docker']). Le modèle n’a aucun contrôle sur ceci.allowUnsandboxedCommands: Permet au modèle de décider à l’exécution s’il faut demander l’exécution non sandboxée en définissantdangerouslyDisableSandbox: truedans l’entrée de l’outil.
- Auditer les demandes du modèle : Enregistrer quand le modèle demande l’exécution non sandboxée
- Implémenter des listes blanches : Permettre uniquement à des commandes spécifiques de s’exécuter sans sandbox
- Ajouter des flux d’approbation : Exiger une autorisation explicite pour les opérations privilégiées
Voir aussi
- Aperçu du SDK - Concepts généraux du SDK
- Référence du SDK Python - Documentation du SDK Python
- Référence CLI - Interface de ligne de commande
- Flux de travail courants - Guides étape par étape