Installation

npm install @anthropic-ai/claude-agent-sdk

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.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Paramètres

ParamètreTypeDescription
promptstring | AsyncIterable<SDKUserMessage>L’invite d’entrée sous forme de chaîne ou d’itérable asynchrone pour le mode de diffusion
optionsOptionsObjet de configuration optionnel (voir le type Options ci-dessous)

Retours

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

tool()

Crée une définition d’outil MCP type-safe pour une utilisation avec les serveurs MCP du SDK.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Paramètres

ParamètreTypeDescription
namestringLe nom de l’outil
descriptionstringUne description de ce que fait l’outil
inputSchemaSchema extends ZodRawShapeSchéma Zod définissant les paramètres d’entrée de l’outil
handler(args, extra) => Promise<CallToolResult>Fonction asynchrone qui exécute la logique de l’outil

createSdkMcpServer()

Crée une instance de serveur MCP qui s’exécute dans le même processus que votre application.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Paramètres

ParamètreTypeDescription
options.namestringLe nom du serveur MCP
options.versionstringChaîne de version optionnelle
options.toolsArray<SdkMcpToolDefinition>Tableau de définitions d’outils créées avec tool()

Types

Options

Objet de configuration pour la fonction query().
PropriétéTypeDéfautDescription
abortControllerAbortControllernew AbortController()Contrôleur pour annuler les opérations
additionalDirectoriesstring[][]Répertoires supplémentaires auxquels Claude peut accéder
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedDéfinir programmatiquement les sous-agents
allowedToolsstring[]Tous les outilsListe des noms d’outils autorisés
canUseToolCanUseToolundefinedFonction de permission personnalisée pour l’utilisation des outils
continuebooleanfalseContinuer la conversation la plus récente
cwdstringprocess.cwd()Répertoire de travail actuel
disallowedToolsstring[][]Liste des noms d’outils non autorisés
envDict<string>process.envVariables d’environnement
executable'bun' | 'deno' | 'node'Détection automatiqueRuntime JavaScript à utiliser
executableArgsstring[][]Arguments à passer à l’exécutable
extraArgsRecord<string, string | null>{}Arguments supplémentaires
fallbackModelstringundefinedModèle à utiliser si le modèle principal échoue
forkSessionbooleanfalseLors de la reprise avec resume, créer une nouvelle session au lieu de continuer la session d’origine
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Rappels de crochet pour les événements
includePartialMessagesbooleanfalseInclure les événements de message partiel
maxThinkingTokensnumberundefinedNombre maximum de jetons pour le processus de réflexion
maxTurnsnumberundefinedNombre maximum de tours de conversation
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurations des serveurs MCP
modelstringDéfaut de la CLIModèle Claude à utiliser
pathToClaudeCodeExecutablestringDétection automatiqueChemin vers l’exécutable Claude Code
permissionModePermissionMode'default'Mode de permission pour la session
permissionPromptToolNamestringundefinedNom de l’outil MCP pour les invites de permission
pluginsSdkPluginConfig[][]Charger des plugins personnalisés à partir de chemins locaux. Voir Plugins pour plus de détails
resumestringundefinedID de session à reprendre
settingSourcesSettingSource[][] (pas de paramètres)Contrôler quels paramètres du système de fichiers charger. Lorsqu’omis, aucun paramètre n’est chargé. Remarque : Doit inclure 'project' pour charger les fichiers CLAUDE.md
stderr(data: string) => voidundefinedRappel pour la sortie stderr
strictMcpConfigbooleanfalseAppliquer une validation MCP stricte
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (invite vide)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 preset, ajoutez append pour étendre l’invite système avec des instructions supplémentaires

Query

Interface retournée par la fonction query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Méthodes

MéthodeDescription
interrupt()Interrompt la requête (disponible uniquement en mode d’entrée de diffusion)
setPermissionMode()Change le mode de permission (disponible uniquement en mode d’entrée de diffusion)

AgentDefinition

