Pigeon:为 AI 子代理签发权限通行证

Pigeon, a signed Pass for what a sub-agent may do

当你的 AI 代理生成子代理时,如果直接复制 API 密钥,子代理就能随意部署生产环境或读取支付数据库,风险极大。Pigeon 提供了一种解决方案:不再传递完整密钥,而是签发一张经过签名的 Pigeon Pass。这张通行证严格限定了子代理能执行的操作、访问的资源以及约束条件。它没有中央服务器,只需在生成子代理时调用 delegate 方法,在执行工具时调用 verify 方法进行校验。子代理无法扩大权限或移除父级约束,从而将安全风险控制在最小范围内。

身份告诉你代理是谁,而权限告诉你它能做什么。
  1. Retr0id

    > Pigeon Pass 是它自己的凭证格式。它不是 JWT、CWT、macaroons、Biscuit 或 UCAN 的配置文件。

    为什么?

    > Pigeon [...] 不是 [...] 密钥托管方。

    那这里到底在搞什么?https://github.com/pigeonlabsHQ/pigeon/blob/eb6a1e97b80c4951...

    我想我是第一个读到这些内容的人类。

  2. awestroke

    用极其复杂的方式解决了一个微不足道的问题

  3. pigeonlabshq

    当一个代理启动子代理时,通常会移交相同的凭证。API 密钥是最明显的例子。同样的模式也适用于部署权限、数据库访问权限或合并到主分支的权限。子代理因此拥有了父代理拥有的一切。

    Pigeon 就是为此设计的一个小型协议。你授予一个 Pass(包含能力、资源、约束),向子代理委派一个更窄的权限,并在工具运行前进行验证。如果子代理索要更多权限,它将安全地失败(fail closed)。身份(Identity)说明代理是谁,权限(Authority)说明它能做什么。

    这里没有服务器。真正的密钥保留在运行器(runner)上。子代理携带 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 辅助作为执行点。这不是一个平台。无法阻止提示注入。

    仓库:https://github.com/pigeonlabsHQ/pigeon

    发布:https://github.com/pigeonlabsHQ/pigeon/releases/tag/v0.1.0

    演示:python demo/agent.py

同日更多故事

2026-09-06