# Confirmaciones

> Cómo funcionan las confirmaciones de Dilohost, qué acciones las piden y cómo debe tratarlas un agente o una integración propia.

Las acciones que **borran**, **sustituyen** datos o **cuestan dinero** no se hacen a la primera. Dilohost devuelve un resumen de lo que va a pasar, el agente te lo explica y solo se ejecuta si das tu aprobación. Así, ni un malentendido ni una instrucción escondida en una web o un correo pueden borrar tu base de datos o comprar un dominio.

## Cómo se ve desde la conversación

<p class="prompt">Borra la base de datos pruebas del proyecto tienda.</p>

El agente no la borra todavía. Te contesta algo así:

```text
Antes de hacerlo: se borrará la base de datos «pruebas» (postgres) del proyecto
«tienda» con todos sus datos. Es irreversible: se borran la base y todas sus
copias, y las apps que la usen fallarán. Si quieres conservar los datos, puedo
darte antes un enlace para descargar una copia. ¿La borro?
```

Solo si respondes que sí, el agente repite la petición con el código de confirmación y la base se borra.

## El protocolo, paso a paso

1. **Primera llamada.** El agente llama a la acción como siempre. Dilohost **no hace nada** y responde con `confirmacion_necesaria`, un `resumen` y un código `confirm`:

   ```json
   {
     "confirmacion_necesaria": true,
     "resumen": {
       "accion": "Borrar la base de datos «pruebas» (postgres) del proyecto «tienda» con todos sus datos.",
       "efecto": "Es irreversible: se borran la base y todas sus copias. Las apps que la usen fallarán. Si quieres conservar los datos, descarga antes una copia (backup.download_link)."
     },
     "confirm": "1791734400.Q2x9…",
     "instrucciones": "No se ha hecho nada todavía. Explica el resumen a la persona en lenguaje llano y, SOLO si lo aprueba de forma explícita, repite esta misma llamada con los mismos argumentos y confirm=\"…\". Caduca en 10 minutos."
   }
   ```

2. **El agente explica el resumen** con palabras normales y espera tu respuesta.
3. **Segunda llamada**, solo con tu aprobación explícita: la misma herramienta, la misma acción y **exactamente los mismos argumentos**, más `confirm` con el código recibido. Ahora sí se ejecuta.

El contenido de `resumen` cambia según la acción: precio de un dominio, lo que se cobra al cambiar de plan, qué se pierde al borrar…

## Reglas del código

| Regla | Qué significa |
|---|---|
| Caduca a los **10 minutos** | Si tardas más, el agente vuelve a pedirlo y recibe un resumen nuevo. |
| Sirve **una sola vez** | Repetir la llamada con el mismo código no vuelve a ejecutar nada. |
| Va ligado a la acción exacta | Vale solo para esa cuenta, esa persona (o ese token), esa herramienta, esa acción y esos argumentos. Si cambia cualquier cosa (otra base de datos, otro precio), hace falta un código nuevo. |
| No se puede fabricar | Está firmado por Dilohost: un código inventado o modificado no sirve. |

Si el código no vale (caducado, usado o de otra acción), Dilohost no da error: responde otra vez con un resumen y un código nuevo, como en la primera llamada.

## Qué acciones piden confirmación

Las principales:

| Tema | Acciones |
|---|---|
| Proyectos | `project.delete`, `project.export`, `trash.purge` |
| Datos | `database.delete`, `backup.restore`, `backup.download_link`, `storage.delete`, `config.unset` |
| Publicar | `deploy.connect_repo`, `deploy.disconnect_repo`, `deploy.subdomain`, `jobs.remove` |
| Dominios y DNS | `domain.buy`, `domain.renew`, `domain.transfer_in`, `domain.transfer_code`, `domain.detach`, `domain.remove`, `dns.delete` |
| Correo | `email.enable`, `email.disable`, `email.create`, `email.delete`, `email.clean_old_records` |
| Cuenta | `billing.change_plan`, `team.remove` |

La lista completa y siempre al día está en la [referencia de herramientas](/docs/referencia/herramientas), en la columna «Pide confirmación».

## Si usas un token o una integración propia

Con un [token de servicio](/docs/cuenta/tokens) las confirmaciones funcionan igual. Tu programa recibe el resumen y decide si repite la llamada con `confirm`. Ten en cuenta que, si lo hace siempre de forma automática, pierdes esta protección: confirma solo las acciones que esperas.

> [!IMPORTANT]
> Si construyes tu propio agente, no repitas nunca la llamada con `confirm` sin la aprobación expresa de la persona. Es lo que piden las instrucciones que acompañan a cada resumen.

## Relacionado

- [Seguridad](/docs/seguridad)
- [Referencia de herramientas](/docs/referencia/herramientas)
- [Servidor MCP](/docs/referencia/servidor-mcp)
