Skip to content

Claude Code Configuration Inventory

盘点 Claude Code 所有配置项、存储位置、读写方式

日期:2026-06-28 状态:verified(实验 + 官方文档交叉验证) 关联:Profile Tab 补全、Library Extension


0. 方法论

每个结论标注来源:

标记含义
🧪实验验证(通过 agent-box 创建 exp01 profile,注入配置并启动 CC 观察行为)
📖官方文档(code.claude.com/docs)
🧪📖实验 + 文档双重验证

实验 profile:~/.agent-box/profiles/exp01,使用 agent-box claude exp01 -- --print "..." 非交互验证。


1. 配置版图总览

1.1 用户可编辑配置(agent-box 应管理)

#配置项CC 读取路径Profile 内对应路径写入方式验证
1CLAUDE.md~/.claude/CLAUDE.mddot-claude/CLAUDE.md直接覆盖文件🧪📖
2settings.json~/.claude/settings.jsondot-claude/settings.json表单 → JSON 合并写入🧪📖
3settings.local.json~/.claude/settings.local.jsondot-claude/settings.local.json表单 → JSON 覆盖写入🧪📖
4Hookssettings.jsonhooks key同上 settings.jsonsettings.json 内嵌,无独立文件🧪📖
5MCP Servers~/.claude.jsonmcpServersdot-claude.jsonmcpServers合并写入 ~/.claude.json(保留 CC 状态字段)📖
6Skills~/.claude/skills/ + ~/.agents/skills/dot-claude/skills/ + dot-agents/skills/目录拷贝🧪📖
7Commands~/.claude/commands/dot-claude/commands/Markdown 文件(已与 skills 机制统一)📖
8Subagents~/.claude/agents/dot-claude/agents/Markdown 文件📖
9Keybindings~/.claude/keybindings.jsondot-claude/keybindings.jsonJSON📖
10Statusline~/.claude/statusline.jsondot-claude/statusline.jsonJSON📖

1.2 CC 自动生成(agent-box 不管理,但需保留)

#路径内容验证
11~/.claude.json(除 mcpServers 外)应用状态:firstStartTime, userID, machineID, tipsHistory, projects, migrationVersion...🧪📖
12.last-cleanup维护标记🧪
13backups/~/.claude.json 自动备份🧪
14projects/按项目分组的会话记录(jsonl)🧪
15session-env/每个会话的环境变量快照🧪
16sessions/会话状态🧪
17shell-snapshots/Shell 快照🧪
18file-history/文件修改历史📖
19jobs/后台任务状态📖
20tasks/任务状态📖
21plugins/已安装的插件数据📖
22daemon/ + daemon.lock + daemon.log + daemon.status.json后台守护进程📖
23history.jsonl对话历史📖

1.3 项目级配置(不在 Profile 内,非 agent-box 管辖)

#配置项路径是否提交 git验证
24MCP Servers(项目).mcp.json(项目根目录)📖
25Settings(项目).claude/settings.json📖
26Settings Local(项目).claude/settings.local.json否(CC 自动 gitignore)📖
27CLAUDE.md(项目)CLAUDE.md.claude/CLAUDE.md📖
28Skills(项目).claude/skills/📖
29Commands(项目).claude/commands/📖
30Agents(项目).claude/agents/📖

2. 关键配置项详解

2.1 settings.json 完整结构

路径~/.claude/settings.json → Profile dot-claude/settings.json

优先级(从高到低):

Managed Policy > CLI flags > .claude/settings.local.json > .claude/settings.json > ~/.claude/settings.local.json > ~/.claude/settings.json

特殊规则

  • permissions 跨级合并(不覆盖) 🧪📖
  • fallbackModel 不合并,最高优先级文件全量生效 📖
  • 大部分 key 热加载,model 需要 /model 或重启 📖

已确认的 settings key(来源:📖 官方 schema):

