🪝 Guía para desarrolladores · 2026

OpenClaw Hooks: La guía completa para desarrolladores (2026) — EasyClaw

Domine los ganchos OpenClaw en 2026: aprenda a escribir protecciones PreToolUse, automatización PostToolUse y barreras de seguridad para todo el equipo que le brinden control total sobre su agente de IA.

📅 Actualizado: abril de 2026⏱ Lectura de 14 minutos✍️Editorial EasyClaw
  • X(Twitter) icon
  • Facebook icon
  • LinkedIn icon
  • Copy link icon

¿Qué son OpenClaw Hooks? (Y por qué cambian la forma de trabajar con los agentes de IA)

Si alguna vez ha visto a un agente de IA sobrescribir un archivo que no debería tocar, o ha deseado que ejecute su conjunto de pruebas automáticamente después de cada cambio de código, los ganchos OpenClaw son la respuesta. Le permiten interceptar, reaccionar y controlar el comportamiento de los agentes precisamente en los momentos que importan.

Hooks son pequeños scripts controlados por eventos que se ejecutan dentro de OpenClaw Gateway en puntos específicos del ciclo de vida de un agente. Piense en ellos como middleware para su agente de IA: se ubican entre el agente y las herramientas que llama, brindándole una capa de intercepción programable.

Hay dos tipos distintos:

  • Internal hooks - scripts que se ejecutan adentro el proceso de puerta de enlace en sí. Tienen acceso directo al estado de la sesión, los metadatos de llamadas a herramientas y el contexto de trabajo del agente. Cero sobrecarga de red.
  • Webhooks — Devoluciones de llamada HTTP que se activan a un punto final externo cuando ocurre un evento del ciclo de vida. La puerta de enlace envía una solicitud POST; su servidor maneja la lógica.

La diferencia práctica: los ganchos internos sirven para barandillas y automatización local rápidas y sincrónicas. Webhooks son para cualquier cosa que deba llegar fuera de su máquina: notificaciones Slack, sistemas CI, plataformas de registro.

Internal Hooks frente a Webhooks: ¿cuál necesita?

Factor Gancho interno gancho web
Execution location Inside the Gateway process External HTTP server
Latency Near-zero (synchronous) Network round-trip
Session state access Direct Serialized payload only
Lo mejor para File guards, auto-formatting, local scripts Slack alerts, audit logging, external APIs
Complejidad de configuración Low: solo un directorio + archivo controlador Medium: requiere un punto final HTTP en ejecución
Blocking agent execution Yes (PreToolUse hooks can abort) Typically async/non-blocking

Decision rule: Si tu gancho necesita prevenir una acción o leer datos de sesión local, utilice un gancho interno. Si es necesario notificar a un sistema externo y no necesita bloquear al agente, use un webhook.

Cómo funciona el descubrimiento de ganchos OpenClaw

La puerta de enlace utiliza escaneo automático de directorios para descubrir ganchos. Al iniciarse, escanea los directorios de enlaces configurados y carga cualquier paquete de enlaces válido que encuentre.

Dos requisitos previos importantes antes de que se activen los ganchos:

  1. Hooks debe ser habilitado explícitamente — un directorio de enlace por sí solo no es suficiente
  2. Al menos se debe configurar una entrada de gancho en la configuración de tu puerta de enlace

Este es un punto de confusión común. Puede tener un enlace perfectamente escrito en el directorio correcto, pero si no se le ha dicho al Gateway que active los enlaces, los ignora silenciosamente.

Cada paquete de gancho requiere exactamente dos archivos:

  • HOOK.md — archivo de metadatos que declara el nombre, la versión, la descripción, las suscripciones a eventos del ciclo de vida y los permisos necesarios del gancho
  • handler.ts (o handler.js): el archivo de implementación que contiene la lógica real que se ejecuta cuando se activa el evento.

El archivo HOOK.md es lo que la puerta de enlace lee primero durante el descubrimiento. Si tiene un formato incorrecto o faltan campos obligatorios, el enlace no se cargará; no hay error, solo silencio. Esta es la causa más común de los informes "mi gancho no funciona".

Los cuatro eventos del ciclo de vida que todo desarrollador debería conocer