Configuration pour un sous-agent défini programmatiquement.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
ChampRequisDescription
descriptionOuiDescription en langage naturel de quand utiliser cet agent
toolsNonTableau des noms d’outils autorisés. S’il est omis, hérite de tous les outils
promptOuiL’invite système de l’agent
modelNonRemplacement du modèle pour cet agent. S’il est omis, utilise le modèle principal

SettingSource

Contrôle quelles sources de configuration basées sur le système de fichiers le SDK charge les paramètres.
type SettingSource = 'user' | 'project' | 'local';
ValeurDescriptionEmplacement
'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

Lorsque settingSources est omis ou undefined, le SDK ne charge pas les paramètres du système de fichiers. Cela fournit l’isolation pour les applications SDK.

Pourquoi utiliser settingSources ?

Charger tous les paramètres du système de fichiers (comportement hérité) :
// Charger tous les paramètres comme le SDK v0.0.x l'a fait
const result = query({
  prompt: "Analyze this code",
  options: {
    settingSources: ['user', 'project', 'local']  // Charger tous les paramètres
  }
});
Charger uniquement des sources de paramètres spécifiques :
// Charger uniquement les paramètres de projet, ignorer l'utilisateur et local
const result = query({
  prompt: "Run CI checks",
  options: {
    settingSources: ['project']  // Uniquement .claude/settings.json
  }
});
Environnements de test et CI :
// Assurer un comportement cohérent en CI en excluant les paramètres locaux
const result = query({
  prompt: "Run tests",
  options: {
    settingSources: ['project'],  // Uniquement les paramètres partagés par l'équipe
    permissionMode: 'bypassPermissions'
  }
});
Applications SDK uniquement :
// Définir tout programmatiquement (comportement par défaut)
// Pas de dépendances du système de fichiers - settingSources par défaut à []
const result = query({
  prompt: "Review this PR",
  options: {
    // settingSources: [] est le défaut, pas besoin de spécifier
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});
Chargement des instructions de projet CLAUDE.md :
// Charger les paramètres de projet pour inclure les fichiers CLAUDE.md
const result = query({
  prompt: "Add a new feature following project conventions",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Requis pour utiliser CLAUDE.md
    },
    settingSources: ['project'],  // Charge CLAUDE.md du répertoire de projet
    allowedTools: ['Read', 'Write', 'Edit']
  }
});

Précédence des paramètres

