Agentic Control Matrix

The Agentic Control Matrix

Eighteen controls mapping what the EU AI Act, ISO/IEC 42001, the NIST AI RMF, the OWASP LLM Top 10 and MITRE ATLAS ask for onto the harness components that implement it — each with the test that decides whether you actually have it.

Version 1.2 · Updated 2026-08-27 · 18 controls

JSONCSVSame source, three shapes. CC BY 4.0 — cite it and use it.

Frameworks mapped

Cited by: article

18 controls cite it

eur-lex.europa.eu

Cited by: Annex A clause group

18 controls cite it

www.iso.org

Cited by: core function

18 controls cite it

www.nist.gov

Cited by: entry

18 controls cite it

genai.owasp.org
MITRE ATLASframework

Cited by: tactic

16 controls cite it

atlas.mitre.org

How to read this

Each row is one control: what it requires, which frameworks it answers to, which patterns implement it, and how to find out whether you have it. The test is the point — a control you have never tried to fail is a control you have an opinion about.

Mapping granularity differs by source and is declared per framework, because the sources are not equally precise. Citing a NIST subcategory as if it were an article number would look more rigorous and be less true.

These mappings are interpretive. They are one engineer's reading of how a requirement lands in an agent's architecture, published so it can be argued with and corrected. Nothing here is legal advice and nothing here certifies anything.

Everything on this page is generated from a single JSON file, and every reference is validated against the corpus on each build — so a control cannot cite a pattern, a knowledge unit or a framework that does not exist.

The second axis

The groups say where a control acts. They do not say how it regulates behaviour, and two controls in the same group can work in ways that have nothing in common. So every control declares two more things: when it acts, and what decides its verdict.

Feedforward acts on the input — what may exist, what may be called, what may be reached — and never measures the outcome. Feedback measures something the system actually did and acts on that measurement. The moment is relative to the action the control protects: encoding a model's output before it reaches a shell is feedforward for the shell, whatever it is for the model.

Deterministic means the verdict comes from a rule that does not depend on anyone's reading — the same situation is decided the same way twice. Inferential means it comes from a judgement, a model's or a person's, and then the same situation can be decided two ways.

Neither axis has a good end. A deterministic control cannot weigh a case it was not written for, and an inferential one can. But a risk whose only control is both inferential and feedback has nothing that prevents it and nothing that decides identically twice — and that is a fact about the design, not an opinion about it.

feedforwarddeterministic8 controls
feedforwardinferential2 controls
feedbackdeterministic3 controls
feedbackinferential5 controls

What the distribution says

Computed from the controls, not written by hand: these groups take a single value on an axis. Some of it is definitional — evidence is after the fact by construction. Some of it is the finding.

  • Permissions and reachActsfeedforward3 controls
  • Egress and exposureDecided bydeterministic3 controls
  • Human oversightDecided byinferential2 controls
  • EvidenceActsfeedback2 controls

What would end each control

A harness is not monotonically good. A rule written to compensate for a limitation the next model does not have keeps spending tokens teaching it something it already knows. A context block carried since the window was scarce is still carried. A tool surface narrowed for an older model still bounds what a better one may attempt. None of these announce themselves, because a harness component has no expiry date unless somebody wrote one.

So every control declares what it assumes about the model and the condition under which it should be retired. The counts below are derived from those conditions, not asserted around them — and they point both ways: a large part of this matrix does not expire on capability at all. An unvalidated Origin does not become safe because the model improved.

The uncomfortable number is the second one. A retirement condition nobody has measured against is a hypothesis with a good haircut, and the field is set to null in every row rather than left out, so the gap is stated instead of hidden.

a number ends it4 controls
the platform absorbs it7 controls
not on capability grounds7 controls

18/18

Never validated

Controls whose retirement condition has never been measured against a named model generation.

1/18

Moves no metric

Controls that move no metric on the scorecard, so their value cannot be read off any number.

Permissions and reach

ACM-01

Scoped tool catalogue

