Claude Code settings.json 怎么配?权限、安全和常用命令白名单实战

Claude Code settings.json 怎么配?权限、安全和常用命令白名单实战

Claude Code 好用的地方,是它能读文件、改代码、跑命令;危险的地方,也正是它能读文件、改代码、跑命令。所以装好之后,第二件事不是马上让它重构项目,而是把 settings.json 里的权限边界先想清楚。

这篇不是官方配置大全,而是给新手看的实战版:哪些东西可以放开,哪些东西最好先挡住,为什么不要一上来就跳过所有确认。

一、settings.json 放在哪里?

常见有三层:

  • 用户级:~/.claude/settings.json,适合放个人全局习惯。
  • 项目级:.claude/settings.json,适合团队共享。
  • 本地覆盖:.claude/settings.local.json,适合只在自己机器生效的配置。

我的理解很简单:稳定规则写项目级,个人习惯写用户级,密钥和临时东西不要写进仓库。

二、权限配置的核心:allow 和 deny

新手最应该关注的是 permissions。一个保守的例子:

{
  "permissions": {
    "allow": [
      "Read",
      "Edit",
      "Bash(git diff *)",
      "Bash(npm test *)",
      "Bash(npm run lint *)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(rm -rf *)",
      "Bash(git push --force *)"
    ]
  }
}

这个配置的思路不是“让 Claude Code 什么都不能干”,而是先让它做日常安全动作:读项目、编辑普通文件、看 diff、跑测试、跑 lint。至于删除文件、读取密钥、强推代码,这些先挡住。

三、为什么不要一上来全自动?

很多教程会强调“跳过权限确认会更爽”。这话不算错,但不适合新手。因为你还不知道它会怎样理解你的项目,也不知道项目里哪些文件不能碰。

我的建议是:前几天先让它多问。你看它每次想执行什么命令,慢慢就知道哪些可以放进白名单,哪些必须永远保留确认。

四、哪些命令适合加入白名单?

  • git diff:只读,适合经常查看改动。
  • git status:只读,风险低。
  • npm test、pytest:测试命令,适合验证。
  • npm run lint:代码检查,通常可放开。
  • python3 -m py_compile:语法检查,风险低。

但像 curl | bash、删除目录、改系统服务、上传密钥、强推分支,这些就不要轻易放开。尤其服务器上跑 Claude Code,更要谨慎。

五、env 字段怎么用?

env 可以给 Claude Code 子进程注入环境变量。比如某些第三方网关、代理、禁用非必要流量等配置,可以写进去。

{
  "env": {
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}

但密钥不建议随便写进项目级配置,更不要提交到公开仓库。真要放,也应该只放在用户级或本地私有配置里。

六、常见配置错误

  • JSON 写错:少一个逗号,整个配置都可能不生效。
  • 放错位置:你以为改的是项目配置,其实 Claude 读的是用户配置。
  • deny 太宽:把正常测试命令也挡住了,结果每次都卡。
  • allow 太宽:看似省事,实际给了 Agent 过大权限。

排查时先跑:

claude doctor
claude auth status --text

七、我的建议

Claude Code 的权限配置,核心不是“越自动越好”,而是“可控地自动”。先让它做低风险的重复劳动,再逐步放开常用命令。你要把它当成一个会干活的实习生,而不是 root 权限的神仙。

下期预告

下一篇讲 CLAUDE.md:怎么把项目规则、测试命令、目录说明写进去,让 Claude Code 少猜、少乱改。

Claude Code settings.json 怎么配?权限、安全和常用命令白名单实战 流程图

本文由 A7z-爱马仕整理,基于公开文档与实际 Agent 工作流搭建经验编写。涉及账号、价格、权限策略的部分,请以官方页面和你自己的后台显示为准。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注