Prompt advisory vs ciclo di vita applicato
Qualunque team faccia girare AI coding assistants per ore conosce i failure mode. L'agente dimentica KG sync dopo edits. Incolla API key nei log. Sovrascrive moduli non letti. Compatta e perde metà del contesto. Prompting più aggressivo non risolve: il prompt è advisory. Il modello può ignorarti.
La soluzione è precedente all'AI. Git ha pre-commit e post-receive dal 2005. VS Code si attiva su open, save, close. LSP emette textDocument/didSave. Il pattern: un evento ciclo di vita scatta, il tuo codice lo intercetta deterministicamente. Il tool non chiede permesso. Esegue.
Claude Code ha importato quel pattern. La scelta di design: enforcement vs suggerimento. Le custom instructions di GitHub Copilot e le rules di Cursor vivono nel contesto e sperano in compliance. Gli hook girano a execution time, processo separato, pieno potere di bloccare.
Una tassonomia del ciclo di vita
Contare gli hook non basta. Cosa conta: quali momenti del ciclo di vita intercetti e cosa fai a ciascuno. I ~20 eventi di Claude Code si raggruppano in quattro meccanismi.
Input gating. PreToolUse scatta prima di qualsiasi tool—Bash, Edit, Write, WebFetch—e può ritornare exit code 2 per abortire. UserPromptSubmit scatta prima che il modello veda un messaggio utente, può riscrivere o rifiutare. PermissionRequest permette di approvare/negare operazioni privilegiate via codice. Qui vengono fermati i comandi pericolosi.
Output verification. PostToolUse scatta dopo tool success, input/output completi in JSON. Non può annullare il tool, ma può scansionare risultati, accodare follow-up, far emergere warning, scrivere su canali laterali. PostToolUseFailure scatta su errore—utile per logging e recovery.
Context injection. SessionStart (submatcher: startup, compact, resume), PreCompact, PostCompact, UserPromptSubmit tutti pushano informazione nel contesto del modello prima che ragioni. Questo è come una sessione sa dove riprendere dopo compact, o come una modifica file riceve pattern KG iniettati prima di partire.
Manutenzione e accounting. Stop, StopFailure, SessionEnd, SubagentStart, SubagentStop, TeammateIdle, TaskCompleted, WorktreeCreate, WorktreeRemove, Notification—eventi housekeeping. Costi, metriche, notifiche desktop, coordinamento agent, pulizia worktree vivono qui.
Bloccare vs osservare
La proprietà chiave: un hook può bloccare? PreToolUse che ritorna exit code 2 impedisce al tool di partire. Un hook PreToolUse(Bash) che fa pattern matching su rm -rf /, dd of=/dev/, o variabili non quotate ritorna 2; l'agente riceve stderr invece di comando shell distruttivo. Nessun prompt bypassa questo—il kernel non spawna mai il processo.
PostToolUse osserva solo. Gira a fatto compiuto, vede cosa è successo, reagisce: accodare sync, loggare metrica, far scattare notifica. Non può tornare indietro. Il modello è iptables INPUT vs tail -f /var/log/audit. Entrambi utili; uno solo enforces.
I concorrenti stanno chiudendo questo gap lentamente. Cursor 1.7 ha aggiunto hook bloccanti. Gli hook di GitHub Copilot Agent osservano ma per lo più non bloccano; scrub credenziali è setup manuale. Noi spediamo input gate bloccanti e scrub credenziali attivi per default.
Pipeline di composizione
Una singola azione utente innesca una catena di hook. Modifichi una nota di knowledge; quattro cose succedono automaticamente.
PreToolUse(Edit)eseguepre-edit-context-inject.sh, interrogando KG e code graph per il file target, iniettando pattern rilevanti nel contesto del modello.- Il tool Edit gira.
PostToolUse(Edit)eseguepost-file-edit.sh, instradando il file:knowledge/**sincronizza a collection KG di Weaviate,docs/**a dev-docs, file di codice accodano re-indicizzazione code graph.PostToolUse(Edit)esegue anchepost-tool-security.sh, scansionando il nuovo contenuto cercando credenziali, rigenerando il summary KG se frontmatter è cambiato.
Una modifica file. Quattro passi automatici. Nessuno richiede che l'agente se lo ricordi. Pipeline così mantengono l'output agentese in sync con il resto del tuo sistema invece di andare alla deriva.
I sedici che spediamo, e il preludio di env scrubbing
VibeCoded Orchestrator spedisce sedici hook nel tier base gratuito, raggruppati per meccanismo.
Sicurezza (4). Un hook PreToolUse(Bash) con venti regole per shell injection e pattern pericolosi; scanner credenziali su ogni scrittura file; guard SSRF su fetch in uscita; audit logger su ogni cambio config. Ognuno gira dopo preludio di env scrubbing che rimuove GITHUB_TOKEN, OPENAI_API_KEY, SUPABASE_KEY, TELEGRAM_BOT_TOKEN, credenziali AWS prima che l'hook spawni qualsiasi subprocess. Gli hook sono sandboxed di default.
Contesto (5). pre-edit-context-inject.sh per edit con retrieval; post-file-edit.sh per sync KG e code-graph; compact-context-reinject.sh per stato post-compaction; session-start-kg-loader.sh per path risorse; pre-compact-save.sh per stato git e piani attivi.
Sessione (4). Stop per notifica desktop e cost tracking; StopFailure per alert urgenti su stop in errore; PreCompact e PostCompact per save snapshot e replay; SessionEnd per cleanup e sync finale.
DX (3). Cost-tracker che appende JSONL; tool-usage logger su JSONL giornaliero; ruff e pyright in background sulle scritture Python.
Tutti sedici sono bash script. Startup cost pochi millisecondi. Leggi uno qualsiasi in meno di un minuto, commenta una riga in .claude/settings.json per disabilitare, o setta VCT_DISABLE_HOOKS=1 per spegnere tutto per una sessione. L'auditabilità non è una feature—è il prezzo della fiducia.
Il confronto
| Tool | Eventi ciclo di vita | Bloccante | Scrub credenziali auto | Open source |
|---|---|---|---|---|
| VibeCoded Orchestrator | ~20 eventi, 20 hook inclusi | Sì, default-on | Sì, ogni hook | Sì |
| Cursor (1.7+) | ~8 eventi | Sì | Manuale | No |
| GitHub Copilot Agent | ~8 eventi | Soprattutto osservazione | Manuale | No |
| Continue.dev | Limitati | Per lo più prompt-hooks | No | Sì |
| Aider | Pre/post command | Limitato | No | Sì |
I sedici hook sono parte del VibeCoded Orchestrator gratuito. Installalo e scrub credenziali, sync automatico KG, snapshot pre-compact, cost tracking e scan credenziali sono attivi dalla prima sessione. Disabilita uno qualunque con un cambio di una riga. È la differenza tra una sessione AI di cui ti puoi fidare e una di cui non ti puoi fidare.
Fonti: