Skip to main content

Troubleshooting

Common issues and their solutions.
For detailed error code reference and recovery strategies, see Error Codes.

Installation Issues

Config File Not Found After npm Install

Symptom:
Cause: Installed with --ignore-scripts flag. Solution:

PATH Not Updated

Symptom: ccs command not found after install. Solution:
  1. Restart your terminal
  2. Or manually add to PATH:
    • macOS/Linux: Add ~/.local/bin to PATH
    • Windows: Add %USERPROFILE%\.ccs to PATH

Windows-Specific

PowerShell Execution Policy

Error: “cannot be loaded because running scripts is disabled” Solution:

Claude CLI Not Found

If missing, install from Claude docs.

Claude CLI in Non-Standard Location

Set CCS_CLAUDE_PATH

Configuration Issues

Profile Not Found

Error: Profile 'foo' not found in ~/.ccs/config.yaml Solution: Add profile to config:

Settings File Missing

Error: Settings file not found: ~/.ccs/foo.settings.json Solution: Create the settings file or fix path in config.

Default Profile Missing

Error: Profile 'default' not found Solution: Add default profile:

Codex config.toml Cannot Be Parsed

If Codex writes a model migration and joins it to the next TOML table header, the Control Center disables structured controls to avoid overwriting the invalid file. Solution: Open ccs config, select Codex config.toml, then choose Preview one-newline repair. CCS creates an unsaved editor draft that inserts only the missing newline. Review the diff and select Save to write it. The save uses the file version observed when the draft was created, so it refuses a concurrent change instead of overwriting it. The preview appears only for this exact migration-table boundary. For any other TOML error, correct the raw TOML manually and save it after the validation message clears.

Quota Issues

Quota Shows “N/A (fetch unavailable)”

When quota cannot be fetched, CCS displays “N/A” instead of a percentage. Causes:
  • Network connectivity issues
  • API rate limiting (5-second timeout)
  • Account tier lacks quota API access (403 Forbidden)
  • Token expired (401 Unauthorized)
Solutions:
  1. Check connectivity:
  1. Run diagnostics with verbose mode:
  1. Verify account tier: Some free-tier accounts don’t have quota API access. Upgrade to paid tier if needed.
  2. Refresh authentication:

Quota Fetch Error Codes


Quota Shows 0 But Account Not Exhausted

Possible causes:
  • Quota not yet refreshed (30-second cache TTL)
  • All models at 0% (account exhausted)
  • Fetch returned null (treated as unknown)
Distinguish null vs 0:
  • null = fetch failed → shows “N/A”
  • 0 = quota exhausted → shows “0%”
Solution:

Account Skipped in Rotation

Accounts are skipped when:
  1. Quota below threshold (default: 5%)
  2. Account is paused manually
  3. Account in cooldown (5 minutes after exhaustion)
  4. Quota fetch returned null
Check account status:
Resume paused account:

Common Problems

Claude CLI Not Found

Solution: Install from official documentation.

Permission Denied

Debug Mode

Enable verbose output:
Shows:
  • Config file being read
  • Profile being selected
  • Settings file being used
  • Command being executed

Disable Colors

Getting Help

  1. Check GitHub Issues
  2. Create new issue with:
    • Operating system
    • CCS version (ccs --version)
    • Exact error message
    • Steps to reproduce

Network Proxy Support

Available since v7.37.0 - CLIProxy respects standard proxy environment variables for network requests.
CCS and CLIProxy honor standard HTTP proxy environment variables for:
  • Binary downloads (CLIProxyAPI installation)
  • API requests to OAuth providers
  • Model catalog sync

Configuration

Set standard proxy environment variables:

Troubleshooting Proxy Issues

Connection failures behind proxy:
Proxy authentication: Most proxies accept credentials in URL format:
SSL inspection/MITM proxies: If corporate proxy inspects SSL traffic, you may need to trust the proxy’s CA certificate:

OAuth Callback Tracing

When an OAuth login fails (URL not displayed, callback never observed, token exchange error, etc.), CCS now emits branch-specific diagnostics instead of a generic “token not found” message. For deep debugging, enable the opt-in JSONL file sink:
  • Log path: ~/.ccs/logs/oauth-YYYYMMDD.log (mode 0o600, rotated per day)
  • Format: JSONL, one event per line
  • Redaction: tokens, codes, and PKCE verifiers are stripped before write
  • Sinks: in-memory ring buffer (always on), verbose stdout (with CCS_DEBUG=1), file sink (opt-in via CCS_OAUTH_LOG_FILE=1)
Attach the log file when reporting OAuth issues — it contains per-phase timing (URL display, callback wait, token exchange, persistence) with secrets removed.