Evento cuando dispara uso común
PreToolUse Antes el agente llama a cualquier herramienta Block dangerous operations, validate inputs
PostToolUse Después se completa una llamada de herramienta Código de formato Run tests,, resultados de registro
Stop Cuando finaliza la sesión del agente Send notifications, flush logs, cleanup
SessionStart Cuando comienza una nueva sesión de agente Load context, set guardrails, warm up state

PreToolUse es el más poderoso: es el único evento que puede abortar una llamada a la herramienta antes de que se ejecute. Si su gancho devuelve una señal de rechazo durante PreToolUse, el agente nunca llama a la herramienta.

PostToolUse es el caballo de batalla para la automatización. ¿Archivo escrito? Ejecute su linter. ¿Prueba modificada? Ejecute la suite. ¿Código comprometido? Activa una construcción.

Step-by-Step: escribiendo su primer gancho personalizado desde cero

La mayoría de la documentación muestra comandos. Esto le muestra el camino completo desde la nada hasta un gancho que funciona.

Goal: Ejecute automáticamente ESLint después de cada escritura de archivo.

Step 1: crea el directorio de enlace

mkdir -p .OpenClaw/hooks/auto-lint

Step 2: escribe los metadatos HOOK.md

# auto-lint

**Version:** 1.0.0
**Event:** PostToolUse
**Description:** Runs ESLint on any file written by the agent
**Tools:** write_file, edit_file

El campo Tools limita su enlace a llamadas de herramientas específicas. Sin él, el gancho sigue disparando. cada Evento PostToolUse: normalmente no es lo que desea.

Step 3: implementar handler.ts

import { PostToolUseEvent } from "@OpenClaw/sdk";
import { execSync } from "child_process";

export default function handler(event: PostToolUseEvent) {
  const filePath = event.toolResult?.path;
  if (!filePath) return;

  try {
    execSync(`npx eslint --fix "${filePath}"`, { stdio: "inherit" });
  } catch (err) {
    console.error(`[auto-lint] ESLint failed on ${filePath}`);
  }
}

Step 4: habilitar mediante CLI

OpenClaw hooks enable auto-lint

Step 5: verifica que esté cargado

OpenClaw hooks list

Deberías ver auto-lint con estado enabled. Inicie una sesión, escriba un archivo y observe cómo se activa el linter.

JavaScript frente a TypeScript para manipuladores de ganchos: qué elegir en 2026

El SDK se envía con tipificaciones TypeScript completas y, a partir de las versiones del SDK de 2026, TypeScript es el valor predeterminado recomendado para ganchos nuevos.

Factor TypeScript JavaScript
Type safety Full: se escriben formas de eventos None: sorpresas en tiempo de ejecución
Compilation step Required (tsc or esbuild) None
SDK compatibility First-class support Supported but no autocomplete
Lo mejor para Any hook that will be maintained or shared Guiones rápidos y únicos

Si está escribiendo un enlace que se comprometerá con el control de versiones o lo compartirá con un equipo, use TypeScript. Para una barandilla local desechable, JavaScript simple está bien; simplemente asígnele el nombre handler.js y omita el paso de compilación.

OpenClaw Hooks CLI Reference

Dominio Flags que hace
lista de anzuelos OpenClaw --json Lists all discovered hooks and their status
ganchos de garra abierta inspeccionan Muestra metadatos completos de HOOK.md + configuración actual
Los ganchos OpenClaw habilitan Activates a hook para el proyecto actual
Los ganchos OpenClaw desactivan Deactivates without removing
instalación de ganchos OpenClaw --yes, --dry-run Installs a hook pack from registry
actualización de ganchos OpenClaw --all, --dry-run Updates installed hook packs

Managing Hook Packs: instalación, actualización y flujo de trabajo --dry-run

Los paquetes de ganchos agrupan varios ganchos relacionados como una única unidad instalable. El flujo de trabajo de instalación verifica una hash de integridad antes de escribir algo en el disco.

# Preview what would be installed without committing
OpenClaw hooks install productivity-pack --dry-run

# Install non-interactively (for CI environments)
OpenClaw hooks install productivity-pack --yes

# Update all installed packs
OpenClaw hooks update --all

