跳转至

规则参考

所有受支持的规则命名空间,逐字段说明。本文是 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。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw