# 2.2 Switch Provider

## Switch from Main Interface

In the provider list, click the "Enable" button on the target provider card.

### Switching Flow

1. Click the "Enable" button
2. CC Switch updates the configuration file
3. The card status changes to "Currently Active"
4. Claude/Gemini take effect immediately, Codex requires a terminal restart

### Status Indicators

| Status | Display | Description |
|--------|---------|-------------|
| Currently Active | Blue border + label | Current provider in the configuration file |
| Proxy Active | Green border | Provider actually in use during proxy mode |
| Normal | Default style | Inactive provider |

## Quick Switch via System Tray

Quickly switch providers via the system tray without opening the main interface.

### Steps

1. Right-click the CC Switch icon in the system tray
2. Hover over the corresponding app submenu (e.g., "Claude · CurrentProvider")
3. Click the provider name you want to switch to
4. Switching completes with a brief tray notification

### Tray Menu Structure

Starting from v3.13.0, the tray menu is refactored from a flat list into **per-app submenus**, with a dedicated submenu for each app:

| Submenu    | Description                                                    |
| ---------- | -------------------------------------------------------------- |
| Claude     | All Claude providers (including Codex OAuth reverse proxy)     |
| Codex      | All Codex providers                                            |
| Gemini     | All Gemini providers                                           |

**Benefits of the refactor**:

- **Prevents menu overflow**: With many providers, a flat list would exceed screen height; per-app submenus scale naturally
- **Submenu title shows the currently active provider and usage summary**: You know at a glance which provider Claude / Codex / Gemini is using, plus available cached usage information, without opening the submenu
- **Per-app isolation**: Switching Claude's provider doesn't disturb the Codex or Gemini view

> **Tip**: The combination of background residency + Lightweight Mode + per-app submenus is especially suited for heavy users who frequently switch among multiple apps. See [1.5 Personalization → Lightweight Mode](../1-getting-started/1.5-settings.md).

![image-20260108004348993](../../assets/image-20260108004348993.png)

## Activation Methods

### Claude Code

**Takes effect immediately after switching**, no restart needed.

Claude Code supports hot reload and automatically detects configuration file changes and reloads.

### Codex

Requires restart after switching:
- Close the current terminal window
- Reopen the terminal

### Gemini CLI

**Takes effect immediately after switching**, no restart needed.

Gemini CLI re-reads the `.env` file on each request.

## Configuration File Changes

When switching providers, CC Switch modifies the following files:

### Claude

```
~/.claude/settings.json
```

Modified content:
```json
{
  "env": {
    "ANTHROPIC_API_KEY": "new API Key",
    "ANTHROPIC_BASE_URL": "new endpoint"
  }
}
```

### Codex

```
~/.codex/auth.json
~/.codex/config.toml (if additional configuration exists)
```

### Gemini

```
~/.gemini/.env
~/.gemini/settings.json
```

## Handling Switch Failures

If switching fails, possible reasons:

### Configuration File Is Locked

Another program is using the configuration file.

**Solution**: Close the running CLI tool and try switching again.

### Insufficient Permissions

No write permission to the configuration file.

**Solution**: Check the permission settings of the configuration directory.

### Invalid Configuration Format

The provider's JSON configuration has format errors.

**Solution**: Edit the provider, check and fix the JSON format.