feedforwardinferentialthe platform absorbs it

Every tool the agent can call is listed, with its scope, whether it writes, and what an attacker gains by calling it. A tool nobody documented is a permission nobody reviewed.

Why this quadrant: It constrains what may exist before anything runs, but nothing enforces its completeness: a catalogue is worth the diligence of whoever wrote it.

Answers to

  • EU AI Act: Art. 9, Art. 14, Art. 26
  • ISO/IEC 42001: A.6 AI system life cycle, A.9 Use of AI systems
  • NIST AI Risk Management Framework 1.0: GOVERN, MAP
  • OWASP Top 10 for LLM Applications: LLM06 Excessive Agency
  • MITRE ATLAS: Initial Access, Privilege Escalation

How to test it

Produce the catalogue. Every entry has a written scope and a named owner, and nothing the agent can call is missing from it.

Assumes

That nobody can hold the tool surface in their head, and that the surface changes faster than memory does.

Retire when

The runtime can enumerate every callable tool with its scope and its owner on demand, at which point a maintained document is a second copy of a fact the platform already holds.

Should movecontain

ACM-02

Per-tool credentials at minimum scope

feedforwarddeterministicthe platform absorbs it

Each tool holds its own credential, issued at the narrowest scope the upstream system supports. A read-only tool backed by an admin token is one bug away from being a write tool.

Why this quadrant: The scope is enforced upstream, on the input side: a call outside it fails the same way every time, whatever the model intended.

Answers to

  • EU AI Act: Art. 15, Art. 26
  • ISO/IEC 42001: A.4 Resources for AI systems, A.6 AI system life cycle
  • NIST AI Risk Management Framework 1.0: GOVERN, MANAGE
  • OWASP Top 10 for LLM Applications: LLM06 Excessive Agency, LLM02 Sensitive Information Disclosure
  • MITRE ATLAS: Credential Access, Privilege Escalation

How to test it

For each tool, show the credential and its server-side scope. No two tools share a credential whose reach exceeds either one.

Assumes

That upstream systems issue credentials narrower than the account, and that a compromised tool is a plausible event.

Retire when

Tool calls carry per-call, per-user authorisation that the upstream system evaluates, leaving a long-lived credential with nothing left to over-grant.

Should movecontain

ACM-03

Parameter allowlists

feedforwarddeterministicthe platform absorbs it

The targets a tool may address — paths, repositories, tables, accounts, recipients — are constrained server-side, so a hijacked agent cannot repoint a legitimate tool at an illegitimate target.

Why this quadrant: It inspects the argument before the call happens, and refuses by rule rather than by opinion.

Answers to

  • EU AI Act: Art. 15
  • ISO/IEC 42001: A.6 AI system life cycle
  • NIST AI Risk Management Framework 1.0: MANAGE
  • OWASP Top 10 for LLM Applications: LLM01 Prompt Injection, LLM06 Excessive Agency
  • MITRE ATLAS: Execution, Impact

How to test it

Call each write-capable tool with an out-of-scope target. The call is refused by the tool's own boundary, not by the model declining.

Assumes

That the model can be induced to point a legitimate tool at an illegitimate target, and that the upstream system will not stop it.

Retire when

The upstream system enforces the same constraint through its own authority model, at which point the allowlist is a duplicate that can drift out of agreement with it.

Should movecontain

Egress and exposure

ACM-04

Default-deny egress

feedforwarddeterministicnot on capability grounds

Outbound traffic reaches only named destinations; everything else is refused. Every exfiltration path ends in an outbound request, so this is the control that still works after the model has been convinced.

Why this quadrant: The destination is checked before the request leaves; no outcome is measured and no judgement is involved.

Answers to

  • EU AI Act: Art. 15
  • ISO/IEC 42001: A.6 AI system life cycle, A.7 Data for AI systems
  • NIST AI Risk Management Framework 1.0: MANAGE
  • OWASP Top 10 for LLM Applications: LLM02 Sensitive Information Disclosure, LLM01 Prompt Injection
  • MITRE ATLAS: Exfiltration, Collection

