La mayoría de los “agentes de IA” que ves en demos de YouTube tienen un problema silencioso: o corren en piloto automático y hacen desastres, o piden confirmación en cada paso y no sirven para nada. El approval-gate es la solución del medio, y es el patrón que más usamos en producción en Arteclaw.

El problema con los extremos

Cuando empezás a automatizar procesos complejos —revisión de contratos, análisis de expedientes, generación de comunicaciones legales— te das cuenta rápido de que la autonomía total es una apuesta arriesgada. Un agente que manda un email equivocado a un juez, modifica una cláusula que no debía tocar, o interpreta mal el alcance de un poder notarial, crea problemas que cuestan mucho más de lo que ahorraste.

Pero el otro extremo tampoco funciona. Si el agente necesita aprobación humana en cada subtarea, terminás con una herramienta que interrumpe al profesional veinte veces por tarea. La persona termina siendo el cuello de botella y pierde más tiempo que si hubiera hecho todo a mano.

El approval-gate resuelve esto con una pregunta simple: ¿en qué punto del flujo tiene sentido que un humano revise?

Qué es un approval-gate, exactamente

Un approval-gate es un checkpoint en el grafo de ejecución del agente donde el flujo se pausa, serializa el estado actual, y espera una señal externa antes de continuar.

La clave está en qué hace el agente antes del checkpoint. Lo ideal es que haga todo el trabajo costoso: investigación, análisis, draft de propuesta. Cuando llega al gate, el humano recibe un output estructurado y solo tiene que tomar una decisión binaria (aprobar/rechazar) o seleccionar entre opciones concretas.

No es “el agente hizo algo y pregunta si está bien”. Es “el agente completó toda la fase de análisis, estructuró los resultados, y ahora necesitás validar este output específico antes de que empiece la fase de ejecución”.

Implementación con LangGraph

En LangGraph, el approval-gate se implementa como un nodo que transiciona el estado a waiting_for_approval y retorna sin continuar el grafo. El siguiente snippet es pseudocódigo conceptual, no la API literal de LangGraph — la implementación real usa checkpointer + interrupt()/Command(resume=...) para pausar-y-reanudar; acá END termina ese run puntual, con el estado ya persistido para el siguiente paso.

def approval_gate_node(state: AgentState) -> AgentState:
    return {**state, "status": "waiting_for_approval"}

def should_continue(state: AgentState) -> str:
    if state["status"] == "waiting_for_approval":
        return END  # termina este run; el estado queda persistido para reanudar
    return "next_node"

El truco está en la persistencia. Necesitás guardar el estado completo del grafo en algún storage (nosotros usamos Supabase con una columna JSONB) para poder resumir desde el mismo punto cuando llegue la aprobación.

# Guardar estado
await supabase.table("agent_runs").update({
    "status": "waiting_approval",
    "plan_json": state.dict()
}).eq("id", run_id)

# Resumir después de aprobación (patrón conceptual — en LangGraph real
# esto es un checkpointer + Command(resume=...), no un config arbitrario)
saved_state = await load_state(run_id)
saved_state["approved_items"] = approved_ids
graph.invoke(saved_state, config={"starting_node": "execution_phase"})

El costo real de no tener el gate

Un abogado en Rosario fue sancionado por citar jurisprudencia inventada por IA sin revisarla antes de firmar.

En agosto de 2025, la Sala II de la Cámara de Apelación en lo Civil y Comercial de Rosario encontró que un escrito judicial citaba fallos que directamente no existían —“fuentes lisa y llanamente inventadas”, en palabras del tribunal— generadas con IA y volcadas al expediente sin cotejar la fuente contra el original (Rosario, sentencia CUIJ 21-11893083-2, “Giacomino c/ Monserrat s/ daños y perjuicios”).

“No puede haber consentimiento válido alguno que releve a un letrado de su deber de cotejar las fuentes en las que basa sus posiciones jurídicas.”

— Cámara de Apelación en lo Civil y Comercial de Rosario, Sala II

Es exactamente el punto donde faltó el gate. El abogado usó la IA como agente de investigación, pero nadie paró el flujo antes de la acción irreversible: presentar el escrito ante el tribunal. Un checkpoint que exigiera cotejar cada cita contra la fuente primaria —no solo revisar que el texto sonara convincente— hubiera evitado la sanción.

Cuando el gate sí funciona

El mismo mecanismo, aplicado a revisión de cláusulas comerciales, se ve así: el agente ingesta el contrato, identifica cláusulas problemáticas y se detiene. El abogado no redacta nada en esa instancia — valida un listado con categorización y dice “estas sí, estas no”. Recién ahí el agente redacta las modificaciones, solo para las cláusulas aprobadas — en la práctica, minutos de trabajo en lugar de la revisión completa de un contrato.

Cuándo poner el gate

Antes de acciones irreversibles. Mandar emails, crear documentos que van a terceros, publicar contenido. Si el costo de equivocarse es alto, el gate vale la pena.

Después del trabajo costoso. Si el agente tardó 40 segundos en analizar 200 páginas de jurisprudencia, el gate permite que un humano valide las conclusiones antes de que empiece a escribir el informe. No repetís el análisis si algo está mal.

Cuando el output necesita validación experta. Hay dominios donde el modelo puede estar técnicamente correcto pero contextualmente equivocado. Un abogado ve en dos segundos si la clasificación de una cláusula tiene sentido. El modelo no tiene ese contexto.

El trade-off que nadie menciona

El approval-gate introduce latencia asincrónica. Tu agente puede terminar la fase de análisis a las 3 de la madrugada, y el humano aprueba a las 9 de la mañana. Esas 6 horas no son un problema si tu arquitectura es async desde el diseño.

El error más común es hacer el gate síncrono: el proceso del servidor queda esperando mientras el humano decide. Eso no escala. Lo correcto es que el agente guarde el estado, libere recursos, y haya un endpoint separado que recibe la aprobación y dispara la continuación.

Para sistemas multi-tenant esto es especialmente importante: distintas organizaciones pueden tener distintos umbrales de aprobación. El gate se vuelve un parámetro de configuración, no una decisión de código.

En producción

El patrón que describimos acá es el que implementamos en los workflows de Arteclaw para automatización legal. No es teoría de laboratorio: es lo que corre en procesos reales con abogados que tienen presión de tiempo y cero tolerancia al error.

Si estás construyendo un sistema agéntico para un dominio donde los errores son costosos, el approval-gate no es opcional. Es la diferencia entre una herramienta en la que los profesionales confían y una que evitan.

Contanos en qué estás trabajando → arteclaw.com