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.example con 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

0 de 6 hechos

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.