jsonc
{
  // ── 模型 ──
  "model": "claude-opus-4-6",          // 默认模型
  "fallbackModel": "...",              // 降级链
  "modelOverrides": {},                // 按工具/task 覆盖模型
  "availableModels": [],               // 限制可用模型列表
  "enforceAvailableModels": false,     // 强制限制
  "effortLevel": "medium",            // 推理努力度

  // ── Provider / API ──
  "env": {},                           // 环境变量(provider 写入此处)
  "apiKeyHelper": "",                  // API key 获取脚本
  "apiBaseUrl": "",                    // 自定义 API 地址
  "awsAuthRefresh": "",               // AWS 凭证刷新
  "awsCredentialExport": "",          // AWS 凭证导出
  "gcpAuthRefresh": "",               // GCP 凭证刷新
  "otelHeadersHelper": "",            // OTel headers

  // ── 权限 ──
  "permissions": {
    "allow": ["Bash(npm run *)"],
    "deny": ["Read(./.env)"],
    "ask": []
  },
  "permissionMode": "default",

  // ── Hooks ──
  "hooks": {
    "PreToolUse": [{ "matcher": "", "hooks": [...] }],
    "PostToolUse": [...],
    "PostToolUseFailure": [...],
    "Notification": [...],
    "Stop": [...],
    "SubagentStop": [...],
    "SessionStart": [...],
    "SessionEnd": [...],
    "UserPromptSubmit": [...],
    "PermissionRequest": [...],
    "PreCompact": [...],
    "PostCompact": [...],
    "TaskCompleted": [...],
    "ConfigChange": [...],
    "WorktreeCreate": [...],
    "WorktreeRemove": [...]
  },

  // ── UI ──
  "theme": "dark",
  "outputStyle": "explanatory",
  "showTurnDuration": true,
  "showSpinnerTree": false,
  "autoScrollEnabled": true,
  "editorMode": "default",
  "language": "",
  "prefersReducedMotion": false,
  "axScreenReader": false,

  // ── 行为 ──
  "autoCompactEnabled": true,
  "autoCompactThreshold": 0.7,
  "autoMemoryEnabled": true,
  "autoMemoryDirectory": "",
  "alwaysThinkingEnabled": false,
  "respectGitignore": true,
  "includeGitInstructions": true,
  "skipWorkflowUsageWarning": false,
  "disableAutoUpdates": false,
  "disableTelemetry": false,
  "cleanupPeriodDays": 7,
  "respondToBashCommands": false,

  // ── Tools ──
  "allowedTools": [],
  "deniedTools": [],
  "disableArtifact": false,
  "disableBundledSkills": false,
  "disableSkillShellExecution": false,
  "disableWorkflows": false,
  "disableAgentView": false,

  // ── Plugins ──
  "enabledPlugins": {},
  "extraKnownMarketplaces": {},
  "strictKnownMarketplaces": false,

  // ── Skills ──
  "maxSkillDescriptionChars": 0,

  // ── 高级 ──
  "defaultShell": "",
  "fileCheckpointingEnabled": true,
  "prUrlTemplate": "",
  "attribution": { "commits": true, "pullRequests": true },
  "subAgentModels": {},
  "tier": "",
  "verbose": false,
  "verifyProxy": true,
  "voiceEnabled": false,
  "remoteControlAtStartup": false,
  "disableRemoteControl": false,
  "companyAnnouncements": [],
  "footerLinksRegexes": [],
  "inputNeededNotifEnabled": true,
  "awaySummaryEnabled": true,
  "feedbackSurveyRate": 0,
  "fileSuggestion": true,
  "autoMode": "",
  "disableAutoMode": false,
  "plansDirectory": "",
  "sandbox": {}
}

2.2 MCP Servers 存储

结论 🧪📖:CC 从两个位置读取 MCP,合并生效:

位置作用域Profile 对应
~/.claude.jsonmcpServersUser / Localdot-claude.jsonmcpServers
.mcp.json(项目根)Project不在 Profile 内

agent-box 当前问题 🔴:

  • mcp.py 写入 ~/.claude/claude.json(不存在于 CC 标准路径中)
  • 应改为写入 ~/.claude.jsonmcpServers合并写入(保留 CC 生成的其他字段如 firstStartTimeuserID 等)

.mcp.json Schema 📖:

jsonc
{
  "mcpServers": {
    "server-name": {
      "type": "stdio", // 或 "http" / "sse"
      "command": "npx",
      "args": ["-y", "@scope/server"],
      "env": { "KEY": "value" },
    },
  },
}

实验记录 🧪:

  • Experiment 2a: claude.jsonmcpServers → CC 读取 ✅
  • Experiment 2b: settings.jsonmcpServers → CC 读取 ✅
  • Experiment 2c: 两者同时存在 → CC 合并读取 ✅
  • 官方文档明确说 settings.json 不读 mcpServers key 📖

⚠️ 以官方文档为准:MCP 写入 ~/.claude.json,不依赖 settings.json 的兼容行为。

