Sandboxing and command limits

While DataMind Oda works, it runs commands on your computer. Whenever the chat's access mode limits file changes, every command runs inside a file sandbox: it checks the changes the command makes, stops one the mode does not allow, and lets Oda ask you for a single wider retry. This page describes the sandbox levels, what a denial and a sandbox failure look like, and that retry. To choose the mode itself, see Workspaces, files and permissions.

What each level allows

The chat's access mode sets which level a command runs under:

LevelWhat a command may change
Read OnlyNo file may be changed. Writes to the system's discard device still work (/dev/null on macOS and Linux, NUL on Windows), so a command that discards its output keeps working.
Workspace WriteFiles under the chat's workspace folder, plus the temporary area the system gives the chat, including /tmp on macOS and Linux.
Full accessAnything the command can reach. No file limits are applied.

When a change is not allowed

When a command tries to change a file the level does not allow, the sandbox stops that change:

The one wider retry

After a denial, and only after one, Oda may retry the exact same command once with wider access:

  1. Oda asks for the narrowest wider level that can work, with a one-sentence reason. A retry can only widen: from Read Only to Workspace Write or Full access, and from Workspace Write to Full access.
  2. Nothing runs before your answer. If you allow it, exactly that one command runs at the wider level, and the result reports the level it actually ran under.
  3. The widening covers that one command: the chat keeps its mode, and the next command that needs it asks again.
  4. A refusal is final for that command. Oda does not ask again for it, and continues with the task another way.

When Oda needs more access shows the choices on the approval card and how far a retry can widen.

When the sandbox cannot run

Sometimes the sandbox itself cannot do its job, and Oda does not hide it:

Important

Oda never drops the file limits to make a command run. When the limits cannot be applied, the command is refused, or it runs only after you allow that one command without them.

What else applies to every command

File limits are not the only limits on a command. The same limits apply whatever the mode:

These values can be changed while Oda runs; a change applies to later commands with no restart. The command environment covers where to change them and what every command receives.

On Windows

The levels work on Windows too, with a few things worth knowing:

Questions, answered

What does it mean when a result says the sandbox runner itself failed?

The sandbox could not run the command at all, so the command did not run and nothing was changed. The note adds that this is a sandbox problem, not a command failure: the fault is in the sandbox on this computer, not in the command. Oda can try again, or continue another way.

Why does a command that writes to /dev/null still work in Read Only?

Discarding output changes nothing, so the system's discard device stays writable in Read Only, and commands that send output to /dev/null (or NUL on Windows) keep working. Every file change is still denied.

Does the sandbox limit what a command can read or use on the network?

No. The levels limit file changes only. Reading is not restricted by the mode, and a command's network use is outside the sandbox. The Windows section above has one caveat about reads.

How many times can Oda retry a command the sandbox stopped?

Once. After a denial, Oda may retry the exact same command a single time with the narrowest wider level. If you refuse, or nothing can ask you, that is final for the command: Oda does not ask again, and continues another way.

Can Oda widen access when nothing was denied?

No. The one retry exists for a command the sandbox denied; a wider request comes only after a denial. A command that fits the chat's mode runs without any request, and Oda asks for your answer only when something goes wider than the mode.

How do I know which level a wider retry actually ran under?

After you allow a retry, the result reports the level the command actually ran under.

Why does the step say the limits could be applied only partly?

Some computers apply the limits only partly, and every step records how completely they could be applied. A partial result does not mean the limits were dropped: changes the level does not allow are still denied.

Do Oda's own file changes run under the same limits as commands?

Yes. One file sandbox stops changes under these levels, whether the change comes from a command or from Oda's own file steps. File safety and error messages covers the file side.

Why can a command fail to open a folder on Windows while reading is not limited?

A command under a limited level runs in a more restricted context on Windows. A folder whose access rules do not include that context can fail to open, even though the levels themselves do not limit reading. Every step records how completely the limits could be applied.