怎么区分配置问题和上下文问题
如果 Claude Code 不能运行命令、不能写文件、读不到目录、MCP 没加载,或者 settings 改了以后看起来没生效,先查配置和权限。
这条排查路径只处理“Claude Code 能不能做这件事”。如果问题是它不理解项目规则、忘记包管理器、改错目录,应该去检查项目上下文。
| 字段 | 值 |
|---|---|
| 配置和权限 | settings.json / permissions / managed settings / add-dir |
| 项目上下文 | CLAUDE.md / .claude/rules / memory / 启动目录 |
doctor 能检查什么
先在你准备启动 Claude Code 的同一个终端里运行 doctor。它能先排掉安装、登录、配置和上下文用量里的明显问题。
如果 claude 命令本身不能启动,就在系统终端运行 claude doctor。如果已经进入 Claude Code 会话,也可以在会话里运行 /doctor。
claude doctor怎么看当前加载了哪些设置
进入 Claude Code 后运行 /status。重点看 Setting sources:它会告诉你当前会话读到了用户设置、项目设置、本地项目设置,还是企业托管设置。
如果你刚改了 .claude/settings.json,但 /status 没显示项目设置,先检查启动目录是不是这个仓库。不要继续改 prompt。
/statussettings 优先级怎么判断
同一个设置出现在多个位置时,不要只看你刚编辑的那个文件。先按优先级从高到低查一遍。
最常见的误判是:用户 settings 已经写对了,但项目本地 settings 或命令行参数覆盖了它;或者公司托管策略直接压住了本地配置。
| 字段 | 值 |
|---|---|
| 1. Managed | 组织或机器级策略,优先级最高 |
| 2. Command line | 本次启动命令里的临时参数 |
| 3. Local | .claude/settings.local.json |
| 4. Project | .claude/settings.json |
| 5. User | %USERPROFILE%\.claude\settings.json |
权限面板能看到什么
权限问题不要靠猜。运行 /permissions,看当前 allow、ask、deny 规则分别来自哪个 settings 文件。
如果 Claude Code 反复询问同一个安全命令,通常是 allow 没写中;如果它完全不能用某个工具,通常是 deny、托管策略或权限模式挡住了。
/permissionsdeny 规则先查哪一条
Claude Code 的权限规则不是普通提示词。deny、ask、allow 会按权限系统处理,deny 命中时不会因为 CLAUDE.md 里写了“可以执行”就放行。
先检查有没有过宽的 deny,比如直接拒绝 Bash、PowerShell、Read 或 Edit。再检查路径规则是不是挡住了你正在处理的目录。
{
"permissions": {
"allow": [
"PowerShell(Get-ChildItem *)",
"PowerShell(git status *)",
"Read(./src/**)"
],
"deny": [
"PowerShell(Remove-Item *)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
}
}读文件、改文件和命令权限有什么区别
Claude Code 读文件、写文件、执行命令不是同一个权限面。一个项目可能允许读 src/**,但不允许 Edit;也可能允许安全的 PowerShell 命令,但拒绝删除命令。
Windows 上写 PowerShell 规则时,优先写 cmdlet 名称,不要只按你习惯的 alias 判断。常见 alias 会被规范化后匹配。
| 字段 | 值 |
|---|---|
| Read | 控制文件读取、搜索和 @file 引用 |
| Edit | 控制内置文件编辑工具 |
| PowerShell / Bash | 控制终端命令执行 |
| MCP | 控制 MCP server 里的具体工具 |
额外目录不能写先查哪里
--add-dir 或 /add-dir 可以扩展 Claude Code 的文件访问范围,但这不等于自动加载那个目录里的项目规则。
如果你把共享配置、另一个 package 或 monorepo 外的目录加进来,先确认你只是需要读写文件,还是也需要加载那边的 CLAUDE.md。两件事不要混在一起排查。
claude --add-dir ../shared-package团队配置和个人配置怎么分
.claude/settings.json 适合提交到仓库,放团队都应该共享的权限、MCP 和 hook 配置。.claude/settings.local.json 适合放你自己的机器路径、实验配置和本地覆盖。
不要把个人 API Key、只适合你电脑的路径、临时模型偏好写进团队共享 settings。以后别人启动项目时,会直接继承这些配置。
- 团队共享:允许的检查命令、拒绝读取的敏感文件、项目 MCP server。
- 本地个人:私有路径、临时模型、当前机器上的代理或证书路径。
- 企业托管:组织统一的安全策略、登录方式、强制 deny 规则。
不同现象应该继续查哪里
如果前面几步已经确认 settings 和 permissions 生效,再按具体症状继续查。不要把所有问题都归因到 Claude 没理解你。
settings 改了但没有生效
运行 /status 看 Setting sources,再检查 JSON 是否有效、是否被更高优先级覆盖。model 和 outputStyle 这类启动时读取的设置可能需要重启或用对应命令切换。
命令总是要确认
运行 /permissions 看 allow 规则是否精确匹配当前命令。带 wrapper、管道、通配符或多个子命令时,规则需要覆盖每个实际子命令。
能读项目但不能写文件
检查权限模式、Edit 规则、工作目录和额外目录。Claude Code 的文件写入边界和读文件边界不是同一个问题。
MCP 没加载
先查 settings / .mcp.json / 托管策略,再看 MCP server 是否被 disabledMcpjsonServers、deniedMcpServers 或企业策略挡住。