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

# Eseguire un comando con i suoi segreti

Avviare un programma con segreti della cassaforte nel suo ambiente o nel suo input standard, con devo secret run, senza alcun valore nella shell, nei file o nel terminale.

`devo secret run` è il modo più sicuro per dare un segreto a un programma. Devolutions CLI legge i valori dalla cassaforte, li mette nell’ambiente di quel solo programma, lo avvia e nasconde i valori in tutto ciò che stampa. La shell non contiene mai il valore e non viene scritto nulla sul disco.

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

Tutto ciò che segue `--` è il programma e i suoi argomenti. Per trovare `<reference>`, consulti [Trovare il riferimento a un segreto](/cli/it/guide/secrets/find-a-reference.md).

## Scegliere il modo giusto per passare i riferimenti

<table><thead><tr><th width="230">SCELGA</th><th>CHE COSA SUCCEDE</th><th>LO USI QUANDO</th></tr></thead><tbody><tr><td><code>--env-ref NAME=&#x3C;reference></code></td><td>Imposta la variabile d’ambiente <code>NAME</code> sul valore. Ripeta l’opzione per ogni segreto.</td><td>Avvia un comando a mano o da uno script.</td></tr><tr><td>Una variabile che contiene già un riferimento</td><td>Qualsiasi variabile d’ambiente della shell il cui valore è un riferimento <code>devo://</code> viene sostituita dal valore per il programma.</td><td>Il profilo della shell o la pipeline CI imposta già variabili come <code>DB_PASSWORD=devo://…</code>.</td></tr><tr><td><code>--env-file &#x3C;file></code></td><td>Legge <code>KEY=value</code> righe e risolve i riferimenti che contengono.</td><td>Il progetto ha già un file <code>.env</code>. Consulti <a href="/cli/it/guide/secrets/replace-env-files.md">Togliere le password da un file .env</a>.</td></tr><tr><td><code>--stdin-reference &#x3C;reference></code></td><td>Scrive il valore, esattamente, sull’input standard del programma, quindi lo chiude.</td><td>Il programma legge una password dall’input standard, come <code>docker login --password-stdin</code>.</td></tr><tr><td><code>--manifest &#x3C;file></code></td><td>Legge il comando, i suoi argomenti e i suoi riferimenti da un file JSON.</td><td>Vuole un file di avvio da esaminare e riutilizzare, per esempio per un agente IA.</td></tr></tbody></table>

## Passare più segreti

Ripeta `--env-ref` per ogni variabile. I nomi usano lettere, cifre e trattini bassi e non possono iniziare con una cifra.

{% 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 %}

Il programma riceve il resto dell’ambiente come di consueto. Ogni nome di variabile può essere definito una sola volta tra tutte le origini: se lo stesso nome proviene da `--env-ref` e da una variabile della shell che contiene un riferimento, il comando si ferma con un conflitto invece di scegliere al posto suo.

## Usare i riferimenti già presenti nel suo ambiente

Se una variabile della shell corrente contiene un riferimento `devo://`, `devo secret run` lo risolve per il programma senza alcuna opzione:

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

La variabile della shell conserva il riferimento. Solo il programma vede il valore. Questo non vale con `--manifest`, dove il manifesto elenca ogni riferimento: con un manifesto, tale variabile raggiunge il programma come testo in chiaro del riferimento, non come valore.

## Inviare un segreto all’input standard

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

Devolutions CLI scrive il valore senza un’interruzione di riga finale, quindi chiude l’input standard del programma.

## Tenere i riferimenti fuori dalla riga di comando

Devolutions CLI rifiuta un argomento del programma che è un riferimento, come `-- psql --password devo://…`. I riferimenti vengono risolti solo tramite `--env-ref`, `--stdin-reference`, un file di ambiente o un manifesto. Un riferimento dentro un argomento più lungo, come `--password=devo://…`, non viene rifiutato, ma non viene nemmeno risolto: il programma riceve il testo del riferimento.

## Verifichi prima di eseguire

Due opzioni consentono di provare un avvio senza avviare il programma:

