教程

OpenClaw Exec 工具完全指南:Shell 命令执行、沙箱安全与审批机制

OpenClaw Exec 工具完整教程:三种执行位置(sandbox/gateway/node)、前台与后台执行模式、PTY 终端支持、PATH 处理规则、三种安全模式(deny/allowlist/full)、Allowlist 管理、Safe Bins 配置、Telegram 审批工作流,以及 apply_patch 实验功能。

2026/3/114分钟 阅读ClaudeEagle

Exec 工具让 AI Agent 能够在工作区执行 Shell 命令,支持前台/后台运行、PTY 终端、远程节点执行,并内置完整的安全审批机制。

核心参数

参数说明默认值
command要执行的命令(必填)—
workdir工作目录cwd
env环境变量覆盖(键值对)—
yieldMs自动转后台的等待时间(毫秒)10000
background立即后台运行false
timeout超时秒数(超时后杀进程)1800
pty在伪终端(PTY)中运行false
host执行位置(sandbox/gateway/node)sandbox
security安全模式(deny/allowlist/full)—
ask审批提示模式(off/on-miss/always)on-miss
node节点 ID/名称(host=node 时)—
elevated请求提升权限false

三种执行位置

host=sandbox(默认)

在 Docker 沙箱中执行,与宿主机完全隔离:

json
{
  "tool": "exec",
  "command": "npm run build",
  "host": "sandbox"
}

⚠️ 沙箱默认关闭。未启用沙箱时,host=sandbox 不会静默降级到 gateway,而是直接报错。请明确启用沙箱或改用 host=gateway。

host=gateway

在 Gateway 宿主机上执行,受审批机制管控:

bash
/exec host=gateway security=allowlist ask=on-miss

host=node

在已配对的远程节点上执行:

bash
/exec host=node security=allowlist node=mac-1

前台与后台执行

前台执行(等待完成):

json
{"tool": "exec", "command": "ls -la"}

后台执行(立即返回 session ID):

json
{"tool": "exec", "command": "npm run build", "yieldMs": 1000}

轮询后台进程:

json
{"tool": "process", "action": "poll", "sessionId": "<id>"}

发送按键(tmux 风格):

json
{"tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["Enter"]}
{"tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"]}

粘贴文本(带括号保护):

json
{"tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n"}

PTY 模式

需要终端 UI 的命令(如 vim、coding agents)用 pty: true:

json
{"tool": "exec", "command": "htop", "pty": true}

PATH 处理规则

  • host=gateway:合并你的 login-shell PATH,但拒绝 env.PATH 覆盖
  • host=sandbox:通过 sh -lc 运行,支持 tools.exec.pathPrepend 配置
  • host=node:同样拒绝 env.PATH 覆盖,需要通过 systemd/launchd 环境配置

预置额外 PATH(适用于 gateway 和 sandbox):

json
{
  "tools": {
    "exec": {
      "pathPrepend": ["~/bin", "/opt/oss/bin"]
    }
  }
}

安全与审批机制

三种安全模式

模式说明
deny拒绝所有执行
allowlist仅允许明确许可的二进制路径
full允许所有命令(高危!)

Allowlist 管理

bash
# 添加到 allowlist
openclaw approvals allowlist add "/usr/bin/git"
openclaw approvals allowlist add --node mac-1 "/usr/bin/uname"

# 查看当前 allowlist
openclaw approvals allowlist list

Safe Bins(stdin 安全过滤器)

Safe Bins 是专门为 stdin 流过滤工具设计的白名单(如 grep、jq、awk):

json
{
  "tools": {
    "exec": {
      "safeBins": ["grep", "jq", "awk", "sed"],
      "safeBinTrustedDirs": ["/usr/local/bin"]
    }
  }
}

⚠️ 不要把解释器(python3、node、bash)加入 safeBins,这会绕过安全检查。

Telegram 审批工作流

启用 Telegram 作为审批客户端:

json
{
  "channels": {
    "telegram": {
      "execApprovals": {
        "enabled": true,
        "approvers": ["123456789"],
        "target": "dm"
      }
    }
  }
}

