跳到主要内容

权限与权限模式

进阶
What you'll learn
  • 三种权限裁决(allow / ask / deny)各自的含义
  • 权限规则如何匹配某个工具加上一个模式
  • 六种权限模式,以及各自的适用时机
  • auto 模式如何用安全分类器取代询问
  • 如何构建一份合理的初始允许清单,在不牺牲安全的前提下减少询问
  • 项目级与个人级权限规则分别存放在哪里

权限决定了 Claude Code 在不停下来询问你的情况下能做什么。调好了,你既有顺畅的工作流又不失掌控;调坏了,你要么对一切机械地放行,要么被询问淹没。

三种裁决

每个潜在操作都会归结为以下三者之一:

按 Enter 或空格键翻转卡片。使用左右方向键在卡片之间切换。已显示术语。
1 / 3

规则通常匹配某个工具加上一个模式,例如允许 Bash(npm run test:*),或拒绝 Read(./.env)

允许某个工具 + 模式

Bash(npm run test:*)

拒绝某个工具 + 模式

Read(./.env)

权限模式

模式为整个会话设定总体姿态。一共有六种。常用的几种可以用 Shift+Tab 循环切换,也可以在设置中指定 permissions.defaultMode

模式无需询问即可运行适用场景
default(显示为 Manual仅读取日常工作、敏感改动
acceptEdits读取、文件编辑、常见文件系统命令一个可信、范围明确的编辑会话
plan仅读取;只提方案,从不编辑大型/有风险任务——见规划模式
auto一切操作,但由安全分类器把关长任务,真正的风险是询问疲劳
dontAsk只有预先批准的工具;其余一律拒绝受限的 CI 与脚本
bypassPermissions一切操作,不做任何检查仅限沙箱/容器——绝不要在有密钥的机器上用

Auto 模式

auto 是"对一切都询问"与"关闭安全机制"之间的折中。它不再询问你,而是由一个独立的分类器模型在每个操作执行前进行审查,阻止那些超出你所要求范围的升级行为、触及它不认识的基础设施的行为,或者看起来是由 Claude 刚读到的恶意内容所驱动的行为。明确的 ask 规则仍然会停下来询问你。

它会阻止诸如 curl | bash、强制推送、生产环境部署与数据库迁移、以及把密钥发送到外部端点之类的操作——同时让常规工作(本地编辑、安装已声明的依赖、只读 HTTP 请求、推送到你自己的分支)畅通无阻。如果它反复阻止同一个操作,auto 模式会暂停,并把询问权交还给你。

Auto 模式并非安全保证——它减少询问,但并不免除你审查敏感操作的必要。它是否可用取决于你的套餐、模型,以及(在 Team/Enterprise 上)管理员的开关。

Watch out
  • bypassPermissions 只属于沙箱。在你的真实机器上关闭所有询问运行,正是智能体最终碰到它不该碰的东西的方式。请把它留给一次性环境——如果你真正想要的是更少的询问,那就改用 auto 模式。见“加固自主运行”:/docs/security/hardening-autonomous-runs。

一份合理的初始允许清单

目标:预先允许那些安全、重复的操作;把破坏性操作保持在 askdeny

Guided walkthrough1 of 3
  1. 读取文件,运行你的 test/lint/build 命令,git status/diff。

把项目规则存到 settings.json(共享),把个人覆盖项存到 settings.local.json

Pro tip
  • 让它从你的批准中学习:对同一个安全命令批准几次之后,你就会清楚该往允许清单里加什么——把反复出现的询问变成一次性的规则。
Key takeaways
  • 三种裁决:allow(不询问)、ask(默认——暂停并确认)、deny(绝不执行)。
  • 规则匹配某个工具加上一个模式,例如 Bash(npm run test:*) 或 Read(./.env)。
  • 六种模式设定会话姿态:default(Manual)、acceptEdits、plan、auto、dontAsk、bypassPermissions。
  • auto 模式用安全分类器筛查每个操作,而不是询问你——应对询问疲劳该用它,而不是 bypassPermissions。
  • 构建允许清单:允许安全且重复的操作,对中等风险的操作询问,拒绝破坏性操作。
  • 共享规则放进 settings.json;个人覆盖项放进 settings.local.json。

自测一下

0/5
  1. 对于未被明确允许或拒绝的操作,默认的 'ask' 裁决会做什么?
  2. 哪种权限模式只在沙箱或容器中安全,而绝不应在有密钥的机器上使用?
  3. 在一个长任务中,你希望权限询问大幅减少,但仍想要一张安全网。该用哪种模式?
  4. 共享的项目权限规则与个人覆盖项应分别存放在哪里?
  5. 在一份合理的初始允许清单中,下列哪项应归入 'deny' 清单?

下一步