> 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/referencia/secret-references.md).

# Sintaxis de las referencias de secreto

Sintaxis de las referencias devo, formas con nombre y canónicas, secciones, atributos, codificación, URI de proveedor de SecretSpec y cómo se encuentran las referencias en un texto.

Una referencia de secreto es la dirección de un campo de una entrada. Empieza por `devo://` y dice dónde está el secreto, nunca qué es. Cada comando `devo secret`, los manifiestos de inicio, los archivos `.env` y las plantillas usan la misma sintaxis.

Para obtener la referencia de un campo sin escribirla, ejecute `devo entry references <entry>`. Consulte [Encontrar la referencia de un secreto](/cli/es/guias/secrets/find-a-reference.md).

## Referencias con nombre

Una referencia con nombre usa los nombres del espacio de trabajo, de la bóveda y de la entrada, así que es fácil de leer:

```
devo://<workspace>/<vault>/<entry>/<field>
devo://<workspace>/<vault>/<entry>/<section>/<field>
```

<table><thead><tr><th width="190">SEGMENTO</th><th>QUÉ ES</th></tr></thead><tbody><tr><td><code>&#x3C;workspace></code></td><td>El espacio de trabajo que contiene la bóveda.</td></tr><tr><td><code>&#x3C;vault></code></td><td>La bóveda que contiene la entrada.</td></tr><tr><td><code>&#x3C;entry></code></td><td>La entrada que contiene el campo.</td></tr><tr><td><code>&#x3C;section></code></td><td>Opcional, solo perfil local. La sección de la entrada que contiene el campo, cuando el campo está en una sección. Devolutions Cloud y Devolutions Server rechazan una sección con <code>unsupportedSecretField</code>.</td></tr><tr><td><code>&#x3C;field></code></td><td>El campo que se va a leer, como <code>password</code>, <code>username</code>, <code>domain</code>, <code>host</code>, <code>otp</code> o <code>privatekey</code>.</td></tr></tbody></table>

Una referencia con nombre se resuelve en el espacio de trabajo seleccionado para el comando: el contexto actual, o el que elija con `--context` o `--source`. Consulte [Opciones globales](/cli/es/referencia/global-options.md).

## Referencias canónicas

Una referencia canónica usa ID en lugar de nombres:

```
devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/<field>
```

* Sigue funcionando cuando se cambia el nombre de la entrada, de la bóveda o del espacio de trabajo.
* Nombra el espacio de trabajo al que pertenece, así que se resuelve en ese espacio de trabajo, sea cual sea el contexto actual. Un `devo secret run` puede mezclar referencias de un perfil local, de Devolutions Cloud y de Devolutions Server.
* No tiene un segmento de sección.
* En Devolutions Server, `devo entry references` enumera solo referencias canónicas. Una referencia con nombre que escriba usted mismo sigue funcionando.

## Atributos

De forma predeterminada, una referencia devuelve el valor del campo. Añada `?attribute=` (o la forma corta `?attr=`) para leer información sobre el campo en lugar de su valor. Los valores no distinguen mayúsculas.

<table><thead><tr><th width="190">ATRIBUTO</th><th>QUÉ DEVUELVE</th><th width="150">SECRETO</th></tr></thead><tbody><tr><td><code>value</code></td><td>El valor del campo. Es el valor predeterminado y el único atributo que devuelve un secreto.</td><td>Sí</td></tr><tr><td><code>type</code></td><td>El tipo de campo.</td><td>No</td></tr><tr><td><code>id</code></td><td>El ID de la entrada.</td><td>No</td></tr><tr><td><code>title</code></td><td>El nombre de la entrada. Vacío para una referencia canónica en Devolutions Cloud y Devolutions Server.</td><td>No</td></tr><tr><td><code>purpose</code></td><td>Por qué se solicitó el valor: <code>read</code>, <code>inject</code>, <code>run</code> o <code>mcp</code>. Vacío en un perfil local.</td><td>No</td></tr></tbody></table>

`type`, `id`, `title` y `purpose` devuelven solo información, nunca el secreto, en todos los tipos de espacio de trabajo.

Por ejemplo, `devo://<workspace>/<vault>/<entry>/password?attribute=type` devuelve el tipo del campo `password`, no la contraseña. `devo secret read` y `devo secret get` también aceptan `--attribute` en lugar de la consulta.

## Caracteres especiales

Cada segmento entre dos `/` se descodifica como URL. Si un nombre contiene `/`, `?`, `#`, `%` o un espacio, codifíquelo: por ejemplo, escriba `Web%2FProd` para una entrada llamada `Web/Prod`, y `My%20vault` para `My vault`. Un `:` puede quedarse como está.

Las referencias que imprime Devolutions CLI, por ejemplo con `devo entry references`, ya están codificadas.

## Reglas y errores

Cuando una referencia no se puede leer, el comando falla con el código de error `invalidSecretReference` y uno de estos mensajes.

