Your agent. Your customer's rules.

Building separate controls for every customer doesn't scale. Embed Boundri once. Each customer sets its own rules and picks the regulations that apply to them. Every action is checked against both before it runs, and each decision leaves a tamper-evident record.

Regulation

DORA

Reg. (EU) 2022/2554, Art. 9(4)(c)

Hold physical and logical access to information and ICT assets down to what legitimate, approved functions and activities actually require, and run the access rights behind that on a proper set of policies, procedures and controls.

Official document
32022R2554
Also required by
RTS 2024/1774 Arts. 21(a), 33(a)
Source sentence, sha256
0b9047311350

Customer policy

The customer's own rule

Changing a vendor's bank account requires manager approval.

Your agent's action
vendors.update_vendor_bank
The regulation calls it
dora_outside_least_privilege_scope

Decision record

vendors.update_vendor_bank

DENY

The customer's approval was outranked by the regulation.

Agent
agent-payops-001
Decided
2026-09-19 09:14:07 UTC
Rule
deny_outside_least_privilege
Cites
Art. 9(4)(c)
Chain hash
04d6e2bbb23e

Works where your agent already works.

  • LangGraph
  • OpenAI Agents
  • Claude Agent SDK
  • LangChain
  • CrewAI
  • MCP
  • Any OPA

Six steps from a regulation to a decision you can prove.

A rule starts as a sentence: a line in a regulation, or a line in your customer's own policy. It ends as an answer your agent gets back before it acts: yes, no, or ask a person first. Six steps sit in between, and each one leaves something you can show an auditor.

The six steps, and who does each oneYou register your agent in Scope. Your customer chooses its Obligations and Binds them to your agent's actions. Boundri Compiles both into one signed rule set. Your runtime Enforces it, and both sides share the Evidence.YouYour customerBoundriBoth sides1Scope2Obligations3Bind4Compile5Enforce6Evidence
  1. Scope

    You

    Register your agent and list what it can do.

    Agentsigned
    id
    agent-payops-001
    role
    accounts_payable_agent

    What it can do

    • payments.read_invoice
    • vendors.read_vendor
    • payments.pay_invoice
    • payments.issue_refund
    • vendors.update_vendor_bank
    • vendors.delete_vendor
  2. Obligations

    Your customer

    Your customer picks the regulations that apply to it, then adds rules of its own. Rules written from DORA, the EU AI Act and GDPR are ready to pick. A regulation can only add limits, never remove them.

    Obligation dora.9.4.c
    citation
    Reg. (EU) 2022/2554, Art. 9(4)(c)
    document
    32022R2554
    quote sha256
    0b9047311350...
    disposition
    floor
    co-required by
    RTS 2024/1774 Arts. 21(a), 33(a)

    A rule of its own

    • Changing a vendor's bank account requires manager approval.
  3. Bind

    Your customer

    Your customer says which of your agent's actions each rule covers.

    Declaration
    operation
    vendors.update_vendor_bank
    classification
    dora_outside_least_privilege_scope
    means
    Beyond least privilege, need-to-know or need-to-use

    Rules that now cover it

    • deny_outside_least_privilege
    • Changing a vendor's bank account requires manager approval.
  4. Compile

    Boundri

    Every rule and your action list become one signed rule set.

    Signed manifestsigned
    framework
    dora
    bundle_edition
    2026.1
    warranty
    faithful_interpretation
    signed by
    pub_52b020fa768f
    bundle_sha256
    pinned in the signed core
  5. Enforce

    Your runtime

    Your agent asks before it acts. It gets back yes, no, or ask a person.

    Decisions
    deny_outside_least_privilege
    deny · Art. 9(4)(c)
    escalate_incompatible_duty_combination
    wait for approval · RTS 2024/1774 Art. 21(b)
    deny_unidentifiable_principal
    deny · RTS 2024/1774 Art. 21(c)
    log_logical_access_event
    allow with duty · RTS 2024/1774 Art. 12(2)(c)(i)
  6. Evidence

    Both sides

    Every answer is written down with the rule that produced it.

    boundri bundle verify --file
    Verification
    PASS (signature verified)
    Edition
    2026.1
    Coverage
    4 of this bundle's 177 in-scope obligations are runtime-decidable (4 floor, 0 template); 173 not runtime-decidable

Build it once. Every customer still gets it their way.

No policy engine to build. No per-customer work. No new release when a customer changes its mind.

You

  1. One hook in the framework you already use.
  2. Publish what your agent can do. Boundri signs the list, so every customer sees the same one.
  3. Ship. Each customer's rules apply to your agent with no change on your side.

Your customer

  1. Reads your agent's list of actions and accepts it.
  2. Writes its own rules: its limits, its approvers, the regulations it answers to.
  3. Can pause your agent in its own account at any time. No other customer notices.

Boundri

  1. Turns the customer's rules, its regulations and your action list into one signed rule set.
  2. Answers every action your agent tries with allow, deny or wait for approval. The customer's rules stay private.
  3. Writes down every answer in a log anyone can check on their own machine.

When the model gets it wrong, the rules still decide.

Boundri checks what the agent does, not what the model meant. An invented tool, a role it was never given, a service that falls over: all refused, none let through. And you can check every decision yourself.

  1. The decision is made by fixed rules, not by AI.

    A refused action never reaches your tool.

  2. No agent can talk its way into more permission.

    Its role comes from your code, never from what the model says.

  3. Your agent never goes beyond the list the customer accepted.

    Not even if a rule says yes.

    Not even if a person says yes.

  4. Anyone can check the log on their own machine.

    Change one record, delete one, or move one, and the check fails.

Your customer's rules stay with your customer.

Your agent gets an answer. Your customer gets the reason. An auditor can check both without asking either of you.

  1. Your agent gets every answer: allow, deny or wait for approval.
  2. You see whether each customer has your agent running or paused, which version of your action list it accepted, and which regulations it follows.
  3. You never see the customer's rules, or the reasons written into them.
What your agent gets back
action
vendors.delete_vendor
decision
deny
reason_code
capability_not_accepted
reason
null
authored_intent
null

A few lines in the framework you already use.

Or one API call from anywhere else.

agent.pyLangGraph
from boundri_sdk.langgraph import BoundriLangGraphAdapter

adapter = BoundriLangGraphAdapter(evaluator, tools, principal)

agent = create_agent(
    model,
    [update_vendor_bank, pay_invoice],
    middleware=[adapter.middleware()],
)
Frameworks (Python).
Claude Agent SDK, OpenAI Agents SDK, LangGraph, CrewAI and LangChain.
One API call.
From any language: send the action, get back allow, deny or wait for approval.
MCP.
Running your own agent in house? Boundri checks each MCP tool call before it reaches the tool, on your own machine, with no connection to Boundri.
Standard OPA.
The rules are plain OPA, the open-source rules engine. Your customer or its auditor can run them without Boundri in the room.

See an agent follow a customer's rules. Live, in twenty minutes.

We run the six steps on a real agent, from a line in a regulation to a decision you can check yourself.

Book a call