1. 基本用法
--permission-mode 是 Claude Code CLI 的启动参数,用于控制工具调用的权限询问策略。
claude --permission-mode <模式>
不是 slash 命令(不能直接在对话中输入 /permission-mode)。
2. 支持的权限模式
我目前在使用的版本(v2.1.118)共支持 6 种模式:
| 模式 | 效果 | 风险 |
|---|---|---|
default | 每次工具调用前都询问(默认行为) | 安全 |
acceptEdits | 自动允许读操作和 MCP 调用,仅写操作(编辑、写入文件等)弹提示 | 中等 |
bypassPermissions | 完全跳过所有权限检查 | 高 |
dontAsk | 从不询问(等价于一直允许) | 高 |
plan | 仅允许只读操作和搜索类操作(计划模式) | 安全 |
auto | AI 智能判断是否放行(需 classifier 支持) | 中等 |
关于 auto 模式
- 仅在启用了
TRANSCRIPT_CLASSIFIER特性标志的构建版本中可用 - Ant 内部版本默认包含此模式
- 可以通过
--delegate-permissions、--afk等别名触发 - 社区公开版通常不包含此模式
3. 版本差异
| 模式 | 社区版 / 公开版 | Ant 内部版 | CCR 远程模式 |
|---|---|---|---|
default | ✅ | ✅ | ✅ |
acceptEdits | ✅ | ✅ | ✅ |
bypassPermissions | ✅ | ✅ | ❌ |
dontAsk | ✅ | ✅ | ❌ |
plan | ✅ | ✅ | ✅ |
auto | ❌ | ✅ | ❌ |
其他版本注意事项
- CCR 远程模式(
CLAUDE_CODE_REMOTEenv):仅允许acceptEdits、plan、default三种模式 - Chrome 扩展:使用完全独立的权限系统(
ask、skip_all_permission_checks、follow_a_plan),与 CLI 不互通 - 旧版兼容:
--dangerously-skip-permissions等价于--permission-mode bypassPermissions,新版仍支持
4. 通过 settings.json 配置
除了 CLI 参数,也可以在 .claude/settings.json 中设置默认模式:
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
注意:
auto模式是会话级别的,保存到 settings 时会映射为default。
5. 快捷键循环切换
在 Claude Code 对话中,可以通过 Shift+Tab 快捷键循环切换权限模式:
// 快捷切换方式,部分版本只支持切换 default → acceptEdits → plan
default → acceptEdits → plan → bypassPermissions → auto → default
6. 快速查看你的版本支持哪些模式
claude --help | grep -A 3 "permission-mode"
输出中的 choices 列表即为当前版本支持的所有模式。
当前我分析的源码是 v2.1.88 版本
我目前在使用的cc的版本是 v2.1.118 版本