自动化与运维 capability-authorizationaccess-controlcryptographic-warrantssubtractive-delegationprompt-injection-defenseproof-of-possessionmcp-securityaudit-receipts

Tenuo 智能体授权

用加密授权凭证限制智能体在单次任务中可调用的工具、参数范围和委派权限。

FollowAgents 评估 · FARS-2.1
推荐
82/ 100 五分制 4.1 / 5
1 2 3 4 5 6
按维度查看评分与理由
1信任安全21 / 29 · 3.6/5

最小权限有充分的静态证据:工具名、实参、持有者和 TTL 均受签名 warrant 约束,委派只能收窄,且在执行边界失败关闭。敏感操作可要求签名人工批准,但批准机制是可选项,所引用的完整批准文档未提供,因此 user_confirmation 扣分。数据流说明较清楚:本地验证无需联网,实验分享明确限定联网命令、固定脱敏字段并测试 HTTPS。密钥保管、仅分发公钥、短 TTL、信任根和审计建议较完整。依赖安全有锁定构建、提交哈希固定的多数 Actions、cargo audit、CodeQL/模糊/变异测试等证据,但仍有按标签引用的 Action、curl 管道安装及未展示全部依赖清单与审计结果,故非满分。外部效果在调用前拦截并可生成收据,但不是所有效果都要求人工确认。没有撤销已执行副作用或恢复业务状态的回滚机制,rollback 为 0。许可证、贡献者、既有工作和安全联系人提供了来源归属,但发布者身份未经企业注册验证,维护主体的法律身份仍不明确。

2可靠稳定9 / 14 · 3.2/5

README、SECURITY、CI 与实验测试共同展示了跨 Rust、Python、TypeScript、MCP、Temporal、Docker 和多平台的广泛检查,以及明确的拒绝异常和用户输出;但本次未执行这些检查。自洽性存在明显版本冲突:README 宣称 v0.2 Production/Stable,示例和镜像使用 0.3.0,实验记录 0.2.5-beta.0,而 SECURITY 仅列 0.1.x 受支持,因此 self_consistency 显著扣分。依赖可用性由多版本矩阵、预构建轮子、锁定构建和兼容性任务充分覆盖。失败消息有 AuthorizationDenied、MonotonicityError、缺失/无效 warrant 的说明以及实验 CLI 期望,但未提供整个产品错误分类与恢复指导,所以未满分。

3适用触发18 / 18 · 5.0/5

材料清楚区分应用开发者、平台团队、代理编排器和学习者等受众,并覆盖进程内、MCP、API/网关、Kubernetes、Temporal 与代理交接场景。能力边界明确说明其不是沙箱、提示工程、LLM 过滤器或 IAM 替代品,并列出应用方责任。触发点精确位于真实工具调用及实参的执行边界,缺失、过期、签名错误或工具不符均拒绝。Python 3.9–3.14、Node 20+、Rust、Linux/macOS/Windows、容器和多框架集成均有静态配置及 CI 矩阵支持,足以给满分;但这不代表本次独立运行验证。

4规范维护16 / 18 · 4.4/5

README 的安装、快速开始、委派模型、部署选择、需求、生产清单、Rust 示例、贡献与许可证结构完整,并提供大量可运行示例和教学实验。已明确记录非沙箱属性、路径规范化、nonce/幂等、节点覆盖、网络 TLS 和应用责任等限制。Apache-2.0 正文完整。命名总体稳定,但 Python、Rust、TypeScript、镜像和实验中的版本号及稳定性标签并不统一,因此 naming_stability 扣分。CHANGELOG 被引用但未提供,无法核验版本迁移质量,versioning_changelog 仅给部分分。安全邮箱、PGP、响应时限和贡献流程给出维护路径,但发布者身份未知,且没有明确的可核验法人或长期维护承诺,因此 maintenance_responsibility 非满分。

5有效结果12 / 13 · 4.6/5

API 示例、边界部署方案、拒绝行为、实验 HUD、脱敏分享报告和多语言 SDK 使输出具有很高的实际可用性。相较身份或角色授权,该项目提供任务级、持有者绑定、可衰减的多跳授权和本地验证,边际价值明确。成本收益方面,材料声称低于 50 微秒并强调离线验证,但没有提供本次范围内的基准方法或结果,也未量化密钥管理、控制平面、全节点包装和集成维护成本,因此扣一分。

6证据核验6 / 8 · 3.8/5

主要安全主张能够追溯到 README 示例、SECURITY 中的责任和测试命令、CI 工作流、实验的脱敏与网络行为测试以及所引用的形式化验证文件;但若干关键引用文件、测试实现、CHANGELOG、基准和执行结果未包含在材料中,claim_traceability 非满分。跨来源印证较强:文档中的最小权限、失败关闭、平台覆盖及数据分享描述分别被 CI 或测试代码呼应。事实与推断多数通过“不是沙箱”和应用责任作了区分,但“抵御提示注入”、生产稳定性、低于 50 微秒及“形式化验证”等表述在所给材料中缺少完整证明或结果,仍带有宣传性推断。