How to test it

From inside the agent's environment, request a host that is not on the list. It fails at the network or proxy layer and the refusal is logged.

Assumes

That every exfiltration path ends in an outbound request, and that the set of legitimate destinations is knowable in advance.

Retire when

Not on capability grounds. Retire it when the agent has nothing worth exfiltrating — which is a statement about the data, not about the model.

Should movecontain

ACM-05

Denied egress is an alert, not an error

feedbackdeterministicthe platform absorbs it

Refused outbound requests are logged as security signal and reach a human. A denial is one of the few unambiguous attack signals an agent stack produces, and it is worthless if it lands in the same bucket as a timeout.

Why this quadrant: It acts on something that already happened — a refusal — and it fires by rule, on every one of them.

Answers to

  • EU AI Act: Art. 12, Art. 72
  • ISO/IEC 42001: A.6 AI system life cycle, Clause 9 Performance evaluation
  • NIST AI Risk Management Framework 1.0: MEASURE, MANAGE
  • OWASP Top 10 for LLM Applications: LLM02 Sensitive Information Disclosure
  • MITRE ATLAS: Exfiltration

How to test it

Trigger a denial. It appears as a distinct, alertable event with the destination and the calling agent, not as a generic network error.

Assumes

That a refused outbound request is rare enough to be signal rather than noise.

Retire when

The platform surfaces denials as security events on its own, or denials become routine — which means the allowlist is wrong, not that the alert is.

Should moverecon

ACM-16

Transport and origin validation on exposed endpoints

feedforwarddeterministicnot on capability grounds

An agent endpoint reachable from outside validates its transport before doing work: origin checked against an allowlist, browser-initiated cross-site calls rejected, and every caller rate limited with a real 429.

Why this quadrant: The request is judged by its Origin header before any handler runs; the same call gets the same answer every time.

Answers to

  • EU AI Act: Art. 15
  • ISO/IEC 42001: A.6 AI system life cycle
  • NIST AI Risk Management Framework 1.0: MANAGE
  • OWASP Top 10 for LLM Applications: LLM10 Unbounded Consumption, LLM06 Excessive Agency
  • MITRE ATLAS: Initial Access, AI Model Access

How to test it

Call the endpoint with a foreign Origin and with no Origin. The first is rejected before any handler runs; the second is served and counted against its caller's limit.

Assumes

That the endpoint is reachable from outside, and that browsers will be pointed at it by somebody else's page.

Retire when

The endpoint stops being externally reachable. A better model does not make an unvalidated Origin safe.

Should movecontain

Execution

ACM-06

Ephemeral, credential-free execution

feedforwarddeterministicthe platform absorbs it

Anything the agent generates or invokes runs in an environment created per task and destroyed after, holding no ambient credentials. Persistence is how a one-off compromise becomes a foothold.

Why this quadrant: The environment is built without the credentials before the task starts; there is nothing to measure and nothing to decide.

Answers to

  • EU AI Act: Art. 15
  • ISO/IEC 42001: A.6 AI system life cycle
  • NIST AI Risk Management Framework 1.0: MANAGE
  • OWASP Top 10 for LLM Applications: LLM05 Improper Output Handling, LLM03 Supply Chain
  • MITRE ATLAS: Execution, Persistence

How to test it

Inside a live task, enumerate the environment. No credential is present that the task did not need, and the environment does not survive the task.

Assumes

That a compromise of one task should not survive into the next, and that setup cost is lower than the cost of persistence.

Retire when

Execution environments are per-call and credential-free by construction, so “ephemeral” stops being something anyone can switch off.

Should movecontain

ACM-07

Resource caps and timeouts

feedbackdeterministicnot on capability grounds

CPU, memory, disk, wall-clock and call count are bounded by the host. Runaway consumption is the failure mode that arrives first and most often, usually with no adversary involved at all.

