Saltar al contenido
Curso Claude Code en equipo: una sola forma de trabajar
15/29 Bloque opcional · QA, guardia y subagentes en el plugin Hook PreToolUse en un plugin de Claude Code: la guardia que bloquea comandos peligrosos
Tu lectura Quedan 19 min
Lección 15 de 29 · Bloque opcional · QA, guardia y subagentes en el plugin

Hook PreToolUse en un plugin de Claude Code: la guardia que bloquea comandos peligrosos

19 min de lectura Claude Code 2.1

Hola, bienvenido. En esta lección vamos a añadir al plugin team su segundo hook, la guardia: un hook PreToolUse que revisa cada comando de Bash antes de que Claude lo ejecute y bloquea la lectura del .env y los comandos que destruyen trabajo o datos. Como vive en el plugin, la tendrá todo el equipo en todos los repos, con su versión y sus tests.

Qué es un hook de seguridad y cómo se escribe uno para un repo lo tienes en la lección Hook de seguridad para bloquear comandos peligrosos en Claude Code (se abre en una pestaña nueva) del curso de Claude Code. Aquí la diferencia es que la guardia es del equipo: vive en el plugin, se prueba con fixtures como el hook que comprueba el repo y ese mismo hook comprueba al abrir cada sesión que la guardia funciona en tu máquina.

Lo que no paraba el deny del proyecto

Al preparar helpdesk vimos que una regla deny se compara con el texto del comando, y que Bash(./vendor/bin/sail artisan migrate:fresh*) no paraba vendor/bin/sail artisan migrate:fresh, escrito sin ./. Lo solucionamos duplicando cada regla, pero el problema de fondo sigue ahí: cada forma distinta de escribir un comando necesita su regla. Y con el .env pasa algo parecido. Read(.env) impide que Claude lo abra con su herramienta de lectura, pero no que lo lea con Bash: la skill de QA del proyecto, como vimos en la lección anterior, le pedía a Claude que sacara el token con awk del .env.

Un hook PreToolUse recibe el comando completo antes de que se ejecute y decide con su propia lógica, así que puede reconocer el comando lo escriba Claude como lo escriba. Las reglas deny del repo se quedan, porque son la primera barrera y no cuestan nada. La guardia se suma a ellas, y como es un script del plugin, la vamos a probar con fixtures antes de publicarla, igual que el hook de SessionStart.

Lo que queda de esta lección
  1. 02La guardia: guard.sh
  2. 03Qué recibe el hook en PreToolUse
  3. 04El hook en hooks.json
  4. 05doctor.sh comprueba la guardia
  5. 06Probar la guardia sin abrir Claude
  6. 07Qué garantiza la guardia y qué no
  7. 08Publicar la 1.4.0
Sigue leyendo con tu suscripción El curso completo, con su proyecto final, el certificado y el foro, está incluido en la suscripción. Ver los planes