ANTHROPIC_AUTH_TOKEN > ANTHROPIC_API_KEY > OAuth/subscription. If you juggle more than one identity by hand, a leftover variable from the previous context silently wins. ccp makes the switch atomic — every known routing variable is unset, then the target profile’s set is applied.
Two surfaces, one core
ccp ships two entry points that share a core library, so switching and creation logic never diverge:- Terminal CLI (
ccp) — with a zsh wrapper for real per-shell switching. - VS Code extension — for the official Claude Code panel, with workspace pinning and a wrong-profile guardrail.
Requirements
- macOS. Secrets live in the macOS Keychain via the
securityCLI. Cross-platform secret backends are on the roadmap. - zsh. The shell wrapper (
shell/ccp-init.zsh) uses zsh hooks. bash/fish ports are on the roadmap. - Node.js 18+ and npm.
- Claude Code CLI (
claude) on your PATH for subscription login flows.
Why ccp
Isolated identities
Each profile gets its own
CLAUDE_CONFIG_DIR, isolating credentials, settings.json, MCP servers, CLAUDE.md, and session history.Six auth types
Subscription, API key, gateway (OpenRouter, Requesty, Z.AI, any Anthropic-compatible endpoint), Bedrock, Vertex, and Foundry.
Keychain-backed
API keys and gateway tokens live in the macOS Keychain under one service name. Cloud profiles store no local secret at all.
Atomic switching
Every routing variable is unset before the new profile is applied — no cross-contamination between identities.
What’s next
Quickstart
Install ccp and create your first profile.
Profiles
Learn how profiles are structured, stored, and isolated.
Authentication
All six auth types and what each one materializes.
CLI reference
Every
ccp command.