Loading...
    • Guide du développeur
    • Référence API
    • MCP
    • Ressources
    • Notes de version
    Search...
    ⌘K
    Premiers pas
    Introduction à ClaudeDémarrage rapide
    Modèles et tarification
    Aperçu des modèlesChoisir un modèleNouveautés dans Claude 4.6Guide de migrationDépréciation des modèlesTarification
    Créer avec Claude
    Aperçu des fonctionnalitésUtiliser l'API MessagesGérer les raisons d'arrêtMeilleures pratiques de prompting
    Gestion du contexte
    Fenêtres de contexteCompactionÉdition du contexte
    Capacités
    Mise en cache des promptsRéflexion étendueRéflexion adaptativeEffortStreaming de messagesTraitement par lotsCitationsSupport multilingueComptage des tokensEmbeddingsVisionSupport PDFAPI FilesRésultats de rechercheSorties structurées
    Outils
    AperçuComment implémenter l'utilisation d'outilsStreaming d'outils granulaireOutil BashOutil d'exécution de codeAppel d'outils programmatiqueOutil Computer useOutil Éditeur de texteOutil Web fetchOutil Web searchOutil MémoireOutil Tool search
    Compétences d'agent
    AperçuDémarrage rapideMeilleures pratiquesCompétences pour l'entrepriseUtiliser les compétences avec l'API
    SDK Agent
    AperçuDémarrage rapideSDK TypeScriptTypeScript V2 (aperçu)SDK PythonGuide de migration
    MCP dans l'API
    Connecteur MCPServeurs MCP distants
    Claude sur les plateformes tierces
    Amazon BedrockMicrosoft FoundryVertex AI
    Ingénierie des prompts
    AperçuGénérateur de promptsUtiliser les modèles de promptsAméliorateur de promptsÊtre clair et directUtiliser des exemples (prompting multi-coups)Laisser Claude réfléchir (CoT)Utiliser les balises XMLDonner un rôle à Claude (prompts système)Enchaîner les prompts complexesConseils pour le contexte longConseils pour la réflexion étendue
    Tester et évaluer
    Définir les critères de succèsDévelopper des cas de testUtiliser l'outil d'évaluationRéduire la latence
    Renforcer les garde-fous
    Réduire les hallucinationsAugmenter la cohérence des résultatsAtténuer les jailbreaksRefus en streamingRéduire les fuites de promptsGarder Claude dans le rôle
    Administration et surveillance
    Aperçu de l'API AdminRésidence des donnéesEspaces de travailAPI d'utilisation et de coûtsAPI Claude Code AnalyticsRétention zéro des données
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    SDK Agent

    Référence du SDK Agent - TypeScript

    Référence API complète du SDK Agent TypeScript, incluant toutes les fonctions, types et interfaces.

    Essayez la nouvelle interface V2 (aperçu) : Une interface simplifiée avec les modèles send() et receive() est maintenant disponible, ce qui facilite les conversations multi-tours. En savoir plus sur l'aperçu TypeScript V2

    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éTypePar dé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 les sous-agents par programmation
    allowDangerouslySkipPermissionsbooleanfalseActiver le contournement des permissions. Requis lors de l'utilisation de permissionMode: 'bypassPermissions'
    allowedToolsstring[]Tous les outilsListe des noms d'outils autorisés
    betasSdkBeta[][]Activer les fonctionnalités bêta (par exemple, ['context-1m-2025-08-07'])
    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
    enableFileCheckpointingbooleanfalseActiver le suivi des modifications de fichiers pour la rembobinage. Voir Sauvegarde de fichiers
    envDict<string>process.envVariables d'environnement
    executable'bun' | 'deno' | 'node'Auto-détectéRuntime 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, bifurquer vers un nouvel ID de 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 messages partiels
    maxBudgetUsdnumberundefinedBudget maximum en USD pour la requête
    maxThinkingTokensnumberundefinedJetons maximum pour le processus de réflexion
    maxTurnsnumberundefinedTours de conversation maximum
    mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurations du serveur MCP
    modelstringPar défaut de l'interface de ligne de commandeModèle Claude à utiliser
    outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedDéfinir le format de sortie pour les résultats de l'agent. Voir Sorties structurées pour plus de détails
    pathToClaudeCodeExecutablestringUtilise l'exécutable intégréChemin 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 les plugins personnalisés à partir de chemins locaux. Voir Plugins pour plus de détails
    resumestringundefinedID de session à reprendre
    resumeSessionAtstringundefinedReprendre la session à un UUID de message spécifique
    sandboxSandboxSettingsundefinedConfigurer le comportement du bac à sable par programmation. Voir Paramètres du bac à sable pour plus de détails
    settingSourcesSettingSource[][] (pas de paramètres)Contrôler quels paramètres basés sur le système de fichiers charger. Lorsqu'il est 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 la validation MCP stricte
    systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }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 étendre l'invite système avec des instructions supplémentaires
    toolsstring[] | { type: 'preset'; preset: 'claude_code' }undefinedConfiguration 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

    Query

    Interface retournée par la fonction query().

    interface Query extends AsyncGenerator<SDKMessage, void> {
      interrupt(): Promise<void>;
      rewindFiles(userMessageUuid: string): Promise<void>;
      setPermissionMode(mode: PermissionMode): Promise<void>;
      setModel(model?: string): Promise<void>;
      setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
      supportedCommands(): Promise<SlashCommand[]>;
      supportedModels(): Promise<ModelInfo[]>;
      mcpServerStatus(): Promise<McpServerStatus[]>;
      accountInfo(): Promise<AccountInfo>;
    }

    Méthodes

    MéthodeDescription
    interrupt()Interrompt la requête (disponible uniquement en mode d'entrée en diffusion)
    rewindFiles(userMessageUuid)Restaure les fichiers à leur état au message utilisateur spécifié. 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()Change les jetons de réflexion maximum (disponible uniquement en mode d'entrée en diffusion)
    supportedCommands()Retourne les commandes slash disponibles
    supportedModels()Retourne les modèles disponibles avec les informations d'affichage
    mcpServerStatus()Retourne l'état des serveurs MCP connectés
    accountInfo()Retourne les informations du compte

    AgentDefinition

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

    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ôlés par version).claude/settings.json
    'local'Paramètres de projet locaux (ignorés par git).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: "Analyser ce 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 les paramètres utilisateur et locaux
    const result = query({
      prompt: "Exécuter les vérifications CI",
      options: {
        settingSources: ['project']  // Uniquement .claude/settings.json
      }
    });

    Environnements de test et CI :

    // Assurer un comportement cohérent dans CI en excluant les paramètres locaux
    const result = query({
      prompt: "Exécuter les tests",
      options: {
        settingSources: ['project'],  // Uniquement les paramètres partagés par l'équipe
        permissionMode: 'bypassPermissions'
      }
    });

    Applications SDK uniquement :

    // Définir tout par programmation (comportement par défaut)
    // Pas de dépendances du système de fichiers - settingSources par défaut à []
    const result = query({
      prompt: "Examiner cette 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: "Ajouter une nouvelle fonctionnalité en suivant les conventions du projet",
      options: {
        systemPrompt: {
          type: 'preset',
          preset: 'claude_code'  // Requis pour utiliser CLAUDE.md
        },
        settingSources: ['project'],  // Charge CLAUDE.md du répertoire du 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 les 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 des 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;
          modelUsage: { [modelName: string]: ModelUsage };
          permission_denials: SDKPermissionDenial[];
          structured_output?: unknown;
        }
      | {
          type: 'result';
          subtype:
            | 'error_max_turns'
            | 'error_during_execution'
            | 'error_max_budget_usd'
            | 'error_max_structured_output_retries';
          uuid: UUID;
          session_id: string;
          duration_ms: number;
          duration_api_ms: number;
          is_error: boolean;
          num_turns: number;
          total_cost_usd: number;
          usage: NonNullableUsage;
          modelUsage: { [modelName: string]: ModelUsage };
          permission_denials: SDKPermissionDenial[];
          errors: string[];
        }

    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 en 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

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

    HookEvent

    Événements de crochet disponibles.

    type HookEvent =
      | 'PreToolUse'
      | 'PostToolUse'
      | 'PostToolUseFailure'
      | 'Notification'
      | 'UserPromptSubmit'
      | 'SessionStart'
      | 'SessionEnd'
      | 'Stop'
      | 'SubagentStart'
      | 'SubagentStop'
      | 'PreCompact'
      | 'PermissionRequest';

    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
      | PostToolUseFailureHookInput
      | NotificationHookInput
      | UserPromptSubmitHookInput
      | SessionStartHookInput
      | SessionEndHookInput
      | StopHookInput
      | SubagentStartHookInput
      | SubagentStopHookInput
      | PreCompactHookInput
      | PermissionRequestHookInput;

    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: unknown;
    }

    PostToolUseHookInput

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

    PostToolUseFailureHookInput

    type PostToolUseFailureHookInput = BaseHookInput & {
      hook_event_name: 'PostToolUseFailure';
      tool_name: string;
      tool_input: unknown;
      error: string;
      is_interrupt?: boolean;
    }

    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: ExitReason;  // Chaîne du tableau EXIT_REASONS
    }

    StopHookInput

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

    SubagentStartHookInput

    type SubagentStartHookInput = BaseHookInput & {
      hook_event_name: 'SubagentStart';
      agent_id: string;
      agent_type: string;
    }

    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;
    }

    PermissionRequestHookInput

    type PermissionRequestHookInput = BaseHookInput & {
      hook_event_name: 'PermissionRequest';
      tool_name: string;
      tool_input: unknown;
      permission_suggestions?: PermissionUpdate[];
    }

    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;
            updatedInput?: Record<string, unknown>;
          }
        | {
            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
      | AskUserQuestionInput
      | 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.

    AskUserQuestion

    Nom de l'outil : AskUserQuestion

    interface AskUserQuestionInput {
      /**
       * Questions à poser à l'utilisateur (1-4 questions)
       */
      questions: Array<{
        /**
         * La question complète à poser à l'utilisateur. Doit être claire, spécifique,
         * et se terminer par un point d'interrogation.
         */
        question: string;
        /**
         * Étiquette très courte affichée sous forme de puce/tag (max 12 caractères).
         * Exemples : "Méthode d'authentification", "Bibliothèque", "Approche"
         */
        header: string;
        /**
         * Les choix disponibles (2-4 options). Une option "Autre" est
         * automatiquement fournie.
         */
        options: Array<{
          /**
           * Texte d'affichage pour cette option (1-5 mots)
           */
          label: string;
          /**
           * Explication de ce que signifie cette option
           */
          description: string;
        }>;
        /**
         * Définir à true pour permettre les sélections multiples
         */
        multiSelect: boolean;
      }>;
      /**
       * Réponses utilisateur remplies par le système de permission.
       * Mappe le texte de la question aux étiquettes d'option sélectionnées.
       * Les réponses multi-sélection sont séparées par des virgules.
       */
      answers?: Record<string, string>;
    }

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

    Bash

    Nom de l'outil : Bash

    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 à partir duquel récupérer la sortie
       */
      bash_id: string;
      /**
       * Expression régulière optionnelle 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 (par défaut false)
       */
      replace_all?: boolean;
    }

    Effectue les 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 modèle glob pour faire correspondre les fichiers
       */
      pattern: string;
      /**
       * Le répertoire à rechercher (par défaut cwd)
       */
      path?: string;
    }

    Correspondance de modèle de fichier rapide qui fonctionne avec n'importe quelle taille de base de code.

    Grep

    Nom de l'outil : Grep

    interface GrepInput {
      /**
       * Le modèle d'expression régulière à rechercher
       */
      pattern: string;
      /**
       * Fichier ou répertoire à rechercher (par défaut cwd)
       */
      path?: string;
      /**
       * Modèle 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 à arrêter
       */
      shell_id: string;
    }

    Arrête 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 à partir de laquelle 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 sur le web et retourne les résultats formatés.

    TodoWrite

    Nom de l'outil : TodoWrite

    interface TodoWriteInput {
      /**
       * La liste des 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 par
       */
      server?: string;
    }

    Liste les ressources MCP disponibles à partir 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 à partir 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
      | AskUserQuestionOutput
      | 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.

    AskUserQuestion

    Nom de l'outil : AskUserQuestion

    interface AskUserQuestionOutput {
      /**
       * Les questions qui ont été posées
       */
      questions: Array<{
        question: string;
        header: string;
        options: Array<{
          label: string;
          description: string;
        }>;
        multiSelect: boolean;
      }>;
      /**
       * Les réponses fournies par l'utilisateur.
       * Mappe le texte de la question à la chaîne de réponse.
       * Les réponses multi-sélection sont séparées par des virgules.
       */
      answers: Record<string, string>;
    }

    Retourne les questions posées et les réponses de l'utilisateur.

    Bash

    Nom de l'outil : Bash

    interface BashOutput {
      /**
       * Sortie combinée de stdout et stderr
       */
      output: string;
      /**
       * Code de sortie de la commande
       */
      exitCode: number;
      /**
       * Si la commande a été arrêté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 l'état 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;
      /**
       * État 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.

    Lire

    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 de 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 un format approprié au type de fichier.

    Écrire

    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 une confirmation après avoir écrit le fichier avec succès.

    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 date 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 {
      /**
       * Comptages 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 une 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 une confirmation après modification du notebook Jupyter.

    WebFetch

    Nom de l'outil : WebFetch

    interface WebFetchOutput {
      /**
       * Réponse du modèle IA au prompt
       */
      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 une 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 une confirmation après la sortie du mode plan.

    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 ignorés par Git
      | 'session'          // Session actuelle uniquement

    PermissionRuleValue

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

    Autres types

    ApiKeySource

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

    SdkBeta

    Les fonctionnalités bêta disponibles qui peuvent être activées via l'option betas. Consultez En-têtes bêta pour plus d'informations.

    type SdkBeta = 'context-1m-2025-08-07';
    ValeurDescriptionModèles compatibles
    'context-1m-2025-08-07'Active la fenêtre de contexte de 1 million de jetonsClaude Opus 4.6, Claude Sonnet 4.5, Claude Sonnet 4

    SlashCommand

    Informations sur une commande slash disponible.

    type SlashCommand = {
      name: string;
      description: string;
      argumentHint: string;
    }

    ModelInfo

    Informations sur un modèle disponible.

    type ModelInfo = {
      value: string;
      displayName: string;
      description: string;
    }

    McpServerStatus

    Statut d'un serveur MCP connecté.

    type McpServerStatus = {
      name: string;
      status: 'connected' | 'failed' | 'needs-auth' | 'pending';
      serverInfo?: {
        name: string;
        version: string;
      };
    }

    AccountInfo

    Informations de compte pour l'utilisateur authentifié.

    type AccountInfo = {
      email?: string;
      organization?: string;
      subscriptionType?: string;
      tokenSource?: string;
      apiKeySource?: string;
    }

    ModelUsage

    Statistiques d'utilisation par modèle retournées dans les messages de résultat.

    type ModelUsage = {
      inputTokens: number;
      outputTokens: number;
      cacheReadInputTokens: number;
      cacheCreationInputTokens: number;
      webSearchRequests: number;
      costUSD: number;
      contextWindow: number;
    }

    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 (de @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 (de @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 {}

    Configuration du bac à sable

    SandboxSettings

    Configuration du comportement du bac à sable. Utilisez ceci pour activer l'isolation des commandes et configurer les restrictions réseau par programmation.

    type SandboxSettings = {
      enabled?: boolean;
      autoAllowBashIfSandboxed?: boolean;
      excludedCommands?: string[];
      allowUnsandboxedCommands?: boolean;
      network?: NetworkSandboxSettings;
      ignoreViolations?: SandboxIgnoreViolations;
      enableWeakerNestedSandbox?: boolean;
    }
    PropriétéTypePar défautDescription
    enabledbooleanfalseActiver le mode bac à sable pour l'exécution des commandes
    autoAllowBashIfSandboxedbooleanfalseApprouver automatiquement les commandes bash lorsque le bac à sable est activé
    excludedCommandsstring[][]Commandes qui contournent toujours les restrictions du bac à sable (par exemple, ['docker']). Celles-ci s'exécutent sans isolation automatiquement sans intervention du modèle
    allowUnsandboxedCommandsbooleanfalsePermettre au modèle de demander l'exécution de commandes en dehors du bac à sable. Lorsque true, le modèle peut définir dangerouslyDisableSandbox dans l'entrée de l'outil, ce qui revient au système de permissions
    networkNetworkSandboxSettingsundefinedConfiguration du bac à sable spécifique au réseau
    ignoreViolationsSandboxIgnoreViolationsundefinedConfigurer les violations du bac à sable à ignorer
    enableWeakerNestedSandboxbooleanfalseActiver un bac à sable imbriqué plus faible pour la compatibilité

    Les restrictions d'accès au système de fichiers et au réseau ne sont PAS configurées via les paramètres du bac à sable. Au lieu de cela, elles sont dérivées des règles de permission :

    • Restrictions de lecture du système de fichiers : Règles de refus de lecture
    • Restrictions d'écriture du système de fichiers : Règles d'autorisation/refus d'édition
    • Restrictions réseau : Règles d'autorisation/refus de WebFetch

    Utilisez les paramètres du bac à sable pour l'isolation des commandes, et les règles de permission pour le contrôle d'accès au système de fichiers et au réseau.

    Exemple d'utilisation

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Build and test my project",
      options: {
        sandbox: {
          enabled: true,
          autoAllowBashIfSandboxed: true,
          network: {
            allowLocalBinding: true
          }
        }
      }
    });

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

    NetworkSandboxSettings

    Configuration spécifique au réseau pour le mode bac à sable.

    type NetworkSandboxSettings = {
      allowLocalBinding?: boolean;
      allowUnixSockets?: string[];
      allowAllUnixSockets?: boolean;
      httpProxyPort?: number;
      socksProxyPort?: number;
    }
    PropriétéTypePar défautDescription
    allowLocalBindingbooleanfalsePermettre aux processus de se lier aux ports locaux (par exemple, pour les serveurs de développement)
    allowUnixSocketsstring[][]Chemins de sockets Unix auxquels les processus peuvent accéder (par exemple, socket Docker)
    allowAllUnixSocketsbooleanfalsePermettre l'accès à tous les sockets Unix
    httpProxyPortnumberundefinedPort du proxy HTTP pour les requêtes réseau
    socksProxyPortnumberundefinedPort du proxy SOCKS pour les requêtes réseau

    SandboxIgnoreViolations

    Configuration pour ignorer les violations spécifiques du bac à sable.

    type SandboxIgnoreViolations = {
      file?: string[];
      network?: string[];
    }
    PropriétéTypePar défautDescription
    filestring[][]Motifs de chemin de fichier pour lesquels ignorer les violations
    networkstring[][]Motifs réseau pour lesquels ignorer les violations

    Secours du système de permissions pour les commandes sans isolation

    Lorsque allowUnsandboxedCommands est activé, le modèle peut demander l'exécution de commandes en dehors du bac à sable 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 sera 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 bac à sable automatiquement (par exemple, ['docker']). Le modèle n'a aucun contrôle sur cela.
    • allowUnsandboxedCommands : Permet au modèle de décider à l'exécution s'il faut demander l'exécution sans isolation en définissant dangerouslyDisableSandbox: true dans l'entrée de l'outil.
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Deploy my application",
      options: {
        sandbox: {
          enabled: true,
          allowUnsandboxedCommands: true  // Le modèle peut demander l'exécution sans isolation
        },
        permissionMode: "default",
        canUseTool: async (tool, input) => {
          // Vérifier si le modèle demande de contourner le bac à sable
          if (tool === "Bash" && input.dangerouslyDisableSandbox) {
            // Le modèle veut exécuter cette commande en dehors du bac à sable
            console.log(`Unsandboxed command requested: ${input.command}`);
    
            // Retourner true pour autoriser, false pour refuser
            return isCommandAuthorized(input.command);
          }
          return true;
        }
      }
    });

    Ce motif vous permet de :

    • Auditer les demandes du modèle : Enregistrer quand le modèle demande l'exécution sans isolation
    • Implémenter des listes blanches : Permettre uniquement à des commandes spécifiques de s'exécuter sans isolation
    • Ajouter des flux d'approbation : Exiger une autorisation explicite pour les opérations privilégiées

    Les commandes s'exécutant avec dangerouslyDisableSandbox: true ont un accès complet au système. Assurez-vous que votre gestionnaire canUseTool valide ces demandes avec soin.

    Si permissionMode est défini sur bypassPermissions et allowUnsandboxedCommands est activé, le modèle peut exécuter de manière autonome des commandes en dehors du bac à sable sans aucune invite d'approbation. Cette combinaison permet effectivement au modèle de s'échapper de l'isolation du bac à sable silencieusement.

    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

    Was this page helpful?

    • Installation
    • Fonctions
    • query()
    • tool()
    • createSdkMcpServer()
    • Types
    • Options
    • Query
    • AgentDefinition
    • SettingSource
    • PermissionMode
    • CanUseTool
    • PermissionResult
    • McpServerConfig
    • SdkPluginConfig
    • Types de messages
    • SDKMessage
    • SDKAssistantMessage
    • SDKUserMessage
    • SDKUserMessageReplay
    • SDKResultMessage
    • SDKSystemMessage
    • SDKPartialAssistantMessage
    • SDKCompactBoundaryMessage
    • SDKPermissionDenial
    • Types de crochet
    • HookEvent
    • HookCallback
    • HookCallbackMatcher
    • HookInput
    • BaseHookInput
    • HookJSONOutput
    • Types d'entrée d'outil
    • ToolInput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Types de sortie d'outil
    • ToolOutput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Lire
    • Écrire
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Types de permission
    • PermissionUpdate
    • PermissionBehavior
    • PermissionUpdateDestination
    • PermissionRuleValue
    • Autres types
    • ApiKeySource
    • SdkBeta
    • SlashCommand
    • ModelInfo
    • McpServerStatus
    • AccountInfo
    • ModelUsage
    • ConfigScope
    • NonNullableUsage
    • Usage
    • CallToolResult
    • AbortError
    • Configuration du bac à sable
    • SandboxSettings
    • NetworkSandboxSettings
    • SandboxIgnoreViolations
    • Secours du système de permissions pour les commandes sans isolation
    • Voir aussi