Pigeon: credenciales firmadas para que un sub-agente no pueda hacer más de lo que debe
Pigeon, a signed Pass for what a sub-agent may do
Cuando un agente de IA lanza un sub-agente, suele entregarle la misma API key, dándole acceso total a producción, bases de datos y merges. Pigeon, una librería Python de código abierto, propone un mecanismo de delegación de autoridad: en lugar de copiar credenciales, se otorga un Pigeon Pass, una credencial firmada y restringida que especifica qué acciones y recursos puede usar el sub-agente. La librería incluye verificación con códigos de rechazo, delegación jerárquica que impide escalada de privilegios, y middleware para MCP. No es una plataforma ni un proveedor de identidad, sino una primitiva para acotar el radio de acción de los agentes.
Identity tells you who the agent is. Authority tells you what it may do.
- Retr0id
Retr0id:
> Pigeon Pass es su propio formato de credenciales. No es un perfil de JWT, CWT, macarrones, Biscuit o UCAN.
¿Por qué?
> Pigeon no es [...] un custodio de claves.
¿Qué está pasando aquí entonces? https://github.com/pigeonlabsHQ/pigeon/blob/eb6a1e97b80c4951...
Supongo que soy el primer humano que lee algo de esto.
- awestroke
awestroke:
Un problema trivial resuelto de una manera muy compleja
- pigeonlabshq
pigeonlabshq:
Cuando un agente inicia un sub-agente, normalmente le entrega las mismas credenciales. Una clave de API es el caso obvio. El mismo patrón se da con permisos de despliegue, acceso a bases de datos o permiso para fusionar en la rama principal. El hijo entonces tiene todo lo que tiene el padre.
Pigeon es un pequeño protocolo para eso. Otorgas un Pass (capacidades, recursos, restricciones), delegas uno más restringido al hijo y verificas antes de que la herramienta se ejecute. Si el hijo pide más, falla de forma segura. La identidad dice quién es el agente. La autoridad dice qué puede hacer.
No hay servidor. El secreto real permanece en el ejecutor. El hijo lleva el Pass.
from pigeon import grant, verify
auth = grant(
subject="agent:deployer",
capabilities=["deploy"],
resources=["environment:staging"],
)
verify(auth, "deploy", "environment:staging").allowed # True
verify(auth, "deploy", "environment:production").reason_code # RESOURCE_NOT_ALLOWED
v0.1: formato propio (no JWT/Biscuit/UCAN), Ed25519, restricciones de tasa/recuento, verificación en cadena, helpers MCP como punto de aplicación. No es una plataforma. No detiene la inyección de prompts.
Repo: https://github.com/pigeonlabsHQ/pigeon
Release: https://github.com/pigeonlabsHQ/pigeon/releases/tag/v0.1.0
Demo: python demo/agent.py