Skill sanitize: no doxxing, no credenciales en repos (2026-09-27)
El incidente (por qué existe esto)
Se espejó [usuario]/clinica-chat a Hugging Face con:
- correo personal en el README y en los commits,
- ID de cuenta de Cloudflare y el nombre de la cuenta,
- URL del Worker que revela el subdominio de la cuenta,
- y un mapa de credenciales: el doc
…credenciales-cloudflare-…-estado.md(líneas del rc del shell, ids/nombres de token, zonas, permisos).
Ningún valor de token salió; lo que salió fue PII + identificadores + un mapa de dónde viven las credenciales. “Privado” (GitHub y HF lo eran) no es “seguro”.
Qué se hizo
- HF: repo
[usuario]/clinica-chatborrado (hf repos delete … --yes, 404 confirmado). - Rama de trabajo: README limpio; borrado el doc de credenciales; URLs de cuenta y
menciones al rc del shell genericizadas; datos reales a
DEPLOY.local.md(*.local.md, gitignored); default del test LLM alocalhost. - Historial reescrito con
git filter-repo: archivos + mensajes + metadata de autor (correo → noreply). Force-push de las dos refs (mainywa-customer). - Verificado con clon fresco, no de oídas.
Dos trampas que costaron tiempo
- El force-push a
mainno basta.wa-customerseguía apuntando al historial viejo; un clon fresco por eso traía los datos. Hay que limpiar todas las refs. - El correo vive en la metadata de cada commit, no solo en los archivos.
La skill (creada)
~/.claude/skills/sanitize/SKILL.md— cuándo y cómo.~/.claude/skills/sanitize/scan.sh— escáner (árbol +--history; y--strict).exit 1si hay blockers. Detecta correos, prefijos de token conocidos, private keys, y punteros a credenciales (rc del shell, netrc, credenciales de AWS). Ve archivos untracked (clave para un pre-commit).~/nef/pii-markers.txt— marcadores propios (correos por local-part, dominios, infra). Local, nunca versionado.
El escáner encontró un segundo leak que se me pasó
decisions/2026-09-27-plan-evaluacion-rag-pymes.md:76 tenía un correo personal de la
UNAM. Ya purgado también del historial. (La dirección exacta se redactó aquí a propósito:
escribirla sería reintroducirla.)
Lección: correr el escáner ANTES de commitear, no confiar en el ojo.
Regla
Antes de commit / push / espejar a un tercero (HF, Vercel, Pages):
bash ~/.claude/skills/sanitize/scan.sh . --historyDatos reales → *.local.md (ignorado). Nunca el valor en un archivo versionado ni en un
doc que se espeja.