概述

Exec 审批高级主题,涵盖 safeBins 快速路径、解释器/运行时绑定机制,以及将审批提示转发到聊天频道(Slack/Discord/Telegram 等)的原生审批客户端配置。

核心功能

Safe Bins(stdin-only 快速路径)

tools.exec.safeBins 定义一组仅接受 stdin 输入的二进制白名单,在 allowlist 模式下无需显式白名单条目即可运行。

默认 safe bins:cut、uniq、head、tail、tr、wc

关键限制:

  • 拒绝位置文件参数和路径类 token,只能操作输入流
  • 不得添加解释器(python3、node、bash 等)
  • 自定义 safe bin 必须在 tools.exec.safeBinProfiles 中定义显式 profile
  • 可信目录默认仅 /bin、/usr/bin,其他路径需加入 safeBinTrustedDirs

Safe Bins vs 白名单对比:

维度safeBins白名单
目标窄 stdin 过滤器自动允许显式信任特定可执行文件
匹配可执行名 + safe-bin argv 策略路径 glob 或裸命令名 glob
典型用例head、tail、tr、wcjq、python3、自定义 CLI

审批转发到聊天频道

{
  approvals: {
    exec: {
      enabled: true,
      mode: "session",
      targets: [
        { channel: "slack", to: "U12345678" },
        { channel: "telegram", to: "123456789" }
      ]
    }
  }
}

在聊天中回复:

/approve <id> allow-once
/approve <id> allow-always
/approve <id> deny

原生审批客户端

支持 Discord、Slack、Telegram、Matrix 等频道作为原生审批客户端,提供 DM 路由、交互按钮等 UX。审批挂起 30 分钟后自动过期。

配置/权限

自定义 safe bin profile 示例:

{
  tools: {
    exec: {
      safeBins: ["myfilter"],
      safeBinProfiles: {
        myfilter: {
          minPositional: 0,
          maxPositional: 0,
          allowedValueFlags: ["-n", "--limit"],
          deniedFlags: ["-f", "--file"]
        }
      }
    }
  }
}

macOS IPC 安全:Unix socket 模式 0600,token 存储在 exec-approvals.json,同 UID 对等检查,challenge/response + 短 TTL。

相关页面