CLI Reference: Observation Logs (obs)
Commands for querying an agent's structured observation log.
Each agent accumulates an observation log: a timestamped stream of structured entries recording the agent's reasoning, actions, and results. See Observation Logs for background.
ash obs query
Query an agent's observation log with flexible filtering.
ash obs query <agent-id> \
[--target <target-agent-id>] \
[--since <rfc3339>] \
[--until <rfc3339>] \
[--keyword <text>] \
[--limit <n>]
| Flag | Default | Description |
|---|---|---|
agent-id (positional) | - | Agent performing the query (must have obs.query capability) |
--target | same as agent-id | Target agent whose log to query; allows a supervisor to read a child's log |
--since | (no lower bound) | Only show entries at or after this RFC3339 timestamp |
--until | (no upper bound) | Only show entries at or before this RFC3339 timestamp |
--keyword | (no filter) | Substring filter applied to entry content |
--limit | 50 | Maximum number of entries to return |
Examples:
# Last 50 entries for an agent
ash obs query <agent-id>
# Query a child agent's log from a supervisor
ash obs query <supervisor-id> --target <child-id>
# Entries in the last hour containing "error"
ash obs query <agent-id> \
--since "$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ)" \
--keyword error
# Time-bounded slice
ash obs query <agent-id> \
--since 2026-01-15T10:00:00Z \
--until 2026-01-15T11:00:00Z \
--limit 200
Output format
Each observation entry includes:
| Field | Description |
|---|---|
timestamp | RFC3339 UTC timestamp |
kind | Entry type (e.g. Plan, ToolResult, Reasoning, Error) |
content | Structured JSON or text content of the observation |
Secret values are scrubbed from all observation entries before storage.
Capabilities required
| Operation | Required capability |
|---|---|
| Query own log | obs.query |
| Query another agent's log | obs.query + must be a declared supervisor of the target |