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

# Ejecutar un comando con sus secretos

Iniciar un programa con secretos de su bóveda en su entorno o su entrada estándar, con devo secret run, sin ningún valor en su shell, sus archivos o su terminal.

`devo secret run` es la forma más segura de dar un secreto a un programa. Devolutions CLI lee los valores de su bóveda, los coloca en el entorno de ese único programa, lo inicia y oculta los valores en todo lo que imprime. Su shell nunca contiene el valor, y no se escribe nada en el disco.

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

Todo lo que sigue a `--` es el programa y sus argumentos. Para encontrar `<reference>`, consulte [Encontrar la referencia de un secreto](/cli/es/guias/secrets/find-a-reference.md).

## Elegir la forma correcta de pasar referencias

<table><thead><tr><th width="230">ELIJA</th><th>QUÉ OCURRE</th><th>ÚSELO CUANDO</th></tr></thead><tbody><tr><td><code>--env-ref NAME=&#x3C;reference></code></td><td>Establece la variable de entorno <code>NAME</code> en el valor. Repita la opción para cada secreto.</td><td>Inicia un comando a mano o desde un script.</td></tr><tr><td>Una variable que ya contiene una referencia</td><td>Cualquier variable de entorno de su shell cuyo valor sea una referencia <code>devo://</code> se sustituye por el valor para el programa.</td><td>Su perfil de shell o su canalización de CI ya define variables como <code>DB_PASSWORD=devo://…</code>.</td></tr><tr><td><code>--env-file &#x3C;file></code></td><td>Lee <code>KEY=value</code> líneas y resuelve las referencias que contienen.</td><td>Su proyecto ya tiene un archivo <code>.env</code>. Consulte <a href="/cli/es/guias/secrets/replace-env-files.md">Sacar las contraseñas de un archivo .env</a>.</td></tr><tr><td><code>--stdin-reference &#x3C;reference></code></td><td>Escribe el valor, exactamente, en la entrada estándar del programa y luego la cierra.</td><td>El programa lee una contraseña de la entrada estándar, como <code>docker login --password-stdin</code>.</td></tr><tr><td><code>--manifest &#x3C;file></code></td><td>Lee el comando, sus argumentos y sus referencias desde un archivo JSON.</td><td>Quiere un archivo de inicio para revisar y reutilizar, por ejemplo para un agente de IA.</td></tr></tbody></table>

## Pasar varios secretos

Repita `--env-ref` para cada variable. Los nombres usan letras, dígitos y guiones bajos, y no pueden empezar por un dígito.

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

El programa recibe el resto de su entorno como de costumbre. Cada nombre de variable solo puede definirse una vez entre todas las fuentes: si el mismo nombre viene de `--env-ref` y de una variable de su shell que contiene una referencia, el comando se detiene con un conflicto en lugar de elegir por usted.

## Usar las referencias que ya están en su entorno

Si una variable de su shell actual contiene una referencia `devo://`, `devo secret run` la resuelve para el programa sin ninguna opción:

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

La variable de su shell conserva la referencia. Solo el programa ve el valor. Esto no se aplica con `--manifest`, donde el manifiesto enumera cada referencia: con un manifiesto, esa variable llega al programa como el texto de la referencia en claro, no el valor.

## Enviar un secreto a la entrada estándar

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

Devolutions CLI escribe el valor sin un salto de línea final y luego cierra la entrada estándar del programa.

## Mantener las referencias fuera de la línea de comandos

Devolutions CLI rechaza un argumento del programa que es una referencia, como `-- psql --password devo://…`. Las referencias solo se resuelven mediante `--env-ref`, `--stdin-reference`, un archivo de entorno o un manifiesto. Una referencia dentro de un argumento más largo, como `--password=devo://…`, no se rechaza, pero tampoco se resuelve: el programa recibe el texto de la referencia.

## Compruebe antes de ejecutar

Dos opciones le permiten probar un inicio sin arrancar el programa:

