Deepseek ArtifactsDeepseek Artifacts
取自 GitHub 官方沙箱演示

Copilot 沙箱模式:图文实操指南

本地沙箱把 GitHub Copilot 的 shell 命令、文件工具和网络访问关进操作系统级的隔离环境。本教程跟随 GitHub 官方演示:用 /sandbox 开启、调整策略、随时关闭,再把整个会话交给云端沙箱。

速览

  • 沙箱模式让 Copilot 的 shell 命令、文件工具、MCP 和 LSP 服务器都运行在操作系统沙箱里——不靠虚拟机或容器(macOS 用 Seatbelt,Linux 用 bubblewrap,Windows 用 ProcessContainer),限制文件、网络和凭据访问。
  • Copilot 应用里沙箱默认关闭:打开应用设置,选中项目,开启 "Sandbox new sessions"。CLI 里执行 /sandbox enable(实验特性)。
  • 执行 /sandbox 调整策略——CLI 里有 General、Filesystem、Network 三个标签页;应用里有额外可读写、只读、拒绝路径以及网络和凭据开关。改动只对新会话生效,或用 /restart-session。
  • copilot --cloud 把整个会话搬进 GitHub 托管的云端沙箱;之后从 github.com/copilot/tasks 链接或仓库的 Agents 标签页重新进入。本地沙箱设置对云端会话不生效。

How to run GitHub Copilot in local and cloud sandboxes | demo

频道:GitHub (official channel)1:31

观看

GitHub Copilot Sandboxes are SO COOL

频道:Gwyneth Peña-Siguenza1:50

观看

Local sandboxing in the GitHub Copilot app (public preview)

文档:github.blog/changelog

观看

Configuring local sandboxing in the GitHub Copilot app

文档:docs.github.com

观看

About cloud and local sandboxes for GitHub Copilot

文档:docs.github.com

观看

本页截图全部来自 GitHub 官方沙箱演示视频——纯净的终端录屏。文字内容基于视频与 GitHub 官方文档撰写,设置项名称逐字引用。

截图版权归原创者所有,此处仅作带署名的视觉参考。本地沙箱处于公共预览阶段——名称和行为可能变化。

图文教程:12 步

1 · 开启本地沙箱

  1. 1

    在仓库里启动 Copilot

    在项目里启动 Copilot CLI。沙箱是 CLI 的实验特性——启动横幅上挂着 /experimental 徽标,状态栏里就有你马上要学会辨认的沙箱指示器。

    Copilot CLI v1.0.56 session start in a repo showing the yellow /experimental badge with the sandbox enabled indicator lit in the status bar
    Copilot CLI 启动画面:/experimental 徽标与状态栏里的沙箱指示。在 0:08 处观看
  2. 2

    执行 /sandbox enable

    输入 /sandbox,命令面板只给出两个开关:enable 和 disable。选 enable——沙箱对当前 Copilot 会话及其运行的每条 shell 命令生效。

    Copilot CLI slash-command menu listing /sandbox enable and /sandbox disable above the /sandbox [enable|disable] prompt hint
    /sandbox 自动补全给出 enable 与 disable 两个选项。在 0:24 处观看
  3. 3

    确认会话已进入沙箱

    Copilot 会打印 "Sandboxing has been enabled.",状态栏在 AI Credits 旁边显示 "sandbox enabled"。从这一刻起,代理运行的命令都在沙箱内执行。

    Copilot CLI printing Sandboxing has been enabled with the status bar reading sandbox enabled next to AI Credits 0
    "Sandboxing has been enabled."——你想看到的那行确认。在 0:12 处观看

2 · 划定沙箱的权限边界

  1. 4

    用 /sandbox 打开策略面板

    单独执行 /sandbox 会打开 Configure sandbox 面板,配置持久化在 settings.json 的 `sandbox` 下。General 标签决定哪些东西跑在沙箱里:shell 命令、MCP 服务器、LSP 服务器,以及供 git、gh 凭据助手使用的 macOS 钥匙串访问。

    Copilot CLI Configure sandbox panel on the General tab with Sandboxing enabled, Sandbox MCP servers, Sandbox LSP servers and Allow keychain access checkboxes
    General 标签:shell、MCP、LSP 服务器与钥匙串访问。在 0:30 处观看
  2. 5

    划定文件系统边界

    Filesystem 标签会自动把当前工作目录加入可读写路径,并可在沙箱退出时重置权限。~/.nvm、~/.npm 这类工具路径以只读方式挂载——工具链需要更多权限时再往列表里加。

    Copilot CLI sandbox Filesystem tab showing Include working directory, Clear policy on exit and the read-only ~/.nvm and ~/.npm path list
    nvm 与 npm 的只读路径,工作目录自动纳入。在 0:32 处观看
  3. 6

    划定网络边界

    Network 标签给出三个开关:允许出站互联网、允许本地网络,以及按主机逐一添加的 Access 列表。任务不需要联网下载时,先收紧这里。

    Copilot CLI sandbox Network tab with the Allow outbound connections and Allow local network checkboxes plus an empty Access Host list
    网络策略:出站、本地网络与按主机白名单。在 0:36 处观看
  4. 7

    照常写代码——命令都被关在沙箱里

    像平常一样干活。代理规划、改码、执行命令,状态栏始终显示 "sandbox enabled"。当命令需要策略不允许的东西时,Copilot 会明确报错,而不是悄悄溜出隔离环境。

    Copilot CLI agent planning a SQLAlchemy 2.0 migration while the status bar reads sandbox enabled at 61.8 AI Credits
    一次 SQLAlchemy 迁移的规划与执行,状态栏显示 "sandbox enabled"。在 0:20 处观看