La bandera --dry-run está infrautilizada. Ejecútelo antes de cualquier install o update para ver exactamente qué archivos cambiarían. En las canalizaciones de CI, empareje --yes con --dry-run en un paso de validación separado antes de la instalación real.

Bundled Hooks Reference: Qué se envía con OpenClaw

Gancho Estado predeterminado que hace Mejor usado cuando
memoria de sesión Enabled Persists key context across sessions Long-running projects with recurring tasks
additional bundled hooks vary by Gateway version Ejecute OpenClaw hooks list --builtin para ver el suyo

Ejecute OpenClaw hooks inspect session-memory para ver sus opciones de configuración completas. La mayoría de los ganchos incluidos se envían con valores predeterminados razonables, pero exponen los campos de configuración para su personalización.

Casos de uso de ganchos del mundo real (con ejemplos prácticos)

1. File Protection Guardrail (PreToolUse)

Evite que el agente toque su archivo .env:

import { PreToolUseEvent } from "@OpenClaw/sdk";

export default function handler(event: PreToolUseEvent) {
  const target = event.toolInput?.path ?? "";
  if (target.includes(".env")) {
    return { abort: true, reason: "Modification of .env files is blocked by policy." };
  }
}

Coloque esto en .OpenClaw/hooks/protect-env/ con el HOOK.md correspondiente suscribiéndose a PreToolUse con alcance a write_file y edit_file. El agente recibe el motivo del rechazo en su contexto y no volverá a intentarlo.

2. Slack Notification on Session Stop

import { StopEvent } from "@OpenClaw/sdk";

export default async function handler(event: StopEvent) {
  await fetch(process.env.SLACK_WEBHOOK_URL!, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      text: `OpenClaw session ended. Files modified: ${event.session.filesModified ?? 0}`
    })
  });
}

Suscríbase a este enlace al evento Stop. Cada final de sesión activa un mensaje Slack con un resumen. No se necesita un servidor externo: el proceso de puerta de enlace realiza la solicitud de salida directamente.

3. Auto-Format + Test on PostToolUse

import { PostToolUseEvent } from "@OpenClaw/sdk";
import { execSync } from "child_process";

export default function handler(event: PostToolUseEvent) {
  const file = event.toolResult?.path;
  if (!file?.endsWith(".ts")) return;

  execSync(`prettier --write "${file}"`);
  execSync("npm test -- --passWithNoTests", { stdio: "inherit" });
}

Esto se activa después de cada escritura de archivo TypeScript, lo formatea y luego ejecuta su conjunto de pruebas. Lento en proyectos grandes: alcance un alcance estricto utilizando el campo Tools en HOOK.md.

Hooks para equipos: aplicación de barreras de seguridad en un proyecto compartido

Confirme su directorio .OpenClaw/hooks/ al control de versiones. Cada desarrollador que clona el repositorio automáticamente tiene la misma configuración de enlace.

  • Bloquee los enlaces críticos a enabled en la configuración del proyecto — evita que los compañeros de equipo desactiven accidentalmente los protectores de archivos
  • Utilice descripciones HOOK.md para documentar la intención — trátelos como comentarios de código, los compañeros de equipo los leerán
  • Scope hooks to tool-level granularity — Los ganchos amplios ralentizan todas las interacciones de los agentes, creando fricción que hace que los compañeros de equipo los desactiven.
  • En monorepos, los enlaces en un directorio principal se aplican a todos los proyectos anidados a menos que se anulen en el nivel del subdirectorio.

CI/CD Integration: ejecución de OpenClaw Hooks de forma no interactiva

En acciones GitHub o en cualquier entorno sin cabeza, el mensaje de confirmación interactivo bloqueará su canalización. Utilice --yes para omitirlo:

- name: Install hooks non-interactively
  run: OpenClaw hooks install qa-pack --yes

- name: Run OpenClaw session
  env:
    OpenClaw_HOOKS_ENABLED: "true"
    SLACK_WEBHOOK_URL: secrets.SLACK_WEBHOOK_URL
  run: OpenClaw run --task "audit dependencies" --yes

Establezca OpenClaw_HOOKS_ENABLED=true como variable de entorno para activar enlaces sin confirmación interactiva. Esto anula el requisito de "al menos una entrada configurada" en el modo CI.

Hook Security: Qué se ejecuta, a qué puede acceder y cómo mantenerse seguro

