Saltar al contenido principal
Cada evento de hook se activa en un punto específico del ciclo de vida del agente. Usa el campo matcher (una expresión regular que se compara con el tool_name del evento de hook) para filtrar qué invocaciones de herramientas activan tu hook.

PreToolUse

Se activa antes de que se ejecute una herramienta. Úsalo para bloquear, modificar o agregar contexto a las llamadas a herramientas. Datos de stdin: Ejemplo: bloquear comandos destructivos
Ejemplo — Exigir confirmación para operaciones de escritura fuera de src/: Usa un script que inspeccione la entrada de la herramienta y devuelva una decisión:
Ejemplo — Reescribir comandos antes de ejecutarlos: Un hook puede reescribir de forma transparente la entrada de la herramienta imprimiendo hookSpecificOutput.updatedInput en stdout (consulta Formato de salida). Por ejemplo, un script de hook que redirige los comandos de shell a través de un wrapper:
Los argumentos reescritos se incorporan a la llamada a la herramienta antes de que se ejecute; el agente ejecuta el comando actualizado en lugar del original.

PostToolUse

Se activa después de que una herramienta termina de ejecutarse. Úsalo para registros, validación o para desencadenar acciones posteriores. Datos de stdin: Ejemplo — Registrar todos los comandos del shell:

PermissionRequest

Se activa cuando el agente necesita una decisión sobre permisos. Úsalo para implementar una lógica de aprobación personalizada. Datos de stdin: Ejemplo — Aprobar automáticamente comandos de git:

UserPromptSubmit

Se activa cuando el usuario envía un mensaje. Úsalo para agregar contexto o desencadenar flujos de trabajo. Datos de stdin: Ejemplo — Inyectar contexto en cada prompt:
El comando imprime additionalContext dentro de un objeto hookSpecificOutput en stdout, con la etiqueta del nombre del evento. Ese texto se inyecta en el contexto del agente:

Detener

Se activa cuando el agente decide detenerse (finalizar su turno). Usa esto para agregar instrucciones de seguimiento o evitar que se detenga antes de tiempo. Datos de stdin: Ejemplo — Recordarle al agente que ejecute pruebas:
Ten cuidado con los hooks de detención que bloquean: pueden hacer que el agente se quede en un bucle si la condición no acaba cumpliéndose.

PostCompaction

Se activa después de que la compactación del contexto se complete correctamente. Úsalo para el registro, desencadenar acciones posteriores o volver a inyectar contexto que pueda haberse perdido durante la compactación. Datos de stdin: Ejemplo — Registrar eventos de compactación:

SessionStart

Se activa cuando comienza una nueva sesión. Úsalo para la inicialización, el registro o la configuración del entorno. Datos de stdin: Ejemplo — Ejecutar script de configuración:
Un comando SessionStart también puede inyectar contexto al imprimir additionalContext dentro de un objeto hookSpecificOutput en stdout:

SessionEnd

Se activa cuando finaliza una sesión. Úsalo para tareas de limpieza o para el registro final. Datos de stdin:

Coincidencia de múltiples eventos

Un único archivo de hooks puede definir hooks para múltiples eventos:

Cómo usar el matcher

El campo matcher es una regex que se hace coincidir con el tool_name del evento del hook. Está disponible para eventos relacionados con herramientas: PreToolUse, PostToolUse y PermissionRequest. En los eventos no relacionados con herramientas (UserPromptSubmit, Stop, PostCompaction, SessionStart y SessionEnd), no hay tool_name; usa "" u omite el matcher para ejecutar el hook en todos los eventos de ese tipo.
El matcher no es un glob de permisos. Patrones como mcp__github__* son útiles en los permisos, pero los matchers de hooks son regexes. Usa mcp__github__.* en un matcher de hook.

Nombres de herramientas que puedes hacer coincidir

Los matchers de hooks se aplican a los mismos nombres de herramientas visibles externamente que los scripts de hook reciben por stdin como tool_name. Los nombres exactos de las herramientas disponibles pueden variar según el modo de CLI, el modelo y las integraciones habilitadas. Los nombres de herramientas core públicas más comunes son:
  • read
  • edit
  • grep
  • glob
  • exec
Las herramientas de servidor MCP aparecen como mcp__<server>__<tool>. Por ejemplo, una herramienta de servidor MCP de github llamada create_issue aparece como mcp__github__create_issue. Para otras herramientas, haz coincidir el tool_name exacto que se muestra en el stdin del hook. Para confirmar el conjunto completo disponible en tu sesión actual, agrega un hook PostToolUse temporal con matcher: "" y registra el payload de stdin.