Skip to main content

Hook di sessione

Con hooks puoi inserire logica in ciascuna fase del ciclo di vita di una sessione Copilot. Puoi aggiungere controllo dell’esecuzione degli strumenti, log di audit, arricchimento del prompt, gestione degli errori e altro senza modificare l’implementazione core.

Flusso degli hook

Uso di base

Hook disponibili

Restituendo null prosegue il comportamento predefinito.

Casi d’uso tipici

1) Permission control (controllo esecuzione)

  • Usa onPreToolUse per applicare una allow-list di strumenti
  • Le operazioni distruttive richiedono approvazione umana con permissionDecision: 'ask'
  • Motiva il rifiuto con permissionDecisionReason
  • Consulta l’elenco di Tools per i possibili toolName (es. view, glob, bash)

2) Auditing / compliance

  • Combina gli hook del ciclo di vita per raccogliere eventi di audit
  • Persisti i dati raccolti per singolo ID sessione

3) Prompt enrichment (arricchimento input)

  • In onSessionStart aggiungi le informazioni del progetto (linguaggio, framework, convenzioni) in additionalContext
  • In onUserPromptSubmitted espandi shortcut (/fix, /test)

4) Result filtering (formattazione dei risultati)

  • In onPostToolUse maschera API key / token / password ecc.
  • Sintetizza i risultati troppo lunghi e restituisci i dettagli solo se necessario

5) Error recovery (ripristino)

  • In onErrorOccurred esegui retry solo quando model_call e recoverable=true
  • Per errori non recuperabili notifica in modo conciso l’utente tramite userNotification

6) Session metrics (misurazione)

  • In onSessionStart registra l’orario di inizio
  • In onPreToolUse / onUserPromptSubmitted aggiorna i contatori
  • In onSessionEnd emetti durata, numero di strumenti e motivo di terminazione

Tipi di input / output degli hook

Input comune (BaseHookInput)

PreToolUseHookInput

PreToolUseHookOutput

PostToolUseHookInput

PostToolUseHookOutput

UserPromptSubmittedHookInput

UserPromptSubmittedHookOutput

SessionStartHookInput

SessionStartHookOutput

SessionEndHookInput

SessionEndHookOutput

ErrorOccurredHookInput

ErrorOccurredHookOutput

ToolResultObject

Oggetto standard per il risultato di uno strumento.

Best practice

  1. Non eseguire troppi processi sincroni pesanti direttamente negli hook. Se necessario, rendili asincroni.
  2. Quando non sono necessarie modifiche, restituisci null e lascia il comportamento predefinito.
  3. Rendi esplicito permissionDecision quando possibile.
  4. Non sopprimere eccessivamente gli errori critici: prevedi percorsi di log/notifica.
  5. Gestisci lo stato per sessione basandoti sull’ID e ripulisci in onSessionEnd.
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 13 luglio 2026