cc-switch-helper
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 12 GitHub stars
Code Fail
- exec() — Shell command execution in src/db.js
- os.homedir — User home directory access in src/db.js
- fs module — File system access in src/db.js
- child_process — Shell command execution capability in src/launcher.js
- os.homedir — User home directory access in src/launcher.js
- fs module — File system access in src/launcher.js
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Run different Claude Code providers in different terminals. 支持同时在不同终端窗口用不同 API Key 跑 Claude Code,互不影响
cc-switch-helper
English | 中文文档
Overcomes the global single-config limitation of the original CC-Switch, enabling per-terminal, per-window binding of different API keys and models — multiple sessions running in parallel without interference.
The native CC-Switch shares one global API config across all terminals — switching providers changes every window at once. This tool provides session-level isolation: one terminal on a personal key, another on a company key, running side by side with no conflicts.
Why?
CC-Switch is a great tool for managing Claude Code providers, but switching providers changes the global config — every running Claude Code instance picks up the change.
ccs takes a different approach: it passes the provider settings directly to each claude process. This means you can run DeepSeek in one terminal and GLM in another, at the same time, without ever touching the global config.
Terminal 1: ccs deep → Claude Code running DeepSeek
Terminal 2: ccs glm → Claude Code running GLM
Terminal 3: ccs zcy → Claude Code running your custom provider
Each window is independent. Switch providers in one — the others stay untouched.
CC-Switch provider configuration panel:
Features
- Session-level config isolation — run different API keys, providers, and models across multiple terminals/windows simultaneously, no interference
- Interactive menu — arrow keys to pick a provider, no need to remember names
- Fuzzy match —
ccs deepmatches "DeepSeek",ccs minimatches "Minimax" - Cross-platform — works on macOS, Linux, and Windows (PowerShell / CMD / Git Bash)
- Zero config — reads directly from your CC-Switch database, compatible with existing key groups and relay configs
- Non-invasive — does not modify CC-Switch source code; CC-Switch upgrades won't affect this tool
Prerequisites
- CC-Switch installed with at least one Claude provider configured
- Claude Code CLI installed
- Node.js ≥ 18
Install
npm install -g luckybilly/cc-switch-helper
This registers the ccs command globally.
Usage
ccs # Interactive provider selection
ccs <name> # Fuzzy-match provider by name
ccs <name> -- <args...> # Pass extra arguments to claude
ccs --no-skip # Launch without --dangerously-skip-permissions
ccs --list # List all configured providers
ccs --help # Show help
Examples
# Pick from an interactive menu
ccs
# Launch with a specific provider (case-insensitive fuzzy match)
ccs zcy
ccs DeepSeek
ccs glm
# Pass extra arguments to claude (everything after --)
ccs zcy -- --resume
ccs DeepSeek -- -p "hello world"
# Launch without --dangerously-skip-permissions (review each permission)
ccs zcy --no-skip
# See all your configured providers
ccs --list
Alias to cc
If you prefer the shorter cc command, add an alias to your shell config:
# ~/.zshrc or ~/.bashrc
alias cc=ccs
Note:
ccis also the system C compiler on macOS/Linux. The alias takes priority in your shell, but be aware if you work with C projects.
How it works
- Reads providers from CC-Switch's SQLite database (
~/.cc-switch/cc-switch.db) - Reads your base Claude settings from
~/.claude/settings.json - Merges the selected provider's
envandenabledPluginsinto the base settings - Launches
claude --settings <json> --dangerously-skip-permissions
The provider's environment variables override same-named keys in your base settings, while all other settings (permissions, hooks, plugins, etc.) are preserved.
--dangerously-skip-permissions is a built-in Claude Code flag that skips per-action permission prompts for a smoother experience. Add --no-skip to restore per-action approval, useful when you want tighter permission control.
Platform support
| Platform | Shell | Status |
|---|---|---|
| macOS | zsh, bash | ✅ |
| Linux | bash, zsh, fish | ✅ |
| Windows | PowerShell | ✅ |
| Windows | CMD | ✅ |
| Windows | Git Bash | ✅ |
FAQ
Q: Does ccs conflict with switching providers in CC-Switch?
A: No.
ccspins the provider config (model, API key, etc.) to the process at launch, so switching the default provider can't redirect a session that's already running.One exception: config items added to settings.json after the switch get auto-loaded into the old session — to be safe, start a fresh
ccssession after switching.
Q: How do I know which provider a window is using?
A:
ccsprints→ Launching [provider-name]on startup. The terminal title bar also shows it.
Q: What's the difference between default and --no-skip?
A: Default includes
--dangerously-skip-permissions, which skips Claude Code's per-action permission prompts.--no-skiprestores per-action approval, useful for tighter security control.
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found