Configuration Schema Reference
Complete reference forconfig.yaml version 9. This file is the single source of truth for all CCS configuration.
Location: ~/.ccs/config.yaml
Format: YAML
Current Version: 9
Version History
| Version | Release | Key Changes |
|---|---|---|
| v9 | 2026-03 | Cross-profile continuity inheritance (continuity.inherit_from_account) |
| v8 | 2026-02 | Thinking/reasoning budget configuration, image analysis config |
| v7 | 2025-12 | Quota management for hybrid auto+manual account control |
| v6 | 2025-12 | Customizable auth tokens, variant-specific auth, OAuth model aliases |
| v5 | 2025-10 | Remote proxy configuration |
| v4 | 2025-08 | Copilot API integration |
| v3 | 2025-06 | WebSearch config with model configuration |
| v2 | 2025-04 | Initial YAML unified format |
| v1 | 2025-02 | Legacy JSON format (deprecated) |
Root Schema
CLIProxy Configuration
cliproxy.backend
Type: String (original | plus)
Priority: HIGH
Purpose: Select CLIProxy backend variant
original: CLIProxyAPI (no Kiro/ghcp support)plus: CLIProxyAPIPlus (all providers including Kiro/ghcp)- Backend-specific binaries stored in
~/.ccs/bin/original/and~/.ccs/bin/plus/
- Kiro, ghcp: Require
backend: plus - All other providers work on both backends
- Use
originalfor minimal install if Kiro/ghcp not needed - Use
plusfor full provider support (recommended, default)
--backend CLI flag, provider compatibility
cliproxy.variants.<name>.target
Type: String (claude | droid)
Priority: HIGH
Purpose: Route this variant to an alternative CLI target
claude(default): Use Claude Code CLIdroid: Use Droid CLI (@factory/cli)- Overridden by
--targetCLI flag
profiles.<name>.target(API profiles)cliproxy.variants.<name>.target(CLIProxy variant profiles)- Composite variant configs
cliproxy, copilot, and account
cliproxy.variants.<name>.auth
Type: Object
Priority: HIGH
Purpose: Per-variant auth override
- Overrides global
cliproxy.authfor specific variant - Useful for different auth credentials per variant
- Both keys optional (falls back to global)
- Separate auth for dev/prod variants
- Per-team auth credentials
- Testing with different API keys
cliproxy.variants.<name>.port
Type: Integer (1-65535, recommended: 8318-8417)
Priority: HIGH
Purpose: Port isolation for concurrent variants
- Assigns unique port for variant isolation
- Allows multiple variants to run simultaneously
- Accepts any valid port (1-65535), recommended range: 8318-8417 for CCS variants
- Default: Auto-assigned if not specified
- Run dev and prod variants concurrently
- Isolate variants for different teams
- Avoid port conflicts in multi-user environments
cliproxy.auth.api_key
Type: String
Priority: MEDIUM
Purpose: Global API key for CLIProxyAPI
- Used for CLIProxyAPI authentication
- Sent in
x-api-keyheader - Can be overridden per-variant via
variants.<name>.auth.api_key - Default:
"ccs-internal-managed"
cliproxy.auth.management_secret
Type: String
Priority: MEDIUM
Purpose: Global management secret for CLIProxyAPI
- Used for CLIProxyAPI management endpoints
- Sent in
x-management-secretheader - Can be overridden per-variant via
variants.<name>.auth.management_secret - Default:
"ccs"
- Separate auth for management vs API operations
- Enhanced security for admin endpoints
cliproxy.kiro_no_incognito
Type: Boolean
Priority: MEDIUM
Purpose: Disable incognito mode for Kiro provider
false: Use incognito mode (default, no persistent session)true: Use normal browser mode (saves cookies/session)
- Persistent AWS SSO login for Kiro
- Avoid re-entering credentials on each auth
- Development/testing with saved browser state
--no-incognito CLI flag
cliproxy.logging.enabled
Type: Boolean
Priority: LOW
Purpose: Enable CLIProxy logging to disk
false: No disk logging (default, prevents bloat)true: Write logs to~/.ccs/cliproxy/logs/
cliproxy.logging.request_log
Type: Boolean
Priority: LOW
Purpose: Enable detailed request logging
false: Log errors/warnings onlytrue: Log all HTTP requests/responses- Requires
logging.enabled: true
cliproxy.token_refresh.enabled
Type: Boolean
Priority: MEDIUM
Purpose: Enable background token refresh worker
false: On-demand refresh only (5 min before expiry)true: Background worker refreshes tokens at intervals
- Long-running services needing proactive refresh
- Preventing mid-request token expiry
- CI/CD environments with extended sessions
cliproxy.token_refresh.interval_minutes
Type: Integer (minutes)
Priority: LOW
Purpose: Background refresh check interval
- Worker checks all tokens every N minutes
- Only refreshes tokens approaching expiry
cliproxy.token_refresh.preemptive_minutes
Type: Integer (minutes)
Priority: LOW
Purpose: Refresh tokens expiring within N minutes
- Tokens expiring within this window are refreshed
- Higher values = more proactive refresh
- Prevents
UND_ERR_SOCKETerrors from stale tokens
cliproxy.token_refresh.max_retries
Type: Integer
Priority: LOW
Purpose: Maximum refresh retry attempts
- Retries on transient failures
- Logs warning after max retries exceeded
- Does not re-authenticate (requires user action)
cliproxy.token_refresh.verbose
Type: Boolean
Priority: LOW
Purpose: Enable debug logging for token refresh
- Logs all refresh attempts to console
- Useful for debugging token issues
- Output: timestamps, providers, success/failure
cliproxy.oauth-model-alias
Type: Object (map of model aliases)
Priority: HIGH
Purpose: Map OAuth provider model names to CLIProxy internal aliases
- Auto-Generated:
ccs doctorautomatically generates this section - Purpose: Maps Claude/Gemini model names to Antigravity’s internal naming
- Required for: New models like Opus 4.6 to prevent 502 errors
- Config Version: Bumped to v6 to trigger auto-regeneration on upgrade
- Preservation: Existing custom aliases preserved during regeneration
- New Opus 4.6 model added to Antigravity catalog
- Users with outdated config.yaml got 502 errors when selecting Opus 4.6
- Auto-regeneration ensures all models work with new CLIProxy versions
- Add new aliases for private models
- Override defaults if using custom CLIProxy setup
- Keep
claude-api-keyunless running custom OAuth backend
CLIProxy Server Configuration
cliproxy_server.fallback.enabled
Type: Boolean
Priority: HIGH
Purpose: Enable fallback to local proxy if remote fails
true: Try local proxy if remote unreachablefalse: Fail withPROXY_ERRORif remote fails
- Graceful degradation for network issues
- Offline work capability
- Testing without remote infrastructure
--remote-only CLI flag
cliproxy_server.fallback.auto_start
Type: Boolean
Priority: MEDIUM
Purpose: Auto-start local proxy on fallback
false: Use existing local proxy onlytrue: Spawn local proxy if not running
- Seamless fallback without manual intervention
- Ensure proxy always available
cliproxy_server.remote.management_key
Type: String
Priority: MEDIUM
Purpose: Separate management key for remote proxy
- Used for management endpoints on remote proxy
- Falls back to
auth_tokenif not specified - Allows separate credentials for API vs management
cliproxy_server.remote.timeout
Type: Integer (milliseconds)
Priority: LOW
Purpose: Health check timeout for remote proxy
- Used for initial health check only
- Higher values for slow networks
- Does NOT affect API request timeouts
--proxy-timeout CLI flag
Quota Management Configuration
Supported Quota Providers
The following providers support quota tracking and rotation viaccs cliproxy quota and the quota_management section:
| Provider ID | Description |
|---|---|
agy | Antigravity (multi-account) |
codex | OpenAI Codex |
gemini | Google Gemini |
claude | Anthropic Claude OAuth (5-hour + weekly windows, failover) |
ghcp | GitHub Copilot (premium interactions, chat, completions) |
quota_management.mode
Type: String (auto | manual | hybrid)
Priority: MEDIUM
Purpose: Account selection strategy for OAuth providers
auto: CCS selects account based on quota/tier automaticallymanual: Only use paused/forced_default settingshybrid: Auto-selection respects manual overrides (recommended)
quota_management.auto.preflight_check
Type: Boolean
Priority: HIGH
Purpose: Check quota before starting Claude session
true: Check account quota before request, auto-switch if exhaustedfalse: Skip pre-flight check, rely on 429 error handling
- Prevent delays from exhausted accounts
- Smoother multi-account experience
quota_management.auto.exhaustion_threshold
Type: Integer (0-100, percentage)
Priority: LOW
Purpose: Quota % below which account is “exhausted”
- Accounts below threshold are skipped in rotation
- Prevents using nearly-exhausted accounts
quota_management.auto.tier_priority
Type: Array of strings
Priority: LOW
Purpose: Account tier preference order
- Accounts sorted by tier priority, then by quota %
- Tiers not in list get lowest priority
ultra- Ultra subscription accountspro- Pro subscription accountsfree- Free tier accounts
quota_management.auto.cooldown_minutes
Type: Integer (minutes)
Priority: LOW
Purpose: Skip exhausted accounts for N minutes
- Exhausted accounts are skipped for cooldown period
- Prevents repeated failed attempts on same account
quota_management.manual.paused_accounts
Type: Array of strings
Priority: HIGH
Purpose: Accounts to skip in rotation
- Listed accounts are never selected automatically
- Set via
ccs cliproxy pause <provider> <account> - Remove via
ccs cliproxy resume <provider> <account>
quota_management.manual.forced_default
Type: String | null
Priority: HIGH
Purpose: Force specific account for all requests
null: Normal account rotation<email>: Always use this account
- Testing specific account
- Temporarily override rotation
quota_management.manual.tier_lock
Type: String | null
Priority: MEDIUM
Purpose: Only use accounts of specific tier
null: Use all tierspaid: Only paid accountsfree: Only free accounts
Global Environment Variables
global_env.enabled
Type: Boolean
Priority: MEDIUM
Purpose: Enable global env var injection
true: Injectglobal_env.envinto all non-Claude profilesfalse: Disable feature
- Disable Claude Code telemetry for proxy providers
- Set common env vars across all profiles
global_env.env
Type: Object (key-value pairs)
Priority: MEDIUM
Purpose: Environment variables for all non-Claude profiles
- Applied to settings-based and CLIProxy profiles
- NOT applied to native Claude or account-based profiles
- Merged with profile-specific env vars
DISABLE_BUG_COMMAND: "1"DISABLE_ERROR_REPORTING: "1"DISABLE_TELEMETRY: "1"
- Disable Claude Code telemetry globally
- Set API base URLs
- Configure logging levels
WebSearch Configuration
websearch.providers.gemini.model
Type: String
Priority: LOW
Purpose: Gemini model for WebSearch feature
- Used by WebSearch hook for third-party profiles
- Free tier: 1000 requests/day
- Falls back to OpenCode/Grok if fails
gemini-2.5-flash(default, fastest)gemini-2.5-pro(more accurate)
websearch.providers.gemini.timeout
Type: Integer (seconds)
Priority: LOW
Purpose: Gemini CLI timeout for WebSearch
- Max time for single WebSearch request
- Prevents hanging on slow responses
- Falls back to next provider on timeout
websearch.providers.opencode
Type: Object
Priority: LOW
Purpose: OpenCode provider configuration
- Free provider via Zen platform
- Requires OpenCode CLI installed
- Fallback option after Gemini
- Set
enabled: true - Install:
npm install -g opencode
websearch.providers.grok
Type: Object
Priority: LOW
Purpose: Grok CLI provider configuration
- Requires
GROK_API_KEYenvironment variable - Paid API, better quality than free providers
- Last fallback option
- Set
enabled: true - Set
GROK_API_KEYenv var - Install:
npm install -g @vibe-kit/grok-cli
Copilot Configuration
copilot.account_type
Type: String (individual | business | enterprise)
Priority: LOW
Purpose: GitHub Copilot subscription type
individual: Personal subscriptionbusiness: Enterprise/team subscriptionenterprise: Enterprise subscription
- Billing/usage tracking
- Feature access control
copilot.rate_limit
Type: Integer | null
Priority: LOW
Purpose: Rate limiting for Copilot API
null: No rate limiting- Integer: Seconds between requests
- Prevent API abuse
- Control costs for business accounts
copilot.wait_on_limit
Type: Boolean
Priority: LOW
Purpose: Wait vs fail on rate limit
true: Wait until rate limit window resetsfalse: Fail with error immediately
Configuration Patterns
Priority Resolution
CCS resolves configuration values in this order:- CLI Flags (highest priority)
- Environment Variables
- config.yaml
- Defaults (lowest priority)
Variant Isolation Pattern
Run multiple variants concurrently without conflicts:Remote Proxy with Fallback Pattern
Graceful degradation for network issues:- Try remote proxy at
https://proxy.example.com:8443 - If unreachable after 5s, fall back to local proxy
- Auto-start local proxy if not running
- Use local proxy on port 8317
Thinking Configuration
Controls thinking/reasoning budget injection for CLIProxy providers.thinking.mode
Type: String (auto | off | manual)
Priority: HIGH
Purpose: Thinking mode control
auto: Apply tier-based defaults (opus→high, sonnet→medium, haiku→low)off: Disable thinking entirelymanual: Use explicit override value
thinking.override
Type: String | Integer
Priority: MEDIUM
Purpose: Manual override value for thinking budget
- Used when
mode: manual - Can be level name (e.g., “high”, “medium”, “low”) or numeric budget
- Applies to all providers unless overridden
thinking.tier_defaults
Type: Object
Priority: LOW
Purpose: Tier-to-thinking level mapping
- Maps Claude tier names to thinking level names
- Used when
mode: auto - Customizable per tier
thinking.provider_overrides
Type: Object
Priority: LOW
Purpose: Per-provider tier defaults
- Overrides global tier defaults for specific providers
- Useful for provider-specific configurations
thinking.show_warnings
Type: Boolean
Priority: LOW
Purpose: Show warnings when values are clamped
true: Show warning when budget values are adjustedfalse: Silent clamping
Image Analysis Configuration
Routes image/PDF files through CLIProxy for vision analysis.image_analysis.enabled
Type: Boolean
Priority: HIGH
Purpose: Enable image analysis via CLIProxy
true: Route images through CLIProxy vision modelsfalse: Disable image analysis
image_analysis.timeout
Type: Integer (seconds)
Priority: LOW
Purpose: Timeout for vision analysis requests
- Max time for single vision analysis request
- Prevents hanging on slow responses
image_analysis.provider_models
Type: Object
Priority: MEDIUM
Purpose: Provider-to-model mapping for vision analysis
- Maps provider names to vision model IDs
- Customizable per provider
- Defaults provided for all supported providers
Dashboard Authentication
Optional username/password protection for the CCS dashboard.See Dashboard Authentication for full setup guide.
dashboard_auth.enabled
Type: Boolean
Priority: HIGH
Purpose: Enable dashboard login requirement
false: Dashboard accessible without login (default)true: Requires username/password to access dashboard
dashboard_auth.username
Type: String
Priority: HIGH
Purpose: Login username
dashboard_auth.password_hash
Type: String (bcrypt hash)
Priority: HIGH
Purpose: Bcrypt-hashed password
dashboard_auth.session_timeout_hours
Type: Integer
Priority: LOW
Purpose: Session duration before re-login required
Dashboard Auth Environment Variables
| Variable | Maps To |
|---|---|
CCS_DASHBOARD_AUTH_ENABLED | dashboard_auth.enabled |
CCS_DASHBOARD_USERNAME | dashboard_auth.username |
CCS_DASHBOARD_PASSWORD_HASH | dashboard_auth.password_hash |
CCS_SESSION_SECRET | Custom session encryption key |
Environment variables override config.yaml values.
Continuity Configuration
Available since v9 (CCS v7.51.0)
CLAUDE_CONFIG_DIR). This shares conversation history, project files, and session state across profiles.
continuity.inherit_from_account
Type: Object (map of profile names to account names)
Priority: MEDIUM
Purpose: Inherit workspace continuity from an account profile
- Maps a non-account profile name to an account profile name
- When the mapped profile runs with
target: claude, it uses the account’sCLAUDE_CONFIG_DIR - Conversation history, project state, and sessions are shared with that account profile
- Only applies when
target='claude'— has no effect ontarget: droidprofiles - Never applies to account profiles themselves
- Settings-based profiles (
profiles.<name>) - CLIProxy variant profiles (
cliproxy.variants.<name>) - Built-in API presets (glm, albb, etc.)
- Account profiles (type: account)
- Copilot profiles
continuity_inherit_from_account key in config.json is still supported for backward compatibility but deprecated. Migrate to continuity.inherit_from_account in config.yaml.
Migration from v8 to v9
Version 9 adds cross-profile continuity inheritance. Migration is automatic. Changes:- Added
continuitysection withinherit_from_accountmapping - Config version bumped from 8 to 9
- None (automatic migration with empty defaults)
- Optional: Configure
continuity.inherit_from_accountto share workspace context between profiles
Migration from v7 to v8
Version 8 adds thinking/reasoning budget and image analysis configuration. Migration is automatic. Changes:- Added
thinkingsection for reasoning budget control - Added
image_analysissection for vision model configuration - Updated config version from 7 to 8
- None (automatic migration with defaults)
- Optional: Customize thinking levels or vision models
Migration from v6 to v7
Version 7 adds quota management for hybrid auto+manual account control. Migration is automatic. Changes:- Added
quota_managementsection - Added tier-based quota prioritization
- Added manual account controls (pause/force/tier-lock)
- None (automatic migration with defaults)
- Optional: Configure quota management preferences
Migration from v5 to v6
Version 6 adds customizable auth tokens. Migration is automatic. Changes:- Added
cliproxy.auth.api_key(default:"ccs-internal-managed") - Added
cliproxy.auth.management_secret(default:"ccs") - Added
cliproxy.variants.<name>.authfor per-variant override - Added
cliproxy_server.remote.management_keyfor separate management auth
- None (automatic migration with defaults)
- Optional: Customize auth keys for enhanced security
Validation Rules
CCS validates configuration on load. Common errors: Schema Errors:versionmust be integer >= 1- Ports must be 1-65535
- Boolean fields reject non-boolean values
- Variant names must not conflict with built-in providers
- Profile names cannot be reserved words
- Email addresses must be valid format
- Hostnames must be valid DNS/IP
- Run
ccs doctor --fixfor auto-repair - Run
ccs migratefor version upgrades - Delete corrupt config and run
ccs setup
