Loading the documentation…
While DataMind Oda works on a task, it sometimes runs a command on your computer: a small program in Bash or PowerShell that starts, does its work, returns its output, and ends. This page covers how those commands run, how each one appears in your chat, and how to read what comes back. Your own terminal in the side panel is a separate surface, described in The terminal.
Each command appears in the chat as a step row: a one-line summary to scan, and a terminal card to expand for the output. The general model of step rows is described in Oda's steps and tool results.
To read the card:
The card also shows the working folder the command ran in, tidied for reading: an absolute folder is shown as it is, and a relative one is resolved under the chat's workspace folder. . and . are collapsed, and a path that climbs above the drive's root is dropped. A network share keeps its full root.
When the card cannot be drawn from the recorded result, the row falls back to simpler forms:
When Oda sends input into a running terminal, the row names the terminal it wrote into, for example Terminal pty-3. A send that carries no text of its own reads (send input).
When a command ends, its result carries the output: the ordinary output first, then a [stderr] section with the error output when the command has any. A short note at the end says how it ended. The notes you may see:
| Note | What it means |
|---|---|
[exit code: N] | The command finished and reported this code. Zero means it succeeded; any other number means it reported a failure. |
[killed by signal: X] | A signal ended the command instead of a normal exit. Signals are reported on macOS and Linux. |
[timed out after <n>ms] | The command reached its time limit before it finished. |
[stopped: <reason>] | The command was stopped from outside, and the reason says why. Oda reads the note as a stop, not as a failure of the command, so it does not retry the command on its own. |
(no output) | The command returned nothing. |
[output truncated; full output: <path>], or [some output was dropped from memory; full output: <path>] when the app had to drop part of the output before it was read. The full text, up to 64 MiB, is saved to the file the note names; ask Oda to open it, or to search inside it, when you need the rest.When a command is still running at its time limit, Oda does not kill it. The command moves to a background job and keeps running while the chat carries on. The limit is two minutes by default, and Oda can give a single command up to ten minutes.
[still running after <n>ms; moved to background job <id>], with the note that the command keeps running, that Oda is told when it finishes, and that Oda reads newer output with job_output and stops the job with job_kill.started background job <id>.finished [status: completed, exit code: 0], and Oda collects what came back. A later read returns only newer output; what was already collected is not repeated.killed before exit, or names the signal that ended it.belongs to another session. Background jobs: limits and lifecycle describes how jobs are owned, kept and limited.run_in_background is disabled for this deployment. Ask Oda to run the command in the foreground instead; its time limit applies as usual.tool call aborted before dispatch. A step stopped while its command runs reports tool call aborted, and the command does not continue.[exit code: 1] and no signal; treat it as an interruption, not a failure the command reported.param(. . . ), #requires or using, cannot run as written; it works when wrapped in a block or kept in a file and run from there.Yes. Every command is a fresh run, so the folder it ran in and the variables it set do not carry over to the next command. For a task where each command should build on the one before, Oda keeps a shell alive instead; see Persistent shells.
Oda does not kill a command at its time limit. Instead, it hands the command over to the background as a job, so the command keeps running while the chat carries on. The step reports the hand-over, and Oda is told when the job finishes. The limits applied to commands are described in Command environment and containment.
Ask Oda for its output. Oda reads newer output with job_output, and when the job finishes the notice reads finished [status: completed, exit code: 0]. A read returns only what has arrived since the last one.
Press Stop in the message box while the step runs, or ask Oda to stop the background job with job_kill. A command stopped from outside reads [stopped: <reason>], with the reason saying why, and Oda does not retry it on its own.
Because the command itself ended with a non-zero exit code or a signal, and Oda reports that on the row. The step still settles, and the card still reads done: the card says the command finished, the row says how it ended.
A result too big to keep in the chat is stored in a file, and its row shows the plain IN and OUT block instead of a terminal card. Those blocks never show an exit-code pill; ask Oda to read the stored result if you need to check the ending.
The row for a background start is only an acknowledgement, not a result: it stays collapsed and has nothing to expand. The command runs on while the chat continues; ask Oda for its output.
Background runs are switched off in this installation. The option is not offered, and a request that still asks for one is refused with run_in_background is disabled for this deployment. Ask Oda to run the command in the foreground instead.
On Windows, a command that is force-stopped has no signal to report, so it reads [exit code: 1]. That is how an interruption shows there, not a failure that the command reported.
Before a command runs, Oda sets up its text handling, and that setup comes before the command itself. A first statement that must come first, such as param(., #requires or using, cannot run that way; the script works when kept in a file and run from there, or wrapped in a block.
The command produced more output than the result keeps. Oda saves the full text to a file, and the note names it: the note says the output was truncated, or that some of it was dropped from memory. Ask Oda to open the file, or to search inside it, when you need the missing part.
tool call aborted mean?The step was stopped before it could finish, so it has no result, and the command does not continue. If it was stopped before the command was sent, the report reads tool call aborted before dispatch instead. Ask Oda to run it again if you still need it.