背景
当前仓库已经引入 Permission Gateway / Workspace Sandbox / ToolManager 主链路,但 bash 工具仍主要通过通用工具执行路径运行,缺少独立的“安全执行器”收敛层。
在 issue #98 的整体规划中,bash 是高风险工具(命令执行 + cwd 切换 + 输出回流),需要单独接入安全执行器,明确执行前校验、执行期约束和错误输出标准。
Refs #98
目标
- 为
bash 工具接入统一安全执行器入口,避免散落式校验。
- 把
PermissionEngine 决策、workspace 约束、执行超时、输出截断在执行器层统一落地。
- 保持主链路边界:
runtime -> ToolManager -> Security Executor -> bash tool。
范围
In Scope
- 设计并落地
bash 安全执行器接口(可被 ToolManager 调用)。
- 执行前校验:
- 命令非空校验
- workdir 解析与 sandbox 边界校验
- 权限决策结果映射(allow/ask/deny)
- 执行期控制:
- 超时控制(context + timeout)
- 输出大小限制与截断标记
- 统一错误格式(供模型稳定消费)
- 为后续 MCP/其他执行型工具复用预留抽象。
Out of Scope
- 不在本任务引入容器级隔离(如 nsjail/firecracker)。
- 不在本任务实现复杂命令白名单 DSL。
验收标准
建议实现步骤
- 在
internal/tools 或 internal/security 新增 bash executor 抽象。
- ToolManager 调用执行器,而非在
bash 内部自行拼装全部防护逻辑。
- 统一
ToolResult 中的错误 reason/details/metadata 字段。
- 增加执行器单测与
bash 集成测试。
风险提示
- 执行器抽象如果过重,可能影响后续工具接入成本;建议保持最小接口、先覆盖
bash 必需能力。
- 需确保不破坏已有 slash 命令和 runtime tool-call 主链路行为。
背景
当前仓库已经引入 Permission Gateway / Workspace Sandbox / ToolManager 主链路,但
bash工具仍主要通过通用工具执行路径运行,缺少独立的“安全执行器”收敛层。在 issue #98 的整体规划中,
bash是高风险工具(命令执行 + cwd 切换 + 输出回流),需要单独接入安全执行器,明确执行前校验、执行期约束和错误输出标准。Refs #98
目标
bash工具接入统一安全执行器入口,避免散落式校验。PermissionEngine决策、workspace 约束、执行超时、输出截断在执行器层统一落地。runtime -> ToolManager -> Security Executor -> bash tool。范围
In Scope
bash安全执行器接口(可被 ToolManager 调用)。Out of Scope
验收标准
bash不再直接以“裸 exec + 分散校验”方式执行,改为通过安全执行器。go test ./...通过,且不拉低现有覆盖率门槛。建议实现步骤
internal/tools或internal/security新增bash executor抽象。bash内部自行拼装全部防护逻辑。ToolResult中的错误 reason/details/metadata 字段。bash集成测试。风险提示
bash必需能力。