2.3 Hooks 存储

结论 🧪📖:Hooks 只在 settings.jsonhooks key 中,没有独立文件。

官方原文 📖:

"There is no standalone hooks file for project or user config. Define hooks under the hooks key in settings.json. Only plugins load a separate hooks/hooks.json."

实验记录 🧪:

  • Experiment 1a: settings.jsonhooks → Hook 触发 ✅
  • Experiment 1b: hooks/hooks.json(独立文件)→ Hook 不触发

agent-box 当前问题 🔴:

  • hooks.py 写入 dot-claude/hooks/hooks.json
  • 应改为操作 settings.jsonhooks key

Hook 事件列表(17 个)📖: SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, Stop, SubagentStart, SubagentStop, Notification, PreCompact, PostCompact, SessionEnd, TaskCompleted, ConfigChange, WorktreeCreate, WorktreeRemove

2.4 Skills 存储

结论 🧪📖:CC 扫描 ~/.claude/skills/ + ~/.agents/skills/

官方路径 📖:

  • User: ~/.claude/skills/
  • Project: .claude/skills/
  • 格式: skills/<name>/SKILL.mdSKILL.md 必须有)

跨工具标准 📖:~/.agents/skills/ 是 Agent Skills 开放标准路径,CC 也扫描此目录。

实验记录 🧪:

  • Experiment 3: CC 报告从 ~/.agents/skills/ 读取到 15 个 skill,~/.claude/skills/ 不存在

agent-box 当前状态 🟡:

  • skills.py apply 写入 dot-agents/skills/
  • 但 CC 未绑挂 ~/.agents/ → skills 跨 profile 共享
  • 应增加 dot-claude/skills/ 写入 + bwrap bind-mount ~/.agents/

2.5 Commands(自定义 Slash 命令)

结论 📖:~/.claude/commands/<name>.md → 通过 /name 调用。

已与 skills 机制统一:.claude/commands/deploy.md.claude/skills/deploy/SKILL.md 等价。

2.6 settings.local.json

结论 🧪📖:覆盖 settings.json 中的同名字段(除 permissions 外)。

实验记录 🧪:

  • Experiment 4: settings.json → model: sonnet, settings.local.json → model: opus → CC 使用 opus

优先级 📖:

settings.local.json (project) > settings.json (project) > settings.local.json (user) > settings.json (user)

3. agent-box 问题清单

3.1 Bug(与 CC 实际行为不一致)

#问题影响修复方向
1hooks.pyhooks/hooks.json,CC 不读hooks 功能无效改为操作 settings.jsonhooks
2mcp.pyclaude.json,非 CC 标准路径MCP apply 可能不生效改为写 ~/.claude.jsonmcpServers(合并写入)

3.2 缺口(CC 有的能力 agent-box 未覆盖)

#缺口优先级说明
3settings.json 未建模🔴 高只碰 env key,model/theme/permissions/plugins/hooks 等全都未覆盖
4settings.local.json 未覆盖🟡 中用户本地覆盖
5commands/ 未覆盖🟡 中自定义 slash 命令
6skills/ 路径偏差🟡 中apply 写 dot-agents/skills/,CC 也读 dot-claude/skills/
7~/.agents/ 未 bwrap 隔离🟡 已知skills 跨 profile 共享

3.3 架构风险

#风险说明
8~/.claude.json 双用途MCP apply 必须合并写入,不能覆盖 CC 状态字段
9CC 版本差异mcpServerssettings.json 中的行为可能因版本而异

4. 对 agent-box Profile Tab 的设计启示

4.1 每个 Tab 对应的编辑目标

Tab编辑目标文件编辑方式
CLAUDE.mddot-claude/CLAUDE.md文本编辑器
Settingsdot-claude/settings.json表单(结构化 key)+ JSON 编辑器(advanced)
Settings Localdot-claude/settings.local.json同上
Hookssettings.jsonhooks key可视化 hook builder → 写入 settings.json
MCPdot-claude.jsonmcpServers从 Library 选择 → apply → 写入 ~/.claude.json
Skillsdot-claude/skills/从 Library 选择 → apply → 拷贝目录
Commandsdot-claude/commands/文件编辑器

4.2 apply 流程

Library DB (mcp_servers/skills/prompts 表)
  → CLI/Bridge apply 命令
    → 写入 Profile 目录内的对应文件
      → bwrap bind-mount 覆盖真实路径
        → CC 启动后读取

5. 参考资料