Command Reference
Analyze Harness
Run HALO agent-trace analyses, schedule recurring reports, and pull report markdown from the CLI.
HALO analyzes your agent's traces and produces a markdown report that flags anomalies, errors, inefficiencies, and opportunities to improve reliability, latency, cost, and tool usage. The report is written to read like a brief you can paste straight into a coding agent to apply the fixes.
Use inf analyze-harness to kick off a one-off analysis, schedule recurring ones, watch a run reach completion, and read the resulting report. The old name inf halo remains as an alias.
How HALO is organized
- A run is one analysis of one agent over one time window. Each completed run produces exactly one report.
- A conversation is the thread a run lives in. The first assistant message is the original report; any follow-up questions you ask add more runs and more assistant messages to the same conversation.
- A schedule fires recurring runs for one agent on a cadence (hourly, daily, weekly, or monthly).
The report markdown is the assistant message content inside a conversation. There is no separate "report" artifact to download, so reading a report means reading its conversation.
Quickstart: run an analysis and read the report
# 1. Find the agent you want to analyze
inf analyze-harness agent list
# 2. Start a run for that agent over the last 24h
inf analyze-harness run create --agent-uuid <agent-uuid>
# 3. Wait for it to finish (prints the run id from step 2)
inf analyze-harness run poll <run-id>
# 4. Read the report (the assistant message in the conversation)
inf analyze-harness conversation get <conversation-id>inf analyze-harness run create prints both the run-id and the conversation-id. The report prints in full from inf analyze-harness conversation get — no --json required. Add --json only when you want the raw structured payload for scripting.
inf analyze-harness agent
List the agents HALO sees in your project's recent traces. You need an agent's UUID to start a run or create a schedule.
inf analyze-harness agent listAlias: inf analyze-harness agent ls
Options
| Flag | Required | Description | Default |
|---|---|---|---|
--time-range <range> | No | Trace window to scan for agents: 1h, 6h, 12h, 1d, 3d, 7d, 14d, 30d, 90d | 30d |
inf analyze-harness run
Create and inspect HALO runs.
inf analyze-harness run create
Start a manual analysis for one agent over a time window.
inf analyze-harness run create --agent-uuid <agent-uuid>In an interactive terminal you can omit --agent-uuid to pick from recent agents. In non-interactive or --json mode, --agent-uuid is required.
Options
| Flag | Required | Description | Default |
|---|---|---|---|
--agent-uuid <id> | No (required non-interactively) | Agent UUID from inf analyze-harness agent list | Interactive picker |
--prompt <text> | No | Prompt steering the analysis | Default HALO prompt |
--window-start-at <iso> | No | Window start, ISO datetime | Derived from --lookback-hours |
--window-end-at <iso> | No | Window end, ISO datetime | Now |
--lookback-hours <n> | No | Window length when --window-start-at is omitted | 24 |
--model-id <id> | No | Catalog HALO model id | Catalog default |
--span-limit <n> | No | Per-run span cap — omit to use the platform default | Platform default |
--max-subagent-depth <n> | No | Engine recursion ceiling (1–5) | 1 |
--max-turns <n> | No | Per-agent turn ceiling (1–100) | 20 |
--reasoning-effort <level> | No | Reasoning effort for the analysis model: none, minimal, low, medium, high, or xhigh | medium |
--subagent-model-id <id> | No | Catalog model id for subagent executions — omit to run subagents on the analysis model | Analysis model |
--debug | No | Enable debug logging for the HALO runtime | Off |
--agent-time-range <range> | No | Trace window preset used when picking an agent interactively | 30d |
inf analyze-harness run poll
Poll a run until it reaches a terminal state (completed, failed, cancelled, timed_out, or no_traces). Exits 0 only on completed.
inf analyze-harness run poll <run-id>Options
| Flag | Required | Description | Default |
|---|---|---|---|
--interval <seconds> | No | Poll interval | 5 |
--timeout <seconds> | No | Total timeout | 1800 (30 min) |
inf analyze-harness run get
Fetch a run's status and its referenced trace dataset. This returns run metadata, not the report text — read the conversation for the report.
inf analyze-harness run get <run-id>inf analyze-harness run events
List the structured event timeline for a run (started, heartbeat, agent steps, completed, failed).
inf analyze-harness run events <run-id>Options
| Flag | Required | Description | Default |
|---|---|---|---|
--limit <n> | No | Max events to return | 100 |
inf analyze-harness run cancel
Request cancellation of an in-flight run.
inf analyze-harness run cancel <run-id> --reason "no longer needed"Options
| Flag | Required | Description | Default |
|---|---|---|---|
--reason <text> | No | Reason recorded for the cancellation | user-cancelled |
inf analyze-harness conversation
Inspect HALO conversations and read their reports.
Alias: inf analyze-harness conv
inf analyze-harness conversation list
List conversations in the active project, newest first.
inf analyze-harness conversation listAlias: inf analyze-harness conversation ls
Options
| Flag | Required | Description | Default |
|---|---|---|---|
--limit <n> | No | Max conversations to return | 50 |
inf analyze-harness conversation get
Print a conversation with its messages, runs, and trace datasets. The assistant messages are the report markdown — the first assistant message is the original report; later ones answer follow-up questions in the same thread. Message content prints in full.
inf analyze-harness conversation get <conversation-id>Add --json to get the raw payload (every message, run, and trace dataset) for scripting.
inf analyze-harness schedule
Manage recurring HALO analyses. Each schedule targets one agent and fires runs on a cadence.
inf analyze-harness schedule list
inf analyze-harness schedule listAlias: inf analyze-harness schedule ls
| Flag | Required | Description | Default |
|---|---|---|---|
--include-archived | No | Include archived schedules | false |
inf analyze-harness schedule get
inf analyze-harness schedule get <schedule-id>inf analyze-harness schedule runs
List recent runs fired by a schedule.
inf analyze-harness schedule runs <schedule-id>| Flag | Required | Description | Default |
|---|---|---|---|
--limit <n> | No | Max runs to return | 50 |
inf analyze-harness schedule create
inf analyze-harness schedule create \
--title "Daily checkout-agent review" \
--agent-uuid <agent-uuid> \
--frequency daily \
--hours 9 \
--minutes 0 \
--timezone America/Los_Angeles| Flag | Required | Description | Default |
|---|---|---|---|
--title <title> | Yes | Human-readable schedule title | - |
--agent-uuid <id> | Yes | Agent the schedule analyzes (from inf analyze-harness agent list) | - |
--frequency <freq> | Yes | hourly, daily, weekly, or monthly | - |
--prompt <text> | No | Prompt steering each run | Default HALO prompt |
--hours <list> | For daily/weekly/monthly | Comma-separated hours (0–23) | - |
--minutes <list> | Yes | Comma-separated minutes (0–59) | - |
--days-of-week <list> | For weekly | Comma-separated days (0=Sun…6=Sat) | - |
--days-of-month <list> | For monthly | Comma-separated days (1–31) | - |
--timezone <tz> | No | IANA timezone | UTC |
--model-id <id> | No | Catalog HALO model id | Catalog default |
--span-limit <n> | No | Per-run span cap | 10000 |
--lookback-hours <n> | No | How far back each run looks, independent of cadence | 24 |
--max-subagent-depth <n> | No | Engine recursion ceiling (1–5) | 2 |
--max-turns <n> | No | Per-agent turn ceiling (1–100) | 20 |
--enabled <bool> | No | Whether the schedule fires | true |
inf analyze-harness schedule update
Update mutable fields on a schedule. Accepts the same flags as create (all optional), keyed by <schedule-id>.
# Pause a schedule
inf analyze-harness schedule update <schedule-id> --enabled false
# Repoint it at a different agent and widen the window
inf analyze-harness schedule update <schedule-id> --agent-uuid <other-agent> --lookback-hours 168inf analyze-harness schedule archive / unarchive
Archive a schedule so it stops firing, or restore it later.
inf analyze-harness schedule archive <schedule-id>
inf analyze-harness schedule unarchive <schedule-id>archive prompts for confirmation. Pass -y / --yes to skip the prompt.
Common workflows
# Run an analysis end-to-end and capture the report markdown to a file
RUN=$(inf analyze-harness run create --agent-uuid <agent-uuid> --json)
RUN_ID=$(echo "$RUN" | jq -r '.runId')
CONV_ID=$(echo "$RUN" | jq -r '.conversationId')
inf analyze-harness run poll "$RUN_ID"
# Extract just the original report (first assistant message) as markdown
inf analyze-harness conversation get "$CONV_ID" --json \
| jq -r '.messages | map(select(.role == "assistant"))[0].content' \
> halo-report.mdRelated commands
inf traceandinf spaninspect the underlying traces HALO analyzes.- The MCP server exposes the same reports to AI coding assistants via
list_halo_conversationsandget_halo_conversation.