Skip to content
Reference

m3.policy ​

Signatures use ... for factory-backed or opaque defaults. Model field tables show required status, defaults, constraints, and descriptions.

ConfirmationHook ​

python
m3.policy.ConfirmationHook(
    *args,
    **kwargs,
)

ToolDescriptor ​

python
m3.policy.ToolDescriptor(
    *,
    server: str,
    name: str,
    destructive: bool = False,
) -> None

A qualified advertised tool identity used during preflight.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstrYes—min_length=1, max_length=256—
namestrYes—min_length=1, max_length=256—
destructiveboolNoFalse——
  • qualified_name (property)

ToolPolicyDecision ​

python
m3.policy.ToolPolicyDecision(
    *,
    allowed: bool,
    requires_confirmation: bool = False,
    reason: str,
    evidence: m3.policy.ToolPolicyEvidence,
) -> None

Decision for one qualified tool call.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
allowedboolYes———
requires_confirmationboolNoFalse——
reasonstrYes———
evidencem3.policy.ToolPolicyEvidenceYes———

ToolPolicyEvidence ​

python
m3.policy.ToolPolicyEvidence(
    *,
    requested: str,
    enforced: str | None = None,
    observed: str | None = None,
    unavailable: tuple[str, ...] = (),
    portable: bool = True,
    nonportable_reason: str | None = None,
) -> None

Truthful requested/enforced/observed policy status.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
requestedstrYes———
enforcedstr | NoneNoNone——
observedstr | NoneNoNone——
unavailabletuple[str, ...]No()——
portableboolNoTrue——
nonportable_reasonstr | NoneNoNone——

ToolPolicyEvaluator ​

python
m3.policy.ToolPolicyEvaluator(
    tools: _Iterable[ToolDescriptor],
) -> None

Evaluate portable and explicitly native tool policies.

  • tools (property)
python
preflight(
    self,
    policy: _ToolPolicy,
    *,
    harness_name: str,
    supports_enforcement: bool,
) -> ToolPolicyEvidence
python
decide(
    self,
    policy: _ToolPolicy,
    descriptor: ToolDescriptor,
    *,
    harness_name: str,
    supports_enforcement: bool,
    confirm: ConfirmationHook | None = None,
) -> ToolPolicyDecision

evaluate_tool_policy ​

python
m3.policy.evaluate_tool_policy(
    policy: _ToolPolicy,
    tools: _Iterable[ToolDescriptor],
    *,
    harness_name: str,
    supports_enforcement: bool,
) -> ToolPolicyEvidence

Run policy preflight and return only truthful usage evidence.