·教程与指南
2026 年 Claude Code 权限与沙箱指南——六种权限模式全解(含成为默认的 auto 模式与分类器)、默认拦截清单、allow/ask/deny 规则跨作用域行为、内建 Bash 沙箱(Seatbelt / bubblewrap、protected paths、网络白名单)、容器与虚拟机隔离选型,以及企业管控。
Claude Code 权限模式与沙箱完全指南:六种模式、规则语法与隔离边界(2026)
Claude Code 的权限与沙箱是决定「一个会话能做什么」的两层机制:权限模式与规则决定 Claude 动手前要不要问你,Bash 沙箱与外层隔离(容器、虚拟机)决定动作跑起来之后能碰到什么。自 2026 年 8 月 14 日的切换起,auto 模式——由一个叫分类器(classifier)的第二模型代替你审核动作——成为 Pro、Max、Team 套餐的默认启动模式。本文基于 2026 年 9 月 8 日的官方文档,讲清六种模式、规则语法、沙箱的操作系统级边界,以及各层如何叠加。
TL;DR
- 六种模式:
default(Manual)、acceptEdits、plan、auto、dontAsk、bypassPermissions——auto 是 Pro / Max / Team 的内建启动模式(macOS/Linux/WSL 需 v2.1.228+,原生 Windows 需 v2.1.233+)- auto 模式下由分类器模型代替你审核动作;默认拦截
curl | bash式下载即执行、敏感数据外发、生产部署、force push、terraform destroy- 连续 3 次或单会话累计 20 次拦截:auto 暂停、交还人工确认——阈值不可配置
- Deny 规则在所有模式生效,包括
bypassPermissions;进入 auto 后Bash(*)这类宽泛 allow 规则会被临时丢弃- 内建 Bash 沙箱(macOS 用 Seatbelt,Linux/WSL2 用 bubblewrap + socat)在操作系统层强制文件与网络边界;除 plan 模式的特例外可与任意模式叠加
六种权限模式速览
| 模式 | 不问你就直接跑的 | 适合 |
|---|---|---|
| default(Manual) | 只读操作 | 每个动作都要亲自过目;敏感工作 |
| acceptEdits | 读、文件编辑、常见文件系统命令(mkdir、touch、mv、cp) | 迭代你在审的代码 |
| plan | 读,auto 可用时加分类器批准的命令 | 动手前先探索代码库 |
| auto | 一切,带后台安全检查 | 长任务、减少确认疲劳 |
| dontAsk | 仅预批准的工具 | 锁死的 CI 与脚本 |
| bypassPermissions | 一切 | 仅限隔离的容器与虚拟机 |
表格装不下的三件事。第一,CLI 里叫 Manual 的模式配置值是 default——hooks 和 SDK 代码里写的是这个值,manual 作为别名从 v2.1.200 起可用。第二,plan 模式在你批准计划前阻止一切编辑;dontAsk 模式把所有本该弹确认的调用直接自动拒绝(状态栏显示 ⏵⏵ don't ask on)。第三,连 bypassPermissions 也不是全放行:任何模式都不自动批准的动作——比如命中显式 ask 规则的工具——依然会弹确认。
Auto 模式:代替你审核的分类器
auto 模式里,一个叫分类器的第二模型代替你审核动作——而且分类器调用不计入你的用量额度。每个动作走一条固定的判定链,命中即停:
- 命中你的 allow / ask / deny 规则的动作立即裁决。
- 对 protected paths 的写入即使命中 allow 规则也交给分类器——针对 critical path 的
rm/rmdir同理(v2.1.218+)。 - 标记
requiresUserInteraction的 MCP 工具直接弹确认;组织设为 ask 的连接器工具同理。 - 按命令内容匹配的 ask 规则(如
Bash(git push *))回退为权限弹窗。 - 工作目录内的只读操作与文件编辑自动批准——protected paths 除外,首次读取工作目录之外也要弹确认。
- 其余全部交给分类器。
分类器默认拦什么。 分类器信任你的工作目录以及会话启动时已配置的 git remotes(会话中途 git remote add / set-url 加的 remote 不被信任)。默认拦截:下载并执行代码(curl | bash)、向外部端点发送敏感数据、生产部署与迁移、云存储批量删除、授予 IAM 或仓库权限、修改共享基础设施、不可逆销毁会话开始前就存在的文件、force push、运行时会泄密的提交或推送、破坏性 git 命令(git reset --hard、git clean -fd、git stash drop、对本会话未创建或已推送的提交执行 git commit --amend)、IaC destroy(terraform destroy、pulumi destroy、cdk destroy)、写密钥管理器、合并没有任何人批准的 PR,以及给自动化发命令式评论(如 atlantis apply)。
auto 何时回退。 分类器连续拦截 3 次或单会话累计 20 次,auto 模式暂停、Claude Code 恢复向你弹确认;你批准被拦截的动作后 auto 恢复。阈值不可配置。被拦截的动作会出通知,并进入 /permissions 的 Recently denied 标签,按 r 可走人工批准重试。
allow 规则在 auto 里会变。 进入 auto 时,授予任意代码执行权的宽泛规则被丢弃:整仓的 Bash(*) / PowerShell(*)、通配符解释器如 Bash(python*)、包管理器 run 命令、agent 与 Monitor allow 规则。Bash(npm test) 这类窄规则继续生效;离开 auto 时被丢的规则恢复。
组织可以整体关掉:managed settings 里设 disableAutoMode: "disable",auto 从 Shift+Tab 循环里移除、--permission-mode auto 强制落到 Manual、运行中的会话也会被拉出 auto(v2.1.251+)。
会话实际从哪个模式启动
启动模式的取值顺序:--permission-mode 旗标(或 --dangerously-skip-permissions)→ settings 文件里的 permissions.defaultMode → 内建默认值:
| 你怎么跑 Claude Code | 内建启动模式 |
|---|---|
| Pro / Max / Team,终端或 VS Code 扩展 | auto |
| Enterprise 或 Claude Console API key | default(Manual) |
| claude -p 或 Agent SDK | default(Manual) |
| Bedrock、Agent Platform、Foundry、AWS 平台或已登录网关会话 | default(Manual) |
| feature flag 拉取关闭、或装完/升级后第一次会话且 flag 未到 | default(Manual) |
两个 settings 陷阱:在项目的 .claude/settings.json 或 .claude/settings.local.json 里设 "auto" 不生效——会话直接用内建默认值;在这两个文件里设 "bypassPermissions" 同样不生效,会话从 Manual 启动。这两个值只在用户级 settings(~/.claude/settings.json)、managed settings 或 CLI 旗标里生效。
权限规则:allow、ask、deny
模式定基调,权限规则在其上叠放,用来预批准或拦截具体工具。语法按工具而定:Bash(npm test) 精确匹配一条命令,Bash(git push *) 通配前缀,WebFetch(domain:example.com) 管一个域名,只读 Bash 命令被识别为内建安全集。
跨作用域的判定顺序简单且严格:任何作用域的 deny 规则都先于 allow 规则评估——用户级 deny 能拦住项目级 allow,managed settings 压过一切。还有一道闸:项目 .claude/settings.json 里的 permissions.allow 与 permissions.additionalDirectories 是授予权力的条目,只有你对该文件夹接受 workspace trust 对话框之后才会生效。
回到上一节那条:在 auto 模式里,你那条整仓 Bash(*) allow 规则救不了分类器想拦的命令——窄规则存活,宽规则暂停。
Bash 沙箱:操作系统强制的边界
沙箱把审批模型反过来:不再是逐条批准命令,而是你定义命令能碰哪些文件、哪些网络域名,由操作系统对每条 Bash 命令及其子进程强制这个边界。macOS 内建(Seatbelt,无需安装);Linux/WSL2 需要两个包:管文件系统隔离的 bubblewrap、把网络流量中继到沙箱代理的 socat。原生 Windows 不支持——请在 WSL2 里跑 Claude Code。
/sandbox 打开面板:Mode(auto-allow 与 regular permissions 两档)、Overrides(失败的命令可否退到不沙箱重跑——allowUnsandboxedCommands)、Config。默认情况下,沙箱内命令可写工作目录、会话临时目录、以及经 --add-dir 加进来的目录。跑不进沙箱的命令回退到常规权限流,弹窗标题会写成 "Bash command (unsandboxed)",一眼可辨。
网络隔离由沙箱外的代理执行。默认不预放行任何域名:命令第一次要用某个域名时弹确认——auto 模式下则交给分类器。「Yes, and don't ask again」会把 WebFetch(domain:...) allow 规则存进本地 settings。strictAllowlist(v2.1.219+)再收紧:白名单之外一律拒绝而非弹窗;managed settings 里的 allowManagedDomainsOnly 把白名单锁死为管理员定义的条目。
Protected paths 堵上「可写目录」最后的口子:在可写目录内部,沙箱仍拒绝写 Claude Code 要加载和执行的东西——.claude 设置文件、skills/、agents/、commands/、hooks/、.mcp.json、你的 shell 启动文件、.gitconfig、git 内部文件,以及 ~/.claude 下的一切(含 .credentials.json 凭据库)。能改这些文件的命令就能给自己发权限;沙箱让这类写入即便在可写目录里也是被拒绝的。
两个加固设置值得记住:凭据掩码(环境变量与凭据文件掩码——Linux/WSL2 上沙箱内读到的是哨兵副本、出网时代理替换为真值——外加 AWS SigV4 重签名),以及 sandbox.failIfUnavailable:把「沙箱起不来、裸跑」从警告变成硬失败,适合托管部署当安全闸。
各层怎么叠加(以及哪里不叠加)
沙箱与 auto 相互独立、可以叠加——例外是 plan 模式:auto-allow 不会扩大 plan 的批准范围。三种实用组合:
- Manual + 沙箱 auto-allow:本地迭代少弹窗,且不依赖分类器。deny 规则照拦,点名命令的 ask 规则(如
Bash(git push *))照弹。这是套餐里没有 auto 的用户的中道路线。 - Auto + 沙箱:分类器在命令运行前审命令字符串;操作系统边界在运行中兜底——即使被批准的命令干了名字之外的事。
- dontAsk + 精确白名单:CI 组合——只跑命中 allow 规则、只读命令与 PreToolUse hook 批准的调用,其余一律拒绝、绝不排队等人。
威胁建模时要抓住这个概念分界:权限裁决在命令运行前基于命令字符串与分类器判断做出;沙箱边界由操作系统在进程运行中强制,与模型选择跑了什么无关。
外层隔离怎么选:sandbox runtime、dev container 还是虚拟机
内建沙箱只管 Bash——文件工具、MCP server、hook 仍跑在宿主机上。需要把整个进程关进边界时:
| 方案 | 隔离对象 | 需要 Docker | 搭建成本 | |---|---|---|---| | Sandboxed Bash 工具 | Bash 命令及其子进程 | 否 | macOS 极低 / Linux、WSL2 低 | | Sandbox runtime | 整个 Claude Code 进程(含文件工具、MCP、hooks) | 否 | 低 | | Dev container | 完整开发环境 | 是 | 中 | | 自定义容器 | 完整开发环境 | 是 | 中到高 | | 虚拟机 | 整个操作系统 | 否 | 高 | | Claude Code on the web | 整个操作系统,Anthropic 托管 | 否 | 零(需订阅;网页启动需 GitHub) |
官方文档的诚实声明值得复述:沙箱隔离降低破防的影响面,并不消灭风险。允许网络出站的方案仍可能泄露 agent 读到的数据;把项目目录可写挂载的方案仍可能改你的代码。隔离也不改变发给模型的内容——无论有没有沙箱,你的 prompt 和 Claude 读到的文件都会到达 API。
值得知道的企业管控
- Managed settings 压过用户与项目设置;managed 作用域的 deny 规则在所有模式拦截。
disableAutoMode: "disable"全组织关掉 auto;沙箱可同样强制启用,failIfUnavailable当安全闸。strictAllowlist+allowManagedDomainsOnly把沙箱网络白名单钉死在管理员定义的域名上。- 嵌入方经 SDK 的
managedSettings下发策略,除非管理员设了allowManaged*Only锁。 - 项目级 allow 规则要先过 workspace trust 对话框——一道防「克隆仓库投毒」的闸。
从 bypassPermissions 迁出来
bypassPermissions 依然存在,用于容器和虚拟机里的完全无人值守运行——而且护栏在收紧:Linux/macOS 上以 root 或 sudo 运行会被直接拒绝,Claude Code on the web 无视 settings 文件里的它,-p 运行中少数本该弹确认的调用(显式 ask 规则、critical path 删除)会改为直接拒绝。如果你在宿主机上还拿它当日常,迁移路线是:
- 交互式工作:从
default(Manual)起步,/sandbox开 auto-allow——多数构建与测试不再弹窗,且不依赖分类器。 - 免照看会话:切到 auto 模式让分类器审,再叠沙箱做纵深防御。
- CI:
dontAsk加精确白名单(claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"),跑在你 runner 自己的隔离里。
相关指南
- 基础先行:Claude Code 完全指南——安装、日常工作流与本文假设的基础
- 权限系统的 hook 一侧:Claude Code Hooks 与子代理
- 把会话跑到自己硬件上:Claude Code 自托管环境实战
- 沙箱的另一个思路——Coop 这类一次性 microVM:见资源库
- 权限撞上网络时:MCP 鉴权与 OAuth
常见问题
现在 Claude Code 的默认权限模式是什么?
自 2026 年 8 月 14 日的切换起,auto 模式是 Pro、Max、Team 套餐的内建启动模式(macOS/Linux/WSL 需 v2.1.228+,原生 Windows 需 v2.1.233+)。Enterprise、Console API key、claude -p 与 Agent SDK 仍从 Manual(default)启动。你自己设的 defaultMode 保持不变,除非你接受了那次性的切换提示;组织管理的默认值则永远不会变。
auto 模式的分类器默认拦什么?
下载并执行代码(curl | bash)、向外部端点发送敏感数据、生产部署与迁移、云存储批量删除、授予 IAM 或仓库权限、force push、git reset --hard 这类破坏性 git 命令与对旧提交的 git commit --amend、IaC destroy、写密钥管理器、合并无人批准的 PR、给自动化发命令的评论。另外分类器只信任会话启动时配置的工作目录与 git remotes,其余一律当外部。
Bash 沙箱和 dev container 有什么区别?
Bash 沙箱按命令、经操作系统只限制 Bash 命令及其子进程——文件工具、MCP server、hook 仍跑在宿主机上。dev container 把整个 Claude Code 进程关进隔离边界,一切都被限制。沙箱搭建成本极低,适合日常交互;容器与虚拟机适合不可信代码与无人值守运行。
auto 模式下权限规则还生效吗?
生效,而且先于分类器裁决:固定判定链里 allow / ask / deny 规则最先匹配。deny 规则在所有模式都拦截。唯一的变化:进入 auto 时,授予任意代码执行权的宽泛 allow 规则——Bash(*)、通配符解释器、包管理器 run 命令——会被丢弃,离开 auto 时恢复。
--dangerously-skip-permissions 还能用吗?
能,用于容器与虚拟机里的完全无人值守运行——这类隔离是前提,Linux 与 macOS 上 root 或 sudo 运行会被直接拒绝。Claude Code on the web 无视 settings 文件里的它;-p 运行中少数本该弹确认的调用(显式 ask 规则、critical path 删除)改为直接拒绝。即便在这个模式,deny 规则照拦,跨会话消息防护也仍然生效。
组织能强制沙箱或关掉 auto 模式吗?
都能,走 managed settings:disableAutoMode: "disable" 移除 auto(运行中的会话也会被拉出);沙箱强制启用加 failIfUnavailable: true,沙箱缺失从警告变硬失败。strictAllowlist 与 allowManagedDomainsOnly 把沙箱网络白名单钉死在管理员定义的域名上。
官方参考资料
- Choose a permission mode(模式表、auto 机制、分类器拦截清单,本文主要依据)
- Permission rules(规则语法、作用域、workspace trust)
- Sandboxing(Seatbelt / bubblewrap、网络代理、protected paths、凭据掩码)
- Sandbox environments(sandbox runtime 与 dev container、虚拟机对比)
- What's new W32——auto mode 成为默认(2026 年 8 月切换)
本文基于截至 2026 年 9 月 8 日的 Claude Code 官方文档(上文行为以 v2.1.228+ 为准)。权限行为演进很快,以官方文档为准。