Skip to main content
Read what Mo has said in a session. By default the command returns immediately with the transcript so far. Pass --timeout to wait for Mo to finish its current turn, ask a question, or reach the time limit. Use qa wait when a script needs to wait without a time limit.

Arguments

string
required
The session to read, from the output of qa start.

Options

string
default:"0"
Maximum time to wait for new output. Accepts 0 (return immediately) or a value such as 30s, 2m, or 500ms, up to 290s. Loop the command to follow a long session.
string
default:"start"
Where to read from. start returns the whole transcript plus anything Mo says while the command waits. latest skips the existing transcript and returns only output produced while the command waits, so a polling loop does not reprint earlier messages.
boolean
Print the raw response as one JSON object instead of plain text.

Output

In plain-text mode, the command prints each message on stdout. One status message can appear on stderr:
  • Mo was stopped. when the session was stopped, for example after qa stop or a stop from the dashboard.
  • Mo has N open questions: (or Mo has 1 open question:) when Mo is waiting for answers, followed by one - <id>: <question> Options: a | b. line per card and the qa send <session-id> --question-id <id> "<answer>" command to answer each.
  • Mo is still working. when the timeout ran out before Mo finished.
With --json, the object has this shape:
status is the session’s state as the UI shows it, the same word qa status reports: running, waiting_on_agents, checking (Mo’s last outcome is unknown), needs_you, blocked, ready (Mo marked the task complete), sleeping (Mo stopped without marking it complete), cancelled (someone stopped the session), or failed. Servers running an earlier API omit status; use qa status for it on those. completed, when present, is the root agent’s explicit completion flag. A reply or a finished turn alone does not mean the overall task is complete. timedOut is true when the command returned because the timeout ran out while Mo was still working. messages entries have a role of user or assistant. pendingQuestions lists every open question card, oldest first, and pendingInput is the oldest; both are absent when no card is open. Reply with qa send; a plain send answers the oldest card, and --question-id <id> answers a specific one.

Examples

Follow a session until Mo stops working:

Notes

Reading does not remove messages from the session. For a snapshot of the session state and its findings, run qa status instead.