概述
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、wc | jq、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。
相关页面
- tool-exec-approvals — 核心审批策略与白名单
- tool-exec — exec 工具本体
- tool-elevated — Elevated 模式