桃子桃子快讯
返回首页
工具

Sandy:为 AI 编码代理加一层安全沙箱

开源工具 Sandy 为 AI 编码代理提供进程级沙箱隔离与权限控制,支持 Claude Code、Codex、Open…

2026.08.28 · 周五5 分钟阅读

Sandy 是由 kontext-security 开源的一款进程级沙箱工具,专门用于在受限环境中运行 AI 编码代理。它并不替代代理本身的能力,而是为其套上一层默认安全的外壳:在代理启动之前就完成所有权限解析,并在运行期间强制限制代理及其衍生进程对文件系统、网络等资源的访问。官方同时声明,0.1.x 版本仍属实验性,尚未完成独立安全审计。

核心设计:单职责沙箱

Sandy 的定位极为克制——只做「沙箱化进程」这一件事。凭据托管、行为监控、调用审批、审计日志等能力均被剥离,交由独立工具协作完成。这种设计带来两个直接后果:

  • 所有权限在代理启动前完成解析,运行期间代理无法自行扩大访问范围。
  • 一旦沙箱校验或应用失败,代理不会被启动,没有回退到无沙箱执行的选项

工具以普通前台命令方式本地运行,不需要容器、虚拟机、后台服务,也不要求修改代理本身。这意味着它可以叠加在已有的 AI 编码工作流之上,几乎不改变使用习惯。

支持的代理与基本用法

Sandy 通过 brew 安装:brew install kontext-security/tap/sandy,随后可通过 sandy doctor 检查沙箱是否生效。官方目前识别的代理包括:

  • Claude Code:sandy run -- claude
  • Codex:sandy run -- codex --sandbox danger-full-access
  • OpenCode:sandy run -- opencode

由于 Codex 自带的沙箱无法稳定嵌套在 Sandy 之内,danger-full-access 模式让 Sandy 成为唯一的沙箱边界,但不会关闭 Codex 的审批流程。除了代理,Sandy 也可直接用于普通命令,例如 sandy run -- cargo testsandy run -- python script.py

默认情况下,当前项目目录可读写。可通过 --read--read-write 显式追加其他路径,通过 --block-net 一键阻断网络访问。--dry-run 模式则会输出一个带版本号的 JSON 文档,仅展示已解析的沙箱配置而不真正启动命令,便于审阅。

配置文件与权限粒度

Sandy 内置若干「profile」,根据命令名自动匹配已知代理,其余情况使用通用 profile,也可通过 --profile 显式指定(例如 --profile codex -- my-codex-wrapper)。这些 profile 是随 Sandy 版本发布的文档化配置,只能使用 Sandy 支持的权限项,无法写入原始的底层沙箱规则,从而避免了权限被随意放宽。

启动流程上,Sandy 会先解析命令、路径、profile、环境变量与权限,随后启动一个轻量引导进程校验配置、应用沙箱并最终替换为目标命令;原始 Sandy 进程则在沙箱外等待并透传退出状态。目标命令在沙箱生效前不会被启动,它派生的每一个子进程也继承同样的限制。

与第三方安全工具的集成

Sandy 自身不存储凭据、不审查行为、不审批调用、也不保留审计日志,但允许与外部工具协同。官方目前支持的集成包括:

  • Kontext:用于凭据与钩子管理,可通过 sandy integrations setup kontext --agent claude 配置。
  • Numbat:用于行为监控与规则执行,通过 sandy integrations setup numbat --agent codex 配置。

对已知代理 profile,Sandy 会自动保留已验证的 Kontext 钩子和带有所有权标记的 Numbat 注册项;显式传 --kontext--numbat 则把对应集成设为必需,缺失时不影响独立沙箱能力。integrations setup 子命令会修改宿主机的持久配置并运行在沙箱之外,常规的 sandy runsandy doctor 不会安装、升级或修复上述任一组件。

对于 Numbat,其钩子目前与代理运行在同一个沙箱中,注册项、可执行文件与规则目录被设为只读不可写,仅记录输出与序列状态数据库可写;直接 HTTP 投递不被支持,需改用文件输出。Hook 发现遵循 CLAUDE_CONFIG_DIRCODEX_HOMEOPENCODE_CONFIG_DIR 以及 OpenCode 的 XDG_CONFIG_HOME 回退规则,前提是这些变量指向绝对路径。

整体而言,Sandy 体现了一种「最小可信内核 + 周边可插拔」的工程思路:在不替代现有 AI 编码代理的前提下,为其补上企业级落地所必需的一层安全边界。

信源