Pigeon: подписанный пропуск, ограничивающий действия суб-агентов
Pigeon, a signed Pass for what a sub-agent may do
Pigeon — это библиотека Python для делегирования полномочий ИИ-агентам. Вместо передачи суб-агенту полного API-ключа, вы выдаете ему Pigeon Pass — подписанный, ограниченный по возможностям и ресурсам пропуск. Проверка полномочий происходит через функцию verify(), которая возвращает не просто булево значение, а причину отказа. Реализована защита от эскалации привилегий: дочерний агент не может расширить свои полномочия. Pigeon также предоставляет middleware для MCP и CLI для генерации ключей и инспекции пропусков. Это не платформа и не политический движок, а небольшой примитив для ограничения радиуса поражения.
Identity tells you who the agent is. Authority tells you what it may do.
- Retr0id
> Pigeon Pass — это собственный формат учетных данных. Это не профиль JWT, CWT, macaroons, Biscuit или UCAN.
Почему?
> Pigeon — это [...] не [...] хранитель ключей.
Что же здесь происходит? https://github.com/pigeonlabsHQ/pigeon/blob/eb6a1e97b80c4951...
Полагаю, я первый человек, который вообще это прочитал.
- awestroke
Тривиальная проблема, решенная очень сложным способом
- pigeonlabshq
Когда агент запускает субагента, он обычно передает ему те же учетные данные. Очевидный случай — API-ключ. Та же схема применяется к правам на деплой, доступу к базе данных или разрешению на merge в main. Тогда у ребенка есть все, что есть у родителя.
Pigeon — это небольшой протокол для таких случаев. Вы выдаете Pass (возможности, ресурсы, ограничения), делегируете более узкий дочернему агенту и проверяете перед запуском инструмента. Если ребенок запрашивает больше, система закрывается с ошибкой (fail closed). Идентичность говорит, кто агент. Полномочия говорят, что ему можно делать.
Здесь нет сервера. Настоящий секрет остается на раннере. Ребенок несет 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: собственный формат (не JWT/Biscuit/UCAN), Ed25519, ограничения по частоте и количеству, проверка цепочки, MCP-хелперы как точка принуждения. Не платформа. Не защищает от prompt injection.
Репозиторий: https://github.com/pigeonlabsHQ/pigeon
Релиз: https://github.com/pigeonlabsHQ/pigeon/releases/tag/v0.1.0
Демо: python demo/agent.py