审批流程:

  1. Agent 执行需要审批的命令 → 状态变为 approval-pending
  2. 通过 Telegram 收到审批请求
  3. 点击批准/拒绝
  4. Gateway 发送 Exec finished / Exec denied 系统事件

会话级覆盖(/exec)

临时修改当前 Session 的执行配置:

bash
# 切换到 gateway 执行,allowlist 模式
/exec host=gateway security=allowlist ask=on-miss node=mac-1

# 查看当前配置
/exec

注意:/exec 只对授权发送者有效,只修改 session 状态,不写入配置文件。

apply_patch(实验性)

apply_patch 是 exec 的子工具,用于结构化多文件编辑(仅限 OpenAI/Codex 模型):

json
{
  "tools": {
    "exec": {
      "applyPatch": {
        "enabled": true,
        "workspaceOnly": true,
        "allowModels": ["gpt-5.2"]
      }
    }
  }
}

完整配置示例

json
{
  "tools": {
    "exec": {
      "host": "gateway",
      "security": "allowlist",
      "ask": "on-miss",
      "node": "mac-1",
      "pathPrepend": ["~/bin"],
      "notifyOnExit": true,
      "approvalRunningNoticeMs": 10000,
      "safeBins": ["grep", "jq"],
      "safeBinTrustedDirs": ["/usr/local/bin"]
    }
  }
}

原文:Exec Tool - OpenClaw | 来源:OpenClaw 官方文档

相关文章推荐

教程OpenClaw Elevated Mode 完全指南:AI 执行高权限命令的安全授权机制(2026)OpenClaw Elevated Mode(提权模式)完整指南:Elevated Mode 的设计理念(默认最小权限/高危操作需二次确认)、触发条件(哪些操作会进入 elevated 状态)、授权方式(/approve 命令批准单次/永久允许/拒绝)、在配置中预设允许的高权限命令(allowlist 策略)、Elevated Mode 与 Docker 沙箱的协同安全模型、在生产服务器上的推荐配置,以及常见使用场景(系统级命令/sudo/敏感文件操作)的安全实践。2026/4/2教程Claude Code v2.1.236/237:新增 Concise 简洁输出风格,沙箱通配符拒绝规则加固详解Claude Code v2.1.236/v2.1.237更新:新增内置Concise简洁输出风格跳过过程叙述、ANTHROPIC_DEFAULT_MODEL环境变量、跨会话notify_when_idle空闲通知、macOS沙箱通配符拒绝规则安全加固、LLM网关prompt缓存失效修复等实用改进。2026/8/20教程WorkBuddy 直连微信:发条消息就能远程指挥电脑干活,兼容 OpenClaw 技能体系腾讯 WorkBuddy 微信直连功能详解:配置微信客服号即可远程指挥电脑执行任务,支持企微断网自动重连与定时任务自动化,技能包完全兼容OpenClaw体系可无缝迁移,附向内隔离向外防御安全设计解读。2026/8/15教程OpenClaw Sessions 磁盘维护完全指南:sessions.json 自动清理与 openclaw sessions cleanup 命令详解 OpenClaw session.maintenance 磁盘维护配置:warn/enforce 双模式、清理执行顺序、maxDiskBytes/highWaterBytes 磁盘预算控制,以及 openclaw sessions cleanup 命令的 dry-run 安全用法。2026/8/13教程OpenClaw SecretRef 完全教程:让 API Key 不用再以明文躺在配置文件里详解 OpenClaw SecretRef 密钥引用机制:内存快照运行时模型、active/inactive Surface 判定逻辑、env/file/exec 三种引用来源写法,以及生产环境凭据管理的实战建议。2026/8/12教程OpenClaw Session Pruning 与 Compaction 的区别:谁在悄悄给你的会话上下文瘦身详解 OpenClaw Session Pruning 会话修剪机制:如何在每次 LLM 调用前修剪旧的工具调用结果以降低成本,与 Compaction 压缩机制的区别与配合方式,附智能默认值和手动配置方法。2026/8/12