Esta es la parte que la mayoría de la documentación omite por completo, y es la sección más importante si estás instalando paquetes de enlaces comunitarios.

A qué ganchos puede acceder: Los scripts de gancho heredan el permisos completos del proceso Gateway. Si Gateway se ejecuta como su cuenta de usuario, sus enlaces pueden leer cualquier archivo que esa cuenta pueda leer, realizar solicitudes de red, ejecutar subprocesos y acceder a variables de entorno, incluidos los secretos.

El riesgo de paquetes de anzuelos no revisados: Un paquete de enlaces maliciosos podría filtrar su .env, sus claves SSH o sus tokens API, todo mientras parece hacer algo benigno como "formatear código".

Hook Pack Audit Checklist

Ejecute esto antes de instalar cualquier paquete de terceros:

  • Lea el HOOK.md completo: ¿los permisos declarados coinciden con el propósito declarado?
  • Lea cada línea de handler.ts/js; busque el acceso fetch(), execSync, process.env
  • Verifique la procedencia de npm si el paquete está distribuido por el registro (npm info <pack> --json | grep provenance)
  • Verifique la identidad del editor: ¿es un mantenedor conocido o una cuenta nueva?
  • Ejecute --dry-run primero y revise el manifiesto del archivo.
  • Nunca instale paquetes de ganchos con --yes sin completar primero los pasos anteriores

El comando OpenClaw hooks inspect le muestra la ruta de origen completa de un enlace instalado; utilícelo para volver a revisar el código del controlador después de las actualizaciones.

Troubleshooting OpenClaw Hooks — Cuando no disparan

Hook not discovered at all

  • Verifique que el directorio esté dentro de una ruta de enlace escaneada: OpenClaw hooks list --verbose
  • Confirme que HOOK.md existe y es válido: faltan campos obligatorios y omita el enlace silenciosamente
  • Verifique que los enlaces estén habilitados globalmente y que al menos una entrada esté configurada

Hook discovered but not firing

  • Ejecute OpenClaw hooks inspect <name>: verifique que el campo Event en HOOK.md coincida con el evento del ciclo de vida que espera
  • Verifique el alcance de Tools: si su alcance es write_file pero el agente está llamando a create_file, el enlace no se activará
  • Confirme que el estado del enlace muestra enabled, no loaded (cargado significa descubierto pero no activo)

Hook fires but handler errors are silent

  • Agregue bloques try/catch explícitos con console.error iniciando sesión en su controlador
  • Los registros de la puerta de enlace se escriben en ~/.OpenClaw/logs/; verifique el registro de sesión más reciente para ver si hay líneas con prefijo [hook]
  • Utilice OpenClaw hooks inspect <name> --logs para mostrar el último resultado de ejecución

Hook slowing down every agent action

  • Perfil con OpenClaw hooks list --timing para ver el tiempo de ejecución por gancho
  • Mueva las llamadas execSync sincrónicas a asíncronas donde el resultado no necesita bloquear al agente
  • El alcance se vincula a herramientas específicas en lugar de suscribirse a todos los eventos PostToolUse

Lleve el flujo de trabajo de su agente de IA más allá con EasyClaw

Los ganchos OpenClaw le brindan control a nivel de agente. EasyClaw le brinda ese control, además de un entorno nativo de escritorio completo creado para desarrolladores y equipos de contenido que necesitan confiabilidad, privacidad y velocidad sin depender de la nube.

  • Ejecute enlaces, agentes y automatización completamente en su propia máquina: ningún dato sale de su entorno
  • Integración nativa con su cadena de herramientas de desarrollo existente: linters, ejecutores de pruebas, formateadores, canales de CI
  • Gestión visual de enlaces: habilite, deshabilite e inspeccione enlaces sin memorizar indicadores CLI
  • Listo para Team: comparta configuraciones de enlaces, bloquee barandillas y audite registros de sesiones desde un solo panel
Pruebe EasyClaw gratis →

Frequently Asked Questions

P: ¿Puede un gancho impedir por completo que el agente ejecute una llamada a una herramienta?

