¿Qué son los hooks de Claude Code, y cuándo usarlos?
Un hook en Claude Code es un comando de shell que se ejecuta automáticamente en un punto definido del ciclo de vida de una sesión, en lugar de depender de que una persona o el propio modelo recuerde activarlo. El comando se dispara cada vez que ocurre el evento, en lugar de depender de una instrucción que el modelo puede o no recordar.
Los hooks se enganchan a eventos como el envío de un prompt, una llamada a herramienta a punto de ejecutarse, o el fin de una sesión, y algunos de ellos pueden inspeccionar o bloquear lo que está a punto de ocurrir. Como un hook es una ejecución de comando real, la documentación es explícita sobre la contrapartida: un hook es código que se ejecuta en tu máquina, y merece el mismo cuidado que cualquier otro script que dejarías correr solo.
La idea central: automático, no recordado
Claude Code ya te deja guiar el comportamiento con instrucciones, en lugares como el CLAUDE.md o un system prompt — pero eso depende de que el modelo las lea y elija seguirlas en el momento correcto. Un hook elimina esa dependencia: es un comando que la propia aplicación ejecuta en un punto fijo, siempre, sin importar lo que el modelo recuerde o deje de recordar.
Esa es la propuesta en una frase: un hook convierte una sugerencia en garantía, porque quien decide si algo ocurre es el shell ejecutando un comando, no el modelo eligiendo obedecer.
Los eventos a los que un hook puede engancharse
Claude Code define más eventos que estos siete, incluyendo PreCompact, PostCompact, SubagentStart y SubagentStop, entre otros — pero estos son los que la mayoría de las configuraciones usa primero, porque corresponden a los momentos en que la gente realmente quiere intervenir.
- SessionStart — cuando una sesión empieza o se reanuda.
- UserPromptSubmit — cuando envías un prompt, antes de que Claude lo procese.
- PreToolUse — antes de que una llamada a herramienta se ejecute; es el único que puede bloquearla.
- PermissionRequest — cuando una llamada a herramienta necesita una decisión de permiso.
- PostToolUse — después de que una llamada a herramienta tiene éxito.
- Stop — cuando Claude termina de responder.
- SessionEnd — cuando una sesión termina.
Cómo se configura un hook
Un hook es JSON escrito en un archivo de settings, con tres niveles de anidamiento: una clave hooks, luego el nombre del evento, luego un array de entradas — cada una con un matcher y su propia lista de { type: "command", command, timeout }.
El archivo de settings puede vivir en más de un lugar. ~/.claude/settings.json aplica a todos los proyectos de la máquina y no está pensado para compartirse. .claude/settings.json aplica a un proyecto y está pensado para subirse a git. .claude/settings.local.json también aplica a un proyecto, pero queda fuera de git (gitignored). Además de estos, una organización puede publicar managed policy settings, y un plugin puede traer su propio hooks/hooks.json.
El matcher decide a qué llamadas de herramienta se aplica una entrada. “*”, o dejar el matcher fuera, coincide con todo. Un matcher formado solo por letras, dígitos, _, -, espacios, comas o | — como “Bash” o “Edit|Write” — se compara como string exacto. Cualquier otro carácter convierte todo el matcher en una expresión regular de JavaScript sin anclar, y por eso algo como “^Edit$” se comporta distinto de un simple “Edit”.
Bloqueo, salida estructurada, y quién puede apagar un hook
Un hook controla lo que pasa después principalmente por su código de salida. Exit code 0 sin ninguna salida significa que el hook no tiene decisión que reportar, y la llamada a herramienta sigue el flujo normal de permisos. Exit code 2 es el error bloqueante: en eventos que pueden bloquear, el exit 2 bloquea la acción aunque el hook también haya impreso JSON — ni un permissionDecision de “allow” en JSON puede anularlo. Cualquier otro código es un error no bloqueante en la mayoría de los eventos, y la acción sigue adelante de todos modos.
Un hook también puede devolver JSON estructurado en lugar de depender solo del código de salida: un objeto hookSpecificOutput lleva el nombre del evento, un permissionDecision de allow, deny o escalate, y el motivo, además de campos universales como continue (que, si es false, hace que Claude deje de procesar), stopReason y systemMessage.
Los hooks pueden apagarse por completo con disableAllHooks: true en los settings — excepto los hooks configurados por las managed policy settings de una organización, que los settings de usuario, proyecto o local no pueden apagar. Un administrador puede ir más allá con allowManagedHooksOnly, restringiendo qué hooks tienen permiso de ejecutarse.
FAQ
¿Qué es un hook en Claude Code?
Un hook es un comando de shell que Claude Code ejecuta automáticamente en un punto definido del ciclo de vida de la sesión, en lugar de depender de una instrucción que el modelo tiene que recordar. Los hooks se disparan en eventos como el envío de un prompt o una llamada a herramienta a punto de ejecutarse, y algunos pueden bloquear lo que ocurre después.
¿A qué eventos puede engancharse un hook de Claude Code?
Los principales son SessionStart, UserPromptSubmit, PreToolUse, PermissionRequest, PostToolUse, Stop y SessionEnd, aunque la lista completa es más larga e incluye eventos como PreCompact y SubagentStart. PreToolUse es el más usado para bloquear una llamada a herramienta antes de que se ejecute.
¿Cómo bloquea un hook una llamada a herramienta?
Por su código de salida. Exit code 0 sin salida significa que el hook no tiene decisión que reportar, y la llamada sigue el flujo normal de permisos. Exit code 2 es el error bloqueante: en eventos que pueden bloquear, bloquea la acción aunque la propia salida JSON del hook dijera permitir.
¿Dónde vive el archivo de settings de un hook de Claude Code?
En más de un lugar posible: ~/.claude/settings.json para todos los proyectos de la máquina, .claude/settings.json para un proyecto (pensado para subirse a git), o .claude/settings.local.json para un proyecto (fuera de git). Las managed policy settings de una organización y el hooks/hooks.json de un plugin también pueden definir hooks.
Lee a continuación
- ¿Vale la pena la certificación Claude?Lo que una certificación Claude realmente te da, cuánto cuesta mantenerla y los números que Anthropic no publica — decide antes de pagar, no después.
- ¿Qué certificación Claude deberías hacer?Cuatro certificaciones Claude comparadas: precio, número de dominios, prerrequisitos y estatus de Partner Network — una recomendación honesta por perfil.
- ¿Quién puede hacer la certificación Claude?Las certificaciones Claude exigen correo de empresa Claude Partner Network — el correo personal no sirve.
- Cómo es, de verdad, el examen de certificación Claude120 minutos, nota de corte 720 en una escala de 100 a 1.
- Cómo prepararte para la certificación Claude — y cuánto tiempo llevaCómo prepararte para la certificación Claude: qué ofrece Anthropic, cómo planificar por peso de dominio, errores comunes y cómo estimar tu fecha de preparación.
- Preguntas de práctica para la certificación Claude — dónde encontrar las realesDónde encontrar preguntas de práctica reales para la certificación Claude, cómo es una pregunta real del examen y cómo distinguirla de un dump memorizado.
- Día del examen de certificación Claude — qué pasa en realidadCómo agendar la certificación Claude con Pearson, la regla de 24 horas que hace perder la tarifa del examen, qué hacer antes del día y cómo llega tu puntaje.
- Claude Certified Associate — Foundations (CCAO-F)La certificación de entrada de Claude: US$ 99, siete dominios, 120 minutos, corte de 720 — qué cubre el CCAO-F, quién puede rendirlo y qué no desbloquea.
- Claude Certified Developer — Foundations (CCDV-F)La certificación Claude para quien construye: US$ 125, ocho dominios ponderados, 120 minutos, corte de 720 — y el dominio que es un tercio del examen.
- Claude Certified Architect — Foundations (CCAR-F)Certificación Claude de nivel arquitecto: US$ 125, 60 preguntas, cinco dominios ponderados y corte de 720 — y qué cambió realmente al pasar de CCA-F a CCAR-F.
- Claude Certified Architect — Professional (CCAR-P)Única certificación Claude de nivel profesional: US$ 175, siete dominios, 120 minutos y corte de 720 — el temario más parejo, y qué añade sobre Foundations.
- ¿Qué es el MCP (Model Context Protocol)?El MCP conecta aplicaciones de IA con herramientas y datos externos vía host, client y server.
- ¿Qué es la ventana de contexto, y por qué empeoran los chats largos?La ventana de contexto es todo el texto que un modelo puede referenciar al responder, y más contexto no es automáticamente mejor.
Un hook corre siempre, sin excepción. Tu esfuerzo también debería.
AgentPrep entrena el oficio que esta página describe — preguntas de escenario originales y dominio medido por área, en Telegram. Gratis para empezar en el navegador, sin tarjeta.
Empezar gratisTres preguntas de práctica, con las respuestas explicadas
Deja tu correo y te enviamos las tres preguntas de nuestro quiz con las respuestas comentadas — cada una escrita a partir de material público, nunca recordada de un examen real.
Listo — ya va camino a tu bandeja de entrada.
No se pudo enviar — revisa la conexión e inténtalo de nuevo.