Back to Cc Switch

CC Switch v3.16.1

docs/release-notes/v3.16.1-en.md

3.16.117.5 KB
Original Source

CC Switch v3.16.1

Codex stability patch: because some users did not want CC Switch to change how Codex config files are written, Codex App Enhancements now has a switch and is off by default. After enabling it, you can keep using Codex mobile remote control, official plugins, and other official-app features while using third-party APIs; this release also includes a series of stability fixes.

中文版 → | 日本語版 →


Usage Guides

If you use Codex third-party providers, local routing takeover, or want to use DeepSeek / Kimi / GLM / MiniMax and other Chat Completions upstreams in Codex, start with these docs:


[!WARNING]

Only Official Channels (Please Read)

CC Switch is a fully free and open-source desktop app, and we do not charge users any fees. Please only obtain the software through the official channels listed below:

ChannelOnly Official
Websiteccswitch.io
Sourcegithub.com/farion1231/cc-switch
DownloadsGitHub Releases
Author@farion1231
Report an ImposterGitHub Issues

Any "CC Switch" website or client that asks you for payment, top-ups, or login credentials is fake. If you have been tricked into paying, stop the transaction immediately and file a report through GitHub Issues.


Overview

CC Switch v3.16.1 is a Codex stability patch following v3.16.0. v3.16.0 promoted third-party Codex providers to first-class citizens through Chat Completions routing; this release focuses on several high-risk edges discovered in real use: official ChatGPT / Codex OAuth login state could be overwritten while switching third-party providers or during local routing takeover, the Codex model catalog could be cleared during live backfill, hot switching, takeover shutdown restore, or editing the active provider, and Codex tool_search, plugin / connector namespace tools, and custom tools were not fully restored back into Responses events on the Chat Completions upstream path.

This release also hardens local routing takeover ownership checks. Provider switching and takeover toggles now run serially per app. When deciding whether the live files are proxy-managed, CC Switch no longer relies only on stale enabled state or whether the proxy service is currently running; it also checks backups and proxy placeholders in the live files. This prevents ordinary live writes from overwriting proxy-managed config immediately after takeover is enabled, while the proxy is temporarily stopped, or during hot switching.

Release date: 2026-06-01

Stats: 23 commits | 62 files changed | +5,603 insertions | -1,113 deletions


Highlights

  • Safer Codex OAuth and third-party provider switching: added an optional official-auth preservation setting. When enabled, third-party provider tokens are written to config.toml, while official ChatGPT / Codex OAuth login stays in auth.json.
  • Codex model catalogs are no longer silently wiped: modelCatalog now treats the database as the source of truth, avoiding overwrites from live configs with missing catalog projections during live backfill, provider switching, takeover shutdown restore, and provider editing.
  • Codex Chat tools / plugin routing restored: tool_search, loaded namespace tools, and custom tools from Chat Completions upstreams are remapped back to Codex Responses shape; streaming custom tools now emit native response.custom_tool_call_input.* events.
  • More stable local routing takeover and hot switching: provider switching and takeover toggles are serialized per app. Hot switching refreshes provider display information in Codex live config while keeping the endpoint pointed at the local proxy.
  • Diagnostics and platform compatibility fixes: Codex proxy errors now include richer context; Codex CLI model-template discovery supports more platforms and falls back to a static GPT-5.5 template; Windows tool version detection fixes localized output and command quoting issues.

Added

Codex Official Auth Preservation Setting

Added an optional setting for preserving official ChatGPT / Codex OAuth login state when switching to third-party Codex providers. When enabled, CC Switch stores third-party provider API keys in the provider-scoped experimental_bearer_token inside Codex config.toml instead of overwriting the official login cache in auth.json.

Because some users do not want this feature to change how config files are written, the setting is off by default and keeps the compatibility behavior from before v3.16.0. Users who need both official Codex login and third-party providers can manually enable it under Settings -> Codex App Enhancements.

Codex DeepSeek Routing Guide

Added Codex DeepSeek routing guides in Chinese, English, and Japanese, covering provider routing requirements, the DeepSeek Codex provider form, and screenshot-based local routing takeover instructions.


Changed

Codex Auth Preservation Is Now Opt-In

