"世界上有一种门禁系统,它不给每个人相同的钥匙。在 Agent 的世界里,Tool Policy 就是那把区分身份的钥匙环。"
Tool Policy(Per-Sender Tool Policy) 是 OpenClaw v2026.5.12 版本引入的关键安全机制。它允许 Operator 根据发件人身份(sender identity),为不同来源的请求配置工具调用策略,实现工具层面的最小权限原则(Least Privilege)。
说白了:不是所有找你办事的人,都能拿到你家保险柜的钥匙。Tool Policy 就是那把分人分的"钥匙分发器"。
在传统 Agent 架构中,工具要么全开要么全关——谁来了都能调用关键工具。但在多用户、多 Agent、多渠道的场景下,这种"一刀切"存在严重安全风险:
Per-Sender Tool Policy 完美解决了这些问题。
# 在 openclaw.yaml 中配置 Tool Policy
agents:
defaults:
tools:
# 默认:所有渠道可用安全工具
policy:
allow:
- "web_fetch"
- "web_search"
- "read"
deny: []
# 特定于 channel 的策略
channel:
discord:
tools:
policy:
# Discord 来的用户不能调用 shell 命令
deny:
- "exec"
- "write"
allow:
- "web_fetch"
- "read"
- "web_search"
feishu:
tools:
policy:
# 飞书来的用户可以调用更多工具
allow:
- "web_fetch"
- "exec"
- "write"
- "read"
# 按 Agent 分组配置
group:
devops:
tools:
policy:
allow:
- "exec"
- "write"
- "read"
deny:
- "browser"
# v2026.5.12 新特性:按发件人身份配置
agents:
defaults:
tools:
# 全局默认策略
policy:
allow:
- "web_fetch"
- "web_search"
- "read"
- "message"
# Per-sender 覆盖
senderPolicies:
# 管理员身份
admin@miaoquai.com:
allow:
- "exec"
- "write"
- "delete"
- "browser"
- "web_fetch"
# 普通用户 - 飞书
"chat:feishu:oc_xxx":
allow:
- "web_fetch"
- "read"
- "web_search"
deny:
- "exec"
- "write"
# 公开频道
"channel:discord:general":
allow:
- "web_fetch"
- "web_search"
deny:
- "exec"
- "write"
- "read"
- "message"
- "browser"
OpenClaw 的 Tool Policy 遵循三层匹配机制:
匹配算法采用 Deny-First(拒绝优先)原则:只要任意一层拒绝某工具,该工具就不可用。允许则是"并集"——所有层的允许列表合并生效。
// 策略匹配的简化逻辑
function canAccessTool(sender, toolName, policies) {
// 1. 检查 per-sender deny
if (policies.sender[sender]?.deny?.includes(toolName)) return false
// 2. 检查 channel deny
if (policies.channel[sender.channel]?.deny?.includes(toolName)) return false
// 3. 检查 global deny
if (policies.global.deny?.includes(toolName)) return false
// 4. 检查任何一层 allow
if (policies.sender[sender]?.allow?.includes(toolName)) return true
if (policies.channel[sender.channel]?.allow?.includes(toolName)) return true
if (policies.global.allow?.includes(toolName)) return true
// 5. 默认拒绝(Zero-Trust)
return false
}
| 场景 | 策略 | 效果 |
|---|---|---|
| 公开 Discord 频道 | 仅允许 web_fetch + web_search | 防止信息泄露和恶意操作 |
| 内部飞书群 | 允许 exec + write + read | 团队可执行脚本和修改文件 |
| 个人私聊 | 完全开放所有工具 | Operator 拥有全部控制权 |
| GitHub Webhook | 仅允许 web_fetch + read | 防止自动化操作被滥用 |
Tool Policy 就像你家里的钥匙盘——客厅钥匙给客人,书房钥匙给家人,保险柜钥匙只给自己。在 Agent 分布式协作越来越复杂的今天,没个权限门禁系统,就像把大门钥匙挂在门外,谁都能来你家搬东西。
Per-Sender 策略的引入,把 OpenClaw 的安全体系从"小区大门"升级到了"每家每户独立门禁"的级别。对于运营多用户 Agent 的同学来说,这玩意儿应该列入必配清单。
📅 更新于 2026-05-18 · 妙趣AI · 🦞