Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt

Use this file to discover all available pages before exploring further.

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. Devin CLI usa un formato de hooks compatible con los hooks de Claude Code. Si ya tienes hooks configurados para Claude Code, funcionarán automáticamente con Devin CLI.

¿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:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/check-command.sh"
        }
      ]
    }
  ]
}
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:
EventoCuándo se activa
PreToolUseAntes de que se ejecute una herramienta
PostToolUseDespués de que una herramienta termine
PermissionRequestCuando se requiere una decisión sobre permisos
UserPromptSubmitCuando el usuario envía un mensaje
StopCuando el agente quiere detenerse
SessionStartCuando comienza una sesión
SessionEndCuando termina una sesión
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:
{
  "PreToolUse": [
    {
      "matcher": "exec",
      "hooks": [
        {
          "type": "command",
          "command": "./scripts/validate.sh",
          "timeout": 10
        }
      ]
    }
  ]
}
CampoDescripción
matcherExpresión regular que se compara con tool_name del evento del hook. Una cadena vacía o la omisión de matcher coincide con todos los nombres de herramientas.
type"command" para ejecutar un comando de shell, o "prompt" para evaluar un prompt de LLM.
commandComando de shell que se debe ejecutar (para el tipo command).
promptPrompt de LLM que se debe evaluar (para el tipo prompt).
timeoutTiempo de espera en segundos (opcional).

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. Entrada (stdin):
{
  "hook_event_name": "PreToolUse",
  "tool_name": "exec",
  "tool_input": {
    "command": "rm -rf /"
  }
}
Salida (stdout — opcional):
{
  "decision": "block",
  "reason": "Destructive command blocked by policy"
}
Campo de salidaDescripción
decision"approve", "block" o "deny"
reasonExplicación que se muestra al agente
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.

Códigos de salida

CódigoSignificado
0Éxito — el hook continúa con normalidad
2Bloqueo — la acción se deniega
OtroError — se registra, pero no bloquea

Dónde se encuentran los hooks

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

Nivel de proyecto

UbicaciónDescripción
.devin/hooks.v1.jsonArchivo de hooks independiente (recomendado)
.devin/config.jsonclave "hooks" en el archivo de configuración
.devin/config.local.jsonclave "hooks" (anulación local, incluida en .gitignore)
.claude/settings.jsonclave "hooks" (formato de Claude Code)
.claude/settings.local.jsonclave "hooks" (formato de Claude Code)

A nivel de usuario (global)

UbicaciónDescripción
~/.config/devin/config.json (%APPDATA%\devin\config.json en Windows)clave "hooks" en la configuración del usuario
~/.claude.jsonclave "hooks" (formato de Claude Code)
~/.claude/settings.jsonclave "hooks" (formato de Claude Code)
~/.claude/settings.local.jsonclave "hooks" (formato de Claude Code)
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:
/hooks

Próximos pasos

Hooks del ciclo de vida

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

Documentación de Claude Code Hooks

Referencia completa sobre el formato de los hooks.