La firma de seguridad Apiiro publicó el 5 de noviembre de 2026 que Claude Code, el agente de programación de Anthropic, guarda en un archivo del proyecto los comandos que el usuario aprueba para siempre, con las contraseñas que lleven dentro. En GitHub encontró 1.122 de esos archivos públicos con secretos reales. Afecta a quien programa, o encarga su web, con este agente.
Lo que se sabe
- Cómo pasa: según Apiiro, cuando Claude Code propone un comando que necesita una clave (consultar una base de datos, llamar a una API) y el usuario elige «Yes, and don't ask again», el comando se guarda tal cual, clave incluida, como regla de permiso en `.claude/settings.local.json`, dentro de la carpeta del proyecto. La documentación de Claude Code confirma que esa opción guarda la aprobación en ese archivo como regla `allow`.
- Por qué llega a GitHub: la documentación dice que, la primera vez que Claude Code escribe el archivo en un repositorio git, lo añade a la lista global de exclusiones de git del usuario, y que si el archivo se creó a mano hay que añadirlo al `.gitignore`. Apiiro señala que esa exclusión se queda en el equipo del desarrollador: no viaja con el proyecto y no cubre una carpeta que se convierte en repositorio después, otra copia en otro equipo ni un archivo ya subido.
- Cuántos: Apiiro contó entre el 1 y el 3 de noviembre de 2026 104.185 copias públicas del archivo en 103.617 repositorios. 1.122 (el 1,1 %) tienen al menos un secreto real, con 1.379 secretos distintos.
- Qué tipo: más de un tercio abren una base de datos directamente: 379 contraseñas de bases de datos y 122 claves de servicio de Supabase. También hay 43 accesos SSH a servidores públicos, 42 tokens de GitHub, GitLab y npm, y 23 claves de AWS, según el informe.
- Más allá de ese archivo: sumando versiones antiguas, el archivo de configuración compartido y conversaciones con agentes guardadas en los repositorios, Apiiro cuenta 2.539 secretos en 1.994 repositorios. Las versiones antiguas guardan 734 secretos en 509 repositorios que ya no aparecen en la copia actual: borrar el archivo no los quita del historial.
- Quién: 63 organizaciones, sobre todo empresas de software; Apiiro las avisó el 2 y el 3 de noviembre y una confirmó que su clave estaba activa. Apiiro no dice si las demás siguen funcionando.
- Los escáneres no lo ven todo: según Apiiro, uno de cada cinco archivos con secretos no lo detectan ni gitleaks ni TruffleHog, porque son contraseñas escritas dentro de un comando, no claves con un formato conocido.
- Anthropic: Apiiro dice que los usuarios lo reportaban en GitHub desde agosto de 2025 y que ninguno de esos avisos recibió respuesta. The Hacker News no recoge ninguna declaración de Anthropic.
Qué cambia y qué no
- No es un fallo del modelo: Apiiro dice que es el comportamiento del programa y que lo reprodujo con los modelos más recientes. De 16 agentes de programación comparados por su documentación, Claude Code es el único confirmado que guarda por defecto el comando completo en un archivo del proyecto.
- No hace falta que nadie haya atacado nada: la clave queda expuesta en cuanto el archivo se publica. La cuenta de Apiiro es de archivos públicos; no mide cuántos se usaron.
- El riesgo no es solo GitHub: el informe recuerda que el archivo también puede salir en un paquete publicado, una imagen de Docker, un zip o una carpeta sincronizada, y que en el propio equipo está en texto plano.
- Cambia el hábito: escribir una contraseña dentro de un comando que un agente aprueba deja esa contraseña guardada hasta que alguien borre la regla.
Cómo saber si te afecta
Si programas tu web con Claude Code (o con otro agente):
- Busca el archivo en tus repositorios: `.claude/settings.local.json` y también `.claude/settings.json`. Si el repositorio es público, cualquiera puede leerlo.
- Revisa el historial aunque hoy no esté: `git log --all -- .claude/settings.local.json`. Si sale algo, la clave sigue en el historial, en las bifurcaciones y en las copias.
- Abre el archivo en tu equipo y lee la lista `allow`: busca contraseñas, tokens, cadenas de conexión a la base de datos o accesos SSH.
- Si encuentras algo, primero cambia la clave (base de datos, hosting, API) y después limpia. Apiiro insiste en ese orden.
- Deja de seguir el archivo con `git rm --cached .claude/settings.local.json` y añádelo al `.gitignore` del proyecto, no solo al de tu equipo.
- A partir de ahora, que los comandos usen variables (`$DB_URL`) y aprueba patrones como `Bash(npm run:*)` en lugar de comandos con la clave escrita.
Una comprobación más, en tu hosting: si subes la carpeta del proyecto entera por FTP o con un zip, la carpeta `.claude/` puede haber viajado con ella. Abre en el navegador `https://tudominio.com/.claude/settings.local.json`: tiene que dar un error 403 o 404. No todos los servidores bloquean por defecto las carpetas que empiezan por punto. Si se descarga, bórrala del servidor y cambia las claves que contenga.
Si te hace la web un desarrollador o una agencia, pregúntale:
- «¿Usas Claude Code u otro agente de IA en mi proyecto?»
- «¿El archivo `.claude/settings.local.json` está en el `.gitignore` del repositorio y fuera del servidor?»
- «¿Alguna contraseña de mi base de datos, mi hosting o mis API ha estado escrita en esos archivos? Si es así, ¿ya se cambió?»
Relacionado: Brecha en OpenCode: qué hacer con tus claves de API de IA
Fuentes
- Apiiro (Shmulik Cohen y Matan Giladi), «Coding Agents Copy Your Secrets to a Hidden File. Thousands Are on GitHub», 5 de noviembre de 2026 (en inglés)
- Documentación de Claude Code, «Settings files and precedence» (en inglés)
- The Hacker News, 7 de noviembre de 2026 (en inglés)
Actualizaciones: si Anthropic cambia cómo guarda las aprobaciones o responde al informe, se añadirá aquí con su enlace.