> ## 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 session watch

> Stream live session events from a running agent — turn boundaries, tool calls, file edits, and assistant output as the agent emits them.

Streams live session events from a running [agent](/concepts/agents). Events include assistant text, tool invocations, tool results, errors, cost updates, and PR links. The stream stays open until the session ends or you press `Ctrl-C`.

## Synopsis

```bash theme={null}
murmur session watch [flags] [slug]
```

On a VM, the slug is optional — omitting it watches the current [agent's](/concepts/agents) own session.

## Arguments

| Name          | Type   | Required  | Description                                                                     |
| ------------- | ------ | --------- | ------------------------------------------------------------------------------- |
| `slug`        | string | on laptop | The [agent's](/concepts/agents) slug. Optional on VMs (defaults to self).       |
| `--from`      | string | no        | Resume from a specific event ID. Default: `"0"` (stream from the beginning).    |
| `--json`      | bool   | no        | Output raw JSON, one event per line. Default: `false`.                          |
| `--workspace` | string | no        | [Workspace](/concepts/workspaces) name. Overrides the value from `murmur.yaml`. |

## Event kinds

Each event has a timestamp and a kind that determines which fields are present.

| Kind             | What it means                                                                                       |
| ---------------- | --------------------------------------------------------------------------------------------------- |
| `SESSION_START`  | The session started.                                                                                |
| `SESSION_END`    | The session ended.                                                                                  |
| `ASSISTANT_TEXT` | The [agent](/concepts/agents) produced text output.                                                 |
| `TOOL_USE`       | The [agent](/concepts/agents) invoked a tool. Includes the tool name and input.                     |
| `TOOL_RESULT`    | A tool returned output.                                                                             |
| `TURN_COMPLETE`  | The [agent's](/concepts/agents) turn finished. Includes the stop reason (`end_turn` or `tool_use`). |
| `ERROR`          | An error occurred during the session.                                                               |
| `COST`           | Cumulative API cost update in USD.                                                                  |
| `PR_LINK`        | The [agent](/concepts/agents) opened a pull request. Includes the PR URL.                           |
| `USER_TEXT`      | A user message was sent to the session.                                                             |

Events from sub-agents are indented and prefixed with the sub-agent identifier.

## Examples

### Watch a running agent

```bash theme={null}
murmur session watch fix-auth
```

```
[14:32:01] session started
[14:32:03] ▍ Let me look at the auth middleware first.
[14:32:05] 🔧 Read(/src/auth/middleware.go)
[14:32:05]    → package auth\n\nimport (\n\t"context"\n\t"fmt"...
[14:32:08] ▍ The JWT expiry check is missing. I'll add it now.
[14:32:10] 🔧 Edit(/src/auth/middleware.go, ...)
[14:32:10]    → Applied edit to /src/auth/middleware.go
[14:32:15] 💰 $0.0342
[14:32:20] turn complete (end_turn)
```

### Resume after a disconnect

When the stream disconnects, `murmur session watch` prints the last event ID to stderr:

```
--- disconnected (last-event-id: 1715692800000-3) ---
```

Resume from where you left off:

```bash theme={null}
murmur session watch fix-auth --from 1715692800000-3
```

### JSON output for scripting

```bash theme={null}
murmur session watch fix-auth --json
```

```json theme={null}
{"id":"1715692800000-0","event":{"kind":"SESSION_EVENT_KIND_SESSION_START","at":"2026-05-14T14:32:01Z"}}
{"id":"1715692800000-1","event":{"kind":"SESSION_EVENT_KIND_ASSISTANT_TEXT","at":"2026-05-14T14:32:03Z","text":"Let me look at the auth middleware first."}}
```

Each line is a complete JSON object with an `id` field (the event ID) and an `event` field containing the session event payload.

### Watch with sub-agent output

When the [agent](/concepts/agents) spawns sub-agents, their events appear indented with a prefix:

```
[14:32:01] session started
[14:32:10] ▍ I'll delegate the test writing to a sub-agent.
[14:33:01]   [add-tests] session started
[14:33:05]   [add-tests] 🔧 Read(/src/auth/middleware_test.go)
[14:33:10]   [add-tests] ▍ Adding test cases for JWT expiry.
```

## Errors

| Code               | Meaning                                             | What to do                                                                             |
| ------------------ | --------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `NOT_FOUND`        | No [agent](/concepts/agents) with that slug exists. | Check the slug. Use [`murmur ls`](/cli/ls) to list running [agents](/concepts/agents). |
| `UNAUTHENTICATED`  | Identity token is missing or expired.               | Run `murmur auth` or check your `murmur.local.yaml` configuration.                     |
| `INVALID_ARGUMENT` | The `last_event_id` is empty.                       | Pass a valid event ID with `--from`, or omit the flag to use the default (`"0"`).      |

## Related

* [Agents](/concepts/agents) — concept overview
* [`murmur session send`](/cli/session-send) — send a follow-up message to the agent
* [`murmur session interrupt`](/cli/session-interrupt) — interrupt the agent's current turn
* [`murmur session stop`](/cli/session-stop) — request graceful session shutdown
* [`murmur status`](/cli/status) — check an agent's phase and progress
* [`murmur ssh`](/cli/ssh) — open a terminal on the agent's VM
