第 23 章 | settings.json 全景
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
第 23 章:settings.json 全景
学习目标
搞清楚 4 种 settings 文件的优先级和用途,能给团队 / 个人 / 实验各放对地方。
4 种 settings
flowchart TB
Final["最终生效设置"] --> Override["从高到低 override"]
Override --> CMD["1. 命令行 flag
(最高优先)"]
Override --> Local["2. .claude/settings.local.json
(项目本地,gitignore)"]
Override --> Project["3. .claude/settings.json
(项目共享,进 git)"]
Override --> User["4. ~/.claude/settings.json
(用户级)"]
Override --> Default["5. Claude Code 默认
(最低)"]
style Local fill:#fff9c4
style Project fill:#c8e6c9→ 高优先级覆盖低优先级。冲突时 local 赢。
各文件的角色
| 文件 | 谁写谁读 | 内容举例 |
|---|---|---|
~/.claude/settings.json |
你自己(一次配,到处生效) | 默认 model、theme、统一 hook |
<project>/.claude/settings.json |
团队共享(进 git) | 项目级 permission、shared hook、agent 默认 |
<project>/.claude/settings.local.json |
个人项目内(不进 git) | 个人凭证、本地路径、实验设置 |
| 命令行 flag | 临时(一次性) | claude --model haiku 跑个 quick task |
gitignore 策略
.claude/
├── agents/ ← 进 git(团队共享 agent)
├── commands/ ← 进 git
├── hooks/ ← 进 git
├── settings.json ← 进 git
├── settings.local.json ← .gitignore(个人化)
├── telegram-notify.json ← .gitignore(凭证)
└── .notify-sent ← .gitignore(运行时状态)
我们项目的 .claude/.gitignore:
.notify-sent
telegram-notify.json
settings.local.json
常用字段速查
{
"model": "claude-opus-4-7",
"permissions": {
"defaultMode": "bypassPermissions",
"allow": ["Bash(npm:*)"],
"deny": ["Bash(sudo:*)"]
},
"hooks": {
"PreToolUse": [...],
"Stop": [...]
},
"env": {
"PYTHONPATH": "src/"
},
"includeCoAuthoredBy": false
}
| 字段 | 用途 |
|---|---|
model |
默认模型(main Claude 用的) |
permissions |
全章 24 详讲 |
hooks |
Ch 25/26 详讲 |
env |
注入到所有 Bash 子进程的环境变量 |
includeCoAuthoredBy |
是否在 commit 加 Co-Authored-By: Claude |
个人 vs 团队的实例
// ~/.claude/settings.json (你的个人偏好,跨项目)
{
"model": "claude-opus-4-7",
"includeCoAuthoredBy": false
}
// <project>/.claude/settings.json (团队共享)
{
"permissions": {
"defaultMode": "bypassPermissions",
"deny": ["Bash(sudo:*)", ...]
},
"hooks": { ... }
}
// <project>/.claude/settings.local.json (你个人在这个项目)
{
"env": {
"TELEGRAM_BOT_TOKEN": "xxx",
"TELEGRAM_CHAT_ID": "yyy"
}
}
验证设置生效
启动 Claude Code 后跑:
/help 看 active 设置
/permissions 看 permission 规则解析后的样子
或者 :
# 看哪份 settings 被加载
ls -la ~/.claude/settings.json
ls -la <project>/.claude/settings.json
ls -la <project>/.claude/settings.local.json
反模式
❌ 把凭证写进项目共享 settings.json 会被 push 到 GitHub
❌ 把团队共识塞进 settings.local 其他人看不到
❌ 在 user 级设 deny 太严 所有项目被影响
❌ JSON 写错(缺逗号、单引号) settings 静默不生效
你现在能做什么
- 选对地方放每条设置
- 配合 .gitignore 让凭证不外泄
- 验证设置真的生效了
下一章正式讲 permissions 字段——多 agent 系统的安全护栏。