> 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/run-with-secrets.md).

# Exécuter une commande avec ses secrets

Démarrer un programme avec des secrets de votre coffre dans son environnement ou son entrée standard, avec devo secret run, sans valeur dans votre shell, vos fichiers ou votre terminal.

`devo secret run` est la façon la plus sûre de donner un secret à un programme. Devolutions CLI lit les valeurs dans votre coffre, les place dans l’environnement de ce seul programme, le démarre et masque les valeurs dans tout ce qu’il affiche. Votre shell ne détient jamais la valeur, et rien n’est écrit sur le disque.

```bash
devo secret run --env-ref DB_PASSWORD=<reference> -- <your-command> <arguments>
```

Tout ce qui suit `--` est le programme et ses arguments. Pour trouver `<reference>`, consultez [Trouver la référence d’un secret](/cli/fr/guides/secrets/find-a-reference.md).

## Choisir la bonne façon de passer des références

<table><thead><tr><th width="230">CHOISIR</th><th>CE QUI SE PASSE</th><th>À UTILISER QUAND</th></tr></thead><tbody><tr><td><code>--env-ref NAME=&#x3C;reference></code></td><td>Définit la variable d’environnement <code>NAME</code> à la valeur. Répétez l’option pour chaque secret.</td><td>Vous lancez une commande à la main ou depuis un script.</td></tr><tr><td>Une variable qui contient déjà une référence</td><td>Toute variable d’environnement de votre shell dont la valeur est une référence <code>devo://</code> est remplacée par la valeur pour le programme.</td><td>Votre profil de shell ou votre pipeline CI définit déjà des variables comme <code>DB_PASSWORD=devo://…</code>.</td></tr><tr><td><code>--env-file &#x3C;file></code></td><td>Lit <code>KEY=value</code> lignes et résout les références qu’elles contiennent.</td><td>Votre projet a déjà un fichier <code>.env</code>. Consultez <a href="/cli/fr/guides/secrets/replace-env-files.md">Retirer les mots de passe d’un fichier .env</a>.</td></tr><tr><td><code>--stdin-reference &#x3C;reference></code></td><td>Écrit la valeur, exactement, sur l’entrée standard du programme, puis la ferme.</td><td>Le programme lit un mot de passe depuis l’entrée standard, comme <code>docker login --password-stdin</code>.</td></tr><tr><td><code>--manifest &#x3C;file></code></td><td>Lit la commande, ses arguments et ses références depuis un fichier JSON.</td><td>Vous voulez un fichier de lancement à passer en revue et à réutiliser, par exemple pour un agent d’IA.</td></tr></tbody></table>

## Passer plusieurs secrets

Répétez `--env-ref` pour chaque variable. Les noms utilisent des lettres, des chiffres et des traits de soulignement, et ne peuvent pas commencer par un chiffre.

{% tabs %}
{% tab title="Bash" %}

```bash
devo secret run \
  --env-ref DB_USER=<username-reference> \
  --env-ref DB_PASSWORD=<password-reference> \
  -- ./migrate.sh
```

{% endtab %}

{% tab title="PowerShell" %}

```powershell
devo secret run `
  --env-ref DB_USER=<username-reference> `
  --env-ref DB_PASSWORD=<password-reference> `
  -- pwsh -NoProfile -File ./migrate.ps1
```

{% endtab %}
{% endtabs %}

Le programme reçoit le reste de votre environnement comme d’habitude. Chaque nom de variable ne peut être défini qu’une seule fois dans toutes les sources : si le même nom vient de `--env-ref` et d’une variable de votre shell qui contient une référence, la commande s’arrête avec un conflit au lieu de choisir pour vous.

## Utiliser les références déjà présentes dans votre environnement

Si une variable de votre shell actuel contient une référence `devo://`, `devo secret run` la résout pour le programme sans aucune option :

```bash
export DB_PASSWORD='<reference>'
devo secret run -- ./migrate.sh
```

La variable de votre shell conserve la référence. Seul le programme voit la valeur. Cela ne s’applique pas avec `--manifest`, où le manifeste liste chaque référence : avec un manifeste, une telle variable atteint le programme comme le texte de la référence en clair, pas la valeur.

## Envoyer un secret à l’entrée standard

```bash
devo secret run --stdin-reference <reference> -- docker login <registry> --username <user> --password-stdin
```

Devolutions CLI écrit la valeur sans saut de ligne final, puis ferme l’entrée standard du programme.

## Garder les références hors de la ligne de commande

Devolutions CLI refuse un argument du programme qui est une référence, comme `-- psql --password devo://…`. Les références ne sont résolues que par `--env-ref`, `--stdin-reference`, un fichier d’environnement ou un manifeste. Une référence à l’intérieur d’un argument plus long, comme `--password=devo://…`, n’est pas refusée, mais elle n’est pas résolue non plus : le programme reçoit le texte de la référence.

## Vérifiez avant d’exécuter

Deux options vous permettent de tester un lancement sans démarrer le programme :