Why this quadrant: A cap is a feedback loop in the strict sense: it measures consumption as it happens and acts when a threshold is crossed.

Answers to

  • EU AI Act: Art. 15
  • ISO/IEC 42001: A.4 Resources for AI systems, Clause 8 Operation
  • NIST AI Risk Management Framework 1.0: MEASURE, MANAGE
  • OWASP Top 10 for LLM Applications: LLM10 Unbounded Consumption
  • MITRE ATLAS: Impact

How to test it

Run a task designed not to terminate. It is stopped by a quota, the stop is recorded, and the cost of the attempt is bounded and known.

Assumes

That an agent will consume without bound if nothing stops it, with or without an adversary.

Retire when

Not on capability grounds. Runaway consumption is a property of loops, and better models attempt longer tasks rather than shorter ones.

Should movetvtcvo

ACM-17

Reversibility and a stop control

feedbackinferentiala number ends it

Every action the agent can take is either reversible or gated, and a person can stop the agent mid-run without stopping the whole system. Autonomy without an off switch is not autonomy, it is exposure.

Why this quadrant: Somebody has to be watching and decide that this run should end; the mechanism is deterministic, the trigger is not.

Answers to

  • EU AI Act: Art. 14, Art. 15, Art. 26
  • ISO/IEC 42001: Clause 8 Operation, Clause 10 Improvement
  • NIST AI Risk Management Framework 1.0: MANAGE
  • OWASP Top 10 for LLM Applications: LLM06 Excessive Agency
  • MITRE ATLAS: Impact

How to test it

Stop a running agent. It halts within the stated time, leaves no half-applied change, and the stop is recorded with who issued it.

Assumes

That a run can go wrong in a way a person notices before the harness does.

Retire when

The verification gap reaches zero and the recovery rate is at parity without it — meaning the harness notices its own failures at least as fast as the person watching. Nothing in this corpus measures that today.

Should movecontainrecov

Human oversight

ACM-08

Approval gate on high-impact actions

feedforwardinferentiala number ends it

Actions that are irreversible, regulated or expensive stop for a person who can approve, edit or reject, with enough context to decide. Gate by risk, not by default — over-gating produces rubber-stamping, which is worse than no gate because it looks like one.

Why this quadrant: It stops the action before it happens, but what it stops for is a person's decision, and the same case can be decided two ways.

Answers to

  • EU AI Act: Art. 14, Art. 26
  • ISO/IEC 42001: A.9 Use of AI systems, A.5 Assessing impacts of AI systems
  • NIST AI Risk Management Framework 1.0: GOVERN, MANAGE
  • OWASP Top 10 for LLM Applications: LLM06 Excessive Agency
  • MITRE ATLAS: Impact

How to test it

List the gated actions and the risk criterion that put them there. Attempt one; it suspends, routes, and records the decision with the identity of who made it.

Assumes

That the model's judgement on high-impact actions is worse than a person's, and that a person given the context decides better than a rule would.

Retire when

The verification gap on the gated action types reaches zero across a task set large enough to trust. Past that point the gate is buying rubber stamps at the price of latency.

Should movevgaphir

ACM-09

Escalation path with a named owner

feedbackinferentiala number ends it

When the agent is uncertain, blocked or out of policy, there is a defined path to a person, and that person is named. An escalation route with no owner is a queue.

Why this quadrant: It triggers on a state the run has already reached — uncertain, blocked, out of policy — and what happens next is a judgement.

Answers to

  • EU AI Act: Art. 14
  • ISO/IEC 42001: A.9 Use of AI systems
  • NIST AI Risk Management Framework 1.0: GOVERN, MANAGE
  • OWASP Top 10 for LLM Applications: LLM09 Misinformation

How to test it

Force an escalation. It reaches a named human within the stated time, and the handoff carries the context needed to act without re-deriving it.

Assumes

That the agent can recognise being blocked or out of policy, and that a person can unblock it.

Retire when

