PreToolUse hooks: intercepta lo que Claude Code lee antes de que ocurra
Claude Code tiene acceso a todos tus ficheros, incluyendo credenciales y claves privadas. El hook PreToolUse te da control sobre qué puede leer el agente antes de que lo haga.
Claude Code lee tus ficheros. Todos. Incluyendo .env, claves privadas y credenciales, y envía ese contenido a la API para procesarlo. A no ser que, antes de que lo haga, un script tuyo intercepte la llamada.
Esto es PreToolUse hook, y lleva en Claude Code desde su lanzamiento. Se conoce y utiliza poco. Lo aprendí en el curso Claude Code in Action de Anthropic, y desde entonces forma parte de cualquier proyecto en el que trabajo con agentes.
¿Qué es un PreToolUse hook?
Es un script que se ejecuta antes de que el agente invoque cualquier herramienta — Read, Grep, Bash, Write. Recibe el nombre de la tool y sus parámetros vía stdin, y devuelve una decisión: permitir o denegar.
{
"tool": "Read",
"input": { "file_path": "/home/user/.env" }
}
Tu script lee ese JSON, evalúa la ruta o el comando, y responde con allow o block. Claude Code respeta la decisión sin reintentar.
Por qué importa
Los coding agents modernos resuelven tareas complejas de forma autónoma. Esa autonomía es su valor — y su riesgo. Sin guardrails explícitos, un agente puede:
- Leer credenciales almacenadas en
.envo~/.ssh/ - Ejecutar comandos que exponen variables de entorno
- Hacer
grepsobre rutas que no debería tocar
El problema no es mala intención: es falta de contexto sobre tu infraestructura concreta. Tú sí lo tienes.
Qué se puede interceptar
| Tool | Patrón a bloquear |
|---|---|
Read | .env, .pem, .key, secrets/, ~/.ssh/ |
Grep | Patrones apuntando a rutas de credenciales |
Bash | cat .env, printenv | grep TOKEN, echo $API_KEY |
Implementación
La guía completa con la implementación lista para usar está disponible en el adjunto. Incluye el script Python, la configuración en settings.json y los patrones de bloqueo para los casos más comunes.
Si trabajas con Claude Code en proyectos reales, este es uno de los primeros controles que deberías tener activo.
Guía adjunta
Implementación completa lista para usar