Claude Code 通过 settings.json 文件和权限模式两套机制控制工具调用权限。
配置文件层级
优先级从高到低:
| 文件 | 作用域 | 说明 |
|---|---|---|
/Library/Application Support/ClaudeCode/policies.json | 企业级 | 最高优先级,管理员部署(macOS) |
/etc/claude-code/policies.json | 企业级 | Linux/WSL 企业策略 |
~/.claude/settings.json | 全局用户 | 所有项目生效 |
.claude/settings.json | 项目共享 | 提交到 git,团队共享 |
.claude/settings.local.json | 项目本地 | git 忽略,个人专属 |
权限规则格式
{
"permissions": {
"allow": [
"Bash(npm run lint)",
"Bash(npm run test:*)",
"Read(~/.zshrc)",
"Edit(**/*)",
"Write(**/*)"
],
"deny": [
"Bash(curl:*)",
"Bash(sudo:*)"
]
}
}通配符规则:
*匹配单层路径**匹配多层路径Bash(npm run *)匹配所有 npm run 子命令
六种权限模式
通过 initialPermissionMode 设置默认模式:
{
"permissions": {
"initialPermissionMode": "acceptEdits"
}
}| 模式 | 说明 | 适用场景 |
|---|---|---|
default | 只读,所有编辑/命令需手动批准 | 陌生代码库、生产环境 |
plan | 只分析,不改动任何文件 | 需求梳理、方案评估 |
acceptEdits | 自动批准文件编辑,Shell 命令仍需确认 | 日常开发推荐 |
auto | 全自动 + 内置安全校验 | 长时间迭代开发 |
dontAsk | 只允许预先配置的操作 | CI 自动化流程 |
bypassPermissions | 跳过所有权限检查 | 仅沙箱/测试环境 |
查看与管理权限
会话中输入 /permissions 查看当前三类权限明细:
- Allow:自动批准的操作
- Ask:需手动确认的操作
- Deny:直接禁止的操作
通过 /allowed-tools 可交互式管理权限列表,修改会同步写入 settings.json。
注意事项
- 配置修改后无需重启即可生效(新会话读取最新配置)
- 通配符权限(如
Bash(*))优先级高于精确匹配,精确匹配规则可删除 - 企业策略文件优先级最高,会覆盖用户和项目级配置
相关页面
- claude-code-fork —
/fork命令创建独立会话分支 - 2604.14228_dive-into-claude-code — Claude Code 架构深度分析
- openclaw-sessions-tools — OpenClaw 子 Agent 会话工具