Sandbox boundaries on Windows

While DataMind Oda works on your computer, it runs commands under a file sandbox, and on Windows that sandbox limits file changes only. This page collects the boundaries a confined command meets on Windows: what the limits cover, what commands can and cannot do, what stays on your folders afterwards, and how a sandbox failure is told apart from a failure of the command itself. For the modes themselves, see Sandbox modes and file policy; for a denied change and the one wider retry, see When Oda is denied access.

What the limits cover

What commands can and cannot do

What the command triesWhat happens
Read a file your account can readWorks, wherever the file is
Change or delete files in the workspace (in Workspace Write)Works
Change or delete files anywhere elseDenied
Write into the computer's shared temporary foldersDenied; the session's private temporary folder is writable instead
Write into the shared Public folder (for example C:\Users\Public)Denied in both confined modes
Query system information with Get-CimInstance or Get-ComputerInfoFails in both confined modes
Open a file another program protects for its app containerFails
Capture another program's output through a pipeFails
Chain commands with a pipeWorks
Discard output with > NUL or > $nullWorks
Start in a console of its ownNot available; the command shares the console it was started from

What the limits cannot cover

What stays on your computer

The sandbox does not take its work on your folders back when a session ends:

Sandbox failures and command failures

A confined command's result can end in one of three ways: the command ran, the mode denied a change, or the sandbox itself failed and the command never ran. Denied changes are covered in When Oda is denied access; this section covers the third case on Windows.

Questions, answered

Why can't a confined command open a file that opens fine for me?

Reading is not limited in general: a confined command can read any file your account can read. The exception is files another program has protected for its own app container; a confined command cannot open those, even though they open normally for you. The entry belongs to the file, not to the sandbox, and removing it restores access.

Why do system information commands fail in the sandboxed modes?

Commands that query Windows' management service (WMI), such as Get-CimInstance or Get-ComputerInfo, fail in both confined modes: the confined context is not allowed to ask that service. A few reporting commands, such as whoami, may also fail on some computers; treat those failures as noise about the reporting, not as a problem with the command's work.

Why does a command that starts a program with captured output fail?

The pipe used to capture another program's output is a named pipe, and a confined command is not allowed to open one, so an attempt to capture a started program's output fails with a permission error. Starting a program with shared or discarded output works, and commands chained with a pipe still work.

Why does PowerShell start in a restricted language mode?

In Read Only, PowerShell cannot create the probe files its startup check needs, so it starts in its restricted language mode (ConstrainedLanguage); scripts that use Add-Type, COM, reflection or non-core .NET calls fail there. In Workspace Write it starts normally, unless the computer's own policy says otherwise.

Why can't a command write to the shared Public folder?

The shared Public folder (for example C:\Users\Public) normally lets any signed-in user write. The sandbox removes that allowance for confined commands, so writes into it are denied in both confined modes. In Workspace Write, use the workspace folder instead.

What temporary folders can a confined command use?

In Workspace Write, the command gets a private temporary folder of its own: its TEMP and TMP settings point there, and that folder is writable. The computer's shared temporary folders are not writable to it, and no session can write into another session's private folder. In Read Only, no temporary folder is writable.

Which ways of discarding output still work?

Writing to the NUL device works in both confined modes, so command > NUL still silences output, and PowerShell's > $null works as well. One form, Set-Content NUL, fails in both modes.

What stays on the workspace folder after a session?

The write permission added to the folder stays, and so does a reduced-integrity mark on it; both stay after DataMind Oda closes, and they are kept on purpose so later sessions reuse them. While the mark is there, other programs that run with reduced rights under your account can change files in the folder. A manual attempt to remove the entries does not work; the sandbox manages them.

Why did a file outside the workspace change?

Because the file has a second name inside the workspace: a hard link is one file with two names, so a change made through the workspace name changes it at the other name too. The limits follow the file, not the folder, and this boundary cannot be closed.

What does a windows-acl-run: line in a command's output mean?

It means the sandbox itself failed on this computer before the command could run: the command did not run, nothing was changed, and the reported exit code is 127. Treat it as a sandbox problem, not as a command failure; without such a line, an exit code is the command's own result.