12 KiB
CC Switch v4.0.14
This release adds a large set of customization options to the usage dashboard: the usage page gains a "Settings" tab, amounts can be shown in other currencies such as CNY, EUR and JPY (with an exchange rate you can edit), the sidebar "Today" line can show cost, tokens, requests or cache hit rate, you can choose which columns the request log shows, and four new columns are available: cache write, hit rate, total time and status code. When you open the usage page again, it returns to the tab, time range and chart metrics you last viewed. "Open Terminal" on Claude Code cards now first explains what the folder is for, and remembers recently used folders. It also fixes a 400 on the second round of tool calls when Codex connects to Gemini through routing, Codex's retry count setting not taking effect in Routing mode, Skills repositories larger than 128 MiB failing to install, custom pricing containing uppercase letters not taking effect, Hermes development builds constantly reporting a new version, and reordering the failover queue doing nothing, among other issues. For everything new in 4.0, see the v4.0 release notes.
New
Usage amounts can be shown in other currencies. The usage page's former "Pricing" tab is now "Settings", with the new "Display" section at the top and the pricing configuration still below it. Under "Currency" you can choose US dollars (the default), Chinese yuan, euros, Japanese yen, New Taiwan dollars or Turkish lira, and the "Exchange rate" comes with a reference value you can edit. Costs are still recorded in US dollars and only converted for display; hover to see the original USD value. Charts convert first and then draw, so axis ticks are still whole numbers. Converted amounts keep at most two decimal places (yen shows two fewer), and larger amounts use thousands separators.
Choose what the sidebar "Today" line shows. The usage line in the sidebar used to always show today's cost; now in Sidebar "Today" you can choose "Cost", "Tokens", "Requests" and "Cache hit rate", up to two items, or none at all to hide it. Names are no longer squeezed by the numbers after them; with two items selected, the line shows just the two numbers and puts the full description in the tooltip.
Choose which columns the request log shows. Check the columns you want in "Request log columns". Four columns are new, all hidden by default:
- Cache Write: the number of tokens written to the cache. Codex, Gemini and Grok don't report this number, so it shows "—" with an explanation on hover.
- Hit Rate: each request's cache hit rate (#7298), calculated the same way as the overall hit rate; it is rounded down to one decimal place, so a near-complete hit never shows as 100%.
- Total Time: the duration of the whole streamed response; values estimated from session logs are prefixed with "≈".
- Status Code: while this column is shown, the error marker next to the time is no longer displayed.
When there are many columns the table scrolls horizontally instead of squeezing every column narrower.
The usage page remembers your last view. When you open the usage page again, it returns to the tab, preset time range and trend chart and heatmap metrics you last viewed. A custom date range does not overwrite the remembered preset range, and the app, provider and model filters are not kept.
"Open Terminal" explains first, then lets you pick a folder. Clicking "Open Terminal" on a Claude Code card used to open the system folder picker right away, with no hint of what the folder was for. It now first opens "Open a terminal in which folder?", explaining that a terminal will open in the folder you choose and start Claude Code with this card's settings, usually in your project folder. The folder you last opened successfully is filled in automatically, and "Recent" lists up to five folders that you can pick with one click or remove. When the card has its own address and key, it also explains that this terminal is isolated: switching providers in CC Switch later won't affect it.
Pricing: Added built-in pricing for Gemini 4 Argon (#8356), an introductory price valid until 2026-11-30; past requests already recorded as 0 are repriced at startup.
Improvements
Claude Desktop shows 1M models only once. Desktop used to list every model that declared 1M twice: a normal row plus a "1M context" row. Now only the normal row remains, and selecting it still uses the 1M window. In Routing and Aggregation modes this takes effect the next time CC Switch starts or the mode is switched; in Direct mode, the next time you switch providers or save the card.
The direct provider can't be deleted while routing, and the reason is now explained. In Routing or Aggregation mode, the card the direct pointer points at can't be deleted, because leaving routing returns to it (#8277). The message used to say "The provider in use can't be deleted", yet the route page didn't mark this card as in use, which left people puzzled. The message now states the reason, and that you should first choose "Back to direct and use" on another provider on the direct page and then delete it.
When connecting to the upstream fails, the log states the specific cause. Previously a failed routed request only logged something vague like "error sending request", with no way to tell whether it was DNS resolution, a refused connection, TLS or a reset connection (#8416). The log now includes the underlying cause, making it easier to judge whether several providers failing at once share the same network problem; URLs are stripped before logging, so keys in query parameters don't end up in the log.
Presets: SiliconFlow China's Claude Code, Claude Desktop, Hermes and OpenClaw presets now use DeepSeek-V4-Flash (the previous MiniMax-M2.5 has been retired); TokenFactory is shown as "词元工厂" in the Chinese interface; Pi switches to pi.dev's new three-color icon.
Fixes
- When Codex connected to Gemini through routing, the second round of tool calls failed with a 400 "missing a thought_signature" (#8336). Gemini returns a signature with tool calls and requires it to be sent back unchanged in the next round, but CC Switch's format conversion dropped it. It is now saved and sent back; if CC Switch restarts in the middle of a tool-call round and the signature is lost, it fills in a placeholder signature as Gemini's documentation describes, instead of failing. Other upstreams are not affected.
- In Routing mode, the retry count in Codex's config didn't take effect (#8265). After entering routing, the provider's
stream_max_retries,request_max_retriesandstream_idle_timeout_mssettings were dropped, so retries set to 50, for example, fell back to Codex's default of 5. They are now kept. - Skills repositories larger than 128 MiB failed to install and were misreported as exceeding the extraction limit (#8421). The repository archive used to be read entirely into memory with a 128 MiB cap; it is now written to a temporary file as it downloads, the cap is raised to 512 MiB to match the extraction limit, and exceeding the download limit has its own message.
- Custom model pricing containing uppercase letters didn't take effect, so cost stayed at 0 (#8413). For example
GLM-5.3-Flash-EXL3, entered as the name shown in the interface. Price lookup is now case-insensitive, covering both new requests and the history backfill after saving. - Estimated speed was too low for OpenCode session turns with many tool calls (#8402). Duration used to run until the tools finished executing; it now ends when the model's output ends.
- Two problems with OpenCode one-click import: after a successful import, the card's "Added" status didn't update promptly (#8380); providers with Chinese names couldn't be saved on the edit page after import (#8379).
- Hermes development builds constantly reported a new version (#8394). Development version numbers like
0.22.1+238.g<sha>used to be compared as the release0.22.1, and the notice didn't go away even afterhermes update. Development builds no longer get the notice. - Tools installed in WSL that failed when run were shown as "Not installed" (#8167). Previously any output containing "not found", such as "module not found", counted as not installed; now only the shell's "command not found" does.
- Sub-agent usage was never counted when a Codex parent session contained a garbled record (#8360). That record is now skipped and the rest is counted normally.
- Reordering the failover queue made no change but still reported success (#8297). When two providers in the queue had the same sort value, or a newly added provider had none, moving up or down wrote the same value. The adjusted order now always takes effect.
- On Windows, the same project was split into two groups in session management because of drive letter case (#8233). For example
D:\projects\demoandd:\projects\demo. They are now merged into one group. - After editing request headers in OpenClaw's config JSON, the "Send User-Agent" switch didn't follow (#8256).
Upgrade Notes
The database schema is unchanged, still at 20.
- The usage page's "Pricing" tab has moved into "Settings"; the currency, sidebar "Today" and request log column settings are stored only on this device and are not synced to the cloud.
- In Claude Desktop's Direct mode, the two rows for a 1M model only merge into one after you next switch providers or save the card.
- Gemini 4 Argon's built-in price is an introductory price valid until 2026-11-30; the regular price after that will be adjusted in the next pricing update.
Thanks
Thanks to @Vincebye (custom pricing with uppercase letters), @xianshang33 (OpenCode speed estimates), @HaiYangBG1 (the two OpenCode one-click import problems), @Tsuki-hash (false new-version notices for Hermes development builds), @Adonis0123 (WSL tool detection), @Carl723000 (garbled records in Codex parent sessions) and @Besty0728 (Gemini 4 Argon pricing) for their contributions.
Thanks to @maq233, @CR547, @zqbake, @Hybangbang, @zhang3776813, @zhangyudi-01, @zsp1029, @hulkbig and @tarnish233 for reporting issues, providing reproduction details and suggesting fixes.
For the full technical details, see the CHANGELOG.