Nous.Sandbox.Confined (nous v0.17.1)

Copy Markdown View Source

The result of Nous.Sandbox.confine/2: an argv to spawn plus the data needed to interpret what comes back.

Enforcement is data, not behaviour. A provider states which mechanism it wrapped the argv with and which output patterns mean "denied" or "the runner broke"; Nous.Sandbox.classify/3 is a pure function over that data. This is what keeps a cross-backend signature from matching: a bwrap-confined command carries only bwrap's signatures, so Seatbelt's "operation not permitted" never applies to it.

Summary

Types

The mechanism that wrapped the argv. :none means the argv was passed through unconfined (:danger_full_access only).

t()

Types

enforcement()

@type enforcement() :: :sandbox_exec | :bwrap | :none

The mechanism that wrapped the argv. :none means the argv was passed through unconfined (:danger_full_access only).

t()

@type t() :: %Nous.Sandbox.Confined{
  argv: [String.t()],
  denial_signatures: [String.t()],
  enforcement: enforcement(),
  mode: Nous.Sandbox.Policy.mode(),
  runner_failure_rules: [Nous.Sandbox.RunnerFailureRule.t()]
}