3 · 干活、关闭、或上云

  1. 8

    用 /sandbox disable 切回普通模式

    某一步需要跳出沙箱?/sandbox disable 直接关闭沙箱——出现 "Sandboxing has been disabled.",状态栏的沙箱徽标随之消失。任务需要时可以随时来回切换。

    Copilot CLI printing Sandboxing has been disabled after the /sandbox disable command with AI Credits 133 and no sandbox badge left in the status bar
    "Sandboxing has been disabled."——注意状态栏里的沙箱徽标已经不见。在 0:38 处观看
  2. 9

    用 copilot --cloud 启动云端沙箱

    更重的任务可以带 --cloud 标志启动 Copilot(官方演示搭配 --yolo,GitHub 文档示例为 --cloud --experimental)。会话将运行在 GitHub 托管的临时环境里,而不是你的电脑上。

    Terminal launching a Copilot cloud sandbox with the copilot --cloud --yolo command typed at the tailspin-toys git prompt
    copilot --cloud --yolo——整个会话即将离开你的笔记本。在 0:50 处观看
  3. 10

    拿到远程控制链接

    远程会话创建完成后,Copilot 会连上远程控制并打印 github.com/copilot/tasks/... 链接——按 ctrl+e 可显示二维码。工作目录位于云端沙箱的 /workspaces/<repo>。

    Copilot cloud session showing Remote control connected as GeekTrainer with the github.com/copilot/tasks session URL and the ctrl+e QR code hint
    远程控制已连接,附会话链接与二维码快捷键。在 1:00 处观看
  4. 11

    让它在云端构建并跑测试

    代理在云端沙箱里创建文件、安装依赖、运行你的测试脚本——图中正在创建 test_auth.py 并执行后端测试套件。你的电脑全程闲置,只有状态栏里的点数在跳动。

    Copilot cloud sandbox creating test_auth.py and running backend unit tests through the test-runner skill inside /workspaces/tailspin-toys
    测试在云端沙箱中运行,至今已消耗 80.4 AI Credits。在 1:10 处观看
  5. 12

    在 GitHub.com 上盯进度、随时回来

    会话会出现在仓库的 Agents 标签页,标记为 Remote CLI session——在浏览器里看进度、发消息,之后用 copilot --resume 恢复,本地和远程会话都会列出来。

    GitHub.com Agents tab listing Remote CLI sessions for the tailspin-toys repo while Copilot recommends Flask auth libraries in the session panel
    tailspin-toys 仓库的 Agents 标签页正在实时跟踪云端会话。在 1:14 处观看

设置在哪里:Copilot 应用与 Copilot CLI

本地沙箱存在于两个入口,两者的设置相互独立——改哪一个都不会影响另一个。

  • 1Copilot 应用:默认关闭。打开应用设置,选中项目,在 "Sandbox" 下开启 "Sandbox new sessions"。项目策略描述沙箱会话可以申请哪些权限。
  • 2应用侧策略:文件系统访问从工作区与当前目录的可读写开始,另有额外可读写、额外只读、拒绝路径三类清单;网络访问覆盖出站互联网与本地网络;凭据覆盖 git 与 GitHub CLI。
  • 3Copilot CLI:沙箱是实验特性——先带 --experimental 启动(或执行 /experimental on),再用 /sandbox enable、/sandbox disable,或单独执行 /sandbox 打开配置面板。配置持久化在 settings.json 的 `sandbox` 下。
  • 4斜杠命令与时机有关:会话进行中输入 /sandbox on 或 /sandbox off 只覆盖当前会话;会话开始前输入则会改写项目默认值。用 /restart-session 可以应用新策略且不丢历史。
  • 5云端会话是另一个世界:本地沙箱设置对云端沙箱和远程主机会话都不生效,而且云端沙箱需要组织或企业所有者先开启访问策略才会出现。

本教程里的 CLI 演示是最快的上手路径;想清楚策略之后,应用里按项目的开关才是长久默认。

当沙箱说不:默认失败关闭

沙箱的设计是失败关闭——如果操作系统无法执行你申请的策略,命令会直接报错,而不是脱离沙箱继续跑。

  1. 1平台或策略不受支持:当所申请的策略无法被执行时,沙箱化 shell 会报错退出——绝不会静默回退成无沙箱运行。
  2. 2"Sandbox unavailable":应用会标出问题所在,修复后点击 Retry sandbox 按钮重试。
  3. 3逃生舱口:"Run outside the sandbox?" 提示可以取消、在沙箱外运行一次,或对当前会话关闭沙箱——"Re-enable sandbox" 再切回来。重启后失效,且从不改动项目默认值。
  4. 4企业所有者拥有一票否决权:托管设置可以封掉沙箱外运行的逃生舱口,而且那边的强制策略同样失败关闭。

平台要点:macOS 推荐 15+(Seatbelt);Linux 需要 PATH 里有 bubblewrap 0.5.0+,外加 slirp4netns、util-linux 2.35+、iptables 和 /dev/net/tun;Windows 走 ProcessContainer 的 BaseContainer 层,无法保证拒绝路径生效时命令会以 unsupported-policy 报错。

Copilot 沙箱常见问题

相关攻略