Los hooks son comandos de shell que Claude Code ejecuta automáticamente cuando ocurre un evento de su ciclo de vida. Son la forma de imponer comportamiento determinista: no le pides a Claude que haga algo, el harness lo hace siempre, pase lo que pase.
PreToolUse): validar o bloquear una acción antes de que
ocurra (p. ej. impedir editar cierto archivo).PostToolUse): reaccionar a un cambio (p. ej. formatear
el archivo recién editado, correr el linter).Stop) o al enviar un prompt: notificaciones, logging, checks.Se configuran en settings.json, asociando un comando a un evento (con filtros por tipo de
herramienta si quieres).
Un agente es probabilístico: puede olvidar correr el linter aunque se lo digas
en CLAUDE.md. Un hook no olvida. Si algo debe
pasar siempre —formatear, testear, bloquear una acción peligrosa— un hook lo garantiza mejor
que una instrucción.
PreToolUse que bloquea comandos destructivos, reforzando los
permisos.[!TIP] El hook lo ejecuta el harness, no el modelo. Por eso es fiable para seguridad: no depende de que Claude “decida” hacerlo.
Complementan los permisos como control determinista, y se empaquetan y comparten dentro de plugins.