Saltar al contenido principal

12 · Agentes y AI Engineering

Gobernanza y human-in-the-loop

Decidir qué acciones puede tomar un agente por su cuenta, cuáles necesitan a una persona y cómo lograr que esa aprobación tenga sentido.

13 minCaso de estudio: docket (se abre en una ventana nueva)

Un que solo conversa necesita poca supervisión. Uno que ejecuta comandos, edita archivos o despliega software sí la necesita: algo tiene que decidir cuáles de sus acciones ocurren, bajo qué reglas, y registrar lo que se decidió. La intuición habitual es escribir las reglas en un archivo como AGENTS.md y confiar en que el modelo las siga.

Esta lección explica por qué eso no alcanza, a través de cinco ideas: la diferencia entre una instrucción y una política, cómo combinar varias reglas de forma segura, por qué quitar una herramienta es mejor que prohibirla, cómo es una buena aprobación humana y qué debe pasar cuando nadie responde.

Instrucción frente a política

A un empleado nuevo le puedes decir "nunca transfieras dinero sin una segunda firma", o puedes configurar la cuenta del banco para que ninguna transferencia salga sin ella. Lo primero depende de su memoria y su criterio; lo segundo se cumple aunque alguien lo engañe. Con los agentes pasa lo mismo.

Una instrucción ("no hagas push a la rama principal") es texto que el modelo lee. Funciona solo si el modelo la recuerda, la entiende y la antepone a otro texto, incluido el que haya colado un atacante. Una política es código en el , el programa que ejecuta al agente, que revisa cada acción antes de que ocurra, lo quiera el modelo o no.

Cuando una política bloquea algo, deja registro, y se puede probar como cualquier otro código. Las instrucciones mejoran el caso normal; la política acota el peor caso. Se necesitan las dos. La idea central: el modelo no debe ser la frontera de seguridad.

Denegar, preguntar, permitir: gana la regla más estricta

Una política da una respuesta por acción: denegar, preguntar a una persona o permitir. Cuando varias reglas coinciden, la forma robusta de combinarlas es simple: gana la respuesta más restrictiva. Así, agregar una regla nunca puede reabrir algo que otra cerró.

  1. Acción intentadaun comando, una edición, un despliegue
  2. Políticaresponden las reglas que coinciden; gana la más estricta
    • Denegar
    • Preguntar a una persona
    • Permitir
  3. Registroqué se decidió y con qué regla
Toda acción pasa por la misma decisión antes de ejecutarse, sea cual sea la intención del modelo.

Quitar la herramienta en vez de vigilarla

Preguntarle a una persona por todo no funciona, así que primero clasifica las acciones por riesgo: lecturas (el riesgo es filtrar datos), cambios locales (por lo general reversibles) y acciones de alto riesgo, con efectos externos o irreversibles. Con una herramienta genérica como una shell, el riesgo está en qué se ejecuta; Tool calling y harness explica cómo se clasifican los comandos.

Luego distingue dos tipos de control:

  • Un permiso significa que el agente tiene la herramienta y una verificación revisa cada uso. Si la verificación tiene un hueco, la acción ocurre.
  • Quitar una capacidad significa que el agente directamente no tiene la herramienta. No hay nada que verificar: es una pared, no una puerta con guardia.

La regla práctica: un rol que no puede hacer algo es más seguro que uno al que se le pidió no hacerlo. Cuando no puedas quitar la herramienta, verifica el permiso en un único punto.

Cómo es una buena aprobación

Hay decisiones que ninguna regla puede tomar sola: ¿este push a producción es el despliegue planeado o un error? Para esas se consulta a una persona, y un diseño serio responde cinco preguntas: qué dispara la solicitud, qué ve la persona, por qué canal llega, qué pasa ante un "no" o ante el silencio, y quién decidió.

El canal también es una superficie de ataque. El bot de Telegram de docket acepta solo cuatro comandos, desde chats vinculados de antemano, y registra cualquier otra cosa como rechazada. Su API HTTP exige un , pero quien llama declara de qué canal viene, así que el canal en el registro de auditoría es una afirmación, no una prueba.

Cuando nadie responde

Una aprobación que se concede sola al vencer el plazo no es un control, sino una demora: a un atacante le basta con actuar cuando nadie mira. La regla: un control que falla debe volver al comportamiento seguro, que aquí significa denegar.

En docket

  1. La regla dice "preguntar"solicitud guardada, sin secretos
  2. En esperaCLI, API HTTP, MCP o Telegram
  3. Decisióngana exactamente una respuesta
    • Aprobada
    • Denegada
    • Sin respuesta: denegada
  4. Registroquién decidió y por qué canal
Una aprobación de docket de principio a fin. El silencio termina en el mismo lugar que un "no", nunca como un "sí". Fuente: Security: Layered & Convention-Based

Separar estos casos rinde frutos: "no se le preguntó a nadie", "alguien dijo que no" y "nadie respondió a tiempo" hablan, respectivamente, de la configuración, de la acción y de la disponibilidad del equipo.

En la práctica

  • Decide el nivel de supervisión de cada acción. Algunas requieren aprobación previa, otras corren supervisadas con una forma de detenerlas, otras se revisan después. Da más autonomía solo a medida que se acumula evidencia: trazas, evaluaciones, historial de aprobaciones.
  • Guarda las reglas en archivos versionados y probados, no en .
  • Mira los números de aprobación. Si casi todo se aprueba en segundos, las aprobaciones son decorativas.
  • Decide qué pasa a las 3 de la mañana, cuando no hay nadie disponible. La respuesta segura es que no corre nada riesgoso.

Para profundizar

La documentación de docket describe cada uno de estos mecanismos con más detalle (en inglés):

  • Security: Layered & Convention-Based enumera las capas de seguridad de docket, desde las instrucciones que leen los agentes hasta la verificación de llamadas a herramientas que no se puede desactivar, y dice qué no cubre cada una.
  • Agent Teams (Pods) explica cómo cada rol se declara como datos, con sus permisos de edición y las herramientas que puede usar.
  • DOCKET Architecture muestra dónde corre el motor de políticas: al encolar una tarea, antes de cada llamada a una herramienta y sobre la salida de cada paso.

Para llevar

  • Una instrucción mejora el caso normal; una política aplicada por código acota el peor caso. El modelo no es la frontera de seguridad.
  • Cuando las reglas no coinciden, gana la más estricta. Verifica que cada camino de falla realmente falle cerrado.
  • Quitarle una herramienta a un rol es más fuerte que prohibirle usarla.
  • Una aprobación útil es atómica, oculta los secretos, registra quién decidió y por dónde, y deniega cuando nadie responde.
  • Consulta a personas solo donde su criterio aporta algo; si no, la aprobación se vuelve un sello automático.

Comprueba lo aprendido

¿Por qué un rol sin herramienta de escritura es más seguro que uno al que se le dijo "no escribas archivos"?

No depende de que el modelo obedezca ni de que una verificación atrape cada uso. La herramienta simplemente no está, así que ningún texto persuasivo puede desbloquearla.

¿Qué tiene de malo una aprobación que se concede sola al vencer el plazo?

Convierte el control en una demora: cualquier acción corre si nadie mira a tiempo, y un atacante puede elegir ese momento. Ante el silencio, la respuesta debe ser no.

Un archivo de política con un error se omite y los demás siguen funcionando. ¿Cuál es el riesgo y cómo lo reduces?

Una protección puede apagarse sin que nadie lo note, así que en ese camino el sistema no falla cerrado. Valida y prueba las políticas antes de ponerlas en uso, y genera una alerta cuando una no se pueda cargar.