<table><thead><tr><th width="320">MENSAJE</th><th>QUÉ COMPROBAR</th></tr></thead><tbody><tr><td>"Secret reference cannot be empty."</td><td>La referencia está vacía o solo contiene espacios.</td></tr><tr><td>"Secret reference must start with 'devo://'."</td><td>Falta el prefijo o está mal escrito. El prefijo no distingue mayúsculas.</td></tr><tr><td>"Secret references do not support URI fragments."</td><td>La referencia contiene <code>#</code>. Codifíquelo como <code>%23</code> si forma parte de un nombre.</td></tr><tr><td>"Secret reference path cannot be empty."</td><td>Nada sigue a <code>devo://</code>.</td></tr><tr><td>"Use devo://&#x3C;workspace>/&#x3C;vault>/&#x3C;entry>/&#x3C;field> or devo://&#x3C;workspace>/&#x3C;vault>/&#x3C;entry>/&#x3C;section>/&#x3C;field>."</td><td>Una referencia con nombre necesita 4 o 5 segmentos. Compruebe si falta un segmento o si hay un <code>/</code> sin codificar en un nombre.</td></tr><tr><td>"Secret reference path segments cannot be empty."</td><td>Dos <code>/</code> se siguen, o la referencia termina con <code>/</code>.</td></tr><tr><td>"Canonical ID references must use devo://ws/&#x3C;id>/vault/&#x3C;id>/entry/&#x3C;id>/field/&#x3C;field>."</td><td>Una referencia que empieza por <code>ws</code> y tiene 8 segmentos debe usar las palabras <code>vault</code>, <code>entry</code> y <code>field</code> en ese orden.</td></tr><tr><td>"Canonical workspace, vault, and entry identifiers cannot be empty."</td><td>Falta un ID en una referencia canónica.</td></tr><tr><td>"Canonical field segment cannot be empty."</td><td>Falta el campo al final de una referencia canónica.</td></tr></tbody></table>

Un atributo desconocido falla con el código `unsupportedSecretAttribute` y el mensaje «Unsupported secret reference attribute '\<value>'.». Los demás parámetros de consulta se ignoran.

Cuando la referencia es válida pero no lleva a un campo que pueda leer, consulte [Una referencia de secreto no se resuelve](/cli/es/ayuda/troubleshooting/reference-does-not-resolve.md).

## Referencias dentro de un texto

`devo secret inject` encuentra las referencias en una plantilla y sustituye cada una por su valor. Reconoce dos formas:

<table><thead><tr><th width="250">FORMA</th><th>DÓNDE TERMINA</th></tr></thead><tbody><tr><td><code>{{ devo://… }}</code></td><td>En el <code>}}</code> de cierre. Las llaves también se sustituyen, y los espacios dentro se ignoran. Use esta forma cuando la referencia está junto a otro texto.</td></tr><tr><td><code>devo://…</code></td><td>En el primer espacio, salto de línea, <code>"</code>, <code>'</code>, <code>&#x3C;</code>, <code>></code>, <code>)</code>, <code>]</code> o <code>}</code>.</td></tr></tbody></table>

Un texto que empieza por `devo://` pero no es una referencia válida se deja tal cual.

En una plantilla, una referencia también puede contener variables de entorno, que `devo secret inject` sustituye antes de leer el secreto:

<table><thead><tr><th width="250">EXPRESIÓN</th><th>EN QUÉ SE CONVIERTE</th></tr></thead><tbody><tr><td><code>$NAME</code> or <code>${NAME}</code></td><td>El valor de la variable de entorno <code>NAME</code>. Si no está definida o está vacía, el comando falla con <code>missingSecretReferenceVariable</code>.</td></tr><tr><td><code>${NAME:-default}</code></td><td>El valor de <code>NAME</code>, o <code>default</code> cuando no está definido o está vacío.</td></tr></tbody></table>

Por ejemplo, `{{ devo://<workspace>/${VAULT:-Staging}/<entry>/password }}` lee de la bóveda nombrada en `VAULT`, o de `Staging`.

{% hint style="warning" %}
`devo secret inject` escribe los valores en texto sin formato en su salida. Consulte [Rellenar un archivo de configuración desde una plantilla](/cli/es/guias/secrets/fill-a-template.md).
{% endhint %}

## URI de proveedor SecretSpec

SecretSpec no usa referencias de secreto. En `secretspec.toml`, usa un URI de proveedor que le indica qué espacio de trabajo debe leer Devolutions CLI. Imprima el correcto con `devo secretspec uri`. Consulte [Usar Devolutions CLI con SecretSpec](/cli/es/guias/secrets/secretspec.md).

<table><thead><tr><th width="330">URI DEL PROVEEDOR</th><th>ESPACIO DE TRABAJO</th></tr></thead><tbody><tr><td><code>devo://cloud[/&#x3C;vault-id>][?context=&#x3C;name>]</code></td><td>Devolutions Cloud, a través del contexto <code>&#x3C;name></code>, o el contexto actual de Devolutions Cloud sin <code>?context=</code>.</td></tr><tr><td><code>devo://server[/&#x3C;vault-id>][?context=&#x3C;name>]</code></td><td>Devolutions Server, a través del contexto <code>&#x3C;name></code>, o el contexto actual de Devolutions Server sin <code>?context=</code>.</td></tr><tr><td><code>devo://sqlite[/&#x3C;vault-id>]?workspace=&#x3C;workspace-id></code></td><td>Un espacio de trabajo local de Devolutions Remote Desktop Manager. <code>?workspace=</code> es obligatorio, con un identificador de espacio de trabajo como <code>sqlite:Connections.db</code>. <code>devo workspace current</code> lo muestra.</td></tr></tbody></table>

`<vault-id>` es opcional: establece la bóveda predeterminada, y cada secreto puede seguir nombrando su propia bóveda.


---

# 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/referencia/secret-references.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.