Lorsque plusieurs sources sont chargées, les paramètres sont fusionnés avec cette précédence (la plus élevée à 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 (comme agents, allowedTools) remplacent toujours les paramètres du système de fichiers.

PermissionMode

type PermissionMode =
  | 'default'           // Comportement de permission standard
  | 'acceptEdits'       // Accepter automatiquement les modifications de fichiers
  | 'bypassPermissions' // Contourner tous les contrôles de permission
  | 'plan'              // Mode de planification - pas d'exécution

CanUseTool

Type de fonction de permission personnalisée pour contrôler l’utilisation des outils.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Résultat d’une vérification de permission.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Configuration pour les serveurs MCP.
type McpServerConfig = 
  | McpStdioServerConfig
  | McpSSEServerConfig
  | McpHttpServerConfig
  | McpSdkServerConfigWithInstance;

McpStdioServerConfig

type McpStdioServerConfig = {
  type?: 'stdio';
  command: string;
  args?: string[];
  env?: Record<string, string>;
}

McpSSEServerConfig

type McpSSEServerConfig = {
  type: 'sse';
  url: string;
  headers?: Record<string, string>;
}

McpHttpServerConfig

type McpHttpServerConfig = {
  type: 'http';
  url: string;
  headers?: Record<string, string>;
}

McpSdkServerConfigWithInstance

type McpSdkServerConfigWithInstance = {
  type: 'sdk';
  name: string;
  instance: McpServer;
}

SdkPluginConfig

Configuration pour charger des plugins dans le SDK.
type SdkPluginConfig = {
  type: 'local';
  path: string;
}
ChampTypeDescription
type'local'Doit être 'local' (seuls les plugins locaux sont actuellement supportés)
pathstringChemin absolu ou relatif vers le répertoire du plugin
Exemple :
plugins: [
  { type: 'local', path: './my-plugin' },
  { type: 'local', path: '/absolute/path/to/plugin' }
]
Pour des informations complètes sur la création et l’utilisation de plugins, voir Plugins.

Types de messages

SDKMessage

Type union de tous les messages possibles retournés par la requête.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Message de réponse de l’assistant.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Du SDK Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessage

Message d’entrée utilisateur.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Du SDK Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Message utilisateur rejoué avec UUID requis.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Message de résultat final.
type SDKResultMessage = 
  | {
      type: 'result';
      subtype: 'success';
      uuid: UUID;
      session_id: string;
      duration_ms: number;
      duration_api_ms: number;
      is_error: boolean;
      num_turns: number;
      result: string;
      total_cost_usd: number;
      usage: NonNullableUsage;
      permission_denials: SDKPermissionDenial[];
    }
  | {
      type: 'result';
      subtype: 'error_max_turns' | 'error_during_execution';
      uuid: UUID;
      session_id: string;
      duration_ms: number;
      duration_api_ms: number;
      is_error: boolean;
      num_turns: number;
      total_cost_usd: number;
      usage: NonNullableUsage;
      permission_denials: SDKPermissionDenial[];
    }

SDKSystemMessage

Message d’initialisation du système.
type SDKSystemMessage = {
  type: 'system';
  subtype: 'init';
  uuid: UUID;
  session_id: string;
  apiKeySource: ApiKeySource;
  cwd: string;
  tools: string[];
  mcp_servers: {
    name: string;
    status: string;
  }[];
  model: string;
  permissionMode: PermissionMode;
  slash_commands: string[];
  output_style: string;
}

SDKPartialAssistantMessage

Message partiel de diffusion (uniquement lorsque includePartialMessages est true).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Du SDK Anthropic
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Message indiquant une limite de compaction de conversation.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Informations sur une utilisation d’outil refusée.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Types de crochet

HookEvent

Événements de crochet disponibles.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Type de fonction de rappel de crochet.
type HookCallback = (
  input: HookInput, // Union de tous les types d'entrée de crochet
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Configuration de crochet avec correspondant optionnel.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Type union de tous les types d’entrée de crochet.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Interface de base que tous les types d’entrée de crochet étendent.
type BaseHookInput = {
  session_id: string;
  transcript_path: string;
  cwd: string;
  permission_mode?: string;
}

PreToolUseHookInput

type PreToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PreToolUse';
  tool_name: string;
  tool_input: ToolInput;
}

PostToolUseHookInput

type PostToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PostToolUse';
  tool_name: string;
  tool_input: ToolInput;
  tool_response: ToolOutput;
}

NotificationHookInput

type NotificationHookInput = BaseHookInput & {
  hook_event_name: 'Notification';
  message: string;
  title?: string;
}

UserPromptSubmitHookInput

type UserPromptSubmitHookInput = BaseHookInput & {
  hook_event_name: 'UserPromptSubmit';
  prompt: string;
}

SessionStartHookInput

type SessionStartHookInput = BaseHookInput & {
  hook_event_name: 'SessionStart';
  source: 'startup' | 'resume' | 'clear' | 'compact';
}

SessionEndHookInput

type SessionEndHookInput = BaseHookInput & {
  hook_event_name: 'SessionEnd';
  reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}

StopHookInput

type StopHookInput = BaseHookInput & {
  hook_event_name: 'Stop';
  stop_hook_active: boolean;
}

SubagentStopHookInput

type SubagentStopHookInput = BaseHookInput & {
  hook_event_name: 'SubagentStop';
  stop_hook_active: boolean;
}

PreCompactHookInput

type PreCompactHookInput = BaseHookInput & {
  hook_event_name: 'PreCompact';
  trigger: 'manual' | 'auto';
  custom_instructions: string | null;
}

