Skip to content

fix: preserve unmanaged Claude settings on switch#131

Open
KiBlazer wants to merge 1 commit intoSaladDay:mainfrom
KiBlazer:fix/claude-settings-live-merge
Open

fix: preserve unmanaged Claude settings on switch#131
KiBlazer wants to merge 1 commit intoSaladDay:mainfrom
KiBlazer:fix/claude-settings-live-merge

Conversation

@KiBlazer
Copy link
Copy Markdown

Summary

  • Preserve unmanaged fields in ~/.claude/settings.json when switching Claude providers.
  • Keep provider-owned Claude env keys managed by cc-switch-cli, removing stale provider values during live writes.
  • Prevent live-only Claude settings from being backfilled into provider snapshots.

Test Plan

  • cargo fmt --check
  • cargo test --lib
  • Real switch test: chatgpt-ep -> chatgpt-k1587-163 -> chatgpt-ep
    • verified custom live-only test fields were preserved
    • verified provider-owned ANTHROPIC_* values switched correctly
    • verified exported provider snapshot did not include live-only test fields

@SaladDay
Copy link
Copy Markdown
Owner

感谢你提交这个修复,方向是很有价值的 👍

我这边看了一下,有几个地方需要再调整一下:

  1. 现在 PR 和最新 main 有冲突,尤其是 config.toml信任的文件夹和配置在下次切换回来的时候就自动覆盖消失 #123 fix(provider): unify common config live handling 已经重构了 common config 的写入/剥离语义,需要先 rebase 到最新 main 后重新处理冲突。
  2. 需要尽量复用当前 main 里的 common_config::* 统一逻辑,不要回退到旧的 Claude-only merge/strip 路径。特别是 common config 的 precedence 现在已经语义调整过。
  3. “保留 unmanaged live settings” 这个思路是对的,但建议把它做成 Claude live write 外层的窄修复:只保护 statusLine、permissions 等 Claude 用户配置,同时继续让 cc-switch 管理 provider-owned 的 ANTHROPIC_* 字段。

@KiBlazer KiBlazer force-pushed the fix/claude-settings-live-merge branch 2 times, most recently from 11feec3 to f4931d1 Compare April 25, 2026 09:25
@KiBlazer KiBlazer force-pushed the fix/claude-settings-live-merge branch from f4931d1 to eef12ba Compare April 26, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants