Claude Code expuso contraseñas y claves en 1.122 archivos públicos de GitHub

Las contraseñas y claves de API que los desarrolladores escribieron en comandos aprobados en Claude Code están en repositorios públicos de GitHub, donde cualquiera puede leerlas. Así lo muestra una investigación de la empresa de seguridad Apiiro, publicada el 5 de noviembre de 2026 y recogida por The Hacker News.

El problema está en el modo “Yes, and don't ask again” (“Sí, y no preguntar de nuevo”). Al aprobar un comando con esa opción, el asistente de programación de Anthropic guarda la regla de permiso en el archivo .claude/settings.local.json del proyecto — y, cuando la regla vale para un comando exacto, el comando completo se guarda palabra por palabra, incluida cualquier contraseña o token escrito en él, en texto plano.

Qué encontró Apiiro

Los investigadores rastrearon el GitHub público y encontraron 104.185 copias del archivo en 103.617 repositorios. De ellas, 1.122 copias (alrededor del 1,1%) contenían al menos un secreto, sumando 1.379 secretos distintos solo en las versiones actuales del archivo local. Sumando el historial de git, el archivo compartido .claude/settings.json y los registros de conversaciones con agentes, el total llega a 2.539 secretos en 1.994 repositorios, con 63 organizaciones implicadas.

  • 379 contraseñas de bases de datos — más de un tercio de los secretos abre acceso directo a una base de datos;
  • 43 inicios de sesión SSH de servidores públicos;
  • 42 tokens de GitHub, GitLab y npm;
  • 23 claves AWS;
  • Entre los casos más graves, según los investigadores, están una clave de nube con nivel de administrador de un proveedor de bases de datos y la contraseña de propietario de una base de datos de historiales médicos.

Borrar el archivo del proyecto no deshace la filtración: las versiones antiguas siguen en el historial de git y en los forks. Los investigadores encontraron otros 734 secretos en versiones antiguas del archivo, en 509 repositorios, y 211 forks de 74 repositorios con los mismos secretos. El lunes de la semana de la publicación, todos los archivos con secretos seguían en la rama principal de sus repositorios — y, en la mitad de ellos, llevaban allí al menos 217 días.

Por qué los detectores no lo vieron todo

Los investigadores probaron los detectores de secretos gitleaks y TruffleHog sobre las 1.122 copias con secretos: gitleaks marcó 564 y TruffleHog, 643 — y 215 no fueron marcados por ninguno de los dos. La mayoría de los fallos son contraseñas escritas dentro de comandos, que no siguen el formato conocido de una clave y parecen palabras comunes en una línea de comandos.

Hay un detalle de diseño en el centro del problema: Claude Code añade el archivo a las exclusiones globales de git del usuario cuando lo crea, pero nunca lo añade al .gitignore del propio proyecto — así que la protección no viaja con el código. En 539 de los 1.105 repositorios rastreados, un commit firmado por Claude como coautor modificó el archivo, lo que sugiere que el propio agente suele hacer el commit del archivo.

Qué hacer ahora

La recomendación de los investigadores es rotar las credenciales antes de cualquier limpieza:

  1. Busque .claude/settings.local.json y .claude/settings.json en su organización de GitHub y revise el historial de git, incluso donde los archivos ya fueron borrados;
  2. Rote primero: cambie todas las contraseñas, tokens y claves que esos archivos hayan contenido, antes de limpiar;
  3. Quite el archivo local del control de versiones con git rm --cached .claude/settings.local.json y añádalo al .gitignore del repositorio;
  4. Abra el archivo en su propio equipo y borre cualquier regla que contenga un secreto, aunque nunca se haya subido a GitHub;
  5. Nunca ponga secretos dentro de comandos: refiéralos como variables de un gestor de secretos, como $DB_URL, para que la regla guardada conserve el nombre de la variable, no el secreto;
  6. Apruebe patrones, como Bash(npm run:*), en lugar de comandos únicos.

Una alerta antigua, sin respuesta

Los usuarios de Claude Code ya habían denunciado este comportamiento: un informe de error enviado el 11 de agosto de 2025 decía que los comandos aprobados con claves de API y tokens se almacenaban palabra por palabra en settings.local.json. Un bot automático cerró el informe como “no planeado” el 3 de enero, tras 60 días sin actividad. Según los investigadores, los cuatro informes relacionados citados en el estudio fueron cerrados por el mismo bot — el más reciente la víspera de la publicación — y ninguno recibió respuesta de Anthropic.

Conviene marcar el límite de lo confirmado: Apiiro no comprobó si las credenciales encontradas siguen funcionando — “secreto real”, en el estudio, significa un valor que coincidió con un formato conocido o un contexto verificado, con el acuerdo de un revisor de IA. Una de las empresas avisadas confirmó que su clave estaba activa en el momento del hallazgo. De los 16 agentes de programación cuya documentación compararon los investigadores, Claude Code es el único confirmado que guarda el comando aprobado completo en un archivo del proyecto por defecto.

Geekiki ya cubrió otro caso de seguridad relacionado con Claude Code: Claude burló el monitor de seguridad de Anthropic con ficción y apicultura.

Fuentes

Crédito de la imagen: The Hacker News.

Nota de transparencia: este artículo fue producido con ayuda de inteligencia artificial, cruzando información de fuentes públicas de internet, incluida la investigación original de Apiiro y la cobertura de The Hacker News. Los hechos fueron verificados en las fuentes citadas; consulte las fuentes originales para confirmar los detalles.

Muse