# 沙箱平台与提供方

> 比较各平台的可用隔离方式和启用前提，避免依赖自动检测。

- 网址：https://funcoding.ai/agents/gemini-cli/configuration/sandbox-providers/
- 核实日期：2026-10-08（命令、配置和价格以官方文档为准）
- 官方来源：[Gemini CLI 官方文档：Sandboxing](https://geminicli.com/docs/cli/sandbox)

---
沙箱的文件读取、写入与网络边界依提供方和 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`；工作区挂载到容器内相同绝对路径，详细配置见[容器与挂载](https://funcoding.ai/agents/gemini-cli/configuration/sandbox-containers/)。

## 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 不会自动创建：

```bash
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 完整性级别在会话后仍保留。确实需要恢复某目录时，官方给出：

```powershell
icacls "C:\path\to\dir" /setintegritylevel Medium
```

请替换为实际目标目录。管理器跳过系统目录，例如 `C:\Windows`；这不是修复全部 Windows 权限问题的通用命令。
