> ## 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 change-request

> Approve, reject, withdraw, endorse, or unendorse a catalog change-request by its id.

Drives the lifecycle of a [change-request](/catalog/change-request): a proposed change to a catalog resource held for review. `murmur cr` is an alias.

Proposing and reading use other commands. Propose with [`murmur set <kind> <name> --propose`](/cli/set) (or `spawn --propose` and `bake --propose`), and read with [`murmur get change-request [id]`](/cli/get). The [change-request catalog page](/catalog/change-request) describes the states, fields, and permissions in full.

## Synopsis

```bash theme={null}
murmur change-request approve <id> [--note TEXT]
murmur change-request reject <id> [--note TEXT]
murmur change-request withdraw <id>
murmur change-request endorse <id>
murmur change-request unendorse <id>
```

## Subcommands

| Subcommand | Description |
| - | - |
| `approve <id>` | Approve the change-request and apply its proposed value to the target. See [approve](/catalog/change-request#approve). |
| `reject <id>` | Reject the change-request. See [reject](/catalog/change-request#reject). |
| `withdraw <id>` | Withdraw your own `PENDING` change-request. See [withdraw](/catalog/change-request#withdraw). |
| `endorse <id>` | Add your thumbs-up. Idempotent. See [endorse](/catalog/change-request#endorse-a-change-request). |
| `unendorse <id>` | Remove your thumbs-up. Idempotent. |

## Arguments

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | string | yes | The change-request id, for example `cr-a1b2c3d4e5f6`. List ids with `murmur get change-request`. |
| `--note` | string | no | `approve` and `reject` only. Decision note recorded on the change-request. |

## Output

Each subcommand prints one confirmation line to stderr:

| Subcommand | Line |
| - | - |
| `approve` | `Approved change-request <id> (<STATUS>); applied generation <N>` |
| `reject` | `Rejected change-request <id> (<STATUS>)` |
| `withdraw` | `Withdrew change-request <id>` |
| `endorse` | `Endorsed change-request <id> (<N> endorsements)` |
| `unendorse` | `Removed endorsement from change-request <id> (<N> endorsements)` |

## Examples

### Review and approve a proposal

```bash theme={null}
murmur get change-request
murmur cr approve cr-a1b2c3d4e5f6 --note "looks good"
```

```
Approved change-request cr-a1b2c3d4e5f6 (APPLIED); applied generation 7
```

### Reject with a note

```bash theme={null}
murmur cr reject cr-a1b2c3d4e5f6 --note "superseded by cr-9f8e7d6c5b4a"
```

```
Rejected change-request cr-a1b2c3d4e5f6 (REJECTED)
```

### Endorse a proposal

```bash theme={null}
murmur cr endorse cr-a1b2c3d4e5f6
```

```
Endorsed change-request cr-a1b2c3d4e5f6 (5 endorsements)
```

## Errors

Server errors are prefixed with the action, for example `approve change-request: ...`. The [catalog page's error table](/catalog/change-request#errors) lists them.

| Code | Meaning | What to do |
| - | - | - |
| none | `unknown change-request subcommand "<name>"` | Use `approve`, `reject`, `withdraw`, `endorse`, or `unendorse`. |
| `NOT_FOUND` | `change-request "<id>" not found` | Check the id with [`murmur get change-request`](/cli/get). |
| `FAILED_PRECONDITION` | `only a pending change-request can be withdrawn` | Ask a reviewer to reject it instead. |
| `PERMISSION_DENIED` | You lack the permission the action needs. | Approving and rejecting need write access to the target. See [authorization](/security/authorization). |

## Related

* [`change-request`](/catalog/change-request): catalog resource reference
* [`murmur set`](/cli/set): propose a change with `--propose`
* [`murmur get`](/cli/get): read and list change-requests
