pub struct Policy {Show 22 fields
pub path: Option<String>,
pub fail_mode: FailMode,
pub allow_bypass_env: bool,
pub allow_bypass_env_noninteractive: bool,
pub paranoia: u8,
pub severity_overrides: HashMap<String, Severity>,
pub additional_known_domains: Vec<String>,
pub allowlist: Vec<String>,
pub blocklist: Vec<String>,
pub approval_rules: Vec<ApprovalRule>,
pub network_deny: Vec<String>,
pub network_allow: Vec<String>,
pub webhooks: Vec<WebhookConfig>,
pub checkpoints: CheckpointPolicyConfig,
pub scan: ScanPolicyConfig,
pub allowlist_rules: Vec<AllowlistRule>,
pub custom_rules: Vec<CustomRule>,
pub dlp_custom_patterns: Vec<String>,
pub policy_server_url: Option<String>,
pub policy_server_api_key: Option<String>,
pub policy_fetch_fail_mode: Option<String>,
pub enforce_fail_mode: Option<bool>,
}Expand description
Policy configuration loaded from YAML.
Fields§
§path: Option<String>Path this policy was loaded from.
fail_mode: FailModeFail mode: “open” (default) or “closed”.
allow_bypass_env: boolAllow TIRITH=0 bypass in interactive mode.
allow_bypass_env_noninteractive: boolAllow TIRITH=0 bypass in non-interactive mode.
paranoia: u8Paranoia tier (1-4).
severity_overrides: HashMap<String, Severity>Severity overrides per rule.
additional_known_domains: Vec<String>Additional known domains (extends built-in list).
allowlist: Vec<String>Allowlist: URL patterns that are always allowed.
blocklist: Vec<String>Blocklist: URL patterns that are always blocked.
approval_rules: Vec<ApprovalRule>Approval rules: commands matching these rules require human approval.
network_deny: Vec<String>Network deny list: block commands targeting these hosts/CIDRs.
network_allow: Vec<String>Network allow list: exempt these hosts/CIDRs from network deny.
webhooks: Vec<WebhookConfig>Webhook endpoints to notify on findings.
checkpoints: CheckpointPolicyConfigCheckpoint configuration (Pro+).
scan: ScanPolicyConfigScan configuration overrides.
allowlist_rules: Vec<AllowlistRule>Per-rule allowlist scoping (Team).
custom_rules: Vec<CustomRule>Custom detection rules defined in YAML (Team).
dlp_custom_patterns: Vec<String>Custom DLP redaction patterns (Team). Regex patterns applied alongside built-in patterns when redacting commands in audit logs and webhooks.
policy_server_url: Option<String>URL of the centralized policy server (e.g., “https://policy.example.com”).
policy_server_api_key: Option<String>API key for authenticating with the policy server.
policy_fetch_fail_mode: Option<String>Fail mode for remote policy fetch: “open” (default), “closed”, or “cached”.
enforce_fail_mode: Option<bool>Whether to enforce the fetch fail mode strictly (ignore local fallback on auth errors).
Implementations§
Source§impl Policy
impl Policy
Sourcepub fn discover_partial(cwd: Option<&str>) -> Self
pub fn discover_partial(cwd: Option<&str>) -> Self
Discover and load partial policy (just bypass + fail_mode fields). Used in Tier 2 for fast bypass resolution.
Sourcepub fn discover(cwd: Option<&str>) -> Self
pub fn discover(cwd: Option<&str>) -> Self
Discover and load full policy.
Resolution order:
- Local policy (TIRITH_POLICY_ROOT, walk-up discovery, user-level)
- Team+ only: if
TIRITH_SERVER_URL+TIRITH_API_KEYare set (or policy haspolicy_server_url), try remote fetch. On success the remote policy replaces the local one entirely and is cached. - On remote failure, apply
policy_fetch_fail_mode:"open"(default): warn and use local policy"closed": return a fail-closed default (all actions = Block)"cached": try cached remote policy, else fall back to local
- Auth errors (401/403) always fail closed regardless of mode.
Sourcepub fn severity_override(&self, rule_id: &RuleId) -> Option<Severity>
pub fn severity_override(&self, rule_id: &RuleId) -> Option<Severity>
Get severity override for a rule.
Sourcepub fn is_blocklisted(&self, url: &str) -> bool
pub fn is_blocklisted(&self, url: &str) -> bool
Check if a URL is in the blocklist.
Sourcepub fn is_allowlisted(&self, url: &str) -> bool
pub fn is_allowlisted(&self, url: &str) -> bool
Check if a URL is in the allowlist.
Sourcepub fn load_user_lists(&mut self)
pub fn load_user_lists(&mut self)
Load and merge user-level lists (allowlist/blocklist flat text files).
Sourcepub fn load_org_lists(&mut self, cwd: Option<&str>)
pub fn load_org_lists(&mut self, cwd: Option<&str>)
Load and merge org-level lists from a repo root’s .tirith/ dir.
Note: Org-level policies are committed to the repository and may be controlled by other contributors. A diagnostic is emitted so the user knows that repo-level policy is active.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Policy
impl<'de> Deserialize<'de> for Policy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Policy
impl RefUnwindSafe for Policy
impl Send for Policy
impl Sync for Policy
impl Unpin for Policy
impl UnsafeUnpin for Policy
impl UnwindSafe for Policy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more