Gli hook sono pensati per utenti esperti e team aziendali che necessitano di un controllo granulare sul comportamento di Cascade. Richiedono conoscenze di base di scripting shell.
Cosa puoi creare
- Logging e analisi: Tieni traccia di ogni file letto, modifica al codice, comando eseguito, prompt dell’utente o risposta di Cascade ai fini della conformità e dell’analisi dell’utilizzo
- Controlli di sicurezza: Impedisci a Cascade di accedere a file sensibili, eseguire comandi pericolosi o elaborare prompt che violano le policy
- Controllo qualità: Esegui automaticamente linter, formatter o test dopo le modifiche al codice
- Flussi di lavoro personalizzati: Integrali con tracker di issue, sistemi di notifica o pipeline di distribuzione
- Standardizzazione del team: Applica standard di codifica e best practice in tutta l’organizzazione
Come funzionano gli Hooks
- Riceve il contesto (i dettagli dell’azione in esecuzione) tramite JSON come input standard
- Esegue il tuo script - Python, Bash, Node.js o qualsiasi altro eseguibile
- Restituisce un risultato tramite il codice di uscita e i flussi di output
2. Questo rende i pre-hook ideali per implementare policy di sicurezza o controllo di convalida.
Configurazione
A livello di sistema
- macOS:
/Library/Application Support/Windsurf/hooks.json - Linux/WSL:
/etc/windsurf/hooks.json - Windows:
C:\ProgramData\Windsurf\hooks.json
A livello utente
- Devin Desktop IDE:
~/.codeium/windsurf/hooks.json - Plugin JetBrains:
~/.codeium/hooks.json
A livello di workspace
- Posizione:
.windsurf/hooks.jsonnella radice del workspace
Gli hook di tutte e tre le posizioni vengono combinati. Se lo stesso evento hook è configurato in più posizioni, tutti gli hook verranno eseguiti nell’ordine seguente: sistema → utente → workspace.
Struttura di base
pre_read_code specifica sia un comando per macOS/Linux sia un comando PowerShell per Windows. L’hook post_write_code specifica solo command, quindi verrà eseguito su macOS/Linux e su Windows userà PowerShell come soluzione di fallback.
Opzioni di configurazione
Comportamento multipiattaforma
command e powershell consentono di definire, in un’unica configurazione, comandi appropriati per ciascuna piattaforma. Questo è utile per i team con parchi macchine misti macOS/Linux e Windows.
Informazioni sul parametro
working_directory:- Nei workspace multi-repo, il valore predefinito è la radice del repo su cui si sta lavorando
- I percorsi relativi vengono risolti a partire dalla posizione predefinita (workspace o radice del repo)
- I percorsi assoluti sono supportati
- L’uso di
~per espandere la home directory non è supportato
Eventi hook
Struttura di input comune
Negli esempi seguenti, i campi comuni sono omessi per brevità. Esistono dodici tipi principali di eventi hook:
pre_read_code
file_path può essere il percorso di una directory quando Cascade legge una directory in modo ricorsivo.
post_read_code
file_path può essere il percorso di una directory quando Cascade legge una directory in modo ricorsivo.
pre_write_code
post_write_code
pre_run_command
post_run_command
pre_mcp_tool_use
post_mcp_tool_use
pre_user_prompt
show_output non è applicabile a questo hook.
post_cascade_response
response contiene il contenuto in formato Markdown della risposta di Cascade dall’ultimo input dell’utente. Include le risposte del planner, le azioni degli strumenti (letture e scritture di file, comandi) e qualsiasi altro passaggio eseguito da Cascade. Include anche informazioni su quali regole sono state attivate. Consulta l’esempio Tracking Triggered Rules per capire come analizzare l’utilizzo delle regole.
L’opzione di configurazione show_output non si applica a questo hook.
post_cascade_response_with_transcript
post_cascade_response. Invece di fornire un riepilogo markdown inline, questo hook scrive la trascrizione completa della conversazione (dall’inizio della conversazione) in un file JSONL locale e ne fornisce il percorso.
Casi d’uso: registrazione per audit e conformità in ambito Enterprise, monitoraggio dei contributi generati dall’IA, invio delle trascrizioni a strumenti esterni di osservabilità o analisi
JSON di input:
transcript_path punta a un file JSONL in ~/.windsurf/transcripts/{trajectory_id}.jsonl. Ogni riga contiene un oggetto JSON che rappresenta un singolo passaggio della conversazione, con i campi type e status, oltre ai dati specifici del passaggio. Ad esempio:
0600. Devin Desktop limita automaticamente la directory delle trascrizioni a 100 file, eliminando i più vecchi in base alla data di modifica.
L’opzione di configurazione show_output non si applica a questo hook.
Questa tabella mostra le principali differenze tra gli hook post_cascade_response e post_cascade_response_with_transcript:
post_setup_worktree
.env o altri file non tracciati nel worktree, installare dipendenze, eseguire script di setup
Variabili d’ambiente:
JSON di input:
Codici di uscita
Tieni presente che, se
show_output è true, l’utente può vedere nella UI di Cascade qualsiasi output standard o errore standard generato da un hook.
Esempi di casi d’uso
Registrazione di tutte le azioni di Cascade
log_input.py):
Limitare l’accesso ai file
block_read_access.py):
Blocco dei comandi pericolosi
block_dangerous_commands.py):
Blocco dei prompt che violano le policy
block_bad_prompts.py):
Registrazione delle risposte di Cascade
log_cascade_response.py):
Tracciamento delle regole attivate
track_rules.py):
Always On- Regole sempre incluseModel Decision- Regole le cui descrizioni sono state mostrate al modello per un’applicazione condizionaleManual- Regole menzionate esplicitamente con @ nell’input dell’utenteGlobal- Regole globali daglobal_rules.mdGlob- Regole attivate dall’accesso a file che corrispondono a pattern glob
Questo tiene traccia di quali regole sono state presentate al modello o attivate dall’accesso ai file, ma non indica se il modello abbia effettivamente seguito una regola. Le regole già mostrate di recente nella conversazione vengono deduplicate e potrebbero non comparire di nuovo fino a più avanti.
Eseguire i formattatori del codice dopo le modifiche
format_code.sh):
Configurazione dei worktree
.windsurf/hooks.json):
hooks/setup_worktree.sh):
Buone pratiche
Sicurezza
- Convalida tutti gli input: non fidarti mai dell’input JSON senza prima convalidarlo, soprattutto per quanto riguarda i percorsi dei file e i comandi.
- Usa percorsi assoluti: usa sempre percorsi assoluti nelle configurazioni degli hook per evitare ambiguità.
- Proteggi i dati sensibili: evita di registrare informazioni sensibili come API key o credenziali.
- Verifica le autorizzazioni: assicurati che gli script degli hook abbiano autorizzazioni del file system appropriate.
- Controlla prima della distribuzione: controlla ogni comando e script degli hook prima di aggiungerli alla configurazione.
- Testa in isolamento: esegui gli hook in un ambiente di test prima di abilitarli sulla macchina di sviluppo principale.
Considerazioni sulle prestazioni
- Mantieni gli hook veloci: gli hook lenti riducono la reattività di Cascade. Punta a tempi di esecuzione inferiori a 100 ms.
- Usa operazioni asincrone: per hook non bloccanti, valuta la possibilità di inviare i log a una coda o a un database in modo asincrono.
- Filtra subito: verifica il tipo di action all’inizio dello script per evitare elaborazioni non necessarie.
Gestione degli errori
- Verifica sempre il JSON: Usa blocchi try-catch per gestire correttamente input non validi.
- Registra correttamente gli errori: Scrivi gli errori su
stderrin modo che siano visibili quandoshow_outputè abilitato. - Gestisci gli errori in modo sicuro: Se il tuo hook incontra un errore, valuta se debba bloccare l’action o consentirle di proseguire.
Test dei tuoi hook
- Inizia con il logging: inizia implementando un semplice hook di logging per comprendere il flusso dei dati.
- Usa
show_output: true: abilita l’output durante lo sviluppo per vedere cosa stanno facendo i tuoi hook. - Testa il comportamento di blocco: verifica che il codice di uscita 2 blocchi correttamente le azioni nei pre-hook.
- Verifica tutti i percorsi del codice: testa nei tuoi script sia gli scenari di successo sia quelli di errore.
Distribuzione Enterprise
- Cloud Dashboard - Configura gli hook tramite Team Settings nella dashboard di Devin Desktop
- File a livello di sistema - Distribuisci gli hook tramite MDM o strumenti di gestione della configurazione
Configurazione della Cloud Dashboard
- piano Enterprise
- autorizzazione
TEAM_SETTINGS_UPDATE
- Vai a Team Settings nella dashboard di Devin Desktop
- Individua la sezione Cascade Hooks
- Inserisci la configurazione degli hook in formato JSON
- Salva le modifiche
Quando vengono unite più configurazioni del team, gli hook vengono combinati per action anziché essere sovrascritti. Ciò significa che gli hook di tutte le configurazioni del team applicabili verranno eseguiti insieme.
Distribuzione dei file a livello di sistema
hooks.json nelle seguenti posizioni specifiche del sistema operativo:
macOS:
/usr/local/share/windsurf-hooks/ sui sistemi Unix).
Gli hook a livello di sistema hanno la precedenza su quelli dell’utente e del workspace e non possono essere disabilitati dagli utenti finali senza autorizzazioni di root.
MDM e gestione della configurazione
- Jamf Pro (macOS) - Distribuzione tramite profili di configurazione o script
- Microsoft Intune (Windows/macOS) - Usa script PowerShell o la distribuzione tramite criteri
- Workspace ONE, Google Endpoint Management e altre soluzioni MDM
- Ansible, Puppet, Chef, SaltStack - Usa l’automazione dell’infrastruttura esistente
- Script di distribuzione personalizzati - Script shell, PowerShell o gli strumenti che preferisci
Verifica e audit
Importante: Gli hook a livello di sistema sono gestiti interamente dal team IT o di sicurezza. Devin Desktop non distribuisce né gestisce file nei percorsi di sistema. Assicurati che i team interni si occupino della distribuzione, degli aggiornamenti e della conformità in base alle policy della tua organizzazione.
Hook del workspace per i progetti del team
Risorse aggiuntive
- Integrazione MCP: Scopri di più sul Model Context Protocol in Devin Desktop
- Flussi di lavoro: Scopri come combinare gli hook con i flussi di lavoro di Cascade
- Analisi: Monitora l’utilizzo di Cascade con Analisi del team

