规则参考
所有受支持的规则命名空间,逐字段说明。本文是 openclaw policy 参考的一部分。
策略规则参考
以下每条规则都是可选的;只有当规则存在时,对应检查才会运行。观察状态为现有的 OpenClaw 配置或工作区元数据。
渠道
| 策略字段 |
观察状态 |
适用场景 |
channels.denyRules[].when.provider |
channels.* 的提供方及启用状态 |
用于拒绝来自某个提供方(如 telegram)的已配置渠道。 |
channels.denyRules[].reason |
发现消息与修复提示上下文 |
用于解释该提供方为何被拒绝。 |
MCP 服务器
| 策略字段 |
观察状态 |
适用场景 |
mcp.servers.allow |
mcp.servers.* id |
用于要求每个已配置的 MCP 服务器都位于允许列表中。 |
mcp.servers.deny |
mcp.servers.* id |
用于拒绝特定的已配置 MCP 服务器 id。 |
模型提供方
| 策略字段 |
观察状态 |
适用场景 |
models.providers.allow |
models.providers.* id 和所选模型引用 |
用于要求已配置的提供方和所选模型引用使用已批准的提供方。 |
models.providers.deny |
models.providers.* id 和所选模型引用 |
用于按提供方 id 拒绝已配置的提供方和所选模型引用。 |
网络
| 策略字段 |
观察状态 |
适用场景 |
network.privateNetwork.allow |
私网 SSRF 逃生通道 |
设置为 false 以要求私网访问保持禁用。 |
消息路由
| 策略字段 |
观察状态 |
适用场景 |
routing.requireBindings |
渠道路由绑定,不包括 ACP 绑定 |
用于要求至少存在一个消息路由绑定。 |
routing.requireConfiguredChannels |
绑定渠道 id 与已配置的 channels.* id |
用于检测过期或拼写错误的绑定渠道 id。 |
routing.probes[].route |
公共 OpenClaw 路由解析器 |
用于描述一条有代表性的入站路由,而无需实际发送消息。 |
routing.probes[].expect.agentId |
解析后的代理 id |
用于要求路由到达被审查的代理。 |
routing.probes[].expect.matchedBy |
解析器匹配种类 |
用于要求对端、账户、渠道或其他被审查绑定具备特定性。 |
探针 id 必须唯一。一条路由支持 channel、可选的 accountId、peer、parentPeer、guildId、teamId 和 memberRoleIds。对端类型包括 direct、group 和 channel。matchedBy 可包含一个或多个运行时匹配种类,包括 binding.peer、binding.account、binding.channel 或 default。
路由检查仅为一致性检查。它们不会改变启动、消息投递、绑定优先级或回退行为。发现结果需要操作员审查,因为自动更改绑定可能会重定向私信。
入站与渠道访问
| 策略字段 |
观察状态 |
适用场景 |
ingress.session.requireDmScope |
session.dmScope |
用于要求使用被审查的私信隔离范围。 |
ingress.channels.allowDmPolicies |
channels.*.dmPolicy 和旧版渠道 DM 策略字段 |
用于仅允许被审查的私信渠道策略。 |
ingress.channels.denyOpenGroups |
渠道、账户和群组的入站策略 |
用于拒绝已配置渠道和账户的开放群组入站。 |
ingress.channels.requireMentionInGroups |
渠道、账户、群组、服务器及嵌套提及门控配置 |
用于在群组入站为开放或提及门控时要求启用提及门控。 |
网关
| 策略字段 |
观察状态 |
适用场景 |
gateway.exposure.allowNonLoopbackBind |
gateway.bind |
设置为 false 以要求网关绑定到回环地址。 |
gateway.exposure.allowTailscaleFunnel |
Tailscale serve/funnel 网关状态 |
设置为 false 以拒绝 Tailscale Funnel 暴露。 |
gateway.auth.requireAuth |
gateway.auth.mode |
设为 true 以拒绝禁用 Gateway 认证的情况。 |
gateway.auth.requireExplicitRateLimit |
gateway.auth.rateLimit |
设为 true 以要求显式配置认证速率限制。 |
gateway.controlUi.allowInsecure |
设备身份不变量与来源回退 |
设为 false 以要求设备身份,并拒绝基于 Host 头的来源回退。 |
gateway.remote.allow |
远程 Gateway 模式/配置 |
设为 false 以拒绝远程 Gateway 模式。 |
gateway.http.denyEndpoints |
Gateway HTTP API 端点 |
拒绝诸如 chatCompletions 或 responses 之类的端点 ID。 |
gateway.http.requireUrlAllowlists |
Gateway HTTP URL 获取输入 |
设为 true 以要求 URL 获取输入配置 URL 白名单。 |
gateway.nodes.denyCommands |
gateway.nodes.commands.deny |
要求 OpenClaw 配置中明确拒绝诸如 system.run 之类的节点命令 ID。 |
gateway.nodes.denyCommands 是一个精确、区分大小写的策略拒绝超集规则。
当策略必须证明特权节点命令已被 OpenClaw 配置明确拒绝时使用。若某个部署有意允许特权节点命令,
应在审查后更新 policy.jsonc,而不是仅依赖 gateway.nodes.commands.allow。
Agent 工作区
| 策略字段 |
观测状态 |
适用场景 |
agents.workspace.allowedAccess |
agents.defaults.sandbox.workspaceAccess 和 agents.entries.*.sandbox.workspaceAccess |
仅允许诸如 none 或 ro 之类的沙箱工作区访问值。 |
agents.workspace.denyTools |
全局及按 Agent 的工具拒绝配置 |
要求拒绝变更工具(exec、process、write、edit、apply_patch)。 |
沙箱安全态势
| 策略字段 |
观测状态 |
适用场景 |
sandbox.requireMode |
agents.defaults.sandbox.mode 及每个 Agent 的模式 |
仅允许经审查的沙箱模式,如 all 或 non-main。 |
sandbox.allowBackends |
agents.defaults.sandbox.backend 及每个 Agent 的后端 |
仅允许经审查的沙箱后端,如 docker 或 podman。 |
sandbox.containers.denyHostNetwork |
容器后端的沙箱/浏览器网络模式 |
拒绝主机网络模式。 |
sandbox.containers.denyContainerNamespaceJoin |
容器后端的沙箱/浏览器网络模式 |
拒绝加入另一个容器的网络命名空间。 |
sandbox.containers.requireReadOnlyMounts |
容器后端的沙箱/浏览器挂载模式 |
要求挂载为只读。 |
sandbox.containers.denyContainerRuntimeSocketMounts |
容器后端的沙箱/浏览器挂载目标 |
拒绝容器运行时套接字挂载。 |
sandbox.containers.denyUnconfinedProfiles |
容器安全配置文件态势 |
拒绝无限制(unconfined)的容器安全配置文件。 |
sandbox.browser.requireCdpSourceRange |
沙箱浏览器的 CDP 来源范围 |
要求浏览器 CDP 暴露声明来源范围。 |
策略将缺失的 sandbox.mode 视为隐式默认值 off,因此 sandbox.requireMode 会将新建或未配置的沙箱报告为不在 ["all"] 之类的白名单内。
数据处理
| 策略字段 |
观测状态 |
适用场景 |
dataHandling.sensitiveLogging.requireRedaction |
运行时不变量 oc://openclaw.invariant/logging/redaction |
设为 true 以记录该要求;OpenClaw 始终满足该要求。 |
dataHandling.telemetry.denyContentCapture |
diagnostics.otel.captureContent |
设为 true 以拒绝遥测内容捕获。 |
dataHandling.retention.requireSessionMaintenance |
session.maintenance.mode |
设为 true 以要求有效的会话维护模式为 enforce。 |
dataHandling.memory.denySessionTranscriptIndexing |
memory.search.experimental.sessionMemory、memory.search.rememberAcrossConversations 以及按代理的覆盖配置 |
设置为 true 以拒绝将会话记录索引到内存。 |
机密
| 策略字段 |
观测状态 |
适用场景 |
secrets.requireManagedProviders |
配置 SecretRefs 和 secrets.providers.* 声明 |
设置为 true 以要求 SecretRefs 指向已声明的提供程序。 |
secrets.denySources |
机密提供程序来源与 SecretRef 来源 |
拒绝诸如 exec、file 或其他已配置来源名称之类的来源。 |
secrets.allowInsecureProviders |
不安全的机密提供程序姿态标志 |
设置为 false 以拒绝选择不安全姿态的提供程序。 |
执行审批
执行审批检查默认读取 ~/.openclaw/state/openclaw.sqlite 中的运行时 exec_approvals_config 单例行;当设置了 OPENCLAW_STATE_DIR 时,则读取 $OPENCLAW_STATE_DIR/state 下的同一数据库。检查结果使用稳定的 oc://exec-approvals.json/... URI 方案,该方案寻址存储在该行中的权威 JSON 文档内的路径。
execApprovals.defaults.* 或 execApprovals.agents.* 下的姿态规则要求可读的工件证据;缺失或无效的工件会报告为不可观测证据,而不是尽力而为地通过。一旦可读,省略的字段将继承运行时默认值:缺失的 defaults.security 为 full,而缺失的代理安全性将继承该默认值。证据包括 defaults、agents.*、agents.*.allowlist[].pattern、可选的 argPattern、有效的 autoAllowSkills 姿态以及条目来源——绝不包括套接字路径/令牌、commandText、lastUsedCommand、解析后的路径或时间戳。
| 策略字段 |
观测状态 |
适用场景 |
execApprovals.requireFile |
当前有效的运行时 exec_approvals_config 行 |
设置为 true 以要求审批文档存在且可解析。 |
execApprovals.defaults.allowSecurity |
defaults.security,默认为 full |
仅允许已获批准的默认审批安全模式。 |
execApprovals.agents.allowSecurity |
agents.*.security,继承默认值 |
仅允许已获批准的按代理有效审批安全模式。 |
execApprovals.agents.allowAutoAllowSkills |
defaults.autoAllowSkills 和 agents.*.autoAllowSkills,继承运行时默认值 |
设置为 false 以要求严格的手动允许列表,且不进行隐式的技能 CLI 审批。 |
execApprovals.agents.allowlist.expected |
聚合的 agents.*.allowlist[] 模式及可选 argPattern 条目 |
要求审批允许列表与已审查的模式集匹配。 |
示例:要求存在审批工件,拒绝宽松的默认值,并仅允许所选代理使用已审查的执行审批姿态。
{
"execApprovals": {
"requireFile": true,
"defaults": {
// Security modes: "deny", "allowlist", or "full".
// This default permits only the locked-down deny posture.
"allowSecurity": ["deny"],
},
},
"scopes": {
"restricted-shell": {
"agentIds": ["family-agent", "groups-agent"],
"execApprovals": {
"agents": {
// Selected agents may use reviewed allowlist posture, but not "full".
"allowSecurity": ["allowlist"],
// false means skill CLIs must appear in the reviewed allowlist instead of
// being implicitly approved by autoAllowSkills.
"allowAutoAllowSkills": false,
"allowlist": {
"expected": [
// Simple entry: exact reviewed executable pattern with no argPattern.
"travel-hub",
// Constrained entry: pattern plus reviewed argument regex.
{ "pattern": "calendar-cli", "argPattern": "^sync\\b" },
"/bin/date",
],
},
},
},
},
},
}
认证配置文件
| 策略字段 |
观测状态 |
适用场景 |
auth.profiles.requireMetadata |
auth.profiles.* 的 provider 与 mode 元数据 |
要求配置的认证配置文件包含诸如 provider 和 mode 之类的元数据键。 |
auth.profiles.allowModes |
auth.profiles.*.mode |
仅允许受支持的认证配置文件模式,例如 api_key、aws-sdk、oauth 或 token。 |
| 策略字段 |
观察到的状态 |
适用场景 |
tools.requireMetadata |
受管控的 AGENTS.md 工具声明 |
要求受管控的工具声明诸如 risk、sensitivity 或 owner 之类的元数据键。 |
工具姿态
| 策略字段 |
观察到的状态 |
适用场景 |
tools.profiles.allow |
tools.profile 和 agents.entries.*.tools.profile |
仅允许诸如 minimal、messaging 或 coding 之类的工具 profile ID。 |
tools.fs.requireWorkspaceOnly |
tools.fs.workspaceOnly 及各 agent 的 tools.fs 覆盖配置 |
设置为 true 以要求仅限工作区的文件系统工具姿态。 |
tools.exec.allowSecurity |
tools.exec.security 及各 agent 的 exec 安全配置 |
仅允许诸如 deny 或 allowlist 之类的 exec 安全模式。 |
tools.exec.requireAsk |
tools.exec.ask 及各 agent 的 exec 询问模式 |
要求采用诸如 always 之类的审批姿态。 |
tools.exec.allowHosts |
tools.exec.host 及各 agent 的 exec 主机路由 |
仅允许诸如 sandbox 之类的 exec 主机路由模式。 |
tools.elevated.allow |
tools.elevated.enabled 及各 agent 的提权姿态 |
设置为 false 以要求提权工具模式保持禁用。 |
tools.alsoAllow.expected |
tools.alsoAllow 及各 agent 的 tools.alsoAllow |
要求精确匹配 alsoAllow 条目,并报告缺失或意外的附加工具授权。 |
tools.denyTools |
tools.deny 及 agents.entries.*.tools.deny |
要求配置的工具拒绝列表包含诸如 group:runtime 和 group:fs 之类的工具 ID 或组。 |
工具需求与核心工具策略使用相同的组成员关系、别名和 * 匹配规则。例如,group:fs 包含 ls,group:runtime 包含 secrets,cron 解析为 automations,图像理解工具是 view_image。所需的拒绝列表必须覆盖所需组中的每个工具;空列表不覆盖任何工具,且拒绝 write 不会拒绝 apply_patch。