🌱 Empieza aquí · Escaneo de secretos antes de cada commit
Para ti (el humano)
Dile a tu asistente:
"Siembra esta semilla 🌱"
Y ya. Tu asistente hace todo lo técnico. Tú solo confirmas cuando te pregunte.
¿Otras formas de decírselo? "instala este hook", "pon a funcionar el escaneo de secretos", "activa el guardián de credenciales". Te entiende igual.
Esta semilla instala un hook (gancho de automatización): un guardián silencioso que revisa tus archivos justo antes de cada commit de git y detiene la operación si detecta una contraseña, una llave de API (token de acceso) o cualquier credencial a punto de subirse por error a tu repositorio.
Para el asistente que siembra
Eres el asistente. Instala este hook siguiendo estos pasos. No le pidas al humano nada técnico; tú resuelves y solo confirmas lo delicado.
1. Copia el script del kernel
Copia kernel/git-secret-scan.sh a la carpeta de hooks de la plataforma del usuario:
- Claude Code / Cowork: cópialo a
<TU-RUTA>(recomendado:~/.claude/hooks/git-secret-scan.sh).- En macOS/Linux
~/.claude/hooks/ya existe o se crea conmkdir -p ~/.claude/hooks. - En Windows la ruta equivalente es
%USERPROFILE%\.claude\hooks\.
- En macOS/Linux
mkdir -p ~/.claude/hooks
cp kernel/git-secret-scan.sh ~/.claude/hooks/git-secret-scan.sh
2. Dale permiso de ejecución (macOS / Linux)
chmod +x ~/.claude/hooks/git-secret-scan.sh
En Windows este paso no aplica (se invoca con bash, que viene con Git para Windows).
3. Conéctalo como hook PreToolUse en settings.json
Abre el settings.json del usuario (~/.claude/settings.json) y agrega este bloque dentro de hooks. Si ya existe una sección PreToolUse, añade el objeto al arreglo existente, no lo dupliques.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "bash ~/.claude/hooks/git-secret-scan.sh"
}
]
}
]
}
}
matcher: "Bash"hace que el hook se dispare antes de cada comando de terminal. El propio script se filtra solo: únicamente actúa cuando el comando es ungit commit; para todo lo demás sale al instante sin molestar.
4. Verificación post-siembra (obligatoria)
Comprueba con un repositorio de prueba desechable que el guardián bloquea de verdad. Copia y corre esto tal cual:
SB="$(mktemp -d)"; cd "$SB"; git init -q
printf 'GOOGLE_API_KEY=AIzaSyA0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6\n' > config.txt
bash ~/.claude/hooks/git-secret-scan.sh; echo "codigo=$?"
Salida esperada:
BLOQUEADO: se detectaron posibles secretos en: config.txt
Detalle guardado en .secret-detected — mueve el secreto antes de hacer commit.
codigo=2
Si viste codigo=2 y el mensaje BLOQUEADO, el guardián funciona. (La llave del ejemplo es falsa, solo tiene el formato correcto para la prueba.) El directorio $SB es temporal y el sistema lo limpia solo.
Notas de configuración
<TU-RUTA>= carpeta de hooks donde copiaste el script (~/.claude/hooks/por defecto)..git-secret-scan-allowlist(opcional) = archivo en la raíz de un repo, con una ruta por línea, para saltar archivos que dan falso positivo (por ejemplo, documentación que menciona una llave de ejemplo)..secret-detected= reporte que el hook deja en la raíz del repo cuando encuentra algo. Conviene agregarlo a.gitignorepara que no se suba.- El script no depende de rutas fijas: opera sobre el repositorio git donde se ejecuta (
git rev-parse --show-toplevel).
¿Cómo sé que funcionó?
A partir de ahora, cada vez que tu asistente vaya a hacer commit, este guardián revisa primero. Si todo está limpio, ni te enteras: el commit pasa normal. Si detecta una credencial a punto de subirse, detiene el commit y te avisa qué archivo revisar. Tú decides: sacas el secreto a un lugar seguro, o (si fue una falsa alarma) tu asistente lo agrega a la lista de excepciones. Tu repositorio queda protegido sin que tengas que acordarte de revisar nada.