Recovery rate at parity with and without the escalation path, measured on the failures that actually occur rather than the ones anticipated.

Should moverecovhir

Evidence

ACM-10

Correlated trace of every decision and tool call

feedbackdeterministicnot on capability grounds

Each run produces an immutable, correlated record: inputs, model and version, tool calls with arguments and outcomes, and the final action. Enough to reconstruct what happened, and nothing that turns the log itself into the breach.

Why this quadrant: Pure measurement after the fact: it changes nothing about the run it records, and it records by rule.

Answers to

  • EU AI Act: Art. 12, Art. 19, Art. 72
  • ISO/IEC 42001: Clause 9 Performance evaluation, A.6 AI system life cycle
  • NIST AI Risk Management Framework 1.0: MEASURE, MANAGE
  • OWASP Top 10 for LLM Applications: LLM02 Sensitive Information Disclosure
  • MITRE ATLAS: Discovery, Collection

How to test it

Pick a past run at random and reconstruct it end to end from the log alone. Then confirm the log holds no secret or raw personal data it did not need.

Assumes

That something will need to be reconstructed later by somebody who was not there.

Retire when

Not on capability grounds. This is the control every other measurement is computed from; removing it removes the ability to know whether removing anything else was a good idea.

Should moverecon

ACM-11

Evaluation suite gating change

feedbackinferentialnot on capability grounds

A curated set of cases runs on every change, and a regression blocks release. Without it, 'it seems to work' is the entire quality argument, and nothing distinguishes a fix from a change.

Why this quadrant: It measures outputs the system already produced, and what counts as a regression in agentic output is a judgement — the suite covers whichever cases someone chose.

Answers to

  • EU AI Act: Art. 9, Art. 15, Art. 17
  • ISO/IEC 42001: A.6 AI system life cycle, Clause 9 Performance evaluation
  • NIST AI Risk Management Framework 1.0: MEASURE
  • OWASP Top 10 for LLM Applications: LLM09 Misinformation

How to test it

Introduce a known regression. The suite catches it and the change does not ship. A suite never seen failing is a suite never verified.

Assumes

That changes regress behaviour in ways nobody predicts, and that a curated set catches more of them than judgement does.

Retire when

Not as a category. Individual cases retire constantly: a case no change has failed in two years is measuring the past, and keeping it is how suites get expensive without getting better.

Should movecatchdband

Lifecycle and inputs

ACM-12

Untrusted content is isolated and marked

feedforwarddeterministica number ends it

Retrieved documents, tool results and third-party output are delimited as data, never merged into the instruction channel. The model cannot reliably tell them apart, so the harness must.

Why this quadrant: The delimiting happens on the input, before the model reads it, and it applies to every document without asking what is inside.

Answers to

  • EU AI Act: Art. 15
  • ISO/IEC 42001: A.6 AI system life cycle, A.7 Data for AI systems
  • NIST AI Risk Management Framework 1.0: MAP, MANAGE
  • OWASP Top 10 for LLM Applications: LLM01 Prompt Injection
  • MITRE ATLAS: Initial Access, AI Attack Staging

How to test it

Plant an instruction inside a document the agent retrieves. The agent may read it; it must not act on it, and the attempt must be visible afterwards.

Assumes

That the model cannot reliably tell instruction from data inside its own context window.

Retire when

The injection cases in the evaluation suite stop succeeding with this control removed — measured, not announced. That would mean the separation is enforced below the prompt rather than inside it.

Should movevyr

ACM-13

Model output treated as untrusted input

feedforwarddeterministicnot on capability grounds

Anything the model emits that reaches a renderer, a shell, a query or another system is encoded and validated exactly as input from a stranger would be.

Why this quadrant: The moment is relative to the action being protected: the encoding acts on the sink's input, before the sink does anything with it.

Answers to

  • EU AI Act: Art. 15, Art. 50
  • ISO/IEC 42001: A.8 Information for interested parties
  • NIST AI Risk Management Framework 1.0: MEASURE, MANAGE
  • OWASP Top 10 for LLM Applications: LLM05 Improper Output Handling, LLM07 System Prompt Leakage
  • MITRE ATLAS: Defense Evasion

