Appearance
权限模式
Claude Code 的权限模式决定每次操作前需不需要你批准。default 模式逐一询问,适合敏感工作;acceptEdits 自动接受文件编辑,方便快速迭代;plan 只读探索代码库不做修改;auto 模式用分类器自动判断安全性,减少打断;dontAsk 只允许预批准的工具,适合 CI;bypassPermissions 跳过全部检查,仅限隔离容器。切换方式:Shift+Tab 循环、--permission-mode 启动参数、settings.json 持久化默认值。
Claude Code 在每次编辑文件、运行 Shell 命令或发网络请求前,会暂停请求你审批。权限模式控制这个暂停的频率。default 模式逐一审批,较宽松的模式让 Claude 工作更长时间后再汇报。敏感工作多加管控,信任方向时少打断。
可用模式
| 模式 | 无需询问即可执行 | 适合场景 |
|---|---|---|
default | 仅读操作 | 入门、敏感工作 |
acceptEdits | 读操作、文件编辑、常见文件系统命令(mkdir、touch、mv、cp 等) | 迭代代码、事后 git diff 审查 |
plan | 仅读操作 | 改动前先探索代码库 |
auto | 全部操作(后台安全检查) | 长任务、减少询问疲劳 |
dontAsk | 仅预批准的工具 | 锁定的 CI 和脚本 |
bypassPermissions | 除受保护路径外的全部操作 | 仅限隔离容器/VM |
无论哪种模式,向受保护路径写入永远不会被自动批准,以防止意外损坏仓库状态和 Claude 自身配置。
模式设定基准,可在任何模式(bypassPermissions 除外)上叠加权限规则来预批准或拒绝特定工具。
切换权限模式
会话中:按 Shift+Tab 循环切换 default → acceptEdits → plan。当前模式显示在状态栏。
特殊模式不在默认循环中:
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 edits | default |
| Edit automatically | acceptEdits |
| Plan mode | plan |
| Auto mode | auto |
| Bypass permissions | bypassPermissions |
acceptEdits:自动接受文件编辑
acceptEdits 模式让 Claude 无需询问即可在工作目录中创建和编辑文件。状态栏显示 ⏵⏵ accept edits on。
除文件编辑外,还自动批准这些常见文件系统 Bash 命令:mkdir、touch、rm、rmdir、mv、cp、sed。带安全环境变量前缀(如 LANG=C、NO_COLOR=1)或进程包装器(如 timeout、nice、nohup)的命令同样自动批准。
自动批准仅适用于工作目录或 additionalDirectories 内的路径。目录外的路径、向受保护路径的写入、其他所有 Bash 命令仍然询问。
适合场景:在编辑器或 git diff 里事后审阅变更,而不是内联逐一批准每个编辑。
从 default 模式按一次 Shift+Tab 进入,或直接启动:
bash
claude --permission-mode acceptEditsplan:只读规划不做修改
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 dontAskbypassPermissions:跳过所有检查
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
在 default、acceptEdits、plan、bypassPermissions 模式下这些写入会提示;auto 模式下路由到分类器;dontAsk 模式下被拒绝。
相关文档
- 权限:allow、ask、deny 规则;auto 模式分类器配置;托管策略
- Hooks:通过
PreToolUse和PermissionRequesthooks 实现自定义权限逻辑 - 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: 不会。只自动批准 mkdir、touch、rm、rmdir、mv、cp、sed 这几个文件系统命令,且仅限工作目录内的路径。其他 Bash 命令仍然询问。
Q: auto 模式的分类器会拦截我的正常操作怎么办?
A: 运行 /permissions 查看被拒绝的操作,按 r 手动批准。如果是组织内的受信任服务,请管理员通过 autoMode.environment 设置添加到信任列表。