Hook PreToolUse en un plugin de Claude Code: la guardia que bloquea comandos peligrosos
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.
- 02La guardia: guard.sh
- 03Qué recibe el hook en PreToolUse
- 04El hook en hooks.json
- 05doctor.sh comprueba la guardia
- 06Probar la guardia sin abrir Claude
- 07Qué garantiza la guardia y qué no
- 08Publicar la 1.4.0