Files
cc-switch/docs/release-notes/v4.0.3-en.md
T

9.4 KiB

CC Switch v4.0.3

The third fix release for the 4.0 preview

This release fixes Claude Code still reasoning at full effort with thinking turned off after being mapped to GPT or Grok, and Skills imported with other apps checked never actually reaching those apps; Claude Desktop now works with OpenCode Go too. Claude Code's quick toggles gain "Disable Auto Mode Server Checks", and every toggle now comes with an explanation. MCP servers and prompts are edited on a full page that reminds you to save before leaving; "Backup & Restore" shows how much space all backups take; ChatGPT subscriptions show their Codex Credits balance. New presets: OpenCode Zen and MoArk. For everything new in 4.0, see the v4.0 release notes.

Preview builds do not update automatically. In-app updates follow stable releases only. If you installed any version from 4.0.0 to 4.0.2, download 4.0.3 from this page and install it manually.


New

New Claude Code quick toggle: Disable Auto Mode Server Checks. Starting with Claude Code 2.1.281, auto mode first asks for an official server-side check, which cannot get through a third-party gateway or local routing, so every session stopped once with a "not eligible" notice. The Claude provider editor now has "Disable Auto Mode Server Checks"; with it checked, the check runs locally and the notice goes away. It is checked by default for new third-party providers and left unchecked for official and cloud providers; do not check it for official endpoints either. Also, a CLAUDE_CODE_AUTO_MODE_SERVER written in a provider's config used to be left out of settings.json on switch; it now switches along with the provider.

Every quick toggle is explained. Each quick toggle above the Claude config editor now has a "?" after it, saying in one sentence what it does, when to use it, and whether it is a global setting or follows the provider.

MCP servers and prompts are edited on a full page, with a reminder to save before leaving. Editing MCP servers and prompts no longer opens a dialog; a full page opens in the content area, and the sidebar and the window drag area keep working. The provider edit page is no longer width-limited either and grows with the window. With unsaved changes, clicking the sidebar, pressing ⌘, or switching away from the tray asks first; Back, Cancel and Esc still close right away.

"Backup & Restore" shows every backup. This section used to list only database backups, while the other backups under ~/.cc-switch quietly kept growing; the Codex session migration backups alone can take several GB. Below the database list there is now an expandable "Other Backups" section listing Skill uninstall backups, Codex session migration backups, config first-write backups, Hermes and OpenClaw config backups, files left by older versions and more, each with its path, size and item count. You can open each one in the file manager or delete a whole category. Before deleting, it tells you what you lose: for example, after deleting the Codex session unify migration backups, "Restore backup" is no longer available when you turn that switch off.

Codex Credits balance for ChatGPT subscriptions. When you have a Credits balance, the expanded quota details and the Accounts page gain a "Credits" row showing the balance and its US dollar value at API prices (1 Credit is about $0.04). Credits are spent only after your limits run out, so the provider card normally does not show them; they appear once one of the limits is used up.

OpenCode 2.0's new provider config. OpenCode 2.0 supports providers written in a new format under providers. CC Switch used to understand only the old provider, so providers in the new format did not show up, and writes landed where OpenCode does not read them. Both formats can now be read and written; providers in the new format are edited in the JSON editor, comments are kept on save, and format errors point to the exact field.

Success Rate and Speed on the Models tab of Usage. Like the Providers tab, model statistics now have Success Rate and Speed columns; the "Average Cost" column is gone, and you can see it by hovering over the cost.

Other:

  • The installed Skills list has a select-all checkbox in its header, which applies to the rows the current search and filters show.
  • Switching providers and entering or leaving Routing or Aggregation mode now logs where it switched from and to and how it went, which makes "I clicked switch and nothing happened" easier to track down.
  • New presets: OpenCode Zen (Claude Code and Codex; shares one row with OpenCode Go) and MoArk (Claude Code, Codex, Pi, OpenCode, OpenClaw).

Fixes

  • With Claude Code mapped to GPT or Grok, turning thinking off still left it reasoning at full effort. With thinking off, Claude Code still sends a high reasoning effort, so after conversion to the OpenAI format the upstream reasoned at full effort anyway. Turning thinking off now lowers the effort to low, and levels the target model does not support are moved to one it accepts: GPT-5.x pro, for example, does not accept low, so /effort low used to fail with a 400. Models whose thinking cannot be turned off, such as Fable and Opus 5.5, keep thinking after mapping as well.
  • Other apps checked when importing a Skill never actually got it. Only the checked state was recorded: the UI showed the Skill as enabled, but that app's Skills directory had no files. Importing now copies the Skill over right away; apps where the copy fails are not marked enabled and are listed in the import result.
  • Claude Desktop with OpenCode Go failed with 400 MissingSessionID. OpenCode Go requires a session ID on every request, and Claude Desktop does not send one. When a request to OpenCode is missing it, local routing now adds one, keeping the same ID throughout a conversation.
  • Tool calls went missing from some upstreams' streaming responses. Some upstreams mix LF and CRLF line breaks in their streaming responses, which used to split events in the wrong places, so Claude Code never received tool calls from OpenAI Chat upstreams.
  • The provider and model tables in Usage left out cache tokens. The tables used to add up only new input and output, so with a high cache hit rate the rows summed to a small fraction of the total at the top. They now match the total token count at the top.
  • Usage imported without routing showed a placeholder provider name. It used to show a placeholder like "Claude (Session)"; it now shows "Claude Code · Session logs", and hovering explains why the provider cannot be told apart. In the request log and request details, where the app is already shown next to it, only "Session logs" appears.
  • On a slow disk, writing usage records slowed down the routing service. Usage records are now written on a separate thread and no longer hold up other requests coming in at the same time.
  • Charts and icons jittered when switching tabs on the Usage page on macOS.
  • The Xiaomi MiMo presets for Hermes and OpenClaw defaulted to a model without image support; they now default to mimo-v2.6-pro, like the other apps.
  • The "Get API Key" link of the OpenCode Go presets opened a page saying the referral program had ended; it now links without the referral code.

Polish

  • Claude's "Teammates Mode" and "Max Effort Thinking" quick toggles are removed. Every Claude Code session now has team features built in, so the Teammates toggle only controlled split-pane display; the max effort toggle locked every session to the most expensive level and stopped /effort from working. Use /effort max in a session when you need it. If these two variables are already in your config, they are not removed.

Upgrade Notes

The database schema is unchanged, still at 20, so going back to 4.0.2 is fine.

Preset changes only affect newly added providers. Existing Claude providers do not get "Disable Auto Mode Server Checks" checked automatically; check it in the editor if you need it. Existing Hermes and OpenClaw MiMo providers keep their model as well.


Thanks

Thanks to @SailingLoong (auto mode setting following the provider), @Owlbay (full-page editing with the unsaved-changes reminder, the MiMo presets), @DEAN-Cherry (OpenCode 2.0's new provider config), @lcgash (the MoArk presets), @allenxu09 (switch logging, Skill select-all, the Usage page jitter), @Chris-Xie369 (the OpenCode Go session ID), @ggbdpq (usage writes no longer holding up routing), @fisHarly0 (streaming responses with mixed line breaks) and @minc-nice-100 (Windows test isolation) for their contributions, and to @shangchaovo, @gsmchen, @winter-maple, @guangzh3n, @AltCtrlFn, @R-Tsubasa, @Lingbou, @Enough1122 and @IAld010 for reporting issues and making suggestions.

For the full technical details, see the CHANGELOG.