HookJSONOutput

Valeur de retour du crochet.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

AsyncHookJSONOutput

type AsyncHookJSONOutput = {
  async: true;
  asyncTimeout?: number;
}

SyncHookJSONOutput

type SyncHookJSONOutput = {
  continue?: boolean;
  suppressOutput?: boolean;
  stopReason?: string;
  decision?: 'approve' | 'block';
  systemMessage?: string;
  reason?: string;
  hookSpecificOutput?:
    | {
        hookEventName: 'PreToolUse';
        permissionDecision?: 'allow' | 'deny' | 'ask';
        permissionDecisionReason?: string;
      }
    | {
        hookEventName: 'UserPromptSubmit';
        additionalContext?: string;
      }
    | {
        hookEventName: 'SessionStart';
        additionalContext?: string;
      }
    | {
        hookEventName: 'PostToolUse';
        additionalContext?: string;
      };
}

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.

ToolInput

Remarque : Ceci est un type de documentation uniquement pour la clarté. Il représente l’union de tous les types d’entrée d’outil.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Nom de l’outil : Task
interface AgentInput {
  /**
   * Une description courte (3-5 mots) de la tâche
   */
  description: string;
  /**
   * La tâche que l'agent doit effectuer
   */
  prompt: string;
  /**
   * Le type d'agent spécialisé à utiliser pour cette tâche
   */
  subagent_type: string;
}
Lance un nouvel agent pour gérer les tâches complexes et multi-étapes de manière autonome.

Bash

Nom de l’outil : Bash
interface BashInput {
  /**
   * La commande à exécuter
   */
  command: string;
  /**
   * Délai d'expiration optionnel en millisecondes (max 600000)
   */
  timeout?: number;
  /**
   * Description claire et concise de ce que fait cette commande en 5-10 mots
   */
  description?: string;
  /**
   * Définir à true pour exécuter cette commande en arrière-plan
   */
  run_in_background?: boolean;
}
Exécute les commandes bash dans une session shell persistante avec délai d’expiration optionnel et exécution en arrière-plan.

BashOutput

Nom de l’outil : BashOutput
interface BashOutputInput {
  /**
   * L'ID du shell en arrière-plan pour récupérer la sortie
   */
  bash_id: string;
  /**
   * Regex optionnel pour filtrer les lignes de sortie
   */
  filter?: string;
}
Récupère la sortie d’un shell bash en arrière-plan en cours d’exécution ou terminé.

Edit

Nom de l’outil : Edit
interface FileEditInput {
  /**
   * Le chemin absolu du fichier à modifier
   */
  file_path: string;
  /**
   * Le texte à remplacer
   */
  old_string: string;
  /**
   * Le texte pour le remplacer (doit être différent de old_string)
   */
  new_string: string;
  /**
   * Remplacer toutes les occurrences de old_string (défaut false)
   */
  replace_all?: boolean;
}
Effectue des remplacements de chaînes exactes dans les fichiers.

Read

Nom de l’outil : Read
interface FileReadInput {
  /**
   * Le chemin absolu du fichier à lire
   */
  file_path: string;
  /**
   * Le numéro de ligne à partir duquel commencer la lecture
   */
  offset?: number;
  /**
   * Le nombre de lignes à lire
   */
  limit?: number;
}
Lit les fichiers du système de fichiers local, y compris le texte, les images, les PDF et les notebooks Jupyter.

Write

Nom de l’outil : Write
interface FileWriteInput {
  /**
   * Le chemin absolu du fichier à écrire
   */
  file_path: string;
  /**
   * Le contenu à écrire dans le fichier
   */
  content: string;
}
Écrit un fichier dans le système de fichiers local, en écrasant s’il existe.

Glob

Nom de l’outil : Glob
interface GlobInput {
  /**
   * Le motif glob pour correspondre aux fichiers
   */
  pattern: string;
  /**
   * Le répertoire à rechercher (par défaut cwd)
   */
  path?: string;
}
Correspondance de motif de fichier rapide qui fonctionne avec n’importe quelle taille de base de code.