Official auth preservation is off by default. Third-party Codex provider switching therefore keeps the old behavior unless the user opts in, avoiding surprise changes to how auth.json / config.toml are written.

Codex Restart Prompt After Provider Switching

Codex loads the model catalog and part of its config at startup. After successfully switching a Codex provider, the UI now reminds the user to restart Codex so model catalog and config changes actually take effect.

Provider Switching and Takeover Toggles Are Serialized

Codex / Claude / Gemini provider switching and local routing takeover toggles now share a per-app lock, avoiding concurrent writes to live config and backups. Ownership checks also prioritize live backups and the PROXY_MANAGED placeholder instead of relying only on whether the proxy service is running.

Codex Hot Switching Refreshes Display Info

When hot switching Codex providers during local routing takeover, CC Switch refreshes the provider id, model, and display name in the live config so the Codex client menu follows the active provider. The base URL still stays pointed at the local proxy, preventing the real upstream endpoint from leaking back into the live file.


Fixed

Codex Provider Editor Showing Live OAuth During Takeover

When Codex is under local routing takeover, live auth.json / config.toml are temporarily rewritten by the proxy. Editing the active provider from those live files could incorrectly show proxy placeholders or official OAuth login as provider config. The editor now explicitly explains that it is showing the provider config stored in the database, not the proxy-managed live files; even if the proxy service is temporarily stopped, CC Switch still treats the app as under takeover when the takeover state indicates so.

Codex OAuth Cleared or Overwritten During Takeover

Fixed multiple preserve-mode takeover paths that could clear or overwrite official ChatGPT / Codex OAuth auth.json. Takeover detection now recognizes PROXY_MANAGED in config.toml, cleanup only removes proxy placeholder tokens, and third-party providers misclassified as official no longer enter the official-auth overwrite path. Provider sync and switching also treat live backups and placeholders as takeover ownership signals, preventing normal live writes from overwriting proxy config right after takeover or while the proxy is paused.

Codex Model Catalog Data Loss

Fixed cases where modelCatalog could be cleared during live backfill, active-provider editing, provider switching, and takeover shutdown restore. Snapshot backups preserve existing model_catalog_json pointers; backups rebuilt from providers regenerate catalog projections from the database source of truth; editing the active provider now prefers the database model catalog instead of trusting a live reverse-parse result that may have lost its projection.

