Skip to content

[Feature] 沙箱模式:命令执行方式选择器 + OS 级沙箱隔离 #506

Description

@coder-hhx

背景

LiveAgent 的 Agent 模式会直接在本机执行模型驱动的 Bash 命令与常驻进程。当前的安全手段只有工具审批策略(allow/ask/deny),缺少真正的执行隔离:模型一旦拿到 Bash 放行,就可以写任意路径、读 ~/.ssh 等敏感目录、任意联网。

目标

让用户在对话框内直接切换「命令执行方式」,提供从"逐条审批"到"OS 级沙箱隔离"的分档防护,开箱即用、无需额外部署:

  • 逐条审批 (ask):非只读工具每次执行前请求批准
  • 自动执行 (auto,默认):按现有工具权限策略执行,零回归
  • 沙箱 (sandbox):Bash / ManagedProcess 在 OS 原生沙箱内执行——写入仅限项目文件夹与临时目录,/.ssh、/.aws、/.gnupg、/.liveagent 等敏感目录不可读
  • 沙箱·断网 (sandboxOffline):在沙箱基础上禁止命令联网

技术方案

  • macOS:/usr/bin/sandbox-exec + 动态 Seatbelt profile
  • Linux:bubblewrap(bwrap)+ namespace 隔离,可选 --unshare-net
  • Windows:第一期暂不支持(UI 禁用并提示),后续按受限令牌 + Job Object + WFP 路线实现
  • 拦截点在 Rust 侧 spawn 漏斗(spawn_platform_shell_command),fail-closed:沙箱不可用时报错,绝不静默降级为直跑
  • 用户显式配置的 Hook / Cron 脚本不套沙箱

后续阶段(不在首期)

  • Windows 受限令牌后端
  • PTY 终端工具纳入沙箱
  • 内嵌 CubeSandbox(Linux/WSL2,microVM 级隔离 + 每 turn 快照回滚)

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions