Skip to content

Thread CLI reference


Resolve, read, message, steer, answer, and act on a Workspace Thread.

Use this page to inspect every public atoi thread command, its accepted flags, and one runnable example.

atoi threadResolve, read, message, steer, answer, and act on a Workspace Thread.

CommandWhat it does
atoi thread resolveResolve a Workspace to the one Thread it drives.
atoi thread listList governed Threads in the Workspace the terminal is standing in, optionally within one Project.
atoi thread getRead one Thread and a bounded message page.
atoi thread sendSend a message and wait for its receipt-backed result.
atoi thread replyAnswer one message in a Thread and wait for its receipt.
atoi thread steerSend new direction to the reply that is running. Atoi drops its current course and answers from your words; a reply has no separate stop.
atoi thread retryRetry the last failed or stopped reply in a Thread.
atoi thread reactReact to one message with an emoji.
atoi thread answerAnswer an open question in a Thread, the same way the app card does. thread get lists them under asks. A card with more than one question takes every answer in one call: repeat --question, each followed by its own --pick or --text, or pass them all in --answers.
atoi thread approveApprove one Ask waiting in a Thread, after you read what it will do.
atoi thread denyDeny one Ask waiting in a Thread, after you read what it will do.
atoi thread launchLaunch a Task from a Thread and choose where it runs.
atoi thread objectsRead a Thread's objects in one pass: its messages, pending decisions, and open asks.
atoi thread timingsRead where the wait after each send went: the stages of a turn, in milliseconds from the moment the send was claimed. A stage nobody measured reads as a dash, never as zero.
atoi thread pinPin a Thread and read back the app-visible state.
atoi thread unpinUnpin a Thread and read back the app-visible state.

#thread resolve

Resolve a Workspace to the one Thread it drives.

atoi thread resolve [<workspace-id>] [--workspace <workspace-id>]

FlagTypeDefaultValuesWhat it does
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread resolve

bash
atoi thread resolve wsp_3f8a --json

#thread list

List governed Threads, optionally within one Project.

atoi thread list [--project <project-id>] [--workspace <id>] [--personal] [--limit <n>]

FlagTypeDefaultValuesWhat it does
--projectstringSelect a Project by id.
--workspacestringAnswer one Workspace by id for this call; without it, the Workspace the terminal is standing in.
--personalbooleanAnswer Personal for this call, whatever the terminal is standing in.
--limitnumberReturn between 1 and 200 Threads.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread list

bash
atoi thread list --project prj_8k2v --json

#thread get

Read one Thread and a bounded message page.

atoi thread get <thread-id> [--thread <thread-id>] [--workspace <workspace-id>] [--limit <n>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--limitnumberReturn between 1 and 200 messages.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread get

bash
atoi thread get thr_9c4k --json

#thread answer

Answer the Thread's open question from the terminal. thread get lists each pending question under asks with its request id and lettered options. thread answer resolves one through the same path the app card uses, so an interview that creates an Automation lands exactly as it would from the app. Pick by letter, option id, or label, and add a note with --text.

atoi thread answer <thread-id> --request <request-id> [--pick <letter|option-id>[,…]] [--text <answer>] [--question <question-id>] [--answers <question=pick,question=text:words>] [--thread <thread-id>] [--workspace <workspace-id>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--request requiredstringName the question to answer.
--pickstringChoose options by letter, id, or label; separate several with commas. After a --question, it answers that question.
--textstringAdd a written answer or a note next to the pick. After a --question, it answers that question.
--questionstringName a question inside the request. Repeat it, each with its own --pick or --text, to answer every question at once.
--answersstringAnswer every question of one request at once: question=pick or question=text:words separated by commas, or JSON such as {"time":"B","timeZone":{"text":"New York"}}.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread answer

bash
atoi thread answer thr_9c4k --request ask_6m2d --pick B --text "Only on weekdays" --json

#thread send

Send a message and wait for its receipt-backed result.

atoi thread send <thread-id> --prompt <text> [--attach <path> ...] [--thread <thread-id>] [--workspace <workspace-id>] [--model <model-id>] [--reasoning <strength>] [--context-ref <json> ...] [--context-refs <json-array>] [--reply-to <message-id>] [--delivery-id <key>] [--idempotency-key <key>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--prompt requiredstringSet the message text.
--attachpathSend a file with the message. Repeat the flag for more. Images, text, PDF, and JSON, 25MB each.
--modelstringSelect a model id.
--reasoningstringdefault, none, minimal, low, medium, high, xhigh, maxSelect the model reasoning strength.
--context-refjsonAttach one context reference as JSON. Repeat the flag for more.
--context-refsjsonAttach an array of context references as JSON.
--reply-tostringAnswer one message by id.
--delivery-idstringSet the exact delivery identity.
--idempotency-keystringReuse a mutation identity when you safely retry the same action.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread send

bash
atoi thread send thr_9c4k --prompt "Summarize the release blockers." --delivery-id msg_release_1 --json

#thread reply

Answer one message in a Thread and wait for its receipt. Name the message with --reply-to.

atoi thread reply <thread-id> --prompt <text> --reply-to <message-id> [--attach <path> ...] [--thread <thread-id>] [--workspace <workspace-id>] [--model <model-id>] [--reasoning <strength>] [--context-ref <json> ...] [--context-refs <json-array>] [--delivery-id <key>] [--idempotency-key <key>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--prompt requiredstringSet the reply text.
--reply-to requiredstringName the message you are answering.
--attachpathSend a file with the message. Repeat the flag for more. Images, text, PDF, and JSON, 25MB each.
--modelstringSelect a model id.
--reasoningstringdefault, none, minimal, low, medium, high, xhigh, maxSelect the model reasoning strength.
--context-refjsonAttach one context reference as JSON. Repeat the flag for more.
--context-refsjsonAttach an array of context references as JSON.
--delivery-idstringSet the exact delivery identity.
--idempotency-keystringReuse a mutation identity when you safely retry the same action.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread reply

bash
atoi thread reply thr_9c4k --reply-to msg_2v7b --prompt "Use the staging database." --json

#thread steer

Send new direction to the reply that is running. Atoi drops its current course and answers from your words. Use this when Atoi is working on the wrong thing and you do not want to wait for it to finish. A reply has no separate stop: steering is how you change it. A Task keeps its own stop, atoi task cancel.

atoi thread steer <thread-id> --prompt <text> [--attach <path> ...] [--thread <thread-id>] [--workspace <workspace-id>] [--model <model-id>] [--reasoning <strength>] [--context-ref <json> ...] [--context-refs <json-array>] [--reply-to <message-id>] [--delivery-id <key>] [--idempotency-key <key>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--prompt requiredstringSet the new direction.
--attachpathSend a file with the message. Repeat the flag for more. Images, text, PDF, and JSON, 25MB each.
--modelstringSelect a model id.
--reasoningstringdefault, none, minimal, low, medium, high, xhigh, maxSelect the model reasoning strength.
--context-refjsonAttach one context reference as JSON. Repeat the flag for more.
--context-refsjsonAttach an array of context references as JSON.
--reply-tostringAnswer one message by id.
--delivery-idstringSet the exact delivery identity.
--idempotency-keystringReuse a mutation identity when you safely retry the same action.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread steer

bash
atoi thread steer thr_9c4k --prompt "Start from the failing test instead." --json

#thread retry

Retry the last failed or stopped reply in a Thread.

atoi thread retry <thread-id> [--thread <thread-id>] [--workspace <workspace-id>] [--model <model-id>] [--reasoning <strength>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--modelstringSelect a model id.
--reasoningstringdefault, none, minimal, low, medium, high, xhigh, maxSelect the model reasoning strength.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread retry

bash
atoi thread retry thr_9c4k --reasoning high --json

#thread react

React to one message with an emoji. Pass --reaction to say whether the emoji is added, removed, or toggled.

atoi thread react <thread-id> --message <message-id> --emoji <emoji> [--thread <thread-id>] [--workspace <workspace-id>] [--reaction <intent>] [--idempotency-key <key>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--message requiredstringName the message to react to.
--emoji requiredstringSet the emoji to apply.
--reactionstringadd, remove, toggleChoose what the reaction does.
--idempotency-keystringReuse a mutation identity when you safely retry the same action.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread react

bash
atoi thread react thr_9c4k --message msg_2v7b --emoji check --json

#thread approve

Approve one Ask waiting in a Thread. Read what the Ask will do before you answer it, then pass --confirm. Add --always to approve that kind of action from now on.

atoi thread approve <thread-id> --request <request-id> --confirm [--thread <thread-id>] [--workspace <workspace-id>] [--always]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--request requiredstringName the Ask to answer.
--alwaysbooleanApprove this kind of action from now on.
--confirm requiredbooleanConfirm the exact consequential action after you inspect its target.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread approve

bash
atoi thread approve thr_9c4k --request ask_6m2d --confirm --json

#thread deny

Deny one Ask waiting in a Thread. Denying stops that action and leaves the Thread where it was.

atoi thread deny <thread-id> --request <request-id> --confirm [--thread <thread-id>] [--workspace <workspace-id>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--request requiredstringName the Ask to answer.
--confirm requiredbooleanConfirm the exact consequential action after you inspect its target.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread deny

bash
atoi thread deny thr_9c4k --request ask_6m2d --confirm --json

#thread launch

Launch a Task from a Thread. Atoi asks where the Task should run unless you name a place, and the answer comes back as a placement request you can rerun with --place. A Computer set to Ask is allowed only by you, signed in to Atoi, so the request for one names where to allow it instead.

atoi thread launch <thread-id> --prompt <text> [--thread <thread-id>] [--workspace <workspace-id>] [--project <project-id>] [--title <title>] [--model <model-id>] [--profile <profile>] [--place <where>] [--computer <computer-id>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--prompt requiredstringState the outcome the Task should reach.
--briefstringGive the prompt under its older name.
--projectstringSelect a Project by id.
--titlestringName the Task.
--modelstringSelect a model id.
--profilestringSelect the safety profile the Task runs under.
--placestringChoose where the Task runs: none, cloud, host, or a computer name.
--computerstringName the computer when the place is host.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread launch

bash
atoi thread launch thr_9c4k --prompt "Ship the release notes." --place cloud --json

#thread pin

Pin a Thread and read back the app-visible state.

atoi thread pin <thread-id> [--thread <thread-id>] [--workspace <workspace-id>] [--idempotency-key <key>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--idempotency-keystringReuse a mutation identity when you safely retry the same action.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread pin

bash
atoi thread pin thr_9c4k --json

#thread unpin

Unpin a Thread and read back the app-visible state.

atoi thread unpin <thread-id> [--thread <thread-id>] [--workspace <workspace-id>] [--idempotency-key <key>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--workspacestringSelect the Workspace whose one Thread to act on, instead of a Thread id.
--idempotency-keystringReuse a mutation identity when you safely retry the same action.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread unpin

bash
atoi thread unpin thr_9c4k --json

#thread objects

Read a Thread's objects in one pass: its messages, pending decisions, and open asks.

atoi thread objects [<thread-id> | --thread <thread-id>] [--limit <n>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--limitnumberRead at most this many messages.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread objects

The MCP tool reads a Thread through get; objects is the terminal's one-pass read.

bash
atoi thread objects thr_9c4k --json

#thread timings

Read where a send's time went, stage by stage, for a Thread's recent turns.

atoi thread timings [<thread-id> | --thread <thread-id>] [--limit <n>]

FlagTypeDefaultValuesWhat it does
--threadstringSelect a Thread by id instead of a positional id.
--limitnumberRead at most this many sends.
--jsonbooleanfalseEmit the canonical JSON envelope.
--ndjsonbooleanfalseEmit one canonical JSON envelope per line.
--formatstringtexttext, jsonChoose human text or the JSON envelope.
--help -hbooleanShow command help.

#Run thread timings

Each stage prints the elapsed time from the claim and, in brackets, what that stage itself cost. The bracketed number is the one that names what to fix: a large elapsed time usually inherits from the stage before it, while a large own cost is the stage to look at.

bash
atoi thread timings thr_9c4k --limit 5 --json

Read Run work from the terminal for the rest of this group, or the CLI reference index for every command.

Was this useful?