Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Usage

Basic usage

# Launch with default profile
ccode

# Launch with a specific profile
ccode --bedrock
ccode --deepseek
ccode --openrouter
ccode --openrouter-preset
ccode --zai
ccode --kimi
ccode --qwen
ccode --minimax
ccode --some-other-custom-profile

# There's also a longer form for profiles
# (in case they'd add a --bedrock flag and you couldn't use such a shorthand)
ccode --profile bedrock

# Pass arguments through to Claude Code
ccode --deepseek --ide
ccode --deepseek -p "Fix the bug in auth.py"

Profile selection

Profiles are selected in this priority order:

  1. --profile <name> flag (explicit, always works)
  2. --<name> shortcut (auto-generated from profile names)
  3. default_profile from config

Profile shortcuts

Every profile name automatically becomes a --<name> shortcut. If you have a profile called deepseek, then --deepseek works.

If a profile name collides with a Claude Code flag (e.g. you named a profile model), the shortcut is disabled and ccode will warn you. Use --profile model instead.

Commands

ccode install

Installs the ccode binary to your PATH. See the Installation page for full details.

ccode install            # User-level install (no admin/sudo required)
ccode install --system   # System-wide install (requires admin/sudo)

ccode init-config

Creates the default user configuration file and prints its path.

ccode init-config                        # Create config (fails if exists)
ccode init-config --minimal              # Create minimal config (Anthropic only)
ccode init-config --reset                # Overwrite existing config with defaults
ccode init-config --minimal --reset      # Reset with minimal config
ccode init-config ccode.yaml             # Create config at a custom path
ccode init-config --minimal ccode.yaml   # Create minimal config at custom path

The --minimal flag creates a smaller configuration with only the top-level settings and Anthropic direct profiles (no cloud providers, third-party providers, or local model examples). Useful for quick setup or project-level configs.

ccode edit-config

Opens the user config file in a text editor. If no config exists, it creates one first.

ccode edit-config            # Open in default editor
ccode edit-config vim        # Open in a specific editor

The editor is resolved in this order: command argument > $EDITOR > $VISUAL > platform default (notepad on Windows, nano on Linux/macOS).

ccode profiles

Lists all available profiles from the merged configuration.

$ ccode profiles
User config:     C:\Users\you\AppData\Roaming\ccode\config.yaml
Default profile: default
Always control:  false  (shortcuts: --control or --no-control)
Always auto:     false  (shortcuts: --auto or --no-auto)
Always yolo:     false  (shortcuts: --yolo or --no-yolo)

Available profiles:
  > default
      type:     subscription passthrough
      shortcut: --default
    deepseek
      type:     https://api.deepseek.com/anthropic (deepseek-v4-pro[1m])
      shortcut: --deepseek
    openrouter
      type:     https://openrouter.ai/api (anthropic/claude-sonnet-4.6) [no auth]
      shortcut: --openrouter

ccode --help

Shows ccode’s own help, including the current config paths, available profiles, and ccode-specific commands and flags.

ccode --help

Since ccode wraps Claude Code, it overrides the default claude --help. The original Claude Code help is always available directly:

claude --help

ccode uninstall

Removes ccode binaries, PATH entries, and optionally the configuration directory. You are prompted before each deletion - nothing is removed without your confirmation. See the Installation page for full details.

ccode uninstall

Launch modes

ccode can automatically enable Claude Code’s launch modes. Set always_control, always_auto, or always_yolo in your config, or use CLI flags to override per-launch:

# Remote control - sessions show up at claude.ai/code
ccode --control                # Enable for this session
ccode --no-control             # Disable for this session

# Auto permissions - Claude handles permission prompts automatically
ccode --auto                   # Enable for this session
ccode --no-auto                # Disable for this session

# Skip permissions - bypass all permission prompts (be careful!)
ccode --yolo                   # Enable for this session
ccode --no-yolo                # Disable for this session

# Combine modes
ccode --control --yolo         # Remote control + skip permissions

# Combine with profiles
ccode --deepseek --auto
ccode --deepseek --yolo
ccode --deepseek --control

--yolo takes priority over --auto (they’re mutually exclusive permission modes). --control can be combined with either.

Note: At the time of writing, claude remote-control does not accept custom permission flags (--dangerously-skip-permissions or --permission-mode auto). Combining --control with --auto or --yolo will print a warning but still attempt to pass the flags, in case a future Claude Code update enables it. Auto permissions can be set in the Claude app/web UI instead.

Passthrough

We have a few commands/flags of our own, but all other flags are passed through to Claude Code. We try not to have naming conflicts.

All Claude Code flags and arguments work as expected:

ccode --deepseek --continue          # Resume last conversation
ccode --deepseek -r                  # Interactive session picker
ccode --deepseek --worktree          # New git worktree
ccode --deepseek --debug             # Debug mode

Use -- to force everything after it to be passed through:

ccode --deepseek -- --some-future-flag