沙盒 vs 工具策略 vs 提权

OpenClaw 有三个相关但不同的控制:

  1. 沙盒agents.defaults.sandbox.* / agents.list[].sandbox.*)决?工具在哪里运?(Docker vs 主机)?
  2. 工具策略tools.*tools.sandbox.tools.*agents.list[].tools.*)决?哪些工具可用/允许*?
  3. 提权tools.elevated.*agents.list[].tools.elevated.*)是一?仅执行的逃生?,当您被沙盒化时在主机上运行?

快速调?

使用检查器查看 OpenClaw 实际在做什么:

openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json

它打印:

  • 有效的沙盒模?范围/工作区访?
  • 会话当前是否被沙盒化(主 vs 非主?
  • 有效的沙盒工具允?拒绝(以及它来自代理/全局/默认?
  • 提权门和修复密钥路径

沙盒:工具在哪里运行

沙盒?agents.defaults.sandbox.mode 控制?

  • "off":一切在主机上运行?
  • "non-main":仅非主会话被沙盒化(群?渠道的常?惊喜”)?
  • "all":一切都被沙盒化?

请参阅沙盒以了解完整矩阵(范围、工作区挂载、镜像)?

绑定挂载(安全快速检查)

  • docker.binds **穿?*沙盒文件系统:无论您挂载什么,在容器内都以其设置的模式可见(:ro ?:rw)?
  • 默认如果您省略模式则是读写;首?:ro 用于源代?密钥?
  • scope: "shared" 忽略每个代理绑定(仅全局绑定适用)?
  • 绑定 /var/run/docker.sock 有效地将主机控制交给沙盒;仅在有意时执行此操作?
  • 工作区访问(workspaceAccess: "ro"/"rw")独立于绑定模式?

工具策略:哪些工具存?可调?

两层很重要:

  • 工具配置tools.profile ?agents.list[].tools.profile(基础白名单)
  • **提供者工具配?*:tools.byProvider[provider].profile ?agents.list[].tools.byProvider[provider].profile
  • **全局/每代理工具策?*:tools.allow/tools.deny ?agents.list[].tools.allow/agents.list[].tools.deny
  • **提供者工具策?*:tools.byProvider[provider].allow/deny ?agents.list[].tools.byProvider[provider].allow/deny
  • 沙盒工具策略(仅在沙盒化时适用):tools.sandbox.tools.allow/tools.sandbox.tools.deny ?agents.list[].tools.sandbox.tools.*

经验法则?

  • deny 始终获胜?
  • 如果 allow 非空,其他一切都被视为被阻止?
  • 工具策略是硬性停止:/exec 无法覆盖被拒绝的 exec 工具?
  • /exec 仅更改授权发送者的会话默认值;它不授予工具访问权限? 提供者工具密钥接?provider(例?google-antigravity)或 provider/model(例?openai/gpt-5.2)?

工具组(简写)

工具策略(全局、代理、沙盒)支持扩展为多个工具的 group:* 条目?

{
  tools: {
    sandbox: {
      tools: {
        allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
      },
    },
  },
}

可用组:

  • group:runtimeexecbashprocess
  • group:fsreadwriteeditapply_patch
  • group:sessionssessions_listsessions_historysessions_sendsessions_spawnsession_status
  • group:memorymemory_searchmemory_get
  • group:uibrowsercanvas
  • group:automationcrongateway
  • group:messagingmessage
  • group:nodesnodes
  • group:openclaw:所有内?OpenClaw 工具(排除提供者插件)

提权:仅执行?在主机上运行”

提权**不授予额外工?*;它仅影?exec?

  • 如果您被沙盒化,/elevated on(或 elevated: true ?exec)在主机上运行(可能仍需批准)?
  • 使用 /elevated full 跳过该会话的执行批准?
  • 如果您已经在直接运行,提权实际上?no-op(仍受门控制)?
  • 提权不是技能作用域,不覆盖工具 allow/deny?
  • /exec 与提权分开。它仅调整授权发送者的每会话执行默认值?

门:

  • 启用:tools.elevated.enabled(以及可?agents.list[].tools.elevated.enabled?
  • 发送者白名单:tools.elevated.allowFrom.<provider>(以及可?agents.list[].tools.elevated.allowFrom.<provider>?

请参阅提权模式?

常见”沙盒 jail”修复

”工具 X 被沙盒工具策略阻?

修复密钥(选择其一):

  • 禁用沙盒:agents.defaults.sandbox.mode=off(或每代?agents.list[].sandbox.mode=off?
  • 在沙盒内允许该工具:
    • ?tools.sandbox.tools.deny(或每代?agents.list[].tools.sandbox.tools.deny)中移除?
    • 或添加到 tools.sandbox.tools.allow(或每代理允许)

“我以为这?main,为什么被沙盒化了?

?"non-main" 模式下,群组/渠道密钥不是 main。使?main 会话密钥(由 sandbox explain 显示)或将模式切换为 "off"?