证据充分度: 评估于 2026年9月17日 审查版本 241ac633c31c
上游仓库在本次评估后已有新提交;当前评分仍对应所示审查版本,可能尚未覆盖最新改动。
源码中未见的安全控制:回滚或恢复路径
使用前请注意
  • 本次仅为静态低置信度审查;未执行构建、测试、模糊测试、形式化模型或基准。
  • 生产使用前应核对 v0.1、v0.2、v0.2.5-beta.0 与 v0.3.0 之间的真实支持状态、兼容性和升级路径。
  • Tenuo 只授权调用,不提供进程隔离或业务副作用回滚;仍需沙箱、TLS、幂等控制及应用级补偿机制。
  • 确认所有工具和图节点都经过 guard,正确规范化路径,并配置显式信任根、撤销策略、短 TTL、审计与安全密钥存储。
  • 对低于 50 微秒、生产稳定和形式化验证等声明,应在固定修订上检查原始模型、测试结果和可复现基准。
查看完整评分方法 →

这个 Agent 能做什么,适合哪些场景?

Tenuo 是面向 AI 智能体和工作流的任务级授权系统,由 Rust 核心、Python SDK、测试版 TypeScript SDK、验证 sidecar、控制平面示例及多种框架适配器组成。控制平面或应用签发带有工具名、参数约束、持有者公钥和有效期的 warrant,智能体调用工具时提交 warrant 与持有密钥生成的持有证明。执行边界上的 Authorizer、Python `@guard`、Rust `Guard`、MCP 中间件或 API 网关会在动作运行前验证完整委派链和实际参数。委派者只能删除能力、收紧参数范围或缩短有效期,不能把子 warrant 的权限扩大到父 warrant 之外。它可作为进程内库、MCP 服务保护层、FastAPI/网关 sidecar、Kubernetes 组件或 Temporal 工作流授权层部署,并能选择性地产生签名授权回执。适合需要让智能体自主选择工具、同时以密码学方式限定实际执行权限的团队;它不提供进程隔离,也不替代现有 IAM。

签发方通过 SigningKeyCapabilityWarrant.mint_builder() 定义允许调用的工具、参数约束、持有者和 TTL。Python 应用可以用 configure()mint()/mint_sync() 将 warrant 放入任务上下文,再用 @guard(tool="...") 在函数运行前检查调用;Rust SDK则通过 Runtimesession_from_warrant()Callsession.guard()执行同类检查。跨进程的 MCP 部署使用 AuthorizerMCPVerifierTenuoMiddlewareSecureMCPClient,客户端发送 warrant 及覆盖工具名、精确参数和短时间窗口的持有证明,服务器使用受信任签发方公钥在本地验证。编排器可调用 grant_builder() 生成更窄的子 warrant;若增加工具、放宽约束或提高上限,系统抛出 MonotonicityError。同一 warrant 格式还能用于 A2A、HTTP、FastAPI、Temporal、LangChain、LangGraph、CrewAI、AutoGen、Google ADK 和 OpenAI 集成。验证结果允许或拒绝动作;需要审计时还可生成签名授权回执。

  1. 平台工程团队允许运维智能体扩缩 staging-* 集群,但需要禁止其触碰生产集群或把副本数提高到指定上限以上。
  2. 多智能体系统的编排器需要把子任务交给工作智能体,同时保证每次交接后的权限只能缩小,不能发生权限升级。
  3. MCP 工具提供方希望在服务器端验证工具名、真实参数和调用者的持有证明,而不是信任模型或客户端自己的判断。
  4. API 与基础设施团队希望在 FastAPI、网关、sidecar 或 Kubernetes 边界统一执行智能体授权,并在控制平面不可用时继续本地验证。
  5. 使用 Temporal 的团队需要让授权上下文跟随重试、队列和长时间运行的工作流。
  6. 受审计约束的团队需要为敏感操作加入签名人工批准,或保存说明调用为何获准或被拒的签名回执。

这个 Agent 有哪些优点和局限?

优点
  • 授权在真实工具边界基于工具名和精确参数执行,即使模型遭到提示注入,调用也不能超过 warrant 已授予的范围。
  • 委派具有单调衰减约束:子 warrant 只能删除工具、收紧参数或缩短期限,验证端会检查从受信任根到叶节点的整条链。
  • warrant 与持有者公钥绑定,每次调用还要提交签名持有证明,复制单纯的 warrant 不能直接冒用。
  • 验证可在本地完成且不依赖网络;来源声称检查耗时低于 50 微秒,控制平面中断时仍可继续执行授权。
  • 同一协议覆盖 Python、Rust、测试版 TypeScript、MCP、HTTP、A2A、Temporal、网关和多种智能体框架,部署边界选择较多。