<table><thead><tr><th width="160">OPZIONE</th><th>CHE COSA VERIFICA</th></tr></thead><tbody><tr><td><code>--dry-run</code></td><td>Costruisce il piano di avvio e mostra un riepilogo: il comando, il numero di riferimenti, il timeout e se il mascheramento è attivo. Con <code>--output json</code>, il piano elenca ogni variabile con il suo riferimento. Non contatta lo spazio di lavoro e non cerca il programma.</td></tr><tr><td><code>--check</code></td><td>Verifica anche che il programma esista nella cartella corrente o nel <code>PATH</code>, ed esegue una lettura senza valore di ogni riferimento. Ciò conferma la sintassi e, per un riferimento con nome o su un profilo locale, la cassaforte e la voce. Non dimostra che il campo possa essere letto: su Devolutions Cloud e Devolutions Server un riferimento canonico non viene cercato. I riferimenti di un file di ambiente sono controllati come sono scritti, prima che <code>${NAME}</code> sia sostituito.</td></tr></tbody></table>

Può usarne uno o l’altro, non entrambi. Entrambi accettano `--output json`.

## Limitare per quanto tempo viene eseguito il programma

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

Quando il tempo scade, Devolutions CLI ferma il programma e tutto ciò che ha avviato, e termina con il codice `124`. Se annulla con <kbd>Ctrl</kbd>+<kbd>C</kbd>, ferma il programma e termina con `130`. Altrimenti `devo secret run` termina con il codice di uscita del programma.

## Conservare una traccia dell’avvio

Aggiunga `--receipt-file <path>` per scrivere una ricevuta JSON al termine del programma: il piano di avvio, i nomi delle variabili, il codice di uscita, la durata e se il programma è scaduto o è stato annullato. La ricevuta non contiene alcun valore di segreto. Il file non deve ancora esistere. Devolutions CLI lo crea con autorizzazioni private: su macOS e Linux, solo il suo account utente può leggerlo; su Windows, il suo account, l’account di sistema e gli amministratori.

{% hint style="warning" %}
Se il file di ricevuta non può essere scritto, `devo secret run` esce con il codice `1`, anche se il programma è riuscito.
{% endhint %}

## Usare un manifesto di avvio

Un manifesto è un file JSON che descrive l’intero avvio. Con `--manifest`, non può aggiungere `--env-ref`, `--env-file`, `--stdin-reference`, `--timeout-seconds` né un comando dopo `--`.

```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` è obbligatorio. `schemaVersion` è facoltativo; se lo imposta, deve essere `1`. Le altre proprietà sono facoltative.
* Ogni valore in `environment` deve essere un solo riferimento `devo://`.
* `workingDirectory` deve essere un percorso assoluto verso una cartella esistente.
* Un nome di proprietà o di variabile non può comparire due volte.

## Informazioni sul mascheramento

Devolutions CLI osserva ciò che il programma stampa sul suo output standard e sul suo output di errore, e sostituisce ogni valore risolto con `<concealed by Devolutions>`. Se uno strumento deve stampare un valore, per esempio per passarlo a un altro programma, aggiunga `--no-masking`.

{% hint style="warning" %}
Il mascheramento protegge ciò che il programma stampa, non ciò che fa. Un programma che riceve un segreto può comunque scriverlo in un file o inviarlo in rete. Esegua con i segreti solo programmi di cui si fida. Consulti [Che cosa resta nascosto e che cosa no](/cli/it/guide/understand/security-model.md).
{% endhint %}

## Buono a sapersi

* I riferimenti si risolvono attraverso il contesto corrente. Aggiunga `--context <context-name>` per usare un altro spazio di lavoro per un solo comando. I riferimenti canonici si risolvono sempre sullo spazio di lavoro che li possiede.
* Un avvio non valido, come un `--env-ref` malformato, termina con il codice `2` prima che sia letto qualcosa. Consulti [Codici di uscita ed errori](/cli/it/riferimento/exit-codes-and-errors.md).
* Un riferimento che non si risolve ferma l’avvio prima che il programma parta. Consulti [Un riferimento al segreto non si risolve](/cli/it/aiuto/troubleshooting/reference-does-not-resolve.md).

## Successivo

* [Give an agent a credential without exposing it](/cli/it/guide/ai-agents/run-an-agent.md)
* [Take the passwords out of a .env file](/cli/it/guide/secrets/replace-env-files.md)
* Ogni opzione di `devo secret run`: [Comandi](/cli/it/riferimento/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/it/guide/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.
