Nous.Sandbox.Unavailable (nous v0.17.1)

Copy Markdown View Source

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

confine(list, policy)

@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.

probe(timeout_ms)

@spec probe(pos_integer()) :: {:error, :unusable}

Always {:error, :unusable} — this provider is a fallback, never the winner of a probe.