Skip to content

权限模式

Claude Code 的权限模式决定每次操作前需不需要你批准。default 模式逐一询问,适合敏感工作;acceptEdits 自动接受文件编辑,方便快速迭代;plan 只读探索代码库不做修改;auto 模式用分类器自动判断安全性,减少打断;dontAsk 只允许预批准的工具,适合 CI;bypassPermissions 跳过全部检查,仅限隔离容器。切换方式:Shift+Tab 循环、--permission-mode 启动参数、settings.json 持久化默认值。

Claude Code 在每次编辑文件、运行 Shell 命令或发网络请求前,会暂停请求你审批。权限模式控制这个暂停的频率。default 模式逐一审批,较宽松的模式让 Claude 工作更长时间后再汇报。敏感工作多加管控,信任方向时少打断。

可用模式

模式无需询问即可执行适合场景
default仅读操作入门、敏感工作
acceptEdits读操作、文件编辑、常见文件系统命令(mkdirtouchmvcp 等)迭代代码、事后 git diff 审查
plan仅读操作改动前先探索代码库
auto全部操作(后台安全检查)长任务、减少询问疲劳
dontAsk仅预批准的工具锁定的 CI 和脚本
bypassPermissions除受保护路径外的全部操作仅限隔离容器/VM

无论哪种模式,向受保护路径写入永远不会被自动批准,以防止意外损坏仓库状态和 Claude 自身配置。

模式设定基准,可在任何模式(bypassPermissions 除外)上叠加权限规则来预批准或拒绝特定工具。


切换权限模式

会话中:按 Shift+Tab 循环切换 defaultacceptEditsplan。当前模式显示在状态栏。

特殊模式不在默认循环中:

  • auto:用 --enable-auto-mode 或 settings.json 中等效设置启用后加入循环
  • bypassPermissions:用 --permission-mode bypassPermissions--dangerously-skip-permissions--allow-dangerously-skip-permissions 启动后加入循环(--allow- 变体加入循环但不立即激活)
  • dontAsk:不出现在循环中,用 --permission-mode dontAsk 设置

启动时

bash
claude --permission-mode plan

持久化默认值:在 settings.json 中设置:

json
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

-p 非交互模式同样支持 --permission-mode 标志。

VS Code 中点击提示框底部的模式指示器;或在 VS Code 设置中设置 claudeCode.initialPermissionMode

UI 标签与模式对应:

UI 标签模式
Ask before editsdefault
Edit automaticallyacceptEdits
Plan modeplan
Auto modeauto
Bypass permissionsbypassPermissions

acceptEdits:自动接受文件编辑

acceptEdits 模式让 Claude 无需询问即可在工作目录中创建和编辑文件。状态栏显示 ⏵⏵ accept edits on

除文件编辑外,还自动批准这些常见文件系统 Bash 命令:mkdirtouchrmrmdirmvcpsed。带安全环境变量前缀(如 LANG=CNO_COLOR=1)或进程包装器(如 timeoutnicenohup)的命令同样自动批准。

自动批准仅适用于工作目录或 additionalDirectories 内的路径。目录外的路径、向受保护路径的写入、其他所有 Bash 命令仍然询问。

适合场景:在编辑器或 git diff 里事后审阅变更,而不是内联逐一批准每个编辑。

从 default 模式按一次 Shift+Tab 进入,或直接启动:

bash
claude --permission-mode acceptEdits

plan:只读规划不做修改

Plan 模式告诉 Claude 只研究和提案,不做修改。Claude 可以读取文件、运行 Shell 命令探索,然后写出方案,但不编辑源代码。权限提示与 default 模式相同。

Shift+Tab 进入,或用 /plan 前缀单条提示,也可以启动时指定:

bash
claude --permission-mode plan

方案完成后,Claude 弹出对话框询问如何继续:

  • 批准并以 auto 模式开始
  • 批准并接受编辑
  • 批准并逐一审阅每次编辑
  • 继续规划并提供反馈
  • Ultraplan 在浏览器中精化

每个批准选项都可以选择先清除规划上下文。


auto:消除询问提示

Auto 模式让 Claude 无需权限提示即可执行。一个独立的分类器模型在执行前审查操作,阻止任何超出请求范围、针对未知基础设施、或由 Claude 读取的恶意内容驱动的操作。

