# CC Switch v3.13.0 > Lightweight Mode, Quota & Balance Visibility, Provider Model Auto-Fetch, Codex OAuth Reverse Proxy, and Tray Per-App Submenus **[中文版 →](v3.13.0-zh.md) | [日本語版 →](v3.13.0-ja.md)** --- ## 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/models` discovery 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](#️-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.sh` search 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-completions` support, and the remaining OpenClaw protocol variants — with custom-header passthrough and auth-header detection fixes - **Full URL Endpoint Mode**: Provider option that treats `base_url` as 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](#️-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/skills` without losing skill state - **Public registry search**: `skills.sh` search 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-completions` protocol - 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 `baseURL` fallback ### 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 `` 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_lossy` with a new `append_utf8_safe` helper 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 405` responses 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.sh` links 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 `zh` locale 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-coding` preset (#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 the `visible:false → show()` path under some WebKitGTK/compositor combinations, leaving the entire window unresponsive - **Mitigations**: Set `WEBKIT_DISABLE_COMPOSITING_MODE=1` at startup, and added a new `linux_fix::nudge_main_window` helper that performs `set_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-region` from the top header bar on Linux to avoid triggering `gtk_window_begin_move_drag` paths 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 `baseURL` fallback 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 to `xhigh` instead of incorrectly using `high` in 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`, and `CODE_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: 1. **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. 2. **Account Risk**: OpenAI may flag unusual usage patterns as suspicious automated activity, potentially resulting in temporary or permanent restrictions on ChatGPT access. 3. **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](v3.12.3-en.md#️-risk-notice) 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](https://github.com/farion1231/cc-switch/releases/latest) 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) ```bash brew tap farion1231/ccswitch brew install --cask cc-switch ``` Update: ```bash brew upgrade --cask cc-switch ``` ### Linux | 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` |