Pre-flight Checks
Bug Description
La explicacion simple: en Linux, "0600" es un candado que dice "solo el dueño puede leer esto". En Windows ese candado no existe con la misma llave.. el sistema usa otro mecanismo (ACLs), y la funcion que en Linux pone el candado, en Windows basicamente no hace nada. Entonces prometemos un candado que en Windows no se esta poniendo.
Lo tecnico: ~/.claude.json carga la sesion OAuth, y el PR #1909 fuerza os.Chmod(path, 0o600) tras cada escritura. En Windows, os.Chmod solo alterna el bit read-only de FAT/NTFS.. no establece un DACL restrictivo. Go ademas reporta el modo de NTFS como 0666, por lo que los tests de modo llevan guard runtime.GOOS != "windows": la garantia queda sin enforcement y sin cobertura en la plataforma donde mas usuarios de gentle-ai hay. Señalado por @dnlrsls en la review del PR #1909.
En la practica el riesgo es moderado: el perfil de usuario de Windows ya restringe el acceso de otros usuarios al home. Pero si la garantia se promete, deberia ser real o estar documentada como best-effort por plataforma.
Steps to Reproduce
- En Windows, correr un install/sync que escriba
~/.claude.json
icacls %USERPROFILE%\.claude.json.. el DACL es el heredado del perfil, no uno restrictivo equivalente a 0600
- Los tests de modo se saltean en Windows (
runtime.GOOS != "windows")
Expected Behavior
Una de dos, decidida por maintainers:
- Enforcement real en Windows: establecer un DACL restrictivo (solo el SID del usuario) via
golang.org/x/sys/windows, con test de regresion en la lane de Windows del CI.
- Best-effort documentado: dejar constancia en el codigo y la doc de que 0600 aplica a plataformas POSIX y que en Windows la proteccion es la del perfil de usuario.
Actual Behavior
La promesa de 0600 existe en el codigo pero en Windows no cambia ningun permiso efectivo.
Operating System
Windows
Agent / Client
Claude Code
Shell
bash (Git Bash)
Pre-flight Checks
Bug Description
La explicacion simple: en Linux, "0600" es un candado que dice "solo el dueño puede leer esto". En Windows ese candado no existe con la misma llave.. el sistema usa otro mecanismo (ACLs), y la funcion que en Linux pone el candado, en Windows basicamente no hace nada. Entonces prometemos un candado que en Windows no se esta poniendo.
Lo tecnico:
~/.claude.jsoncarga la sesion OAuth, y el PR #1909 fuerzaos.Chmod(path, 0o600)tras cada escritura. En Windows,os.Chmodsolo alterna el bit read-only de FAT/NTFS.. no establece un DACL restrictivo. Go ademas reporta el modo de NTFS como 0666, por lo que los tests de modo llevan guardruntime.GOOS != "windows": la garantia queda sin enforcement y sin cobertura en la plataforma donde mas usuarios de gentle-ai hay. Señalado por @dnlrsls en la review del PR #1909.En la practica el riesgo es moderado: el perfil de usuario de Windows ya restringe el acceso de otros usuarios al home. Pero si la garantia se promete, deberia ser real o estar documentada como best-effort por plataforma.
Steps to Reproduce
~/.claude.jsonicacls %USERPROFILE%\.claude.json.. el DACL es el heredado del perfil, no uno restrictivo equivalente a 0600runtime.GOOS != "windows")Expected Behavior
Una de dos, decidida por maintainers:
golang.org/x/sys/windows, con test de regresion en la lane de Windows del CI.Actual Behavior
La promesa de 0600 existe en el codigo pero en Windows no cambia ningun permiso efectivo.
Operating System
Windows
Agent / Client
Claude Code
Shell
bash (Git Bash)