Claude Code expuso contraseñas en 1.122 archivos públicos de GitHub con “Don't Ask Again”
El equipo de Apiiro descubrió 1.122 archivos públicos en GitHub que contenían contraseñas y que llegaron allí a través del botón “Don't Ask Again” de Claude Code. A juzgar por el titular y el contexto, el mecanismo es sencillo: el agente solicita permiso para ejecutar un comando, usted lo autoriza de forma permanente y el propio comando —secreto incluido— queda guardado en la configuración del proyecto. Después, esa configuración se incluye en un commit junto con el código. La publicación obtuvo 114 puntos y 85 comentarios en Hacker News.
Procesado por IA desde Hacker News AI; editado por Hamidun News
Usted ha pulsado “Don't Ask Again” cien veces para que el agente deje de interrumpirle con cada comando. Es cómodo. Pero investigadores de Apiiro demostraron que esa comodidad tiene un precio: en el GitHub público aparecieron 1.122 archivos con contraseñas filtradas precisamente a través de estos permisos de Claude Code.
Una salvedad: solo disponemos del titular y de la señal de Hacker News (114 puntos y 85 comentarios), no del texto completo del informe. Por eso, el mecanismo que se describe a continuación es el más probable, y conviene contrastar los detalles con el original.
Cómo termina una contraseña en GitHub
Imagine una sesión típica. Le pide al agente que se conecte a una base de datos y ejecute una migración. El agente crea un comando en el que la contraseña aparece directamente en la cadena de conexión, por ejemplo como parámetro o variable de entorno. Claude Code solicita permiso. Usted selecciona “Don't Ask Again” para no tener que confirmarlo cada vez.
Para recordar su elección, la herramienta escribe una regla de permisos en el archivo de configuración del proyecto. Si la regla está vinculada a un comando concreto, el archivo recibe el comando completo, incluido el secreto. A partir de ahí, todo continúa como siempre: git add, commit, push. El archivo de configuración queda en el repositorio junto al código y, si el repositorio es público, la contraseña queda al alcance de cualquiera.
Es importante señalar que nadie hizo nada manifiestamente absurdo. La persona no pegó la contraseña en el README ni incluyó un archivo .env en un commit. El secreto se filtró como efecto secundario de una función cómoda que nadie percibe como un lugar de almacenamiento de datos.
Por qué esto es más grave que una filtración corriente
Los escáneres de secretos tradicionales buscan patrones conocidos en el código y en los archivos de configuración de la aplicación. Los archivos de configuración de agentes suelen ser un punto ciego: no son archivos de código fuente ni archivos .env, por lo que las reglas y expectativas del equipo no se aplican a ellos.
Existe una segunda dimensión del problema. Los agentes introducen de buen grado credenciales en la línea de comandos porque así resulta más fácil resolver la tarea. Cualquier mecanismo que recuerde comandos se convierte en un registro de secretos. Esto no afecta únicamente a Claude Code: cualquier asistente que guarde junto al proyecto una lista de acciones permitidas presenta los mismos riesgos.
La cifra de 1.122 también debe interpretarse con prudencia. Es lo que apareció en una búsqueda pública. No incluye repositorios privados, forks ni archivos ya eliminados pero todavía almacenados en caché, de modo que la escala real probablemente sea mayor.
Qué hacer ahora mismo
En primer lugar, localice en sus repositorios el directorio de configuración del agente y examine los comandos autorizados. Considere comprometido todo lo que parezca una contraseña, un token o una cadena de conexión: primero rote la clave y después proceda a la limpieza. Eliminar la línea únicamente del último commit no sirve, porque el historial de git permanece.
En segundo lugar, separe la configuración compartida de la local. Las reglas que el equipo quiera compartir deben mantenerse separadas de los permisos personales, y el archivo local debe figurar en .gitignore.
En tercer lugar, añada un escáner de secretos a pre-commit y CI e incluya explícitamente en la revisión los archivos de configuración de herramientas de IA. Es una protección barata.
En cuarto lugar, no entregue secretos al agente mediante la línea de comandos. Transmítalos a través de variables de entorno proporcionadas por un gestor de secretos o mediante tokens temporales de corta duración. Así, incluso un comando recordado no contendrá nada valioso.
La conclusión para equipos de producto y fundadores
Este es un buen ejemplo de cómo la comodidad de los permisos en las herramientas de agentes crea una nueva superficie de ataque. Si está desarrollando su propio agente, piense exactamente qué guarda al recordar la elección del usuario: una plantilla de comando o su texto literal, y si se almacena en un archivo que termina en git de forma predeterminada. Enmascarar los secretos antes de escribirlos y ubicar el archivo en un lugar seguro requiere un par de días de trabajo; una filtración en mil repositorios cuesta mucho más.
- 8 nov 2026Las elecciones en EE. UU. borran 3,2 billones de dólares del mercado tecnológico y aumentan la presión sobre los centros de datos
- 8 nov 2026Claude detecta pensamientos implantados en el 20% de los casos, pero no puede identificarlos
- 8 nov 2026Los inversores exigen reducir la valoración de Anthropic de 1,5 billones de dólares antes de la OPV
- 8 nov 2026Los inversores de Anthropic revisan la valoracion de su IPO: podria caer a $1,2 billones
Preguntas frecuentes sobre la noticia
Cómo termina una contraseña en GitHub?
Imagine una sesión típica. Le pide al agente que se conecte a una base de datos y ejecute una migración. El agente crea un comando en el que la contraseña aparece directamente en la cadena de conexión, por ejemplo como parámetro o variable de entorno. Claude Code solicita permiso. Usted selecciona “Don't Ask Again” para no tener que confirmarlo cada vez. Para recordar su elección, la herramienta escribe una regla de permisos en el archivo de configuración del proyecto.
¿Qué se sabe sobre Por qué esto es más grave que una filtración corriente?
Los escáneres de secretos tradicionales buscan patrones conocidos en el código y en los archivos de configuración de la aplicación. Los archivos de configuración de agentes suelen ser un punto ciego: no son archivos de código fuente ni archivos .env, por lo que las reglas y expectativas del equipo no se aplican a ellos. Existe una segunda dimensión del problema. Los agentes introducen de buen grado credenciales en la línea de comandos porque así resulta más fácil resolver la tarea.
¿Qué se sabe sobre Qué hacer ahora mismo?
En primer lugar, localice en sus repositorios el directorio de configuración del agente y examine los comandos autorizados. Considere comprometido todo lo que parezca una contraseña, un token o una cadena de conexión: primero rote la clave y después proceda a la limpieza. Eliminar la línea únicamente del último commit no sirve, porque el historial de git permanece. En segundo lugar, separe la configuración compartida de la local.
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
Lo esencial de la IA — una vez por semana
Siete historias que de verdad importaron, elegidas a mano. Sin ruido ni notas de prensa.
¡Listo! Revisa tu correo para la confirmación.