<table><thead><tr><th width="160">OPTION</th><th>CE QU’IL VÉRIFIE</th></tr></thead><tbody><tr><td><code>--dry-run</code></td><td>Construit le plan de lancement et affiche un résumé : la commande, le nombre de références, le délai et si le masquage est activé. Avec <code>--output json</code>, le plan liste chaque variable avec sa référence. Il ne contacte pas votre espace de travail et ne cherche pas le programme.</td></tr><tr><td><code>--check</code></td><td>Vérifie aussi que le programme existe dans le dossier actuel ou sur votre <code>PATH</code>, et exécute une lecture sans valeur de chaque référence. Cela confirme la syntaxe et, pour une référence nommée ou sur un profil local, le coffre et l’entrée. Cela ne prouve pas que le champ peut être lu : sur Devolutions Cloud et Devolutions Server, une référence canonique n’est pas recherchée. Les références d’un fichier d’environnement sont vérifiées telles qu’elles sont écrites, avant que <code>${NAME}</code> soit remplacé.</td></tr></tbody></table>

Vous pouvez utiliser l’un ou l’autre, pas les deux. Les deux acceptent `--output json`.

## Limiter la durée d’exécution du programme

```bash
devo secret run --timeout-seconds 300 --env-ref API_TOKEN=<reference> -- ./deploy.sh
```

Quand le temps est écoulé, Devolutions CLI arrête le programme et tout ce qu’il a démarré, et se termine avec le code `124`. Si vous annulez avec <kbd>Ctrl</kbd>+<kbd>C</kbd>, il arrête le programme et se termine avec `130`. Sinon, `devo secret run` se termine avec le code de sortie de votre programme.

## Conserver une trace du lancement

Ajoutez `--receipt-file <path>` pour écrire un reçu JSON après la fin du programme : le plan de lancement, les noms de variables, le code de sortie, la durée, et si le programme a expiré ou a été annulé. Le reçu ne contient aucune valeur de secret. Le fichier ne doit pas encore exister. Devolutions CLI le crée avec des permissions privées : sur macOS et Linux, seul votre compte d’utilisateur peut le lire ; sur Windows, votre compte, le compte système et les administrateurs.

{% hint style="warning" %}
Si le fichier de reçu ne peut pas être écrit, `devo secret run` se termine avec le code `1`, même si votre programme a réussi.
{% endhint %}

## Utiliser un manifeste de lancement

Un manifeste est un fichier JSON qui décrit tout le lancement. Avec `--manifest`, vous ne pouvez pas ajouter `--env-ref`, `--env-file`, `--stdin-reference`, `--timeout-seconds` ni une commande après `--`.

```json
{
  "schemaVersion": 1,
  "command": "./deploy.sh",
  "arguments": ["--target", "staging"],
  "environment": {
    "API_TOKEN": "<reference>"
  },
  "stdinReference": "<reference>",
  "timeoutSeconds": 300,
  "workingDirectory": "<absolute-path-to-folder>"
}
```

```bash
devo secret run --manifest launch.json
```

* `command` est obligatoire. `schemaVersion` est facultatif ; si vous le définissez, il doit valoir `1`. Les autres propriétés sont facultatives.
* Chaque valeur dans `environment` doit être une seule référence `devo://`.
* `workingDirectory` doit être un chemin absolu vers un dossier qui existe.
* Un nom de propriété ou de variable ne peut pas apparaître deux fois.

## À propos du masquage

Devolutions CLI surveille ce que le programme affiche sur sa sortie standard et sa sortie d’erreur, et remplace chaque valeur résolue par `<concealed by Devolutions>`. Si un outil doit afficher une valeur, par exemple pour la passer à un autre programme, ajoutez `--no-masking`.

{% hint style="warning" %}
Le masquage protège ce que le programme affiche, pas ce qu’il fait. Un programme qui reçoit un secret peut quand même l’écrire dans un fichier ou l’envoyer sur le réseau. N’exécutez avec vos secrets que des programmes auxquels vous faites confiance. Consultez [Ce qui reste caché, et ce qui ne l’est pas](/cli/fr/guides/understand/security-model.md).
{% endhint %}

## Bon à savoir

* Les références se résolvent par le contexte actuel. Ajoutez `--context <context-name>` pour utiliser un autre espace de travail pour une seule commande. Les références canoniques se résolvent toujours sur l’espace de travail qui les possède.
* Un lancement non valide, comme un `--env-ref` mal formé, se termine avec le code `2` avant que quoi que ce soit soit lu. Consultez [Codes de sortie et erreurs](/cli/fr/reference/exit-codes-and-errors.md).
* Une référence qui ne se résout pas arrête le lancement avant le démarrage du programme. Consultez [Une référence de secret ne se résout pas](/cli/fr/aide/troubleshooting/reference-does-not-resolve.md).

## Suivant

* [Give an agent a credential without exposing it](/cli/fr/guides/ai-agents/run-an-agent.md)
* [Take the passwords out of a .env file](/cli/fr/guides/secrets/replace-env-files.md)
* Chaque option de `devo secret run` : [Commandes](/cli/fr/reference/commands.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/run-with-secrets.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.
