Control plane · the injection backstop

Injection backstop.
Outside the model.

Praxom is the policy decision point for agent actions. It does not ask the model to behave — it evaluates the proposed tool call against steward-confirmed state, then signs the decision.

Attestation ledger · Praxom
proposed_action
crm.bulk_export_contacts(scope="ORG-DEMO-001")
agent_claims (ignored)
"User approved export for quarterly review."
model_state
No steward approval · injection markers in tool args · PII fields unmasked
verdict
DENY
ed25519 signature · prev-hash
sig_5K2y8zP9L…e81a · prev 77b0…40dd
anyone can verify$ pramiti-mcp-verify check
Injection backstop · staged incident · synthetic data

Agent claims are not evidence

Side-by-side: what the agent said vs what the gate evaluated. Enforcement keys off confirmed model state — not agent self-reports.

01 · what the agent claimed
crm.bulk_export_contacts(…)

“User approved — export contacts for the quarterly board pack.”

02 · what the model knew

No steward approval · injection tokens in args · export target = public channel

DENYsigned · fail-closed

The injection can change the agent's mind; it cannot change the ledger.

Verdict set

Five outcomes. One decision path.

ALLOWDENYREWRITEWARNESCALATE

Three of them, played out on synthetic scenarios:

attestation ledger · live scenarios · synthetic data
proposed_action
salesforce.bulk_export(all_contacts) → external-webhook.io
agent_claims (ignored)
"Routine backup sync."
model_state
Touches PII · destination outside org · irreversible
verdict
DENY
Blocked before execution. Policy PS-011, fail-closed. The claim was never consulted.
Enforcement pipeline

Ordered slots before execution

Nine slots stand between a proposed action and execution, and any one of them can stop it. The cheap checks run before any expensive reasoning — a deny never pays for reasoning — and every slot is synchronous and IO-free by design invariant.

  1. Kill switch
    Workspace hard-stop. Checked before identity, before anything — a killed workspace executes nothing.
  2. Identity
    Caller resolved to a registered agent and trust tier — AWS IAM, Azure MSI, or SPIFFE workload identity.
  3. Scope
    Is this tool inside the agent's granted task scope? Out-of-scope proposals stop here.
  4. Leases
    A valid, unexpired task lease must cover the action. Expired lease, no action.
  5. Budgets
    Per-agent USD and action-count ceilings. Budget-velocity spikes auto-suspend the agent.
  6. Tool pin
    The tool schema must match the version that was reviewed — swapped or mutated tools are refused.
  7. Policy + taint
    Business rules evaluated deterministically — JSON predicates and formal SHACL shapes — with data-taint state feeding the decision so read-sensitive-then-exfiltrate paths are blocked.
  8. Rewrite
    Where policy allows with changes: cap amounts, mask fields, set safe defaults — the original preserved in the record.
  9. Attest
    Ed25519-signed, hash-chained record of the decision. Every path through the gate ends here — allowed or not.

Budgets here are enforcement, not observability: per-agent USD and action-count ceilings stop loop burn before it reaches your cloud bill, auto-suspend catches budget-velocity spikes, and a DENY never pays for the bad tool call. The blast radius being protected is your P&L, not ours.

What ships with the gate

Evidence, export, and the off switch

Attestation chain

Ed25519-signed, hash-chained, WORM-anchored. Independently verifiable with the open-source pramiti-mcp-verify CLI (SEP-2828).

SIEM export

OCSF export to Splunk HEC and Microsoft Sentinel — delivered via transactional outbox, into the rest of your security stack.

Kill switch & break-glass

Stop all actions instantly with a workspace hard-stop. The emergency override exists — but it is scoped, signed, and logged.

SDK wrappers

Drop-in guard decorators for LangGraph, AutoGen, and CrewAI — or plain MCP. One integration point, every action gated.

See the gate deny an injected action.

CISO path: a live walkthrough on your own scenarios. Builders: point the free scanner at your MCP setup first.

Request a demoFree MCP scan