# Watching code run: `jadpo watch`

Your agent can wait for one part of the code to run and then see its
inputs and outputs, without reading whole logs.

```text
jadpo watch action shipping.book_collection --once --json
jadpo watch domain billing
jadpo watch call couriers.bookings.create --failed
jadpo watch file domains/shipping/actions/book_collection.jadpo
```

## What you can watch

You name the code as the compiler knows it: a route, action, query,
subscriber, schedule, provider operation, domain or file. Add `--failed` or
`--faulted` to see only the runs that failed or faulted. A name the
compiler doesn't know is an error that names the nearest match, as
everywhere else in Jadpo.

## What each match prints

Each match prints the step that ran: its inputs, its output or failure, the
queries, writes, events and calls inside it, its timings, and the request
id, so `jadpo trace <request id>` opens the whole request.

For an action with several changing calls, each step shows its state. A
step that didn't finish is an item for an operator, the person running the
app, to resolve
([What an operator sees](what-an-operator-sees.md)).

## Waiting for one run

`--once` exits after the first match. Your agent starts the command in the
background, triggers the flow, and waits for the command to finish rather
than polling. `--count <n>` and `--timeout <duration>` limit how long it
waits, and `--json` gives the same output as data.

## Values in full, in development only

`jadpo watch` works only in development. It shows values in full, as the
[development call log](provider-calls-in-development-jadpo-calls.md) shows
what was sent to providers, read from data that `jadpo dev` keeps out of
git. Secrets are never shown. In production, only the spans are kept, with
no values ([Telemetry](telemetry.md)).
