自学教程

Claude Code 控制与模式

简介

Claude Code 的控制模式(权限模式)是会话级运行控制开关,用来控制 Claude 执行文件修改、终端命令、MCP工具调用时,是否需要人工审批。
模式仅对当前会话生效,重启会话会恢复默认;不能绕过项目底层权限规则(.claude/rules、.claude/ignore)。

快捷键:Shift + Tab 循环切换模式(CLI / IDE插件通用)

四种核心模式

模式名称行为说明适用场景
Manual(默认模式)文件修改、终端命令、MCP工具调用全部需要人工确认,每次变更预览Diff后手动批准/拒绝日常开发、新项目、生产代码,最安全
Plan(计划模式)仅允许读取文件、分析代码、输出方案计划;禁止任何文件修改、执行命令,只做调研和方案设计大型重构、需求评估、风险预检查,先定方案再动手
Accept Edits(接受编辑)文件编辑、基础文件操作(mkdir、mv、cp)自动放行;执行shell命令、高危操作仍然需要审批批量重构、格式化、大量文件重命名,信任代码变更场景
Auto(自动模式)自动执行操作,内置安全风控自动识别高危行为;高危命令依然强制拦截询问沙箱环境、一次性批量任务、CI自动化,生产慎用

额外:bypassPermissions 绕过权限模式,完全跳过审批,风险极高,仅隔离测试容器使用,不推荐日常开发。

模式切换方式

1. 会话斜杠命令

/mode manual
/mode plan
/mode acceptEdits
/mode auto
/mode status     # 查看当前会话模式

2. 快捷键

Shift + Tab 循环切换模式:Manual → Plan → Accept Edits → Auto

3. CLI启动参数(会话初始模式,一次性生效)

# 直接以plan模式启动会话
claude --permission-mode plan

4. IDE插件

VS Code / JetBrains 插件底部状态栏,点击模式指示器,图形界面切换。

典型工作流:Plan模式先行(推荐最佳实践)

  1. 切换到 Plan 模式,提出需求
  2. Claude 读取代码、分析依赖,输出完整执行计划(修改文件清单、变更内容、风险点)
  3. 人工审核计划,调整方案
  4. 确认方案后,切换为 Manual 或 Accept Edits 执行修改
  5. 逐一审阅代码变更

示例对话:

/mode plan
把用户模块迁移到新目录,拆分类型定义与业务逻辑

Claude 将输出完整迁移方案,不会修改任何文件。审核完成后切换模式执行。

模式与权限体系关系

权限优先级:.claude/ignore > .claude/rules(项目规则) > 会话控制模式

  1. 控制模式只控制是否弹窗审批,不能突破项目规则黑名单。
  2. 即使开启Auto模式,如果 .claude/rules 禁止修改某个目录,Claude依然无法写入。
  3. 钩子、MCP、子代理、技能的操作,全部遵循当前会话模式。

模型控制命令(会话内)

/mode status         # 查看当前权限模式
/approve all         # 一次性批准所有待处理变更(谨慎使用)
/reject all          # 拒绝全部待执行操作
/abort               # 终止当前正在运行的任务,保留会话

模式配置持久化

可以在全局或项目 settings.json 设置会话初始默认模式:

{
  "initialPermissionMode": "manual"
}

可选值:manual、plan、acceptEdits

auto 不建议设置为默认启动模式。

使用场景推荐

✅ Manual(默认):绝大多数开发场景,新项目、生产代码、陌生项目
✅ Plan:大型重构、架构调整、代码审计、评估方案
✅ Accept Edits:批量文件整理、代码格式化、类型批量迁移
✅ Auto:本地沙箱、一次性脚本任务、CI流水线

❌ 不推荐:生产环境长期使用 Auto / bypassPermissions

常见问题

  1. 切换模式之后,仍然不能修改被rules禁止的文件
    模式仅控制审批弹窗,不能绕过项目权限规则。
  2. Plan模式下还能执行命令?
    Plan模式仅允许只读类查询命令(git status等),禁止修改文件、破坏性命令。
  3. 关闭会话再重新进入,模式会保留吗?
    不会,新建会话会加载 settings.json 的 initialPermissionMode,默认是Manual。
  4. Accept Edits 代表所有命令自动执行?
    不是,仅文件写入与基础文件操作自动放行,shell终端命令依然需要审批。

安全提示

  1. Auto模式自动执行代码与命令,仅限本地沙箱项目,严禁直接在生产项目长期开启。
  2. 任何模式都建议搭配 .claude/rules 做底层权限限制,双层防护。
  3. 执行批量变更时,优先使用Plan模式先审阅方案,确认后再执行。
标签:

0 条笔记