# swarmops ws snapshot

> Release: 0.11.0 · Last changed: 2026-11-09 · Source: https://github.com/KeiaiLab/SwarmOps/blob/stable/docs/reference/commands/ws-snapshot.md

Record a workspace's edits as a changeset on its head, which moves no ref.

The workspace keeps its head, its files and its edits. The same edits on the same head again write nothing and answer the same id; ws info names the latest.

```yaml
title: "swarmops ws snapshot"
description: "Record a workspace's edits as a changeset on its head, which moves no ref."
group: "workspaces"
since: "0.11.0"
mutates: true
identity_required: false
mcp_tool: "ws_snapshot"
envelope_op: "ws_snapshot"
exit_codes: [0]
errors: []
syntax: "swarmops ws snapshot [OPTIONS]"
```

## Syntax

```text
swarmops ws snapshot [OPTIONS]
```

## Required arguments

None.

## Optional arguments

The command also takes the [global options](../cli.md#global-options).

### `--ws`

Syntax: `--ws <NAME>`.

The workspace, by its name in the store's registry (default: the one around the working directory).

### `--ws-path`

Syntax: `--ws-path <DIR>`.

The workspace's directory.

### `--status-after`

Syntax: `--status-after <STATUS_AFTER>`.
Default: `page`.

page: the first page of the status follows the result; none: it is left out. Values: `page`: The first page of the status; `none`: No status.

## Examples

### CLI

No recorded example yet.

### MCP

No recorded example yet.

## Return information

`result` is a `WsSnapshotResp` (`swarmops schema WsSnapshotResp` prints its JSON Schema).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `snapshot` | `string or null` | no | The snapshot, readable by id from any process; omitted when there were no edits. |
| `status_after` | `WsStatus or null` | no | The status after the mutation; omitted when the request said `none`. |
| `written` | `SnapshotWrite` | yes | Whether this call wrote it. |

Envelope `op`: `ws_snapshot`.

Exit codes:

- `0`: Success.

## Errors

No golden step shows this command failing yet.

Any command that opens a store may also fail with a store error, such as [`E_NOT_A_REPO`](../errors.md#e_not_a_repo), [`E_IO`](../errors.md#e_io) or [`E_STORE_CORRUPT`](../errors.md#e_store_corrupt); a command line the grammar refuses is [`E_INVALID_ARG`](../errors.md#e_invalid_arg) (exit 2).

## See also

- [`swarmops ws create`](ws-create.md)
- [`swarmops ws status`](ws-status.md)
- [`swarmops ws diff`](ws-diff.md)
- [`swarmops ws commit`](ws-commit.md)
- [`swarmops ws rebase`](ws-rebase.md)
- [`swarmops ws resolve`](ws-resolve.md)
- [`swarmops ws land`](ws-land.md)
- [`swarmops ws materialize`](ws-materialize.md)
- [`swarmops ws discard`](ws-discard.md)
- [`swarmops ws list`](ws-list.md)
- [`swarmops ws info`](ws-info.md)
- [`swarmops ws delete`](ws-delete.md)
- [`swarmops ws hook`](ws-hook.md)
- [CLI reference](../cli.md)
- [Error codes](../errors.md)
