本页目录7
- 六种模式按询问频率从高到低排列:default 仅读免询 → acceptEdits 文件编辑免询 → auto 后台分类器守门 → dontAsk 仅预批工具 → bypassPermissions 完全跳过检查
- CLI 中 Shift+Tab 循环切换模式;启动时传 --permission-mode 参数;全局默认写入 ~/.claude/settings.json 的 permissions.defaultMode 字段
- auto 模式默认拦截 curl|bash 执行、生产部署、IAM 变更、强推 main 等高危操作,需 Claude Code v2.1.83+ 及 Opus 4.6+/Sonnet 4.6
- bypassPermissions 跳过权限弹窗与安全检查,但显式 ask 规则仍强制弹窗、rm -rf / 等仍有熔断;仅限隔离容器或 VM 中使用,不支持 root 身份启动,Web 云端会话不支持此模式
- .git、.zshrc、.mcp.json 等受保护路径在 bypassPermissions 之外的所有模式中写入操作永不自动批准
本文是对官方文档《Choose a permission mode》的中文要点摘要,完整内容以原文为准:https://code.claude.com/docs/en/permission-modes
六种权限模式一览
Claude Code 通过「权限模式」控制 Claude 执行每个操作(编辑文件、运行命令、发起网络请求)前是否需要弹窗确认。模式越宽松,Claude 连续工作时间越长、打断越少;模式越严格,用户对每步操作的掌控力越强。
| 模式 | 无需询问即可执行 | 适用场景 |
|---|---|---|
default | 仅读取 | 入门体验、敏感工作 |
acceptEdits | 读取 + 文件编辑 + 常见文件系统命令 | 边改边用 git diff 复查 |
plan | 仅读取(只规划,不修改源文件) | 探索代码库后再动手 |
auto | 几乎一切(后台分类器安全检查) | 长任务、减少弹窗干扰 |
dontAsk | 仅预先允许的工具 | CI/CD 流水线、锁定脚本环境 |
bypassPermissions | 一切 | 隔离容器/虚拟机专用 |
注:除 bypassPermissions 外,所有模式对「受保护路径」(如 .git、shell 配置文件等)的写入永不自动批准。此外,deny 规则与显式 ask 规则在所有模式下均生效——包括 bypassPermissions。
切换模式的方式
- CLI 会话中:按
Shift+Tab循环切换default→acceptEdits→plan(满足条件时可进入auto) - CLI 启动时:
claude --permission-mode plan - 全局默认:在
~/.claude/settings.json的permissions.defaultMode字段中设置 - VS Code:点击提示框底部的模式指示器,或在扩展设置中配置
claudeCode.initialPermissionMode - Desktop / Web:界面内有模式选择下拉菜单;
auto需账户满足条件后才会出现
acceptEdits 模式
自动批准工作目录内的文件创建与编辑,同时自动批准 mkdir、touch、rm、rmdir、mv、cp、sed 等常用文件系统命令(支持 timeout、nice、nohup 等进程包装器前缀,以及 LANG=C 等安全环境变量前缀)。自动批准仅限工作目录或 additionalDirectories 范围内的路径;范围外的操作、受保护路径及其他 Bash 命令仍会弹出提示。
适合「先让 Claude 改完,再用 git diff 统一审查」的工作流:
claude --permission-mode acceptEdits
plan 模式:只探索,不修改
plan 模式下 Claude 读取文件、运行 shell 命令探索代码库,输出修改计划,但不会实际编辑源码;权限弹窗仍与 default 模式下一样生效。计划完成后用户可选择:批准并进入 auto / acceptEdits / 手动逐步审查,或继续细化计划。按 Ctrl+G 可在外部编辑器中直接修改计划内容后再让 Claude 执行。
单条提示可前缀 /plan 临时进入 plan 模式;在 .claude/settings.json 中设 defaultMode: "plan" 可将其设为项目默认。
auto 模式:后台分类器守门
auto 模式由独立分类器模型在操作执行前做安全判断,可大幅减少弹窗同时保留安全防线。只读操作与工作目录内的文件编辑(受保护路径除外)直接自动批准、不经分类器,其余操作才会送入分类器审查。分类器只读取用户消息、工具调用和 CLAUDE.md,工具调用结果会被剥离,防止文件或网页内容直接操纵分类器。
默认拦截:curl | bash 类动态执行、向外部端点发送敏感数据、生产环境部署与迁移、大规模云存储删除、修改 IAM 或仓库权限、强制推送或直推 main、git reset --hard 等破坏性 git 操作、terraform destroy 等基础设施销毁。
默认放行:工作目录内的文件操作、安装 lock file 声明的依赖、只读 HTTP 请求、推送到当前分支。
前提条件(须全部满足):
- Claude Code v2.1.83+
- Anthropic API:Claude Opus 4.6+ 或 Sonnet 4.6;Bedrock / Vertex AI / Foundry 仅支持 Sonnet 5、Opus 4.7/4.8,且须设环境变量
CLAUDE_CODE_ENABLE_AUTO_MODE=1 - Team/Enterprise 计划需 Owner 在后台先行开启
分类器连续拦截 3 次或累计拦截 20 次后,auto 模式自动暂停并回退为普通询问提示。在对话中主动说出的边界(如「不要推送」)会被分类器识别为阻断信号,直到用户在后续消息中解除;若要保证边界永久生效,应改用 deny 规则。
dontAsk 与 bypassPermissions 模式
dontAsk:自动拒绝所有会触发弹窗的工具调用,只有permissions.allow中预先声明的工具和只读 Bash 命令可以执行,专为无人值守的 CI 脚本设计。Web 云端会话忽略defaultMode: "dontAsk"。bypassPermissions:跳过权限弹窗与安全检查,所有工具立即执行(自 v2.1.126 起也包含受保护路径写入)。但显式 ask 规则在此模式下仍会强制弹窗,针对文件系统根目录或家目录的删除(如rm -rf /、rm -rf ~)也仍有熔断提示。仅应在隔离容器或虚拟机中使用,不支持 root/sudo 身份启动,Web 云端会话不支持此模式。管理员可在 managed settings 中设permissions.disableBypassPermissionsMode: "disable"来禁止使用。
受保护路径
以下目录和文件在大多数模式下写入操作受到保护(dontAsk 下自动拒绝,auto 下路由分类器,其余模式弹窗确认):
- 目录:
.git、.vscode、.idea、.husky、.claude(.claude/worktrees除外)、.cargo、.yarn、.devcontainer等 - 文件:
.gitconfig、.gitmodules、.bashrc、.zshrc、.npmrc、.yarnrc、.mcp.json、.claude.json等 shell 及工具配置文件
permissions.allow 规则无法绕过受保护路径检查——安全检查优先级高于 allow 规则。在会弹窗的模式下,针对 .claude/ 写入的提示框会额外提供「允许 Claude 在本次会话编辑自身设置」的选项,批准后该会话内后续的 .claude/ 写入将不再重复询问。