The fail-closed default provider: it confines nothing and admits it.
Nous.Sandbox.backend/0 selects this module when the platform chain is empty
(Windows) or when every candidate provider fails to probe clean. Every
confine/2 call returns {:error, {:sandbox_unavailable, mode, nil}}, so a
caller that wanted confinement is forced to refuse the spawn rather than
quietly run the command unfenced. Silent unconfined passthrough is never
legal; :danger_full_access is the explicit, auditable way to ask for none.
That includes :danger_full_access itself. Nous.Sandbox.confine/2 short
circuits that mode before any provider is consulted, so a provider seeing it
means a caller bypassed the dispatch — a bug, not a licence to pass argv
through untouched.
Summary
Functions
Always refuse: {:error, {:sandbox_unavailable, policy.mode, nil}}.
Always {:error, :unusable} — this provider is a fallback, never the winner
of a probe.
Functions
@spec confine([String.t()], Nous.Sandbox.Policy.t()) :: {:error, Nous.Sandbox.error()}
Always refuse: {:error, {:sandbox_unavailable, policy.mode, nil}}.
Uniform across all three modes, on purpose. See the moduledoc.
@spec probe(pos_integer()) :: {:error, :unusable}
Always {:error, :unusable} — this provider is a fallback, never the winner
of a probe.