docs/release-notes/v3.14.0-en.md
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
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
chat_completions / anthropic_messages / codex_responses / bedrock_converse)anthropic.claude-opus-4-7 / global.anthropic.claude-opus-4-7, dropping the legacy -v1 suffix); all aggregator and Bedrock presets migrated to Opus 4.7 as the default Opus modelmax Effort Tier: Effort dropdown upgraded from high to maxapi_format = "gemini_native" forwards directly to Google's generateContent with full streaming / schema conversion / shadow request supporttool_result classification fix, subagent detection, x-interaction-id billing merge, orphan tool_result sanitization, and default warmup downgrade — a systematic reduction in premium interaction consumptionmessage_id suffix noise~/.hermes/config.yaml or openclaw.json locationhermes dashboard in the user's preferred terminalCC Switch now treats Hermes Agent as a first-class managed app alongside Claude / Codex / Gemini / OpenCode / OpenClaw.
enabled_hermes columns to mcp_servers and skills tables (DEFAULT 0, auto-migrated, no data loss)~/.hermes/config.yaml read/write with atomic backups; tests/hermes_roundtrip.rs guards against dropped OAuth MCP auth blocks or pollution of unrelated YAML keyschat_completions / anthropic_messages / codex_responses / bedrock_converse; new deeplinks default to chat_completionsproviders: 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 UIMEMORY.md / USER.md directly, with an enable switch, character-count limits, and a live save flowhermes dashboard in the user's preferred terminalhermes dashboard opens the browser itself once ready, so no polling is requiredhermes web hint in the offline toast (the real command is hermes dashboard)which before stat'ing /usr/bin, /bin, /usr/local/binanthropic.claude-opus-4-7 / global.anthropic.claude-opus-4-7, dropping the legacy -v1 suffix)max Effort Tierhigh to max for extended reasoning capacityapi_format = "gemini_native" so the proxy can forward directly to Google's generateContent API (#1918, thanks @yovinchen)gemini_url.rs, gemini_schema.rs, gemini_shadow.rs, streaming_gemini.rs, and transform_gemini.rs under the proxy providers module@tanstack/react-virtual so long conversations (thousands of records) scroll smoothlymessage_id suffix noiseopenclaw.json location (#1518, thanks @mrFranklin)~/.hermes/config.yaml location, backed by data-driven dispatchANTHROPIC_API_KEY auth; OpenAI-compatible apps target gpt-5.4/v1 suffix because the gateway auto-routes OpenAI SDK pathsAuto api_mode Removedchat_completionsmodel: when switching active providersExternalLink to LayoutDashboard (clicking may spawn hermes dashboard rather than just opening a URL)ANTHROPIC_REASONING_MODEL Removed from Claude Quick-Set"main" to a TRAY_ID constant ("cc-switch") across all call sites (#1978, thanks @lidaxian121)A systematic overhaul to reduce Copilot reverse-proxy premium interaction consumption across multiple dimensions:
thinking / redacted_thinking blocks are rejected by OpenAI-compatible endpoints. Previously, the request failed upstream, burning one premium interaction before the thinking_rectifier could retry. A new proactive strip step (Copilot optimization pipeline step 3.5, after tool_result merging) eliminates that wasted interactiontool_result are now classified as agent continuation instead of user-initiated, preventing every tool call from being falsely counted as a premium interaction__SUBAGENT_MARKER__ with metadata._agent_ fallback, setting x-interaction-type=conversation-subagentx-interaction-id Billing Merge: Derives x-interaction-id from the session ID so multiple requests within the same session collapse into a single billing interactiontool_result Sanitization: Cleans up orphan tool_result entries to prevent upstream errors that would trigger retries and duplicate billinggpt-5-mini as the default downgrade modeltool_result semanticsCopilotOptimizerConfig default-value inconsistency (unified to gpt-5-mini)auth Dropauth blocks or pollutes unrelated YAML keystests/hermes_roundtrip.rscustom_providers: so api_mode and model survive restarts and config reloadscheck_additive_app_stream (the OpenClaw dispatcher), which reads camelCase baseUrl / apiKey / api and surfaced "OpenClaw provider is missing baseUrl" even when every Hermes field was filledcheck_hermes_stream with Hermes-specific extractors that map api_mode (chat_completions / anthropic_messages / codex_responses) to the matching check_claude_stream api_format; bedrock_converse returns as unsupportedapi_mode is now resolved before URL / API key extraction, so bedrock_converse users see the real cause rather than a misleading "missing base_url"getProviderCredentials now reads flat settingsConfig fields for Hermes (snake_case base_url / api_key) and OpenClaw (camelCase baseUrl / apiKey), so the "official balance" template auto-selects for matching providers like SiliconFlowproviderCredentials instead of re-reading env.ANTHROPIC_* directly, fixing the "empty key" error for non-Claude apps even when the key was configuredcache_control Preservationcache_control when merging system prompts during Codex format conversion (#1946, thanks @yovinchen)settings.json Syncsettings.json for the Claude plugin path (#1905, thanks @chengww5217)env blockweekly_limit tier label with the official 7-day naming across locales--working-directory (#1976, thanks @Suda202)cwd escaping issues when the path contains spaces or special characterscode.pipellm.aiapi_modeAuto mode is gone; imported or deeplinked providers default to chat_completionsAuto configs will be prompted to pick a protocolANTHROPIC_REASONING_MODEL removed from Claude quick-setenabled_hermes columns to mcp_servers and skillsDEFAULT 0; no data lossmodel_pricing table is cleared and reseeded on first launch to pick up new models and corrected pricesThis 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.
Visit Releases to download the appropriate version.
| 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 |
| 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 |
| 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.
brew tap farion1231/ccswitch
brew install --cask cc-switch
Update:
brew upgrade --cask cc-switch
| 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 |