原子替换失败 os error 50 - cc-switch
Quick fix
将 Claude Code 配置目录从 WSL 路径改回 Windows 本地路径,或回退至 v3.19.0。
Symptom
Section titled “Symptom”更新供应商失败:同步 Claude Live 配置失败: 写入 Claude 配置失败: 原子替换失败: \\wsl.localhost\Ubuntu-24.04\home\f\.claude\settings.json.tmp.25844.1786072807352757000.15 -> \\wsl.localhost\Ubuntu-24.04\home\f\.claude\settings.json: 不支持该请求。 (os error 50)在 cc-switch v3.19.2 中,保存供应商配置时会通过原子替换(atomic replace)的方式写入 `settings.json`。该机制会先写入一个临时文件,再将其重命名为目标文件。然而,Windows 的文件系统不支持跨 WSL 网络路径(如 `\\wsl.localhost\...`)进行原子重命名操作,因此触发 `os error 50`(不支持该请求)错误,导致保存失败。回退到 v3.19.0 可避免此问题,因为旧版本未采用此写入机制。
将 cc-switch 的 Claude Code 配置目录从 WSL 路径(如 \\wsl.localhost\Ubuntu-24.04\home\f\.claude)修改为 Windows 本地路径。
// ~/.cc-switch/settings.json"claudeConfigDir": "\\\\wsl.localhost\\Ubuntu-24.04\\home\\f\\.claude""claudeConfigDir": "C:\\Users\\<你的用户名>\\.claude"如果必须使用 WSL 路径,请将 cc-switch 回退至 v3.19.0 版本。
Affected Versions
Section titled “Affected Versions”ToolClaude Code
Version3.19.2(受影响版本,v3.19.0 不受影响)
PlatformsWindows
Source Issues
Section titled “Source Issues”- 为什么 v3.19.0 可以正常保存,升级到 v3.19.2 就报错了?
- v3.19.2 引入了新的原子替换写入机制,而 Windows 系统不支持对 WSL 网络路径执行原子重命名操作,因此会报错。v3.19.0 使用的是旧的直接写入方式,不涉及重命名操作。
- 除了回退版本,还有其他解决方法吗?
- 有。你可以将 Claude Code 的配置目录从 WSL 路径改回 Windows 本地路径(如 C:\\Users\\<用户名>\\.claude),这样原子替换操作就能在本地文件系统上正常执行。
Gtk-CRITICAL: gtk_widget_get_scale_factor 失败在 Linux 或 WSL2 中运行 cc-switch 遇到 GTK 断言失败时,请修改 settings.json 关闭静默启动,或清理残留配置重装。settings.json 被代理接管覆盖导致插件配置丢失 - Claude Code将 hooks、statusLine 等自定义字段放入「通用配置」面板,或升级至 v3.12.2+ 以修复旧版备份恢复逻辑。"Not logged in ? Please run /login" Claude使用 Copilot 或 Codex 等托管账户时,必须在 cc-switch 中开启“API代理接管”,否则直连上游地址会导致认证失败或模型无权限报错。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。