Grep

Nom de l’outil : Grep
interface GrepInput {
  /**
   * Le motif d'expression régulière à rechercher
   */
  pattern: string;
  /**
   * Fichier ou répertoire à rechercher (par défaut cwd)
   */
  path?: string;
  /**
   * Motif glob pour filtrer les fichiers (par exemple "*.js")
   */
  glob?: string;
  /**
   * Type de fichier à rechercher (par exemple "js", "py", "rust")
   */
  type?: string;
  /**
   * Mode de sortie : "content", "files_with_matches", ou "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Recherche insensible à la casse
   */
  '-i'?: boolean;
  /**
   * Afficher les numéros de ligne (pour le mode contenu)
   */
  '-n'?: boolean;
  /**
   * Lignes à afficher avant chaque correspondance
   */
  '-B'?: number;
  /**
   * Lignes à afficher après chaque correspondance
   */
  '-A'?: number;
  /**
   * Lignes à afficher avant et après chaque correspondance
   */
  '-C'?: number;
  /**
   * Limiter la sortie aux N premières lignes/entrées
   */
  head_limit?: number;
  /**
   * Activer le mode multiligne
   */
  multiline?: boolean;
}
Outil de recherche puissant basé sur ripgrep avec support des expressions régulières.

KillBash

Nom de l’outil : KillBash
interface KillShellInput {
  /**
   * L'ID du shell en arrière-plan à terminer
   */
  shell_id: string;
}
Termine un shell bash en arrière-plan en cours d’exécution par son ID.

NotebookEdit

Nom de l’outil : NotebookEdit
interface NotebookEditInput {
  /**
   * Le chemin absolu du fichier notebook Jupyter
   */
  notebook_path: string;
  /**
   * L'ID de la cellule à modifier
   */
  cell_id?: string;
  /**
   * La nouvelle source pour la cellule
   */
  new_source: string;
  /**
   * Le type de la cellule (code ou markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Le type de modification (remplacer, insérer, supprimer)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Modifie les cellules dans les fichiers notebook Jupyter.

WebFetch

Nom de l’outil : WebFetch
interface WebFetchInput {
  /**
   * L'URL pour récupérer le contenu
   */
  url: string;
  /**
   * L'invite à exécuter sur le contenu récupéré
   */
  prompt: string;
}
Récupère le contenu d’une URL et le traite avec un modèle IA.

WebSearch

Nom de l’outil : WebSearch
interface WebSearchInput {
  /**
   * La requête de recherche à utiliser
   */
  query: string;
  /**
   * Inclure uniquement les résultats de ces domaines
   */
  allowed_domains?: string[];
  /**
   * Ne jamais inclure les résultats de ces domaines
   */
  blocked_domains?: string[];
}
Recherche le web et retourne les résultats formatés.

TodoWrite

Nom de l’outil : TodoWrite
interface TodoWriteInput {
  /**
   * La liste de tâches mise à jour
   */
  todos: Array<{
    /**
     * La description de la tâche
     */
    content: string;
    /**
     * L'état de la tâche
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Forme active de la description de la tâche
     */
    activeForm: string;
  }>;
}
Crée et gère une liste de tâches structurée pour suivre la progression.

ExitPlanMode

Nom de l’outil : ExitPlanMode
interface ExitPlanModeInput {
  /**
   * Le plan à exécuter par l'utilisateur pour approbation
   */
  plan: string;
}
Quitte le mode de planification et invite l’utilisateur à approuver le plan.

ListMcpResources

Nom de l’outil : ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Nom du serveur optionnel pour filtrer les ressources
   */
  server?: string;
}
Liste les ressources MCP disponibles des serveurs connectés.

ReadMcpResource

Nom de l’outil : ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Le nom du serveur MCP
   */
  server: string;
  /**
   * L'URI de la ressource à lire
   */
  uri: string;
}
Lit une ressource MCP spécifique d’un serveur.

Types de sortie d’outil

Documentation des schémas de sortie pour tous les outils Claude Code intégrés. Ces types représentent les données de réponse réelles retournées par chaque outil.

ToolOutput

Remarque : Ceci est un type de documentation uniquement pour la clarté. Il représente l’union de tous les types de sortie d’outil.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Nom de l’outil : Task
interface TaskOutput {
  /**
   * Message de résultat final du sous-agent
   */
  result: string;
  /**
   * Statistiques d'utilisation des jetons
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Coût total en USD
   */
  total_cost_usd?: number;
  /**
   * Durée d'exécution en millisecondes
   */
  duration_ms?: number;
}
Retourne le résultat final du sous-agent après avoir complété la tâche déléguée.

Bash

Nom de l’outil : Bash
interface BashOutput {
  /**
   * Sortie combinée stdout et stderr
   */
  output: string;
  /**
   * Code de sortie de la commande
   */
  exitCode: number;
  /**
   * Si la commande a été tuée en raison d'un délai d'expiration
   */
  killed?: boolean;
  /**
   * ID du shell pour les processus en arrière-plan
   */
  shellId?: string;
}
Retourne la sortie de la commande avec le statut de sortie. Les commandes en arrière-plan retournent immédiatement avec un shellId.

BashOutput

Nom de l’outil : BashOutput
interface BashOutputToolOutput {
  /**
   * Nouvelle sortie depuis la dernière vérification
   */
  output: string;
  /**
   * Statut actuel du shell
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Code de sortie (lorsque terminé)
   */
  exitCode?: number;
}
Retourne la sortie incrémentale des shells en arrière-plan.

Edit

Nom de l’outil : Edit
interface EditOutput {
  /**
   * Message de confirmation
   */
  message: string;
  /**
   * Nombre de remplacements effectués
   */
  replacements: number;
  /**
   * Chemin du fichier qui a été modifié
   */
  file_path: string;
}
Retourne la confirmation des modifications réussies avec le nombre de remplacements.

Read

Nom de l’outil : Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Contenu du fichier avec numéros de ligne
   */
  content: string;
  /**
   * Nombre total de lignes dans le fichier
   */
  total_lines: number;
  /**
   * Lignes réellement retournées
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Données d'image codées en base64
   */
  image: string;
  /**
   * Type MIME de l'image
   */
  mime_type: string;
  /**
   * Taille du fichier en octets
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Tableau des contenus de page
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Nombre total de pages
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Cellules du notebook Jupyter
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Métadonnées du notebook
   */
  metadata?: Record<string, any>;
}
Retourne le contenu du fichier dans le format approprié au type de fichier.

Write

Nom de l’outil : Write
interface WriteOutput {
  /**
   * Message de succès
   */
  message: string;
  /**
   * Nombre d'octets écrits
   */
  bytes_written: number;
  /**
   * Chemin du fichier qui a été écrit
   */
  file_path: string;
}
Retourne la confirmation après avoir écrit avec succès le fichier.

Glob

Nom de l’outil : Glob
interface GlobOutput {
  /**
   * Tableau des chemins de fichiers correspondants
   */
  matches: string[];
  /**
   * Nombre de correspondances trouvées
   */
  count: number;
  /**
   * Répertoire de recherche utilisé
   */
  search_path: string;
}
Retourne les chemins de fichiers correspondant au motif glob, triés par heure de modification.

Grep

Nom de l’outil : Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Lignes correspondantes avec contexte
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Nombre total de correspondances
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * Fichiers contenant des correspondances
   */
  files: string[];
  /**
   * Nombre de fichiers avec correspondances
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Nombre de correspondances par fichier
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Total des correspondances dans tous les fichiers
   */
  total: number;
}
Retourne les résultats de recherche dans le format spécifié par output_mode.

KillBash