可用条件(必须全部满足)

  • 计划:Team、Enterprise 或 API。Pro 或 Max 不可用
  • 管理员:Team 和 Enterprise 上,管理员须先在 Claude Code 管理设置 中启用。管理员也可在托管设置中设置 permissions.disableAutoMode: "disable" 关闭
  • 模型:Claude Sonnet 4.6 或 Opus 4.6。Haiku 或 claude-3 系列不可用
  • 提供商:仅 Anthropic API。Bedrock、Vertex、Foundry 不可用

满足后用标志启动,auto 加入 Shift+Tab 循环:

bash
claude --enable-auto-mode

分类器默认阻止的操作

分类器信任你的工作目录和仓库配置的远程地址,其他一切视为外部。

默认阻止

  • 下载并执行代码(如 curl | bash
  • 向外部端点发送敏感数据
  • 生产环境部署和迁移
  • 云存储批量删除
  • 授予 IAM 或仓库权限
  • 修改共享基础设施
  • 不可逆地删除会话开始前就存在的文件
  • Force push 或直接推送到 main

默认允许

  • 工作目录内的本地文件操作
  • 安装 lock file 或 manifest 中声明的依赖
  • 读取 .env 并将凭证发送给匹配的 API
  • 只读 HTTP 请求
  • 推送到你启动时所在分支或 Claude 创建的分支
  • 沙箱网络访问请求

运行 claude auto-mode defaults 查看完整规则列表。如果常规操作被阻止,管理员可通过 autoMode.environment 设置添加受信任的仓库、存储桶和服务,参见配置 auto 模式分类器

Auto 模式回退

每次被拒绝的操作会显示通知,并出现在 /permissions 的"Recently denied"标签下,按 r 可手动审批后重试。

如果分类器连续阻止 3 次或总计阻止 20 次,auto 模式暂停并恢复询问。批准下一个被提示的操作后,auto 模式恢复。

-p 非交互模式下,连续阻止会中止会话,因为没有用户可以提示。


dontAsk:只允许预批准的工具

dontAsk 模式自动拒绝每个不在 permissions.allow 规则中的工具。显式 ask 规则也被拒绝而不是询问。适合 CI 流水线或受限环境,预先定义 Claude 能做什么。

bash
claude --permission-mode dontAsk

bypassPermissions:跳过所有检查

bypassPermissions 模式禁用权限提示和安全检查,工具调用立即执行。只有向受保护路径写入时仍然提示。

仅在隔离环境中使用,如容器、VM 或没有互联网访问的 devcontainer,Claude Code 无法损坏宿主系统。

bash
claude --permission-mode bypassPermissions
# 等价于
claude --dangerously-skip-permissions

受保护路径

无论哪种模式,向以下路径写入永不自动批准:

受保护目录

  • .git
  • .vscode
  • .idea
  • .husky
  • .claude(例外:.claude/commands.claude/agents.claude/skills.claude/worktrees 允许 Claude 常规创建内容)

受保护文件

  • .gitconfig.gitmodules
  • .bashrc.bash_profile.zshrc.zprofile.profile
  • .ripgreprc
  • .mcp.json.claude.json

defaultacceptEditsplanbypassPermissions 模式下这些写入会提示;auto 模式下路由到分类器;dontAsk 模式下被拒绝。


相关文档

  • 权限:allow、ask、deny 规则;auto 模式分类器配置;托管策略
  • Hooks:通过 PreToolUsePermissionRequest hooks 实现自定义权限逻辑
  • Ultraplan:在 Claude Code on the web 会话中以浏览器审阅界面运行 plan mode
  • 安全:安全保障和最佳实践
  • 沙箱:Bash 命令的文件系统和网络隔离

常见问题

Q: Shift+Tab 循环里没有 auto 模式,怎么加进去?

A: Auto 模式默认不在循环中,需要用 claude --enable-auto-mode 启动一次,或在 settings.json 中设置持久化默认值后,它才会加入 Shift+Tab 循环。

Q: acceptEdits 模式会自动执行所有 Bash 命令吗?

A: 不会。只自动批准 mkdirtouchrmrmdirmvcpsed 这几个文件系统命令,且仅限工作目录内的路径。其他 Bash 命令仍然询问。

Q: auto 模式的分类器会拦截我的正常操作怎么办?

A: 运行 /permissions 查看被拒绝的操作,按 r 手动批准。如果是组织内的受信任服务,请管理员通过 autoMode.environment 设置添加到信任列表。