CC Switch v3.14.0
Hermes Agent becomes the 6th managed app, Claude Opus 4.7 rolls out across the preset matrix, Gemini Native API proxy, "Local Routing" rename, and application-level window controls
Overview
CC Switch v3.14.0 is a major release centered on onboarding Hermes Agent as the 6th first-class managed app and rolling out Claude Opus 4.7 across the full aggregator and Bedrock preset matrix. Hermes support covers a database v9 → v10 migration, a complete Rust command surface, YAML-backed ~/.hermes/config.yaml read/write with atomic backups, MCP sync, Skills sync, SQLite + JSONL session management, and dedicated frontend panels including a Memory editor. All four API protocols aligned with Hermes Agent 0.10.0 (chat_completions, anthropic_messages, codex_responses, bedrock_converse) are selectable. Providers owned by the user-authored providers: dict are rendered as read-only cards, and deep YAML configuration is delegated directly to the Hermes Web UI.
Beyond Hermes, this release adds a Gemini Native API proxy (api_format = "gemini_native") so the proxy can forward directly to Google's generateContent endpoint with full streaming, schema conversion, and shadow request support; renames the legacy "Local Proxy Takeover" to Local Routing across UI copy, README, and docs in all three locales; introduces application-level window controls, an opt-in setting that materially improves the experience on Linux Wayland where compositor-drawn buttons can become inert; and bundles late additions for launching hermes dashboard from the toolbar, a LemonData preset across all six apps, a DDSHub Codex endpoint, plus several Hermes health-check and Usage modal fixes.
On the session side, the message list is virtualized via @tanstack/react-virtual so conversations with thousands of records scroll smoothly and long messages collapse by default; the Usage dashboard adds a date range picker (Today / 1d / 7d / 14d / 30d + custom date-time calendar) and a page-jump input; Stream Check error classification now surfaces color-coded toasts with refreshed default probe models and an explicit "model not found" branch; and switching to official providers is blocked while Local Routing is active to avoid account-suspension risk. The pricing database is reseeded from v8 → v9 with ~50 new model entries (Claude 4.7, Opus 4.7 Adaptive Thinking, Grok 4, Qwen 3.5/3.6, MiniMax M2.5/M2.7, Doubao Seed 2.0 series, GLM-5/5.1 and others) and corrected stale prices.
Release Date: 2026-04-21
Update Scale: 100 commits | 219 files changed | +20,548 / -3,569 lines
Highlights
- Hermes Agent Support (6th Managed App): Database v9 → v10 migration, full Rust command surface, YAML read/write with atomic backups, MCP sync, Skills sync, SQLite + JSONL session management, dedicated frontend panels, and four API protocols (
chat_completions/anthropic_messages/codex_responses/bedrock_converse) - Claude Opus 4.7 Rollout: Adaptive thinking whitelisting, per-million pricing seed, Bedrock SKU (
anthropic.claude-opus-4-7/global.anthropic.claude-opus-4-7, dropping the legacy-v1suffix); all aggregator and Bedrock presets migrated to Opus 4.7 as the default Opus model - Claude
maxEffort Tier: Effort dropdown upgraded fromhightomax - Gemini Native API Proxy: New
api_format = "gemini_native"forwards directly to Google'sgenerateContentwith full streaming / schema conversion / shadow request support - GitHub Copilot Enterprise Server: GHES authentication and endpoint configuration for Copilot-backed Claude providers
- Copilot Premium Consumption Deep Optimization: Proactive thinking-block stripping before forwarding,
tool_resultclassification fix, subagent detection,x-interaction-idbilling merge, orphantool_resultsanitization, and default warmup downgrade — a systematic reduction in premium interaction consumption - Session List Virtualization: Long conversations scroll smoothly and long messages collapse by default to reduce text layout cost
- Codex / OpenClaw Session Title Extraction: Meaningful title extraction with 2-line display; strips OpenClaw
message_idsuffix noise - Usage Date Range Picker: Today / 1d / 7d / 14d / 30d preset tabs + custom date-time calendar; page-jump input on paginated lists
- Stream Check Error Classification: Color-coded error toasts; refreshed default probe models; explicit "model not found" detection
- Block Official Provider Switching During Local Routing: Routing official API traffic through the local proxy carries account-suspension risk — switches are blocked with a warning toast
- Pricing Database Refresh (v8 → v9): ~50 new model entries and corrected stale prices
- Application-Level Window Controls: Opt-in setting to render CC Switch's own min/max/close buttons, materially improving Linux Wayland experience
- Hermes in Unified Skills Management: Skill install, enable, and filter now cover Hermes
- Hermes / OpenClaw Config Directory Override: Point CC Switch at a custom
~/.hermes/config.yamloropenclaw.jsonlocation - Launch Hermes Dashboard from Toolbar: When the Hermes Web UI probe fails, the toolbar entry offers to run
hermes dashboardin the user's preferred terminal - New Partner Presets: LemonData across all six apps; DDSHub Codex endpoint; StepFun Step Plan
Added
Hermes Agent Support (6th Managed App)
CC Switch now treats Hermes Agent as a first-class managed app alongside Claude / Codex / Gemini / OpenCode / OpenClaw.
- Database Migration v9 → v10: Adds
enabled_hermescolumns tomcp_serversandskillstables (DEFAULT 0, auto-migrated, no data loss) - YAML Configuration Read/Write:
~/.hermes/config.yamlread/write with atomic backups;tests/hermes_roundtrip.rsguards against dropped OAuth MCPauthblocks or pollution of unrelated YAML keys - Four API Protocols: Aligned with Hermes Agent 0.10.0 —
chat_completions/anthropic_messages/codex_responses/bedrock_converse; new deeplinks default tochat_completions - User
providers:Dict Read-Only Rendering: User-authored providers in the YAML appear as read-only cards in CC Switch; deep configuration delegates to the Hermes Web UI - Additive Switching: Unlike Claude / Codex's "override" style, all Hermes providers coexist in the same YAML
Hermes Memory Panel
- New Memory panel for editing
MEMORY.md/USER.mddirectly, with an enable switch, character-count limits, and a live save flow - Replaces the Prompts entry for Hermes
Hermes Provider Presets (~50)
- Covers Nous Research, Shengsuanyun, OpenRouter, DeepSeek, Together AI, StepFun, Zhipu GLM, Bailian, Kimi, MiniMax, DouBao, BaiLing, ModelScope, KAT-Coder, PackyCode, Cubence, AIGoCode, RightCode, AICodeMirror, AICoding, CrazyRouter, SSSAiCode, Micu, CTok.ai, DDSHub, E-FlowCode, LionCCAPI, PIPELLM, Compshare, SiliconFlow, AiHubMix, DMXAPI, TheRouter, Novita, Nvidia, and Xiaomi MiMo
Launch Hermes Dashboard from Toolbar
- When the Hermes Web UI probe fails, the toolbar entry opens a confirm dialog offering to run
hermes dashboardin the user's preferred terminal - Spawned via a temp bash / batch script;
hermes dashboardopens the browser itself once ready, so no polling is required - The Memory panel and Health banner keep the existing toast behavior
- Also corrects the stale
hermes webhint in the offline toast (the real command ishermes dashboard) - Linux terminal detection reordered to try
whichbefore stat'ing/usr/bin,/bin,/usr/local/bin
Claude Opus 4.7 Support
- New Claude Opus 4.7 with adaptive thinking whitelisting, per-million pricing seed, and Bedrock SKU (
anthropic.claude-opus-4-7/global.anthropic.claude-opus-4-7, dropping the legacy-v1suffix) - All aggregator and Bedrock presets migrated to Opus 4.7 as the default Opus model
Claude max Effort Tier
- Claude effort dropdown upgraded from
hightomaxfor extended reasoning capacity
Gemini Native API Proxy
- New
api_format = "gemini_native"so the proxy can forward directly to Google'sgenerateContentAPI (#1918, thanks @yovinchen) - Full streaming, schema conversion, and shadow request support
- Adds
gemini_url.rs,gemini_schema.rs,gemini_shadow.rs,streaming_gemini.rs, andtransform_gemini.rsunder the proxy providers module
GitHub Copilot Enterprise Server (GHES)
- GHES authentication and endpoint configuration for Copilot-backed Claude providers (#2175, thanks @hotelbe)
Session List Virtualization
- Virtualized the session list via
@tanstack/react-virtualso long conversations (thousands of records) scroll smoothly - Long session messages are collapsed by default to reduce text layout cost
Codex / OpenClaw Session Title Extraction
- Meaningful title auto-extraction for Codex and OpenClaw sessions with 2-line display
- Strips OpenClaw
message_idsuffix noise
Usage Date Range Picker
- New date range selector on the usage dashboard with preset tabs (Today / 1d / 7d / 14d / 30d) + custom date + time calendar (#2002, thanks @yovinchen)
- Page-jump input added on paginated lists
Model Mapping Quick-Set
- New quick-set button next to model mapping fields in provider forms for faster edits (#2179, thanks @lispking)
Stream Check Error Classification
- Stream Check errors are classified and surfaced as color-coded toasts
- Refreshed default probe models to match each vendor's current lineup
- Explicit detection for "model not found" responses
Block Official Provider Switching During Local Routing
- Switching to official providers is blocked while Local Routing is active, with a warning toast
- Reason: routing official API traffic through the local proxy carries account-suspension risk
Pricing Database Refresh (v8 → v9)
- Reseed-on-migration pricing table
- ~50 new model pricing entries including Claude 4.7, Opus 4.7 Adaptive Thinking, Grok 4, Qwen 3.5/3.6, MiniMax M2.5/M2.7, Doubao Seed 2.0 series, GLM-5/5.1
- Corrected stale prices for DeepSeek, Kimi K2.5, and others
Application-Level Window Controls
- Opt-in setting to render CC Switch's own minimize / toggle-maximize / close buttons instead of system decorations (#1119, thanks @git1677967754)
- Materially improves the experience on Linux Wayland where compositor-drawn buttons can become inert
Hermes in Unified Skills Management
- Hermes is added to the unified Skills surface
- Skill install, enable, and filter now cover the Hermes app alongside Claude / Codex / Gemini / OpenCode / OpenClaw
OpenClaw Config Directory Override
- New settings option to point CC Switch at a custom
openclaw.jsonlocation (#1518, thanks @mrFranklin)
Hermes Config Directory Override
- New settings option to point CC Switch at a custom
~/.hermes/config.yamllocation, backed by data-driven dispatch
StepFun Step Plan Preset
- StepFun Step Plan (EN / ZH) provider presets (#2155, thanks @hengm3467)
New API Usage Script Template
- Added a User-Agent header to the New API usage script template for better upstream compatibility
LemonData Provider Preset (All Six Apps)
- LemonData registered as a third-party partner preset across Claude, Codex, Gemini, OpenCode, OpenClaw, and Hermes
- Icon assets and zh / en / ja partner-promotion copy
- Claude preset uses
ANTHROPIC_API_KEYauth; OpenAI-compatible apps targetgpt-5.4
DDSHub Codex Preset
- Added a Codex-compatible endpoint for DDSHub at the same host as its Claude service
- Base URL omits the
/v1suffix because the gateway auto-routes OpenAI SDK paths
Changed
"Local Proxy Takeover" → "Local Routing"
- Unified the terminology across UI copy, README, and docs in all three locales
- Functional behavior is unchanged
Hermes Auto api_mode Removed
- Users must pick an explicit protocol; new deeplinks default to
chat_completions - Eliminates URL-based heuristic surprises
Hermes Provider Form
- Added an API mode dropdown and per-provider model editor
- Binds per-provider models to the top-level
model:when switching active providers
Hermes Deep Config Delegation
- Deep YAML knobs are no longer duplicated in the CC Switch form — they are delegated to the Hermes Web UI via a direct launch action
Hermes Toolbar Layout
- Swapped the Hermes Web UI button from
ExternalLinktoLayoutDashboard(clicking may spawnhermes dashboardrather than just opening a URL) - Moved MCP to the final toolbar slot so Hermes matches the Claude / Codex / Gemini / OpenCode layout
ANTHROPIC_REASONING_MODEL Removed from Claude Quick-Set
- Decoupled the reasoning capability from model selection; the legacy field is no longer surfaced in the quick-set form
Per-Provider Proxy Config Removed
- Consolidated into global Local Routing
- Provider-level proxy toggle and associated storage are gone
Unified Toolbar Icon Button Width
- Normalized icon-button widths across Claude / Codex / Gemini / OpenCode / OpenClaw / Hermes panels for a consistent header look
Rust Toolchain Pinned to 1.95
- Adopted clippy 1.95 suggestions across the workspace and pinned the toolchain to prevent nightly drift
Tray Menu ID Constant
- The tray identifier moved from the hardcoded string
"main"to aTRAY_IDconstant ("cc-switch") across all call sites (#1978, thanks @lidaxian121)
Copilot Premium Consumption Deep Optimization
A systematic overhaul to reduce Copilot reverse-proxy premium interaction consumption across multiple dimensions:
- Proactive Thinking Block Stripping Before Forwarding: Anthropic's
thinking/redacted_thinkingblocks are rejected by OpenAI-compatible endpoints. Previously, the request failed upstream, burning one premium interaction before thethinking_rectifiercould retry. A new proactive strip step (Copilot optimization pipeline step 3.5, aftertool_resultmerging) eliminates that wasted interaction - Request Classification Fix: Messages containing
tool_resultare now classified as agent continuation instead of user-initiated, preventing every tool call from being falsely counted as a premium interaction - Subagent Detection: Identifies subagents via
__SUBAGENT_MARKER__withmetadata._agent_fallback, settingx-interaction-type=conversation-subagent - Deterministic
x-interaction-idBilling Merge: Derivesx-interaction-idfrom the session ID so multiple requests within the same session collapse into a single billing interaction - Orphan
tool_resultSanitization: Cleans up orphantool_resultentries to prevent upstream errors that would trigger retries and duplicate billing - Warmup Downgrade Enabled by Default: Uses
gpt-5-minias the default downgrade model - Optimization Pipeline Reorder: classify → sanitize → merge → warmup, so classification sees raw
tool_resultsemantics - Fixed a
CopilotOptimizerConfigdefault-value inconsistency (unified togpt-5-mini)
Usage Script Intranet Support
- Removed private-IP / suspicious-hostname blocking from usage scripts, unblocking enterprise intranet, Docker, and self-hosted API endpoints
- Built-in templates still enforce HTTPS (except localhost) and same-origin checks; custom templates remain user-controlled with those request-URL checks skipped
Failover Queue Notes
- Provider notes now appear in failover queue selectors and queue rows for easier identification across multi-provider queues (#2138, thanks @Coconut-Fish)
Fixed
Header Auto-Compact Latching After Maximize
- The toolbar no longer stays compacted after maximize/restore; compaction now reevaluates on size changes
Hermes YAML Pollution & OAuth MCP auth Drop
- Round-tripping through CC Switch no longer drops OAuth MCP
authblocks or pollutes unrelated YAML keys - Guard tests added via
tests/hermes_roundtrip.rs
Hermes Active Provider Display
- Hermes UI now correctly surfaces the active provider and wires add / enable / remove actions
Hermes Provider Persistence
- Providers persist under
custom_providers:soapi_modeandmodelsurvive restarts and config reloads
Hermes Health Check Borrowing OpenClaw Schema
- Hermes providers were routed through
check_additive_app_stream(the OpenClaw dispatcher), which reads camelCasebaseUrl/apiKey/apiand surfaced "OpenClaw provider is missing baseUrl" even when every Hermes field was filled - Introduced
check_hermes_streamwith Hermes-specific extractors that mapapi_mode(chat_completions/anthropic_messages/codex_responses) to the matchingcheck_claude_streamapi_format;bedrock_conversereturns as unsupported api_modeis now resolved before URL / API key extraction, sobedrock_converseusers see the real cause rather than a misleading "missing base_url"
Usage Query Modal for Hermes & OpenClaw
getProviderCredentialsnow reads flatsettingsConfigfields for Hermes (snake_casebase_url/api_key) and OpenClaw (camelCasebaseUrl/apiKey), so the "official balance" template auto-selects for matching providers like SiliconFlow- Refactored the BALANCE and TOKEN_PLAN test paths to reuse the precomputed
providerCredentialsinstead of re-readingenv.ANTHROPIC_*directly, fixing the "empty key" error for non-Claude apps even when the key was configured
Codex cache_control Preservation
- Preserve
cache_controlwhen merging system prompts during Codex format conversion (#1946, thanks @yovinchen)
Claude Prompt Cache Key Leak
- Stopped sending prompt cache keys during Claude chat conversions (#2003, thanks @yovinchen)
Proxy Hop-by-Hop Header Stripping
- Strip hop-by-hop response headers (Connection, Keep-Alive, Transfer-Encoding, etc.) per RFC 7230 (#2060, thanks @yovinchen)
Permissive Proxy CORS Removed
Backend Error Details in Proxy Toast
- Surface backend error payload details in proxy-related toast messages instead of a generic failure string
Usage Log Deduplication
- Deduplicated proxy and session-log usage records so the same request is no longer double-counted
- Synced the request log time range with the dashboard's 1d / 7d / 30d selector
Common Config Checkbox Persistence
- Checkbox state for Claude / Codex / Gemini common-config toggles now persists correctly across reopens (#2191, thanks @zxZeng)
Claude Plugin settings.json Sync
- Editing the current provider now syncs back to
settings.jsonfor the Claude plugin path (#1905, thanks @chengww5217)
Google Official Gemini Env Preservation
- Saving the Google Official Gemini provider no longer clobbers the
envblock
OpenCode JSON5 Parser for Trailing Commas
Preset Refreshes
- Refreshed stale context windows for DeepSeek and Claude 1M
- Refreshed stale model IDs; backfilled Hermes model lists
- Fixed the Nous endpoint and replaced the Hermes placeholder icon with Nous brand artwork
- Pruned unused official Hermes presets
Auto-Expand Collapsed Messages on Search Hit
- Collapsed messages now auto-expand when a search match lands inside hidden content
Unknown Subscription Quota Tiers Hidden
- Provider cards no longer render unknown subscription quota tiers
Weekly Limit Label Unified
- Aligned the
weekly_limittier label with the official 7-day naming across locales
Root-Level Skill Repo Install
- Fixed skill installation when the repository root itself is a skill
Session ID Parsing Clippy
- Removed a redundant closure in session ID parsing (clippy warning)
Stream Check Default Models Refresh
- Updated stream-check default probe models to match each vendor's current lineup
Skills Import Sync
- Imported Skills are now immediately synced into enabled app directories instead of only being recorded in the database (#2101, thanks @yaoguohh)
- The UI no longer shows "installed" while the target app directory is missing the skill
Ghostty Session Restore
- Fixed Ghostty session restore launch by using shell execution with
--working-directory(#1976, thanks @Suda202) - Avoids
cwdescaping issues when the path contains spaces or special characters
Docs
README Sponsor Updates
- Updated SiliconFlow signup bonus to ¥16
- Trimmed the SSSAiCode sponsor blurb
- Updated partner logos
- Added LemonData as a new sponsor
Global Proxy Hint Clarified
- Clarified the global proxy hint about local routing across all three locales
Takeover → Routing Rename
- Renamed takeover docs to routing and updated anchors across all languages
PIPELLM Website URL
- Updated the PIPELLM sponsor website URL to
code.pipellm.ai
⚠️ Breaking Changes
Hermes requires explicit api_mode
- The
Automode is gone; imported or deeplinked providers default tochat_completions - Users with prior
Autoconfigs will be prompted to pick a protocol
ANTHROPIC_REASONING_MODEL removed from Claude quick-set
- The legacy field is no longer exposed; existing settings are cleaned up automatically
Per-provider proxy configuration removed
- Migrate to the global Local Routing setting
- Existing per-provider proxy values are ignored
Database schema v9 → v10
- Adds
enabled_hermescolumns tomcp_serversandskills - Auto-migrated with
DEFAULT 0; no data loss
Pricing table reseeded (v8 → v9)
- The
model_pricingtable is cleared and reseeded on first launch to pick up new models and corrected prices
XCodeAPI preset removed
- Users of the XCodeAPI preset should switch to another provider
⚠️ Risk Notice
This release inherits the risk notices originally introduced in v3.12.3 / v3.13.0 for reverse-proxy-style features.
GitHub Copilot Reverse Proxy: Using Copilot's reverse-proxy path may violate GitHub / Microsoft's terms of service. See v3.12.3 release notes.
Codex OAuth Reverse Proxy: Using the Codex OAuth reverse proxy with a ChatGPT subscription may violate OpenAI's terms of service. See v3.13.0 release notes.
By enabling these features, users accept all associated risks. CC Switch is not responsible for any account restrictions, warnings, or service suspensions that result from using these features.
Download & Installation
Visit Releases to download the appropriate version.
System Requirements
| OS | 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.14.0-Windows.msi
| Recommended - MSI installer, supports auto-update |
CC-Switch-v3.14.0-Windows-Portable.zip
| Portable, extract and run, no registry writes |
macOS
| File | Description |
|---|---|
CC-Switch-v3.14.0-macOS.dmg
| Recommended - DMG installer, drag into Applications |
CC-Switch-v3.14.0-macOS.zip
| Extract and drag into Applications, Universal Binary |
CC-Switch-v3.14.0-macOS.tar.gz
| For Homebrew installation and auto-update |
macOS builds are Apple code-signed and notarized — install directly.
Homebrew (macOS)
brew tap farion1231/ccswitch
brew install --cask cc-switchUpdate:
brew upgrade --cask cc-switchLinux
| Distribution | Recommended | Installation |
|---|---|---|
| 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, or use AUR |
| Other distros / not sure | .AppImage
| chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage
|