Skip to main content

Deterministic pre-execution authority layer for AI agents.

Project description

predicate-authority

predicate-authority is a deterministic pre-execution authority layer for AI agents. It binds identity, policy, and runtime evidence so risky actions are authorized before execution and denied fail-closed when checks do not pass.

Docs: https://www.PredicateSystems.ai/docs Github Repo: https://github.com/PredicateSystems/predicate-authority

Core pieces:

  • PolicyEngine for allow/deny + required verification labels,
  • ActionGuard for pre-action authorize / enforce,
  • LocalMandateSigner for signed short-lived mandates,
  • InMemoryProofLedger and optional OpenTelemetryTraceEmitter,
  • typed integration adapters (including sdk-python mapping helpers),
  • control-plane client primitives for shipping proof and usage batches to hosted APIs,
  • local identity registry primitives (ephemeral task identities + local flush queue).

Quick usage example

from predicate_authority import ActionGuard, InMemoryProofLedger, LocalMandateSigner, PolicyEngine
from predicate_contracts import (
    ActionRequest,
    ActionSpec,
    PolicyEffect,
    PolicyRule,
    PrincipalRef,
    StateEvidence,
    VerificationEvidence,
)

guard = ActionGuard(
    policy_engine=PolicyEngine(
        rules=(
            PolicyRule(
                name="allow-orders",
                effect=PolicyEffect.ALLOW,
                principals=("agent:orders",),
                actions=("http.post",),
                resources=("https://api.vendor.com/orders",),
            ),
        )
    ),
    mandate_signer=LocalMandateSigner(secret_key="replace-with-strong-secret"),
    proof_ledger=InMemoryProofLedger(),
)

request = ActionRequest(
    principal=PrincipalRef(principal_id="agent:orders", tenant_id="tenant-a"),
    action_spec=ActionSpec(
        action="http.post",
        resource="https://api.vendor.com/orders",
        intent="create order",
    ),
    state_evidence=StateEvidence(source="backend", state_hash="sha256:example"),
    verification_evidence=VerificationEvidence(),
)

decision = guard.authorize(request)
print("allowed=", decision.allowed, "reason=", decision.reason.value)

Entra compatibility demo (capability-gated OBO)

python examples/delegation/entra_obo_compat_demo.py \
  --tenant-id "$ENTRA_TENANT_ID" \
  --client-id "$ENTRA_CLIENT_ID" \
  --client-secret "$ENTRA_CLIENT_SECRET" \
  --scope "${ENTRA_SCOPE:-api://predicate-authority/.default}"

Local IdP quick example

from predicate_authority import LocalIdPBridge, LocalIdPBridgeConfig
from predicate_contracts import PrincipalRef, StateEvidence

bridge = LocalIdPBridge(
    LocalIdPBridgeConfig(
        issuer="http://localhost/predicate-local-idp",
        audience="api://predicate-authority",
        signing_key="replace-with-strong-secret",
        token_ttl_seconds=300,
    )
)

token = bridge.exchange_token(
    PrincipalRef(principal_id="agent:local", tenant_id="tenant-a"),
    StateEvidence(source="backend", state_hash="sha256:local-state"),
)
print(token.provider.value, token.access_token[:24] + "...")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

predicate_authority-0.3.0.tar.gz (34.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

predicate_authority-0.3.0-py3-none-any.whl (42.0 kB view details)

Uploaded Python 3

File details

Details for the file predicate_authority-0.3.0.tar.gz.

File metadata

  • Download URL: predicate_authority-0.3.0.tar.gz
  • Upload date:
  • Size: 34.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for predicate_authority-0.3.0.tar.gz
Algorithm Hash digest
SHA256 16ba444ebf1f11c92fd61f15875e1425545bd851101851646a00788a3e9b5201
MD5 e215327df25b8157421f3d5a9e964848
BLAKE2b-256 d145bea3f902897b7fd1029c608b0baba2283f3c508c071de27ba8a2e496061d

See more details on using hashes here.

File details

Details for the file predicate_authority-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for predicate_authority-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b8b94588c468d66b1e29811ff3d05afea3295276a75eef1d2706789b5d87e82
MD5 4d2e5ed29037b986d33e329ad65c178c
BLAKE2b-256 90371f185a30dff2be2fa68ef0e892b9e052852bcfd0350fc47484f20fb96327

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page