How to test it

Make the model emit a payload for each downstream sink you have. Each is neutralised at the boundary before it arrives.

Assumes

That downstream sinks trust what reaches them, and that the model will emit whatever it was steered into emitting.

Retire when

Not on model grounds. This is a property of the sink, not of the producer: the same encoding would be required if a person had typed the string.

Should movevyr

ACM-14

Memory integrity and expiry

feedbackinferentialthe platform absorbs it

What the agent writes to persistent memory is attributed, reviewable and expirable. Memory is what turns a one-shot attack into one that re-triggers on future, unrelated tasks.

Why this quadrant: Its teeth close on what was already written, and deciding that a stored fact is false is a judgement no rule makes for you.

Answers to

  • EU AI Act: Art. 10, Art. 15
  • ISO/IEC 42001: A.7 Data for AI systems
  • NIST AI Risk Management Framework 1.0: MAP, MANAGE
  • OWASP Top 10 for LLM Applications: LLM04 Data and Model Poisoning, LLM08 Vector and Embedding Weaknesses
  • MITRE ATLAS: Persistence, AI Attack Staging

How to test it

Write a false fact through a normal interaction. Show where it came from, who can remove it, and when it would expire on its own.

Assumes

That written memory persists across tasks, and that a false fact written once will be read many times.

Retire when

The memory system attributes and expires writes on its own, so integrity stops being a discipline the harness has to impose from outside.

Should movevgap

ACM-15

Provenance for models, prompts and servers

feedforwarddeterministicnot on capability grounds

Models, system prompts, MCP servers, packages and datasets are pinned, reviewed on change, and traceable to a source. A dependency that can rewrite a tool description can rewrite the agent's behaviour.

Why this quadrant: A pin is checked before the dependency is used, and a tool description that changed is a diff, not an opinion.

Answers to

  • EU AI Act: Art. 10, Art. 11, Art. 25
  • ISO/IEC 42001: A.10 Third-party and customer relationships, A.6 AI system life cycle
  • NIST AI Risk Management Framework 1.0: GOVERN, MAP
  • OWASP Top 10 for LLM Applications: LLM03 Supply Chain, LLM04 Data and Model Poisoning
  • MITRE ATLAS: Resource Development, Initial Access

How to test it

For each external dependency, name the pinned version and who reviewed the last change. Change a tool description upstream; the change is detected before it reaches production.

Assumes

That a dependency can change under you, and that the change can alter behaviour without altering your code.

Retire when

Not on capability grounds. This is what makes the determinism band mean anything: without pinning, repeated runs measure the vendor's release schedule.

Should movedband

ACM-18

A threat model that is maintained and tested

feedbackinferentialthe platform absorbs it

The attack surfaces are written down with a control and an owner each, accepted risks are named as accepted, and the document is revisited whenever a tool, a data source or an autonomy level changes.

Why this quadrant: Its test compares two dates, but what the document says is judgement, and it is revised in response to changes that already landed.

Answers to

  • EU AI Act: Art. 9, Art. 72
  • ISO/IEC 42001: A.5 Assessing impacts of AI systems, Clause 10 Improvement
  • NIST AI Risk Management Framework 1.0: MAP, GOVERN
  • OWASP Top 10 for LLM Applications: LLM01 Prompt Injection, LLM06 Excessive Agency
  • MITRE ATLAS: Reconnaissance, AI Attack Staging

How to test it

Show the current threat model and the date of the last change to the tool catalogue. If the catalogue is newer than the model, the model is out of date and this control fails.

Assumes

That the attack surface changes when tools, data sources or autonomy levels change, and that nobody notices unless somebody is made responsible for noticing.

Retire when

The threat model is generated from the tool catalogue and the autonomy configuration, so it cannot lag them. At that point this control has been replaced, not retired.