Aviso de "archivo modificado externamente" expone contenido de credenciales sin distinguir origen del cambio ni ofrecer exclusión de rutas

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 16, 2026

Al trabajar en un proyecto interno con múltiples módulos (cada uno con su propio archivo .env de credenciales, típico de una arquitectura de microservicios/módulos independientes), observé el siguiente comportamiento repetido:

Cuando un archivo que el agente ya había leído cambia en disco por una vía distinta a su propia herramienta de edición (ya sea porque el agente lo modificó a través de un script ejecutado vía la herramienta de shell, o porque el usuario lo editó manualmente fuera de la sesión), el harness muestra un system-reminder con el diff completo del archivo modificado. Este mecanismo:

  1. No distingue si el cambio lo originó el propio agente o una edición manual del usuario.
  2. No tiene ningún filtro por patrón de nombre de archivo (.env, *.pem, *.key, etc.) para excluir archivos de secretos del diff mostrado.
  3. Expuso, en al menos dos ocasiones dentro de la misma sesión de trabajo, el valor real de una credencial (una contraseña de base de datos generada por el agente, y una contraseña que el usuario escribió a mano en un .env) directamente en el contexto de la conversación — sin que el agente ni el usuario lo solicitaran.

Revisé el schema completo de settings.json buscando una mitigación. Existe sandbox.credentials.files / sandbox.credentials.envVars (modos deny/mask), pero no resuelve este caso: solo aplica a comandos ejecutados dentro del sandbox de Bash (que no estaba activo en este proyecto) y protege lecturas de subprocesos / egress de red vía proxy — no el diff que muestran las herramientas de lectura/edición de archivos al detectar un cambio externo, que es la ruta real por la que se expuso el secreto en ambos casos.

Impacto: cualquier proyecto que use archivos .env (patrón extremadamente común) y donde el agente o el usuario edite esos archivos durante una sesión activa, corre el riesgo de que el valor real de una credencial quede expuesto en el historial de la sesión sin ninguna acción negligente de por medio — ocurre incluso siguiendo buenas prácticas de manejo de secretos.

Sugerencia: una lista de exclusión de patrones de ruta (similar a .gitignore o a la ya existente sandbox.credentials.files) que aplique específicamente al mecanismo de detección de cambios externos, no solo al sandbox de Bash — de modo que archivos como .env, *.pem, *.key puedan excluirse del diff mostrado en el system-reminder, mostrando solo un aviso de "archivo modificado" sin el contenido.

View original on GitHub ↗