AI Native 手册
坑库

切换工具会整份覆盖设置

用模型供应商切换工具切回官方后,权限规则、hook、插件启用状态全丢了,表面症状只是“插件都关了”

亲历小工具产品阶段 · 起步更新于 2026-10-16
分享到 X
一句话规则

用过配置切换工具,先查权限、hook、插件三项;关键护栏放托管设置

发生了什么

有段时间我用一个模型供应商切换工具,在官方模型和第三方模型之间来回切。有一次从第三方切回官方,打开 Claude Code,发现所有插件都是关着的。

我先以为是插件出了问题,查下去才发现 ~/.claude/settings.json 被整份重写了:除了供应商相关的配置,权限规则(deny、ask)、hook、enabledPlugins 全部消失。“插件都关了”只是最显眼的症状,真正危险的是护栏跟着一起没了,而且没有任何提示(这一层护栏的下落,见防护规则会悄悄失效)。

为什么会这样

这类工具(比如 CC Switch)的工作方式,就是改写 ~/.claude/settings.json 里的供应商配置:API 地址、密钥、模型。我遇到的那次,切换工具把 ~/.claude/settings.json 整份重写了,权限、hook、插件启用状态全丢;这类工具的新版本声称只改连接相关字段。不管是哪种,切换后都要检查 permissions、hooks、enabledPlugins 还在不在。

偏偏用户级设置又是多数人放全局护栏的地方,一次“切模型”就可能顺手拆了护栏,而且没有任何报错。

怎么做

切换前备份,切换后只比护栏字段。这个文件的 env 里可能有供应商的密钥,备份设成只有自己能读,对比时也只取护栏相关的字段,别把密钥打到屏幕或日志里:

# 切换前:备份,权限 600
install -m 600 ~/.claude/settings.json ~/.claude/settings.backup.json
# 切换后:只比较 permissions、hooks、enabledPlugins
diff <(jq -S '{permissions, hooks, enabledPlugins}' ~/.claude/settings.backup.json) \
     <(jq -S '{permissions, hooks, enabledPlugins}' ~/.claude/settings.json)

没有备份时,至少看一眼这三项。哪一项变成 null,就是被冲掉了:

jq '{permissions, hooks, enabledPlugins}' ~/.claude/settings.json

最关键的护栏放进托管设置。它优先级最高,写入要管理员权限,切换工具改不到。macOS 是 /Library/Application Support/ClaudeCode/managed-settings.json,Linux 是 /etc/claude-code/managed-settings.json:

{
  "permissions": {
    "deny": ["Bash(rm -rf ~)", "Bash(git push --force origin main *)"]
  }
}

在 Claude Code 里运行 /status,Setting sources 一行能确认它已生效。

体检 hook 别放在会被覆盖的文件里。放在 ~/.claude/settings.json 的体检 hook,会和护栏一起被冲掉。放进项目级 .claude/settings.json 或托管设置,每次开会话自动检查。

相关

本页目录