> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/cli/fr/guides/secrets/replace-env-files.md).

# Retirer les mots de passe d’un fichier .env

Remplacez les mots de passe de vos fichiers .env par des références devo, commitez le fichier, et exécutez votre application avec devo secret run --env-file.

Un fichier `.env` est commode, mais c’est aussi le fichier le plus susceptible de laisser fuir un mot de passe : copié dans un billet, poussé par erreur ou partagé avec un nouveau coéquipier. Avec Devolutions CLI, le fichier garde sa forme et ses noms de variables, mais chaque secret devient une référence `devo://`. Le fichier peut alors être commité sans risque, et les valeurs n’atteignent votre application que lorsqu’elle démarre.

## Remplacer les valeurs par des références

1. Ouvrez votre fichier `.env`.
2. Pour chaque secret, trouvez sa référence. Consultez [Trouver la référence d’un secret](/cli/fr/guides/secrets/find-a-reference.md).
3. Remplacez la valeur par la référence. Laissez les autres valeurs telles quelles.

```bash
# Database
DB_HOST=db.internal.example
DB_USER=devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/username
DB_PASSWORD=devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/password

# A reference can also sit inside a longer value
DATABASE_URL="postgres://app:{{ devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/password }}@db.internal.example/app"
```

{% hint style="info" %}
Préférez les références canoniques (`devo://ws/…`) dans les fichiers que vous consignez. Elles continuent de fonctionner quand une entrée est renommée, et elles se résolvent sur l’espace de travail qui les possède, quel que soit le contexte actuel.
{% endhint %}

## Exécutez votre application avec le fichier

```bash
devo secret run --env-file .env -- npm start
```

Devolutions CLI lit le fichier, résout chaque référence qu’il contient et démarre votre application avec toutes les variables du fichier dans son environnement : les secrets résolus et les valeurs en clair. Les valeurs résolues sont masquées dans ce que l’application affiche, comme avec toute commande `devo secret run`. Consultez [Exécuter une commande avec ses secrets](/cli/fr/guides/secrets/run-with-secrets.md).

Vous pouvez combiner `--env-file` avec `--env-ref`. Si une variable du fichier porte le même nom qu’une variable de votre shell qui contient déjà une référence, le fichier l’emporte. La variable de votre shell est quand même résolue en premier : si sa référence est brisée, le lancement échoue quand même. Retirez-la ou corrigez-la.

## Comment Devolutions CLI lit le fichier

<table><thead><tr><th width="240">DANS LE FICHIER</th><th>CE QUI SE PASSE</th></tr></thead><tbody><tr><td><code>KEY=value</code></td><td>Une variable par ligne. Les espaces autour du nom et de la valeur sont retirés.</td></tr><tr><td>Les lignes vides et les lignes qui commencent par <code>#</code></td><td>Ignoré.</td></tr><tr><td><code>KEY="value"</code> or <code>KEY='value'</code></td><td>Une paire de guillemets correspondants autour de la valeur entière est retirée.</td></tr><tr><td>Une référence à l’intérieur d’une valeur</td><td>Remplacé par le secret. Entourez-le de <code>{{ }}</code> quand un autre texte le touche, pour que Devolutions CLI sache où il se termine.</td></tr><tr><td><code>$NAME</code>, <code>${NAME}</code> ou <code>${NAME:-default}</code> à l’intérieur d’une référence</td><td>Remplacé par la valeur d’une variable d’environnement, par exemple pour choisir l’ID de l’espace de travail selon l’environnement. Sans valeur par défaut, la variable doit être définie et non vide.</td></tr></tbody></table>

Quelques éléments qui fonctionnent dans certains chargeurs `.env` ne fonctionnent pas ici :

* Les noms de variable n’utilisent que des lettres, des chiffres et des traits de soulignement, et ne peuvent pas commencer par un chiffre. Une ligne qui commence par `export` est refusée.
* Un `#` après une valeur n’est pas un commentaire : il fait partie de la valeur.
* Une valeur ne peut pas s’étendre sur plusieurs lignes.
* Le même nom de variable ne peut pas apparaître deux fois, ni à la fois dans le fichier et dans `--env-ref`.

## Quoi commiter

<table><thead><tr><th width="240">FICHIER</th><th>LE COMMITER ?</th></tr></thead><tbody><tr><td>Un fichier <code>.env</code> avec des références seulement</td><td>Oui. Une référence contient des noms ou des ID, jamais une valeur. Sans accès au coffre, elle n’ouvre rien.</td></tr><tr><td>Un fichier produit par <code>devo secret inject</code></td><td>Non. Il contient les valeurs en texte clair. Ajoutez-le à <code>.gitignore</code>.</td></tr><tr><td>Un fichier <code>.env</code> qui contient encore un mot de passe</td><td>Non. Remplacez d’abord la valeur par une référence.</td></tr></tbody></table>

{% hint style="warning" %}
Si un mot de passe a déjà été consigné, le retirer du fichier ne le retire pas de l’historique du dépôt. Changez le mot de passe dans votre coffre, par exemple avec [devo secret set](/cli/fr/guides/secrets/update-a-secret.md).
{% endhint %}

## Si cela ne fonctionne pas

* "Environment file lines must use KEY=value syntax." : une ligne n’a pas de `=`, ou commence par un. Corrigez cette ligne, ou faites-en un commentaire avec `#`.
* Une référence ne se résout pas : consultez [Une référence de secret ne se résout pas](/cli/fr/aide/troubleshooting/reference-does-not-resolve.md).
* Votre outil ne lit qu’un fichier de configuration, pas les variables d’environnement : consultez [Remplir un fichier de configuration à partir d’un modèle](/cli/fr/guides/secrets/fill-a-template.md).

## Suivant

* [Run a command with its secrets](/cli/fr/guides/secrets/run-with-secrets.md)
* [Give an agent a credential without exposing it](/cli/fr/guides/ai-agents/run-an-agent.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/cli/fr/guides/secrets/replace-env-files.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
