沙箱平台与提供方
比较各平台的可用隔离方式和启用前提,避免依赖自动检测。
沙箱的文件读取、写入与网络边界依提供方和 profile 而变。先选平台支持的方式,再检查具体配置,不能把“已沙箱化”理解成统一权限。
macOS Seatbelt
Seatbelt 使用系统 sandbox-exec。默认 profile 为 permissive-open,约束写入而允许广泛读取和网络;用 SEATBELT_PROFILE 选择其他 profile。
| Profile | 官方描述 |
|---|---|
permissive-open | 写限制,允许网络 |
permissive-proxied | 写限制,网络经代理 |
restrictive-open | 更严格限制,允许网络 |
restrictive-proxied | 更严格限制,网络经代理 |
strict-open | 读写限制,允许网络 |
strict-proxied | 读写限制,网络经代理 |
代理 profile 仍需要可用代理配置;名称本身不证明网络连接可用。
Docker 与 Podman
两者提供跨平台容器沙箱,要求引擎已安装并运行。默认镜像为 ghcr.io/google/gemini-cli:latest;工作区挂载到容器内相同绝对路径,详细配置见容器与挂载。
Linux gVisor
runsc 需要 Linux、Docker 及已配置的 gVisor/runsc runtime。它通过用户空间内核处理系统调用。CLI 不自动检测 runsc,需明确设置 GEMINI_SANDBOX=runsc 或 tools.sandbox: "runsc";底层使用 Docker 的 runsc runtime。
Linux LXC/LXD
此方式仍为 experimental,适合需要完整 Linux 系统服务的工具。容器必须先创建并运行,CLI 不会自动创建:
lxd init --auto
lxc launch ubuntu:24.04 gemini-sandbox
export GEMINI_SANDBOX=lxc
gemini -p "build the project"这些是设置示例,会初始化 LXD 和创建容器。GEMINI_SANDBOX_IMAGE 在此模式用来指定已有容器名,不能按 Docker 镜像标签理解。工作区仍按相同绝对路径绑定,并需在容器内可写;macOS/Windows 不支持此提供方。
Windows 原生沙箱
官方专页目前主要说明副作用,没有完整启用教程,本页不补造步骤。该沙箱通过 icacls 设置 Low Mandatory Level,文件的 Low 完整性级别在会话后仍保留。确实需要恢复某目录时,官方给出:
icacls "C:\path\to\dir" /setintegritylevel Medium请替换为实际目标目录。管理器跳过系统目录,例如 C:\Windows;这不是修复全部 Windows 权限问题的通用命令。