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>]
FlagDefaultDescription
agent-id (positional)-Agent performing the query (must have obs.query capability)
--targetsame as agent-idTarget 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
--limit50Maximum 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:

FieldDescription
timestampRFC3339 UTC timestamp
kindEntry type (e.g. Plan, ToolResult, Reasoning, Error)
contentStructured JSON or text content of the observation

Secret values are scrubbed from all observation entries before storage.

Capabilities required

OperationRequired capability
Query own logobs.query
Query another agent's logobs.query + must be a declared supervisor of the target