最后更新于 2026 年 8 月 15 日;本文已核对官方安全、沙箱、权限、代理和开发容器资料,以及 Claude Code 官方安全公告和 Wiz 的原始研究。

Claude Code 沙箱配置 2026 的直接结论是:可信自有仓库可以在收紧权限后的本机沙箱中运行;来源不明、需要安装依赖、调用 MCP 或开放网络的仓库,不要直接接触主力 Mac 的 SSH 密钥和云凭据,应改用专用虚拟机或独立云端 Mac。

这不是单纯打开一个确认弹窗就能完成的安全配置。文件系统、网络出口和权限绕过必须同时受限;如果凭据已经挂载进执行环境,沙箱并不能把它们“变得不可读取”。

这篇文章适合 3 类人:

  • 需要用 Claude Code 审查开源项目、陌生 Pull Request 或第三方脚本的开发者;
  • 允许 AI Agent 执行测试、安装依赖和调用 MCP 工具的团队负责人;
  • 准备部署专用云端 Mac 作为长任务执行节点的环境管理员。

启动前先判断:仓库内容可能比命令本身更早影响环境

典型失败路径是:开发者克隆一个外部 GitHub 仓库,进入目录后直接运行 claude,随后按照提示批准读取配置、执行安装脚本或访问网络。问题在于,风险不只来自 Claude Code 生成的 Shell 命令,还可能来自仓库中的项目配置、Hooks、MCP 声明、符号链接、依赖安装脚本,以及外部工具返回的恶意内容。

官方安全公告曾披露:受影响版本在加载恶意仓库配置时,可能在信任提示出现前使用攻击者控制的 ANTHROPIC_BASE_URL 发起请求,并导致 API 密钥泄露;该公告将受影响范围列为低于 v2.0.65,修复版本为 v2.0.65。因此,启动前首先应完成更新,而不是先打开仓库再等待提示保护环境。可参考官方安全公告原文

⚠️ 注意: 信任弹窗属于交互层审批,不等于操作系统隔离。Anthropic 的工程复盘也明确区分了人工审批、沙箱、虚拟机和网络出口控制;任何一层都不能替代另外几层。可阅读Anthropic 关于 Agent containment 的工程复盘

启动前可先完成以下检查:

  • ✅ 确认仓库来源、维护者、最近提交和依赖锁文件是否合理;
  • ✅ 检查 .claude/、项目级 settings.json、启动脚本和 Hooks;
  • ✅ 检查 mcp.json 或其他 MCP 声明,确认是否会启动本地进程或访问外部 API;
  • ✅ 使用 findreadlink 或同类只读命令检查符号链接是否指向工作目录之外;
  • ✅ 检查 package.jsonpyproject.tomlMakefile、安装脚本和容器配置;
  • ✅ 搜索异常的域名、下载地址、远程 Shell、编码后的脚本和可疑环境变量。

第一次审查应停留在只读阶段。若仓库要求执行 npm installpip install、构建脚本或测试服务,风险等级就不再是“阅读代码”,而是“允许第三方代码进入执行环境”。

首次运行前清空凭据,再选择 Claude Code 沙箱配置 2026

在主力 Mac 上,最容易被忽略的隐性成本是凭据暴露。SSH 私钥、云平台访问密钥、代码签名材料、生产环境变量、浏览器会话和本地密码管理器代理,一旦能被执行环境读取,后续即使限制了某些写入路径,也无法消除已经发生的读取风险。

建议把主机状态调整为“无长期凭据”:

  • ~/.ssh 移除不必要的私钥,或改用一次性、低权限的测试密钥;
  • 不把云平台长期访问密钥写入 .env、Shell 配置或容器挂载目录;
  • 不在陌生仓库中使用生产证书、App 签名材料和发布令牌;
  • 检查 SSH_AUTH_SOCK、云厂商环境变量和自定义 API 代理地址;
  • 不将宿主机的整个 Home 目录挂载进容器或远程执行节点;
  • 任务需要 Git 推送时,优先使用范围受限、可撤销的临时凭据。

沙箱能替 SSH 私钥兜底吗?
只有在 SSH 私钥没有进入沙箱、SSH Agent 不允许被执行环境调用,并且网络出口也受到限制时,保护才具有实际意义。macOS Seatbelt 可以约束 Bash 及其子进程的文件和网络访问,但它不会替开发者自动撤销已经挂载的密钥;官方工程文章强调,凭据如果从未进入沙箱,代理即使被诱导也更难直接窃取。

首次启动可以先使用计划模式:

claude --permission-mode plan

计划模式适合让 Claude Code 阅读项目、列出修改方案和指出潜在风险,但不应被误认为完整隔离。它减少了执行动作,却没有把仓库放进独立操作系统边界。

首次信任时按权限层级放行,而不是一次性全开

Claude Code 的权限配置应遵循“先观察、再允许、最后收窄”的顺序。官方 CLI 文档列出了 plan、默认审批、acceptEditsbypassPermissions 等模式;其中绕过权限模式只适合已经具备独立隔离边界的环境。可查看官方 CLI 参数说明

推荐的首次信任策略如下:

  • 计划模式: 只阅读和分析,不执行修改与命令;
  • 默认模式: 每次遇到新的 Shell、文件写入或外部工具调用时人工确认;
  • 接受编辑模式: 仅用于已经确认来源的仓库,且仍保留命令与网络审批;
  • 绕过权限模式: 只有在无长期凭据、无生产网络、独立容器或虚拟机中考虑。

权限规则应使用三种动作表达边界:

动作 适合放行的对象 不适合放行的对象
deny SSH 目录、云凭据目录、生产配置、危险命令、未批准的 MCP 不能只拒绝文件名而忽略真实路径
ask 安装依赖、Shell、网络访问、文件写入、Git 推送 不应因为提示频繁就改成全局允许
allow git statusgit diff、只读搜索、指定测试命令 不应直接允许任意 Shell 或整个网络

在规则冲突时,应让拒绝规则优先于允许规则,并通过 /permissions 检查当前会话实际生效的配置。权限规则可以约束 Claude Code 的行为,但不能防止操作系统漏洞、恶意依赖或已获准命令产生外部副作用。

陌生 GitHub 仓库适合直接交给 Claude Code 吗?
如果只是隔离目录中的只读检查,风险相对可控;如果仓库会自动加载配置、启动 Hooks、安装依赖或访问外部服务,就不能把“打开”视为无害动作。更稳妥的做法是先在无凭据环境中静态检查,再进入沙箱执行阶段。

第一次执行时同时限制文件系统与网络出口

Anthropic 的沙箱机制使用 macOS Seatbelt 等操作系统级能力,对 Bash 及其子进程提供文件系统和网络边界;官方介绍称,沙箱默认允许工作区内写入、限制工作区外写入,并默认阻断网络,再通过白名单放行必要域名。官方内部数据显示,启用沙箱后权限提示数量减少 84%,但这属于产品方的内部使用结果,不等于任何仓库都获得同等安全效果。可参考Anthropic 的沙箱机制说明

配置时应把三类边界分开处理:

  1. 工作目录边界: 只允许仓库目录和临时构建目录写入,拒绝访问 SSH、云凭据、签名材料和生产配置;
  2. 网络出口边界: 只放行模型 API、必要的软件包源和明确批准的 Git 服务,其他域名默认拒绝;
  3. 权限绕过边界: 禁止把 --dangerously-skip-permissions 当作兼容性修复手段,遇到命令失败应先缩小命令、修复路径或迁移到隔离环境。

如果团队使用代理或出口网关,应将 Claude Code 的流量纳入统一审计。官方代理文档列出了模型 API、统计服务和错误报告服务等网络要求,并提醒不要把代理密码硬编码在脚本中;可参考官方代理配置文档

执行需求 本机 Seatbelt 沙箱 Dev Container 专用虚拟机或云端 Mac
只读审查代码 ✅ 合适 ✅ 合适 可用但成本更高
安装第三方依赖 ⚠️ 需无凭据环境 ✅ 较合适 ✅ 更适合长期任务
需要访问多个外部域名 ⚠️ 必须白名单 ⚠️ 需配置出口 ✅ 可单独配置网络
需要 Xcode、签名或 macOS 工具链 ✅ 本机可用 受宿主环境限制 ✅ 更容易单独交付
允许长时间自动执行 不建议直接使用 需审查挂载和网络 ✅ 适合专用节点
任务结束后彻底清理 依赖人工检查 可销毁容器 ✅ 可销毁并重建实例

