# Operate Runs

> Inspect authoritative Run state, accepted identity, facts, waits, controls, usage, and paged durable journal evidence.

## Before you begin {#before-you-begin}

Open the exact Run address and inspect its current status, journal position, pinned Agent, Resource snapshot, budget, and open waits. Controls require specific Policy actions such as `run:pause`, `run:resume`, `run:cancel`, or `run:truncate`.

The Console loads the newest 100 journal entries first. This is a page size, not a retention limit: choose **Load older** to retrieve the preceding page until the complete journal is available. Active Runs refresh from the returned `after` cursor; terminal Runs stop polling after their authoritative terminal state is observed.

## Steps {#steps}

1. Open the Run detail page and confirm its full address, status, accepted principal/customer identity, Agent deployment revision, Policy hash, Resource snapshot, model, Toolset, and budgets.
2. Review queue time, start/end timestamps, terminal outcome, usage, tracked cost, platform charge, and customer charge. A historical analytics row is not a substitute for current Run detail.
3. Inspect open waits, recent steers, and fact summaries. Retrieve older session events or ledger pages when the bounded snapshot reports a cursor.
4. Read the newest journal page. Each invocation entry should identify its position, effect, recovery, Policy decision, exact Resource and operation, status, usage, result or error reference, and idempotency evidence.
5. Load older journal pages until the needed causal boundary is visible. Combine pages by sequence rather than display order.
6. Apply a control only after identifying the last committed boundary and any pending or outcome-unknown external operation.

## Read a Run programmatically {#read-a-run-programmatically}

`GET .../runs/:run/detail?journalLimit=100` returns one authoritative, bounded snapshot containing Run state, open waits, recent steering and fact summaries, and the newest journal page. Use `journalAfter` with the response's `journal.after` cursor to request newly appended entries.

When `journal.before` is not `null`, request `GET .../runs/:run/journal-window?before=:cursor&limit=100` to read the preceding page. Limits from 1 through 500 are accepted. Pages are returned in ascending journal order and can be combined by `seq`. Use `/runs/:run/journal` when you need the complete verified journal representation.

A Run request governed by a full [concurrent Run limit](/docs/policies/governance.md#run-limits) with `overLimit: "queue"` waits in its Session's inbox instead of starting. Its decision is 202 `{ outcome: "queued", admission: { state: "waiting", queue, scope, position } }`, and it starts when a slot frees. Read, reorder, or drop it through the Agent's [Run queue](/docs/api/run-controls.md#run-queues).

## Verify {#verify}

Confirm the snapshot and journal agree on status, accepted identities, sequence heads, and terminal outcome. A timeout or uncertain Resource outcome requires reconciliation evidence rather than blind repetition. Follow [Resolve waits and control Runs](/docs/runs/waits-and-controls.md) when action is required.

## Next steps {#next-steps}

Inspect [Agent operations](/docs/agents/operate.md) for deployment identity or [Channel operations](/docs/channels/operate.md) for delivery evidence.
