DSH 侧的原生审批仍是用户决策入口。可信本机管理入口可签发绑定任务、主体、Agent、会话、工作区及有效期的普通文件读写授权。对已知测试/构建命令类别,首次原生审批后的同任务调用可在有效期内复用;不会仅因工具名相同而复用。
上述机制只处理证据充分且原因仅为策略要求审批的调用;未知工具、凭据、工作区外资源、权限差分、组合风险及 RV 升权保持原判。任务授权撤销不会同时清除已有命令类别审批,命令审批当前依赖各自有效期。管理命令和准确限制见 任务授权,当前工作台尚不提供任务授权签发界面。
RVguarder 的价值不在“执行后解释”,而在“执行前决策”。
当前动作链:
用户请求
-> 事件推断 / 事件摄入
-> 语义归一化 / Authorization Trace
-> PMKB 单步规则 + 最小权限 + 危险组合判断
-> RV 规约 overlay(PMKB 后、controller 前,升权不降权)
-> 白名单校验
-> 生成动作记录
-> allow / ask / block
-> ask 进入 OpenClaw 原生待审批;内部 escalate 统一映射为 ask
-> 批准后才执行
接入 OpenClaw 原生 Hook 后,运行时工具链路已经变成:
OpenClaw 准备调用工具
-> before_tool_call
-> Guard 同步判定
-> block / pending_approval / allow
-> OpenClaw 原生审批卡片完成唯一用户决策
-> Guard 只读同步 resolution 后继续原始工具调用
-> after_tool_call 回写 executed / failed
每次 before_tool_call 都从 policies/permissions/ 加载已校验的版本化 bundle。语义层先
填充 action、resource、scope、data、context、principal 和 trusted identity,随后按
matched、partial、unknown、conflict 返回匹配状态。PMKB 再计算:
- 当前权限与申请权限的
requested_delta、冗余权限和超出最小权限的部分; - 显式
implies闭包后的 least-privilege 范围; - 互斥、聚合和毒性权限组合的
combo_violations。
最终 effect 只允许向更高风险合并:auto_allow_audit、
openclaw_approval、block。响应会携带 policy_version、missing_features、
risk_score、risk_reasons 和 timing,供 Guard 页面解释和审计;Guard 页面不创建第二个
审批按钮,需确认时只返回 OpenClaw 原生 requireApproval。
chat_messagecommand_execfile_deletefile_writeconfig_modifynetwork_egresschannel_sendskill_rununknown(兜底:来自外部原始 payload 的未识别类型)
allow:直接继续ask:等待审批block:直接阻断escalate:内部 RV 升权信号,最终映射为 OpenClawrequireApprovalrevise:历史兼容字段,不作为当前审批动作或前端按钮 RV 自动机内部的escalate只在公开控制面折叠为ask,不创建第二种审批或重试回合。
proposedpending_approvalapprovedrejectedblockedexecutingexecutedfailedallow(兼容值:auto-allow 路径设置的运行时状态)
rm -rf:默认block- 工作区外删除:默认
ask - 修改关键配置:默认
ask或block - 危险外联:
ask - 高危 skill:至少
ask
- OpenClaw 原生
before_tool_call - 删除类工具调用
- 写入类工具调用
- 配置修改类工具调用
- 命令执行类工具调用
- 网络外联类工具调用
- 目前拦的是会经过 OpenClaw
before_tool_call的工具路径。 - 首次安装本地 Hook 插件后,需要重启一次 gateway 才会生效。
ptrace/eBPF仍然是能力探测与后续扩展方向,不影响当前这条执行前拦截主链。