Documentación / Seguridad
Bóveda de credenciales
Yuli encuentra .env, claves y tokens sueltos en tu proyecto y te ofrece guardarlos cifrados fuera del repositorio, sin romper la ejecución.
Yuli detecta credenciales sueltas en tu proyecto (un .env en la raíz, claves privadas, tokens en .npmrc, cuentas de servicio, secretos escritos en el código…) y te ofrece guardarlas en una bóveda cifrada fuera del repositorio. Nada se mueve sin que lo confirmes.
Qué detecta
| Tipo | Ejemplos |
|---|---|
| Entorno | .env, .env.local, .env.production… Las plantillas .env.example, .env.sample y .env.template no cuentan. |
| Claves y almacenes | *.pem, *.key, *.p12, *.pfx, *.jks, id_rsa, id_ed25519 |
| Credenciales de herramientas | Cuentas de servicio JSON, credentials.json, .npmrc, .yarnrc o .pypirc con token, .aws/credentials, kubeconfig, config.json de Docker, *.tfvars, .netrc, .git-credentials, .pgpass |
| Código | Secretos escritos directamente en el código fuente |
Cada hallazgo indica su situación en git. Estos casos se marcan con más gravedad:
| Insignia | Significa |
|---|---|
| Git lo sigue | El archivo está versionado. |
| Sin .gitignore | El archivo no está ignorado: el próximo commit podría subirlo. |
| En el historial de git | Alguna vez se subió al repositorio. |
La tarjeta «Credenciales al descubierto»
Cuando Yuli encuentra algo, aparece la tarjeta Credenciales al descubierto. Para cada hallazgo eliges:
- Mover a la bóveda (recomendado): Yuli lo copia cifrado a la bóveda, comprueba la copia y solo entonces borra el original. Crea un
.env.examplecon las claves vacías y añade el patrón al.gitignore. - Ya está bien así: lo deja donde está. Escribe el Motivo y pulsa Recordar para que no vuelva a preguntar.
- Abrir: lo abre en el editor.
Siempre puedes Restaurar un archivo movido.
Mover un .env paso a paso
Si el archivo llegó a subirse a git, moverlo no basta: el secreto sigue en el historial. Yuli te avisa de que debes rotarlo (cambiar la contraseña o el token) y te muestra cómo limpiar el historial con git filter-repo. Yuli nunca reescribe el historial por su cuenta.
Dónde está y cómo se cifra
| Ubicación por defecto | <configuración>/yuli-ide/vault/<id-del-proyecto>/, en la carpeta de configuración de tu usuario, fuera de cualquier proyecto |
| Permisos | Solo para ti: 0700/0600 en macOS y Linux, una ACL de tu usuario en Windows |
| Cifrado en Windows | DPAPI |
| Cifrado en macOS y Linux | AES-256-GCM, con la clave maestra en el llavero del sistema |
Si el sistema no ofrece esa protección, Yuli no mueve nada.
Puedes elegir otra carpeta (por ejemplo, un disco externo) con Cambiar ubicación…, siempre que esté fuera del proyecto y de cualquier repositorio git.
Opciones
En Opciones globales › Seguridad › Bóveda de credenciales:
| Opción | Qué hace |
|---|---|
| Cambiar ubicación… | Elige otra carpeta para la bóveda. |
| Inyectar | Pasa las variables de la bóveda a la ejecución. Por defecto se inyectan .env, .env.local y .env.development. |
| Materializar al ejecutar | Escribe un .env temporal mientras dura la ejecución. |
| Añadir variable | Agrega una variable nueva directamente a la bóveda. |
| Crear .env.example en el proyecto | Genera la plantilla con las claves vacías. |
| Mostrar | Enseña un valor durante 20 segundos. |
Tu proyecto sigue funcionando
Al ejecutar (configuraciones de ejecución, tareas y la terminal integrada), Yuli inyecta las variables de la bóveda como variables de entorno. Las librerías dotenv las respetan porque las variables reales tienen prioridad.
Si tu herramienta necesita el archivo en disco, activa Materializar al ejecutar: Yuli escribe un .env temporal (permisos 0600, ignorado por git) solo mientras dura la ejecución y lo borra al terminar.
Y los agentes de IA
Los agentes (Claude Code, Kiro, Codex, Antigravity, Copilot y el chat de Yuli) nunca ven los valores. Los hooks del agente niegan el acceso a la carpeta de la bóveda y, si un valor aparece en la salida de la terminal, se enmascara.
Los agentes sí pueden ayudarte a encontrar el problema con dos herramientas que no devuelven valores:
| Herramienta | Qué hace |
|---|---|
yuli_vault_findings |
Solo lectura: rutas, tipo, gravedad, situación en git, nombres de las variables y lo que ya guarda la bóveda. Nunca un valor. |
yuli_vault_propose_move |
Te muestra la tarjeta de Yuli con los archivos que sugiere mover y por qué. No mueve nada: decides tú en la tarjeta. |
Así el agente puede decir «hay un .env en la raíz, ¿lo muevo a la bóveda?», pero nunca leerlo. Ver también Secretos y privacidad.