Saltar al contenido

Aprende

Cómo dejar que un agente de IA envíe correo sin perder el control

Un agente de IA puede leer tu bandeja de entrada, escribir respuestas y enviarlas. Esto es lo que conviene darle, lo que conviene dejar en manos de una persona y cómo pararlo cuando se equivoca.

Primero leer, luego redactar, al final enviar

El orden seguro es sencillo. El agente lee primero, escribe borradores después y solo envía cuando algo que controla una persona dice que sí. Cada parte de este texto es una forma de mantener ese orden.

Las guías de seguridad piden lo mismo. OWASP, un proyecto que recoge los principales riesgos de seguridad de los modelos de IA, recomienda limitar el acceso del modelo al mínimo que necesita y exigir la aprobación de una persona para las acciones de alto riesgo. El Model Context Protocol, un estándar que muchos agentes usan para llamar a herramientas, dice que una persona debería poder rechazar siempre una llamada a una herramienta.

Empieza por leer

Una clave tiene solo los permisos que marcas al crearla en Configuración. Empieza con read, que en la consola se llama Leer. El agente ve contactos, campañas, la bandeja de entrada y lo que se envió, y no cambia nada. Su primera llamada lleva un solo argumento:

import { Colding } from "colding";

const colding = new Colding("cd_your_key");
const thread = await colding.threads.get({
  threadId: "11111111-1111-4111-8111-111111111111",
});
console.log(thread.subject);

Eso muestra el asunto de una conversación. Deja que el agente solo lea durante un tiempo antes de escribir nada. Ves lo que entiende, y nada cambia en tu workspace.

Luego, deja que escriba borradores

Añade operate, que en la consola se llama Operar, y el agente también puede escribir borradores, editar campañas y cambiar contactos. Un borrador no envía nada. El agente escribe uno y pide una vista previa:

const draft = await colding.drafts.create({
  mailboxId: "33333333-3333-4333-8333-333333333333",
  to: "[email protected]",
  subject: "Invoice question",
  bodyText: "Hi Ana, could you check invoice 1042?",
});
const preview = await colding.drafts.preview({
  draftId: draft.id,
});
console.log(preview.blockers);

La vista previa enumera lo que detendría el correo ahora mismo, como una dirección que la verificación no confirmó o un campo dinámico que nadie completó. Cuando el borrador está listo, el agente puede pedir a una persona que lo mire, con una nota. Esa persona recibe un aviso, y el borrador aparece en la pestaña Borradores de la Bandeja de entrada.

Enviar es aprobar

Enviar requiere send, que en la consola se llama Enviar prospección. La llamada indica qué revisión del borrador envía:

const send = await colding.drafts.send({
  draftId: draft.id,
  revision: draft.revision,
});
console.log(send.id, send.status);

Envía el texto de esa revisión y nada más. Si alguien cambió el borrador después de leerlo, la llamada se rechaza y no sale nada. Así, quien lee un borrador y pulsa Enviar aprueba justo lo que leyó.

Una campaña funciona igual. Iniciarla requiere send y aprueba la campaña tal como estaba cuando se comprobó antes de iniciarla. Un cambio que amplía una campaña en curso, como un paso nuevo o más leads, vuelve a requerir send.

Al principio, deja send solo para personas. Una clave sin él puede escribir todos los borradores y pedir una revisión, y una persona envía desde la consola lo que apruebe.

Hay pasos que ninguna clave puede dar: conectar un buzón, cambiar su contraseña, gestionar la facturación, gestionar el equipo y aceptar la política de uso aceptable. Un agente que necesita uno de ellos envía una solicitud, y una persona con sesión iniciada en la consola termina el paso.

Límites que el agente no puede cambiar

Además de sus permisos, el dueño puede limitar una clave en Configuración:

  • Desde qué buzones puede enviar.
  • Qué buzones y bandejas de entrada de agente puede leer. En los demás no ve nada, y los contactos y las campañas quedan cerrados para ella.
  • Qué campañas puede iniciar, a cuáles puede añadir leads y por cuáles puede enviar. Una clave con esta lista no puede crear campañas.
  • Qué tipo de correo puede enviar: prospección, el correo de tu propia app, o los dos.
  • Cuántos correos puede enviar al día y en total. Los correos de una campaña que inició también cuentan.
  • El último día en que funciona.

La clave no puede leer ni cambiar sus propios límites, y los límites solo reducen lo que autorizan sus permisos. La mayoría vale para lo que la clave envía y cambia, así que una clave sin una lista de buzones y bandejas de entrada de agente para leer puede seguir leyendo todo lo que hay en el workspace. Los límites del plan y el límite diario de cada buzón siguen aplicando por encima.

Hay otros dos permisos que conviene dejar apagados salvo que el agente los necesite: Comprobar direcciones, que gasta las verificaciones del mes, y Enviar correo de la app, para el correo de tu propia app, como recibos y enlaces de acceso.

El correo son datos, nunca órdenes

Un agente que lee tu bandeja de entrada lee palabras que escribieron desconocidos. Algunas pueden estar escritas para manipular al agente, como una línea que le dice que reenvíe tus contactos. OWASP lo llama inyección indirecta de prompt: un modelo recibe contenido de fuentes externas, como sitios web o archivos.

OWASP también dice que no está claro que algún método lo evite siempre. Así que no cuentes con que el agente detecte cada truco. Cuenta con los límites que lo rodean. En colding, las palabras dentro de un correo nunca son una aprobación. Cada envío sigue pasando por los permisos y límites de la clave, la lista de supresión y el límite diario de cada buzón.

Un reintento no envía dos veces

Las redes fallan. Cuando una llamada se queda sin respuesta, el agente no sabe si el correo salió, así que lo vuelve a intentar. Tres protecciones separadas evitan que el segundo intento envíe un segundo correo:

  • El SDK manda un Idempotency-Key con cada escritura, el mismo en cada reintento automático. Durante 24 horas, la misma llamada recibe la primera respuesta en vez de ejecutarse otra vez.
  • Enviar el mismo borrador en la misma revisión responde con el mismo correo, para siempre.
  • Antes de entregar, nuestro proceso de envío marca el correo como suyo una sola vez, así que dos workers no pueden enviarlo a la vez.

Si la conexión se corta mientras un correo está saliendo, nadie puede saber si el servidor lo recibió. colding lo cuenta como enviado y nunca lo vuelve a enviar. La guía de envío explica cada protección.

Cuando el agente se equivoca

Una vez que un correo empieza a salir, ya no se puede cancelar. Esto es lo que puedes hacer antes y después:

  • Mira quién envió qué. La pestaña Envíos de la Bandeja de entrada dice quién envió cada correo: una persona, o qué clave.
  • Cancela un correo antes de que salga. Un correo programado se puede cancelar hasta que empieza a salir. El agente también puede enviar con una espera de hasta 5 minutos, que te da ese margen.
  • Pausa un buzón o una campaña. Un buzón en pausa no envía nada nuevo y sigue recibiendo correo.
  • Revoca la clave. Todo lo que la usa se detiene al momento: los correos que dejó en cola se cancelan antes de salir, y las campañas que inició quedan en pausa. Un correo que ya está saliendo sigue su camino.

Una configuración para empezar

  1. Un buzón que ya pasó por el calentamiento. El texto sobre buzones nuevos explica por qué un buzón nuevo empieza despacio.
  2. Una clave con Leer y Operar, limitada a ese buzón.
  3. Una persona que lee cada borrador y pulsa Enviar.
  4. Cuando los borradores se hayan ganado tu confianza, añade Enviar prospección con un límite diario pequeño, y súbelo poco a poco.

Fuentes

Leímos estas páginas el 5 de octubre de 2026. Están en inglés. Si un proveedor cambió su página desde entonces, vale lo que dice su página y este texto está desactualizado.

Sigue leyendo