Provider switching also now always refreshes the generated Codex model catalog JSON (#3360, thanks @Postroggy).

Codex Chat Tools, Plugins, and Custom Tools Restored

Fixed Chat Completions routing for third-party Codex providers so tool_search, loaded MCP / connector namespace tools, and custom tools are fully restored back into Codex Responses shape. Non-streaming and streaming Chat responses now recover the correct tool type, namespace, call id, and arguments from the original Responses request; custom-tool streaming now emits native response.custom_tool_call_input.delta and response.custom_tool_call_input.done events.

Fuller Codex Proxy Error Diagnostics

When Codex forwarding fails, CC Switch now returns JSON errors that include provider, model, endpoint, upstream HTTP status, stable cc_switch_* error codes, and normalized HTTP status. This makes it much clearer which provider, endpoint, and upstream error caused the failure.

Codex Native Balance / Coding Plan Credential Lookup

Fixed native balance and Coding Plan queries using credentials from the wrong app. Each app now resolves its own provider credentials instead of carrying authentication assumptions from another app surface into the query flow (#3355, thanks @SiskonEmilia).

Codex CLI Discovery and Model Catalog Template Fallback

Fixed a too-narrow Codex CLI discovery path for third-party Codex model catalog projection. The backend now searches common Codex CLI install locations across platforms, and falls back to a built-in GPT-5.5 model catalog template if no template can be found (#3382, thanks @chofuhoyu).

Claude Desktop Official Provider Add Failure

Fixed an error when adding the Claude Desktop Official provider (#3405, thanks @Eunknight).

Kimi / Moonshot Tool-Thinking History Normalization

Added Kimi / Moonshot to the Anthropic-compatible tool-thinking history normalizer. Later turns can now correctly replay reasoning and tool-call context, avoiding failures caused by history messages that do not match upstream requirements (#3377, thanks @Neon-Wang).

Windows Tool Version Detection

Fixed incorrect quoting for .cmd / .bat version commands on Windows, and fixed localized command output being decoded as mojibake. Previously, these issues could make runnable tools appear as "installed but not runnable."


Upgrade Notes

Official OAuth Preservation Must Be Enabled Manually

If you want official ChatGPT / Codex OAuth login to stay in auth.json while you frequently switch third-party Codex providers, enable Codex official auth preservation in Settings. It is off by default to keep compatibility for existing users.

Restart Codex After Editing Model Mappings

Codex reads model_catalog_json at startup. Even though v3.16.1 fixes model catalog wiping, Codex still needs to be restarted after you edit the model mapping table so the /model menu refreshes.

During Takeover, the Editor Shows Stored Config, Not Live Files

When local routing takeover is enabled, live auth.json / config.toml temporarily point to the CC Switch proxy. The provider editor therefore shows the provider config saved in the database. This is expected; after takeover is disabled, CC Switch restores live config from backups or the database source of truth.


Risk Notice

This release continues the risk notices from previous versions for reverse-proxy-style features.

Codex OAuth reverse proxy: using a ChatGPT subscription's Codex OAuth through a reverse proxy may violate OpenAI's terms of service. See the v3.13.0 release notes for details.

Codex third-party provider Chat routing: when CC Switch local proxy converts and forwards Codex requests to third-party providers, each provider may have different requirements for billing, compliance, and data retention. Read the target provider's terms before use.

Claude Desktop third-party provider proxy switching: when CC Switch's built-in proxy gateway forwards Claude Desktop requests to third-party providers, you must also follow the target provider's billing, compliance, and data-retention terms.

By enabling these features, users accept the related risks. CC Switch is not responsible for account restrictions, warnings, or service suspensions caused by using these features.


Thanks

Thanks to the following contributors for fixes in v3.16.1:

  • #3360: always update Codex model catalog JSON when switching providers, thanks @Postroggy.
  • #3355: resolve native balance / Coding Plan credentials per app, thanks @SiskonEmilia.
  • #3405: fix Claude Desktop Official provider add failure, thanks @Eunknight.
  • #3382: Codex CLI multi-platform discovery and GPT-5.5 model template fallback, thanks @chofuhoyu.
  • #3377: Kimi / Moonshot tool-thinking history normalization, thanks @Neon-Wang.

Thanks also to everyone who reported Codex OAuth, model catalog, local routing takeover, and Chat Completions tool-call issues after v3.16.0. Many of these fixes came directly from real-world reproduction details.


Download & Install

Visit Releases and download the build for your system.

System Requirements

SystemMinimum VersionArchitecture
WindowsWindows 10 and laterx64
macOSmacOS 12 (Monterey)+Intel (x64) / Apple Silicon (arm64)
LinuxSee table belowx64 / ARM64

Windows

FileDescription
CC-Switch-v3.16.1-Windows.msiRecommended - MSI installer with auto-update
CC-Switch-v3.16.1-Windows-Portable.zipPortable build, unzip and run

macOS

FileDescription
CC-Switch-v3.16.1-macOS.dmgRecommended - DMG installer, drag to Applications
CC-Switch-v3.16.1-macOS.zipUnzip and drag to Applications, Universal Binary
CC-Switch-v3.16.1-macOS.tar.gzFor Homebrew install and auto-update

Homebrew install:

bash
brew install --cask cc-switch

Upgrade:

bash
brew upgrade --cask cc-switch

Linux

Linux assets are available for both x86_64 and ARM64 (aarch64). Choose the file whose architecture tag matches your machine's uname -m output:

  • CC-Switch-v3.16.1-Linux-x86_64.AppImage / .deb / .rpm
  • CC-Switch-v3.16.1-Linux-arm64.AppImage / .deb / .rpm
DistributionRecommended FormatInstall Command
Ubuntu / Debian / Linux Mint / Pop!_OS.debsudo dpkg -i CC-Switch-*.deb or sudo apt install ./CC-Switch-*.deb
Fedora / RHEL / CentOS / Rocky Linux.rpmsudo rpm -i CC-Switch-*.rpm or sudo dnf install ./CC-Switch-*.rpm
openSUSE.rpmsudo zypper install ./CC-Switch-*.rpm
Arch Linux / Manjaro.AppImageMake executable and run directly, or use AUR
Other distributions / unsure.AppImagechmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage