CC Switch v3.13.0
Lightweight Mode, Quota & Balance Visibility, Provider Model Auto-Fetch, Codex OAuth Reverse Proxy, and Tray Per-App Submenus
Overview
CC Switch v3.13.0 is a major feature release centered on observability, provider workflow ergonomics, and proxy compatibility. It adds inline quota and balance displays across official Claude / Codex / Gemini providers plus Token Plan, Copilot, and third-party balance APIs; introduces a Lightweight Mode that keeps CC Switch running from the system tray without a main window; delivers automatic model discovery via OpenAI-compatible /v1/models across all five supported applications; ships a Codex OAuth reverse proxy for ChatGPT subscribers; reorganizes the tray menu into per-app submenus; rebuilds the proxy forwarding stack on a Hyper-based client; and overhauls the Skills workflow with discovery, batch updates, storage-location toggling, and built-in skills.sh search and install. Additional improvements include full URL endpoint mode, enhanced token usage tracking, the Copilot interaction optimizer, a UTF-8 streaming chunk boundary fix for multi-byte output, a Linux startup UI responsiveness fix, and a friendlier new-user onboarding experience.
Release Date: 2026-04-10
Update Scale: 139 commits | 280 files changed | +31,627 / -3,042 lines
Highlights
- Lightweight Mode: Tray-only operating mode that destroys the main window on exit to tray and recreates it on demand, reducing CC Switch's desktop footprint to near zero when idle
- Quota & Balance Visibility: Inline quota or balance readout across provider cards — official Claude / Codex / Gemini subscriptions, GitHub Copilot premium interactions, Codex OAuth, Token Plan providers (Kimi / Zhipu GLM / MiniMax), plus official balance queries for DeepSeek, StepFun, SiliconFlow, OpenRouter, and Novita AI
- Provider Model Auto-Fetch: OpenAI-compatible
/v1/modelsdiscovery across Claude, Codex, Gemini, OpenCode, and OpenClaw provider forms, with grouped dropdown selection and failure-specific error messages - Codex OAuth Reverse Proxy: ChatGPT Codex reverse proxy exposed as a new Claude provider card type, allowing users to use their ChatGPT subscription in Claude Code. Includes managed OAuth login and inline subscription quota display (⚠️ Risk Notice)
- Tray Per-App Submenus: Reworked the tray menu into per-application submenus so it never overflows the screen and background provider switching scales to dozens of providers per app
- Skills Discovery & Batch Updates: SHA-256-based skill update detection, per-skill and "Update All" batch actions,
skills.shsearch integration, and a storage-location toggle between CC Switch storage and~/.agents/skills - Session Workflow Upgrades: Batch session deletion, a directory picker before launching Claude terminal restore, usage import from Claude / Codex / Gemini session logs without proxy interception, precise Codex JSONL parsing, and per-app usage filtering
- OpenCode / OpenClaw Stream Check Coverage: OpenCode detection via npm package mapping, OpenClaw
openai-completionssupport, and the remaining OpenClaw protocol variants — with custom-header passthrough and auth-header detection fixes - Full URL Endpoint Mode: Provider option that treats
base_urlas a complete upstream endpoint, unblocking vendors that require nonstandard URL layouts - Hyper-based Proxy Forwarding Stack: Refactored proxy forwarding onto a Hyper-based client with transparent header forwarding, improved endpoint rewriting, and better support for dynamic upstream endpoints
- Copilot Interaction Optimizer: Request classification and routing logic that reduces unnecessary GitHub Copilot premium interaction consumption
- UTF-8 Stream Chunk Boundary Fix: All four SSE streaming paths now preserve incomplete multi-byte UTF-8 sequences across TCP chunks, eliminating intermittent U+FFFD garbled output via the Copilot reverse proxy
- Linux Startup UI Fix: Fixed the long-standing issue where the window UI couldn't receive clicks on Linux until the user manually maximized and restored the window
- First-Run Onboarding: One-time welcome dialog on fresh installs, automatic seeding of Claude / OpenAI / Google official presets, and auto-import of OpenCode / OpenClaw live configurations on startup
- Claude Session Titles & Search Highlighting: Meaningful title extraction for Claude sessions using a priority chain (custom-title metadata → first user message → directory basename), plus keyword highlighting in Session Manager search results
- URL-Based Provider Icons: Dual rendering mode supporting Vite URL imports for large SVGs and raster images (PNG, JPG, WebP), keeping small SVGs inlined
- New Provider Presets: TheRouter, DDSHub, LionCCAPI, Shengsuanyun (胜算云), PIPELLM, and E-FlowCode across supported applications
New Features
Lightweight Mode
A tray-only operating mode that dramatically reduces CC Switch's desktop footprint when idle.
- Destroys the main window on exit-to-tray instead of hiding it, freeing UI resources and memory
- Recreates the window on demand when the user reopens CC Switch from the tray, a deeplink, or single-instance activation
- Integrated into every window-re-show path: normal startup, deeplink, single_instance, tray
show_main, and the lightweight-exit round-trip
Quota & Balance Visibility
Added inline quota and balance readouts to provider cards so users can see remaining capacity without leaving the card.
- Official subscriptions: Inline quota display for Claude, Codex, and Gemini official providers
- GitHub Copilot: Premium interactions quota display on the Copilot provider card
- Codex OAuth: ChatGPT subscription quota inline with the Codex OAuth provider card
- Token Plan providers: Kimi, Zhipu GLM, and MiniMax usage progression display (requires manual activation to avoid confusion)
- Third-party balances: Official balance queries for DeepSeek, StepFun, SiliconFlow, OpenRouter, and Novita AI (requires manual activation to avoid confusion)
- Health-check and usage-config buttons are hidden for official providers to keep the card clean
Provider Model Auto-Fetch
Added OpenAI-compatible model discovery to every provider form, removing the manual copy-paste loop for model IDs.
- Queries the configured provider endpoint's
/v1/models - Groups models in the dropdown by category for easier selection
- Failure-specific error messages distinguish network / authentication / endpoint issues
- Supported across all five applications: Claude, Codex, Gemini, OpenCode, and OpenClaw
Codex OAuth Reverse Proxy
Added a reverse proxy path for ChatGPT subscribers who want to use their ChatGPT subscription in Claude Code.
- Managed OAuth login flow with ChatGPT authentication
- Surfaces as a new Claude provider card type alongside API-key providers
- Inline subscription quota display
- Integrated into the Auth Center for unified token management
- See the ⚠️ Risk Notice below before enabling
Tray Per-App Submenus
Reorganized the tray menu so providers are grouped under each application instead of living in a flat list.
- Per-application submenus for Claude, Codex, Gemini, OpenCode, and OpenClaw
- Prevents the tray menu from overflowing the screen when users have many providers
- Background provider switching scales cleanly to long provider lists
Skills Discovery & Batch Updates
Upgraded the Skills management panel into a complete discovery plus maintenance workflow.
- SHA-256 update detection: Skills are content-hashed so the UI knows exactly which ones have upstream changes
- Per-skill and batch updates: Individual "Update" buttons plus an animated "Update All" batch action
- Storage-location toggle: Switch between CC Switch storage and
~/.agents/skillswithout losing skill state - Public registry search:
skills.shsearch integrated directly into the dialog for discovering community skills
Session Workflow Upgrades
Multiple session management improvements that reduce friction when working with Claude / Codex / Gemini sessions.
- Batch session deletion: Select and delete multiple sessions at once from Session Manager (#1693, thanks @Alexlangl)
- Directory picker before restore: Claude terminal restore now prompts for the working directory up front (#1752, thanks @yovinchen)
- Usage from session logs without proxy: Usage data imported directly from Claude / Codex / Gemini session logs — no proxy interception required
- Precise Codex JSONL parsing: Replaced estimated Codex usage with precise JSONL session-log parsing plus Codex model name normalization for consistent pricing lookup
- Gemini CLI session log integration: Gemini usage now syncs accurately from Gemini CLI session logs
- Per-app usage filtering: Filter the usage dashboard by Claude, Codex, or Gemini independently
OpenCode / OpenClaw Stream Check Coverage
Extended the Stream Check panel to cover the full OpenCode and OpenClaw surface area.
- OpenCode detection via npm package mapping
- Support for the OpenClaw
openai-completionsprotocol - Support for the remaining three OpenClaw protocol variants
- Edge-case handling for custom-header passthrough, OpenClaw custom auth-header detection, Bedrock error messaging, and OpenCode default
baseURLfallback
Full URL Endpoint Mode
Added a provider option that treats base_url as a complete upstream endpoint instead of a base URL with path appending (#1561, thanks @yovinchen).
- Proxy forwarding and Stream Check both honor the full-URL mode
- Unblocks vendors that require nonstandard URL layouts
- Configurable per-provider on the provider form
OpenCode StepFun Step Plan Preset
- Added a StepFun Step Plan provider preset for OpenCode with sensible defaults (#1668, thanks @sky-wang-salvation)
Copilot Interaction Optimizer
Added request classification and routing logic that reduces unnecessary GitHub Copilot premium interaction consumption.
- Classifies incoming requests by intent and weight
- Routes low-value requests away from premium interaction consumption paths
- Designed to extend the usable lifetime of a Copilot subscription
- Note: Even with optimized consumption, using the Copilot API outside of Copilot still consumes more than using it within Copilot.
First-Run Welcome Dialog
Added a one-time welcome dialog on fresh installs to guide new users through the CC Switch workflow.
- Explains how existing live configuration is preserved as a default provider
- Introduces the bundled official preset that enables one-click revert to official endpoints
- Upgrade users are automatically excluded via empty provider check
Official Provider Seeding
- Added automatic seeding of Claude Official, OpenAI Official, and Google Official provider entries on startup, giving every user a one-click path back to the official endpoint
OpenCode / OpenClaw Auto-Import
- Added automatic startup import of live OpenCode and OpenClaw provider configurations, matching the auto-import behavior already present for Claude, Codex, and Gemini
Common Config Editor Guidance
- Added an informational guide and empty-state prompt to the Common Config snippet editor modal for Claude, Codex, and Gemini
- Added a one-time informational dialog explaining Common Config Snippets when users first open the provider add/edit form
Claude Session Titles & Search Highlighting
- Added meaningful title extraction for Claude sessions using a priority chain: custom-title metadata, first real user message, then directory basename fallback
- Added keyword highlighting in session titles and messages during Session Manager search
URL-Based Provider Icons
- Added a dual rendering mode to the icon system: small SVGs are inlined as React components, while large SVGs and raster images (PNG, JPG, WebP) are loaded via Vite URL imports as
<img>tags
Kaku Terminal Support
- Added Kaku as a selectable terminal for session launch on macOS, reusing the WezTerm-compatible launch path (#1983, thanks @yovinchen)
OMO Slim Council Support
- Restored first-class council support as a built-in oh-my-opencode-slim agent with updated metadata and UI copy (#1982, thanks @yovinchen)
New Provider Presets
- TheRouter: Added across Claude, Codex, Gemini, OpenCode, and OpenClaw (#1891, #1892, thanks @cmzz)
- DDSHub: Added as a third-party partner provider for Claude with icon and partner promotion text
- LionCCAPI: Added across all five apps with anthropic-messages protocol for OpenCode and OpenClaw
- Shengsuanyun (胜算云): Added as an aggregator partner provider across all five apps with URL-based icon and localized display name
- PIPELLM: Added across Claude, Codex, OpenCode, and OpenClaw with full model definitions and icon
- E-FlowCode: Added across all five apps with per-app protocol configuration
Changes
Tray Menu Organization
- Reworked the tray menu into per-application submenus (Claude / Codex / Gemini / OpenCode / OpenClaw)
- Prevents overflow and scales to long provider lists
Proxy Forwarding Stack
Rebuilt the proxy forwarding layer on a Hyper-based HTTP client (#1714, thanks @yovinchen).
- Transparent header forwarding: headers are forwarded without aggressive filtering
- Improved endpoint rewriting logic
- Better support for dynamic upstream endpoints
- Paired with the new Full URL Endpoint Mode to unblock vendors with nonstandard URL layouts
OAuth Auth Center UI Polish
- Tightened the Auth Center copy, layout, and icon presentation so the Codex OAuth login flow feels cleaner and less cluttered
Provider Key Lifecycle & Live Sync
Reworked the additive provider create / rename / duplicate flows so live config writes, cleanup, and rollback stay consistent across OpenCode / OpenClaw and takeover scenarios (#1724, thanks @yovinchen).
- Additive-mode highlight behavior made persistent across refreshes (#1747, thanks @yovinchen)
- Consistent live config writes across OpenCode / OpenClaw
- Rollback behavior preserved when operations fail
Codex OAuth Defaults
- Updated the Codex OAuth preset to the GPT-5.4 model family
Bug Fixes
Copilot Authentication & Proxy Compatibility
- Fixed GitHub Copilot authentication regressions (#1854, thanks @Mason-mengze)
- Corrected enterprise and dynamic endpoint handling
- Repaired clipboard verification-code copying on macOS and Linux
- Fixed Responses routing when Copilot-backed Claude providers target OpenAI models (#1735, thanks @Mason-mengze)
UTF-8 Stream Chunk Boundaries
Fixed intermittent garbled output (U+FFFD replacement characters) in Claude Code when multi-byte UTF-8 sequences such as Chinese characters and emoji were split across TCP stream chunks via the Copilot reverse proxy (#1923, thanks @Cod1ng).
- Replaced
String::from_utf8_lossywith a newappend_utf8_safehelper across all four SSE streaming paths - Preserves incomplete trailing bytes in a remainder buffer and merges them with the next chunk before decoding
- Not reproducible with direct Copilot connections that pass through raw bytes without format conversion
Fragmented System Prompt Normalization
Fixed strict OpenAI-compatible chat backends (Nvidia, Qwen-style) rejecting requests when converted Claude payloads contained multiple system messages (#1942, thanks @yovinchen).
- Normalized system content into a single leading system message during the Anthropic → OpenAI chat transformation
- Leaves the rest of the message stream unchanged
Streaming Parser Compatibility
- Fixed SSE parsing to accept fields with optional spaces, improving compatibility with non-strict streaming implementations (#1664, thanks @Alexlangl)
Provider Switch State Corruption
- Serialized per-app provider switches to prevent concurrent failover or hot-switch operations from leaving
is_current, settings state, and live backup state out of sync
Claude Takeover Live Config Drift
- Fixed provider edits while Claude takeover is active so live settings remain aligned with the latest provider state without breaking takeover restore behavior (#1828, thanks @geekdada)
WebDAV Password Retention & Validation
- Fixed the WebDAV password field so saved credentials remain visible after refresh
- Treated
MKCOL 405responses correctly during connection validation (#1685, thanks @Alexlangl)
Provider Card Action States
- Fixed additive-mode highlight behavior (#1747, thanks @yovinchen)
- Aligned usage display layout across provider cards by always rendering action buttons
- Replaced hard proxy-switch blocking with a warning path
- Disabled unsupported test and usage actions for Copilot and Codex OAuth cards
- Hid usage-config and health-check buttons for official providers
- Removed the hover-push animation from provider cards
Usage Accuracy & Pricing
- Fixed MiniMax quota math and 0% → 100% progression
- Corrected CNY → USD pricing plus missing model definitions
- Improved Gemini session-log syncing accuracy
- Resolved session-based usage entries being shown as unknown providers
Usage Editor & Skills UI Regressions
- Fixed usage query fields being reset while editing extractor code (#1771, thanks @if-nil)
- Corrected broken
skills.shlinks and empty descriptions - Fixed auto-query default interval (5 min) and number-input clearing in usage configuration
Chinese Skills Terminology
- Unified Skills-related labels across settings panels in the
zhlocale so storage and sync options use consistent wording
Environment & Preset Compatibility
- Added Bun global bin detection in CLI scan (#1742, thanks @makoMakoGo)
- Adapted to the oh-my-openagent rename with backward compatibility (#1746, thanks @yovinchen)
- Corrected the OpenCode
kimi-for-codingpreset (#1738, thanks @makoMakoGo) - Gated Gemini keychain parsing to macOS only
- Fixed an OpenClaw serializer panic on empty collections (#1724, thanks @yovinchen)
Linux UI Unresponsive on Startup
Fixed a long-standing Linux bug where the window UI (including native title bar buttons) couldn't receive clicks until the user manually maximized and restored the window.
- Root causes: (1) Tauri webview did not acquire keyboard focus after
show()on Linux, so the first click was consumed by X11/Wayland click-to-activate (Tauri #10746, wry #637); (2) GTK surface's input region failed to renegotiate on thevisible:false → show()path under some WebKitGTK/compositor combinations, leaving the entire window unresponsive - Mitigations: Set
WEBKIT_DISABLE_COMPOSITING_MODE=1at startup, and added a newlinux_fix::nudge_main_windowhelper that performsset_focus+ a ±1px no-op resize ~200ms after show, equivalent to a visually invisible "maximize-and-restore" - Coverage: Wired into all window-re-show paths — normal startup, deeplink, single_instance, tray
show_main, and lightweight-mode exit
Linux Drag Region on Header
- Removed
data-tauri-drag-regionfrom the top header bar on Linux to avoid triggeringgtk_window_begin_move_dragpaths affected by Tauri #13440 under Wayland - macOS drag behavior is preserved
OpenCode / OpenClaw Stream Check Edge Cases
- Fixed custom-header passthrough
- OpenClaw custom auth-header detection
- Bedrock error messaging
- OpenCode default
baseURLfallback handling
Duplicate Toast on Provider Switch
- Fixed double toast notifications (proxy-required warning followed by switch-success) when switching to Copilot, ChatGPT, or OpenAI-format providers with the proxy not running
Session Search Accuracy & Chinese Support
- Fixed session search result truncation across providers
- Switched FlexSearch tokenizer to full mode for proper Chinese substring matching
Adaptive Thinking Reasoning Effort
- Fixed
resolve_reasoning_effort()mapping adaptive thinking toxhighinstead of incorrectly usinghighin OpenAI format conversions
Thinking Model Fallback Display
- Fixed the Claude provider form showing an empty Thinking model field after saving only a main model by applying read-only fallback to ANTHROPIC_MODEL (#1984, thanks @yovinchen)
Auth Tab Localization
- Fixed missing i18n translation keys for the settings auth tab label across all locale bundles (#1985, thanks @yovinchen)
Schema Migration Guard
- Fixed database migrations failing when skills or model_pricing tables did not exist by adding table-existence checks before ALTER and UPDATE operations
Documentation
User Manual Refresh
- Updated the EN / ZH / JA user manuals to cover tray submenus, lightweight mode, provider model fetching, session management, workspace files, WebDAV v2 behavior, OpenCode / OpenClaw activation, and other provider workflow improvements
Community & Contribution Docs
- Added
CONTRIBUTING.md,SECURITY.md, andCODE_OF_CONDUCT.md - Added bilingual GitHub issue and PR templates
- Added Dependabot configuration (#1829, thanks @bengbengbalabalabeng) and a stale-bot workflow for inactive issues
- Added a PR / push quality-checks CI workflow
Release Notes Risk Notice Backport
- Added a Copilot reverse proxy risk notice and anchored highlight links in the v3.12.3 release notes across all three languages
Sponsor Partners
- Added Shengsuanyun, LionCC, and DDS as sponsor partners in README across all languages
⚠️ Risk Notice
Codex OAuth Reverse Proxy Disclaimer
The Codex OAuth reverse proxy introduced in this release accesses ChatGPT Codex services through reverse-engineered OAuth flows. Please be aware of the following risks before enabling this feature:
- Terms of Service: Using reverse-engineered OAuth flows to access OpenAI services may violate OpenAI's terms of service, which prohibit unauthorized automated access, service reproduction, and circumventing intended access paths.
- Account Risk: OpenAI may flag unusual usage patterns as suspicious automated activity, potentially resulting in temporary or permanent restrictions on ChatGPT access.
- No Guarantee: OpenAI may update its authentication and detection mechanisms at any time, and usage patterns that work today may be flagged in the future.
The GitHub Copilot reverse proxy introduced in v3.12.3 also remains subject to its existing risk notice — see the v3.12.3 release notes for the full disclosure.
Users enable these features at their own risk. CC Switch is not responsible for any account restrictions, warnings, or service suspensions resulting from the use of these features.
Download & Installation
Visit Releases to download the appropriate version.
System Requirements
| System | Minimum Version | Architecture |
|---|---|---|
| Windows | Windows 10 or later | x64 |
| macOS | macOS 12 (Monterey) or later | Intel (x64) / Apple Silicon (arm64) |
| Linux | See table below | x64 |
Windows
| File | Description |
|---|---|
CC-Switch-v3.13.0-Windows.msi
| Recommended - MSI installer with auto-update |
CC-Switch-v3.13.0-Windows-Portable.zip
| Portable version, extract and run, no registry write |
macOS
| File | Description |
|---|---|
CC-Switch-v3.13.0-macOS.dmg
| Recommended - DMG installer, drag to Applications, Universal Binary |
CC-Switch-v3.13.0-macOS.zip
| ZIP archive, extract and drag to Applications, Universal Binary |
CC-Switch-v3.13.0-macOS.tar.gz
| For Homebrew installation and auto-update |
macOS builds are code-signed and notarized by Apple for a seamless install experience.
Homebrew (macOS)
brew tap farion1231/ccswitch
brew install --cask cc-switchUpdate:
brew upgrade --cask cc-switchLinux
| Distribution | Recommended Format | Installation Method |
|---|---|---|
| Ubuntu / Debian / Linux Mint / Pop!_OS | .deb
| sudo dpkg -i CC-Switch-*.deb or sudo apt install ./CC-Switch-*.deb
|
| Fedora / RHEL / CentOS / Rocky Linux | .rpm
| sudo rpm -i CC-Switch-*.rpm or sudo dnf install ./CC-Switch-*.rpm
|
| openSUSE | .rpm
| sudo zypper install ./CC-Switch-*.rpm
|
| Arch Linux / Manjaro | .AppImage
| Add execute permission and run directly, or use AUR |
| Other distributions / Unsure | .AppImage
| chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage
|