Claude Code 的配置系统支持四级作用域——个人、项目、本地、企业管理。理解这个系统,才能在团队环境里优雅地管理权限,让每个人的配置既个性化又安全。
四级配置作用域
| 作用域 | 配置文件位置 | 影响范围 | 提交 Git? |
|---|---|---|---|
| Managed(企业管理) | macOS: /Library/Application Support/ClaudeCode/managed-settings.json | 机器上所有用户 | 否(IT 部署) |
| User(个人) | ~/.claude/settings.json | 你的所有项目 | 否 |
| Project(项目) | .claude/settings.json | 所有协作者 | 是 |
| Local(本地) | .claude/settings.local.json | 只有你,只在此项目 | 否(自动 gitignore) |
优先级规则
高优先级覆盖低优先级:
Managed(最高,不可覆盖)
↓
命令行参数(临时)
↓
Local(覆盖项目和个人)
↓
Project(覆盖个人)
↓
User(最低默认值)
快速打开配置
bash
claude
/config # 打开配置界面(推荐)或直接编辑文件:
bash
# 个人全局配置
code ~/.claude/settings.json
# 项目配置
code .claude/settings.json常用配置项速查
完整配置示例
json
{
"model": "claude-sonnet-4-5",
"autoMemory": true,
"theme": "dark",
"permissions": {
"allow": [
"Bash(npm:npx:yarn:pnpm)",
"Bash(git:gh)",
"Read(**)",
"Write(src/**)",
"Edit(src/**)"
],
"deny": [
"Bash(rm -rf*)",
"Bash(curl:wget)",
"Write(.env*)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{ "type": "command", "command": "bash ~/.claude/hooks/format.sh" }]
}
]
},
"env": {
"NODE_ENV": "development"
}
}权限配置详解
权限控制 Claude 能执行哪些操作:
json
{
"permissions": {
"allow": [
"Bash(git *)", // 允许所有 git 命令
"Bash(npm test)", // 只允许 npm test
"Read(**)", // 允许读取所有文件
"Write(src/**)", // 只允许写 src/ 下的文件
"Write(*.md)" // 只允许写 Markdown 文件
],
"deny": [
"Bash(rm*)", // 禁止所有 rm 命令
"Write(.env*)", // 禁止修改环境变量文件
"Write(package.json)", // 禁止修改 package.json
"Bash(curl *)", // 禁止网络请求
"Bash(* --force)" // 禁止所有 --force 参数
]
}
}规则语法:
*:匹配任意字符(不含路径分隔符)**:匹配任意路径Bash(pattern):Shell 命令匹配Read(pattern)/Write(pattern)/Edit(pattern):文件操作
模型配置
json
{
"model": "claude-sonnet-4-5", // 默认模型
"fallbackModel": "claude-haiku-3-5" // 限速时降级模型
}会话中切换模型:/model claude-opus-4-5
沙箱配置
json
{
"sandbox": {
"enabled": true,
"pathPrefixes": ["/tmp", "./workspace"] // 沙箱内可访问的路径
}
}实际配置场景
场景 1:个人开发者配置(宽松)
~/.claude/settings.json:
json
{
"model": "claude-sonnet-4-5",
"autoMemory": true,
"permissions": {
"allow": [
"Bash(*)",
"Read(**)",
"Write(**)",
"Edit(**)"
],
"deny": [
"Bash(rm -rf /)",
"Bash(sudo rm*)"
]
}
}场景 2:团队项目配置(平衡)
.claude/settings.json(提交到 Git):
json
{
"model": "claude-sonnet-4-5",
"permissions": {
"allow": [
"Bash(git *)",
"Bash(npm *)",
"Bash(npx *)",
"Read(**)",
"Write(src/**)",
"Write(tests/**)",
"Write(docs/**)",
"Edit(src/**)",
"Edit(tests/**)"
],
"deny": [
"Write(.env*)",
"Write(package-lock.json)",
"Bash(rm *)",
"Bash(curl *)",
"Bash(wget *)"
]
},
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{ "type": "command", "command": "npx lint-staged 2>/dev/null || true" }]
}
]
}
}个人本地覆盖 .claude/settings.local.json(不提交):
json
{
"permissions": {
"allow": [
"Bash(docker *)" // 个人开发环境需要 Docker
]
}
}场景 3:企业安全配置(严格)
/Library/Application Support/ClaudeCode/managed-settings.json(IT 部署,不可覆盖):
json
{
"permissions": {
"deny": [
"Bash(curl *)",
"Bash(wget *)",
"Bash(ssh *)",
"Write(/etc/*)",
"Write(/usr/*)"
]
},
"env": {
"ANTHROPIC_API_URL": "https://internal-proxy.company.com"
}
}敏感文件保护
告诉 Claude 永远不要读取哪些文件:
json
{
"ignorePatterns": [
".env",
".env.*",
"*.pem",
"*.key",
"secrets/**",
"credentials/**"
]
}环境变量注入
给 Claude Code 进程注入环境变量:
json
{
"env": {
"NODE_ENV": "development",
"DATABASE_URL": "postgresql://localhost:5432/dev",
"LOG_LEVEL": "debug"
}
}注意:敏感的 API Key 用系统环境变量,不要写进 settings.json(会提交到 Git)。
子代理配置
控制子代理的默认行为:
json
{
"agents": {
"defaultModel": "claude-haiku-3-5", // 子代理默认用更便宜的模型
"autoMemory": true, // 子代理开启记忆
"maxConcurrent": 5 // 最多同时跑 5 个子代理
}
}验证当前生效配置
bash
claude
/config # 查看当前所有配置
/status # 查看会话状态包括权限命令行临时覆盖(只影响这次会话):
bash
claude --model claude-opus-4-5 --permission-mode plan来源:Claude Code Settings | Anthropic 官方文档