权限与权限模式
权限决定了 Claude Code 在不停下来询问你的情况下能做什么。调好了,你既有顺畅的工作流又不失掌控;调坏了,你要么对一切机械地放行,要么被询问淹没。
三种裁决
每个潜在操作都会归结为以下三者之一:
- allow(允许)——直接执行,不询问。
- ask(询问)——暂停并询问你(这是未被明确允许/拒绝的任何操作的默认行为)。
- deny(拒绝)——绝不执行,即便被请求也不行。
规则通常匹配某个工具加上一个模式,例如允许 Bash(npm run test:*),或拒绝 Read(./.env)。
权限模式
模式为整个会话设定总体姿态:
| 模式 | 行为 | 适用场景 |
|---|---|---|
| default / ask | 对任何未预先允许的操作都询问 | 日常工作 |
| plan | 只读;只提方案,从不动手 | 大型/有风险任务——见规划模式 |
| acceptEdits | 自动接受文件编辑 | 一个可信、范围明确的编辑会话 |
| bypass / yolo | 完全跳过询问 | 仅限沙箱/CI——绝不要在有密钥的机器上用 |
:::warning Bypass 只属于沙箱 在你的真实机器上关闭所有询问运行,正是智能体最终碰到它不该碰的东西的方式。请把它留给一次性环境。见加固自主运行。 :::
一份合理的初始允许清单
目标:预先允许那些安全、重复的操作;把破坏性操作保持在 ask 或 deny。
- 允许: 读取文件,运行你的 test/lint/build 命令,git status/diff。
- 询问: 安装依赖,向项目外写文件,网络调用。
- 拒绝: 读取密钥文件(
.env、密钥文件),强制推送,rm -rf。
把项目规则存到 settings.json(共享),把个人覆盖项存到 settings.local.json。
:::tip 让它从你的批准中学习 对同一个安全命令批准几次之后,你就会清楚该往允许清单里加什么——把反复出现的询问变成一次性的规则。 :::
下一步
- settings.json:配置系统
- 钩子——以确定性方式强制规则,超越 allow/deny
- 安全与负责任使用