pub struct Policy {Show 14 fields
pub version: u32,
pub defaults: Defaults,
pub scope: Option<Scope>,
pub deny: Vec<RuleGroup>,
pub allow: Vec<RuleGroup>,
pub ask: Vec<RuleGroup>,
pub defer: Vec<RuleGroup>,
pub approval: Option<Approval>,
pub executables: BTreeMap<String, Vec<String>>,
pub sandbox: Option<SandboxSettings>,
pub secrets: Vec<Secret>,
pub taint: Option<TaintSettings>,
pub require_signed_repo_policy: bool,
pub repo_ask: Vec<RuleGroup>,
}Expand description
The policy document (policy.yaml), as written by users.
Fields§
§version: u32Schema version; only 1 is supported.
defaults: DefaultsVerdict when no rule matches.
scope: Option<Scope>Reserved for multi-root projects; parsed so existing files stay valid,
not yet consulted (policy lint warns).
deny: Vec<RuleGroup>Evaluated first; a match is final.
allow: Vec<RuleGroup>Evaluated after deny.
ask: Vec<RuleGroup>Evaluated after allow.
defer: Vec<RuleGroup>Evaluated after ask: calls the agent’s own permission flow decides
(ADR-025). Absent in policies written before it existed.
approval: Option<Approval>Reserved for the kernel’s own approval prompt; parsed so existing files
stay valid, not yet consulted (policy lint warns).
executables: BTreeMap<String, Vec<String>>Basename → allowed absolute paths (defeats PATH poisoning).
sandbox: Option<SandboxSettings>What the operating-system layers OpenMoat configures need beyond the rules (ADR-018). Absent in policies written before it existed.
secrets: Vec<Secret>Secrets moat proxy keeps from the agent and injects for one host each.
taint: Option<TaintSettings>What session taint protects beyond the built-in list. Absent in older policies.
require_signed_repo_policy: boolTrust a repository policy only when its detached signature
(policy.yaml.sig) verifies against a key the person trusted (ADR-031):
a signed one needs no moat trust, and an unsigned one is not trusted even
after moat trust. Off by default: then only moat trust lets a
repository policy allow.
repo_ask: Vec<RuleGroup>Ask rules merged in from a repository policy (crate::RepoPolicy,
ADR-022) or a policy pack (ADR-031). Tried after deny and before
allow, so a repository can make an action the user allows ask. Never
read from or written to a file, and not lowered to OS layers, which are
generated from the user policy alone.
Implementations§
Source§impl Policy
impl Policy
Sourcepub fn package_min_release_age_days(&self) -> u16
pub fn package_min_release_age_days(&self) -> u16
The days a package version must have been published before moat run
lets npm and uv install it; 0 is off.
Source§impl Policy
impl Policy
Sourcepub fn parse(yaml: &str) -> Result<Self, PolicyError>
pub fn parse(yaml: &str) -> Result<Self, PolicyError>
Parse and lint a policy document. Pure: takes the YAML text.
Sourcepub fn lint(&self) -> Result<(), PolicyError>
pub fn lint(&self) -> Result<(), PolicyError>
Structural validation independent of any environment.
Sourcepub fn rule_count(&self) -> (usize, usize, usize)
pub fn rule_count(&self) -> (usize, usize, usize)
Number of rule groups in deny, allow and ask.