局限
  • Tenuo 不是沙箱,只判断调用是否获准;需要进程或主机隔离时仍须部署容器或虚拟机。
  • 生产采用需要管理签名密钥、受信任根、短 TTL、撤销策略、审计回调和每个执行边界的强制验证,运维复杂度高于只依赖现有 IAM。
  • TypeScript SDK仍为 beta 且要求 Node.js 20+;部分生态接入依赖可选 Python 扩展,MCP、AutoGen 等扩展要求 Python 3.10+。
  • 托管的 Tenuo Cloud 仍处于 Early Access,且 Cloud SDK/控制平面客户端被明确标为专有组件。
  • warrant 退出应用上下文后仍会持续有效到 TTL 到期,因此错误配置的过长 TTL 会扩大凭证暴露窗口。

如何安装或部署这个 Agent?

Python 3.9-3.14 可运行 uv pip install tenuo,也可执行 pip install tenuo。按集成选择额外依赖,例如 uv pip install "tenuo[mcp]"uv pip install "tenuo[fastmcp]"uv pip install "tenuo[openai]"uv pip install "tenuo[temporal]";MCP 相关扩展要求 Python 3.10+。Node.js 20+ 可安装测试版 TypeScript SDK:npm i @tenuo/core@beta。Rust 项目运行 cargo add tenuo --features sdk;文档示例也给出了 tenuo = { version = "0.3.0", features = ["sdk"] }。容器演示可在仓库中运行 docker compose up,官方镜像可用 docker pull tenuo/authorizer:0.3.0docker pull tenuo/control:0.3.0。Kubernetes 可执行 helm install tenuo-authorizer ./charts/tenuo-authorizer --set config.trustedRoots[0]="YOUR_CONTROL_PLANE_PUBLIC_KEY"

如何使用这个 Agent?

最小 Python 流程是生成 SigningKey,调用 configure(issuer_key=..., dev_mode=True, audit_log=False),用 Capability("scale_cluster", cluster=Pattern("staging-*"), replicas=Range.max_value(10)) 描述权限,再在 with mint_sync(authority): 中调用受 @guard(tool="scale_cluster") 保护的函数。dev_mode=True 仅适合本地粘贴运行;生产环境应把签名密钥放入 Vault、AWS Secrets Manager 或 GCP Secret Manager,向验证端配置控制平面的公开 trusted_roots,关闭 dry_run,要求每个执行点都提供 warrant,并启用审计回调和指标。MCP 服务端只接收签发方公钥,将 Authorizer(trusted_roots=[issuer_public_key]) 交给 MCPVerifier(require_warrant=True)TenuoMiddleware;客户端使用 SecureMCPClient(..., inject_warrant=True) 调用工具。生产 warrant 应采用短 TTL;退出 mint_sync 上下文只会移除当前作用域中的 warrant,不会提前撤销其密码学有效期。

这个 Agent 与同类方案有什么区别?

与传统 IAM 相比,Tenuo 不主要回答调用者是谁,而是限定某个工作负载在当前任务和时间窗口内具体能做什么;它被设计为叠加在 IAM 之上。与普通 bearer token 相比,warrant 绑定持有者公钥并要求每次调用提供签名证明。与依赖中心策略服务的运行时检查相比,它把签名权限携带在请求中,可在执行端离线验证。项目将 Macaroons、Biscuit、UCAN 和 CaMeL 列为相关或启发性工作,但来源没有给出足以断言全面优劣的基准比较。

常见问题

它能防止智能体执行任意本地代码吗?
不能。它只授权受保护的工具或服务调用,不提供进程隔离;任意代码执行风险仍需通过容器、虚拟机及操作系统权限控制。
验证时必须连接 Tenuo Cloud 吗?
不需要。自托管核心和 sidecar 使用受信任公钥及本地撤销状态验证 warrant,不要求验证时访问外部网络。Tenuo Cloud 是可选的托管签发、密钥轮换、SRL 分发和可观测性服务。
下游智能体能扩大上游授予的权限吗?
不能。验证器检查整条委派链;添加工具、放宽参数约束或超过父 warrant 的范围会被拒绝,子 warrant 的期限也不能超过父级剩余期限。
生产部署需要哪些密钥材料?
签发端保管私有签名密钥,执行端只配置控制平面的受信任公钥。每个 warrant 还绑定持有者公钥,调用者用相应私钥对 warrant、工具、精确参数和短时间窗口签名。
是否需要改变现有身份与策略系统?
它被设计为与现有 IAM 并用,而非替换 IAM。团队仍需把 Tenuo 验证接入所控制的函数、MCP 服务、API、sidecar、网关或工作流执行边界。

相关 Agents