冷蟊初退 孤灯野澜 志起鸡鸣 墓不悲秋 技术交流 软件开发 商业合作 加Q:411239339

Day 4 权限管理:别让 AI 把你家拆了

浏览:15次阅读
没有评论

共计 3204 个字符,预计需要花费 9 分钟才能阅读完成。

Claude Code 从入门到脱发 · Day 4

Claude Code 能读文件、写文件、跑命令、删东西。这种能力用好了是生产力工具,用不好就是定时炸弹。

想象一下:你随口说 " 帮我清理一下项目 ",它理解成了 rm -rf /。虽然这种极端情况不太可能发生(Claude Code 有内置保护),但类似的翻车场景你迟早会遇到——比如它把你还没提交的代码覆盖了,或者直接往生产环境推了一个 commit。

所以,权限管理不是可选项,是必修课。

本文你将学到:

  • Claude Code 的四种权限模式
  • allowedTools 精细化权限控制
  • settings.json 配置详解
  • 不同场景下的权限策略

阅读时间 :8 分钟 | 实操时间 :10 分钟 | 难度:中级


四种权限模式

Claude Code 启动时,你可以选择权限模式。每种模式决定了 AI 可以自主执行的操作范围。

1. 标准模式(默认)

每次 Claude Code 要执行 " 危险操作 " 时,都会问你。

危险操作包括:写文件、执行 shell 命令、删除文件等。读文件和搜索文件不算危险操作,可以自动执行。

这是最安全的模式,适合刚上手或者操作敏感项目时使用。缺点是确认太多,干活会被频繁打断。

2. acceptEdits 模式

自动批准文件编辑,但 shell 命令仍需确认。

这是大多数日常开发的甜蜜点。让 Claude Code 自由改文件(反正有 Git 可以回滚),但跑命令前还是问一下——毕竟 rm -rf 可没有后悔药。

3. plan 模式

Claude Code 只规划不执行。它会告诉你打算做什么,但不会真正动手。适合审查方案或者让它出设计文档。

4. bypassPermissions 模式

所有操作自动批准,不问你任何问题。也叫 "YOLO 模式 "。

启用方式:

claude --dangerously-skip-permissions

注意那个 dangerously——Anthropic 故意把这个词放在命令里提醒你:这很危险。

这个模式只适合在隔离环境中使用,比如 Docker 容器、CI/CD 流水线、一次性的沙盒环境。在你的开发机上用这个模式,就像开着眼睛在高速公路上松开方向盘。


allowedTools:精细化控制

四种模式是粗粒度的,有时候你需要更精细的控制。比如你希望 Claude Code 可以自由编辑文件和运行 npm test,但不能执行其他 shell 命令。

这就是 allowedTools 的用途。

.claude/settings.json 中配置:

{
  "permissions": {
    "allowedTools": [
      "Read",
      "Write",
      "Edit",
      "Glob",
      "Grep",
      "Bash(npm test)",
      "Bash(npm run lint)",
      "Bash(git status)",
      "Bash(git diff)"
    ]
  }
}

这份配置的意思是:Claude Code 可以自由读写文件、搜索文件、运行测试和 lint,但其他任何命令都需要你确认。

常用的 allowedTools 配置

保守型(适合生产项目):

{
  "permissions": {
    "allowedTools": [
      "Read",
      "Glob",
      "Grep"
    ]
  }
}

只允许读,所有写操作和命令都要确认。

日常开发型(适合大多数场景):

{
  "permissions": {
    "allowedTools": [
      "Read",
      "Write",
      "Edit",
      "Glob",
      "Grep",
      "Bash(npm test)",
      "Bash(npm run lint)",
      "Bash(npx tsc --noEmit)",
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(git log)"
    ]
  }
}

读写文件自由,允许跑测试和 lint,Git 只允许查看操作。

自动化型(适合 CI/CD 或沙盒环境):

{
  "permissions": {"allowedTools": ["*"]
  }
}

允许一切。前面说了,只在隔离环境用。


settings.json 在哪里

Claude Code 的配置文件有三个层级:

位置 作用域 适合放什么
~/.claude/settings.json 全局 个人偏好、通用权限
.claude/settings.json 项目级(提交到 Git) 团队统一规范
.claude/settings.local.json 项目级(不提交) 个人在此项目的特殊配置

项目级配置覆盖全局配置,.local.json 覆盖 .json

一个完整的项目级 .claude/settings.json 长这样:

{
  "permissions": {
    "allowedTools": [
      "Read",
      "Write",
      "Edit",
      "Glob",
      "Grep",
      "Bash(npm test)",
      "Bash(npm run lint)"
    ],
    "disallowedTools": ["Bash(rm -rf *)",
      "Bash(git push --force)"
    ]
  }
}

disallowedTools 是黑名单,明确禁止某些操作。即使在 bypassPermissions 模式下,黑名单里的操作也会被阻止。


实际场景的权限策略

场景一:个人业余项目

你一个人玩,代码在 Git 里,随时可以回滚。

策略:acceptEdits 模式 + 允许常用命令。

{
  "permissions": {
    "allowedTools": [
      "Read", "Write", "Edit", "Glob", "Grep",
      "Bash(npm *)", "Bash(git status)", "Bash(git diff)", "Bash(git log)"
    ]
  }
}

场景二:公司项目

多人协作,有 CI/CD 流水线,主分支受保护。

策略:标准模式 + 白名单。

{
  "permissions": {
    "allowedTools": [
      "Read", "Glob", "Grep",
      "Bash(npm test)", "Bash(npm run lint)"
    ],
    "disallowedTools": ["Bash(git push *)",
      "Bash(git commit *)"
    ]
  }
}

改文件和 Git 操作都需要确认。

场景三:CI/CD 自动化

在 Docker 容器里跑自动化任务。

策略:bypassPermissions + 超时限制。

claude --dangerously-skip-permissions -p "运行测试并生成报告" --max-turns 20

常见问题 Q&A

Q1:设置了权限但 Claude Code 好像没生效?

检查配置文件的位置和语法是否正确。用 claude config list 命令查看当前生效的配置。另外,修改配置后需要重新启动 Claude Code。

Q2:怎么防止它执行危险的 Git 操作?

disallowedTools 里加入:

"disallowedTools": ["Bash(git push --force*)",
  "Bash(git reset --hard*)",
  "Bash(git clean -f*)"
]

这些操作即使在 YOLO 模式也会被拦截。

Q3:allowedTools 里的通配符怎么用?

Bash(npm *) 表示允许所有以 npm 开头的命令。Bash(git log*) 允许 git log 及其所有变体。但要注意:通配符越宽松,风险越大。


小结

今天学了 Claude Code 的权限管理:

  • 四种模式:标准 > acceptEdits > plan > bypassPermissions,风险递增
  • allowedTools/disallowedTools 提供精细化的工具级权限控制
  • 配置文件有全局 / 项目 / 本地三个层级
  • 不同场景用不同策略,在效率和安全之间找平衡

权限管理是 " 被动防守 "——你设好规则,Claude Code 遵守。但有没有更主动的方式?比如每次它编辑完文件自动跑 Prettier 格式化,每次提交前自动检查有没有 console.log?

明天 Day 5,我们聊 Hooks 系统——给 Claude Code 装上自动挡,让它在你的规则里全自动运转。


系列进度:4/10

正文完
创作不易,扫码加点动力
post-qrcode
 0
果较瘦
版权声明:本站原创文章,由 果较瘦 于2026-03-29发表,共计3204字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。