Claude Code 故障排查

排查 Claude Code 问题时,应区分安装、认证、配置、权限、外部工具和仓库本身失败,避免把所有异常都归因于提示词。

最近核验
适用版本
适用于 Claude Code 2.1.x。本机使用 2.1.198 检查 CLI 拼写;当前官方文档可能包含更新的 2.1.x 行为。
核验方式
2026-07-19 对照官方文档、CLI reference 和 changelog。本机检查 version 和 help;doctor、auth、network、provider 和 IDE 结果随机器变化,不写成预先通过。
官方来源
官方 Troubleshooting官方 Advanced setup官方 CLI reference官方 Changelog

可复现实践

分离机器、账户、自定义配置和仓库故障

按固定诊断阶梯找到第一个失败层,再修改提示词或重装。

准备

  • 准确 symptom、时间、命令、工作目录和第一个可操作错误。
  • 允许运行只读诊断并创建临时空目录。
  • 计划脱敏用户名、路径、token、repo 名和 debug logs。

执行步骤

  1. 识别 executable 和 version

    不同 shell 或重复安装可在项目配置介入前解释行为。

    步骤 1
    command -v claude
    type -a claude 2>/dev/null || true
    claude --version
  2. 分开检查安装与认证

    doctor 是只读诊断;auth status 回答另一类问题。

    步骤 2
    claude doctor
    claude auth status --text
  3. 比较 safe mode 和空目录

    在同一 shell 中创建唯一空目录;如果无自定义或仓库外问题消失,重装前先查 project settings、hooks、MCP、plugins 或 memory。

    步骤 3
    DIAGNOSTIC_DIR=$(mktemp -d "${TMPDIR:-/tmp}/claude-diagnostic.XXXXXX")
    printf '%s\n' "$DIAGNOSTIC_DIR"
    cd "$DIAGNOSTIC_DIR"
    claude --safe-mode
  4. 收集窄范围 debug 证据

    只打开相关 categories,写入受控文件,共享前脱敏。

    步骤 4
    claude --debug "api,hooks" --debug-file ./claude-debug.log

预期结果

把 symptom 归到 executable/install、authentication/provider、customization、repository 或 external-service 层,并得到可复现下一步。

验证

  • 只改变一个怀疑层后重复原动作。
  • 比较原 repo、safe mode 和空目录行为。
  • 记录仍未验证部分,不凭相关性宣称 root cause。

失败处理

Claude 无法启动

使用 shell 级 claude doctor,并在交互命令前检查 PATH。

Safe mode 修复问题

逐类恢复 settings、hooks、MCP、plugins、memory。

两个环境都失败

编辑 repo config 前检查账户/provider 状态、network/TLS 和官方 error reference。

清理或回退

  • 脱敏和审查后返回原目录,确认 DIAGNOSTIC_DIR 是刚才打印的 mktemp 路径,只删除该目录。
  • 一次只恢复一个配置改动;修复 malformed settings 前保留备份。

边界与不适用场景

  • Debug logs 可能包含敏感路径和 request context,不能未脱敏公开。
  • doctor 显示 Search OK 不能排除 WSL 跨文件系统性能或搜索结果不完整。

安装和版本检查

确认 CLI 已安装、在 PATH 中可用,并按对应安装方式更新。不同安装渠道的更新行为可能不同。

认证检查

如果会话无法启动,先确认登录状态和账号访问权,再排查项目设置。跳过认证检查会把基础问题误判为工具或模型问题。

配置加载

当 instructions、permissions、hooks 或 MCP servers 未生效时,应检查当前会话实际加载了什么。常见原因是路径、作用域或配置优先级。

仓库失败

改动后构建或测试失败时,保留失败命令输出,并让 Claude Code 从第一个可操作错误追踪,不要直接重写无关代码。

诊断命令
claude doctor
claude auth status --text
claude --debug "api,hooks"

常见故障类别

大多数问题都属于少数几类。按顺序排查,而不是先改提示词。

排查检查

相关主题