name: gemini-sandbox-configuration description: Gemini CLI沙箱和隔离的中央权威。覆盖Docker、Podman、macOS Seatbelt配置文件和安全边界。在启用沙箱、选择沙箱方法、配置Seatbelt配置文件或排除沙箱问题时使用。100%委托给gemini-cli-docs获取官方文档。 argument-hint: <命令> allowed-tools: Read, Glob, Grep, Bash, Skill
Gemini沙箱配置
强制要求:首先调用gemini-cli-docs
停止 - 在提供任何关于Gemini沙箱的响应之前:
- 调用
gemini-cli-docs技能- 查询 特定的沙箱主题
- 基于 加载的官方文档提供响应
概述
用于配置Gemini CLI沙箱隔离的元技能。沙箱将潜在危险操作与主机系统隔离。
何时使用此技能
关键词: 沙箱, docker, podman, seatbelt, 隔离, 容器, 安全执行, -s 标志, GEMINI_SANDBOX
在以下情况下使用此技能:
- 首次启用沙箱
- 在沙箱方法之间选择
- 配置Seatbelt配置文件(macOS)
- 排除沙箱问题
- 理解安全边界
沙箱方法
| 方法 | 平台 | 隔离 |
|---|---|---|
| Docker | 所有 | 完整容器 |
| Podman | 所有 | 无根容器 |
| Seatbelt | macOS | 进程沙箱 |
配置
通过命令标志启用
gemini -s -p "命令"
通过环境变量启用
export GEMINI_SANDBOX=true
gemini "命令"
# 或指定方法
export GEMINI_SANDBOX=docker
export GEMINI_SANDBOX=podman
export GEMINI_SANDBOX=sandbox-exec
通过设置启用
添加到 settings.json:
{
"tools": {
"sandbox": true
}
}
或指定方法:
{
"tools": {
"sandbox": "docker"
}
}
Seatbelt配置文件(macOS)
通过 SEATBELT_PROFILE 环境变量设置:
| 配置文件 | 写入 | 网络 |
|---|---|---|
permissive-open(默认) |
受限 | 允许 |
permissive-closed |
受限 | 阻止 |
permissive-proxied |
受限 | 通过代理 |
restrictive-open |
严格 | 允许 |
restrictive-closed |
严格 | 阻止 |
自定义沙箱标志
对于基于容器的沙箱,注入自定义标志:
export SANDBOX_FLAGS="--security-opt label=disable"
关键词注册表(委托给gemini-cli-docs)
| 主题 | 查询关键词 |
|---|---|
| 启用 | enable sandbox, -s flag, GEMINI_SANDBOX |
| Docker | docker sandbox, container isolation |
| Podman | podman sandbox, rootless container |
| Seatbelt | seatbelt profiles, sandbox-exec macos |
| 自定义标志 | SANDBOX_FLAGS, custom docker flags |
| 故障排除 | sandbox troubleshooting, operation not permitted |
快速决策树
你想做什么?
- 快速启用沙箱 -> 使用
-s标志 - 使其持久化 -> 添加到 settings.json
- 使用Docker -> 设置
GEMINI_SANDBOX=docker - 使用更严格的macOS -> 设置
SEATBELT_PROFILE=restrictive-closed - 调试问题 -> 使用
DEBUG=1 gemini -s
故障排除
| 错误 | 原因 | 解决方案 |
|---|---|---|
| “操作不允许” | 沙箱限制 | 预期行为 |
| “Docker未找到” | Docker未运行 | 启动Docker守护进程 |
| 网络被阻止 | 限制性配置文件 | 使用 permissive-open |
| 命令缺失 | 不在沙箱镜像中 | 添加到自定义Dockerfile |
安全注意事项
- 沙箱减少但不消除所有风险
- 使用允许工作的最严格配置文件
- GUI应用程序可能在沙箱中无法工作
- 容器开销在首次构建后最小
验证检查点
- [ ] 我是否调用了gemini-cli-docs技能?
- [ ] 官方文档是否加载?
- [ ] 我的响应是否完全基于官方文档?
测试场景
场景1:启用沙箱
查询:“如何在Gemini CLI中启用沙箱?” 预期行为:
- 技能在"沙箱"关键词上激活
- 委托给gemini-cli-docs获取配置选项 成功标准:用户收到-s标志和settings.json配置
场景2:macOS Seatbelt
查询:“如何为Gemini CLI配置Seatbelt配置文件?” 预期行为:
- 技能在"seatbelt"或"macos sandbox"上激活
- 提供SEATBELT_PROFILE环境变量选项 成功标准:用户收到配置文件比较表
场景3:排除沙箱故障
查询:“在Gemini沙箱中收到’操作不允许’” 预期行为:
- 技能在"沙箱故障排除"或"操作不允许"上激活
- 解释预期的沙箱限制 成功标准:用户理解行为是预期的并获取解决方法
参考资料
查询 gemini-cli-docs 获取官方文档:
- “沙箱”
- “seatbelt配置文件”
- “docker沙箱”
用户界面
当用户直接调用时,此技能在Gemini CLI的沙箱环境中执行命令。
执行工作流
- 解析参数 - 从
$ARGUMENTS提取shell命令。如果未提供命令,询问用户要在沙箱中执行什么。 - 验证命令 - 确保命令非空且适合沙箱执行。
- 在沙箱中执行 - 使用Gemini CLI的
-s标志运行命令,以强制执行沙箱,并采用适当的沙箱类型(Docker、Podman或macOS Seatbelt)。 - 报告结果 - 呈现执行输出,包括stdout、stderr、退出代码以及对沙箱环境中命令行为的观察。
版本历史
- v1.1.0 (2025-12-01):添加了测试场景部分
- v1.0.0 (2025-11-25):初始发布