容器是否等于完整隔离?
不能。Dev Container 通常能把文件系统、依赖和部分网络配置与主机分开,但是否存在特权模式、宿主目录挂载、Docker Socket、SSH Agent 转发、共享网络和可写凭据,取决于具体配置。它是额外隔离层,不是自动成立的安全边界;开发容器应被视为降低污染范围的工具,而不是对所有威胁的保证。

按风险条件选择本机、容器还是独立 Mac

可用下面的条件分支快速决策:

  • 若仓库属于团队自有项目、依赖已锁定、无需访问生产系统,选择“本机沙箱 + 默认审批”;
  • 若仓库来源可信但需要固定依赖和可重复构建,选择“Dev Container + 无凭据挂载 + 网络白名单”;
  • 若仓库来源不明、包含安装脚本、需要调用 MCP 或需要开放网络,回退到“专用虚拟机或独立云端 Mac”;
  • 若任务会持续运行、需要安装多个工具链或可能修改系统配置,不要使用主力 Mac;
  • 若需要 Xcode、macOS 专属构建工具或签名流程,优先选择可单独销毁的 Mac 执行节点;
  • 若无法确认文件、网络和凭据边界,停止执行,不要用更宽松的权限规则换取“先跑起来”。

对于团队管理员,建议把执行节点设计成一次性环境:任务开始时注入短期凭据,任务完成后导出必要产物,随后销毁实例,而不是长期保留已经运行过陌生脚本的系统。需要了解云端 Mac 使用方式时,可先查看 RUVCLOUD 的 Mac 远程使用入口,再结合任务时长和工具链要求决定是否创建临时节点。

任务结束后检查外部副作用,再决定是否销毁环境

代码回滚和安全清理不是一回事。git reset 可以撤销工作区变化,却不能撤销已经上传的密钥、已经创建的云资源、已经修改的远程账户,或已经发送到第三方服务的数据。

结束时按以下顺序验收:

  • ✅ 查看 git diff、未跟踪文件和新增隐藏目录;
  • ✅ 检查 Shell 配置、启动项、Hooks 和计划任务是否被修改;
  • ✅ 检查 ~/.ssh/authorized_keys、SSH 配置和 Agent 使用记录;
  • ✅ 查看云平台、软件包源和外部 API 的访问日志;
  • ✅ 检查异常域名、异常上传、未知进程和新增凭据文件;
  • ✅ 撤销临时令牌、测试密钥和 MCP 服务授权;
  • ✅ 对一次性环境优先销毁重建,而不是继续沿用原实例。

如何把 Claude Code 的文件与网络边界收紧?
文件访问应通过工作目录、额外目录和拒绝规则共同约束;网络访问则应通过沙箱白名单、企业代理或出口防火墙控制。不要只在提示词中要求“不要访问敏感文件”,也不要只依赖权限弹窗,因为提示词和人工审批都无法替代操作系统级拒绝规则。

如果检查结果发现密钥曾被读取、网络边界曾被放宽、符号链接曾指向工作区外,或容器曾挂载 Docker Socket,最稳妥的判断是立即废弃环境并重建。Wiz 于 2026 年 7 月披露的 GhostApproval 研究讨论了符号链接和审批界面未充分展示真实目标的问题;该研究属于第三方披露,不能扩写为所有版本都必然可被利用。可阅读Wiz 的原始安全研究

当前主力 Mac 与独立云端 Mac,差别在爆炸半径

把陌生仓库直接放在主力 Mac 上,优点是启动快、工具齐全,但缺点也很明确:SSH 和云凭据容易残留,个人文件与开发目录边界复杂,长任务可能持续修改环境,而且一次误批准可能影响日常工作系统。Dev Container 能缓解依赖污染,却仍可能因目录挂载、网络共享或凭据转发留下跨边界路径。

对于来源不明、需要安装依赖或需要长时间运行的任务,独立云端 Mac 的价值不是“天然安全”,而是更容易做到无长期凭据、单独网络策略、任务结束销毁和环境重建。完成仓库风险分级后,可以参考 RUVCLOUD 的远程 Mac 方案页面,先确认文件访问、网络出口、凭据注入和销毁方式是否满足任务要求,再决定是否创建临时执行节点。