Loading...
    • Guida per sviluppatori
    • Riferimento API
    • MCP
    • Risorse
    • Note sulla versione
    Search...
    ⌘K
    Primi passi
    Introduzione a ClaudeAvvio rapido
    Modelli e prezzi
    Panoramica dei modelliScelta di un modelloNovità in Claude 4.5Migrazione a Claude 4.5Deprecazione dei modelliPrezzi
    Crea con Claude
    Panoramica delle funzioniUtilizzo dell'API MessagesFinestre di contestoBest practice per i prompt
    Capacità
    Prompt cachingModifica del contestoExtended thinkingSforzoStreaming dei messaggiElaborazione batchCitazioniSupporto multilingueConteggio dei tokenEmbeddingsVisioneSupporto PDFAPI FilesRisultati di ricercaOutput strutturati
    Strumenti
    PanoramicaCome implementare l'uso degli strumentiStreaming granulare degli strumentiStrumento BashStrumento di esecuzione del codiceChiamata programmatica degli strumentiStrumento Computer useStrumento Editor di testoStrumento Web fetchStrumento Web searchStrumento MemoryStrumento Tool search
    Agent Skills
    PanoramicaAvvio rapidoBest practiceUtilizzo di Skills con l'API
    Agent SDK
    PanoramicaAvvio rapidoTypeScript SDKTypeScript V2 (anteprima)Python SDKGuida alla migrazione
    MCP nell'API
    Connettore MCPServer MCP remoti
    Claude su piattaforme di terze parti
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt engineering
    PanoramicaGeneratore di promptUsa modelli di promptMiglioratore di promptSii chiaro e direttoUsa esempi (multishot prompting)Lascia pensare Claude (CoT)Usa tag XMLDai a Claude un ruolo (prompt di sistema)Precompila la risposta di ClaudeConcatena prompt complessiSuggerimenti per il contesto lungoSuggerimenti per extended thinking
    Test e valutazione
    Definisci criteri di successoSviluppa casi di testUtilizzo dello strumento di valutazioneRiduzione della latenza
    Rafforza i guardrail
    Riduci le allucinazioniAumenta la coerenza dell'outputMitigare i jailbreakStreaming dei rifiutiRiduci la perdita di promptMantieni Claude nel personaggio
    Amministrazione e monitoraggio
    Panoramica dell'Admin APIAPI di utilizzo e costiAPI Claude Code Analytics
    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
    Agent SDK

    Agent SDK reference - TypeScript

    Riferimento API completo per l'Agent SDK TypeScript, incluse tutte le funzioni, i tipi e le interfacce.

    Prova la nuova interfaccia V2 (anteprima): Un'interfaccia semplificata con pattern send() e receive() è ora disponibile, rendendo le conversazioni multi-turno più facili. Scopri di più

    Installazione

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

    Funzioni

    query()

    La funzione principale per interagire con Claude Code. Crea un generatore asincrono che trasmette i messaggi man mano che arrivano.

    function query({
      prompt,
      options
    }: {
      prompt: string | AsyncIterable<SDKUserMessage>;
      options?: Options;
    }): Query
    • Installazione
    • Funzioni
    • query()
    • tool()
    • createSdkMcpServer()
    • Tipi
    • Options
    • Query
    • AgentDefinition
    • SettingSource
    • PermissionMode
    • CanUseTool
    • PermissionResult
    • McpServerConfig
    • SdkPluginConfig
    • Tipi di messaggio
    • SDKMessage
    • SDKAssistantMessage
    • SDKUserMessage
    • SDKUserMessageReplay
    • SDKResultMessage
    • SDKSystemMessage
    • SDKPartialAssistantMessage
    • SDKCompactBoundaryMessage
    • SDKPermissionDenial
    • Tipi di hook
    • HookEvent
    • HookCallback
    • HookCallbackMatcher
    • HookInput
    • BaseHookInput
    • HookJSONOutput
    • Tipi di input dello strumento
    • ToolInput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Tipi di output dello strumento
    • ToolOutput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Leggi
    • Scrivi
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Tipi di Permesso
    • PermissionUpdate
    • PermissionBehavior
    • PermissionUpdateDestination
    • PermissionRuleValue
    • Altri Tipi
    • ApiKeySource
    • SdkBeta
    • SlashCommand
    • ModelInfo
    • McpServerStatus
    • AccountInfo
    • ModelUsage
    • ConfigScope
    • NonNullableUsage
    • Usage
    • CallToolResult
    • AbortError
    • Configurazione della Sandbox
    • SandboxSettings
    • NetworkSandboxSettings
    • SandboxIgnoreViolations
    • Fallback dei Permessi per Comandi Non Sandboxati
    • Vedi anche

    Parametri

    ParametroTipoDescrizione
    promptstring | AsyncIterable<SDKUserMessage>Il prompt di input come stringa o iterabile asincrono per la modalità streaming
    optionsOptionsOggetto di configurazione facoltativo (vedi il tipo Options di seguito)

    Restituisce

    Restituisce un oggetto Query che estende AsyncGenerator<SDKMessage, void> con metodi aggiuntivi.

    tool()

    Crea una definizione di strumento MCP type-safe per l'uso con i server MCP dell'SDK.

    function tool<Schema extends ZodRawShape>(
      name: string,
      description: string,
      inputSchema: Schema,
      handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
    ): SdkMcpToolDefinition<Schema>

    Parametri

    ParametroTipoDescrizione
    namestringIl nome dello strumento
    descriptionstringUna descrizione di cosa fa lo strumento
    inputSchemaSchema extends ZodRawShapeSchema Zod che definisce i parametri di input dello strumento
    handler(args, extra) => Promise<CallToolResult>Funzione asincrona che esegue la logica dello strumento

    createSdkMcpServer()

    Crea un'istanza di server MCP che viene eseguita nello stesso processo della tua applicazione.

    function createSdkMcpServer(options: {
      name: string;
      version?: string;
      tools?: Array<SdkMcpToolDefinition<any>>;
    }): McpSdkServerConfigWithInstance

    Parametri

    ParametroTipoDescrizione
    options.namestringIl nome del server MCP
    options.versionstringStringa di versione facoltativa
    options.toolsArray<SdkMcpToolDefinition>Array di definizioni di strumenti creati con tool()

    Tipi

    Options

    Oggetto di configurazione per la funzione query().

    ProprietàTipoPredefinitoDescrizione
    abortControllerAbortControllernew AbortController()Controller per annullare le operazioni
    additionalDirectoriesstring[][]Directory aggiuntive a cui Claude può accedere
    agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedDefinisci i subagenti a livello di programmazione
    allowDangerouslySkipPermissionsbooleanfalseAbilita il bypass dei permessi. Richiesto quando si usa permissionMode: 'bypassPermissions'
    allowedToolsstring[]Tutti gli strumentiElenco dei nomi degli strumenti consentiti
    betasSdkBeta[][]Abilita le funzioni beta (ad es. ['context-1m-2025-08-07'])
    canUseToolCanUseToolundefinedFunzione di permesso personalizzata per l'uso dello strumento
    continuebooleanfalseContinua la conversazione più recente
    cwdstringprocess.cwd()Directory di lavoro corrente
    disallowedToolsstring[][]Elenco dei nomi degli strumenti non consentiti
    enableFileCheckpointingbooleanfalseAbilita il tracciamento dei cambiamenti di file per il riavvolgimento. Vedi File checkpointing
    envDict<string>process.envVariabili di ambiente
    executable'bun' | 'deno' | 'node'Rilevamento automaticoRuntime JavaScript da utilizzare
    executableArgsstring[][]Argomenti da passare all'eseguibile
    extraArgsRecord<string, string | null>{}Argomenti aggiuntivi
    fallbackModelstringundefinedModello da utilizzare se il primario fallisce
    forkSessionbooleanfalseQuando si riprende con resume, esegui il fork a un nuovo ID di sessione invece di continuare la sessione originale
    hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Callback hook per gli eventi
    includePartialMessagesbooleanfalseIncludi gli eventi di messaggi parziali
    maxBudgetUsdnumberundefinedBudget massimo in USD per la query
    maxThinkingTokensnumberundefinedToken massimi per il processo di pensiero
    maxTurnsnumberundefinedTurni di conversazione massimi
    mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Configurazioni del server MCP
    modelstringPredefinito da CLIModello Claude da utilizzare
    outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedDefinisci il formato di output per i risultati dell'agente. Vedi Output strutturati per i dettagli
    pathToClaudeCodeExecutablestringUsa l'eseguibile integratoPercorso all'eseguibile Claude Code
    permissionModePermissionMode'default'Modalità di permesso per la sessione
    permissionPromptToolNamestringundefinedNome dello strumento MCP per i prompt di permesso
    pluginsSdkPluginConfig[][]Carica plugin personalizzati da percorsi locali. Vedi Plugin per i dettagli
    resumestringundefinedID della sessione da riprendere
    resumeSessionAtstringundefinedRiprendi la sessione a un UUID di messaggio specifico
    sandboxSandboxSettingsundefinedConfigura il comportamento della sandbox a livello di programmazione. Vedi Impostazioni sandbox per i dettagli
    settingSourcesSettingSource[][] (nessuna impostazione)Controlla quali impostazioni basate su filesystem caricare. Se omesso, nessuna impostazione viene caricata. Nota: Deve includere 'project' per caricare i file CLAUDE.md
    stderr(data: string) => voidundefinedCallback per l'output stderr
    strictMcpConfigbooleanfalseApplica la convalida MCP rigorosa
    systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (prompt vuoto)Configurazione del prompt di sistema. Passa una stringa per un prompt personalizzato, o { type: 'preset', preset: 'claude_code' } per usare il prompt di sistema di Claude Code. Quando si usa la forma dell'oggetto preset, aggiungi append per estendere il prompt di sistema con istruzioni aggiuntive
    toolsstring[] | { type: 'preset'; preset: 'claude_code' }undefinedConfigurazione dello strumento. Passa un array di nomi di strumenti o usa il preset per ottenere gli strumenti predefiniti di Claude Code

    Query

    Interfaccia restituita dalla funzione 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>;
    }

    Metodi

    MetodoDescrizione
    interrupt()Interrompe la query (disponibile solo in modalità input streaming)
    rewindFiles(userMessageUuid)Ripristina i file al loro stato al messaggio utente specificato. Richiede enableFileCheckpointing: true. Vedi File checkpointing
    setPermissionMode()Cambia la modalità di permesso (disponibile solo in modalità input streaming)
    setModel()Cambia il modello (disponibile solo in modalità input streaming)
    setMaxThinkingTokens()Cambia i token di pensiero massimi (disponibile solo in modalità input streaming)
    supportedCommands()Restituisce i comandi slash disponibili
    supportedModels()Restituisce i modelli disponibili con informazioni di visualizzazione
    mcpServerStatus()Restituisce lo stato dei server MCP connessi
    accountInfo()Restituisce le informazioni dell'account

    AgentDefinition

    Configurazione per un subagente definito a livello di programmazione.

    type AgentDefinition = {
      description: string;
      tools?: string[];
      prompt: string;
      model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
    }
    CampoObbligatorioDescrizione
    descriptionSìDescrizione in linguaggio naturale di quando usare questo agente
    toolsNoArray di nomi di strumenti consentiti. Se omesso, eredita tutti gli strumenti
    promptSìIl prompt di sistema dell'agente
    modelNoOverride del modello per questo agente. Se omesso, usa il modello principale

    SettingSource

    Controlla quali fonti di configurazione basate su filesystem l'SDK carica le impostazioni da.

    type SettingSource = 'user' | 'project' | 'local';
    ValoreDescrizionePosizione
    'user'Impostazioni globali dell'utente~/.claude/settings.json
    'project'Impostazioni di progetto condivise (controllate dalla versione).claude/settings.json
    'local'Impostazioni di progetto locali (gitignorate).claude/settings.local.json

    Comportamento predefinito

    Quando settingSources è omesso o undefined, l'SDK non carica alcuna impostazione del filesystem. Questo fornisce isolamento per le applicazioni SDK.

    Perché usare settingSources?

    Carica tutte le impostazioni del filesystem (comportamento legacy):

    // Carica tutte le impostazioni come faceva l'SDK v0.0.x
    const result = query({
      prompt: "Analizza questo codice",
      options: {
        settingSources: ['user', 'project', 'local']  // Carica tutte le impostazioni
      }
    });

    Carica solo fonti di impostazioni specifiche:

    // Carica solo le impostazioni di progetto, ignora quelle utente e locali
    const result = query({
      prompt: "Esegui i controlli CI",
      options: {
        settingSources: ['project']  // Solo .claude/settings.json
      }
    });

    Ambienti di test e CI:

    // Assicura un comportamento coerente in CI escludendo le impostazioni locali
    const result = query({
      prompt: "Esegui i test",
      options: {
        settingSources: ['project'],  // Solo impostazioni condivise dal team
        permissionMode: 'bypassPermissions'
      }
    });

    Applicazioni solo SDK:

    // Definisci tutto a livello di programmazione (comportamento predefinito)
    // Nessuna dipendenza dal filesystem - settingSources predefinito è []
    const result = query({
      prompt: "Rivedi questo PR",
      options: {
        // settingSources: [] è il predefinito, non è necessario specificare
        agents: { /* ... */ },
        mcpServers: { /* ... */ },
        allowedTools: ['Read', 'Grep', 'Glob']
      }
    });

    Caricamento delle istruzioni di progetto CLAUDE.md:

    // Carica le impostazioni di progetto per includere i file CLAUDE.md
    const result = query({
      prompt: "Aggiungi una nuova funzione seguendo le convenzioni del progetto",
      options: {
        systemPrompt: {
          type: 'preset',
          preset: 'claude_code'  // Richiesto per usare CLAUDE.md
        },
        settingSources: ['project'],  // Carica CLAUDE.md dalla directory del progetto
        allowedTools: ['Read', 'Write', 'Edit']
      }
    });

    Precedenza delle impostazioni

    Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (da più alta a più bassa):

    1. Impostazioni locali (.claude/settings.local.json)
    2. Impostazioni di progetto (.claude/settings.json)
    3. Impostazioni utente (~/.claude/settings.json)

    Le opzioni programmatiche (come agents, allowedTools) sovrascrivono sempre le impostazioni del filesystem.

    PermissionMode

    type PermissionMode =
      | 'default'           // Comportamento di permesso standard
      | 'acceptEdits'       // Auto-accetta le modifiche ai file
      | 'bypassPermissions' // Bypass di tutti i controlli di permesso
      | 'plan'              // Modalità di pianificazione - nessuna esecuzione

    CanUseTool

    Tipo di funzione di permesso personalizzato per controllare l'uso dello strumento.

    type CanUseTool = (
      toolName: string,
      input: ToolInput,
      options: {
        signal: AbortSignal;
        suggestions?: PermissionUpdate[];
      }
    ) => Promise<PermissionResult>;

    PermissionResult

    Risultato di un controllo di permesso.

    type PermissionResult = 
      | {
          behavior: 'allow';
          updatedInput: ToolInput;
          updatedPermissions?: PermissionUpdate[];
        }
      | {
          behavior: 'deny';
          message: string;
          interrupt?: boolean;
        }

    McpServerConfig

    Configurazione per i server 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

    Configurazione per il caricamento dei plugin nell'SDK.

    type SdkPluginConfig = {
      type: 'local';
      path: string;
    }
    CampoTipoDescrizione
    type'local'Deve essere 'local' (attualmente sono supportati solo i plugin locali)
    pathstringPercorso assoluto o relativo alla directory del plugin

    Esempio:

    plugins: [
      { type: 'local', path: './my-plugin' },
      { type: 'local', path: '/absolute/path/to/plugin' }
    ]

    Per informazioni complete sulla creazione e l'uso dei plugin, vedi Plugin.

    Tipi di messaggio

    SDKMessage

    Tipo di unione di tutti i possibili messaggi restituiti dalla query.

    type SDKMessage = 
      | SDKAssistantMessage
      | SDKUserMessage
      | SDKUserMessageReplay
      | SDKResultMessage
      | SDKSystemMessage
      | SDKPartialAssistantMessage
      | SDKCompactBoundaryMessage;

    SDKAssistantMessage

    Messaggio di risposta dell'assistente.

    type SDKAssistantMessage = {
      type: 'assistant';
      uuid: UUID;
      session_id: string;
      message: APIAssistantMessage; // Da Anthropic SDK
      parent_tool_use_id: string | null;
    }

    SDKUserMessage

    Messaggio di input dell'utente.

    type SDKUserMessage = {
      type: 'user';
      uuid?: UUID;
      session_id: string;
      message: APIUserMessage; // Da Anthropic SDK
      parent_tool_use_id: string | null;
    }

    SDKUserMessageReplay

    Messaggio utente riprodotto con UUID richiesto.

    type SDKUserMessageReplay = {
      type: 'user';
      uuid: UUID;
      session_id: string;
      message: APIUserMessage;
      parent_tool_use_id: string | null;
    }

    SDKResultMessage

    Messaggio di risultato finale.

    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

    Messaggio di inizializzazione del sistema.

    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

    Messaggio parziale di streaming (solo quando includePartialMessages è true).

    type SDKPartialAssistantMessage = {
      type: 'stream_event';
      event: RawMessageStreamEvent; // Da Anthropic SDK
      parent_tool_use_id: string | null;
      uuid: UUID;
      session_id: string;
    }

    SDKCompactBoundaryMessage

    Messaggio che indica un limite di compattazione della conversazione.

    type SDKCompactBoundaryMessage = {
      type: 'system';
      subtype: 'compact_boundary';
      uuid: UUID;
      session_id: string;
      compact_metadata: {
        trigger: 'manual' | 'auto';
        pre_tokens: number;
      };
    }

    SDKPermissionDenial

    Informazioni su un uso dello strumento negato.

    type SDKPermissionDenial = {
      tool_name: string;
      tool_use_id: string;
      tool_input: ToolInput;
    }

    Tipi di hook

    Per una guida completa sull'uso degli hook con esempi e pattern comuni, vedi la guida agli Hook.

    HookEvent

    Eventi hook disponibili.

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

    HookCallback

    Tipo di funzione callback hook.

    type HookCallback = (
      input: HookInput, // Unione di tutti i tipi di input hook
      toolUseID: string | undefined,
      options: { signal: AbortSignal }
    ) => Promise<HookJSONOutput>;

    HookCallbackMatcher

    Configurazione hook con matcher facoltativo.

    interface HookCallbackMatcher {
      matcher?: string;
      hooks: HookCallback[];
    }

    HookInput

    Tipo di unione di tutti i tipi di input hook.

    type HookInput =
      | PreToolUseHookInput
      | PostToolUseHookInput
      | PostToolUseFailureHookInput
      | NotificationHookInput
      | UserPromptSubmitHookInput
      | SessionStartHookInput
      | SessionEndHookInput
      | StopHookInput
      | SubagentStartHookInput
      | SubagentStopHookInput
      | PreCompactHookInput
      | PermissionRequestHookInput;

    BaseHookInput

    Interfaccia base che tutti i tipi di input hook estendono.

    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;  // Stringa dall'array 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

    Valore di ritorno hook.

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

    Tipi di input dello strumento

    Documentazione degli schemi di input per tutti gli strumenti Claude Code integrati. Questi tipi vengono esportati da @anthropic-ai/claude-agent-sdk e possono essere utilizzati per interazioni di strumenti type-safe.

    ToolInput

    Nota: Questo è un tipo solo per la documentazione per chiarezza. Rappresenta l'unione di tutti i tipi di input dello strumento.

    type ToolInput =
      | AgentInput
      | AskUserQuestionInput
      | BashInput
      | BashOutputInput
      | FileEditInput
      | FileReadInput
      | FileWriteInput
      | GlobInput
      | GrepInput
      | KillShellInput
      | NotebookEditInput
      | WebFetchInput
      | WebSearchInput
      | TodoWriteInput
      | ExitPlanModeInput
      | ListMcpResourcesInput
      | ReadMcpResourceInput;

    Task

    Nome dello strumento: Task

    interface AgentInput {
      /**
       * Una breve descrizione del compito (3-5 parole)
       */
      description: string;
      /**
       * Il compito che l'agente deve eseguire
       */
      prompt: string;
      /**
       * Il tipo di agente specializzato da utilizzare per questo compito
       */
      subagent_type: string;
    }

    Avvia un nuovo agente per gestire compiti complessi e multi-step in modo autonomo.

    AskUserQuestion

    Nome dello strumento: AskUserQuestion

    interface AskUserQuestionInput {
      /**
       * Domande da porre all'utente (1-4 domande)
       */
      questions: Array<{
        /**
         * La domanda completa da porre all'utente. Deve essere chiara, specifica,
         * e terminare con un punto interrogativo.
         */
        question: string;
        /**
         * Etichetta molto breve visualizzata come chip/tag (max 12 caratteri).
         * Esempi: "Auth method", "Library", "Approach"
         */
        header: string;
        /**
         * Le scelte disponibili (2-4 opzioni). Un'opzione "Other" viene
         * fornita automaticamente.
         */
        options: Array<{
          /**
           * Testo di visualizzazione per questa opzione (1-5 parole)
           */
          label: string;
          /**
           * Spiegazione di cosa significa questa opzione
           */
          description: string;
        }>;
        /**
         * Impostare su true per consentire selezioni multiple
         */
        multiSelect: boolean;
      }>;
      /**
       * Risposte dell'utente compilate dal sistema di permessi.
       * Mappa il testo della domanda all'etichetta dell'opzione selezionata.
       * Le risposte a selezione multipla sono separate da virgole.
       */
      answers?: Record<string, string>;
    }

    Pone domande di chiarimento all'utente durante l'esecuzione. Vedi Gestione dello strumento AskUserQuestion per i dettagli di utilizzo.

    Bash

    Nome dello strumento: Bash

    interface BashInput {
      /**
       * Il comando da eseguire
       */
      command: string;
      /**
       * Timeout facoltativo in millisecondi (max 600000)
       */
      timeout?: number;
      /**
       * Descrizione chiara e concisa di cosa fa questo comando in 5-10 parole
       */
      description?: string;
      /**
       * Impostare su true per eseguire questo comando in background
       */
      run_in_background?: boolean;
    }

    Esegue comandi bash in una sessione shell persistente con timeout facoltativo ed esecuzione in background.

    BashOutput

    Nome dello strumento: BashOutput

    interface BashOutputInput {
      /**
       * L'ID della shell in background da cui recuperare l'output
       */
      bash_id: string;
      /**
       * Regex facoltativo per filtrare le righe di output
       */
      filter?: string;
    }

    Recupera l'output da una shell bash in esecuzione o completata in background.

    Edit

    Nome dello strumento: Edit

    interface FileEditInput {
      /**
       * Il percorso assoluto del file da modificare
       */
      file_path: string;
      /**
       * Il testo da sostituire
       */
      old_string: string;
      /**
       * Il testo con cui sostituirlo (deve essere diverso da old_string)
       */
      new_string: string;
      /**
       * Sostituisci tutte le occorrenze di old_string (predefinito false)
       */
      replace_all?: boolean;
    }

    Esegue sostituzioni di stringhe esatte nei file.

    Read

    Nome dello strumento: Read

    interface FileReadInput {
      /**
       * Il percorso assoluto del file da leggere
       */
      file_path: string;
      /**
       * Il numero di riga da cui iniziare a leggere
       */
      offset?: number;
      /**
       * Il numero di righe da leggere
       */
      limit?: number;
    }

    Legge i file dal filesystem locale, inclusi testo, immagini, PDF e notebook Jupyter.

    Write

    Nome dello strumento: Write

    interface FileWriteInput {
      /**
       * Il percorso assoluto del file da scrivere
       */
      file_path: string;
      /**
       * Il contenuto da scrivere nel file
       */
      content: string;
    }

    Scrive un file nel filesystem locale, sovrascrivendo se esiste.

    Glob

    Nome dello strumento: Glob

    interface GlobInput {
      /**
       * Il pattern glob da abbinare ai file
       */
      pattern: string;
      /**
       * La directory in cui cercare (predefinito cwd)
       */
      path?: string;
    }

    Corrispondenza di pattern di file veloce che funziona con qualsiasi dimensione di codebase.

    Grep

    Nome dello strumento: Grep

    interface GrepInput {
      /**
       * Il pattern di espressione regolare da cercare
       */
      pattern: string;
      /**
       * File o directory in cui cercare (predefinito cwd)
       */
      path?: string;
      /**
       * Pattern glob per filtrare i file (ad es. "*.js")
       */
      glob?: string;
      /**
       * Tipo di file da cercare (ad es. "js", "py", "rust")
       */
      type?: string;
      /**
       * Modalità di output: "content", "files_with_matches", o "count"
       */
      output_mode?: 'content' | 'files_with_matches' | 'count';
      /**
       * Ricerca senza distinzione tra maiuscole e minuscole
       */
      '-i'?: boolean;
      /**
       * Mostra i numeri di riga (per la modalità content)
       */
      '-n'?: boolean;
      /**
       * Righe da mostrare prima di ogni corrispondenza
       */
      '-B'?: number;
      /**
       * Righe da mostrare dopo ogni corrispondenza
       */
      '-A'?: number;
      /**
       * Righe da mostrare prima e dopo ogni corrispondenza
       */
      '-C'?: number;
      /**
       * Limita l'output alle prime N righe/voci
       */
      head_limit?: number;
      /**
       * Abilita la modalità multilinea
       */
      multiline?: boolean;
    }

    Potente strumento di ricerca basato su ripgrep con supporto regex.

    KillBash

    Nome dello strumento: KillBash

    interface KillShellInput {
      /**
       * L'ID della shell in background da terminare
       */
      shell_id: string;
    }

    Termina una shell bash in esecuzione in background dal suo ID.

    NotebookEdit

    Nome dello strumento: NotebookEdit

    interface NotebookEditInput {
      /**
       * Il percorso assoluto del file notebook Jupyter
       */
      notebook_path: string;
      /**
       * L'ID della cella da modificare
       */
      cell_id?: string;
      /**
       * La nuova sorgente per la cella
       */
      new_source: string;
      /**
       * Il tipo della cella (code o markdown)
       */
      cell_type?: 'code' | 'markdown';
      /**
       * Il tipo di modifica (replace, insert, delete)
       */
      edit_mode?: 'replace' | 'insert' | 'delete';
    }

    Modifica le celle nei file notebook Jupyter.

    WebFetch

    Nome dello strumento: WebFetch

    interface WebFetchInput {
      /**
       * L'URL da cui recuperare il contenuto
       */
      url: string;
      /**
       * Il prompt da eseguire sul contenuto recuperato
       */
      prompt: string;
    }

    Recupera il contenuto da un URL e lo elabora con un modello AI.

    WebSearch

    Nome dello strumento: WebSearch

    interface WebSearchInput {
      /**
       * La query di ricerca da utilizzare
       */
      query: string;
      /**
       * Includi solo i risultati da questi domini
       */
      allowed_domains?: string[];
      /**
       * Non includere mai i risultati da questi domini
       */
      blocked_domains?: string[];
    }

    Cerca il web e restituisce i risultati formattati.

    TodoWrite

    Nome dello strumento: TodoWrite

    interface TodoWriteInput {
      /**
       * L'elenco di cose da fare aggiornato
       */
      todos: Array<{
        /**
         * La descrizione del compito
         */
        content: string;
        /**
         * Lo stato del compito
         */
        status: 'pending' | 'in_progress' | 'completed';
        /**
         * Forma attiva della descrizione del compito
         */
        activeForm: string;
      }>;
    }

    Crea e gestisce un elenco di compiti strutturato per il tracciamento dei progressi.

    ExitPlanMode

    Nome dello strumento: ExitPlanMode

    interface ExitPlanModeInput {
      /**
       * Il piano da eseguire dall'utente per l'approvazione
       */
      plan: string;
    }

    Esce dalla modalità di pianificazione e chiede all'utente di approvare il piano.

    ListMcpResources

    Nome dello strumento: ListMcpResources

    interface ListMcpResourcesInput {
      /**
       * Nome del server facoltativo per filtrare le risorse per
       */
      server?: string;
    }

    Elenca le risorse MCP disponibili dai server connessi.

    ReadMcpResource

    Nome dello strumento: ReadMcpResource

    interface ReadMcpResourceInput {
      /**
       * Il nome del server MCP
       */
      server: string;
      /**
       * L'URI della risorsa da leggere
       */
      uri: string;
    }

    Legge una risorsa MCP specifica da un server.

    Tipi di output dello strumento

    Documentazione degli schemi di output per tutti gli strumenti Claude Code integrati. Questi tipi rappresentano i dati di risposta effettivi restituiti da ogni strumento.

    ToolOutput

    Nota: Questo è un tipo solo per la documentazione per chiarezza. Rappresenta l'unione di tutti i tipi di output dello strumento.

    type ToolOutput =
      | TaskOutput
      | AskUserQuestionOutput
      | BashOutput
      | BashOutputToolOutput
      | EditOutput
      | ReadOutput
      | WriteOutput
      | GlobOutput
      | GrepOutput
      | KillBashOutput
      | NotebookEditOutput
      | WebFetchOutput
      | WebSearchOutput
      | TodoWriteOutput
      | ExitPlanModeOutput
      | ListMcpResourcesOutput
      | ReadMcpResourceOutput;

    Task

    Nome dello strumento: Task

    interface TaskOutput {
      /**
       * Messaggio di risultato finale dal subagente
       */
      result: string;
      /**
       * Statistiche di utilizzo dei token
       */
      usage?: {
        input_tokens: number;
        output_tokens: number;
        cache_creation_input_tokens?: number;
        cache_read_input_tokens?: number;
      };
      /**
       * Costo totale in USD
       */
      total_cost_usd?: number;
      /**
       * Durata dell'esecuzione in millisecondi
       */
      duration_ms?: number;
    }

    Restituisce il risultato finale dal subagente dopo aver completato il compito delegato.

    AskUserQuestion

    Nome dello strumento: AskUserQuestion

    interface AskUserQuestionOutput {
      /**
       * Le domande che sono state poste
       */
      questions: Array<{
        question: string;
        header: string;
        options: Array<{
          label: string;
          description: string;
        }>;
        multiSelect: boolean;
      }>;
      /**
       * Le risposte fornite dall'utente.
       * Mappa il testo della domanda alla stringa di risposta.
       * Le risposte a selezione multipla sono separate da virgole.
       */
      answers: Record<string, string>;
    }

    Restituisce le domande poste e le risposte dell'utente.

    Bash

    Nome dello strumento: Bash

    interface BashOutput {
      /**
       * Output combinato di stdout e stderr
       */
      output: string;
      /**
       * Codice di uscita del comando
       */
      exitCode: number;
      /**
       * Se il comando è stato terminato a causa del timeout
       */
      killed?: boolean;
      /**
       * ID della shell per i processi in background
       */
      shellId?: string;
    }

    Restituisce l'output del comando con lo stato di uscita. I comandi in background restituiscono immediatamente con uno shellId.

    BashOutput

    Nome dello strumento: BashOutput

    interface BashOutputToolOutput {
      /**
       * Nuovo output dall'ultimo controllo
       */
      output: string;
      /**
       * Stato della shell corrente
       */
      status: 'running' | 'completed' | 'failed';
      /**
       * Codice di uscita (quando completato)
       */
      exitCode?: number;
    }

    Restituisce l'output incrementale dalle shell in background.

    Edit

    Nome dello strumento: Edit

    interface EditOutput {
      /**
       * Messaggio di conferma
       */
      message: string;
      /**
       * Numero di sostituzioni effettuate
       */
      replacements: number;
      /**
       * Percorso del file che è stato modificato
       */
      file_path: string;
    }

    Restituisce la conferma delle modifiche riuscite con il conteggio delle sostituzioni.

    Leggi

    Nome dello strumento: Read

    type ReadOutput = 
      | TextFileOutput
      | ImageFileOutput
      | PDFFileOutput
      | NotebookFileOutput;
    
    interface TextFileOutput {
      /**
       * Contenuto del file con numeri di riga
       */
      content: string;
      /**
       * Numero totale di righe nel file
       */
      total_lines: number;
      /**
       * Righe effettivamente restituite
       */
      lines_returned: number;
    }
    
    interface ImageFileOutput {
      /**
       * Dati immagine codificati in Base64
       */
      image: string;
      /**
       * Tipo MIME dell'immagine
       */
      mime_type: string;
      /**
       * Dimensione del file in byte
       */
      file_size: number;
    }
    
    interface PDFFileOutput {
      /**
       * Array dei contenuti delle pagine
       */
      pages: Array<{
        page_number: number;
        text?: string;
        images?: Array<{
          image: string;
          mime_type: string;
        }>;
      }>;
      /**
       * Numero totale di pagine
       */
      total_pages: number;
    }
    
    interface NotebookFileOutput {
      /**
       * Celle del notebook Jupyter
       */
      cells: Array<{
        cell_type: 'code' | 'markdown';
        source: string;
        outputs?: any[];
        execution_count?: number;
      }>;
      /**
       * Metadati del notebook
       */
      metadata?: Record<string, any>;
    }

    Restituisce il contenuto del file nel formato appropriato al tipo di file.

    Scrivi

    Nome dello strumento: Write

    interface WriteOutput {
      /**
       * Messaggio di successo
       */
      message: string;
      /**
       * Numero di byte scritti
       */
      bytes_written: number;
      /**
       * Percorso del file che è stato scritto
       */
      file_path: string;
    }

    Restituisce una conferma dopo aver scritto con successo il file.

    Glob

    Nome dello strumento: Glob

    interface GlobOutput {
      /**
       * Array dei percorsi dei file corrispondenti
       */
      matches: string[];
      /**
       * Numero di corrispondenze trovate
       */
      count: number;
      /**
       * Directory di ricerca utilizzata
       */
      search_path: string;
    }

    Restituisce i percorsi dei file che corrispondono al pattern glob, ordinati per data di modifica.

    Grep

    Nome dello strumento: Grep

    type GrepOutput = 
      | GrepContentOutput
      | GrepFilesOutput
      | GrepCountOutput;
    
    interface GrepContentOutput {
      /**
       * Righe corrispondenti con contesto
       */
      matches: Array<{
        file: string;
        line_number?: number;
        line: string;
        before_context?: string[];
        after_context?: string[];
      }>;
      /**
       * Numero totale di corrispondenze
       */
      total_matches: number;
    }
    
    interface GrepFilesOutput {
      /**
       * File che contengono corrispondenze
       */
      files: string[];
      /**
       * Numero di file con corrispondenze
       */
      count: number;
    }
    
    interface GrepCountOutput {
      /**
       * Conteggi delle corrispondenze per file
       */
      counts: Array<{
        file: string;
        count: number;
      }>;
      /**
       * Corrispondenze totali in tutti i file
       */
      total: number;
    }

    Restituisce i risultati della ricerca nel formato specificato da output_mode.

    KillBash

    Nome dello strumento: KillBash

    interface KillBashOutput {
      /**
       * Messaggio di successo
       */
      message: string;
      /**
       * ID della shell terminata
       */
      shell_id: string;
    }

    Restituisce una conferma dopo aver terminato la shell di background.

    NotebookEdit

    Nome dello strumento: NotebookEdit

    interface NotebookEditOutput {
      /**
       * Messaggio di successo
       */
      message: string;
      /**
       * Tipo di modifica eseguita
       */
      edit_type: 'replaced' | 'inserted' | 'deleted';
      /**
       * ID della cella interessata
       */
      cell_id?: string;
      /**
       * Numero totale di celle nel notebook dopo la modifica
       */
      total_cells: number;
    }

    Restituisce una conferma dopo aver modificato il notebook Jupyter.

    WebFetch

    Nome dello strumento: WebFetch

    interface WebFetchOutput {
      /**
       * Risposta del modello AI al prompt
       */
      response: string;
      /**
       * URL che è stato recuperato
       */
      url: string;
      /**
       * URL finale dopo i reindirizzamenti
       */
      final_url?: string;
      /**
       * Codice di stato HTTP
       */
      status_code?: number;
    }

    Restituisce l'analisi dell'IA del contenuto web recuperato.

    WebSearch

    Nome dello strumento: WebSearch

    interface WebSearchOutput {
      /**
       * Risultati della ricerca
       */
      results: Array<{
        title: string;
        url: string;
        snippet: string;
        /**
         * Metadati aggiuntivi se disponibili
         */
        metadata?: Record<string, any>;
      }>;
      /**
       * Numero totale di risultati
       */
      total_results: number;
      /**
       * La query che è stata cercata
       */
      query: string;
    }

    Restituisce i risultati della ricerca formattati dal web.

    TodoWrite

    Nome dello strumento: TodoWrite

    interface TodoWriteOutput {
      /**
       * Messaggio di successo
       */
      message: string;
      /**
       * Statistiche attuali delle attività
       */
      stats: {
        total: number;
        pending: number;
        in_progress: number;
        completed: number;
      };
    }

    Restituisce una conferma con le statistiche attuali delle attività.

    ExitPlanMode

    Nome dello strumento: ExitPlanMode

    interface ExitPlanModeOutput {
      /**
       * Messaggio di conferma
       */
      message: string;
      /**
       * Se l'utente ha approvato il piano
       */
      approved?: boolean;
    }

    Restituisce una conferma dopo aver uscito dalla modalità piano.

    ListMcpResources

    Nome dello strumento: ListMcpResources

    interface ListMcpResourcesOutput {
      /**
       * Risorse disponibili
       */
      resources: Array<{
        uri: string;
        name: string;
        description?: string;
        mimeType?: string;
        server: string;
      }>;
      /**
       * Numero totale di risorse
       */
      total: number;
    }

    Restituisce l'elenco delle risorse MCP disponibili.

    ReadMcpResource

    Nome dello strumento: ReadMcpResource

    interface ReadMcpResourceOutput {
      /**
       * Contenuti della risorsa
       */
      contents: Array<{
        uri: string;
        mimeType?: string;
        text?: string;
        blob?: string;
      }>;
      /**
       * Server che ha fornito la risorsa
       */
      server: string;
    }

    Restituisce il contenuto della risorsa MCP richiesta.

    Tipi di Permesso

    PermissionUpdate

    Operazioni per l'aggiornamento dei permessi.

    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'     // Impostazioni globali dell'utente
      | 'projectSettings'  // Impostazioni del progetto per directory
      | 'localSettings'    // Impostazioni locali ignorate da Git
      | 'session'          // Solo sessione corrente

    PermissionRuleValue

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

    Altri Tipi

    ApiKeySource

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

    SdkBeta

    Funzioni beta disponibili che possono essere abilitate tramite l'opzione betas. Vedi Intestazioni beta per ulteriori informazioni.

    type SdkBeta = 'context-1m-2025-08-07';
    ValoreDescrizioneModelli Compatibili
    'context-1m-2025-08-07'Abilita la finestra di contesto di 1 milione di tokenClaude Sonnet 4, Claude Sonnet 4.5

    SlashCommand

    Informazioni su un comando slash disponibile.

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

    ModelInfo

    Informazioni su un modello disponibile.

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

    McpServerStatus

    Stato di un server MCP connesso.

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

    AccountInfo

    Informazioni sull'account per l'utente autenticato.

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

    ModelUsage

    Statistiche di utilizzo per modello restituite nei messaggi di risultato.

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

    ConfigScope

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

    NonNullableUsage

    Una versione di Usage con tutti i campi nullable resi non-nullable.

    type NonNullableUsage = {
      [K in keyof Usage]: NonNullable<Usage[K]>;
    }

    Usage

    Statistiche di utilizzo dei token (da @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

    Tipo di risultato dello strumento MCP (da @modelcontextprotocol/sdk/types.js).

    type CallToolResult = {
      content: Array<{
        type: 'text' | 'image' | 'resource';
        // I campi aggiuntivi variano in base al tipo
      }>;
      isError?: boolean;
    }

    AbortError

    Classe di errore personalizzata per le operazioni di interruzione.

    class AbortError extends Error {}

    Configurazione della Sandbox

    SandboxSettings

    Configurazione per il comportamento della sandbox. Utilizzare questa opzione per abilitare il sandboxing dei comandi e configurare le restrizioni di rete a livello di programmazione.

    type SandboxSettings = {
      enabled?: boolean;
      autoAllowBashIfSandboxed?: boolean;
      excludedCommands?: string[];
      allowUnsandboxedCommands?: boolean;
      network?: NetworkSandboxSettings;
      ignoreViolations?: SandboxIgnoreViolations;
      enableWeakerNestedSandbox?: boolean;
    }
    ProprietàTipoPredefinitoDescrizione
    enabledbooleanfalseAbilita la modalità sandbox per l'esecuzione dei comandi
    autoAllowBashIfSandboxedbooleanfalseApprova automaticamente i comandi bash quando la sandbox è abilitata
    excludedCommandsstring[][]Comandi che bypassano sempre le restrizioni della sandbox (ad es. ['docker']). Questi vengono eseguiti senza sandbox automaticamente senza il coinvolgimento del modello
    allowUnsandboxedCommandsbooleanfalseConsenti al modello di richiedere l'esecuzione di comandi al di fuori della sandbox. Quando true, il modello può impostare dangerouslyDisableSandbox nell'input dello strumento, che ricade nel sistema di permessi
    networkNetworkSandboxSettingsundefinedConfigurazione della sandbox specifica della rete
    ignoreViolationsSandboxIgnoreViolationsundefinedConfigura quali violazioni della sandbox ignorare
    enableWeakerNestedSandboxbooleanfalseAbilita una sandbox nidificata più debole per compatibilità

    Le restrizioni di accesso al file system e alla rete NON sono configurate tramite le impostazioni della sandbox. Invece, sono derivate dalle regole di permesso:

    • Restrizioni di lettura del file system: Regole di negazione della lettura
    • Restrizioni di scrittura del file system: Regole di consentimento/negazione della modifica
    • Restrizioni di rete: Regole di consentimento/negazione di WebFetch

    Utilizza le impostazioni della sandbox per il sandboxing dell'esecuzione dei comandi e le regole di permesso per il controllo dell'accesso al file system e alla rete.

    Esempio di utilizzo

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

    NetworkSandboxSettings

    Configurazione specifica della rete per la modalità sandbox.

    type NetworkSandboxSettings = {
      allowLocalBinding?: boolean;
      allowUnixSockets?: string[];
      allowAllUnixSockets?: boolean;
      httpProxyPort?: number;
      socksProxyPort?: number;
    }
    ProprietàTipoPredefinitoDescrizione
    allowLocalBindingbooleanfalseConsenti ai processi di associarsi alle porte locali (ad es. per server di sviluppo)
    allowUnixSocketsstring[][]Percorsi dei socket Unix a cui i processi possono accedere (ad es. socket Docker)
    allowAllUnixSocketsbooleanfalseConsenti l'accesso a tutti i socket Unix
    httpProxyPortnumberundefinedPorta proxy HTTP per le richieste di rete
    socksProxyPortnumberundefinedPorta proxy SOCKS per le richieste di rete

    SandboxIgnoreViolations

    Configurazione per ignorare violazioni specifiche della sandbox.

    type SandboxIgnoreViolations = {
      file?: string[];
      network?: string[];
    }
    ProprietàTipoPredefinitoDescrizione
    filestring[][]Pattern di percorsi di file per cui ignorare le violazioni
    networkstring[][]Pattern di rete per cui ignorare le violazioni

    Fallback dei Permessi per Comandi Non Sandboxati

    Quando allowUnsandboxedCommands è abilitato, il modello può richiedere di eseguire comandi al di fuori della sandbox impostando dangerouslyDisableSandbox: true nell'input dello strumento. Queste richieste ricadono nel sistema di permessi esistente, il che significa che il tuo gestore canUseTool verrà invocato, permettendoti di implementare logica di autorizzazione personalizzata.

    excludedCommands vs allowUnsandboxedCommands:

    • excludedCommands: Un elenco statico di comandi che bypassano sempre la sandbox automaticamente (ad es. ['docker']). Il modello non ha controllo su questo.
    • allowUnsandboxedCommands: Consente al modello di decidere a runtime se richiedere l'esecuzione non sandboxata impostando dangerouslyDisableSandbox: true nell'input dello strumento.
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Deploy my application",
      options: {
        sandbox: {
          enabled: true,
          allowUnsandboxedCommands: true  // Il modello può richiedere l'esecuzione non sandboxata
        },
        permissionMode: "default",
        canUseTool: async (tool, input) => {
          // Controlla se il modello sta richiedendo di bypassare la sandbox
          if (tool === "Bash" && input.dangerouslyDisableSandbox) {
            // Il modello vuole eseguire questo comando al di fuori della sandbox
            console.log(`Unsandboxed command requested: ${input.command}`);
    
            // Restituisci true per consentire, false per negare
            return isCommandAuthorized(input.command);
          }
          return true;
        }
      }
    });

    Questo pattern ti consente di:

    • Controllare le richieste del modello: Registra quando il modello richiede l'esecuzione non sandboxata
    • Implementare elenchi di consentimento: Consenti solo a comandi specifici di essere eseguiti non sandboxati
    • Aggiungere flussi di lavoro di approvazione: Richiedi autorizzazione esplicita per operazioni privilegiate

    I comandi in esecuzione con dangerouslyDisableSandbox: true hanno accesso completo al sistema. Assicurati che il tuo gestore canUseTool convalidi queste richieste con attenzione.

    Vedi anche

    • Panoramica dell'SDK - Concetti generali dell'SDK
    • Riferimento dell'SDK Python - Documentazione dell'SDK Python
    • Riferimento CLI - Interfaccia della riga di comando
    • Flussi di lavoro comuni - Guide passo dopo passo