Documentation / Sécurité
Coffre-fort d’identifiants
Yuli repère les .env, clés et tokens qui traînent dans votre projet et vous propose de les conserver chiffrés hors du dépôt, sans casser l’exécution.
Yuli détecte les identifiants laissés en clair dans votre projet (un .env à la racine, des clés privées, des tokens dans .npmrc, des comptes de service, des secrets écrits dans le code…) et vous propose de les placer dans un coffre-fort chiffré hors du dépôt. Rien n’est déplacé sans votre confirmation.
Ce qu’il détecte
| Type | Exemples |
|---|---|
| Environnement | .env, .env.local, .env.production… Les modèles .env.example, .env.sample et .env.template ne comptent pas. |
| Clés et magasins | *.pem, *.key, *.p12, *.pfx, *.jks, id_rsa, id_ed25519 |
| Identifiants d’outils | Comptes de service JSON, credentials.json, .npmrc, .yarnrc ou .pypirc avec token, .aws/credentials, kubeconfig, config.json de Docker, *.tfvars, .netrc, .git-credentials, .pgpass |
| Code | Secrets écrits directement dans le code source |
Chaque résultat indique sa situation dans git. Les cas suivants sont signalés avec une gravité plus élevée :
| Badge | Signification |
|---|---|
| Suivi par git | Le fichier est versionné. |
| Absent du .gitignore | Le fichier n’est pas ignoré : le prochain commit pourrait l’envoyer. |
| Dans l’historique git | Il a déjà été envoyé au dépôt. |
La carte « Identifiants exposés »
Lorsque Yuli trouve quelque chose, la carte Identifiants exposés apparaît. Pour chaque résultat, vous choisissez :
- Déplacer vers le coffre-fort (recommandé) : Yuli en copie une version chiffrée dans le coffre-fort, vérifie la copie et seulement ensuite supprime l’original. Il crée un
.env.exampleavec les clés vides et ajoute le motif au.gitignore. - C’est bien ainsi : le fichier reste où il est. Saisissez le Motif et cliquez sur Mémoriser pour que la question ne revienne pas.
- Ouvrir : l’ouvre dans l’éditeur.
Vous pouvez toujours Restaurer un fichier déplacé.
Déplacer un .env pas à pas
Si le fichier a déjà été envoyé dans git, le déplacer ne suffit pas : le secret reste dans l’historique. Yuli vous prévient qu’il faut le renouveler (changer le mot de passe ou le token) et vous montre comment nettoyer l’historique avec git filter-repo. Yuli ne réécrit jamais l’historique de lui-même.
Où il se trouve et comment il est chiffré
| Emplacement par défaut | <configuration>/yuli-ide/vault/<id-du-projet>/, dans le dossier de configuration de votre utilisateur, hors de tout projet |
| Permissions | Réservé à vous : 0700/0600 sous macOS et Linux, une ACL de votre utilisateur sous Windows |
| Chiffrement sous Windows | DPAPI |
| Chiffrement sous macOS et Linux | AES-256-GCM, avec la clé maîtresse dans le trousseau du système |
Si le système n’offre pas cette protection, Yuli ne déplace rien.
Vous pouvez choisir un autre dossier (par exemple un disque externe) avec Changer d’emplacement…, à condition qu’il se trouve hors du projet et de tout dépôt git.
Options
Dans Options globales › Sécurité › Coffre-fort d’identifiants :
| Option | Rôle |
|---|---|
| Changer d’emplacement… | Choisit un autre dossier pour le coffre-fort. |
| Injecter | Transmet les variables du coffre-fort à l’exécution. Par défaut, .env, .env.local et .env.development sont injectés. |
| Matérialiser à l’exécution | Écrit un .env temporaire pendant la durée de l’exécution. |
| Ajouter une variable | Ajoute une nouvelle variable directement au coffre-fort. |
| Créer .env.example dans le projet | Génère le modèle avec les clés vides. |
| Afficher | Montre une valeur pendant 20 secondes. |
Votre projet continue de fonctionner
À l’exécution (configurations d’exécution, tâches et terminal intégré), Yuli injecte les variables du coffre-fort comme variables d’environnement. Les bibliothèques dotenv les respectent, car les vraies variables sont prioritaires.
Si votre outil a besoin du fichier sur le disque, activez Matérialiser à l’exécution : Yuli écrit un .env temporaire (permissions 0600, ignoré par git) uniquement pendant l’exécution et le supprime à la fin.
Et les agents d’IA
Les agents (Claude Code, Kiro, Codex, Antigravity, Copilot et le chat de Yuli) ne voient jamais les valeurs. Les hooks de l’agent refusent l’accès au dossier du coffre-fort et, si une valeur apparaît dans la sortie du terminal, elle est masquée.
Les agents peuvent en revanche vous aider à trouver le problème grâce à deux outils qui ne renvoient aucune valeur :
| Outil | Rôle |
|---|---|
yuli_vault_findings |
Lecture seule : chemins, type, gravité, situation dans git, noms des variables et ce que contient déjà le coffre-fort. Jamais une valeur. |
yuli_vault_propose_move |
Vous montre la carte de Yuli avec les fichiers qu’il suggère de déplacer et pourquoi. Il ne déplace rien : c’est vous qui décidez sur la carte. |
L’agent peut ainsi dire « il y a un .env à la racine, je le déplace vers le coffre-fort ? », mais jamais le lire. Voir aussi Secrets et confidentialité.