# Change commands: merge, revert, review

URL: /code/cli/change/verbs · Id: `page:code/cli/change/verbs`

> The Change Verbs merge, revert, review as CLI commands, with inputs, result, refusals and an example.

Reference for [Change](/business/nouns/change), one group of [Change commands](/code/cli/change).

### Change.merge
Merge applies a Change to live data with a three-way, field-level merge against its base Version. [Verb page](/business/nouns/change/merge?interface=cli).

```text
npx startup-builder do Change.merge --json '<input>' [--try | --send | --do]
```

Emits [`Change.merged`](/business/events/Change.merged).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `change` | [Change](/business/nouns/change) | Yes | The reviewed Change. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `version` | [Version](/business/nouns/version) | Yes | The new Version. |
| `change` | [Change](/business/nouns/change) | Yes | The Change, now merged into live data. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The record changed since it was read, so the write would overwrite a newer version. | [`conflict`](/code/api/errors/conflict) | Read the record again, then retry the write against its current state. | None. |
| The record is not in a state that allows this Verb, so the call is refused. | [`refused`](/code/api/errors/refused) | Read the record, run the Verb that moves it to an allowed state, then retry. | None. |

**Example**

```bash
npx startup-builder do Change.merge --json '{"change":"change_3Ex8uVSOyQ"}'
```

### Change.revert
Revert undoes a merged Change with a new Change and a superseding Decision, deleting nothing. [Verb page](/business/nouns/change/revert?interface=cli).

```text
npx startup-builder do Change.revert --json '<input>' [--try | --send | --do]
```

Emits [`Change.reverted`](/business/events/Change.reverted).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `change` | [Change](/business/nouns/change) | Yes | The merged Change to undo. |
| `reason` | `text` | Yes | Why it is undone. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `revert` | [Change](/business/nouns/change) | Yes | The Change that undoes it. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The record is not in a state that allows this Verb, so the call is refused. | [`refused`](/code/api/errors/refused) | Read the record, run the Verb that moves it to an allowed state, then retry. | None. |

**Example**

```bash
npx startup-builder do Change.revert --json '{"change":"change_3Ex8uVSOyQ","reason":"Example reason"}'
```

### Change.review
Review runs every Evaluator on a Change’s preview and records each verdict on the Change. [Verb page](/business/nouns/change/review?interface=cli).

```text
npx startup-builder do Change.review --json '<input>' [--try | --send | --do]
```

Emits [`Change.reviewed`](/business/events/Change.reviewed).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `change` | [Change](/business/nouns/change) | Yes | The open Change. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `change` | [Change](/business/nouns/change) | Yes | The Change with its verdicts. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
| The record is not in a state that allows this Verb, so the call is refused. | [`refused`](/code/api/errors/refused) | Read the record, run the Verb that moves it to an allowed state, then retry. | None. |

**Example**

```bash
npx startup-builder do Change.review --json '{"change":"change_3Ex8uVSOyQ"}'
```