<table><thead><tr><th width="160">OPCIÓN</th><th>QUÉ COMPRUEBA</th></tr></thead><tbody><tr><td><code>--dry-run</code></td><td>Construye el plan de inicio y muestra un resumen: el comando, el número de referencias, el tiempo límite y si el enmascaramiento está activado. Con <code>--output json</code>, el plan enumera cada variable con su referencia. No contacta con su espacio de trabajo y no busca el programa.</td></tr><tr><td><code>--check</code></td><td>También comprueba que el programa exista en la carpeta actual o en su <code>PATH</code>, y ejecuta una lectura sin valor de cada referencia. Eso confirma la sintaxis y, para una referencia con nombre o en un perfil local, la bóveda y la entrada. No demuestra que el campo se pueda leer: en Devolutions Cloud y Devolutions Server, una referencia canónica no se busca. Las referencias de un archivo de entorno se comprueban tal como están escritas, antes de que <code>${NAME}</code> se sustituya.</td></tr></tbody></table>

Puede usar uno u otro, no ambos. Ambos aceptan `--output json`.

## Limitar cuánto tiempo se ejecuta el programa

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

Cuando se agota el tiempo, Devolutions CLI detiene el programa y todo lo que inició, y termina con el código `124`. Si cancela con <kbd>Ctrl</kbd>+<kbd>C</kbd>, detiene el programa y termina con `130`. De lo contrario, `devo secret run` termina con el código de salida de su programa.

## Conservar un registro del inicio

Añada `--receipt-file <path>` para escribir un recibo JSON cuando el programa termine: el plan de inicio, los nombres de las variables, el código de salida, la duración y si el programa agotó el tiempo o se canceló. El recibo no contiene ningún valor de secreto. El archivo no debe existir todavía. Devolutions CLI lo crea con permisos privados: en macOS y Linux, solo su cuenta de usuario puede leerlo; en Windows, su cuenta, la cuenta del sistema y los administradores.

{% hint style="warning" %}
Si el archivo de recibo no se puede escribir, `devo secret run` termina con el código `1`, aunque su programa haya tenido éxito.
{% endhint %}

## Usar un manifiesto de inicio

Un manifiesto es un archivo JSON que describe todo el inicio. Con `--manifest`, no puede añadir `--env-ref`, `--env-file`, `--stdin-reference`, `--timeout-seconds` ni un comando después de `--`.

```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` es obligatorio. `schemaVersion` es opcional; si lo define, debe ser `1`. Las demás propiedades son opcionales.
* Cada valor en `environment` debe ser una sola referencia `devo://`.
* `workingDirectory` debe ser una ruta absoluta a una carpeta que exista.
* Un nombre de propiedad o de variable no puede aparecer dos veces.

## Acerca del enmascaramiento

Devolutions CLI observa lo que el programa imprime en su salida estándar y en su salida de error, y sustituye cada valor resuelto por `<concealed by Devolutions>`. Si una herramienta debe imprimir un valor, por ejemplo para pasarlo a otro programa, añada `--no-masking`.

{% hint style="warning" %}
El enmascaramiento protege lo que el programa imprime, no lo que hace. Un programa que recibe un secreto puede igualmente escribirlo en un archivo o enviarlo por la red. Ejecute con sus secretos solo programas en los que confíe. Consulte [Qué permanece oculto y qué no](/cli/es/guias/understand/security-model.md).
{% endhint %}

## Bueno saberlo

* Las referencias se resuelven a través del contexto actual. Añada `--context <context-name>` para usar otro espacio de trabajo en un solo comando. Las referencias canónicas se resuelven siempre en el espacio de trabajo al que pertenecen.
* Un inicio no válido, como un `--env-ref` mal formado, termina con el código `2` antes de que se lea nada. Consulte [Códigos de salida y errores](/cli/es/referencia/exit-codes-and-errors.md).
* Una referencia que no se resuelve detiene el inicio antes de que el programa arranque. Consulte [Una referencia de secreto no se resuelve](/cli/es/ayuda/troubleshooting/reference-does-not-resolve.md).

## Siguiente

* [Give an agent a credential without exposing it](/cli/es/guias/ai-agents/run-an-agent.md)
* [Take the passwords out of a .env file](/cli/es/guias/secrets/replace-env-files.md)
* Cada opción de `devo secret run`: [Comandos](/cli/es/referencia/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/es/guias/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.
