权限与 settings.json
权限:三档
权限决定"哪些操作不用问你"。下面是一份保守的示例:读类操作放行,提交/推送/远程命令要确认,危险操作和密钥文件禁止。
.claude/settings.example.json 下载{
"permissions": {
"allow": [
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(ls:*)",
"Bash(wc:*)",
"Bash(node --check:*)",
"Bash(python -m py_compile:*)",
"Read",
"Glob",
"Grep"
],
"ask": [
"Bash(git commit:*)",
"Bash(git push:*)",
"Bash(scp:*)",
"Bash(ssh:*)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(git reset --hard:*)",
"Read(./.env)",
"Read(./secrets/**)"
]
}
}
安装脚本不会改你的
settings.json,只生成 settings.kit-example.json;你自己对比后再合并。权限(Permission)
Claude Code 每次要跑命令或改文件前,会看权限设置。设置写在 settings.json,有几层,越靠上越优先:
| 层级 | 位置 |
|---|---|
| 公司统一管理 | managed-settings.json 等 |
| 本次启动参数 | claude --settings |
| 项目本地(个人,不入库) | .claude/settings.local.json |
| 项目共享 | .claude/settings.json |
| 用户全局 | ~/.claude/settings.json(Windows:C:\Users\用户名\.claude\settings.json) |
{
"permissions": {
"allow": ["Bash(git status:*)", "Bash(npm run build)"],
"deny": ["Bash(rm -rf:*)"]
}
}
allow 里的不再询问,deny 里的直接拒绝,其余按当前"模式"处理。常见模式从严到松:手动确认(default)→ 自动接受编辑(acceptEdits)→ 自动(auto,后台有审核)→ 只按清单(dontAsk)→ 计划模式(plan,只看不改)→ 跳过所有检查(bypassPermissions,官方建议只在隔离环境用)。按 Shift+Tab 可以在对话中切换模式。官方说明:设置、权限。
T00 的经验:不要为了省点击就把所有检查都关掉。更好的办法是把"每天重复做的固定命令"逐条加进 allow 清单。