Command environment and containment

While DataMind Oda works on a task, it runs commands on your computer, and every other program it starts uses the same machinery: the language servers it starts for code navigation, the shells kept alive between commands, and the helper programs behind delegated work. This page covers what those programs see of your settings, how a command is started and held together, and what happens to it and its output when the work ends.

What Oda runs, and under what limits

What a command sees of your environment

How a command starts

How a command is held and stopped

What is kept of a command's output

When Oda stops or closes

Questions, answered

Does a command see my passwords and keys?

No. Each command starts from a cleaned copy of your computer's settings, and names that look like credentials, such as keys, passwords, secrets and tokens, are left out, as are Oda's own working values. The cleaning reads names and not values, so a secret kept under an unrelated name is not covered; when a step deliberately hands a value over, it still arrives.

Which programs does Oda start on my computer?

The commands it runs in a chat, the language servers it starts for code navigation, the shells it keeps alive between commands, and the separate programs behind delegated work. They all start through the same machinery, and each one is held together with everything it starts.

How is a command different from a terminal session?

A command runs once: it starts, does its work, returns its output and ends. A terminal session is an interactive shell that stays open while Oda types into it and reads what comes back; Terminal sessions covers those.

Why did a program fail to start on Windows?

A program that cannot start reports spawn <program> <code>, with a short code such as ENOENT. A failure with no known short code reports spawn <program> UNKNOWN (Windows error <number>); the number and any text after it carry the system's own reason, for example a security policy that blocks the program. Nothing ran.

When a command is stopped, does everything it started stop too?

Yes. A command and everything it starts are held as one managed range. Stopping the work asks the whole range to stop, and forces anything still running after a short grace period.

Can I still read a command's full output after it ends?

Yes. When the complete output is written to a file while the command runs, the file stays after the command ends, so Oda can read it back or search inside it when you ask. It sits in a folder only your user account can open; Large results and spill files covers where such files live and when they are cleared up.

Why did part of an earlier output come back incomplete?

The run keeps a window of the most recent output. Once older output slides out of that window, a read that starts from before it cannot return the missing part, so Oda returns what is still held and says the read is lossy. Treat the result as partial.

What happens to running commands when Oda closes or crashes?

When you quit Oda, or when it exits through an error it can catch, it stops the commands it manages before leaving. A forced kill, an out-of-memory stop, or a crash below the app cannot be caught from inside Oda, so those cases are left to the operating system, or an outside supervisor, to clean up.

Could my command be started a second time when containment falls back?

No. Oda never starts a command a second time through the weaker fallback: once the stronger path may have started it, it is not replayed. A command that ran under the fallback ran that way from the start.