Saltar al contenido principal
Los hooks te permiten ejecutar lógica personalizada en respuesta a eventos del ciclo de vida del agente. Puedes usar hooks para aplicar políticas, agregar contexto, registrar acciones, modificar permisos o integrarlos con sistemas externos. Los hooks se configuran en formato JSON. Colócalos en el directorio .devin/ de tu proyecto (o en una configuración a nivel de usuario) y Devin CLI los ejecutará en los eventos del ciclo de vida que correspondan. Los hooks existentes en los directorios .claude/ también se detectan automáticamente — consulta Dónde se encuentran los hooks.

¿Qué pueden hacer los Hooks?

Aplicar políticas

Bloquear comandos peligrosos, exigir confirmación para acciones específicas o restringir el acceso a archivos.

Agregar contexto

Inyectar instrucciones o información adicional cuando se llaman herramientas específicas.

Ejecutar efectos secundarios

Ejecutar scripts, enviar notificaciones o registrar eventos cuando ocurren.

Modificar permisos

Otorgar o restringir permisos dinámicamente según la situación.

Ejemplo rápido

Crea .devin/hooks.v1.json en tu proyecto:
Esto ejecuta ./scripts/check-command.sh antes de ejecutar cada comando de shell. El script recibe los datos del evento por stdin y puede impedir la ejecución devolviendo un código de salida distinto de cero.

Eventos de hooks

Los hooks pueden responder a estos eventos del ciclo de vida: Consulta Hooks del ciclo de vida para obtener más información sobre cada evento y los datos disponibles.

Formato de los hooks

Cada hook tiene un tipo (command o prompt), un matcher opcional (una regex sobre el tool_name del evento del hook) y una configuración:

Hooks de comando

Los hooks de comando ejecutan un comando de shell. Los datos del evento se envían como JSON a través de stdin, y el comando puede devolver JSON por stdout para controlar el resultado (consulta Formato de salida a continuación). Entrada (stdin):
La variable de entorno DEVIN_PROJECT_DIR se establece automáticamente como el directorio raíz del proyecto. Consulta Cómo usar el Matcher para conocer los nombres de las herramientas integradas y el formato de nombre de herramienta de MCP con los que puedes hacer coincidencias.

Formato de salida

Un hook de comando puede imprimir un objeto JSON en stdout para controlar el resultado. Para aprobar o bloquear una acción, devuelve un decision en el nivel superior (con un reason opcional):
Para inyectar texto en el contexto del agente, devuelve additionalContext dentro de un objeto hookSpecificOutput identificado con el nombre del evento:
Para reescribir de forma transparente la entrada de una herramienta antes de que se ejecute, devuelve updatedInput dentro de un hookSpecificOutput de PreToolUse. Los campos de updatedInput se combinan con los argumentos de la herramienta, por lo que puedes actualizar un subconjunto (p. ej., solo command):

Códigos de salida


Dónde se encuentran los hooks

Devin CLI lee los hooks de las siguientes ubicaciones. Todos usan el mismo formato JSON.

Nivel de proyecto

A nivel de usuario (global)

En .devin/hooks.v1.json, el objeto hooks es el archivo completo (no se necesita una clave contenedora). En todas las demás ubicaciones, hooks está anidado bajo la clave "hooks" dentro de un archivo de configuración.
Los hooks de las rutas .claude/ se cargan cuando read_config_from.claude está habilitado (de forma predeterminada). Si es necesario, puedes desactivarlo en tu configuración de usuario.

Verificar hooks

Usa el comando de barra diagonal /hooks para ver todos los hooks cargados actualmente y sus archivos de origen:

Próximos pasos

Hooks del ciclo de vida

Profundiza en cada tipo de evento y en qué datos hay disponibles.

Configuración

Controla de qué ubicaciones de configuración lee los hooks Devin CLI.