先确认是配置还是上下文问题

如果 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`。

PowerShell
claude doctor

第二步:查看当前加载了哪些设置

进入 Claude Code 后运行 `/status`。重点看 Setting sources:它会告诉你当前会话读到了用户设置、项目设置、本地项目设置,还是企业托管设置。

如果你刚改了 `.claude/settings.json`,但 `/status` 没显示项目设置,先检查启动目录是不是这个仓库。不要继续改 prompt。

Text
/status

第三步:按优先级找覆盖来源

同一个设置出现在多个位置时,不要只看你刚编辑的那个文件。先按优先级从高到低查一遍。

最常见的误判是:用户 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、托管策略或权限模式挡住了。

Text
/permissions

第五步:确认 deny 有没有先命中

Claude Code 的权限规则不是普通提示词。deny、ask、allow 会按权限系统处理,deny 命中时不会因为 CLAUDE.md 里写了“可以执行”就放行。

先检查有没有过宽的 deny,比如直接拒绝 Bash、PowerShell、Read 或 Edit。再检查路径规则是不是挡住了你正在处理的目录。

JSON
{
  "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。两件事不要混在一起排查。

PowerShell
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 或企业策略挡住。

参考来源

Claude Code settingsAnthropic 官方文档Configure permissionsAnthropic 官方文档Claude Code securityAnthropic 官方文档TroubleshootingAnthropic 官方文档

相关文章

Claude Code 项目上下文怎么检查开发环境 / 约 11 分钟Claude Code Windows 环境变量生效验证开发环境 / 约 13 分钟Claude Code 配置指南:先把这 7 件事配好智能编程 / 约 15 分钟为什么 AI Agent 写代码必须有 AGENTS.md / CLAUDE.md智能编程 / 约 9 分钟AI Coding 工具真正改变的不是写代码,而是验证代码智能编程 / 约 8 分钟