Installazione
L’SDK raggruppa un binario nativo Claude Code per la tua piattaforma come dipendenza opzionale come
@anthropic-ai/claude-agent-sdk-darwin-arm64. La maggior parte delle installazioni non necessita di un’installazione separata di Claude Code. La versione dell’SDK traccia la versione del Claude Code raggruppato. SDK v0.3.191 raggruppa Claude Code v2.1.191, quindi una funzione su questa pagina che richiede una versione di Claude Code necessita della versione SDK con lo stesso numero di patch o successivo. Se il tuo gestore di pacchetti salta le dipendenze opzionali, l’SDK genera Native CLI binary for <platform>-<arch> not found; imposta pathToClaudeCodeExecutable su un binario claude installato separatamente.Se il tuo gestore di pacchetti non applica il campo libc di npm, come non fa Yarn 1.x, ottieni sia i pacchetti della piattaforma glibc che musl su Linux, raddoppiando approssimativamente la dimensione dell’installazione. Su Agent SDK v0.2.141 o successivo, l’SDK avvia comunque la variante corretta. Per recuperare lo spazio in un’immagine contenitore, elimina il pacchetto della piattaforma che non corrisponde al libc dove viene eseguita la tua app; per un runtime glibc su x64, è rm -rf node_modules/@anthropic-ai/claude-agent-sdk-linux-x64-musl. Su una macchina di sviluppo l’eliminazione è temporanea, poiché Yarn reinstalla il pacchetto al prossimo cambio di dipendenza.Compilare in un singolo eseguibile
Quando compili la tua applicazione in un eseguibile a file singolo conbun build --compile, l’SDK non può risolvere il binario CLI raggruppato in fase di esecuzione. require.resolve non funziona all’interno del filesystem virtuale $bunfs dell’eseguibile compilato, quindi l’SDK genera Native CLI binary for <platform>-<arch> not found.
Per aggirare questo problema, incorpora il binario della piattaforma come risorsa file, estrailo in un percorso reale all’avvio con extractFromBunfs() e passa quel percorso a pathToClaudeCodeExecutable.
L’helper extractFromBunfs() richiede @anthropic-ai/claude-agent-sdk v0.3.144 o successivo. L’esempio seguente compila per macOS su Apple Silicon:
extractFromBunfs() copia il binario incorporato dal filesystem virtuale dell’eseguibile compilato in una directory temporanea per utente e restituisce il percorso reale. Al di fuori di un eseguibile compilato restituisce il percorso di input invariato, quindi lo stesso codice viene eseguito in sviluppo senza modifiche.
Ogni eseguibile compilato incorpora il binario di una singola piattaforma. Fai corrispondere il pacchetto della piattaforma nell’importazione al tuo --target:
- Per la compilazione incrociata, installa il pacchetto della piattaforma non corrispondente, ad esempio
npm install @anthropic-ai/claude-agent-sdk-linux-x64 --force. - Su Windows, il sottopercorso binario è
claude.exe, ad esempio@anthropic-ai/claude-agent-sdk-win32-x64/claude.exe.
Funzioni
query()
La funzione principale per interagire con Claude Code. Crea un generatore asincrono che trasmette i messaggi man mano che arrivano.
Parametri
Restituisce
Restituisce un oggettoQuery che estende AsyncGenerator<SDKMessage, void> con metodi aggiuntivi.
startup()
Pre-riscalda il subprocess CLI generandolo e completando l’handshake di inizializzazione prima che un prompt sia disponibile. L’handle WarmQuery restituito accetta un prompt in seguito e lo scrive in un processo già pronto, quindi la prima chiamata query() si risolve senza pagare il costo di generazione e inizializzazione del subprocess inline.
Parametri
Restituisce
Restituisce unaPromise<WarmQuery> che si risolve una volta che il subprocess è stato generato e ha completato il suo handshake di inizializzazione.
Esempio
Chiamastartup() presto, ad esempio all’avvio dell’applicazione, quindi chiama .query() sull’handle restituito una volta che un prompt è pronto. Questo sposta la generazione del subprocess e l’inizializzazione fuori dal percorso critico.
tool()
Crea una definizione di tool MCP type-safe per l’uso con i server MCP dell’SDK.
Parametri
ToolAnnotations
Re-esportato da @modelcontextprotocol/sdk/types.js. Tutti i campi sono suggerimenti opzionali; i client non dovrebbero fare affidamento su di essi per decisioni di sicurezza.
createSdkMcpServer()
Crea un’istanza di server MCP che viene eseguita nello stesso processo della tua applicazione.
Parametri
listSessions()
Scopre ed elenca le sessioni passate con metadati leggeri. Filtra per directory di progetto o elenca le sessioni in tutti i progetti.
Parametri
Tipo di ritorno: SDKSessionInfo
Esempio
Stampa le 10 sessioni più recenti per un progetto. I risultati sono ordinati perlastModified decrescente, quindi il primo elemento è il più recente. Ometti dir per cercare in tutti i progetti.
getSessionMessages()
Legge i messaggi dell’utente e dell’assistente da una trascrizione di sessione passata.
Parametri
Tipo di ritorno: SessionMessage
Esempio
getSessionInfo()
Legge i metadati per una singola sessione per ID senza scansionare la directory del progetto completa.
Parametri
Restituisce
SDKSessionInfo, o undefined se la sessione non viene trovata.
renameSession()
Rinomina una sessione aggiungendo una voce di titolo personalizzato. Le chiamate ripetute sono sicure; il titolo più recente vince.
Parametri
tagSession()
Etichetta una sessione. Passa null per cancellare l’etichetta. Le chiamate ripetute sono sicure; l’etichetta più recente vince.
Parametri
resolveSettings()
Risolve le impostazioni effettive di Claude Code per una determinata directory utilizzando lo stesso motore di merge della CLI, senza generare la CLI Claude. Utilizzalo per ispezionare quale configurazione una chiamata query() vedrebbe prima di invocarne una.
Questa funzione è in fase alpha e la sua API potrebbe cambiare prima della stabilizzazione.
query() live applica:
policyHelper:resolveSettings()legge le fonti MDM, inclusi plist macOS e Windows HKLM/HKCU, ma non esegue il subprocesspolicyHelperconfigurato dall’amministratore.- Impostazioni gestite dal server:
resolveSettings()non recupera impostazioni gestite dal server. Passale comeoptions.serverManagedSettingsper includerle. defaultMode: lo snapshot restituiscepermissions.defaultModecosì com’è da ogni livello, quindi può includere i valori'auto'e'bypassPermissions'dalle impostazioni di progetto e locali, che una sessione live ignora.
Parametri
resolveSettings() accetta un singolo oggetto di opzioni. Tutti i campi sono opzionali.
Tipo di ritorno: ResolvedSettings
resolveSettings() restituisce un oggetto che descrive le impostazioni unite e la fonte che ha contribuito a ogni chiave.
Esempio
L’esempio seguente risolve le impostazioni per una directory di progetto e stampa la fonte che controlla il periodo di pulizia. Su una macchina dove nessun file di impostazioni impostacleanupPeriodDays, entrambe le righe stampate mostrano undefined per il valore, che è l’output previsto piuttosto che un errore.
Tipi
Options
Oggetto di configurazione per la funzione query().
Gestisci risposte API lente o bloccate
Il subprocess CLI legge diverse variabili di ambiente che controllano i timeout dell’API e il rilevamento dei blocchi. Passale attraverso l’opzioneenv:
-
API_TIMEOUT_MS: timeout per richiesta sul client Anthropic, in millisecondi. Predefinito600000. Si applica al loop principale e a tutti i subagenti. -
CLAUDE_CODE_MAX_RETRIES: numero massimo di tentativi API. Predefinito10, limitato a15. Ogni tentativo ottiene la propria finestraAPI_TIMEOUT_MS, quindi il tempo wall case peggiore è approssimativamenteAPI_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)più backoff. Per esecuzioni incustodite che devono attendere attraverso interruzioni più lunghe, impostaCLAUDE_CODE_RETRY_WATCHDOG=1: ritenta gli errori di capacità transitori indefinitamente e, su Claude Code v2.1.199 o successivo, aumenta il predefinito per altri errori transitori a300e rimuove il limite su questa variabile. -
CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS: watchdog di blocco per i subagenti. Mentre il watchdog di stream è attivo, il predefinito èCLAUDE_STREAM_IDLE_TIMEOUT_MSpiù 5 minuti, che arriva a600000a meno che non aumenti quella variabile. Con il watchdog di stream spento, il predefinito è600000. Prima di v2.1.257, il predefinito era sempre600000. Il timer si ripristina su ogni evento di stream. Al blocco, Claude Code interrompe il subagente e segnala il blocco al genitore. Per un subagente in background, contrassegna anche l’attività come fallita e allega qualsiasi risultato parziale. -
CLAUDE_ENABLE_STREAM_WATCHDOGconCLAUDE_STREAM_IDLE_TIMEOUT_MS: watchdog di stream che interrompe la richiesta quando le intestazioni sono arrivate ma il corpo della risposta smette di trasmettere. Il watchdog è attivo per impostazione predefinita per tutti i provider; impostaCLAUDE_ENABLE_STREAM_WATCHDOG=0per disabilitarlo.CLAUDE_STREAM_IDLE_TIMEOUT_MSpredefinito a300000ed è limitato a quel minimo. Dopo l’interruzione, Tentativi automatici copre cosa Claude Code fa, in base a quanto la risposta aveva progredito. Mentre il watchdog attende una risposta che un gateway dietroANTHROPIC_BASE_URLtiene aperta con ping keep-alive, un host che impostaincludePartialMessagescontinua a ricevere eventi dipingstream, quindi leggi questi frame come vivacità piuttosto che cronometrare la sessione su silenzio. Prima di v2.1.257, i frame si fermavano 5 minuti dopo l’ultimo evento di stream reale.
Oggetto Query
Interfaccia restituita dalla funzione query().
Metodi
applyFlagSettings()
Cambia impostazioni su una sessione in esecuzione senza riavviare la query. Usalo quando un’impostazione che non ha un setter dedicato deve cambiare a metà sessione, come irrigidire permissions dopo che l’agente legge input non attendibile. setModel() e setPermissionMode() sono setter dedicati per quelle due chiavi; applyFlagSettings() è la forma generale che accetta qualsiasi sottoinsieme delle chiavi di impostazioni, e passare model qui si comporta come setModel().
Solo alcune chiavi hanno effetto a metà sessione:
- Applicate al turno successivo:
effortLevel,ultracode,permissions,hooks,skillOverrides,fastMode,agent. Cambiareagentapplica anche l’override del modello di quell’agente e gli hook al turno successivo. Il suo prompt di sistema si applica al turno successivo, o, in una sessione che riutilizza un prompt di sistema registrato, una volta che la sessione è compattata. - Applicate durante il turno corrente:
model. Se cambimodelmentre Claude sta lavorando su un turno, la risposta che Claude sta già generando finisce sul vecchio modello, e il resto del turno, a partire dalla prossima chiamata che Claude Code fa al modello, usa quello nuovo. I subagenti mantengono il loro modello. Prima di v2.1.212, un cambio a metà turno attendeva il turno successivo. - Nessun effetto a metà sessione: le opzioni del prompt di sistema. Questi vengono risolti una volta all’avvio, quindi la sessione in esecuzione mantiene il valore originale anche se la chiamata ha successo. Per cambiarli, avvia una nuova sessione.
effortLevel accetta un nome di livello di sforzo. Accetta anche "ultracode", che richiede sforzo xhigh con ultracode attivo. applyFlagSettings() dichiara effortLevel senza quel valore, quindi passa l’equivalente { ultracode: true } in TypeScript. Il valore ultracode richiede Claude Code v2.1.203 o successivo ed è accettato solo da applyFlagSettings(), non dalla chiave effortLevel in un file di impostazioni.
I valori vengono scritti nel livello flag-settings, lo stesso livello che l’opzione settings inline di query() popola all’avvio. Questo è lo stesso livello che la sezione di precedenza in pagina chiama opzioni programmatiche.
Le chiamate successive eseguono un shallow-merge delle chiavi di livello superiore. Una seconda chiamata con { permissions: {...} } sostituisce l’intero oggetto permissions dalla chiamata precedente piuttosto che eseguire un deep-merge in esso. Per cancellare una chiave dal livello flag e ricadere in fonti di precedenza inferiore, passa null per quella chiave. Passare undefined non ha effetto perché la serializzazione JSON lo elimina.
Disponibile solo in modalità input streaming, lo stesso vincolo di setModel() e setPermissionMode().
L’esempio seguente cambia il modello attivo a metà sessione, quindi cancella l’override in modo che il modello ricada in qualsiasi cosa specifichino le impostazioni utente o progetto.
applyFlagSettings() è solo TypeScript. L’SDK Python non espone un metodo equivalente.WarmQuery
Handle restituito da startup(). Il subprocess è già generato e inizializzato, quindi chiamare query() su questo handle scrive il prompt direttamente in un processo pronto senza latenza di avvio.
Metodi
WarmQuery implementa AsyncDisposable, quindi può essere usato con await using per la pulizia automatica.
SDKControlInitializeResponse
Tipo di ritorno di initializationResult(). Contiene i dati di inizializzazione della sessione.
hooks_applied segnala se Claude Code ha registrato gli hooks che la richiesta initialize ha trasportato. L’SDK invia quella richiesta una volta quando la sessione inizia e di nuovo su ogni chiamata reinitialize(). Il campo richiede Agent SDK v0.3.238 o successivo.
Claude Code omette il campo quando la richiesta non ha trasportato hook. Quando la richiesta ha trasportato hook, il valore dipende dal fatto che sia la prima inizializzazione della sessione e, per una ripetuta, da come ha raggiunto la sessione:
true: Claude Code ha registrato gli hook. Una prima inizializzazione della sessione restituisce questo valore. Un’inizializzazione ripetuta inviata sullo stdin della CLI restituisce anchetrue. In quel caso gli hook nella nuova richiesta sostituiscono gli hook registrati in precedenza.false: Claude Code ha ignorato gli hook. Un’inizializzazione ripetuta inviata a una sessione remota restituisce questo valore, quindi un secondo client che si unisce a una sessione non può sostituire gli hook che il primo client ha registrato.
hooks su ogni inizializzazione ripetuta.
La risposta sempre segnala fast_mode_state, e quando qualcosa blocca fast mode, fast_mode_disabled_reason trasporta il codice di motivo insieme ad esso, in modo che tu possa spiegare lo stato bloccato invece di ri-derivare la disponibilità. Entrambi i comportamenti richiedono Claude Code v2.1.219 o successivo. Prima di v2.1.219, la risposta ometteva fast_mode_state quando fast mode non era disponibile e non trasportava mai un motivo. Per i codici di motivo e i loro significati, vedi fast_mode_disabled_reason sul messaggio di risultato.
Il wrapper di risposta di controllo per un initialize riuscito trasporta anche un array pending_permission_requests. Il campo si trova sul wrapper di risposta stesso, non nel payload SDKControlInitializeResponse sopra. Ogni voce è un messaggio control_request completo con la stessa forma { type: "control_request", request_id, request } che la sessione trasmette per le richieste di permesso durante l’esecuzione.
L’array elenca le richieste di permesso che questo processo Claude Code ha emesso e non ancora risolto. L’SDK legge l’array per te e invia ogni voce al tuo callback canUseTool, lo stesso reinvio che reinitialize() attiva dopo un gap di trasporto. Gestisci gli ID di richiesta ripetuti in modo idempotente, perché una voce può ripetere una richiesta che il callback ha già ricevuto prima che la connessione si interrompesse.
L’array è sempre presente su una risposta initialize riuscita ed è vuoto quando questo processo non ha alcuna richiesta di permesso non risolta. Richiede Claude Code v2.1.268 o successivo. Le versioni precedenti potrebbero omettere il campo, quindi se analizzi il protocollo wire tu stesso, tratta un campo mancante come una CLI più vecchia piuttosto che come prova che nulla è in sospeso.
SDKControlInterruptResponse
La ricevuta di interruzione: il valore che interrupt() si risolve con su una CLI che pubblicizza la capacità interrupt_receipt_v1 in SDKSystemMessage.capabilities. Richiede Claude Code v2.1.205 o successivo. Le CLI precedenti rispondono all’interruzione con un payload di successo vuoto, quindi interrupt() si risolve a undefined.
still_queued elenca gli UUID dei messaggi utente che erano in sospeso quando l’interruzione è arrivata: messaggi ancora nella coda, più qualsiasi messaggio Claude Code aveva già tolto dalla coda per il turno successivo. Una volta che il primo turno della sessione ha iniziato, Claude Code elabora i messaggi elencati dopo l’interruzione a meno che non li annulli per primo, e può unire diversi in un turno. Se interrompi prima che il primo turno inizi, Claude Code interrompe quel turno non appena inizia, e i messaggi elencati in quel turno non ricevono risposta.
Usa la ricevuta per decidere se rinviare qualcosa. Un messaggio elencato che non annulli entra nella conversazione indipendentemente dal fatto che riceva una risposta, quindi rinviarlo lo consegna a Claude due volte.
Interpreta l’elenco con questi avvertimenti:
- Solo i messaggi che sono stati accodati con un UUID appaiono. Un array vuoto non significa che nient’altro verrà eseguito.
- Solo i messaggi del thread principale sono elencati. I messaggi indirizzati a un subagente sono fuori portata.
- L’elenco può includere UUID che il tuo client non ha mai inviato, come i trigger di attività pianificate. Ignora gli UUID che non riconosci invece di trattarli come un errore.
interrupt(), può impostare cancel_queued: true sulla richiesta di controllo interrupt. Claude Code v2.1.219 e successivo pubblicizza il supporto con la capacità interrupt_cancel_queued_v1 in SDKSystemMessage.capabilities; le CLI più vecchie ignorano il campo e lasciano i messaggi in coda per funzionare come al solito. Un tale interruzione cancella anche ogni messaggio che altrimenti sarebbe elencato sotto still_queued: la ricevuta li elenca sotto cancelled invece, still_queued è vuoto, e nessuno di loro viene eseguito.
L’elenco cancelled trasporta gli stessi avvertimenti di still_queued. Il metodo interrupt() non invia mai cancel_queued, quindi le ricevute che si risolve non trasportano cancelled.
La ricevuta è uno snapshot scattato nel momento in cui l’interruzione viene elaborata, e su un’interruzione pulita arriva prima del SDKResultMessage del turno interrotto. Leggi la ricevuta piuttosto che ispezionare la coda dopo quel risultato: il loop avvia il turno in coda successivo immediatamente, quindi la coda che ispezioni dopo il risultato è già cambiata.
SDKControlGetContextUsageResponse
Tipo di ritorno di getContextUsage(). Con il detail predefinito, questo è lo stesso payload che Claude Code renderizza per il comando /context in una sessione interattiva, quindi insieme ai conteggi di token trasporta campi di visualizzazione come color e gridRows che Claude Code usa per disegnare la griglia di utilizzo /context.
L’argomento detail opzionale del metodo sceglie come Claude Code conta ogni categoria. Con il predefinito, 'full', Claude Code conta ogni categoria con richieste API di conteggio dei token. Passa { detail: 'summary' } per ottenere una risposta dall’utilizzo dell’ultima risposta e dalle stime locali. Nessuna richiesta di conteggio dei token esce, e i numeri per categoria sono approssimativi. L’argomento detail richiede Agent SDK v0.3.257 o successivo.
Quando invii /context come prompt invece di chiamare il metodo, Claude Code allega un payload SDKContextUsage al campo context_usage del messaggio dell’assistente che consegna il risultato. Quel campo richiede Agent SDK v0.3.232 o successivo.
categoriescontiene i totali per categoria.mcpToolseagentsattribuiscono i token ai singoli tool MCP e subagenti.memoryFileselenca ogni file di memoria caricato con il suo costo.skills.skillFrontmatterattribuisce i token della lista di skill a ogni skill inclusa. I conteggi per skill misurano ogni voce di lista di skill come Claude Code effettivamente la invia, che può essere più breve del frontmatter completo della skill. Confrontaskills.totalSkillsconskills.includedSkillsper vedere se ogni skill scoperta ha fatto nella lista.
totalTokens è l’utilizzo di contesto corrente della sessione, e maxTokens è la finestra rispetto alla quale l’utilizzo viene misurato. Quella finestra è la finestra di contesto del modello, o la finestra di auto-compattazione inferiore quando una si applica. rawMaxTokens trasporta lo stesso valore di maxTokens, e percentage è totalTokens come percentuale arrotondata di quella finestra.
Claude Code lascia i diagnostici opzionali deferredBuiltinTools, systemTools, e systemPromptSections non impostati, quindi aspettati che siano assenti anche se il tipo li dichiara.
SDKControlReadFileResponse
Tipo di ritorno di readFile().
contents contiene il testo del file, o dati base64 quando hai richiesto encoding: 'base64'; il campo encoding della risposta è impostato a 'base64' in quel caso. absPath è il percorso assoluto risolto. truncated è impostato quando il file era più lungo del limite maxBytes e i contenuti sono stati tagliati a quel limite.
Cosa readFile() può leggere
readFile() serve un insieme più ristretto di file rispetto allo strumento Read:
- Un file regolare all’interno di una delle directory di lavoro della sessione, come
cwdeadditionalDirectories - Alcuni dei file di Claude Code stesso per la sessione, come i risultati dei tool
readFile(). Per qualsiasi altra cosa la chiamata si risolve con null.
SDKControlReloadSkillsResponse
Tipo di ritorno di reloadSkills().
skills elenca le skill disponibili dopo il ricaricamento, nella stessa forma SlashCommand che supportedCommands() restituisce.
AgentDefinition
Configurazione per un subagente definito programmaticamente.
AgentMcpServerSpec
Specifica i server MCP disponibili per un subagente. Può essere un nome di server (stringa che fa riferimento a un server dalla configurazione mcpServers del genitore) o una configurazione di server inline che mappa i nomi dei server alle configurazioni.
McpServerConfigForProcessTransport è McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig.
SettingSource
Controlla quali fonti di configurazione basate su filesystem l’SDK carica le impostazioni da.
Comportamento predefinito
QuandosettingSources è omesso o undefined, query() carica le stesse impostazioni del filesystem del CLI Claude Code: utente, progetto e locale. Vedi Cosa settingSources non controlla per gli input che vengono letti indipendentemente da questa opzione, e come disabilitarli.
Perché usare settingSources
Disabilita le impostazioni del filesystem:"project" in settingSources. Vedi Modifica i prompt di sistema per come il caricamento di CLAUDE.md interagisce con le opzioni del prompt di sistema.
Precedenza delle impostazioni
Quando più fonti vengono caricate, le impostazioni vengono unite con questa precedenza (più alta a più bassa):- Impostazioni locali (
.claude/settings.local.json) - Impostazioni del progetto (
.claude/settings.json) - Impostazioni dell’utente (
~/.claude/settings.json)
agents, allowedTools e settings sovrascrivono le impostazioni del filesystem utente, progetto e locale. Le impostazioni della politica gestita hanno precedenza sulle opzioni programmatiche.
PermissionMode
CanUseTool
Tipo di funzione di permesso personalizzato per controllare l’uso dei tool.
La funzione è la sostituzione SDK per il prompt di permesso interattivo: viene invocata solo quando il flusso di valutazione del permesso si risolve in un prompt. Le chiamate di tool già approvate da una voce allowedTools, una regola di autorizzazione nelle impostazioni, o la modalità di permesso, come acceptEdits o bypassPermissions, non la invocano mai. Per controllare ogni chiamata di tool, usa un hook PreToolUse invece.
Una regola di autorizzazione non pre-approva le azioni che nessuna modalità auto-approva; vedi Come i permessi vengono valutati per quali di loro raggiungono il callback e cosa succede in modalità dontAsk e auto.
Il callback normalmente risolve la richiesta restituendo un
PermissionResult, che l’SDK scrive di nuovo sul suo trasporto come control_response. Restituisci null solo quando la tua applicazione ha già inviato la control_response per questa richiesta sul suo canale, ripetendo requestId; l’SDK quindi salta la scrittura della risposta al suo trasporto. Restituire null in qualsiasi altro caso lascia la chiamata di tool bloccata indefinitamente, perché nessuna control_response viene mai inviata e i prompt di permesso non scadono.
L’opzione requestId e il valore di ritorno null richiedono Claude Code v2.1.199 o successivo.
PermissionResult
Risultato di un controllo di permesso.
ToolConfig
Configurazione per il comportamento dei tool incorporati.
McpServerConfig
Configurazione per i server MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
McpClaudeAIProxyServerConfig
SdkPluginConfig
Configurazione per il caricamento dei plugin nell’SDK.
Esempio:
Tipi di messaggio
SDKMessage
Tipo di unione di tutti i possibili messaggi restituiti dalla query.
SDKAssistantMessage
Messaggio di risposta dell’assistente.
message è un BetaMessage dall’SDK Anthropic. Include campi come id, content, model, stop_reason e usage.
SDKAssistantMessageError è uno di: 'authentication_failed', 'oauth_org_not_allowed', 'account_on_hold', 'billing_error', 'rate_limit', 'overloaded', 'invalid_request', 'model_not_found', 'server_error', 'max_output_tokens', 'cloud_credential_error', o 'unknown'. Quattro di questi valori significano più di quanto i loro nomi dicono:
'model_not_found': il modello selezionato non esiste o non è disponibile per il tuo account o deployment'overloaded': l’API ha restituito un 529 perché il server è al massimo della capacità, a differenza di'rate_limit', che è un 429 rispetto alla tua quota'account_on_hold': il tuo account è in sospeso'cloud_credential_error': Claude Code non ha potuto ottenere credenziali AWS o Google Cloud utilizzabili sulla macchina su cui viene eseguito, quindi nessuna richiesta ha raggiunto il provider cloud. La causa solita è un accesso al cloud scaduto o mai completato su quella macchina, anche se un servizio di credenziali brevemente irraggiungibile segnala lo stesso valore. Vedi Impossibile caricare le credenziali AWS o Google Cloud. Richiede TypeScript Agent SDK v0.3.267 o successivo, che raggruppa Claude Code v2.1.267
aborted è true quando un’interruzione o un’interruzione ha troncato il messaggio dell’assistente prima del completamento del flusso: il messaggio non ha stop_reason e il contenuto può terminare a metà parola. Il campo è assente sui messaggi completati normalmente. Richiede Agent SDK v0.3.214 o successivo.
Claude Code imposta user_message_uuid e user_message_uuids sul primo messaggio dell’assistente del turno, secondo le condizioni in user_message_uuid.
timestamp è l’ora ISO 8601 quando il contenuto del messaggio ha finito di generarsi sul processo che lo ha prodotto. Il valore proviene dall’orologio di quella macchina, quindi usalo solo per la visualizzazione e non ordinare i messaggi per esso. Un turno API può produrre diversi messaggi dell’assistente che condividono un message.id, ciascuno con il proprio timestamp. Quando il campo è assente, ricadi al momento in cui hai ricevuto il messaggio.
context_usage è una copia strutturata del rapporto /context, tipizzata come SDKContextUsage, e richiede Agent SDK v0.3.232 o successivo. Quando invii /context come prompt, Claude Code consegna il rapporto come messaggio dell’assistente il cui message.content contiene la tabella markdown, e allega context_usage a quello stesso messaggio. Claude Code non imposta il campo su nessun altro messaggio dell’assistente, e le versioni precedenti consegnano la tabella /context senza di esso, quindi leggi la suddivisione dal campo quando è presente e ricadi al testo markdown quando non lo è.
SDKUserMessage
Messaggio di input dell’utente.
shouldQuery a false per aggiungere il messaggio alla trascrizione senza attivare un turno dell’assistente. Il messaggio viene mantenuto e unito al prossimo messaggio utente che attiva un turno. Usa questo per iniettare contesto, come l’output di un comando che hai eseguito fuori banda, senza spendere una chiamata di modello su di esso.
Su un messaggio che contiene un blocco tool_result, tool_use_result è l’oggetto di output strutturato dello strumento piuttosto che il testo inviato al modello. La sua forma dipende dallo strumento denominato dal blocco tool_use corrispondente, quindi il campo è tipizzato unknown; le forme integrate sono elencate in Tipi di output dello strumento.
Per lo strumento Agent, tool_use_result è AgentOutput. Su un risultato completed, content contiene il rapporto del subagente senza l’ID agente e il trailer di utilizzo che Claude Code aggiunge al testo tool_result, quindi esegui il rendering da tool_use_result invece di analizzare quel testo.
Per uno strumento MCP il cui risultato contiene blocchi resource_link, tool_use_result è un oggetto con un array resourceLinks di voci SDKMcpResourceLink. Claude riceve ogni link come una riga di testo nel blocco tool_result, quindi leggi resourceLinks per rendere i file che il server ha restituito invece di analizzare quel testo. Claude Code omette resourceLinks quando il risultato non ha link e sui risultati dei subagenti, mantiene al massimo 50 link per risultato, e smette di aggiungere link una volta che l’array raggiunge 64 KiB di JSON serializzato. resourceLinks richiede Agent SDK v0.3.257 o successivo.
SDKUserMessageReplay
Messaggio utente riprodotto con UUID obbligatorio.
origin è di tipo peer o channel, raggiunge il flusso come una riproduzione indipendentemente dal fatto che sia stato consegnato durante un turno attivo o abbia avviato un nuovo turno mentre la sessione era inattiva. Prima della v2.1.207, un turno iniettato consegnato mentre la sessione era inattiva non produceva alcun messaggio sul flusso e appariva solo quando rileggi la trascrizione.
SDKResultMessage
Messaggio di risultato finale.
subtype:
api_error_status: il codice di stato HTTP dell’errore API che ha terminato la conversazione. Assente onullquando il turno è terminato senza un errore API.ttft_ms: tempo al primo token in millisecondi, misurato quando arriva il primo messaggio dell’assistente completo. Presente solo sul ramo di successo.ttft_stream_ms: tempo in millisecondi fino al primo evento di flussomessage_start, quando il flusso di risposta si apre. Inferiore attft_ms; il divario tra i due è il tempo impiegato per lo streaming del primo messaggio. Presente solo sul ramo di successo.user_message_uuid: l’uuiddel messaggio che hai inviato a cui questo turno ha risposto. Vediuser_message_uuidper quali risultati lo contengono.user_message_uuids: gliuuiddi ogni messaggio che hai inviato a cui Claude Code ha risposto in questo turno. Vediuser_message_uuids.request_sent_wall_ms: millisecondi di epoca in cui Claude Code ha inviato la richiesta API, per join rispetto ai timestamp lato server. Presente solo insieme auser_message_uuid, su un risultato di successo conis_errorfalse il cui turno ha inviato una richiesta API.first_content_frame_ms: tempo in millisecondi fino al primo evento di flussocontent_block_startocontent_block_delta, contando i blocchi di pensiero come contenuto. Presente sul ramo di successo solo, quandois_errorè false. Richiede Agent SDK v0.3.260 o successivo.first_stream_post_ms,first_stream_post_ack_ms,first_stream_post_wall_ms: tempi per il caricamento del primo evento di flusso del turno. Claude Code li registra solo nelle sessioni che trasmette a claude.ai, come sessioni cloud, e i risultati chequery()produce non li contengono. Richiede Agent SDK v0.3.260 o successivo.usage: solo ciclo agente principale. Esclude le chiamate di subagente e modello ausiliario, ed è per turno nelle sessioni di input in streaming. PreferiscimodelUsageper la contabilità di token/costo.modelUsage: totali per modello per ogni chiamata di modello effettuata attraverso la pipeline di query durante questa chiamataquery(), incluso il ciclo principale, i subagenti e le chiamate interne come la compattazione e gli agenti Workflow. Le chiamate helper al di fuori di quella pipeline, come il classificatore di autorizzazione e le richieste di conteggio dei token, sono escluse. Nelle sessioni di input in streaming i totali sono cumulativi tra i turni, quindi leggi il risultato più recente piuttosto che sommare tra i risultati. Vedi Traccia i costi in modalità input in streaming per i reset e Recupera i totali dopo un arresto anomalo della sessione per i risultati azzerati.total_cost_usd: costo stimato cumulativo in USD per questa chiamataquery(), coprendo le stesse chiamate dimodelUsagee reset negli stessi punti. È una stima, non un estratto conto di fatturazione. Vedi Traccia costo e utilizzo per le avvertenze di accuratezza.queued_turn_count: il numero di messaggi che hai inviato conorigin: { kind: "human" }che sono ancora in attesa quando Claude Code ha prodotto il risultato. Vediqueued_turn_countper cosa significano0e un campo assente.terminal_reason: il motivo per cui il ciclo è terminato. Uno di"completed","max_turns","tool_deferred","aborted_streaming","aborted_tools","hook_stopped","stop_hook_prevented","background_requested","blocking_limit","rapid_refill_breaker","prompt_too_long","image_error","model_error","api_error","malformed_tool_use_exhausted","budget_exhausted","structured_output_retry_exhausted","tool_deferred_unavailable", o"turn_setup_failed".fast_mode_state: uno di"on","off", o"cooldown".fast_mode_disabled_reason: il motivo per cui fast mode non è disponibile in questo momento. Assente quando nulla blocca fast mode, anche se una richiesta potrebbe comunque essere eseguita a velocità standard. Durante il cooldown dopo un limite di velocità fast mode, Claude Code segnalafast_mode_state: "cooldown"senza codice di motivo e riabilita fast mode quando il cooldown scade. Richiede Claude Code v2.1.219 o successivo.
La stessa coppia di campi appare su
SDKSystemMessage e su SDKControlInitializeResponse, quindi puoi leggere lo stato fast mode prima del primo turno.
Il campo origin inoltro l’SDKMessageOrigin del messaggio utente che ha attivato questo risultato. Quando l’SDK inietta un turno di follow-up sintetico, come per un’attività finita in background, il SDKResultMessage risultante contiene origin: { kind: "task-notification" }. Le routine il cui trigger si è attivato e i messaggi verificati dal server dalle tue altre sessioni arrivano con questo tipo anche, ciascuno con il subkind descritto in Subkind di notifica attività. Controlla kind per distinguere i risultati che rispondono al tuo prompt dai follow-up iniettati prima di instradare o sopprimere questi ultimi.
Il campo è assente per i risultati emessi prima di qualsiasi turno utente, come gli errori di avvio.
Quando un hook PreToolUse restituisce permissionDecision: "defer", il risultato ha stop_reason: "tool_deferred" e deferred_tool_use contiene l’id, il name e l’input del tool in sospeso. Leggi questo campo per visualizzare la richiesta nella tua interfaccia utente, quindi riprendi con lo stesso session_id per continuare. Vedi Rinvia una chiamata di tool per dopo per il percorso completo.
user_message_uuid
L’uuid del SDKUserMessage a cui il turno sta rispondendo, ripetuto in modo da poter abbinare la risposta di Claude Code al messaggio che hai inviato. Claude Code ripete un uuid solo se ne hai impostato uno sul messaggio. Il campo è facoltativo su SDKUserMessage, e un prompt di stringa passato a query() non ne contiene nessuno.
Quale dei tuoi messaggi un turno risponde dipende da come il turno è iniziato:
- Un messaggio regolare che hai inviato, cioè uno senza
isSynthetic: true: il turno risponde a quel messaggio per tutta la sua esecuzione. Quando invii diversi messaggi uno dopo l’altro, Claude Code può unirli in un turno, e il campo contiene solo l’uuiddell’ultimo messaggio. Per abbinare la risposta a uno qualsiasi dei messaggi uniti, usauser_message_uuids. - Un messaggio che hai inviato con
isSynthetic: true: il turno risponde a quel messaggio all’inizio. Se Claude Code raccoglie un messaggio regolare tuo tra le chiamate di tool, il turno risponde al messaggio raccolto da allora in poi. L’eco di unuuiddi messaggio sintetico richiede Agent SDK v0.3.265 o successivo; le versioni precedenti non ecolano nulla sui turni sintetici. - Un prompt che Claude Code ha generato da solo, come il turno che continua il lavoro interrotto dopo il riavvio di una sessione: il turno non risponde a nessun messaggio tuo all’inizio e i suoi frame non contengono alcun eco. Se Claude Code raccoglie un messaggio regolare tuo tra le chiamate di tool, il turno risponde a quel messaggio da allora in poi. L’eco di raccolta richiede Agent SDK v0.3.265 o successivo; le versioni precedenti non ecolano nulla su questi turni.
uuid del messaggio a cui ha risposto su tre tipi di frame:
- Il risultato: ogni risultato di un turno che ha risposto a un messaggio che hai inviato. Ogni tale risultato lo contiene su Agent SDK v0.3.265 o successivo. Prima della v0.3.265, il risultato di successo di un turno che un messaggio regolare ha avviato non lo conteneva quando il turno non ha inviato alcuna richiesta API o è terminato con una chiamata di tool differita. Prima della v0.3.246, anche i risultati di errore non lo contenevano, e prima della v0.3.216 ogni risultato non lo conteneva.
- La prima risposta del turno: il primo messaggio dell’assistente, o con
includePartialMessagesil primo evento di flusso il cuievent.typenon èping, in modo da poter associare la risposta prima che il risultato arrivi. Quando un turno non trasmette nulla, Claude Code lo imposta sul primo messaggio dell’assistente. L’eco della prima risposta richiede Agent SDK v0.3.246 o successivo. Quando il messaggio a cui il turno sta rispondendo cambia a metà turno, la prima risposta dopo il cambio contiene il campo anche, su Agent SDK v0.3.265 o successivo; le versioni precedenti lo impostano su un frame di risposta per turno. - Ogni frame
thinking_tokensdel turno: in modo da poter attribuire il progresso del pensiero al messaggio che hai inviato senza aspettare la prima risposta del turno. Richiede Agent SDK v0.3.260 o successivo.
- Frame di risposta diversi da quelle prime risposte
- Frame di subagente
- Turni che non rispondono a nessun messaggio con un
uuid: il turno ha risposto a un messaggio che hai inviato senza uno, o Claude Code ha avviato il turno stesso e non ha raccolto nessun messaggio regolare che ne ha uno - Risultati che non rispondono a nessun messaggio che hai inviato, come il risultato azzerato dopo un arresto anomalo del processo worker
user_message_uuids
Gli uuid di ogni messaggio che hai inviato a cui Claude Code ha risposto in questo turno. Quando invii diversi messaggi uno dopo l’altro, Claude Code può unirli in un turno, e user_message_uuid nomina solo l’ultimo di essi. Per abbinare la risposta a uno qualsiasi dei messaggi uniti, cerca l’uuid di quel messaggio ovunque in questo elenco. Richiede Agent SDK v0.3.259 o successivo.
Claude Code imposta l’elenco insieme a user_message_uuid su ogni frame di risposta che contiene quel campo e sul risultato. Per l’insieme completo di frame che contengono user_message_uuid, e la versione che ciascuno richiede, vedi user_message_uuid. L’elenco contiene sempre user_message_uuid e contiene al massimo 64 voci.
Quando Claude Code raccoglie un messaggio regolare che hai inviato mentre un turno era in esecuzione, aggiunge l’uuid di quel messaggio all’elenco del risultato.
Quando una prima risposta o un risultato contiene user_message_uuid senza l’elenco, proviene da una versione precedente di Claude Code, quindi ricadi al campo singolo.
queued_turn_count
Il numero di messaggi che hai inviato con origin: { kind: "human" } che sono ancora in attesa nella coda di comando quando Claude Code ha prodotto il risultato. Richiede Agent SDK v0.3.242 o successivo.
Cosa significano 0 e un campo assente:
0: Claude Code non conta i messaggi che hai inviato senza quelorigin, e non conta le notifiche di attività, quindi un turno può comunque seguire.- Assente: il risultato finale che Claude Code emette dopo un arresto anomalo o un errore di avvio fatale omette il campo, e può contenere totali azzerati.
SDKSystemMessage
Messaggio di inizializzazione del sistema.
fast_mode_state segnala lo stato fast mode della sessione. Quando qualcosa blocca fast mode, fast_mode_disabled_reason nomina il controllo che lo ha bloccato; il campo richiede Claude Code v2.1.219 o successivo. Per i codici di motivo e i loro significati, vedi fast_mode_disabled_reason sul messaggio di risultato.
terminal_slash_commands nomina le voci in slash_commands la cui interfaccia è associata al terminale locale, come exit. Puoi inviarle come qualsiasi altra voce in slash_commands; il campo esiste in modo che un client remoto o mobile possa nasconderle dai suoi menu di comando. Il campo è presente solo quando non vuoto, e richiede Agent SDK v0.3.229 o successivo.
effort: il livello di sforzo che Claude Code invia sulla prossima richiesta della sessione, onullquando non ne invia nessuno. Claude Code imposta il campo solo sul messaggio di init che invia ai client Remote Control, e lo omette dal messaggio di init che la tua applicazione legge. Richiede Agent SDK v0.3.234 o successivo.
capabilities nomina i comportamenti del protocollo che questa CLI implementa, in modo da poter rilevare le funzionalità invece di confrontare le stringhe claude_code_version. È un insieme aperto: ignora i valori che non riconosci, e controlla la capacità specifica su cui fai affidamento. Il campo richiede Claude Code v2.1.205 o successivo ed è assente su CLI precedenti.
SDKPartialAssistantMessage
Messaggio parziale di streaming (solo quando includePartialMessages è true). Il campo parent_tool_use_id è sempre null: gli eventi di flusso vengono emessi solo per la sessione principale. Per l’attribuzione del subagente, utilizza messaggi completi, che contengono parent_tool_use_id, o abilita forwardSubagentText per ricevere il testo e il pensiero del subagente come messaggi completi.
user_message_uuid e user_message_uuids sul primo evento di flusso non-ping del turno, e di nuovo quando il messaggio a cui il turno sta rispondendo cambia, secondo le condizioni in user_message_uuid.
SDKCompactBoundaryMessage
Messaggio che indica un limite di compattazione della conversazione.
SDKInformationalMessage
Banner di testo generico emesso dal ciclo. Contiene righe di stato non di errore, feedback di hook come il motivo del blocco di un hook UserPromptSubmit, e output di comando. Su Claude Code v2.1.227 o successivo, il systemMessage di un hook può arrivare come questo messaggio, con ogni riga prefissata dal nome dell’hook, come PostToolUse:Bash says:. Se il systemMessage di un hook arriva come questo messaggio dipende dall’evento. Ogni sezione dell’evento sulla pagina dei hook dice come l’output viene visualizzato. Renderizza content come testo semplice al livello specificato.
SDKWorkerShuttingDownMessage
Emesso durante lo spegnimento elegante del worker in modo che i client remoti possano mostrare il motivo per cui il worker se n’è andato invece di aspettare il timeout del battito cardiaco. Il reason è una stringa breve in snake_case impostata dalla CLI host, come "host_exit" o "remote_control_disabled". Agisci su questo solo quando stai eseguendo lo streaming in diretta. Una sessione ripresa riproduce le istanze passate di questo messaggio, quindi ignorale in quel caso.
SDKPluginInstallMessage
Evento di progresso dell’installazione del plugin. Emesso quando CLAUDE_CODE_SYNC_PLUGIN_INSTALL è impostato, in modo che la tua applicazione Agent SDK possa tracciare l’installazione del plugin del marketplace prima del primo turno. Gli stati started e completed racchiudono l’installazione complessiva. Gli stati installed e failed segnalano i singoli marketplace e includono name.
SDKPermissionDeniedMessage
Evento di flusso emesso quando il sistema di autorizzazione nega una chiamata di tool senza un prompt interattivo. Usalo per rendere il rifiuto nella tua interfaccia utente mentre accade, piuttosto che osservare solo il risultato del tool is_error che segue. Quali rifiuti segnala dipende da come l’esecuzione gestisce i prompt di autorizzazione:
- Con un callback
canUseToole ilpermissionPrompts: 'host'predefinito: i prompt di autorizzazione vanno al tuo callback, e questo evento segnala i rifiuti che Claude Code decide da solo senza chiamarlo. - Con nessuno dei due: un’esecuzione
-pnuda, oquery()che non imposta nécanUseToolnépermissionPromptToolName, nega qualsiasi chiamata di tool che avrebbe richiesto un prompt, e questo evento segnala anche quei rifiuti oltre a quelli che Claude Code decide da solo. Prima della v2.1.223, Claude Code non emetteva questo evento nelle esecuzioni senza un callback. - Con uno strumento di prompt MCP, impostato con
permissionPromptToolNameo il flag--permission-prompt-tool, e ilpermissionPrompts: 'host'predefinito: Claude Code non emette questo evento affatto, nemmeno per i rifiuti di regola che decide da solo. - Con
permissionPrompts: 'none': Claude Code nega le chiamate che avrebbero richiesto un prompt, anche quandocanUseToolo uno strumento di prompt MCP è anche impostato, e questo evento segnala anche quei rifiuti oltre a quelli che Claude Code decide da solo. Richiede Claude Code v2.1.259 o successivo.
PreToolUse, indipendentemente dal fatto che l’hook abbia negato la chiamata stessa o una regola di negazione abbia sovrascritto la decisione di consentire o chiedere dell’hook. L’evento è anche best-effort: occasionalmente Claude Code registra un rifiuto senza emettere questo evento, quindi permission_denials sul messaggio di risultato è il record autorevole.
SDKPermissionDenial
Informazioni su un uso di tool negato.
SDKContextUsage
Forma strutturata del rapporto /context, portata come context_usage sul SDKAssistantMessage che consegna un risultato /context. Agent SDK v0.3.232 e successivo esportano il tipo. A differenza di SDKControlGetContextUsageResponse, contiene solo i dati necessari per rendere la suddivisione dell’utilizzo, senza campi di visualizzazione come color e gridRows.
model a over_limit descrivono la sessione nel suo insieme, e i campi di raccolta attribuiscono i token a elementi individuali.
over_limit.kind registra come Claude Code ha risolto la finestra, non se l’API accetta la prossima richiesta:
hard_limit: la finestra è quella che Claude Code crede sia il limite proprio del modello, oltre il quale l’API rifiuta le richiestecompaction_window: la finestra è una finestra di politica di compattazione, che può o non può coincidere con il limite del modello
SDKContextUsageCategory
Una riga della suddivisione dell’utilizzo /context per categoria.
Ogni valore
kind dice cosa sono i token della riga:
used: contenuto che occupa la finestra di contestofree: la finestra rimanentebuffer: la riserva di compattazionedeferred: schemi di tool che Claude Code tiene fuori dalla finestra ed esclude dal calcolo dell’utilizzo, elencati per consapevolezza
SDKMessageOrigin
Provenienza di un messaggio con ruolo utente. Questo appare come origin su SDKUserMessage e viene inoltrato al corrispondente SDKResultMessage in modo da poter dire cosa ha attivato un determinato turno.
Task-notification subkinds
Quando Claude Code consegna una notifica di attività in una sessione, impostasubkind sull’origin della notifica solo se i server Anthropic hanno verificato da dove proveniva quella notifica. subkind richiede Claude Code v2.1.213 o successivo, e assume uno di due valori:
scheduled-trigger: la notifica è il prompt memorizzato di una routine, consegnato perché uno dei trigger della routine si è attivato: il suo programma, il suo trigger API, il suo trigger GitHub, o Esegui ora. Claude Code inquadra questi al modello come l’attività assegnata della sessione, con un avviso diverso dall’avviso che altre notifiche di attività contengono.peer-send-message: la notifica è un messaggio che un’altra delle tue sessioni ha inviato con lo strumentosend_messagelato server che le sessioni Claude Code sul web usano per messaggiarsi l’una con l’altra, non lo strumentoSendMessagetra sessioni, e i server Anthropic hanno verificato che entrambe le sessioni appartengono allo stesso gruppo privato di sessioni. Richiede Claude Code v2.1.224 o successivo. Una consegnasend_messageche i server non hanno verificato in quel modo non hasubkind.
subkind. Questo include attività programmate che si attivano sulla tua stessa macchina, attività PR consegnate in una sessione, e eventi in background come un’attività finita. I messaggi dallo strumento SendMessage tra sessioni non sono notifiche di attività affatto: che provengano da una sessione sulla stessa macchina o attraverso i server Anthropic da un’altra macchina, Claude Code dà loro kind: "peer" e i campi di origine peer.
Peer origin fields
Un’originepeer identifica quale agente ha inviato il messaggio: un collega in-process che invia a main con SendMessage, o un peer tra sessioni, un’altra delle tue sessioni Claude Code. I peer tra sessioni richiedono Claude Code v2.1.224 o successivo su macOS e Linux; vedi disponibilità di messaggistica tra sessioni per il requisito di Windows nativo. Un peer tra sessioni può essere eseguito sulla stessa macchina, o su un’altra delle tue macchine o Claude Code sul web quando il suo messaggio arriva attraverso Remote Control. I due tipi di mittente riempiono i campi diversamente:
from: il nome del collega, o l’indirizzo del mittente per un peer tra sessioni. Per un messaggio tra macchine unidirezionale, il mittente non ha indirizzo di risposta efromè"unknown". Il valore è creato dal mittente;verifiedPeerPidè l’identità verificata.fromMode: la classe di autorizzazione della sessione di invio,bypassoprompting, dichiarata da un host che inoltro un messaggio peer tra le tue sessioni, come l’app desktop. Claude Code lo legge nella sessione ricevente quando applica i controlli in entrata. Richiede Agent SDK v0.3.234 o successivo.senderTaskId: l’ID attività del collega. Assente per un peer tra sessioni.name: il nome di visualizzazione del mittente, normalizzato da Claude Code: rimuove i punti di codice di controllo, formato, surrogato e separatore di riga o paragrafo Unicode, quindi taglia il risultato e lo limita a 64 punti di codice con un’ellissi. Richiede Claude Code v2.1.205 o successivo.body: il corpo del messaggio decodificato con l’involucro peer rimosso, byte-esatto con quello che il modello vede. Sempre presente per un messaggio di collega; per un peer tra sessioni, presente solo quando il turno è esattamente un involucro peer formato da Claude Code. Renderizzanameebodyinvece di ri-analizzare il testo del messaggio. Richiede Claude Code v2.1.205 o successivo.fromSession: l’ID sessione del mittente apribile dall’host, impostato dall’host del mittente in modo che la tua interfaccia utente possa collegarsi di nuovo alla sessione di invio. Comefrom, è asserito dal mittente: usalo solo come destinazione di navigazione, e non trattarlo come prova dell’identità del mittente. Richiede Claude Code v2.1.216 o successivo.verifiedPeerPid: l’ID del processo del processo che si è connesso al socket di messaggistica tra sessioni di questa sessione, verificato dal kernel e letto dalla connessione stessa, mai dal payload. Usalo, nonfrom, per identificare il mittente:fromè falsificabile da qualsiasi processo dello stesso utente. Il campo è assente quando Claude Code non può verificarlo, come su Windows o ingresso non-socket, quindi un valore assente significa che il mittente non è verificato. Per il traffico inoltrato identifica l’inoltro piuttosto che l’autore del messaggio, e gli ID di processo sono riciclabili, quindi trattalo come provenienza piuttosto che come token di autenticazione. Richiede Claude Code v2.1.216 o successivo.
Tipi di hook
Per una guida completa sull’uso degli hook con esempi e pattern comuni, vedi la guida Hooks.HookEvent
Eventi hook disponibili.
HookCallback
Tipo di funzione callback hook.
HookCallbackMatcher
Configurazione hook con matcher opzionale.
HookInput
Tipo di unione di tutti i tipi di input hook.
BaseHookInput
Interfaccia base che tutti i tipi di input hook estendono.
prompt_id è un UUID che identifica il prompt dell’utente attualmente in elaborazione. Corrisponde all’attributo prompt.id sugli eventi OpenTelemetry ed è assente fino al primo input dell’utente. Richiede Claude Code v2.1.196 o successivo.
PreToolUseHookInput
PostToolUseHookInput
PostToolUseFailureHookInput
PostToolBatchHookInput
Si attiva una volta dopo che ogni chiamata di strumento in un batch è stata risolta, prima della prossima richiesta del modello. tool_response contiene il contenuto serializzato di tool_result che il modello vede; la forma differisce dall’oggetto strutturato Output di PostToolUseHookInput.
PermissionDeniedHookInput
NotificationHookInput
UserPromptSubmitHookInput
UserPromptExpansionHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
StopFailureHookInput
SubagentStartHookInput
SubagentStopHookInput
PreCompactHookInput
PostCompactHookInput
PreModelSwitchHookInput
Si attiva prima che un cambio di modello richiesto abbia effetto. context_tokens e i campi dopo di esso stimano il costo di reinviare la conversazione al nuovo modello. Per le descrizioni complete dei campi e la semantica di blocco, vedi PreModelSwitch.
PostModelSwitchHookInput
Si attiva dopo che il modello della sessione cambia. Contiene gli stessi campi di PreModelSwitchHookInput, con due valori source aggiuntivi. Vedi PostModelSwitch.
PermissionRequestHookInput
SetupHookInput
TeammateIdleHookInput
TaskCreatedHookInput
TaskCompletedHookInput
ElicitationHookInput
ElicitationResultHookInput
ConfigChangeHookInput
InstructionsLoadedHookInput
DirectoryAddedHookInput
directory è il percorso assoluto della directory che è stata aggiunta. source è "slash_command" quando /add-dir l’ha aggiunta e "register_repo_root" quando la richiesta di controllo SDK l’ha fatto.
WorktreeCreateHookInput
WorktreeRemoveHookInput
CwdChangedHookInput
FileChangedHookInput
MessageDisplayHookInput
HookJSONOutput
Valore di ritorno hook.
AsyncHookJSONOutput
SyncHookJSONOutput
Tipi di input dei tool
Documentazione degli schemi di input per tutti i tool Claude Code incorporati. Questi tipi vengono esportati da@anthropic-ai/claude-agent-sdk e possono essere usati per le interazioni dei tool type-safe.
ToolInputSchemas
Unione di tipi di input dei tool esportati da @anthropic-ai/claude-agent-sdk; i membri includono:
Agent
Nome del tool:Agent. Il nome precedente Task è ancora accettato come alias, e l’array tools nel messaggio di inizializzazione SDKSystemMessage attualmente elenca questo tool come Task per compatibilità all’indietro.
Il campo
mode è deprecato e ignorato su Claude Code v2.1.212 o successivo. Un subagente viene eseguito in modalità di permesso della sessione padre o della sua definizione permissionMode, e le regole di ereditarietà del subagente decidono quale.AskUserQuestion
Nome del tool:AskUserQuestion
Bash
Nome del tool:Bash
Monitor
Nome del tool:Monitor
command esegue uno script e emette un evento per riga stdout, e ws apre un WebSocket e emette un evento per frame di testo. Fornisci esattamente uno tra command o ws. La fonte ws richiede Claude Code v2.1.195 o successivo.
Imposta persistent: true per i watch di lunghezza della sessione come code tail. Quando Monitor esegue un comando, segue le stesse regole di permesso di Bash; un watch WebSocket richiede l’approvazione separatamente. Vedi il riferimento del tool Monitor per il comportamento e la disponibilità del provider. Il tipo esportato contrassegna timeout_ms e persistent come obbligatori perché lo schema riempie i loro valori predefiniti, 300000 e false; una chiamata che li omette convalida.
TaskOutput
Nome del tool:TaskOutput
TaskOutput è deprecato; preferisci Read sul percorso del file di output dell’attività. Gli schemi sottostanti rimangono validi per gli hook e i gestori di permessi che incontrano il tool.Edit
Nome del tool:Edit
Read
Nome del tool:Read
pages per gli intervalli di pagine PDF (ad esempio, "1-5").
Per un PDF, Claude riceve il contenuto del file all’interno del tool_result della chiamata Read. Una lettura che restituisce l’output pdf output contiene un blocco text di riepilogo seguito da un blocco document. Una che restituisce l’output parts contiene il blocco text di riepilogo seguito da un blocco per ogni pagina estratta: un blocco image, o un blocco text che nomina la pagina quando Claude Code non poteva renderla come immagine. Prima di Agent SDK v0.3.242, Claude Code consegnava il contenuto del file come messaggio user separato dopo il risultato del tool.
Write
Nome del tool:Write
Glob
Nome del tool:Glob
Grep
Nome del tool:Grep
TaskStop
Nome del tool:TaskStop
task_id accetta anche un compagno di squadra agent-team o un agente di background denominato per ID agente o nome.
NotebookEdit
Nome del tool:NotebookEdit
WebFetch
Nome del tool:WebFetch
WebSearch
Nome del tool:WebSearch
Workflow
Nome del tool:Workflow
Workflow è disponibile in Agent SDK v0.3.149 e versioni successive. Almeno uno tra script, name o scriptPath è obbligatorio.
TodoWrite
Nome del tool:TodoWrite
The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn’t recognize, they aren’t available unless you opt in:
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite instead when you set CLAUDE_CODE_ENABLE_TASKS=0.This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.Vedi Disponibilità del modello per aderire.TaskCreate
Nome del tool:TaskCreate
TaskUpdate
Nome del tool:TaskUpdate
status a "deleted" per rimuoverlo.
TaskGet
Nome del tool:TaskGet
null quando l’ID non viene trovato.
TaskList
Nome del tool:TaskList
ExitPlanMode
Nome del tool:ExitPlanMode
allowedPrompts è deprecato e ignorato; Claude Code lo accetta comunque in modo che i chiamanti e i transcript esistenti siano validi. Prima di v2.1.205, richiedeva permessi Bash basati su prompt per implementare il piano.
ListMcpResources
Nome del tool:ListMcpResourcesTool
ReadMcpResource
Nome del tool:ReadMcpResourceTool
EnterWorktree
Nome del tool:EnterWorktree
path per passare a un worktree esistente invece di crearne uno nuovo. Su primo ingresso il target deve essere un worktree registrato del repository corrente o, in uno spazio di lavoro multi-repo, di un repository annidato al suo interno; da una sessione worktree deve essere sotto .claude/worktrees/ del repository della sessione. name e path si escludono a vicenda.
ExitWorktree
Nome del tool:ExitWorktree
keep lascia il worktree e il ramo su disco, mentre remove elimina entrambi. discard_changes deve essere true quando si rimuove un worktree che ha file non committati o commit non uniti.
EnterPlanMode
Nome del tool:EnterPlanMode
CronCreate
Nome del tool:CronCreate
recurring a false per attivare una volta al prossimo match. I job sono scoped alla sessione per impostazione predefinita: avviare una conversazione fresca li cancella, e riprendere con --resume o --continue ripristina i job che non sono scaduti. Vedi Attività pianificate.
Impostare durable a true richiede la persistenza a .claude/scheduled_tasks.json in modo che il job sopravviva ai riavvii. La pianificazione duratura non è disponibile in ogni sessione: quando non lo è, Claude Code accetta durable: true ma crea il job solo per la sessione. Leggi il campo durable dell’output per vedere se il job è persistito.
CronDelete
Nome del tool:CronDelete
CronCreate.
CronList
Nome del tool:CronList
.claude/scheduled_tasks.json e job solo per la sessione dalla sessione corrente.
ScheduleWakeup
Nome del tool:ScheduleWakeup
/loop auto-paced. Il runtime limita delaySeconds tra 60 e 3600 secondi. I campi delaySeconds, reason, prompt e noop sono obbligatori a meno che stop non sia true. noop: true segnala un wake-up dove nulla è cambiato. Impostare stop: true annulla il wakeup in sospeso e termina il /loop auto-paced. Il campo stop richiede Claude Code v2.1.202 o successivo. Vedi la riga ScheduleWakeup nel riferimento dei tool.
RemoteTrigger
Nome del tool:RemoteTrigger
/schedule. trigger_id è obbligatorio per le azioni get, update, run e list_runs. body è obbligatorio per create, update e create_webhook_trigger, e facoltativo per run.
create_webhook_trigger allega una fonte di evento a una routine esistente, come un evento GitHub che lo attiva. Il body nomina la fonte, gli eventi e la routine da attivare. Richiede Claude Code v2.1.225 o successivo.
list_runs elenca le esecuzioni recenti di una routine, e get_run_log legge il log di un’esecuzione. session_id nomina l’esecuzione da leggere, da un risultato list_runs, e cursor pagina attraverso i risultati di entrambe le azioni. Entrambe le azioni richiedono Claude Code v2.1.227 o successivo.
Questo tool è disponibile solo quando la sessione è autenticata con un account claude.ai su un piano con Routine abilitate, ed è assente quando la politica della tua organizzazione disabilita Claude Code sul web. Su Claude Code v2.1.227 o successivo, il tool è anche assente quando un Proprietario ha disattivato le routine per l’organizzazione. Prima di v2.1.227, una sessione con solo il toggle delle routine disattivato mostrava comunque il tool, e il server negava le sue chiamate.
PushNotification
Nome del tool:PushNotification
message sotto 200 caratteri perché i sistemi operativi mobili troncano il testo più lungo. Vedi la riga PushNotification nel riferimento dei tool per la disponibilità del provider; la consegna push viene eseguita attraverso l’infrastruttura ospitata da Anthropic che non è accessibile da Amazon Bedrock, Claude Platform su AWS, Agent Platform di Google Cloud, o Microsoft Foundry.
REPL
Nome del tool:REPL
timeout è in millisecondi, con un valore predefinito di 30000 e un massimo di 600000.
I tipi vengono esportati, ma il tool è disattivato nelle sessioni SDK a meno che non imposti CLAUDE_CODE_REPL=1 nell’opzione env. Richiede anche l’eseguibile claude basato su Bun che il programma di installazione nativo fornisce.
ReportFindings
Nome del tool:ReportFindings
level è il livello di sforzo con cui è stata eseguita la revisione. I risultati sono ordinati dal più grave al meno grave, con al massimo 32 per chiamata, e l’array è vuoto quando nessuno è sopravvissuto. Richiede Claude Code v2.1.196 o successivo.
Ogni risultato contiene questi campi:
file: percorso relativo al repository in cui si trova il risultato. L’opzionalelineè la riga 1-indicizzata a cui si ancora.summary: dichiarazione di una frase del difetto.failure_scenariodescrive gli input concreti e lo stato che portano all’output errato o al crash.short_summary: etichetta compressa opzionale di al massimo 60 caratteri per la visualizzazione compatta. Richiede Claude Code v2.1.212 o successivo.category: slug opzionale in kebab-case breve del tipo di risultato, comecorrectnessotest-coverage. Richiede Claude Code v2.1.199 o successivo.verdict: impostato quando è stata eseguita una pass di verifica; assente nelle revisioni solo inline.outcome: impostato solo quando si segnala di nuovo dopo aver applicato le correzioni.
Artifact
Nome del tool:Artifact
.html o .md locale come pagina di artifact ospitata, o elenca gli artifact pubblicati dell’utente. Ometti action o passa "publish" per pubblicare file_path, che è obbligatorio per l’azione di pubblicazione insieme a favicon, uno o due emoji che contrassegnano l’artifact nella galleria dell’utente. title nomina la pagina pubblicata nella scheda del browser e nella galleria quando il file HTML non ha un tag <title>. url indirizza un artifact esistente da aggiornare sul posto invece di crearne uno nuovo.
force è un’ultima risorsa di sovrascrittura che scarta una versione più recente che un’altra sessione ha pubblicato. In caso di conflitto, la pubblicazione non riuscita restituisce il contenuto più recente; Claude unisce le sue modifiche a quel contenuto, o rilegge l’artifact, e pubblica di nuovo. Passa force solo quando l’utente chiede esplicitamente di scartare quella versione.
Passa "list" per enumerare gli artifact pubblicati dell’utente; solo limit e scope possono accompagnarlo. scope predefinito a "mine", che elenca gli artifact che l’utente possiede; "shared" elenca gli artifact che altre persone hanno condiviso con l’utente, e "all" elenca entrambi.
capabilities: le capacità di runtime che la pagina pubblicata utilizza, codificate per nome di capacità, come i connettori che la pagina può chiamare. Il servizio di artifact convalida la dichiarazione e rifiuta una pubblicazione che nomina una capacità che l’account non può utilizzare o ne fornisce una con una configurazione non valida. Passa{}per cancellare una dichiarazione memorizzata, e ometti il campo su una ridistribuzione per mantenerla. Richiede Agent SDK v0.3.235 o successivo.contract: la versione di runtime su cui viene eseguita la pagina pubblicata. Omettilo per mantenere la versione corrente dell’artifact, passa"latest"per aggiornare, o passa una versione specifica per fissare o eseguire il rollback. Richiede Agent SDK v0.3.235 o successivo.
Projects
Nome del tool:Projects
method:
project_info: restituisce i metadati del progetto e l’elenco dei documenti.project_read: legge un documento perpath.project_search: interroga la base di conoscenza del progetto conquery.nlimita i risultati e predefinito a 5.project_write: crea o sostituisce un documento inpathda esattamente uno tracontent, che contiene testo inline, olocal_path, che nomina un file all’interno della directory di lavoro.present_to_user: truecontrassegna il documento scritto come il deliverable che l’utente deve vedere.project_delete: elimina un documento perpath.
ReadMcpResourceDir
Nome del tool:ReadMcpResourceDirTool
resources vuoto e il campo error segnala che l’elenco delle directory non è abilitato.
RefreshMcpTools
Nome del tool:RefreshMcpTools
CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1 nell’opzione env, e solo nelle sessioni con almeno un server MCP. Richiede Claude Code v2.1.211 o successivo.
ShowOnboardingRolePicker
Nome del tool:ShowOnboardingRolePicker
McpInput
Nome del tool: nomi di tool MCP dinamici della formamcp__<server>__<tool>
Tipi di output dei tool
Documentazione degli schemi di output per tutti i tool Claude Code incorporati. Questi tipi vengono esportati da@anthropic-ai/claude-agent-sdk e rappresentano i dati di risposta effettivi restituiti da ogni tool.
ToolOutputSchemas
Unione di tipi di output dei tool esportati da @anthropic-ai/claude-agent-sdk; i membri includono:
Agent
Nome del tool:Agent. Il nome precedente Task è ancora accettato come alias, e l’array tools nel messaggio di inizializzazione SDKSystemMessage attualmente elenca questo tool come Task per compatibilità con le versioni precedenti.
status: "completed" per le attività finite, "async_launched" per le attività di background, e "remote_launched" per le attività che Claude Code ha inviato a una sessione cloud remota, dove sessionUrl si collega a quella sessione e taskId l’identifica.
Sulla variante completed, resolvedModel nomina il modello su cui il subagente ha iniziato, che può differire dal model input richiesto quando availableModels o un altro override si applica. Questo campo richiede Claude Code v2.1.174 o successivo. Su async_launched, nomina il modello in uso quando l’attività è passata allo sfondo.
modelsUsed elenca i modelli utilizzati dal subagente, in ordine. Il campo è presente solo quando si è verificato uno scambio a metà esecuzione, e un modello appare di nuovo quando l’esecuzione è tornata a esso. Su async_launched, l’elenco copre i modelli utilizzati prima di passare allo sfondo. Sia modelsUsed che il comportamento di passaggio allo sfondo di resolvedModel richiedono Claude Code v2.1.212 o successivo.
Se Claude Code ha mantenuto il worktree isolato del subagente, worktreePath sul risultato completed è dove trovarlo. worktreeBranch è il suo ramo, presente quando Claude Code ha creato il worktree con git.
Claude Code riempie usage e totalTokens dalla richiesta API finale del subagente, non dall’intera esecuzione, quindi usage.service_tier è la stringa del livello di servizio che l’API ha segnalato su quella richiesta. Quando presente, usage.output_tokens_details.thinking_tokens è il numero di token di output di quella richiesta che erano token di thinking. Il campo output_tokens_details richiede TypeScript SDK v0.3.228 o successivo, che raggruppa Claude Code v2.1.228.
usage.output_tokens_details corrisponde a Usage.output_tokens_details nel significato, limitato a quella richiesta finale, ma ogni livello di esso è opzionale qui. Proteggi sia l’oggetto che il campo, ad esempio usage.output_tokens_details?.thinking_tokens ?? 0, piuttosto che leggerlo direttamente.
Prima della v2.1.207, il tipo pubblicato era più ristretto. Ometteva worktreePath, worktreeBranch, citations, toolStats.frameCount, e i campi di utilizzo inference_geo, speed e iterations, e tipizzava service_tier come "standard" | "priority" | "batch". I campi che il tipo contrassegna come opzionali possono essere assenti nei risultati registrati da versioni precedenti.
AskUserQuestion
Nome del tool:AskUserQuestion
response viene impostato quando l’utente ha digitato una risposta in forma libera invece di rispondere alle domande strutturate; quando presente, Claude riceve “L’utente ha risposto: …” invece dell’elenco di risposte per domanda.
Bash
Nome del tool:Bash
stdout, stderr e backgroundTaskId contengono:
timedOutAfterMs è il timeout in millisecondi, impostato quando il comando ha raggiunto il suo timeout e si è spostato allo sfondo piuttosto che iniziare lì esplicitamente. backgroundCwdHint viene impostato quando il comando in background conteneva un builtin di cambio directory come cd, pushd, popd o chdir, e nota che la directory di lavoro della sessione non è cambiata. Entrambi i campi richiedono Claude Code v2.1.210 o successivo.
Quando un subagente in esecuzione in primo piano possiede un comando in background, Claude Code termina il comando quando quel subagente fornisce la sua risposta finale. Claude Code imposta backgroundEndsWithFinalResponse su true su tali comandi, e omette il campo quando il comando sopravvive al turno, come i comandi avviati dalla conversazione principale o dai subagenti di background. Il campo richiede Claude Code v2.1.227 o successivo.
Claude Code imposta gitOperation.commit.branch al ramo denominato nella riga di riepilogo del commit di git, e lo omette per un commit effettuato su un HEAD staccato. Il campo richiede Agent SDK v0.3.227 o successivo. Claude Code segnala un comando gh pr reopen come l’azione PR reopened, che richiede Agent SDK v0.3.234 o successivo.
Monitor
Nome del tool:Monitor
TaskStop per annullare il watch in anticipo.
Edit
Nome del tool:Edit
Read
Nome del tool:Read
type.
Write
Nome del tool:Write
originalFile e structuredPatch contengono dipende dalla scrittura:
- Per un file appena creato,
originalFileè null estructuredPatchè vuoto - Su una sovrascrittura,
originalFilecontiene il contenuto precedente, tranne quando quel contenuto è più grande di circa 10 MB: Claude Code quindi salta il diff e restituisceoriginalFilenull estructuredPatchvuoto structuredPatchè anche vuoto quando la scrittura non ha cambiato nulla o il diff è scaduto
Glob
Nome del tool:Glob
totalMatches e countIsComplete richiedono Claude Code v2.1.191 o successivo. totalMatches segnala il numero di file corrispondenti prima del troncamento. Quando countIsComplete è false, totalMatches è un limite inferiore perché la ricerca sottostante ha troncato il suo stesso output.
Grep
Nome del tool:Grep
mode: elenco di file, contenuto con corrispondenze o conteggi di corrispondenze. In modalità count, numFiles e numMatches sono totali sull’intero set di risultati, non sulla sezione impaginata. Prima della v2.1.208, un head_limit o offset che troncava le voci elencate troncava anche questi totali.
totalFiles richiede Claude Code v2.1.208 o successivo e segnala il numero totale di risultati prima della paginazione head_limit e offset in modalità files_with_matches. totalLines richiede Claude Code v2.1.210 o successivo e segnala il numero totale di righe prima della paginazione in modalità content.
TaskStop
Nome del tool:TaskStop
NotebookEdit
Nome del tool:NotebookEdit
WebFetch
Nome del tool:WebFetch
artifactRead è il record proprio di Claude Code di una lettura di artifact, presente solo quando Claude ha recuperato un artifact che la sessione può pubblicare. Claude Code lo legge di nuovo quando una sessione riprende in modo che una successiva pubblicazione si basi sulla versione giusta; il tuo codice non ha bisogno di agire su di esso. slug nomina l’artifact, ver è la versione che la lettura ha messo in record ed è assente quando non ne ha registrata nessuna, e seeded: false contrassegna una lettura il cui codice sorgente completo non ha raggiunto Claude. Il campo seeded richiede Agent SDK v0.3.239 o successivo.
WebSearch
Nome del tool:WebSearch
Workflow
Nome del tool:Workflow
error prima di trattare l’esecuzione come avviata: uno script che non supera il controllo della sintassi restituisce status: "async_launched" con error impostato e non viene mai eseguito.
TodoWrite
Nome del tool:TodoWrite
The following tools are available by default only on Claude 3.x models, Opus 4 through 4.7, Sonnet 4 through 4.6, and Haiku 4.5. On every other model, including model IDs Claude Code doesn’t recognize, they aren’t available unless you opt in:
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite instead when you set CLAUDE_CODE_ENABLE_TASKS=0.This default set applies in Claude Code v2.1.268 and later, which the TypeScript Agent SDK bundles from v0.3.268.Vedi Disponibilità del modello per aderire.TaskCreate
Nome del tool:TaskCreate
TaskUpdate
Nome del tool:TaskUpdate
TaskGet
Nome del tool:TaskGet
null quando l’ID non viene trovato.
TaskList
Nome del tool:TaskList
ExitPlanMode
Nome del tool:ExitPlanMode
ListMcpResources
Nome del tool:ListMcpResourcesTool
ReadMcpResource
Nome del tool:ReadMcpResourceTool
EnterWorktree
Nome del tool:EnterWorktree
ExitWorktree
Nome del tool:ExitWorktree
EnterPlanMode
Nome del tool:EnterPlanMode
CronCreate
Nome del tool:CronCreate
CronDelete
Nome del tool:CronDelete
CronList
Nome del tool:CronList
.claude/scheduled_tasks.json e lavori solo sessione dalla sessione corrente. Un lavoro solo sessione porta durable: false; i lavori letti dal disco omettono il campo.
ScheduleWakeup
Nome del tool:ScheduleWakeup
stopped è true quando la chiamata ha terminato il loop con stop: true. Richiede Claude Code v2.1.202 o successivo. Il campo cancelledWakeups conta quanti risvegli in sospeso una chiamata stop: true ha annullato. Un valore di 0 significa che nulla era in sospeso, e un cron /loop ricorrente non viene annullato da stop: true. Richiede Claude Code v2.1.206 o successivo.
RemoteTrigger
Nome del tool:RemoteTrigger
PushNotification
Nome del tool:PushNotification
REPL
Nome del tool:REPL
Read interne.
ReportFindings
Nome del tool:ReportFindings
short_summary ripetuto richiede Claude Code v2.1.212 o successivo.
Artifact
Nome del tool:Artifact
url della pagina pubblicata e il path locale che è stato pubblicato per l’azione di pubblicazione, con updated impostato su true quando la pubblicazione ha ridistribuito un artifact esistente, e warnings che contiene eventuali avvisi al momento della pubblicazione. L’azione di elenco restituisce invece le righe artifacts, con truncated impostato quando esistono più artifact del limite richiesto. Negli elenchi il cui ambito non è "mine", ogni riga contiene rel che contrassegna se l’utente possiede l’artifact o se è stato condiviso con loro, e l’scope dell’output registra quale ambito non predefinito ha prodotto l’elenco; entrambi sono assenti negli elenchi predefiniti.
Projects
Nome del tool:Projects
method, rispecchiando l’input. project_read restituisce piccoli documenti di testo inline in content e scrive documenti più grandi in un percorso local_file invece; project_search restituisce hits RAG con rag: true quando l’indice del progetto è disponibile e ricade su un elenco di percorsi docs altrimenti.
ReadMcpResourceDir
Nome del tool:ReadMcpResourceDirTool
"inode/directory"; error contiene un messaggio leggibile quando il server non poteva elencare la directory.
RefreshMcpTools
Nome del tool:RefreshMcpTools
refreshed significa che l’elenco degli strumenti ri-interrogato è stato applicato, error significa che la ri-interrogazione non è riuscita e il set di strumenti precedente è stato mantenuto, e not_connected significa che il server non ha una connessione live per interrogare.
ShowOnboardingRolePicker
Nome del tool:ShowOnboardingRolePicker
role quando ha scelto un chip di ruolo o ne ha digitato uno, e dismissed: true quando ha chiuso il selettore. Un oggetto vuoto significa che l’utente ha approvato la chiamata senza scegliere un ruolo.
McpOutput
Nome del tool: nomi di tool MCP dinamici della formamcp__<server>__<tool>
undefined, sebbene il tipo esportato non modelli questo.
Tipi di permesso
PermissionUpdate
Operazioni per l’aggiornamento dei permessi.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
Altri tipi
ApiKeySource
Da dove proviene la chiave API per le richieste della sessione, segnalata come apiKeySource nel messaggio di inizializzazione SDKSystemMessage.
Agent SDK v0.3.234 e versioni successive elencano questi quattro valori nel tipo. Il tipo mantiene anche
user, project, org, temporary e oauth affinché il codice più vecchio continui a compilarsi, e Claude Code non li segnala.
SdkBeta
Funzioni beta disponibili che possono essere abilitate tramite l’opzione betas. Vedi Intestazioni beta per ulteriori informazioni.
SlashCommand
Informazioni su un comando disponibile.
ModelInfo
Informazioni su un modello disponibile.
AgentInfo
Informazioni su un subagente disponibile che può essere invocato tramite il tool Agent.
McpServerStatus
Stato di un server MCP connesso.
McpServerStatusConfig
La configurazione di un server MCP come segnalato da mcpServerStatus(). Questa è l’unione di tutti i tipi di trasporto del server MCP.
McpServerConfig per i dettagli su ogni tipo di trasporto.
AccountInfo
Informazioni sull’account per l’utente autenticato.
ModelUsage
Statistiche di utilizzo per modello restituite nei messaggi di risultato. Il valore costUSD è una stima lato client. Vedi Traccia costo e utilizzo per le avvertenze di fatturazione.
thinkingTokens conta i token di pensiero che questo modello ha generato. outputTokens li include già, quindi non sommare i due insieme. Il campo è assente fino a quando un turno non viene eseguito su una versione di Claude Code che lo registra, quindi una sessione ripresa che è iniziata su una versione precedente segnala un conteggio parziale. thinkingTokens richiede Agent SDK v0.3.257 o successivo.
I campi canonicalModel e provider richiedono Claude Code v2.1.218 o successivo. canonicalModel è l’ID del modello canonico che la ricerca dei prezzi utilizza; può differire dalla stringa del modello grezzo che chiave la voce, ad esempio quando quella stringa è un ID specifico del provider o un alias.
provider nomina il backend API che ha servito il modello, come firstParty, bedrock, vertex, foundry, anthropicAws, mantle, o gateway.
costBasis nomina la tabella dei prezzi che ha prezzato la richiesta più recente del modello: list per il prezzo di listino, managed per una tabella modelPricing, o unknown quando nessuno dei due ha corrisposto all’ID del modello. Il campo richiede Claude Code v2.1.246 o successivo.
ConfigScope
NonNullableUsage
Una versione di Usage con tutti i campi nullable resi non-nullable.
Usage
Statistiche di utilizzo dei token. Questo è il tipo BetaUsage da @anthropic-ai/sdk.
BetaServerToolUsage, BetaIterationsUsage e BetaOutputTokensDetails sono definiti in @anthropic-ai/sdk.
output_tokens_details suddivide l’output fatturato per categoria. Attualmente contiene un campo, thinking_tokens: number, che conta i token di output che il modello ha generato come ragionamento interno, inclusi i delimitatori del blocco di pensiero. Il campo output_tokens_details richiede TypeScript SDK v0.3.228 o successivo, che raggruppa Claude Code v2.1.228.
- Fatturazione: leggi la suddivisione per l’osservabilità, non per la fatturazione.
output_tokensrimane il totale autorevole, eoutput_tokens - thinking_tokensapprossima l’output non di ragionamento. - Cosa conta il conteggio: il ragionamento grezzo che il modello ha prodotto, che può essere più lungo del testo di pensiero restituito nel corpo della risposta. L’API lo calcola ritokenizzando quel testo grezzo, quindi può differire dal conteggio esatto della generazione del modello di alcuni token.
- Streaming: sui messaggi dell’assistente trasmessi questa suddivisione, come
output_tokens, è un placeholdermessage_starte non contiene un conteggio reale, quindi leggilo dal messaggio di risultatousagecome Leggi i token di output dal messaggio di risultato descrive. Nel messaggio di risultato,thinking_tokenslegge0quando il modello o il provider non segnala alcuna suddivisione. - Casi
null:output_tokens_detailsstesso ènullsui messaggi dell’assistente che Claude Code sintetizza, come i messaggi di errore API.
CallToolResult
Tipo di risultato del tool MCP (da @modelcontextprotocol/sdk/types.js). structuredContent è un oggetto JSON che può essere restituito insieme a content, inclusi blocchi di immagini. Vedi Restituisci dati strutturati.
SDKMcpResourceLink
Un file che un tool MCP ha restituito per riferimento. Claude Code costruisce ogni voce da un blocco resource_link nel risultato del tool e fornisce l’elenco come resourceLinks su SDKUserMessage.tool_use_result, o come resource_links su SDKTaskNotificationMessage quando la chiamata è terminata in background. Richiede Agent SDK v0.3.257 o successivo.
uri o name non è una stringa, e omette un campo opzionale il cui valore non è del tipo elencato.
ThinkingConfig
Controlla il comportamento di pensiero/ragionamento di Claude. Ha precedenza sul deprecato maxThinkingTokens.
display controlla se il testo di pensiero viene restituito "summarized" o "omitted". Su Claude Opus 4.7 e versioni successive, l’impostazione predefinita dell’API è "omitted", quindi imposta "summarized" per ricevere il contenuto di pensiero nei blocchi thinking. Claude Code non invia display ad Amazon Bedrock o alla piattaforma Agent di Google Cloud, quindi su quei provider Opus 4.7 e versioni successive restituiscono blocchi thinking vuoti anche quando imposti display su "summarized".
SpawnedProcess
Interfaccia per la generazione di processi personalizzati (usata con l’opzione spawnClaudeCodeProcess). ChildProcess soddisfa già questa interfaccia.
SpawnOptions
Opzioni passate alla funzione di generazione personalizzata.
Il campo
signal comunica alla tua funzione di generazione quando smontare il processo. Passalo come opzione signal al spawn() di Node, oppure passalo al tuo gestore di smontaggio della VM o del contenitore.Questo segnale non si attiva nell’istante in cui Options.abortController si interrompe. L’SDK prima chiude lo stdin del processo e attende circa due secondi affinché la CLI si arresti correttamente, quindi interrompe questo segnale. Per reagire nel momento in cui il chiamante si interrompe, ascolta il tuo Options.abortController.signal, che la tua funzione di generazione può referenziare dal suo ambito di chiusura.McpSetServersResult
Risultato di un’operazione setMcpServers().
setMcpServers(), Claude Code applica queste regole:
- Server che la chiamata non nomina: Claude Code mantiene i server forniti dai plugin in esecuzione. Richiede Agent SDK v0.3.210 o successivo.
- Server che la chiamata nomina: ad eccezione dei server integrati che la CLI ha avviato all’avvio, Claude Code sostituisce un server in esecuzione solo quando la sua configurazione differisce da quella che hai passato.
- Server integrati che la CLI ha avviato all’avvio: se la chiamata ne nomina uno, Claude Code scarta quella voce e la segnala in
errors.
added elenca i server che Claude Code ha aggiunto o sostituito, indipendentemente dal fatto che si siano connessi. Un server che non si è connesso appare sia in added che in errors, con il testo di errore sotto errors e una riga failed in mcpServerStatus(). Prima di Claude Code v2.1.257, un server il cui tentativo di connessione ha lanciato un’eccezione era segnalato solo sotto errors.
RewindFilesResult
Risultato di un’operazione rewindFiles().
skippedLinks conta i percorsi tracciati che il rewind ha rifiutato di ripristinare o eliminare per la sicurezza dei link: un symlink, hard link, o altro file non regolare nel percorso tracciato, una directory padre che non si risolve più a dove puntava quando il checkpoint è stato preso, o un backup che non poteva essere letto in sicurezza. Il campo richiede Claude Code v2.1.216 o successivo. Una chiamata di anteprima con rewindFiles(userMessageId, { dryRun: true }) non lo imposta mai.
SDKStatusMessage
Messaggio di aggiornamento dello stato (ad esempio, compattazione).
SDKTaskNotificationMessage
Notifica quando un’attività di background si completa, fallisce o viene interrotta. Le attività di background includono i comandi Bash run_in_background, i watch Monitor e i subagenti di background. Per il campo ambient, vedi SDKTaskStartedMessage, che lo definisce e il suo requisito di versione.
tool_result per quella chiamata contiene solo un placeholder e il risultato reale della chiamata arriva in questa notifica. Abbina la notifica alla chiamata con tool_use_id. Su una notifica completed, resource_links elenca i file che il tool ha restituito per riferimento come voci SDKMcpResourceLink, con gli stessi limiti di 50 link e 64 KiB di tool_use_result.resourceLinks. Claude Code omette resource_links quando il risultato non aveva link e sulle notifiche per attività che non sono chiamate al tool MCP. resource_links richiede Agent SDK v0.3.257 o successivo.
Claude Code antepone un avviso a ogni notifica di attività che invia al modello, ad eccezione delle consegne contrassegnate con il sottotipo scheduled-trigger, che portano invece un inquadramento di attività assegnata. L’avviso afferma che non si è verificato alcun input umano, quindi il modello non tratta la notifica come un’istruzione o un’approvazione dell’utente.
Per rilevare un turno di notifica di attività, controlla origin.kind === "task-notification" su SDKUserMessage o SDKResultMessage piuttosto che abbinare il testo dell’avviso. Leggi subkind dallo stesso campo se hai bisogno di sapere cosa l’ha sollevato. Prima di v2.1.205, Claude Code ometteva l’avviso dalle notifiche che arrivavano mentre la sessione era inattiva.
SDKToolUseSummaryMessage
Riepilogo dell’uso dei tool in una conversazione.
SDKHookStartedMessage
Emesso quando un hook inizia l’esecuzione.
Claude Code fornisce questo messaggio, SDKHookProgressMessage, e SDKHookResponseMessage al flusso di messaggi immediatamente, incluso mentre un hook SessionStart o Setup è ancora in esecuzione durante l’avvio della sessione. Claude Code v2.1.169 attraverso v2.1.203 ha fornito questi messaggi in un batch dopo che un hook SessionStart o Setup era completato; v2.1.204 ha ripristinato la consegna dal vivo.
SDKHookProgressMessage
Emesso mentre un hook è in esecuzione, con output stdout/stderr.
SDKHookResponseMessage
Emesso quando un hook finisce l’esecuzione.
SDKToolProgressMessage
Emesso periodicamente mentre un tool è in esecuzione per indicare il progresso.
tool_progress ogni 30 secondi con heartbeat: true. Ogni heartbeat contiene il nome del tool e i secondi trascorsi, quindi puoi distinguere una chiamata di lunga durata da una sessione bloccata. Claude Code non emette heartbeat per le chiamate al tool all’interno di un subagente. Il campo heartbeat richiede Agent SDK v0.3.214 o successivo. Prima di v2.1.257, Claude Code non emetteva heartbeat nemmeno per una chiamata al tool Agent in primo piano.
Sui messaggi tool_progress per il tool Agent diversi dagli heartbeat, subagent_type nomina il tipo di subagente in esecuzione, come general-purpose. subagent_retry è presente mentre quel subagente attende un backoff di errore API, come un limite di velocità o un sovraccarico, con un messaggio per tentativo di ripetizione. Entrambi i campi richiedono Agent SDK v0.3.214 o successivo.
Per rendere un indicatore di ripetizione da subagent_retry:
- Traccia l’indicatore per
parent_tool_use_id, che è univoco per subagente.tool_use_idè condiviso da subagenti paralleli da un turno dell’assistente, quindi tracciare per esso lascerebbe che l’aggiornamento di un subagente cancelli l’indicatore di un altro. - Cancella l’indicatore quando un successivo
tool_progressper lo stessoparent_tool_use_idarriva senzasubagent_retrynéheartbeat: true, o quando arriva il messaggio di risultato del tool. I frame conheartbeat: truesegnalano solo vivacità, quindi mantieni l’indicatore quando uno arriva.attemptpuò superaremax_retriessotto ripetizione persistente, quindi non derivare la cancellazione dai contatori. - Tratta
error_categorycome un token per scegliere il tuo testo di messaggio, non come testo di visualizzazione. I valori sonorate_limit,overloaded,authentication_failed,server_error,cloud_credential_erroreunknown. Gestisci un valore che non riconosci come gestisciunknown, perché le versioni successive possono aggiungere valori.
SDKAuthStatusMessage
Emesso durante i flussi di autenticazione.
SDKTaskStartedMessage
Emesso quando un’attività inizia. Il campo task_type è "local_bash" per i comandi Bash e i watch Monitor, "local_agent" per i subagenti, o "remote_agent".
ambient è true per le attività che non fanno parte del lavoro della sessione, come le attività che Claude Code esegue per la sua stessa operazione. I watcher di aggiornamento dal vivo sono anche ambient, inclusi i watcher che l’utente ha chiesto. Escludi le attività ambient dagli indicatori di attività. Il campo richiede Agent SDK v0.3.247 o successivo.
ambient appare anche su SDKTaskNotificationMessage e su voci SDKBackgroundTasksChangedMessage.
is_backgrounded e spawn_depth descrivono come Claude Code ha avviato l’attività. Entrambi i campi richiedono Agent SDK v0.3.238 o successivo.
is_backgrounded: Claude Code lo imposta su attività"local_agent"e"local_bash".truesignifica che l’attività viene eseguita in background.falsesignifica che l’attività viene eseguita in primo piano, e la chiamata al tool che l’ha avviata rimane bloccata fino a quando l’attività non finisce o si sposta in background.spawn_depth: Claude Code lo imposta solo su attività"local_agent". Un subagente che il thread principale ha generato ha profondità1. Un subagente che un subagente di profondità1ha generato ha profondità2, e così via.
is_backgrounded: true, perché Claude Code esegue ogni subagente ripreso in background. Quando un’attività in primo piano si sposta in background in seguito, Claude Code segnala il nuovo valore is_backgrounded in un messaggio task_updated piuttosto che inviare un secondo task_started.
SDKTaskProgressMessage
Emesso periodicamente mentre un subagente o un’attività di background è in esecuzione. Il campo summary è popolato solo quando agentProgressSummaries è abilitato.
SDKTaskUpdatedMessage
Emesso quando lo stato di un’attività di background cambia, ad esempio quando passa da running a completed. Unisci patch nella tua mappa attività locale con chiave task_id. Il campo end_time è un timestamp Unix epoch in millisecondi, confrontabile con Date.now().
SDKBackgroundTasksChangedMessage
Emesso ogni volta che l’insieme delle attività di background attive cambia: un’attività inizia, si completa, viene terminata, un agente in primo piano viene messo in background, o il campo description o ambient di un’attività cambia.
L’array tasks è l’insieme completo attivo. Sostituisci qualsiasi insieme memorizzato nella cache con ogni payload invece di abbinare gli eventi task_started e task_notification, in modo che il prossimo cambio di appartenenza corregga qualsiasi evento che hai perso.
L’ordine relativo a quegli eventi per attività è non specificato, quindi non correlare i due flussi.
Nulla viene emesso all’avvio. Reimposta a un insieme vuoto ogni volta che il processo CLI della sessione inizia o si riavvia e lascia che il prossimo cambio di appartenenza lo ripopoli.
Quando invii una richiesta di controllo initialize ripetuta a una sessione in esecuzione, ad esempio con reinitialize() dopo un gap di trasporto, Claude Code segue la risposta con uno snapshot dell’insieme attivo corrente, anche quando è vuoto. Un host che si ricollega quindi apprende cosa è in esecuzione senza aspettare il prossimo cambio di appartenenza. Prima di Agent SDK v0.3.239, Claude Code non inviava snapshot dopo un initialize ripetuto.
Richiede Claude Code v2.1.203 o successivo.
SDKThinkingTokensMessage
Emesso mentre Claude sta producendo un blocco di pensiero, incluso uno redatto. estimated_tokens è una stima in esecuzione dei token di pensiero generati finora nel blocco corrente, e estimated_tokens_delta è l’incremento portato da questo frame. Usa queste stime per la visualizzazione del progresso.
Quando il modello o il provider segnala una suddivisione, il conteggio finale per il ciclo dell’agente di primo livello è il usage.output_tokens_details.thinking_tokens del messaggio di risultato, che non include i token dei subagenti.
Richiede Claude Code v2.1.153 o successivo.
SDKFilesPersistedEvent
Emesso quando i checkpoint dei file vengono persistiti su disco.
SDKRateLimitEvent
Emesso quando la sessione incontra un limite di velocità.
errorCode è "credits_required", il rifiuto proviene da un abbonamento claude.ai il cui utilizzo incluso è esaurito, e la sessione non può continuare fino a quando l’utente non acquista crediti di utilizzo. canUserPurchaseCredits indica se l’utente autenticato può acquistare crediti per l’account, e hasChargeableSavedPaymentMethod indica se un metodo di pagamento salvato è registrato. Tutti e tre i campi sono assenti negli eventi di limite di velocità che non sono rifiuti con crediti richiesti. Richiede Claude Code v2.1.181 o successivo.
SDKLocalCommandOutputMessage
Claude Code non emette questo tipo di messaggio. Quando invii un comando come /context o /usage come prompt, il suo output arriva come SDKAssistantMessage.
SDKCommandsChangedMessage
Emesso quando l’insieme dei comandi disponibili cambia durante la sessione, ad esempio quando Claude Code scopre skill mentre l’agente entra in una sottodirectory. L’array commands è l’elenco completo aggiornato, quindi sostituisci qualsiasi elenco di comandi memorizzato nella cache con questo payload. Chiamare supportedCommands() dopo questo messaggio restituisce lo stesso elenco aggiornato, perché il metodo traccia l’ultimo push; questo richiede Agent SDK v0.3.216 o successivo. Nelle versioni SDK precedenti, supportedCommands() restituisce lo snapshot acquisito all’inizializzazione e non riflette mai i cambiamenti durante la sessione.
SDKPromptSuggestionMessage
Emesso dopo un turno quando promptSuggestions è abilitato e Claude Code ha generato un suggerimento per quel turno. Contiene il prompt utente successivo previsto. Per i turni che non ne ricevono, vedi Quando Claude Code salta i suggerimenti.
SDKConversationResetMessage
Emesso quando la conversazione della sessione viene sostituita senza terminare la sessione. In una chiamata query(), solo /clear e i suoi alias producono questo messaggio. Monta una trascrizione vuota sotto new_conversation_id e scarta qualsiasi titolo di sessione memorizzato nella cache.
SDKConversationResetMessage in Claude Code v2.1.203 e successivo. Prima di v2.1.203, SDKMessage faceva riferimento al tipo senza dichiararlo, quindi il restringimento su type === "conversation_reset" non riusciva a typecheck quando skipLibCheck era disabilitato.
AbortError
Classe di errore personalizzata per le operazioni di interruzione.
AbortError è l’unica classe di errore nell’API tipizzata dell’SDK. Altri errori, come il processo Claude Code che esce o non riesce ad avviarsi, rifiutano l’iterazione del messaggio con errori che non portano alcuna classe SDK su cui abbinare. Troubleshooting chiave quegli errori per messaggio, con la causa e la correzione per ciascuno.
Configurazione della sandbox
SandboxSettings
Configurazione per il comportamento della sandbox. Usa questo per abilitare il sandboxing dei comandi e configurare le restrizioni di rete a livello di programmazione.
La sandbox dipende dal supporto della piattaforma e, su Linux, da strumenti come
bubblewrap e socat. Quando enabled è true e la sandbox non può avviarsi, query() segnala un messaggio result con subtype: "error_during_execution" e il motivo in errors. Per una singola chiamata query(), l’SDK genera un’eccezione dopo aver ceduto quel risultato di errore, quindi racchiudi il ciclo in un blocco try per continuare oltre. Vedi Gestire il risultato per il contratto di errore.Per eseguire senza sandbox, imposta failIfUnavailable: false.Esempio di utilizzo
SandboxNetworkConfig
Configurazione specifica della rete per la modalità sandbox. Queste impostazioni si applicano ai comandi Bash in sandbox quando enabled è true nella SandboxSettings padre. Non limitano lo strumento WebFetch, che utilizza invece regole di permesso.
Il proxy sandbox integrato applica
allowedDomains in base al nome host richiesto e non termina o ispeziona il traffico TLS, quindi tecniche come il domain fronting possono potenzialmente bypassarlo. Vedi Limitazioni di sicurezza del sandboxing per i dettagli e Distribuzione sicura per configurare un proxy che termina TLS.SandboxFilesystemConfig
Configurazione specifica del filesystem per la modalità sandbox.
Fallback dei permessi per i comandi senza sandbox
QuandoallowUnsandboxedCommands è abilitato, il modello può richiedere di eseguire comandi al di fuori della sandbox impostando dangerouslyDisableSandbox: true nell’input del tool. Queste richieste ricadono nel sistema di permessi esistente, il che significa che il tuo handler canUseTool viene invocato, permettendoti di implementare la logica di autorizzazione personalizzata. I comandi elencati in excludedCommands invece bypassano la sandbox automaticamente, senza coinvolgimento del modello; vedi SandboxSettings.
Nell’esempio seguente, isCommandAuthorized rappresenta un controllo di autorizzazione che definisci.
Vedi anche
- Panoramica dell’SDK - Concetti generali dell’SDK
- Riferimento Python SDK - Documentazione dell’SDK Python
- Riferimento CLI - Interfaccia della riga di comando
- Flussi di lavoro comuni - Guide passo dopo passo