R: Sí, solo los ganchos PreToolUse pueden cancelar una llamada a una herramienta. Devuelva { abort: true, reason: "..." } de su controlador y la puerta de enlace impide que la herramienta se ejecute. El agente recibe la cadena de motivo en su contexto. Los ganchos PostToolUse, Stop y SessionStart no pueden cancelar acciones de forma retroactiva.

P: ¿Qué sucede si mi controlador de gancho arroja un error no controlado?

R: De forma predeterminada, un error no controlado en un controlador de enlace se registra en el registro de sesión de la puerta de enlace, pero no bloquea la sesión del agente. El agente continúa como si el anzuelo no hubiera disparado. Esto es así por diseño: los ganchos nunca deben bloquear la funcionalidad principal del agente. Siempre ajuste la lógica de su controlador en try/catch y maneje los errores explícitamente para tener visibilidad de las fallas.

P: ¿Puedo usar async/await en manipuladores de ganchos?

R: Sí, tanto los controladores PreToolUse como PostToolUse admiten funciones asíncronas. Para PreToolUse, la puerta de enlace espera al controlador antes de decidir si continúa, por lo que la lógica de aborto asíncrono funciona correctamente. Tenga en cuenta que las operaciones asíncronas de larga duración en PreToolUse retrasarán cada llamada a la herramienta, así que manténgalas rápidas.

P: ¿Los ganchos se aplican a todos los proyectos o solo a aquel en el que se encuentran?

R: Los Hooks colocados en el directorio .OpenClaw/hooks/ de un proyecto tienen un alcance de proyecto y solo se activan para sesiones en ese proyecto. Los ganchos globales se pueden colocar en ~/.OpenClaw/hooks/ y aplicarse en todos los proyectos. En monorepos, los enlaces en un directorio principal se aplican a proyectos anidados a menos que se anulen en el nivel del subdirectorio.

P: ¿Existe un costo de rendimiento por ejecutar muchos ganchos?

R: Cada gancho agrega latencia al evento al que se suscribe. Un gancho rápido y con buen alcance (menos de 50 ms) es imperceptible. Los problemas surgen cuando los ganchos ejecutan operaciones sincrónicas intensas en cada evento PostToolUse sin alcance a nivel de herramienta. Utilice OpenClaw hooks list --timing para perfilar, alcance enlaces a herramientas específicas en HOOK.md y mueva el trabajo sin bloqueo a asíncrono cuando sea posible.

P: ¿Pueden los ganchos acceder a secretos de variables de entorno de forma segura?

R: Hooks hereda el entorno completo del proceso Gateway, por lo que process.env.MY_SECRET funciona dentro de cualquier controlador. Para entornos de CI, inyecte secretos a través del administrador de secretos de su canalización (por ejemplo, GitHub Actions Secrets) en lugar de codificarlos. Nunca confirme secretos en HOOK.md o archivos de controlador; trate los archivos fuente de enlace como código que será revisado y controlado por versiones.

Reflexiones finales: elegir la estrategia de gancho adecuada para su flujo de trabajo

Guión Enfoque recomendado
Solo dev: protege archivos confidenciales Gancho interno, PreToolUse, destinado a herramientas de escritura
Solo dev: pruebas de ejecución automática Gancho interno, PostToolUse, con alcance para tipos de archivos adyacentes a pruebas
Team: aplicar barreras de seguridad compartidas Confirmar ganchos para el control de versiones, bloquear ganchos críticos habilitados en la configuración del proyecto
Team — pista de auditoría Stop publicación de gancho de evento en un punto final de registro compartido
CI pipeline — sesiones automatizadas --yes bandera + OpenClaw_HOOKS_ENABLED env var, --dry-run en el paso de validación
External notifications Webhook o enlace de evento Stop con fetch() a Slack/PagerDuty

Comience con un gancho que resuelva un problema real: un protector de archivos o un linter posterior a la escritura. Haz que funcione de un extremo a otro antes de aplicar más capas. El poder de los ganchos se complica: una sesión con tres ganchos con buen alcance funcionando sin problemas es significativamente más confiable que una con diez ganchos con mal alcance en los que no confías.

El primer gancho de mayor apalancamiento para la mayoría de los desarrolladores: un guardia PreToolUse en sus archivos .env y secretos. Se necesitan diez minutos para escribir, no requiere mantenimiento para ejecutarse y elimina permanentemente toda una clase de errores de agentes.