确认弹窗太多?一次配好 Claude Code 权限,安心让 AI 干活

刚用 Claude Code 的时候,我经常被确认弹窗搞得心烦------让它读个文件要确认、跑个测试要确认、看个 git status 也要确认。一天点了上百次 Allow,手都酸了。

后来花了十分钟认真配了一遍权限系统,弹窗少了 90%,体验质的飞跃。这篇文章把我的配置思路分享出来,你可以直接照着配。


权限系统的三个级别

Claude Code 把每个操作分到三个级别:

  • Ask(默认) :弹确认框,等你想 Allow 还是 Deny。这是刚装好时的默认状态,安全但频繁。
  • Allow:自动批准,不弹窗。适合你完全信任的操作。
  • Deny:自动拒绝,不弹窗。适合危险操作。

管理权限有两个途径:用 /permissions 命令打开可视化界面管理,或者在对话里直接说口语化指令。我更喜欢后者------比如直接说"以后所有 mvn test 都不要问我了",Claude Code 会帮你修改权限配置文件。


我的 Allow 清单:这些操作放心让它自动做

以下是我加了 Allow 的操作,用了几个月没出过问题:

scss 复制代码
Read(*)          --- 读所有文件
Grep(*)          --- 搜索代码
Glob(*)          --- 文件匹配
Bash(git status *)
Bash(git log *)
Bash(git diff *)
Bash(mvn test *)
Bash(npm test *)
Bash(npm run *)
Bash(ls *)

这些操作有一个共同点:高频且安全。读文件、搜索代码、看 Git 状态、跑测试------全是日常频繁操作,不会破坏项目。

加上之后,我日常使用中大概 80% 的操作都不弹窗了。Claude 读项目代码、搜索相关文件、运行测试全自动跑,不需要我一直在旁边点 Allow。


我必须 Deny 的操作:这些一旦误执行代价很大

有些操作一旦误执行基本不可逆,我直接 Deny 掉:

scss 复制代码
Bash(rm -rf *)              --- 如果 AI 幻觉了这个命令,直接 Deny 最安全
Bash(git push --force *)     --- 覆盖团队代码,后果很严重
Bash(curl * | sh)            --- 执行远程脚本,太危险
Bash(wget * | bash)          --- 同上
Edit(~/.ssh/*)               --- AI 不应该碰我的 SSH 密钥
Read(.env*)                  --- 环境变量里可能有数据库密码
Read(credentials.*)          --- 凭证文件
Read(*.pem)                  --- 证书文件

rm -rfgit push --force 这两个我是直接 Deny 的------Claude Code 正常不会主动执行这些命令,但万一呢?特别是对话长了 Claude 偶尔会"幻觉",防一手总没错。

另外 AI 不应该接触密钥和凭证。我在项目里经常把 API Key 或数据库密码临时放在 .env 文件里,AI 读了虽然不会主动泄露,但对话记录可能会被保存和传输------直接 Deny 掉最省心。


保持 Ask 的操作:每次过一眼

代码修改我全部保持 Ask。不管用多久,改代码之前我都想看一眼它到底要改什么:

scss 复制代码
Edit(*)                       --- 修改文件前看一眼改了什么
Bash(curl *)                  --- 网络请求
Bash(docker *)                --- Docker 操作
Bash(kubectl *)               --- K8s 操作
Bash(git commit *)            --- Git 提交
Bash(git push)                --- Git 推送

这些操作在正常情况下都是安全的,但我需要知道它什么时候做了------特别是 git commit 和 git push,不想它在我没审核的情况下自己提交了。


通配符的灵活用法

权限规则的匹配粒度很灵活,通配符 * 可以匹配任意字符:

  • Read(*) 匹配所有读操作
  • Read(*.java) 只匹配读 Java 文件
  • Bash(npm run *) 匹配所有 npm run 子命令但不匹配 npm install
  • Bash(git *) 匹配所有 Git 命令
  • Bash(mvn test *) 匹配 maven 测试相关命令

这让你可以很精确地控制------比如只允许改 Java 文件而不允许改配置文件,或者只允许跑测试而不允许执行部署脚本。

优先级规则 :Deny 优先级高于 Allow。所以你不用担心 Bash(git push *)Bash(git push --force *) 冲突------force push 仍然会被 Deny 拦截。


如果想手改 JSON

.claude/settings.json 里这样写:

json 复制代码
{
  "permissions": {
    "allow": [
      "Read(*)",
      "Grep(*)",
      "Glob(*)",
      "Bash(git status *)",
      "Bash(git log *)",
      "Bash(git diff *)",
      "Bash(mvn test *)",
      "Bash(npm test *)",
      "Bash(npm run *)",
      "Bash(ls *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force *)",
      "Bash(curl * | sh)",
      "Bash(wget * | bash)",
      "Edit(~/.ssh/*)",
      "Read(.env*)",
      "Read(credentials.*)",
      "Read(*.pem)"
    ]
  }
}

新手和老手的配置策略

新手阶段(第一周) :保持默认 Ask,每个操作都看一遍。这个阶段你还在熟悉 Claude Code 能做什么,多看看它都执行了什么命令有好处。用一周大概就知道哪些操作是安全的了。

日常使用(第二周开始) :把只读操作和跑测试加到 Allow,危险命令加到 Deny,代码修改保持 Ask。这是安全性和效率的平衡点。

团队项目 :在 .claude/settings.json 里统一配,随代码提交。新成员开箱即用,不需要每个人自己调。

配置文件的优先级是项目级 > 用户级,所以团队的项目级配置会覆盖个人的用户级配置。


总结

权限系统是那种"花十分钟配一次,每天省几十次点确认"的投入。我的核心配置策略就三条:

  1. 只读的放心 Allow------读文件、搜代码、看 Git、跑测试
  2. 危险的直接 Deny------rm、force push、远程脚本、敏感文件
  3. 修改的保持 Ask------每次过一眼改了什么

配完之后 Claude Code 用起来顺手很多------确认弹窗从"每次操作都弹"变成"只有改代码才弹",效率感和安心感都上来了。


下一篇讲 Claude 三个模型(Haiku/Sonnet/Opus)怎么选,加上国产模型横评。觉得有用的话欢迎点赞收藏。

相关推荐
dearxue1 小时前
这一次,我们一起把AI的复杂一口吃掉
人工智能·后端
行者-全栈开发1 小时前
深度解析 WWDC 2026:苹果 AI 全栈技术架构与落地实现路径
人工智能·架构·wwdc
企业老板ai培训1 小时前
2026中小企业AI应用落地白皮书:从AI短视频矩阵到数字人获客的破局增长趋势
人工智能·矩阵·音视频
SEO_juper2 小时前
博客文章黄金结构:开头 1 句痛点 + 3 小标题 + 对比 + 总结 + 下载
人工智能·博客·外贸·geo·独立站·跨境电商独立站·文章结构
双翌视觉2 小时前
工业AI视觉检测中的“小样本困境”
人工智能·计算机视觉·视觉检测
CoderIsArt2 小时前
声纹识别与音频AI领域
人工智能·音视频
tedcloud1232 小时前
HyperFrames部署教程:用HTML生成MP4视频
前端·数据库·人工智能·html·音视频
jixunwulian2 小时前
AI+边缘计算,工业智能网关智慧交通IoT解决方案
人工智能·物联网·边缘计算
启程在掘金2 小时前
LangGraph 执行流程解析
人工智能