macOS cc-switch检测版本错误/卡死 - CC Switch Fix
Quick fix
修改.zshrc中fastfetch调用,添加[[ -t 1 ]]限制非交互式输出。
Symptom
Section titled “Symptom”mac 版本在检查到新版本后,点击按钮更新之后每次都会卡死。在 macOS 上,cc-switch 通过执行 `zsh -lic` 来检测工具(如 Codex/Claude Code)的版本。如果用户的 shell 配置文件(如 ~/.zshrc)中包含无条件执行的命令(例如 `fastfetch`),这些命令会在非交互式子 shell 启动时向 stdout 输出额外信息(如系统版本号或 ASCII 艺术图)。
cc-switch 使用正则表达式 `.find()` 获取输出的第一个版本号片段。当 `fastfetch` 等工具先于实际 CLI 工具输出版本号(例如将 macOS 系统版本 `15.7.9` 误判为工具版本)时,前端会认为当前版本高于远程最新版本,导致界面显示“已就绪”且升级按钮计算异常。此外,部分用户反馈在此过程中客户端会出现卡死现象。
打开终端,编辑你的 zsh 配置文件。
~/.zshrc找到调用 fastfetch(或其他可能输出文本的命令)的行,在其前添加条件判断 `[[ -t 1 ]] &&`,确保它仅在真实终端交互时才执行。
~/.zshrc
Affected Versions
Section titled “Affected Versions”ToolClaude Code / Codex / Gemini CLI
Version3.16.2 - 3.18.0
PlatformsmacOS
Source Issues
Section titled “Source Issues”本页汇总自 2 个真实 issue
- 为什么其他平台没有这个问题?
- 该问题主要源于 macOS 默认的 zsh shell 行为以及特定插件(如 fastfetch)在非交互式环境下的输出干扰。Windows (PowerShell/CMD) 和 Linux 的 shell 环境通常不会以相同方式注入此类元数据到版本检测管道中。
- 除了 fastfetch,还有其他原因会导致版本检测错误吗?
- 是的。任何在 ~/.zshrc、~/.bash_profile 或 ~/.profile 中无条件执行并输出包含数字版本号字符串的命令都可能导致此问题。请检查是否有类似 `neofetch`, `screenfetch` 或自定义脚本在启动时输出大量文本。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。