El 7 de noviembre de 2026 se conoció un recuento de Apiiro: 1.122 copias públicas de .claude/settings.local.json en GitHub contenían secretos. El riesgo descrito aparece cuando Claude Code guarda un comando exacto aprobado que incluye una contraseña o un token literal. Apiiro no comprobó si la mayoría de esas credenciales seguía activa; una empresa contactada confirmó que su clave sí lo estaba.
Si una credencial pudo llegar a Git, rótala antes de limpiar el repositorio: borrar el archivo actual no elimina las copias del historial ni de las bifurcaciones.
Cómo puede guardarse un secreto en el archivo local
Al elegir «Yes, and don’t ask again» para permitir un comando exacto, Claude Code puede guardar ese comando como una regla de autorización en .claude/settings.local.json. Si la línea incluye una contraseña o un token escrito directamente, el valor puede quedar guardado en texto plano. Una regla basada en un patrón es distinta: no tiene por qué contener el secreto literal.
Según el comportamiento descrito en el informe, Claude Code añade el archivo a las exclusiones globales de Git del usuario cuando lo escribe por primera vez dentro de un repositorio. Esa exclusión afecta a la configuración local de esa persona: no añade una regla al .gitignore compartido por el proyecto ni retira archivos que ya se hayan subido.
Qué cuentan las cifras de Apiiro
Apiiro contó 104.185 copias públicas del archivo en 103.617 repositorios. De ellas, 1.122 contenían secretos, con un total de 1.379 credenciales distintas. El recuento ampliado incorpora otros tipos de archivos y registros, por lo que no mide el mismo conjunto.
| Alcance | Material incluido | Secretos reportados |
| Archivos actuales | Copias públicas de .claude/settings.local.json | 1.379 |
| Recuento ampliado | Versiones antiguas, archivos compartidos .claude/settings.json y registros de conversaciones de agentes | 2.539 |
El total ampliado corresponde a 1.994 repositorios. Entre los tipos de credenciales señalados figuran contraseñas de bases de datos, accesos SSH a servidores públicos, tokens de GitHub, GitLab y npm, y claves de AWS.
El historial de Git puede conservar copias
Borrar el archivo de la rama actual no elimina las versiones guardadas en el historial ni las copias presentes en bifurcaciones. Apiiro identificó secretos en versiones antiguas de archivos y en bifurcaciones de repositorios.
En sus análisis de los 1.122 archivos con secretos, gitleaks detectó 564 y TruffleHog, 643. Ninguno de los dos detectó 215 archivos. Apiiro ejecutó los escaneos sin el paso de verificación de cada herramienta; sus resultados pueden solaparse.
Qué hacer si el archivo llegó al repositorio
Apiiro recomendó buscar el archivo y las credenciales tanto en la rama actual como en el historial de Git. Si aparece una clave o contraseña, el orden importa: rota la credencial antes de limpiar las copias. Después, deja de rastrear el archivo, añade una regla al .gitignore del repositorio y elimina las reglas locales que contengan secretos literales.
Para evitar que el valor quede escrito dentro del comando, Apiiro recomendó recurrir a variables de un gestor de secretos y aprobar patrones de comandos en vez de comandos exactos. Las variables de entorno tampoco ofrecen una garantía universal: en una discusión de usuarios, una persona advirtió que un proceso con permisos suficientes podría acceder a ellas.
Limitar la lectura de archivos es otro control
En una conversación de la comunidad de Claude Code, un usuario que citó su documentación recomendó reglas deny para la herramienta Read en rutas sensibles y señaló que .claudeignore no restringe el acceso de las herramientas a archivos. Ese control limita lecturas; no elimina un secreto ya guardado en un comando ni las copias que siguen en Git.