> ## Documentation Index
> Fetch the complete documentation index at: https://ai-development-environment.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Job details

> Watch a durable agent job's live output and status.

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/ai-development-environment/XmuMCFv09SOCZYoa/images/light/job-detail.png?fit=max&auto=format&n=XmuMCFv09SOCZYoa&q=85&s=c14553538b6481882e49ed734587f1e0" alt="Job details page in light theme" width="3840" height="2160" data-path="images/light/job-detail.png" />

  <img className="hidden dark:block" src="https://mintcdn.com/ai-development-environment/aldo79nFpNgOg3HT/images/dark/job-detail.png?fit=max&auto=format&n=aldo79nFpNgOg3HT&q=85&s=6f911e80b141ffb297a0b457e5d7e9e5" alt="Job details page in dark theme" width="3840" height="2160" data-path="images/dark/job-detail.png" />
</Frame>

The job details page at `/jobs/{id}` shows one durable job on an agent: its kind, its status, its error if it has one, and its full log stream as it arrives.

Jobs are the unit of work the control plane hands to an agent. Nearly every Git operation, codebase scan, worktree move, and build step in the product runs as a job, so this page is where you go when you need to see exactly what a Mac did.

## What the page shows

* The job **kind** and its id.
* A **status** badge — **Queued**, **Running**, **Cancelling**, **Succeeded**, **Failed**, **Cancelled**, or **Timed out**.
* The job's error message, when it failed.
* A terminal-style log pane with sequence-numbered lines.

### Reading the log

Log lines arrive over an `agentJobLogAdded` subscription and are ordered by sequence number, so a reconnect cannot interleave them out of order or duplicate them. Each line is color-coded by stream:

| Stream   | Appearance |
| -------- | ---------- |
| `STDOUT` | Default    |
| `STDERR` | Amber      |
| `SYSTEM` | Blue       |

The pane follows output automatically while you are scrolled to the bottom. Scroll up and it stops following, so you can read earlier output without fighting the stream.

## Cancelling

**Cancel** is offered while the job is **Queued** or **Running**. It moves the job to **Cancelling**; the agent stops the work and reports the final **Cancelled** state.

## Durability

<AccordionGroup>
  <Accordion title="How a job survives a restart" icon="arrows-rotate">
    Job records live in the control plane's database, not in agent memory. On its job reconciliation interval, the agent asks the control plane for anything queued, running, or cancelled and picks up where it left off — so a dropped WebSocket, an agent restart, or a missed event does not lose the work.

    Tune that interval under **Agent cadence** on the [agent detail page](/agents/agent-detail).
  </Accordion>

  <Accordion title="Timeouts" icon="stopwatch">
    Every job carries a timeout in seconds. A job that exceeds it is marked **Timed out** rather than being left running indefinitely.
  </Accordion>
</AccordionGroup>

<Tip>
  Jobs are reachable from the **Job history** table on an agent's detail page, and an embedded compact version of this monitor appears wherever the app kicks off a job for you.
</Tip>

## Related pages

<Columns cols={2}>
  <Card title="Agent details" icon="laptop" href="/agents/agent-detail">
    Job history, capabilities, and the reconciliation cadence for one Mac.
  </Card>

  <Card title="Command run" icon="terminal" href="/commands/command-run">
    Shell command runs, which have their own richer terminal view.
  </Card>
</Columns>
