标签#权限系统#安全#模式切换#配置管理Claude Code 拥有强大的自主能力但这种能力必须被关进“安全的笼子”。权限系统就是那个笼子——它决定了 AI 什么时候可以放手去做什么时候必须停下来问你。1. 为什么需要权限系统Agent 模式的本质是“AI 替你执行操作”。但如果 AI 可以随意修改文件、删除目录、运行危险的 shell 命令后果不堪设想。想象一下这些场景你在生产服务器上运行claudeAI 误以为需要删除node_modules并重新安装执行了rm -rf node_modules虽然不会直接删库但也很麻烦AI 在重构代码时错误地覆盖了重要的配置文件你在 CI 环境中让 AI 自动修复代码但它陷入了无限循环不断提交修改权限系统的目标让 AI 能够完成工作但默认不信任任何写操作或危险命令提供灵活的模式让用户根据场景平衡“便利性”与“安全性”记录所有操作便于审计和回滚Claude Code 提供了四种权限模式从最安全到最自动依次为Plan → Default → Bypass → Auto。2. 四种模式速览模式读操作写操作Edit/WriteShell 命令典型场景Plan允许自动禁止只输出计划不执行禁止除非只读命令如ls高风险任务前的审核Default允许自动请求确认显示 diff请求确认显示完整命令日常开发推荐Bypass允许自动允许需用户预先批准自动允许需预先配置白名单信任的本地项目Auto允许自动允许无确认自动允许无确认CI/CD、自动化脚本注意即使是 Auto 模式Claude Code 也不会执行某些极度危险的命令如rm -rf /内置了硬编码黑名单。3. 模式详解3.1 Plan 模式——先看方案再动手适用场景你不确定 AI 的计划是否合理或者任务涉及修改重要配置、生产环境相关代码。行为AI 会完整分析任务输出详细的执行计划包括要修改哪些文件、执行哪些命令AI不会调用任何修改性工具Write、Edit、Bash 执行非只读命令你可以审核计划然后手动切换到其他模式让 AI 执行或修改指令后重新生成计划如何进入/mode plan对话示例Claude Code /mode plan Switched to Plan mode. I will only propose plans, not execute changes. Claude Code 帮我将项目中的 axios 替换为 fetchAI 输出[Plan] 将 axios 替换为 fetch 我将执行以下步骤 1. 搜索所有 import axios from axios 或 require(axios) 的文件预计约 8 个文件 2. 读取这些文件分析 axios 的使用方式主要是 .get/.post 和拦截器 3. 对于每个文件 a. 移除 axios 导入 b. 添加 fetch 包装函数复用已有的 fetch 配置或创建新的 c. 将 axios 调用改为 fetch 调用处理响应和错误 4. 移除 package.json 中的 axios 依赖 5. 运行 npm test 确保功能正常 是否继续输入 execute 让我切换到 Default 模式并执行或 modify 修改计划。你审阅后可以输入executeAI 会提示你先手动切换到 Default 或 Auto 模式然后重新触发任务。Plan 模式的技巧可以用/mode default后再执行或者直接说“按照上面的计划执行但每次修改前让我确认”Plan 模式也能帮助你自己理清思路——让 AI 输出计划后再决定是否真的需要改动3.2 Default 模式——日常开发的安全平衡点适用场景绝大多数开发任务你想要效率但又希望控制风险。行为读操作Read、LS、Grep自动执行无需确认写操作Write、Edit弹出确认提示显示将要修改的文件和 diff 内容Shell 命令弹出确认提示显示完整命令并标注是否危险如rm,sudo,chmod等你可以在确认时选择y- 执行本次操作n- 拒绝本次操作AI 会尝试其他方案a- 本次会话中对此类操作全部允许类似于临时 BypassN- 拒绝并禁止 AI 再次尝试相同操作如何进入/mode default确认提示示例Claude Code wants to edit src/utils.js Diff: -12,6 12,7 function formatPrice(price) { if (price 0) return Invalid price; return $${price.toFixed(2)}; } Allow this edit? (y/n/a/N)Default 模式的最佳实践保持默认模式不要轻易切换除非你完全信任当前项目对于频繁确认的操作比如一次重构需要修改 20 个文件可以临时使用a允许本次会话的所有同类操作但不要全局 Bypass定期检查/cost和操作历史了解 AI 做了哪些事3.3 Bypass 模式——信任项目的半自动模式适用场景你完全信任当前项目如个人 side project、完全受控的开发容器不想每次操作都点确认但仍希望对某些危险命令保持警惕。行为读操作自动写操作自动允许但会记录日志Shell 命令根据白名单判断。默认白名单包含npm,yarn,pip,git等常见安全命令危险命令如rm,mv覆盖重要文件,sudo仍需确认你可以自定义白名单见下文配置如何进入/mode bypass配置白名单在~/.config/claude-code/config.toml或项目.claude/config.toml[permissions.bypass] # 自动允许的命令前缀 allowed_commands [ npm run, npm test, git status, git diff, ls, cat, echo, python, node ] # 仍然需要确认的命令可覆盖默认危险模式 dangerous_commands [ rm -rf, sudo, chmod, kill ]注意Bypass 模式不是“无限制”。内置的安全黑名单如rm -rf /,:(){ :|: };:等 fork bomb在任何模式下都不会执行。3.4 Auto 模式——无人值守的完全自动化适用场景CI/CD 流水线、自动化脚本、预提交钩子等非交互环境。行为所有操作读、写、Shell自动允许无任何确认提示但仍然遵循内置安全黑名单适合与--print非交互参数结合使用如何进入/mode auto或在启动时指定claude--modeautoCI 示例GitHub Actions-name:Run Claude Code to fix lint issuesrun:|echo 修复 ESLint 错误 | claude --mode auto --printenv:ANTHROPIC_API_KEY:${{secrets.ANTHROPIC_API_KEY}}⚠️ 警告Auto 模式会自主修改文件、提交代码。务必在 CI 中限制权限如只允许在 PR 分支上运行且不自动 push建议结合--allowed-tools进一步限制如只允许Read,Grep禁止Write,Bash始终在 Auto 模式前运行claude --dry-run或 Plan 模式预演4. 模式切换实战4.1 典型工作流新任务/高风险任务/mode plan让 AI 输出计划 → 审阅 → 满意后输入/mode default或手动执行。日常开发/mode default边确认边执行既安全又不烦人批量操作时用a暂时允许。重构已熟悉的模块/mode bypass信任项目但危险命令仍需确认。CI 自动修复claude--modeauto--print自动修复 lint 错误4.2 单次命令临时提升权限你不需要全局切换模式。在 Default 模式下如果 AI 请求执行一个操作你可以直接回复“允许本次操作”或“允许所有类似的编辑操作本次会话”。例如Claude Code 修改 src/theme.js 中的颜色变量 [AI 显示 diff请求确认] 你输入a # 表示本次会话中所有编辑操作都自动允许这相当于临时进入 Bypass 模式但仅对写操作有效且仅限当前会话。5. 安全边界与黑名单无论哪种模式Claude Code 都不会执行以下操作硬编码保护类别禁止的命令/模式文件系统破坏rm -rf /,rm -rf /*,dd if/dev/zero of/dev/sda权限提升sudo后跟危险命令某些白名单内的sudo允许如sudo apt update会请求确认系统配置修改/etc/passwd,/etc/shadow,/etc/sudoers远程破坏curl …Fork bomb:(){ :加密勒索类不会执行加密或删除用户数据的命令同时Claude Code 在尝试读取.env,*.pem,id_rsa等敏感文件时会发出警告并建议你不要将其包含在上下文中。6. 常见问题与解决方案Q1: 我在 Default 模式下AI 要修改 30 个文件每个都要按 y太累了。怎么办A: 在第一个确认提示时输入aAllow all for this session后续所有编辑操作会自动允许但 shell 命令仍需确认。或者临时切换到 Bypass 模式/mode bypass。Q2: AI 在 Auto 模式下跑飞了执行了危险的 rm 命令怎么办A: 首先内置黑名单会阻止最危险的命令。但如果 AI 执行了rm ./important.log非全局删除系统会允许。建议不要在 Auto 模式下运行未经充分测试的任务。先 Plan 模式审核或用--allowed-tools限制工具集。Q3: 我想让 AI 永远不需要确认编辑操作但仍需要确认 shell 命令。A: 使用 Bypass 模式并在配置中设置[permissions.bypass] allowed_commands [] # 空列表意味着所有 shell 命令都需要确认然后手动确认每个命令。或者保持 Default 模式但回答a来允许所有编辑。Q4: 如何查看当前模式A: 输入/mode不带参数会显示当前模式及可用的模式列表。Q5: 能否为不同项目设置不同的默认模式A: 可以。在项目根目录的.claude/config.toml中设置[mode] default bypass # 该项目默认使用 bypass 模式7. 与其他工具的权限对比工具权限模型是否支持计划先行危险命令黑名单Claude Code四级模式 用户确认 黑名单✅ (Plan)✅GitHub Copilot无只建议不执行❌不适用Cursor需手动点“Apply”或“Run”❌有限需插件Aider自动提交但需确认❌无AutoGPT无用户需时刻监控❌无Claude Code 的权限系统是目前终端 AI 工具中最完善的兼顾了安全、灵活性和自动化需求。8. 下篇预告权限系统管住了 AI 的“手脚”但要让 AI 发挥最大效用你需要学会如何“说话”——提示词Prompt的核心技巧。下一篇将深入讲解如何编写高效的提示词让 Claude Code 准确理解你的意图。下一篇提示词Prompt核心技巧上下文、预期行动、成功标准缺一不可思考题自测理解你在 CI 流水线中想要 Claude Code 自动修复常见的 lint 问题并提交 PR。应该使用哪种模式需要注意哪些安全问题为什么 Plan 模式下仍然允许读操作如果禁止读操作Plan 模式还能工作吗假设你想让 AI 在 Default 模式下自动允许npm test命令因为它只是运行测试不修改代码但保留对其他命令的确认。能否通过配置实现如何做安全是自由的边界。掌握权限模式你就能放心地把更多工作交给 AI。下一章我们将把 AI 的能力发挥到极致——从“会说”到“会做”。
第十二篇:权限系统深度解析:Default、Plan、Bypass、Auto四种模式如何保护代码安全?
发布时间:2026/5/27 3:24:06
标签#权限系统#安全#模式切换#配置管理Claude Code 拥有强大的自主能力但这种能力必须被关进“安全的笼子”。权限系统就是那个笼子——它决定了 AI 什么时候可以放手去做什么时候必须停下来问你。1. 为什么需要权限系统Agent 模式的本质是“AI 替你执行操作”。但如果 AI 可以随意修改文件、删除目录、运行危险的 shell 命令后果不堪设想。想象一下这些场景你在生产服务器上运行claudeAI 误以为需要删除node_modules并重新安装执行了rm -rf node_modules虽然不会直接删库但也很麻烦AI 在重构代码时错误地覆盖了重要的配置文件你在 CI 环境中让 AI 自动修复代码但它陷入了无限循环不断提交修改权限系统的目标让 AI 能够完成工作但默认不信任任何写操作或危险命令提供灵活的模式让用户根据场景平衡“便利性”与“安全性”记录所有操作便于审计和回滚Claude Code 提供了四种权限模式从最安全到最自动依次为Plan → Default → Bypass → Auto。2. 四种模式速览模式读操作写操作Edit/WriteShell 命令典型场景Plan允许自动禁止只输出计划不执行禁止除非只读命令如ls高风险任务前的审核Default允许自动请求确认显示 diff请求确认显示完整命令日常开发推荐Bypass允许自动允许需用户预先批准自动允许需预先配置白名单信任的本地项目Auto允许自动允许无确认自动允许无确认CI/CD、自动化脚本注意即使是 Auto 模式Claude Code 也不会执行某些极度危险的命令如rm -rf /内置了硬编码黑名单。3. 模式详解3.1 Plan 模式——先看方案再动手适用场景你不确定 AI 的计划是否合理或者任务涉及修改重要配置、生产环境相关代码。行为AI 会完整分析任务输出详细的执行计划包括要修改哪些文件、执行哪些命令AI不会调用任何修改性工具Write、Edit、Bash 执行非只读命令你可以审核计划然后手动切换到其他模式让 AI 执行或修改指令后重新生成计划如何进入/mode plan对话示例Claude Code /mode plan Switched to Plan mode. I will only propose plans, not execute changes. Claude Code 帮我将项目中的 axios 替换为 fetchAI 输出[Plan] 将 axios 替换为 fetch 我将执行以下步骤 1. 搜索所有 import axios from axios 或 require(axios) 的文件预计约 8 个文件 2. 读取这些文件分析 axios 的使用方式主要是 .get/.post 和拦截器 3. 对于每个文件 a. 移除 axios 导入 b. 添加 fetch 包装函数复用已有的 fetch 配置或创建新的 c. 将 axios 调用改为 fetch 调用处理响应和错误 4. 移除 package.json 中的 axios 依赖 5. 运行 npm test 确保功能正常 是否继续输入 execute 让我切换到 Default 模式并执行或 modify 修改计划。你审阅后可以输入executeAI 会提示你先手动切换到 Default 或 Auto 模式然后重新触发任务。Plan 模式的技巧可以用/mode default后再执行或者直接说“按照上面的计划执行但每次修改前让我确认”Plan 模式也能帮助你自己理清思路——让 AI 输出计划后再决定是否真的需要改动3.2 Default 模式——日常开发的安全平衡点适用场景绝大多数开发任务你想要效率但又希望控制风险。行为读操作Read、LS、Grep自动执行无需确认写操作Write、Edit弹出确认提示显示将要修改的文件和 diff 内容Shell 命令弹出确认提示显示完整命令并标注是否危险如rm,sudo,chmod等你可以在确认时选择y- 执行本次操作n- 拒绝本次操作AI 会尝试其他方案a- 本次会话中对此类操作全部允许类似于临时 BypassN- 拒绝并禁止 AI 再次尝试相同操作如何进入/mode default确认提示示例Claude Code wants to edit src/utils.js Diff: -12,6 12,7 function formatPrice(price) { if (price 0) return Invalid price; return $${price.toFixed(2)}; } Allow this edit? (y/n/a/N)Default 模式的最佳实践保持默认模式不要轻易切换除非你完全信任当前项目对于频繁确认的操作比如一次重构需要修改 20 个文件可以临时使用a允许本次会话的所有同类操作但不要全局 Bypass定期检查/cost和操作历史了解 AI 做了哪些事3.3 Bypass 模式——信任项目的半自动模式适用场景你完全信任当前项目如个人 side project、完全受控的开发容器不想每次操作都点确认但仍希望对某些危险命令保持警惕。行为读操作自动写操作自动允许但会记录日志Shell 命令根据白名单判断。默认白名单包含npm,yarn,pip,git等常见安全命令危险命令如rm,mv覆盖重要文件,sudo仍需确认你可以自定义白名单见下文配置如何进入/mode bypass配置白名单在~/.config/claude-code/config.toml或项目.claude/config.toml[permissions.bypass] # 自动允许的命令前缀 allowed_commands [ npm run, npm test, git status, git diff, ls, cat, echo, python, node ] # 仍然需要确认的命令可覆盖默认危险模式 dangerous_commands [ rm -rf, sudo, chmod, kill ]注意Bypass 模式不是“无限制”。内置的安全黑名单如rm -rf /,:(){ :|: };:等 fork bomb在任何模式下都不会执行。3.4 Auto 模式——无人值守的完全自动化适用场景CI/CD 流水线、自动化脚本、预提交钩子等非交互环境。行为所有操作读、写、Shell自动允许无任何确认提示但仍然遵循内置安全黑名单适合与--print非交互参数结合使用如何进入/mode auto或在启动时指定claude--modeautoCI 示例GitHub Actions-name:Run Claude Code to fix lint issuesrun:|echo 修复 ESLint 错误 | claude --mode auto --printenv:ANTHROPIC_API_KEY:${{secrets.ANTHROPIC_API_KEY}}⚠️ 警告Auto 模式会自主修改文件、提交代码。务必在 CI 中限制权限如只允许在 PR 分支上运行且不自动 push建议结合--allowed-tools进一步限制如只允许Read,Grep禁止Write,Bash始终在 Auto 模式前运行claude --dry-run或 Plan 模式预演4. 模式切换实战4.1 典型工作流新任务/高风险任务/mode plan让 AI 输出计划 → 审阅 → 满意后输入/mode default或手动执行。日常开发/mode default边确认边执行既安全又不烦人批量操作时用a暂时允许。重构已熟悉的模块/mode bypass信任项目但危险命令仍需确认。CI 自动修复claude--modeauto--print自动修复 lint 错误4.2 单次命令临时提升权限你不需要全局切换模式。在 Default 模式下如果 AI 请求执行一个操作你可以直接回复“允许本次操作”或“允许所有类似的编辑操作本次会话”。例如Claude Code 修改 src/theme.js 中的颜色变量 [AI 显示 diff请求确认] 你输入a # 表示本次会话中所有编辑操作都自动允许这相当于临时进入 Bypass 模式但仅对写操作有效且仅限当前会话。5. 安全边界与黑名单无论哪种模式Claude Code 都不会执行以下操作硬编码保护类别禁止的命令/模式文件系统破坏rm -rf /,rm -rf /*,dd if/dev/zero of/dev/sda权限提升sudo后跟危险命令某些白名单内的sudo允许如sudo apt update会请求确认系统配置修改/etc/passwd,/etc/shadow,/etc/sudoers远程破坏curl …Fork bomb:(){ :加密勒索类不会执行加密或删除用户数据的命令同时Claude Code 在尝试读取.env,*.pem,id_rsa等敏感文件时会发出警告并建议你不要将其包含在上下文中。6. 常见问题与解决方案Q1: 我在 Default 模式下AI 要修改 30 个文件每个都要按 y太累了。怎么办A: 在第一个确认提示时输入aAllow all for this session后续所有编辑操作会自动允许但 shell 命令仍需确认。或者临时切换到 Bypass 模式/mode bypass。Q2: AI 在 Auto 模式下跑飞了执行了危险的 rm 命令怎么办A: 首先内置黑名单会阻止最危险的命令。但如果 AI 执行了rm ./important.log非全局删除系统会允许。建议不要在 Auto 模式下运行未经充分测试的任务。先 Plan 模式审核或用--allowed-tools限制工具集。Q3: 我想让 AI 永远不需要确认编辑操作但仍需要确认 shell 命令。A: 使用 Bypass 模式并在配置中设置[permissions.bypass] allowed_commands [] # 空列表意味着所有 shell 命令都需要确认然后手动确认每个命令。或者保持 Default 模式但回答a来允许所有编辑。Q4: 如何查看当前模式A: 输入/mode不带参数会显示当前模式及可用的模式列表。Q5: 能否为不同项目设置不同的默认模式A: 可以。在项目根目录的.claude/config.toml中设置[mode] default bypass # 该项目默认使用 bypass 模式7. 与其他工具的权限对比工具权限模型是否支持计划先行危险命令黑名单Claude Code四级模式 用户确认 黑名单✅ (Plan)✅GitHub Copilot无只建议不执行❌不适用Cursor需手动点“Apply”或“Run”❌有限需插件Aider自动提交但需确认❌无AutoGPT无用户需时刻监控❌无Claude Code 的权限系统是目前终端 AI 工具中最完善的兼顾了安全、灵活性和自动化需求。8. 下篇预告权限系统管住了 AI 的“手脚”但要让 AI 发挥最大效用你需要学会如何“说话”——提示词Prompt的核心技巧。下一篇将深入讲解如何编写高效的提示词让 Claude Code 准确理解你的意图。下一篇提示词Prompt核心技巧上下文、预期行动、成功标准缺一不可思考题自测理解你在 CI 流水线中想要 Claude Code 自动修复常见的 lint 问题并提交 PR。应该使用哪种模式需要注意哪些安全问题为什么 Plan 模式下仍然允许读操作如果禁止读操作Plan 模式还能工作吗假设你想让 AI 在 Default 模式下自动允许npm test命令因为它只是运行测试不修改代码但保留对其他命令的确认。能否通过配置实现如何做安全是自由的边界。掌握权限模式你就能放心地把更多工作交给 AI。下一章我们将把 AI 的能力发挥到极致——从“会说”到“会做”。