Nom de l’outil : KillBash
interface KillBashOutput {
  /**
   * Message de succès
   */
  message: string;
  /**
   * ID du shell terminé
   */
  shell_id: string;
}
Retourne la confirmation après avoir terminé le shell en arrière-plan.

NotebookEdit

Nom de l’outil : NotebookEdit
interface NotebookEditOutput {
  /**
   * Message de succès
   */
  message: string;
  /**
   * Type de modification effectuée
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID de la cellule affectée
   */
  cell_id?: string;
  /**
   * Nombre total de cellules dans le notebook après modification
   */
  total_cells: number;
}
Retourne la confirmation après avoir modifié le notebook Jupyter.

WebFetch

Nom de l’outil : WebFetch
interface WebFetchOutput {
  /**
   * Réponse du modèle IA à l'invite
   */
  response: string;
  /**
   * URL qui a été récupérée
   */
  url: string;
  /**
   * URL finale après redirections
   */
  final_url?: string;
  /**
   * Code de statut HTTP
   */
  status_code?: number;
}
Retourne l’analyse de l’IA du contenu web récupéré.

WebSearch

Nom de l’outil : WebSearch
interface WebSearchOutput {
  /**
   * Résultats de recherche
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Métadonnées supplémentaires si disponibles
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Nombre total de résultats
   */
  total_results: number;
  /**
   * La requête qui a été recherchée
   */
  query: string;
}
Retourne les résultats de recherche formatés du web.

TodoWrite

Nom de l’outil : TodoWrite
interface TodoWriteOutput {
  /**
   * Message de succès
   */
  message: string;
  /**
   * Statistiques actuelles des tâches
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Retourne la confirmation avec les statistiques actuelles des tâches.

ExitPlanMode

Nom de l’outil : ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Message de confirmation
   */
  message: string;
  /**
   * Si l'utilisateur a approuvé le plan
   */
  approved?: boolean;
}
Retourne la confirmation après avoir quitté le mode de planification.

ListMcpResources

Nom de l’outil : ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Ressources disponibles
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Nombre total de ressources
   */
  total: number;
}
Retourne la liste des ressources MCP disponibles.

ReadMcpResource

Nom de l’outil : ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Contenu de la ressource
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Serveur qui a fourni la ressource
   */
  server: string;
}
Retourne le contenu de la ressource MCP demandée.

Types de permission

PermissionUpdate

Opérations pour mettre à jour les permissions.
type PermissionUpdate = 
  | {
      type: 'addRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'replaceRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'removeRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'setMode';
      mode: PermissionMode;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'addDirectories';
      directories: string[];
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'removeDirectories';
      directories: string[];
      destination: PermissionUpdateDestination;
    }

PermissionBehavior

type PermissionBehavior = 'allow' | 'deny' | 'ask';

PermissionUpdateDestination

type PermissionUpdateDestination = 
  | 'userSettings'     // Paramètres utilisateur globaux
  | 'projectSettings'  // Paramètres de projet par répertoire
  | 'localSettings'    // Paramètres locaux gitignorés
  | 'session'          // Session actuelle uniquement

PermissionRuleValue

type PermissionRuleValue = {
  toolName: string;
  ruleContent?: string;
}

Autres types

ApiKeySource

type ApiKeySource = 'user' | 'project' | 'org' | 'temporary';

ConfigScope

type ConfigScope = 'local' | 'user' | 'project';

NonNullableUsage

Une version de Usage avec tous les champs nullables rendus non-nullables.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Statistiques d’utilisation des jetons (depuis @anthropic-ai/sdk).
type Usage = {
  input_tokens: number | null;
  output_tokens: number | null;
  cache_creation_input_tokens?: number | null;
  cache_read_input_tokens?: number | null;
}

CallToolResult

Type de résultat d’outil MCP (depuis @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Les champs supplémentaires varient selon le type
  }>;
  isError?: boolean;
}

AbortError

Classe d’erreur personnalisée pour les opérations d’abandon.
class AbortError extends Error {}

Voir aussi