Comparativa
Una alternativa a HumanLayer para aprobaciones de agentes
4 nov 2026 · 5 min de lectura
La versión corta
HumanLayer nació como un SDK que permitía a los agentes preguntar a una persona antes de actuar: require_approval para controlar una función, human_as_tool para hacer una pregunta. Hoy HumanLayer desarrolla un IDE para agentes de programación, y el SDK de aprobaciones no recibe una versión desde junio de 2025. Si todavía dependes de él, Run it by cubre los mismos dos patrones, y la persona que responde solo necesita un enlace.
Comprobado con las páginas de HumanLayer en noviembre de 2026. No encontramos ningún aviso oficial de obsolescencia, así que confirma con HumanLayer antes de planificar en base a nuestra lectura.
Qué cambió en HumanLayer
- humanlayer.dev ahora describe un IDE multijugador y una nube para ejecutar Claude Code, Codex y otros agentes de programación.
- La última versión del paquete humanlayer en PyPI es la 0.7.9, de junio de 2025.
- La documentación de aprobaciones ya no está en el sitio, y el repositorio ahora alberga el producto nuevo.
Es una decisión razonable para HumanLayer, y si supervisas agentes de programación en equipo, su producto nuevo está hecho para eso. Solo deja a los agentes que necesitan el visto bueno de una persona sin el SDK que usaban.
Los mismos patrones en Run it by
-
Controlar una acción (
require_approval): crea una solicitud conmode: "approval", el motivo y las personas que deciden. Actúa solo cuando el veredicto seaapproved. -
Hacer una pregunta (
human_as_tool): crea una solicitud conmode: "form"y un JSON Schema para la respuesta. Vuelve validada contra ese esquema. -
Recibir la respuesta: un webhook firmado,
getStatuscon una espera de hasta 25 segundos o, por MCP en Builder y Pro, una notificación en el momento en que alguien responde.
Ejemplo
Un pequeño require_approval en Python sobre la API REST. Espera dentro de la llamada; en producción, mejor usa el webhook.
import os, requests
API = "https://runitby.app/v1/requests"
AUTH = {"Authorization": f"Bearer {os.environ['RUNITBY_API_KEY']}"}
def require_approval(reason, approvers):
request = requests.post(API, headers=AUTH, json={
"mode": "approval",
"title": reason,
"requester": "The billing agent",
"audience": {"kind": "named", "recipients": approvers},
"approval": {"reason": reason, "policy": "any", "verify": "email"},
"expiresIn": "24h",
"sendEmail": True,
}).json()
while True:
status = requests.get(
f"{API}/{request['requestId']}?wait=25", headers=AUTH
).json()
if status["verdict"]:
return status["verdict"] == "approved"
if require_approval("Refund order #4821, $1,200",
[{"name": "Emily Lee", "email": "emily@acme.com"}]):
issue_refund("4821")
declined y expired devuelven False, así que el silencio nunca se convierte en un reembolso.
Qué es distinto
- Quienes aprueban no necesitan Slack ni una cuenta. Cada persona con nombre recibe su propio enlace por correo, o tú le pasas el enlace, incluso por Slack.
- Varias personas con una regla (cualquiera, todas, mayoría o un número), un código por correo opcional para cada una y una caducidad que termina como
expired. - No hay un decorador que envuelva tus funciones; llamas a la API o a las herramientas de MCP. Si dependías de aprobaciones que llegaban como mensajes de Slack con botones, Run it by no hace eso.
Para una visión más amplia de las opciones, mira Run it by frente a las herramientas de aprobación.
Pruébalo con tu agente
Gratis hasta 250 solicitudes al mes, sin tarjeta. Añade el servidor MCP desde Claude Code o Codex con un solo comando, o usa la API REST.