Appearance
沙箱系统限制 AI 代理的文件操作和命令执行权限,通过平台适配的隔离机制保护用户系统安全。
为什么需要 Sandbox
AI 代理具有执行任意命令和修改文件的能力,这带来了安全风险——代理可能生成意外或恶意的命令。沙箱系统通过限制代理的文件系统访问和网络访问范围,确保代理只能操作 workspace 内的文件,无法访问敏感系统文件或执行危险操作。
核心原理
- 平台适配:
SandboxManager根据平台自动选择 Seatbelt(macOS)、Landlock+Bwrap(Linux)或 Restricted Token(Windows) - 命令包装:
SandboxManager::transform()将原始命令包装为在沙箱中执行的SandboxExecRequest - 双层防御:
ExecPolicy(策略层)在执行前评估命令权限,平台沙箱(隔离层)在执行时强制限制 - 权限扩展:通过
additional_permissions支持用户审批后临时扩展访问范围
在源码中的实现
codex-rs/sandboxing/src/manager.rs—SandboxManager、SandboxType、SandboxCommand、SandboxExecRequestcodex-rs/sandboxing/src/seatbelt/— macOS Seatbelt 实现codex-rs/sandboxing/src/bwrap/— Linux Bubblewrap 实现codex-rs/linux-sandbox/src/lib.rs— Linux 沙箱辅助二进制codex-rs/execpolicy/src/policy.rs—Policy、Decision、NetworkRule