Claude Code /permissions:谁能干什么,你说了算
什么是 /permissions
用 Claude Code 的时候,你一定遇到过这种情况:
- Claude Code 想跑一条
npm install,弹窗问你”允许吗?” - 你点了允许,过一会儿它又要跑
npm test,又弹窗问你 - 一个任务下来,你可能要点十几次”允许”
另一个极端是,你受不了频繁弹窗,直接开了 bypass permissions 模式——但又隐隐不安,万一它跑了什么危险命令呢?
/permissions 就是解决这个问题的。 它让你精细控制 Claude Code 每一个工具的权限:哪些操作可以自动放行,哪些操作必须拦下来问你,哪些操作直接禁止。
不多不少,刚刚好。
权限系统的基本概念
在深入 /permissions 之前,先理解 Claude Code 的权限模型。
三种行为
每一条权限规则对应三种行为之一:
| 行为 | 含义 |
|---|---|
| allow | 自动放行,不弹窗 |
| deny | 直接拒绝,Claude Code 不会执行 |
| ask | 强制弹窗,即使在宽松模式下也要问你 |
规则格式
权限规则的格式是 工具名 或 工具名(内容):
Bash → 允许/拒绝/询问 所有 Bash 命令
Bash(npm install) → 只针对 "npm install" 这条命令
Bash(npm:*) → 所有以 "npm" 开头的命令(前缀匹配)
Bash(npm *) → 同上,通配符写法
Edit → 所有文件编辑操作
mcp__server1 → 某个 MCP 服务器的所有工具
mcp__server1__tool1 → MCP 服务器的某个具体工具
规则来源
权限规则可以来自多个地方,后面的覆盖前面的:
| 来源 | 文件路径 | 说明 |
|---|---|---|
| User | ~/.claude/settings.json | 全局规则,影响所有项目 |
| Project | <项目>/.claude/settings.json | 项目级,可提交 Git 共享 |
| Local | <项目>/.claude/settings.local.json | 项目级本地,已 gitignore |
| CLI | --allowedTools 等命令行参数 | 临时指定 |
| Managed | 企业托管设置 | 企业管理员下发,优先级最高 |
| Session | 当前会话中你的选择 | 只在本次会话有效 |
怎么用 /permissions
在 Claude Code 交互模式下输入:
/permissions
会弹出一个交互式面板,列出当前生效的所有权限规则。别名是 /allowed-tools。
在这个面板里你可以:
- 查看 所有 allow、deny、ask 规则,以及它们来自哪个配置源
- 删除 不再需要的规则
- 重试 被拒绝的操作——如果之前某个操作被 deny 了,你可以在这里解除限制并重试
在 settings.json 中配置权限
/permissions 面板适合查看和删除规则。但如果要批量添加规则,直接编辑 settings.json 更高效。
基本结构
{
"permissions": {
"allow": ["Bash(npm:*)", "Bash(git:*)", "Edit", "Read", "Glob", "Grep"],
"deny": ["Bash(rm -rf:*)", "Bash(sudo:*)"],
"ask": ["Bash(git push:*)"]
}
}
allow 规则示例
{
"permissions": {
"allow": [
"Bash(npm:*)",
"Bash(npx:*)",
"Bash(node:*)",
"Bash(git:*)",
"Bash(ls:*)",
"Bash(cat:*)",
"Bash(echo:*)",
"Bash(mkdir:*)",
"Bash(cp:*)",
"Bash(mv:*)",
"Edit",
"Write",
"Read",
"Glob",
"Grep",
"WebFetch",
"WebSearch",
"Agent",
"TodoWrite",
"mcp__github"
]
}
}
这组规则的效果是:
- 常见的开发命令(npm、git、node、文件操作)自动放行
- 文件读写和搜索工具自动放行
- GitHub MCP 服务器的所有工具自动放行
- 其他未列出的操作仍然会弹窗询问
deny 规则示例
{
"permissions": {
"deny": ["Bash(rm -rf:*)", "Bash(sudo:*)", "Bash(curl * | sh:*)", "Bash(wget * | sh:*)"]
}
}
这组规则直接禁止了危险操作:递归删除、sudo 提权、从网上下载脚本并执行。
ask 规则示例
{
"permissions": {
"ask": ["Bash(git push:*)", "Bash(git checkout:*)", "Bash(docker:*)"]
}
}
这些命令即使在宽松模式下也会弹窗确认——推代码、切分支、操作 Docker 这些你可能想自己过目。
通配符匹配详解
权限规则支持三种匹配方式:
精确匹配
Bash(npm install)
只匹配 npm install 这一条命令,npm install express 不匹配。
前缀匹配(:* 语法)
Bash(npm:*)
匹配所有以 npm 开头的命令:npm install、npm test、npm run build 都会匹配。
这是最常用的写法。冒号后面的 * 表示”后面的内容随便是什么”。
通配符匹配(* 语法)
Bash(git * --force)
* 可以放在任意位置,匹配任意内容。上面的规则会匹配 git push --force、git push origin main --force 等。
如果你的规则以 空格 + * 结尾(比如 git *),那么 git 本身也会匹配——这和前缀匹配的行为一致。
MCP 工具匹配
mcp__github → GitHub MCP 服务器的所有工具
mcp__github__* → 同上,通配符写法
mcp__github__create_pr → 只匹配 create_pr 这一个工具
权限模式
除了规则之外,Claude Code 还有全局的”权限模式”,决定了没有规则匹配时的默认行为:
| 模式 | 行为 |
|---|---|
| default | 标准模式。读操作自动放行,写操作和命令执行弹窗询问 |
| plan | 规划模式。Claude Code 先制定计划再执行,执行前弹窗 |
| acceptEdits | 接受编辑模式。文件编辑自动放行,Bash 命令仍然询问 |
| bypassPermissions | 跳过权限。所有操作自动放行(危险,谨慎使用) |
权限模式可以在 /config 里切换,也可以在 settings.json 里设置默认值:
{
"permissions": {
"defaultMode": "default"
}
}
权限判断流程
当 Claude Code 要执行一个工具时,权限检查的完整流程是:
工具调用请求
↓
输入校验(validateInput)
↓
PreToolUse Hooks 检查
↓
权限规则匹配
├── 命中 deny 规则 → 拒绝
├── 命中 allow 规则 → 放行
├── 命中 ask 规则 → 弹窗
└── 无规则匹配 → 看权限模式
↓
弹窗让你选择
├── Allow Once → 本次放行
├── Allow Always → 加入 allow 规则
└── Deny → 拒绝
↓
工具级别检查(checkPermissions)
↓
执行
注意几个关键点:
- deny 规则优先于 allow 规则——如果同一个操作同时命中了 allow 和 deny,deny 生效
- Hooks 在规则之前检查——hooks 可以拦截甚至修改工具调用
- 弹窗选择 “Allow Always” 会自动写入规则——下次同样的操作就不会再问了
实用技巧
技巧一:先宽后严
刚开始用 Claude Code 时,不必急着配置权限。先用默认模式,观察 Claude Code 日常需要哪些操作。等你积累了经验,再根据自己的需求逐步添加 allow 和 deny 规则。
弹窗里选 “Allow Always” 就是最简单的添加方式——用着用着,你的权限规则就自然丰满了。
技巧二:分层管理
- 全局规则(
~/.claude/settings.json)—— 放你在所有项目都需要的通用规则,比如Edit、Read、Glob、Grep - 项目共享规则(
.claude/settings.json)—— 放团队统一的项目级规则,比如允许项目特定的构建命令 - 个人本地规则(
.claude/settings.local.json)—— 放你个人的偏好,比如允许某些只有你在用的工具
技巧三:善用 deny 作为安全网
即使你的 allow 规则很宽松,也建议加几条 deny 规则作为兜底:
{
"permissions": {
"deny": ["Bash(rm -rf /)", "Bash(sudo:*)", "Bash(:(){ :|:& };:)"]
}
}
deny 规则优先于一切,是你最后一道防线。
技巧四:用 /permissions 排查权限问题
如果 Claude Code 总是做不了某个操作,或者不该做的操作它做了,打开 /permissions 看看当前生效的规则列表。每条规则都标注了来源(user / project / local / session),方便你定位问题出在哪个配置文件。
安全建议
- 不要在共享的项目 settings.json 里放过于宽松的 allow 规则——团队成员的环境不同,你信任的命令在别人那里可能有风险
- 定期用
/permissions检查规则列表——随着时间推移,你可能积累了一些不再需要的 allow 规则 - 企业环境用 managed settings——管理员可以通过托管设置强制 deny 某些操作,确保合规
- bypassPermissions 模式只在你完全信任当前任务时使用——它会跳过所有弹窗,包括危险操作
写在最后
权限管理看起来是个”麻烦事”,但其实是你和 AI 合作的信任基础。
如果每次都弹窗,你会被打断,效率降低;如果完全不弹窗,你会担心,用得不安心。好的权限配置是让你既流畅又安心的关键——该自动的自动,该拦截的拦截。
花十分钟把常用操作加到 allow 列表,把危险操作加到 deny 列表,然后你就可以专注于真正重要的事情——让 Claude Code 帮你写代码,而不是一直在点”允许”。
相关推荐
AI-first 创业公司,为什么只需要一种编程语言?
技术架构越简单 = AI Coding 效率越高。从 Java 的"防人"设计到 TypeScript 全栈通吃,聊聊 AI 时代创业公司的编程语言选择。
cc-ping:一行命令 Ping 所有 Claude Code 配置
用多个 Claude Code API Key 或中继?cc-ping 帮你管理配置、一键切换,还能并行 Ping 所有节点比速度。
震惊!程序员用这个工具,4分钟干完95分钟的活!效率暴涨24倍
躺床上发3条消息,4分钟搞定3个项目。传统方式需要95分钟,这就是冷兵器和热兵器的差距。
CCBot - 研发提效 24 倍
通过 IM 机器人控制 Claude Code,3 个项目 4 分钟全部搞定。传统编程需要 95 分钟,效率提升 24 倍。
Claude Code /add-dir:被低估的 Monorepo 神器
Claude Code 默认只能看到当前目录。/add-dir 打破这个限制——分享我每天跨 5 个仓库使用的经验。
Claude Code 省 Token 小技巧:感叹号的妙用
一个简单却容易被忽略的技巧——用感叹号直接执行命令,省 token、提速度、更可控。
我做了个机器人,让团队在飞书里用 Claude Code
CCBot 让你的团队在飞书群聊里直接用 Claude Code——不需要终端、不需要 SSH。开源、自部署、五分钟搞定。
Claude Code /btw 命令详解:不打扰主线的快问快答
详细介绍 Claude Code 的 /btw 命令——它是什么、怎么用、什么时候该用,以及它和子代理、/compact 的区别。
Claude Code /compact:释放上下文,不丢进度
任务做到一半上下文满了?/compact 帮你压缩对话继续干活——和 /clear、/rewind 的区别一次讲清。
Claude Code /config:一文搞懂所有可调设置
用 Claude Code 却从没打开过 /config?这篇带你逐项拆解——从权限模式到自动压缩,从主题切换到通知配置,帮你打造最顺手的 AI 编程环境。
Claude Code /context:你的上下文都被什么吃了?
对话到一半 Claude Code 说上下文不够了?/context 用一张可视化网格告诉你:上下文被什么占了、占了多少、怎么优化。
Claude Code /diff:这次对话改了什么,一目了然
Claude Code 帮你改了一堆文件,但你不确定到底改了什么?/diff 用交互式界面展示所有改动——既有 git 视角的全量 diff,也有按对话轮次拆分的逐步 diff。
Claude Code /fast:同样的 Opus,两倍速——值不值?
/fast 不会降级模型,还是 Opus,只是更快。什么时候该开、什么时候该关,以及实际体验差异。
Claude Code 引用外部知识的最佳实践:GitHub MCP + Context7
用 GitHub MCP 和 Context7 MCP 两个工具组合,解决 Claude Code 知识过时导致的代码错误问题。
Claude Code /hooks:让 AI 按你的规矩办事
想在 Claude Code 执行命令前自动检查?想在任务完成后自动通知?/hooks 让你用脚本、AI 甚至 HTTP 请求,在关键节点插入自定义逻辑。
Claude Code /init:10 秒自动生成 CLAUDE.md
别再手写 CLAUDE.md 了。看看 /init 自动生成的效果、怎么自定义输出,以及一个让 Claude Code 效率翻倍的小技巧。
Claude Code MCP:让 AI 连接 GitHub、数据库等一切工具
MCP 把 Claude Code 从代码阅读器升级为全栈 Agent。哪些 MCP 服务器值得装、配置怎么写,实测分享。
Claude Code /memory 详解:让 AI 真正记住你的项目
详细介绍 Claude Code 的 /memory 命令和记忆系统——CLAUDE.md 手动指令、Auto Memory 自动记忆、模块化规则,让 Claude 跨会话记住项目规范和个人偏好。
Claude Code /model:Opus、Sonnet、Haiku 怎么选?
不是每个任务都需要 Opus。怎么切换模型、哪个场景用哪个、怎么省 token 又不掉质量。
Claude Code /plan 详解:先想清楚再动手
详细介绍 Claude Code 的 /plan 命令和 Plan Mode——只读规划模式,让 Claude 先分析代码、制定方案,确认后再动手,避免复杂任务翻车。
Claude Code + Playwright MCP:AI 终于能"看见"页面了
一个 Modal 溢出的 bug,Claude Code 反复修了 5 次都没搞定。直到接入 Playwright MCP 让它真正看到页面,一次定位,一次修复。
Claude Code /resume 命令详解:别让对话白聊
详细介绍 Claude Code 的 /resume 命令——恢复历史对话、管理会话、实用技巧,让你的每一轮对话都不浪费。
Claude Code /review:让 AI 帮你做 Code Review
提了 PR 没人看?想在合并前多一道把关?/review 让 Claude Code 像一个资深开发者一样审查你的代码——还有 /ultrareview 和 /security-review 两个进阶选择。
Claude Code Skills 详解:打造你的专属命令库
详细介绍 Claude Code 的 Skills 功能——创建自定义斜杠命令、复用提示词模板、共享团队最佳实践,让 AI 编程更高效更一致。
Claude Code /stats:看看 AI 到底帮你写了多少代码
好奇 Claude Code 到底写了多少行代码?/stats 给你完整数据——token、编辑次数、工具调用,教你怎么看。
Claude Code /status 命令详解:一眼看清会话全貌
详细介绍 Claude Code 的 /status 命令——它是什么、怎么用、能看到哪些信息,以及它在日常工作流中的实际价值。
Claude Code /tasks 命令详解:后台任务尽在掌控
详细介绍 Claude Code 的 /tasks 命令——查看后台任务、管理并行 Agent、掌控长时间运行的进程,让多任务开发井井有条。
Claude Code /usage 命令详解:你的额度还剩多少
详细介绍 Claude Code 的 /usage 命令——查看用量、了解限额、避免突然被限速,让你对自己的额度心中有数。
Claude Code /vim:在 AI 编程助手里用 Vim 键位
习惯了 Vim 的操作方式?/vim 让你在 Claude Code 的输入框里用 hjkl 移动、dd 删行、ciw 替换单词——不用改变肌肉记忆。
Claude Code 使用指南:从安装到实战,一篇就够(2026)
用了半年 Claude Code 的经验总结——5 分钟安装配置、最常用的命令、CLAUDE.md 编写技巧,以及没人告诉你的实战心得。
Claude 全家桶:从聊天到写代码到自动办公,一文讲清楚
一篇文章带你了解 Anthropic 的 Claude 全家桶——Claude.ai、Claude Code、Claude Cowork,以及 Opus、Sonnet、Haiku 三大模型家族。
Claude Code /agents 详解:自定义 AI 子代理,各司其职
详细介绍 Claude Code 的 /agents 命令——查看、管理和创建自定义 Agent,让不同任务由专门的 AI 角色来执行,从代码探索到架构规划各司其职。
Claude Code /doctor 详解:一键诊断你的开发环境
详细介绍 Claude Code 的 /doctor 命令——自动检测安装状态、API 连接、MCP 配置、上下文用量等问题,帮你快速定位和修复环境故障。
Claude Code /effort 详解:控制 AI 思考的深度
详细介绍 Claude Code 的 /effort 命令——调节 Claude 的推理努力程度,在速度和质量之间找到最佳平衡点,让每一次对话都恰到好处。
Claude Code /cost 详解:你的 AI 编程到底花了多少钱
详细介绍 Claude Code 的 /cost 命令——实时查看会话 API 成本,了解各模型定价和 Token 消耗明细,让每一分钱都花得明明白白。
Claude Code /export 详解:把 AI 对话带走
详细介绍 Claude Code 的 /export 命令——将对话导出为文件或复制到剪贴板,方便分享、存档和复盘,让每一次有价值的对话都不浪费。
Claude Code /rewind 详解:AI 改错了?一键回退
详细介绍 Claude Code 的 /rewind 命令——将代码和对话回退到任意历史节点,支持只回退代码、只回退对话、或两者同时回退,是你和 AI 协作时的后悔药。
Claude Code /plugin 详解:给你的 AI 编程助手装插件
详细介绍 Claude Code 的 /plugin 命令——管理插件的安装、启用、禁用和更新,通过插件扩展 Claude Code 的命令、技能、Agent 和 Hook,打造你专属的 AI 编程工具链。
Claude Code /theme 详解:给你的终端换个好看的皮肤
详细介绍 Claude Code 的 /theme 命令——6 种预设主题 + 自动模式,支持深色/浅色、色盲友好、ANSI 兼容,60+ 色值覆盖终端全部 UI 元素。
Claude Code /insights 详解:用 AI 分析你自己用 AI 的方式
详细介绍 Claude Code 的 /insights 命令——五阶段数据分析流水线、七大洞察章节、多维度会话统计,用 Claude Opus 生成专属 HTML 使用报告。
Claude Code /rename 详解:给你的会话取个有意义的名字
详细介绍 Claude Code 的 /rename 命令——手动命名、AI 自动生成(Haiku 模型)、启动参数命名、Plan 模式自动命名,以及双标题系统与 Bridge 同步机制。
Claude Code settings.json 详解(一):配置文件在哪里、谁说了算
全面介绍 Claude Code 的配置文件体系——五个配置来源的路径、优先级规则、数组合并与单值覆盖的区别、企业管理设置的多种下发方式。
Claude Code settings.json 详解(二):permissions 权限系统全解析
深入解析 Claude Code 的 permissions 配置——allow/deny/ask 三类规则、通配符语法、MCP 工具权限、defaultMode 各模式含义,以及 additionalDirectories 的作用。
Claude Code settings.json 详解(三):hooks 钩子全解析
深入解析 Claude Code 的 hooks 配置——四种钩子类型、核心事件(PreToolUse/PostToolUse/Stop/Notification)、stdin/stdout 协议、exit code 语义,以及实用配置示例。
Claude Code settings.json 详解(四):env、模型、认证与其他实用字段
全面介绍 Claude Code settings.json 中的 env 环境变量注入、模型配置、身份认证辅助、Git 提交署名、会话清理、语言与界面、思考深度、自动更新、记忆系统等实用字段。
Claude Code Agent Loop:拆解 AI 编程助手的心脏
Claude Code 是怎么一步步理解你的需求、调用工具、自我修复的?从源码角度拆解 Agent Loop 的核心架构——流式响应、并行工具执行、自动压缩、错误恢复,一次讲透。