权限审批:AgentPermissionToolExecutor 判定链

权限审批:AgentPermissionToolExecutor 判定链 由 Archify 生成的时序图。 tool_call(start/execute) ① evaluate(toolCall + 环境) ALLOW → 直通 start(call) 结果 → 回填模型 或 REQUIRE_APPROVAL(无 granted) 抛 AgentApprovalRequiredException 批准→重发 call+granted→再评估放行 start(call) → 结果回填 或 DENY → 抛 AgentPermissionException AgentRuntime · 发起方 · 时序参与者 AgentRuntime 发起方 权限执行器 · 包装 delegate · 时序参与者 权限执行器 包装 delegate 权限策略 · evaluate 决策 · 时序参与者 权限策略 evaluate 决策 宿主审批层 · CLI/ACP 批准 · 时序参与者 宿主审批层 CLI/ACP 批准 ToolExecutor · 工具/MCP · 时序参与者 ToolExecutor 工具/MCP 图例 请求 异步追踪 默认消息

三种决策

  • • AgentPermissionDecisionType:ALLOW 直通 / DENY 抛 AgentPermissionException / REQUIRE_APPROVAL 视 granted 标记而定
  • • policy 返回 null 按 DENY 处理(fail-closed);决策基于 AgentPermissionRequest{toolCall, environment}

granted 元数据回路

  • • 批准不落库:宿主在重发的 AgentToolCall.metadata 写 harness_approval_granted=true,executor 见标记即放行
  • • environment 参与决策:LOCAL / SANDBOX / REMOTE_SANDBOX——同一工具在不同执行环境可有不同审批要求

内置策略工厂

  • • AgentPermissionPolicies:allowAll / denyAll / allowTools / denyTools / requireApprovalForTools;AgentBuilder 未显式设置时默认 SAFE
  • • 宿主自带审批层(如 CliToolApprovalDecorator)时 CodingAgentBuilder 默认 allowAll——审批责任上移给交互层