> ## Documentation Index
> Fetch the complete documentation index at: https://docs.murmur.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# murmur setup subscription

> Add, rotate, remove, or list the Claude and Codex subscription credentials that spawns round-robin across.

Manages the set of subscription credentials your agents run on: Claude (Anthropic) subscriptions and Codex (OpenAI/ChatGPT) subscriptions. Each backend keeps its own set, and spawns round-robin across each set independently.

The credentials are held in your developer profile, where Murmur refreshes them and chooses which one each agent runs on. Every subcommand writes there directly. Nothing is stored on your machine, and secret values are never printed.

## Synopsis

```bash theme={null}
murmur setup subscription add [--label NAME] [--backend claude|codex] [--service-profile NAME]
murmur setup subscription update <label> [--backend claude|codex] [--service-profile NAME]
murmur setup subscription remove <label> [--backend claude|codex] [--service-profile NAME]
murmur setup subscription list [--backend claude|codex] [--service-profile NAME]
```

`rm` is an alias for `remove`, and `ls` for `list`.

## Subcommands

| Subcommand | Description |
| - | - |
| `add` | Run the OAuth flow in your browser and add a labeled credential to the set. Without `--backend`, a provider menu appears, and `add` returns to it after each subscription until you choose `3` (Done). |
| `update <label>` | Run the OAuth flow again and replace that credential's values in place. The label and agent assignments stay the same. Running agents pick up the new values on their next refresh. |
| `remove <label>` | Remove the credential from the set and delete its secrets. |
| `list` | Show the set: labels and secret names, never values. |

## Arguments

| Name | Type | Required | Description |
| - | - | - | - |
| `label` | string | `update`, `remove` | The credential's label, as shown by `list`. Labels match `[a-z][a-z0-9-]{0,62}`. |
| `--label` | string | no | `add` only. Label for the new credential. When omitted, the first free label is chosen: `default`, then `user2`, `user3`, and so on, independently for each backend. |
| `--backend` | string | no | `claude` or `codex`. When omitted, the command asks. |
| `--service-profile` | string | no | Manage a [service profile's](/concepts/service-profiles) set instead of your own. |

The credential labeled `default` is the first entry of the set. `update default` rotates it and `remove default` removes it.

## Output

`add`, `update`, and `remove` print a success line on stderr:

```
  ✓ Added claude credential "user2" to your developer profile (2 in rotation)
  ✓ Rotated codex credential "user2" in your developer profile
  ✓ Removed claude credential "user2" from your developer profile (1 in rotation)
```

With `--service-profile`, the lines name `service profile <NAME>` instead of `your developer profile`.

`list` prints a table:

```bash theme={null}
murmur setup subscription list --backend claude
```

```
LABEL    TOKEN SECRET                           REFRESH SECRET                                 ID TOKEN SECRET
default  github_oauth/alice/CLAUDE_TOKEN        github_oauth/alice/CLAUDE_REFRESH_TOKEN
user2    github_oauth/alice/CLAUDE_TOKEN_USER2  github_oauth/alice/CLAUDE_REFRESH_TOKEN_USER2
```

`ID TOKEN SECRET` is filled only for Codex credentials. With an empty set, `list` prints `No <backend> credentials in <profile> — add one with 'murmur setup subscription add --backend <backend>'` to stderr.

## Examples

### Add subscriptions interactively

```bash theme={null}
murmur setup subscription add
```

### Add a second Claude subscription

```bash theme={null}
murmur setup subscription add --label user2 --backend claude
```

### Add a ChatGPT subscription

```bash theme={null}
murmur setup subscription add --backend codex
```

### Re-authenticate a Codex credential

```bash theme={null}
murmur setup subscription update user2 --backend codex
```

### Remove a credential

```bash theme={null}
murmur setup subscription remove user2 --backend claude
```

### List a service profile's set

```bash theme={null}
murmur setup subscription list --backend codex --service-profile ci-builder
```

## Errors

| Code | Meaning | What to do |
| - | - | - |
| none | `unknown --backend "<value>" (want claude or codex)` | Pass `claude` or `codex`. |
| none | `validate subscription label: label "<value>" must match [a-z][a-z0-9-]{0,62}` | Use lowercase letters, digits, and hyphens, starting with a letter. |
| none | `label "<label>" already exists — rotate it with 'murmur setup subscription update <label> --backend <backend>' or pick another` | Use `update`, or pick another label. |
| none | `no <backend> credential labeled "<label>" in <profile> — have: <labels>` | Check labels with `murmur setup subscription list`. |
| none | `usage: murmur setup subscription <cmd> <label> [--backend claude\|codex] [--service-profile NAME]` | `update` and `remove` need a label. |
| none | `caller has no developer identity — use --service-profile to manage a service profile's credentials` | Sign in as yourself with [`murmur login`](/cli/login), or pass `--service-profile`. |
| none | `service profile "<name>" does not exist` | Check the name with [`murmur spawn-profiles`](/cli/spawn-profiles). |
| none | `no subscription provider selected — pass --backend claude or --backend codex, or choose 3 to finish` | Pass `--backend` when stdin is not interactive. |

## Related

* [`murmur setup`](/cli/setup): bootstrap a repo and your developer profile
* [`murmur setup connection`](/cli/setup-connection): manage inference connections
* [`murmur credentials`](/cli/credentials): see which credential an agent receives
* [Agent runtimes](/guides/agent-runtimes): Claude and Codex agents
* [Service profiles](/concepts/service-profiles): non-personal identities
