{
  "_about": "Agentic Security Control Matrix, FULL DATASET EXPORT (securitycontrols.ai). The complete governed dataset that powers the live matrix. Regenerated on every release. See INTEGRATION-GUIDE.md for architecture and integration patterns.",
  "_detection_disclaimer": "The detection_schema and response fields on each control are DIRECTIONAL and ILLUSTRATIVE, example scaffolds and placeholders that show the shape of a detection, not production-ready rules to implement out of the box. Adapt, validate, and tune every field against your own environment and telemetry before any use. A deeper, implementation-ready detection resource is planned, treat what is here as an early scaffold, not the finished library.",
  "_version": "1.2",
  "_asOf": "2026-06-25T02:04Z",
  "_license": "CC BY-NC 4.0. Non-commercial use is free with attribution. Commercial use (embedding in a product, paid assessments/tools, any revenue-generating use) requires a written RiskOne commercial license. Contact aisecurity@risk.one.",
  "_schema": "agentic-controls.schema.json (JSON Schema; additive-safe)",
  "_integration_key": "control id (e.g. IA-01), key your product data to these stable ids",
  "_counts": {
    "controls": 51,
    "by_layer": {
      "identity": 6,
      "containment": 10,
      "protocol": 8,
      "governance": 11,
      "runtime": 8,
      "assurance": 8
    },
    "references": 75,
    "starter_set": 15,
    "detection_bearing": 17,
    "response_bearing": 24,
    "framework_coverage": {
      "nist": {
        "mapped": 50,
        "verified": 50,
        "indicative": 0,
        "by_fit": {
          "direct": 0,
          "partial": 0,
          "adjacent": 50,
          "supporting": 0
        }
      },
      "owasp": {
        "mapped": 50,
        "verified": 38,
        "indicative": 12,
        "by_fit": {
          "direct": 50,
          "partial": 0,
          "adjacent": 0,
          "supporting": 0
        }
      },
      "aisvs": {
        "mapped": 45,
        "verified": 37,
        "indicative": 8,
        "by_fit": {
          "direct": 37,
          "partial": 8,
          "adjacent": 0,
          "supporting": 0
        }
      },
      "aismm": {
        "mapped": 48,
        "verified": 42,
        "indicative": 6,
        "by_fit": {
          "direct": 42,
          "partial": 6,
          "adjacent": 0,
          "supporting": 0
        }
      },
      "iso": {
        "mapped": 47,
        "verified": 45,
        "indicative": 2,
        "by_fit": {
          "direct": 0,
          "partial": 0,
          "adjacent": 47,
          "supporting": 0
        }
      },
      "aicm": {
        "mapped": 46,
        "verified": 39,
        "indicative": 7,
        "by_fit": {
          "direct": 0,
          "partial": 39,
          "adjacent": 7,
          "supporting": 0
        }
      },
      "mgf": {
        "mapped": 46,
        "verified": 28,
        "indicative": 18,
        "by_fit": {
          "direct": 28,
          "partial": 0,
          "adjacent": 18,
          "supporting": 0
        }
      },
      "mitre": {
        "mapped": 23,
        "verified": 21,
        "indicative": 2,
        "by_fit": {
          "direct": 17,
          "partial": 0,
          "adjacent": 0,
          "supporting": 6
        }
      }
    },
    "coverage_tables": {
      "owasp_asi": 10,
      "cisa": 5,
      "aws_dimensions": 6,
      "aws_scopes": 4,
      "threat_scenarios": 13
    },
    "gaps": 3,
    "cross_layer_patterns": 1
  },
  "_contact": "aisecurity@risk.one",
  "dataset": {
    "meta": {
      "adjacent_domains": [
        {
          "key": "privacy",
          "name": "Privacy & data protection controls",
          "status": "planned"
        },
        {
          "key": "financial",
          "name": "Financial & fraud controls",
          "status": "planned"
        },
        {
          "key": "model-eval",
          "name": "Model evaluation & safety controls",
          "status": "planned"
        },
        {
          "key": "reliability",
          "name": "Reliability & operational controls",
          "status": "planned"
        }
      ],
      "adjacent_domains_note": "This matrix is the security domain of a planned multi-domain control view. Adjacent non-security control sets (privacy, financial, model evaluation, reliability, and related) are not included here. The data model reserves an optional per-control cross-domain link so they can be crosswalked from a larger view later without a breaking change.",
      "source_editions": [
        {
          "source": "OWASP AISVS",
          "edition": "v1.0",
          "as_of": "2026-06",
          "state": "released"
        },
        {
          "source": "MITRE ATLAS",
          "edition": "2026.05 (data format v6)",
          "as_of": "2026-06-24",
          "state": "released"
        },
        {
          "source": "OWASP Agentic Top 10",
          "edition": "2026",
          "as_of": "2025-12",
          "state": "released"
        },
        {
          "source": "OWASP LLM Top 10",
          "edition": "2025",
          "as_of": "2025",
          "state": "released"
        },
        {
          "source": "OWASP NHI Top 10",
          "edition": "2025",
          "as_of": "2025",
          "state": "released"
        },
        {
          "source": "IMDA MGF for Agentic AI",
          "edition": "v1.5",
          "as_of": "2026-06",
          "state": "released"
        },
        {
          "source": "CSA AICM",
          "edition": "v1.1.0",
          "as_of": "2026-06",
          "state": "released; re-audited against v1.1 (IAM/AIS/LOG/STA/TVM renumbered from v1.0.3; all cited ids corrected + evidenced)"
        },
        {
          "source": "CSA AISMM",
          "edition": "v3.7",
          "as_of": "2026-06",
          "state": "released"
        },
        {
          "source": "ISO/IEC 42001",
          "edition": "2023",
          "as_of": "2023",
          "state": "released"
        },
        {
          "source": "NIST AI RMF",
          "edition": "AI 100-1 (1.0)",
          "as_of": "released 2023",
          "state": "v1.0 released Jan 2023; revision + COSAiS agentic overlays / Cyber AI Profile in draft 2026"
        },
        {
          "source": "EU AI Act",
          "edition": "Reg (EU) 2024/1689",
          "as_of": "in force 2024",
          "state": "phased applicability: Feb 2025 / Aug 2025 / Aug 2026 / Aug 2027"
        },
        {
          "source": "AWS Agentic AI Security Scoping Matrix",
          "edition": "2025",
          "as_of": "2025",
          "state": "released"
        }
      ],
      "source_editions_note": "The edition each crosswalk column is pinned to. Re-audit a column when its source revises. Per-cell evidence carries its own verified_on date.",
      "title": "Agentic Security Control Matrix",
      "version": "1.2",
      "asOf": "2026-06-25T02:04Z",
      "agentDefinition": "An agent is software that uses a model to choose or sequence actions and tools toward a goal, with some autonomy. A chatbot that only returns text is out of scope; a system that can call tools, change state, delegate, or continue without per-step approval is in scope.",
      "baseline": [
        "IA-01",
        "IA-02",
        "EC-01",
        "EC-02",
        "EC-04",
        "EC-08",
        "PT-04",
        "PT-08",
        "GV-01",
        "GV-02",
        "GV-09",
        "RT-01",
        "RT-02",
        "RT-04",
        "AS-01"
      ],
      "baselineNote": "A minimum starter set: the fifteen controls I would not run an autonomous agent without. Tier up from here by how much autonomy, external reach, irreversibility, and regulated data each agent touches.",
      "thesis": "One crosswalk for securing autonomous AI agents. Every control mapped to the threat it stops, the standard behind it, who builds it, how to deploy it, and how to prove it holds.",
      "note": "Identifiers are verified against primary sources or marked indicative. Original controls are labelled as this matrix's own thesis, not attributed to any standards body. Corrections are documented in CORRECTIONS.md.",
      "starAiNote": "Controls tagged STAR AI map to one of the 32 AI-Specific AICM v1.1 controls (the AI-Specific control type in the AICM v1.1 catalog, the CSA STAR AI examinable set, distinct from legacy CCM-derived controls). Re-derived cell-by-cell against AICM v1.1: 14 controls are tagged. Original/thesis controls keep their thesis tag and are not claimed as STAR-examinable."
    },
    "implementerStatus": {
      "AWS": "product",
      "Anthropic": "research",
      "Beyond Identity (Ceros)": "product",
      "CrowdStrike": "product",
      "Databricks": "guidance",
      "Databricks (Unity Catalog)": "product",
      "Firecracker": "open-source",
      "Google": "guidance",
      "Google (SAIF 2.0)": "guidance",
      "Google (SAIF)": "guidance",
      "Google / DeepMind": "research",
      "Linux Foundation A2A": "standard",
      "Microsoft": "product",
      "Microsoft (Agent 365)": "product",
      "Microsoft (Agent Governance Toolkit)": "open-source",
      "Microsoft (Entra Agent ID)": "product",
      "Microsoft (MXC)": "preview",
      "Okta": "product",
      "Okta (Auth0 Auth for GenAI)": "product",
      "Okta (Auth0 RAG authz)": "product",
      "Okta (Auth0 async approval)": "product",
      "Okta (Cross App Access)": "product",
      "OpenAI": "guidance",
      "OpenSSF": "open-source",
      "Ping Identity": "product",
      "Ping Identity (Agent Gateway)": "product",
      "SPIRE": "open-source",
      "Sigstore": "open-source",
      "gVisor": "open-source"
    },
    "profiles": [
      {
        "key": "readonly",
        "name": "Read-only assistant",
        "desc": "Retrieves and answers; takes no external actions and nothing irreversible.",
        "tiers": []
      },
      {
        "key": "tool-using",
        "name": "Tool-using assistant",
        "desc": "Calls external tools or APIs on the user's behalf.",
        "tiers": [
          "external-reach"
        ]
      },
      {
        "key": "autonomous-workflow",
        "name": "Autonomous workflow",
        "desc": "Plans and chains steps on its own and can take irreversible actions.",
        "tiers": [
          "autonomy",
          "irreversibility"
        ]
      },
      {
        "key": "external-agent",
        "name": "External-facing agent",
        "desc": "Acts autonomously and reaches outside the org boundary.",
        "tiers": [
          "autonomy",
          "external-reach"
        ]
      },
      {
        "key": "regulated-data",
        "name": "Regulated-data agent",
        "desc": "Handles regulated or sensitive data.",
        "tiers": [
          "data-sensitivity"
        ]
      },
      {
        "key": "frontier",
        "name": "Frontier autonomous agent",
        "desc": "High autonomy, external reach, irreversible actions, and sensitive data.",
        "tiers": [
          "autonomy",
          "external-reach",
          "irreversibility",
          "data-sensitivity"
        ]
      }
    ],
    "profilesNote": "Deployment profiles select a control subset, the minimum starter set (meta.baseline) plus every control whose risk-driver tiers the profile carries. Derived at build/runtime from each control's `tiers`; never a hand-maintained list, so it cannot drift.",
    "network": {
      "brand": "Apeiris",
      "parent_hosts": [
        "apeiris.ai",
        "apeiris.com"
      ],
      "parent_status": "planned",
      "uri_scheme": "apeiris://<domain>/controls/<ID>",
      "note": "securitycontrols.ai is one verifier in the Apeiris network. Each domain owns a distinct slice of AI assurance and composes with the others through the apeiris:// URI scheme, so a claim made in one domain can reference a control in another without duplicating it. Apeiris (apeiris.ai / apeiris.com) is the planned parent and commercial-licensing entity; the enforcement platform is built separately from these control-definition matrices.",
      "resolution": "apeiris://security/controls/IA-01 resolves to this matrix (host securitycontrols.ai); the control record lives in the integration export keyed by id. Other domains resolve to their own host the same way. Reserved domains do not resolve yet.",
      "scope_separation": "securitycontrols.ai owns runtime security and enforcement (sandboxing, egress control, prompt-injection detection, policy-as-code, identity, governance, monitoring, assurance). modelverifier.ai owns pre-deployment model and system fitness (evaluation, validation, behavioral measurement). The data-governance domain owns data sensitivity, protection-tier mapping, and what may appear in outputs (referenced by EC-02, RT-05, and AS-08). The reserved verifiers own identity, agent-behavior, compliance, and privacy respectively. Claims compose without duplication via shared apeiris:// ids.",
      "domains": [
        {
          "key": "security",
          "host": "securitycontrols.ai",
          "name": "Security Controls",
          "scope": "Runtime security and enforcement for autonomous AI agents: identity, containment, protocol, governance, runtime monitoring, and continuous assurance.",
          "uri_example": "apeiris://security/controls/IA-01",
          "status": "active",
          "current": true
        },
        {
          "key": "model",
          "host": "modelverifier.ai",
          "name": "Model Verifier",
          "scope": "Model and system fitness: evaluation, validation, and behavioral measurement across the AI lifecycle.",
          "uri_example": "apeiris://model/controls/LI-01",
          "status": "active"
        },
        {
          "key": "data",
          "host": "dataverifier.ai",
          "name": "AI Data Governance & Integrity Control Matrix",
          "scope": "Data sensitivity classification, protection-tier requirement mapping, non-PII output leakage prevention, and data-governance attestation.",
          "uri_example": "apeiris://data/controls/DX-03",
          "integration": "https://dataverifier.ai/integration/data-controls-full.json",
          "status": "planned"
        },
        {
          "key": "identity",
          "host": "identitycontrols.ai",
          "name": "Identity Controls",
          "scope": "Human and non-human identity controls.",
          "status": "planned"
        },
        {
          "key": "agentic",
          "host": "agenticverifier.ai",
          "name": "Agentic Verifier",
          "scope": "Agent behavior verification.",
          "status": "planned"
        },
        {
          "key": "compliance",
          "host": "complianceverifier.ai",
          "name": "Compliance Verifier",
          "scope": "Regulatory compliance verification.",
          "status": "planned"
        },
        {
          "key": "privacy",
          "host": "privacyverifier.ai",
          "name": "Privacy Verifier",
          "scope": "Privacy controls and verification.",
          "status": "planned"
        }
      ]
    },
    "roadmap": [
      {
        "id": "product-feature-map",
        "title": "Map product features to controls",
        "detail": "A future version will crosswalk specific vendor product FEATURES to each control, distinct from the current implementers list. Example: Ent.ai and CrowdStrike both address aspects of the EC-09 untrusted-workspace / config-&-hook problem. Add a per-control \"covered by\" product-feature dimension (feature, vendor, which sub-aspect of the control it covers, evidence)."
      },
      {
        "id": "resolve-indicative",
        "title": "Resolve indicative mappings as primary sources arrive",
        "detail": "Promote indicative/forthcoming mappings to verified as the CISA primary docs, AICM v1.0.3 Bundle, and ISO 42001 Annex A control list are supplied; COSAiS agentic overlays remain forthcoming until NIST publishes the multi-agent SP 800-53 overlay (no control IDs yet)."
      },
      {
        "id": "v1-publication",
        "title": "Publish at v1.0 (Substack + LinkedIn)",
        "detail": "Once mappings reach final v1.0 (primary sources resolved), write a Substack post and a LinkedIn post announcing the Agentic Security Control Matrix."
      }
    ],
    "planes": [
      {
        "key": "control",
        "name": "Control plane",
        "plain": "Decides who the agent is and what it is allowed to do, identity, permissions, protocols, and policy."
      },
      {
        "key": "data",
        "name": "Data plane",
        "plain": "Watches what the agent actually does with data, where it runs, what it touches, what it sends, and what it says."
      },
      {
        "key": "both",
        "name": "Both planes",
        "plain": "Spans decision-making and behaviour at once."
      },
      {
        "key": "lifecycle",
        "name": "Lifecycle",
        "plain": "Runs across the agent's whole lifecycle, from pre-ship gates to re-proving it while it runs, so it sits alongside the live control/data split rather than inside it."
      }
    ],
    "planeNote": "Control plane vs data plane is this matrix's own organising lens (no standards body publishes the six layers this way). It exists to make one point: the published frameworks cluster by plane and do not meet at the seams, a permission granted in the control plane is rarely re-checked against what the data plane sees.",
    "patterns": [
      {
        "id": "RA-01",
        "title": "Agent Runtime Enforcement Plane",
        "type": "cross_layer_pattern",
        "plain": "The in-path gateway where the layers meet at action time: it names the acting agent and its delegation chain, decides policy against current state, brokers only the credential that one action needs, and writes the decision and result to a tamper-evident record.",
        "desc": "Not a seventh layer and not a single product. It is the cross-layer substrate where identity, protocols, governance, and runtime response converge and become enforced rather than advisory. Logically one thing, it should be physically several, a decision service, a credential broker, an approval service, a commit guard, and an audit store outside its own trust boundary, so that compromising the gateway cannot also mint credentials, rewrite the audit, and approve its own requests. It owns the seams inside one trust domain; across organizations the same chain is the cross-org identity federation gap.",
        "invariant": "No agent action executes without attributable identity, current authorization, least-scope authority, and an auditable decision.",
        "enforcementPoints": [
          "action gateway",
          "policy decision service",
          "credential broker",
          "approval service",
          "commit guard",
          "external audit store",
          "runtime response service"
        ],
        "controls": [
          "IA-01",
          "IA-02",
          "IA-03",
          "IA-04",
          "PT-01",
          "PT-02",
          "GV-01",
          "GV-02",
          "GV-04",
          "GV-06",
          "GV-08",
          "RT-04",
          "IA-06"
        ]
      }
    ],
    "layers": [
      {
        "key": "identity",
        "num": "01",
        "name": "Identity & Authority",
        "blurb": "Who the agent is, and what it may do",
        "plain": "Give each agent its own name badge and only the keys it needs.",
        "color": "var(--r1-blue)",
        "defaultPlane": "control"
      },
      {
        "key": "containment",
        "num": "02",
        "name": "Environment & Containment",
        "blurb": "Where it runs, what it can reach, and what it consumes",
        "plain": "Put the agent in a sealed room and limit what it can touch, spend, and read.",
        "color": "var(--r1-emerald)",
        "defaultPlane": "data"
      },
      {
        "key": "protocol",
        "num": "03",
        "name": "Inter-Agent & Tool Protocols",
        "blurb": "How it talks to tools and to other agents",
        "plain": "Make sure the agent only talks to tools and agents it can trust, and checks what they say back.",
        "color": "#a78bfa",
        "defaultPlane": "control"
      },
      {
        "key": "governance",
        "num": "04",
        "name": "Governance & Human-in-the-Loop",
        "blurb": "Who approves, and what is on the record",
        "plain": "Keep a human in charge of big decisions and keep an honest record of everything.",
        "color": "#f0b35b",
        "defaultPlane": "control"
      },
      {
        "key": "runtime",
        "num": "05",
        "name": "Runtime Supervision & Detection",
        "blurb": "What it actually does, watched live",
        "plain": "Watch the agent while it works and be ready to stop it.",
        "color": "#f2779a",
        "defaultPlane": "data"
      },
      {
        "key": "assurance",
        "num": "06",
        "name": "Continuous Assurance",
        "blurb": "Proving it is safe before it ships, and re-proving it as it changes",
        "plain": "Test it hard before customers ever see it, then keep re-testing it as it changes.",
        "color": "#8ad17a",
        "defaultPlane": "lifecycle"
      }
    ],
    "gaps": [
      {
        "id": "gap1",
        "title": "Cross-organization agent identity federation",
        "plain": "Your careful rules stop at your own front door.",
        "desc": "Your supervised, governed agent calls an outside agent or vendor API you do not control. Every identity and permission guarantee you built ends at your organisational boundary. No current framework defines how trust, attribution, or revocation work across it.",
        "teams": "Engineering: down-scope tokens to read-only before they leave the boundary (this matrix's compensating control for GAP1, not a fix for it). Detection: alert on any cross-org call that returns more than it should. Red team: try to replay a partner's token back into your environment. GRC: you cannot yet evidence what the external agent did with your data, record the boundary as a known limit.",
        "compensating": "IA-05",
        "status": "open — no cross-org standard yet; partially compensated by per-org identity (IA-01, IA-05)"
      },
      {
        "id": "gap2",
        "title": "Chain-of-custody for agent-action logs",
        "plain": "If an agent causes harm, can your logs stand up as evidence?",
        "desc": "When a supervised agent takes a harmful action and the monitor's logs are the primary evidence, what are the forensic and admissibility requirements? No framework defines chain-of-custody for agent-action logs in a legal or regulatory investigation, and EU AI Act record-keeping (Article 12 logging, Article 26(6) deployer retention of at least six months) is on a collision course with that gap.",
        "teams": "Engineering: write logs to a tamper-evident store outside the agent's reach (this matrix's compensating control; tamper-evident storage is the integrity foundation of chain-of-custody, not the whole chain; IA-06 adds the signed end-to-end provenance lineage that completes it). Detection: the same logs are your detection source, protect them first. Red team: try to make the agent rewrite or delete its own audit trail. GRC: map these logs to EU AI Act Art. 12 (logging) and Art. 26(6) (deployer retention) and name a retention owner and horizon.",
        "compensating": "IA-06",
        "status": "partially addressed — IA-06 adds the signed provenance chain; cross-vendor standardization still open"
      },
      {
        "id": "gap3",
        "title": "Securing the security layer itself",
        "plain": "What guards the guard?",
        "desc": "A compromised supervisor agent, a poisoned policy engine, or a tampered governance tool turns your control plane into the attack surface. The threat model for the security and governance tooling is the least-written part of the whole field.",
        "teams": "Engineering: run the monitor on a separate, more constrained model — separate and constrained is the point, not smaller (this matrix's compensating control; it does not by itself secure the security layer). Detection: monitor the monitor, watch for the supervisor going quiet or always-approving. Red team: target the policy engine and the approval channel, not just the agent. GRC: treat the security tooling as in-scope for its own audit.",
        "compensating": "AS-08",
        "status": "partially addressed — AS-08 raises securing the control plane to a first-class control (tier-zero hardening, isolation, tamper-evidence, monitoring, adversarial testing); defense-in-depth (RT-03, GV-02 outside the trust boundary) still applies. Full assurance of the security layer remains an open frontier."
      }
    ],
    "references": [
      {
        "id": "aisvs",
        "title": "OWASP AISVS (Artificial Intelligence Security Verification Standard) v1.0; testable AI security requirements across 12 chapters at three verification levels (C9 Orchestration & Agentic Action and C10 MCP Security are the agent-specific chapters)",
        "url": "https://github.com/OWASP/AISVS",
        "type": "framework",
        "date": "2026"
      },
      {
        "id": "imda-mgf",
        "title": "Singapore IMDA / AI Verify Foundation, Model AI Governance Framework (MGF) for Agentic AI v1.5 (20 May 2026, updated 5 Jun 2026); four dimensions: assess and bound risks, make humans accountable, technical controls, end-user responsibility",
        "url": "https://www.imda.gov.sg/resources/press-releases-factsheets-and-speeches/factsheets/2026/updated-model-ai-governance-framework-for-agentic-ai",
        "type": "framework",
        "date": "2026"
      },
      {
        "id": "owasp-asi-2026",
        "title": "OWASP Top 10 for Agentic Applications 2026",
        "url": "https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/",
        "type": "framework",
        "date": "2025-12-09"
      },
      {
        "id": "owasp-nhi-2025",
        "title": "OWASP Non-Human Identities Top 10 (2025)",
        "url": "https://owasp.org/www-project-non-human-identities-top-10/",
        "type": "framework",
        "date": "2025"
      },
      {
        "id": "owasp-llm-2025",
        "title": "OWASP Top 10 for LLM Applications (2025)",
        "url": "https://genai.owasp.org/llm-top-10/",
        "type": "framework",
        "date": "2025"
      },
      {
        "id": "owasp-agentic-threats",
        "title": "OWASP Agentic AI, Threats and Mitigations",
        "url": "https://genai.owasp.org/resource/agentic-ai-threats-and-mitigations/",
        "type": "framework",
        "date": "2025"
      },
      {
        "id": "csa-aicm",
        "title": "CSA AI Controls Matrix (AICM) v1.1.0 — 247 control objectives across 18 domains (released 2026-06-22); four-stakeholder responsibility model; crosswalked to NIST AI 600-1 / ISO 42001 / EU AI Act. This crosswalk is re-audited cell-by-cell against the v1.1 catalog: the IAM, AIS, LOG, STA, and TVM domains renumbered from v1.0.3, and all cited ids were corrected and per-cell evidenced (see CORRECTIONS.md). The STAR AI tags are re-derived against the v1.1 AI-Specific control set (32 controls; 14 of ours map to one).",
        "url": "https://cloudsecurityalliance.org/blog/2025/07/10/introducing-the-csa-ai-controls-matrix-a-comprehensive-framework-for-trustworthy-ai",
        "type": "framework",
        "date": "2025-07-10",
        "flagship": true
      },
      {
        "id": "csa-maestro",
        "title": "CSA MAESTRO, seven-layer agentic threat model (L1-L7)",
        "url": "https://cloudsecurityalliance.org/blog/2025/02/06/agentic-ai-threat-modeling-framework-maestro",
        "type": "framework",
        "date": "2025-02-06",
        "flagship": true
      },
      {
        "id": "nist-ai-rmf",
        "title": "NIST AI Risk Management Framework (Govern/Map/Measure/Manage)",
        "url": "https://www.nist.gov/itl/ai-risk-management-framework",
        "type": "framework",
        "date": "2023"
      },
      {
        "id": "nist-ai-600-1",
        "title": "NIST AI 600-1, Generative AI Profile (the doc AICM crosswalks to)",
        "url": "https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-generative-artificial-intelligence",
        "type": "framework",
        "date": "2024-07"
      },
      {
        "id": "nist-nccoe-agent-id",
        "title": "NIST NCCoE, Accelerating the Adoption of Software and AI Agent Identity and Authorization (concept paper, no control IDs)",
        "url": "https://csrc.nist.gov/pubs/other/2026/02/05/accelerating-the-adoption-of-software-and-ai-agent/ipd",
        "type": "framework",
        "date": "2026-02-05"
      },
      {
        "id": "nist-cosais",
        "title": "NIST SP 800-53 Control Overlays for Securing AI Systems (COSAiS); multi-agent overlay forthcoming, no published control IDs yet",
        "url": "https://csrc.nist.gov/projects/cosais",
        "type": "framework",
        "date": "2026",
        "claim": false
      },
      {
        "id": "nist-caisi",
        "title": "NIST CAISI (the center), AI Agent Standards Initiative (the program, launched Feb 17 2026)",
        "url": "https://www.nist.gov/artificial-intelligence/ai-agent-standards-initiative",
        "type": "framework",
        "date": "2026-02-17"
      },
      {
        "id": "iso-42001",
        "title": "ISO/IEC 42001:2023, AI management system (Annex A controls A.2-A.10)",
        "url": "https://www.iso.org/standard/42001",
        "type": "standard",
        "date": "2023"
      },
      {
        "id": "iso-ai-series",
        "title": "ISO/IEC 27090 (AI security), 27091 (AI privacy), 42005 (AI impact assessment)",
        "url": "https://www.iso.org/committee/6794475.html",
        "type": "standard",
        "date": "2025"
      },
      {
        "id": "eu-ai-act-art12",
        "title": "EU AI Act Article 12, record-keeping (automatic event logging over the system lifetime; retention set elsewhere)",
        "url": "https://artificialintelligenceact.eu/article/12/",
        "type": "regulation",
        "date": "2024"
      },
      {
        "id": "eu-ai-act-art26",
        "title": "EU AI Act Article 26(6), deployer obligation to retain automatically generated logs for at least 6 months",
        "url": "https://artificialintelligenceact.eu/article/26/",
        "type": "regulation",
        "date": "2024"
      },
      {
        "id": "eu-ai-act-art9",
        "title": "EU AI Act Article 9, risk management system",
        "url": "https://artificialintelligenceact.eu/article/9/",
        "type": "regulation",
        "date": "2024"
      },
      {
        "id": "cisa-agentic",
        "title": "CISA — Careful Adoption of Agentic Artificial Intelligence (AI) Services (5 risk classes: privilege, design/config, behavioural, structural, accountability)",
        "url": "https://www.cisa.gov/resources-tools/resources/careful-adoption-agentic-ai-services",
        "type": "framework",
        "date": "2026-05-01"
      },
      {
        "id": "mitre-atlas",
        "title": "MITRE ATLAS, adversarial threat landscape for AI systems (AML.T… technique IDs; agentic techniques added v5.x)",
        "url": "https://atlas.mitre.org",
        "type": "framework",
        "date": "2026"
      },
      {
        "id": "mitre-attack",
        "title": "MITRE ATT&CK, enterprise technique IDs (e.g. T1567 Exfiltration Over Web Service)",
        "url": "https://attack.mitre.org",
        "type": "framework",
        "date": "2026"
      },
      {
        "id": "aws-scoping-matrix",
        "title": "AWS Agentic AI Security Scoping Matrix, scopes agent risk by level of agency",
        "url": "https://aws.amazon.com/blogs/security/the-agentic-ai-security-scoping-matrix-a-framework-for-securing-autonomous-ai-systems/",
        "type": "framework",
        "date": "2025-11-21"
      },
      {
        "id": "cosai-oasis",
        "title": "Coalition for Secure AI (CoSAI) at OASIS, cross-vendor standards venue",
        "url": "https://www.coalitionforsecureai.org/",
        "type": "framework",
        "date": "2025"
      },
      {
        "id": "anthropic-attack-navigator",
        "title": "Anthropic, LLM ATT&CK Navigator + ARiES (832 accounts, 13,873 actions, 482 techniques, all 14 tactics; ARiES additive scoring)",
        "url": "https://www.anthropic.com/research/attack-navigator",
        "type": "research",
        "date": "2026-06-03"
      },
      {
        "id": "anthropic-gtg1002",
        "title": "Anthropic, Disrupting the first AI-orchestrated cyber-espionage campaign (GTG-1002)",
        "url": "https://www.anthropic.com/news/disrupting-AI-espionage",
        "type": "research",
        "date": "2025-11-13"
      },
      {
        "id": "anthropic-mcp",
        "title": "Anthropic, Model Context Protocol (agent-to-tool standard)",
        "url": "https://www.anthropic.com/news/model-context-protocol",
        "type": "spec",
        "date": "2024-11-25"
      },
      {
        "id": "anthropic-glasswing",
        "title": "Anthropic, Project Glasswing (defensive frontier-capability program)",
        "url": "https://www.anthropic.com/glasswing",
        "type": "vendor",
        "date": "2026",
        "claim": true
      },
      {
        "id": "google-secure-agents",
        "title": "Google, An Introduction to Google's Approach for Secure AI Agents (three principles: human controllers, limited powers, observable actions)",
        "url": "https://research.google/pubs/an-introduction-to-googles-approach-for-secure-ai-agents/",
        "type": "vendor",
        "date": "2025-05"
      },
      {
        "id": "google-saif2",
        "title": "Google, SAIF 2.0 + Agent Risk Map (donated to CoSAI)",
        "url": "https://blog.google/innovation-and-ai/technology/safety-security/ai-security-frontier-strategy-tools/",
        "type": "vendor",
        "date": "2025-10-06"
      },
      {
        "id": "deepmind-agi-safety",
        "title": "Google DeepMind, An Approach to Technical AGI Safety and Security (arXiv 2504.01849)",
        "url": "https://arxiv.org/abs/2504.01849",
        "type": "research",
        "date": "2025-04"
      },
      {
        "id": "deepmind-ai-control",
        "title": "Google DeepMind, Securing the future of AI agents (AI Control Roadmap; detection tiers D1-D4, response tiers R1-R3; internal agents as insider threat)",
        "url": "https://deepmind.google/blog/securing-the-future-of-ai-agents/",
        "type": "research",
        "date": "2026-06-18"
      },
      {
        "id": "ms-failure-taxonomy",
        "title": "Microsoft AI Red Team, Taxonomy of Failure Mode in Agentic AI Systems (memory poisoning flagged insidious)",
        "url": "https://www.microsoft.com/en-us/security/blog/2025/04/24/new-whitepaper-outlines-the-taxonomy-of-failure-modes-in-ai-agents/",
        "type": "vendor",
        "date": "2025-04-24"
      },
      {
        "id": "ms-agent-governance-toolkit",
        "title": "Microsoft, Agent Governance Toolkit (open source; maps all 10 OWASP agentic risks to deterministic runtime enforcement; DID + Ed25519)",
        "url": "https://opensource.microsoft.com/blog/2026/04/02/introducing-the-agent-governance-toolkit-open-source-runtime-security-for-ai-agents/",
        "type": "vendor",
        "date": "2026-04-02"
      },
      {
        "id": "ms-entra-agent-id",
        "title": "Microsoft, Entra Agent ID (non-human identity for agents in the directory)",
        "url": "https://learn.microsoft.com/en-us/entra/agent-id/",
        "type": "vendor",
        "date": "2025",
        "claim": true
      },
      {
        "id": "ms-mxc",
        "title": "Microsoft Execution Containers (MXC), policy-driven agent sandbox: Process → Session (current) → Micro-VM (roadmap)",
        "url": "https://github.com/microsoft/mxc",
        "type": "vendor",
        "date": "2026-06-02",
        "claim": true
      },
      {
        "id": "ms-agent365",
        "title": "Microsoft, Agent 365 (registry/control plane for agents; shadow-agent discovery)",
        "url": "https://techcommunity.microsoft.com/blog/agent-365-blog",
        "type": "vendor",
        "date": "2026",
        "claim": true
      },
      {
        "id": "openai-governing-agentic",
        "title": "OpenAI, Practices for Governing Agentic AI Systems (oversight, interruptibility, accountability)",
        "url": "https://openai.com/index/practices-for-governing-agentic-ai-systems/",
        "type": "vendor",
        "date": "2023-12"
      },
      {
        "id": "openai-preparedness-v2",
        "title": "OpenAI, Preparedness Framework v2 (tracked-risk thresholds, deployment gating)",
        "url": "https://openai.com/index/preparedness-framework/",
        "type": "vendor",
        "date": "2025-04-15"
      },
      {
        "id": "openai-agent-builder-safety",
        "title": "OpenAI, Agent Builder safety guide (prompt-injection mitigations)",
        "url": "https://developers.openai.com/api/docs/guides/agent-builder-safety",
        "type": "vendor",
        "date": "2025",
        "claim": true
      },
      {
        "id": "openai-bug-bounty",
        "title": "OpenAI, Safety Bug Bounty (Bugcrowd; agentic abuse and safety)",
        "url": "https://openai.com/index/safety-bug-bounty/",
        "type": "vendor",
        "date": "2026-03-25"
      },
      {
        "id": "okta-cross-app-access",
        "title": "Okta, Cross App Access (OAuth extension for agent-to-app delegation)",
        "url": "https://www.okta.com/newsroom/press-releases/okta-introduces-cross-app-access-to-help-secure-ai-agents-in-the/",
        "type": "vendor",
        "date": "2025-06-23",
        "claim": true
      },
      {
        "id": "auth0-genai",
        "title": "Okta / Auth0, Auth for GenAI (async authorization, RAG authz, Token Vault)",
        "url": "https://www.okta.com/newsroom/press-releases/auth0-platform-innovation/",
        "type": "vendor",
        "date": "2025-04-09",
        "claim": true
      },
      {
        "id": "ping-identity-ai",
        "title": "Ping Identity, Identity for AI (Agent IAM Core, Agent Gateway, Agent Detection)",
        "url": "https://press.pingidentity.com/2026-03-24-Ping-Identity-Defines-the-Runtime-Identity-Standard-for-Autonomous-AI",
        "type": "vendor",
        "date": "2026-03-24",
        "claim": true
      },
      {
        "id": "a2a-spec",
        "title": "Agent2Agent (A2A) Protocol v1.0.0 (Linux Foundation), signed Agent Cards (optional JWS/JCS)",
        "url": "https://a2a-protocol.org/v1.0.0/specification/",
        "type": "spec",
        "date": "2026"
      },
      {
        "id": "databricks-dasf3",
        "title": "Databricks, AI Security Framework (DASF) v3.0 (97 risks, 73 controls; Unity Catalog / Unity AI Gateway governance)",
        "url": "https://www.databricks.com/blog/agentic-ai-security-new-risks-and-controls-databricks-ai-security-framework-dasf-v30",
        "type": "vendor",
        "date": "2026-03-20",
        "claim": true
      },
      {
        "id": "crowdstrike-aidr",
        "title": "CrowdStrike, Securing AI Where It Executes / Falcon AIDR (endpoint as runtime enforcement point; OS process-lineage)",
        "url": "https://www.crowdstrike.com/en-us/blog/what-security-teams-need-to-know-about-openclaw-ai-super-agent/",
        "type": "vendor",
        "date": "2026",
        "claim": true
      },
      {
        "id": "beyondidentity-ceros",
        "title": "Beyond Identity, Ceros (agentic AI trust layer for MCP; device-bound passkeys)",
        "url": "https://www.beyondidentity.com/resource/introducing-ceros-the-agentic-ai-trust-layer-now-open-for-public-preview",
        "type": "vendor",
        "date": "2026-06-16",
        "claim": true
      },
      {
        "id": "rfc8693",
        "title": "RFC 8693, OAuth 2.0 Token Exchange (delegation via act claim, impersonation, may_act)",
        "url": "https://www.rfc-editor.org/info/rfc8693/",
        "type": "standard",
        "date": "2020-01"
      },
      {
        "id": "oauth21",
        "title": "OAuth 2.1 (IETF draft, not yet an RFC)",
        "url": "https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1",
        "type": "spec",
        "date": "2026"
      },
      {
        "id": "oidc-ciba",
        "title": "OpenID Connect CIBA Core 1.0 (Final), decoupled out-of-band approval",
        "url": "https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0-final.html",
        "type": "standard",
        "date": "2021"
      },
      {
        "id": "mcp-authorization",
        "title": "MCP Authorization, OAuth 2.1 resource-server model + RFC 9728 + RFC 8707 (cite dated revision)",
        "url": "https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization",
        "type": "spec",
        "date": "2025-11-25"
      },
      {
        "id": "spiffe",
        "title": "SPIFFE, workload identity standard (SVIDs; short-lived, auto-rotated). SPIRE = reference implementation",
        "url": "https://spiffe.io/docs/latest/spiffe-about/overview/",
        "type": "standard",
        "date": "2025"
      },
      {
        "id": "ngac",
        "title": "NGAC, Next Generation Access Control (ANSI/INCITS 565-2020; NIST SP 800-178 is a comparison paper)",
        "url": "https://csrc.nist.gov/pubs/sp/800/178/final",
        "type": "standard",
        "date": "2020"
      },
      {
        "id": "did-vc",
        "title": "W3C DID Core v1.0 + Verifiable Credentials Data Model v2.0 (portable non-human identity)",
        "url": "https://www.w3.org/TR/did-1.0/",
        "type": "standard",
        "date": "2025-05-15"
      },
      {
        "id": "openssf-model-signing",
        "title": "OpenSSF Model Signing (OMS) + Sigstore model-transparency (sign and verify model weights)",
        "url": "https://github.com/sigstore/model-transparency",
        "type": "standard",
        "date": "2025"
      },
      {
        "id": "agentdojo",
        "title": "AgentDojo, prompt-injection / tool-misuse benchmark (629 injection cases)",
        "url": "https://github.com/ethz-spylab/agentdojo",
        "type": "benchmark",
        "date": "2025"
      },
      {
        "id": "injecagent",
        "title": "InjecAgent, indirect prompt-injection benchmark for tool-using agents",
        "url": "https://github.com/uiuc-kang-lab/InjecAgent",
        "type": "benchmark",
        "date": "2024"
      },
      {
        "id": "agent-security-bench",
        "title": "Agent Security Bench (ASB), memory-poisoning + IPI evaluation",
        "url": "https://arxiv.org/abs/2410.02644",
        "type": "benchmark",
        "date": "2025"
      },
      {
        "id": "garak",
        "title": "garak, LLM vulnerability scanner (jailbreak, injection, leakage probes)",
        "url": "https://github.com/NVIDIA/garak",
        "type": "benchmark",
        "date": "2025"
      },
      {
        "id": "promptfoo",
        "title": "promptfoo, LLM/agent red-team and eval harness (CI-gateable)",
        "url": "https://www.promptfoo.dev/",
        "type": "benchmark",
        "date": "2025"
      },
      {
        "id": "gvisor",
        "title": "gVisor (runsc), userspace kernel / syscall interception sandbox",
        "url": "https://gvisor.dev",
        "type": "vendor",
        "date": "2025"
      },
      {
        "id": "firecracker",
        "title": "Firecracker / Kata Containers, hypervisor-backed micro-VM isolation",
        "url": "https://firecracker-microvm.github.io",
        "type": "vendor",
        "date": "2025"
      },
      {
        "id": "aws-egress-domains",
        "title": "AWS, controlling which domains AI agents can reach (SNI filtering + Route 53 DNS Firewall)",
        "url": "https://aws.amazon.com/blogs/machine-learning/control-which-domains-your-ai-agents-can-access/",
        "type": "vendor",
        "date": "2025"
      },
      {
        "id": "claude-sandbox-bypass",
        "title": "Claude Code network-allowlist bypass (SOCKS5 null-byte hostname), real egress-escape regression case",
        "url": "https://oddguan.com/blog/second-time-same-sandbox-anthropic-claude-code-network-allowlist-bypass-data-exfiltration/",
        "type": "research",
        "date": "2025"
      },
      {
        "id": "gitguardian-mcp-secrets",
        "title": "GitGuardian, secrets found in MCP configuration files (credential-in-context exposure)",
        "url": "https://blog.gitguardian.com/",
        "type": "research",
        "date": "2026",
        "claim": true
      },
      {
        "id": "owasp-finbot-ctf",
        "title": "OWASP GenAI, FinBot CTF (agentic abuse capture-the-flag)",
        "url": "https://genai.owasp.org/",
        "type": "benchmark",
        "date": "2025"
      },
      {
        "id": "aismm",
        "title": "CSA AI Security Maturity Model (AISMM) v3.7 — flagship CSA maturity model (2026-05-07) with a per-control AICM v1.0.3 crosswalk",
        "type": "framework",
        "date": "2026-05-07",
        "flagship": true,
        "url": "https://cloudsecurityalliance.org/artifacts/ai-security-maturity-model"
      },
      {
        "id": "cisa-sbom-ai",
        "title": "CISA — Software Bill of Materials for AI: Minimum Elements (7 clusters: metadata, system-level properties, models, datasets, infrastructure, security properties, KPIs)",
        "url": "https://www.cisa.gov/resources-tools/resources/software-bill-materials-ai-minimum-elements",
        "type": "regulation",
        "date": "2026-05-12"
      },
      {
        "id": "plaskett-coding-agent-security",
        "title": "Alex Plaskett — An Introduction to AI Coding Agent Security (public v2.0): permission models, sandbox escapes, agent tools, config files & hooks, and untrusted-workspace attacks across Claude Code, Cursor, and Codex",
        "type": "research",
        "date": "2026",
        "claim": true
      },
      {
        "id": "semantic-sanitizer-ref",
        "title": "Reference implementation: in-path Semantic Parameter Sanitizer (fail-closed; deterministic SQL/shell/script/override patterns + null-byte strip, optional fine-tuned classifier) — project artifact",
        "type": "research",
        "date": "2026"
      },
      {
        "id": "biv-skills",
        "title": "Wu, Li & Liu — Behavioral Integrity Verification for AI Agent Skills (arXiv 2605.11770): 49,943 skills, ~80% deviate from declared behavior, 18.9% adversarial, 5% multi-stage attack chains; BIV via static analysis + capability extraction",
        "url": "https://arxiv.org/abs/2605.11770",
        "type": "research",
        "date": "2026-05-12"
      },
      {
        "id": "containment-gap",
        "title": "The Containment Gap: How Deployed Agentic AI Frameworks Fail Public-Facing Safety Requirements (arXiv 2606.12797) — audits LangChain/AutoGPT/OpenAI Agents SDK; memory-integrity (P3) and reasoning/execution-separation (P1/P2) failures; one memory-poisoning write corrupts 5 backends; 2 deterministic sub-ms interventions",
        "url": "https://arxiv.org/abs/2606.12797",
        "type": "research",
        "date": "2026-06"
      },
      {
        "id": "csa-agent-survey",
        "title": "CSA + Strata Identity — Securing Autonomous AI Agents (2026 survey, ~285 practitioners): 40% have agents in production, only 18% highly confident in agent IAM, 84% doubt passing an agent-behavior compliance audit, ownership fragmented across Security 39% / IT 32% / AI 13%",
        "url": "https://cloudsecurityalliance.org/artifacts/securing-autonomous-ai-agents",
        "type": "framework",
        "date": "2026",
        "flagship": true
      },
      {
        "id": "ms-pyrit",
        "title": "Microsoft Azure AI Foundry control plane + PyRIT (Python Risk Identification Tool): task adherence, prompt shields, automated agent red-teaming",
        "url": "https://github.com/Azure/PyRIT",
        "type": "vendor",
        "date": "2026",
        "claim": true
      },
      {
        "id": "nist-fasttrack",
        "title": "NIST / FedRAMP fast-track agentic-AI policy direction (expected/forthcoming): cryptographic agent identity (SPIFFE/DID) + mandatory pre-execution checks / kill-switches for high-stakes automation",
        "type": "regulation",
        "date": "2026",
        "claim": true
      }
    ],
    "asi_coverage": [
      {
        "id": "ASI01",
        "title": "Agent Goal Hijack",
        "controls": [
          "RT-02",
          "PT-04",
          "EC-06",
          "PT-07",
          "RT-08",
          "PT-08"
        ]
      },
      {
        "id": "ASI02",
        "title": "Tool Misuse & Exploitation",
        "controls": [
          "PT-02",
          "EC-04",
          "IA-03",
          "EC-09",
          "PT-06",
          "AS-07",
          "PT-07"
        ]
      },
      {
        "id": "ASI03",
        "title": "Agent Identity & Privilege Abuse",
        "controls": [
          "IA-01",
          "IA-02",
          "IA-03",
          "IA-04",
          "GV-08",
          "IA-06"
        ]
      },
      {
        "id": "ASI04",
        "title": "Agentic Supply Chain Compromise",
        "controls": [
          "PT-03",
          "AS-02",
          "AS-06",
          "EC-09",
          "AS-07",
          "PT-07"
        ]
      },
      {
        "id": "ASI05",
        "title": "Unexpected Code Execution",
        "controls": [
          "EC-01",
          "EC-04",
          "EC-09",
          "PT-06"
        ]
      },
      {
        "id": "ASI06",
        "title": "Memory & Context Poisoning",
        "controls": [
          "EC-03",
          "EC-07",
          "PT-04",
          "RT-04"
        ]
      },
      {
        "id": "ASI07",
        "title": "Insecure Inter-Agent Communication",
        "controls": [
          "PT-01",
          "PT-04",
          "PT-05",
          "PT-08",
          "IA-06",
          "RT-02",
          "RT-04",
          "RT-07"
        ]
      },
      {
        "id": "ASI08",
        "title": "Cascading Agent Failures",
        "controls": [
          "GV-03",
          "GV-06",
          "PT-05",
          "GV-08",
          "GV-11",
          "EC-06",
          "RT-04"
        ]
      },
      {
        "id": "ASI09",
        "title": "Human-Agent Trust Exploitation",
        "controls": [
          "GV-07",
          "GV-10"
        ]
      },
      {
        "id": "ASI10",
        "title": "Rogue Agents",
        "controls": [
          "IA-05",
          "RT-04",
          "GV-01",
          "EC-10",
          "IA-01",
          "RT-07"
        ],
        "note": "Also a boundary case for gap3 (securing the security layer)."
      }
    ],
    "controls": [
      {
        "id": "IA-01",
        "tiers": [
          "autonomy",
          "external-reach"
        ],
        "enforcement_point": "Identity provider / directory + a workload-identity issuer (e.g. SPIFFE/SPIRE control plane); bound at issuance, never in app code.",
        "layer": "identity",
        "plane": "control",
        "name": "Give every agent its own distinct identity, never a shared or human login",
        "plain": "Each agent gets its own name badge, so you always know which one did what.",
        "threat": {
          "tags": [
            "ASI03",
            "NHI10"
          ],
          "desc": "Agents that log in as a person, or share one account, inherit far more access than they need, and you can't tell them apart when something goes wrong."
        },
        "standard": [
          "SPIFFE workload identity",
          "W3C DID / Verifiable Credentials",
          "directory-issued agent identity"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.4.1 (unique per-agent cryptographic identity); C5.1.2 (short-lived signed agent tokens)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C5 Access Control & Identity",
              "rationale": "Per-agent distinct identity is the agentic case of AISVS unique cryptographic agent identity and short-lived signed agent tokens.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.2 (robust identity & permissions framework); §2.2.1 (per-agent identity tokens)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.2, §2.2.1",
              "rationale": "Give every agent its own distinct identity, never a shared or human login maps to IMDA MGF robust identity & permissions framework; per-agent identity tokens.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "IAM-03 (identity inventory); IAM-12 (uniquely identifiable users)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-03, IAM-12",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-03, IAM-12) correspond to \"Give every agent its own distinct identity, never a shared or human login\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Give every agent its own distinct identity, never a shared or human login\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI03 Identity & Privilege Abuse; NHI10 Human Use of NHI",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI03, NHI10",
              "rationale": "Give every agent its own distinct identity, never a shared or human login addresses OWASP ASI03 Identity & Privilege Abuse; NHI10 Human Use of NHI.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-02.2, IAM-03.1, IAM-04.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-02.2, IAM-03.1, IAM-04.1",
              "rationale": "Give every agent its own distinct identity, never a shared or human login maps to AISMM control(s) IAM-02.2, IAM-03.1, IAM-04.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft (Entra Agent ID)",
          "Ping Identity",
          "Okta",
          "SPIRE"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "spiffe",
          "did-vc",
          "nist-nccoe-agent-id",
          "owasp-nhi-2025",
          "ping-identity-ai",
          "ms-entra-agent-id",
          "aismm",
          "nist-fasttrack"
        ],
        "implementation": {
          "pattern": "Every agent instance is registered as its own workload identity (for example a SPIFFE SVID or a directory agent object) and authenticates as itself, never as the user who started it and never with a shared service account. Give the stable, logical agent a governed identity, and give each runtime instance or delegated task a short-lived credential tied back to that identity and its parent.",
          "steps": [
            "Register each agent as a distinct identity in your directory or workload-identity system.",
            "Bind that identity to a cryptographically verifiable credential (SPIFFE SVID, signed agent object) that rotates automatically.",
            "Forbid agents from using human user logins or a single shared service account.",
            "Tie the identity to the agent's owner, purpose, and permitted scope so it can be governed and offboarded."
          ],
          "anti_patterns": [
            "agents running as the developer's own user account",
            "one shared service account across many agents",
            "an agent identity that never expires or rotates"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Inventory every running agent and confirm a one-to-one link between each agent instance and its own identity. Flag any agent authenticating as a human user, a shared account, or an unregistered principal.",
              "ref": "spiffe"
            }
          ],
          "runtime_test": [
            {
              "text": "Have agent B try to authenticate as agent A's identity, mutual-TLS / SVID validation must reject it.",
              "ref": "spiffe"
            },
            {
              "text": "Confirm from telemetry that no agent process is presenting a human user's credentials.",
              "ref": "owasp-nhi-2025"
            }
          ],
          "evidence": [
            {
              "text": "An agent-identity register, diffed over time, showing issuance, rotation, and de-provisioning events.",
              "ref": "aismm"
            }
          ]
        },
        "lenses": {
          "engineering": "Issue each agent a SPIFFE SVID or directory identity at start-up; never pass it your own credentials.",
          "detection": "Alert when an agent process authenticates with a human account or an identity you never issued.",
          "red_team": "Try to make one agent impersonate another, or run an agent under a borrowed user login.",
          "grc": "Maintain an agent register tying every identity to an owner and purpose, this is your who-did-what record.",
          "secops": "When an agent misbehaves, its distinct identity is what lets you isolate just that one."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "gap1"
      },
      {
        "id": "IA-02",
        "tiers": [
          "external-reach",
          "data-sensitivity"
        ],
        "enforcement_point": "Token broker / OAuth authorization server doing token exchange; the minting key stays in the broker, outside the agent.",
        "layer": "identity",
        "plane": "control",
        "name": "Hand out short-lived, task-scoped keys (no long-lived secrets)",
        "plain": "Give the agent a day-pass for one job, not a master key it keeps forever.",
        "threat": {
          "tags": [
            "ASI03",
            "NHI7"
          ],
          "desc": "Long-lived API keys and standing permissions are the number-one way non-human identities get abused: the secret leaks or the agent is hijacked, and the access is still valid weeks later."
        },
        "standard": [
          "cycle-scoped credential of intent (a pre-declared per-run authorization ceiling)",
          "OAuth 2.1 (IETF draft)",
          "Token Exchange (RFC 8693)",
          "OIDC/CIBA"
        ],
        "mappings": {
          "aisvs": {
            "value": "C5.1.2 (short-lived, minimal-scope agent tokens); C9.4.3 (credential rotation); C9.5.4 (no secrets in model context)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C5 Access Control & Identity; C9 Orchestration & Agentic Action",
              "rationale": "Short-lived, task-scoped credentials with rotation and no secrets in context is the AISVS agent-token lifecycle.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.2.1 (scoped API keys); §2.1.2 (least-privilege permissions)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.1, §2.1.2",
              "rationale": "Hand out short-lived, task-scoped keys (no long-lived secrets) maps to IMDA MGF scoped API keys; least-privilege permissions.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "IAM-10 (privileged access, time-limited); IAM-14 (credential management)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-10, IAM-14",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-10, IAM-14) correspond to \"Hand out short-lived, task-scoped keys (no long-lived secrets)\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Hand out short-lived, task-scoped keys (no long-lived secrets)\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "NHI7 Long-Lived Secrets; ASI03 Identity & Privilege Abuse",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP NHI7, ASI03",
              "rationale": "Hand out short-lived, task-scoped keys (no long-lived secrets) addresses OWASP NHI7 Long-Lived Secrets; ASI03 Identity & Privilege Abuse.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-05.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-05.1",
              "rationale": "Hand out short-lived, task-scoped keys (no long-lived secrets) maps to AISMM control(s) IAM-05.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Ping Identity",
          "Okta (Auth0 Auth for GenAI)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "rfc8693",
          "oauth21",
          "oidc-ciba",
          "owasp-nhi-2025",
          "auth0-genai",
          "ping-identity-ai",
          "aismm",
          "csa-agent-survey"
        ],
        "implementation": {
          "pattern": "The agent holds no reusable, long-lived secret of its own (a hardware- or platform-backed mechanism may still attest its identity, but that is not a copyable key). At the moment it needs to act, it presents its own identity (IA-01) to a broker, which mints a task-scoped access token bound to one tool or resource, set to expire in minutes. The broker injects that short-lived credential at run time.",
          "steps": [
            "Register each agent as its own identity first (depends on IA-01).",
            "Mint a task-scoped token via RFC 8693 token-exchange at the identity provider or broker, with scope bound to the specific tool or resource.",
            "Set the lifetime to the length of the task (minutes), not days; require a fresh mint, not a refresh, for a new scope.",
            "Keep no long-lived secret on the agent host, in config, in the repo, or in memory; the broker supplies the credential at run time.",
            "For a bounded run such as a payroll cycle, issue a cycle-scoped credential of intent that pre-declares the authorization ceiling for the whole run, and verify every action against it (IMDA MGF, Terminal 3)."
          ],
          "anti_patterns": [
            "static API keys in config files, environment variables, or the repo",
            "one shared token reused across tasks",
            "refresh tokens that outlive the task"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Scan the agent host, environment, repo, config, and memory store for any credential whose lifetime exceeds the policy maximum; assert zero.",
              "ref": "owasp-nhi-2025"
            },
            {
              "text": "Confirm each minted token's scope is for one tool or resource, never a wildcard.",
              "ref": "rfc8693"
            }
          ],
          "runtime_test": [
            {
              "text": "Replay a captured token after its lifetime has expired, it must be rejected.",
              "ref": "rfc8693"
            },
            {
              "text": "Present a captured token to a tool outside its bound scope, it must be rejected.",
              "ref": "rfc8693"
            },
            {
              "text": "Drive the agent (via an AgentDojo scope-escalation scenario) to request an action the user never authorised; the scoped token must block it.",
              "ref": "agentdojo"
            }
          ],
          "evidence": [
            {
              "text": "Broker / identity-provider token-issuance log for every call, requesting agent identity, granted scope, lifetime, and exchange chain, retained for audit and EU AI Act Article 12.",
              "ref": "eu-ai-act-art12"
            },
            {
              "text": "Continuous secret-scanner report from CI and host showing zero static long-lived secrets (ties to AS-02).",
              "ref": "owasp-nhi-2025"
            }
          ]
        },
        "lenses": {
          "engineering": "Swap stored API keys for run-time token-exchange: present the agent's identity, get back a minutes-long token scoped to one tool.",
          "detection": "Alert on any tool call presenting a reused or long-lived bearer token instead of a freshly minted one.",
          "red_team": "Steal a token and replay it after expiry and outside its scope, both should fail. Grep the repo and env for static keys.",
          "grc": "The broker's issuance log (who got what scope, for how long) is your evidence the control holds, and it maps to EU AI Act Art. 12.",
          "secops": "Short lifetimes mean a stolen token is near-useless minutes later, shrinking the incident."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "IA-03",
        "tiers": [
          "external-reach",
          "irreversibility"
        ],
        "enforcement_point": "Authorization server issuing delegated (act-claim) tokens, plus an out-of-band approval service for sensitive steps.",
        "layer": "identity",
        "plane": "control",
        "name": "Act on the user's behalf with explicit approval for sensitive steps",
        "plain": "The agent borrows the user's permission for a job, and must ask before doing anything risky.",
        "threat": {
          "tags": [
            "ASI03",
            "ASI02"
          ],
          "desc": "If an agent is handed broad delegated power, it can act beyond what the user actually intended, especially after a prompt-injection nudge."
        },
        "standard": [
          "purpose-bound delegation declared before the run",
          "OAuth Token Exchange (delegation via act claim)",
          "OIDC/CIBA",
          "Okta Cross App Access"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.5.2 (scope-limited on-behalf-of delegation token); C9.2.1 (human approval for high-impact steps)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Acting on a user's behalf with approval maps to AISVS scope-limited on-behalf-of delegation plus human approval of high-impact steps.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.2.2 (human approval at significant checkpoints); §2.1.2 (agent limits)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.2, §2.1.2",
              "rationale": "Act on the user's behalf with explicit approval for sensitive steps maps to IMDA MGF human approval at significant checkpoints; agent limits.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "IAM-15 (authorization mechanisms); IAM-12 (uniquely identifiable users)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-15, IAM-12",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-15, IAM-12) correspond to \"Act on the user's behalf with explicit approval for sensitive steps\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern / Manage functions",
              "rationale": "NIST AI RMF Govern / Manage functions: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Act on the user's behalf with explicit approval for sensitive steps\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI03 Identity & Privilege Abuse; ASI02 Tool Misuse",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI03, ASI02",
              "rationale": "Act on the user's behalf with explicit approval for sensitive steps addresses OWASP ASI03 Identity & Privilege Abuse; ASI02 Tool Misuse.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-04.2",
              "rationale": "Act on the user's behalf with explicit approval for sensitive steps maps to AISMM control(s) IAM-04.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Okta (Cross App Access)",
          "Ping Identity"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "rfc8693",
          "oidc-ciba",
          "okta-cross-app-access",
          "auth0-genai",
          "cisa-agentic",
          "aismm"
        ],
        "implementation": {
          "pattern": "When an agent acts for a user, it carries a delegated token that names both the user (the subject) and the agent (the actor), true delegation, not impersonation. Sensitive actions trigger an explicit, out-of-band approval before they proceed.",
          "steps": [
            "Use RFC 8693 token-exchange so the token carries the user as subject and the agent as actor (the act claim).",
            "Gate sensitive actions behind an explicit approval step using OIDC/CIBA or async authorization (push to a separate device, no silent auto-approve).",
            "Bind the delegated scope to the user's actual intent for this task, not their full standing access.",
            "Declare the delegated authority's ceiling before the run begins (which records, which thresholds, which spend cap) rather than granting open-ended delegated access (IMDA MGF, Terminal 3)."
          ],
          "anti_patterns": [
            "the agent impersonating the user with no record that an agent acted",
            "a single broad consent that covers every future action",
            "sensitive actions auto-approved inside the agent loop"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Inspect the token-exchange config: confirm the user's subject token is carried and an actor token identifies the agent (delegation, not impersonation).",
              "ref": "rfc8693"
            },
            {
              "text": "Confirm sensitive scopes require an explicit interactive approval (OIDC/CIBA or async-authz).",
              "ref": "oidc-ciba"
            }
          ],
          "runtime_test": [
            {
              "text": "Use a prompt-injection payload to drive the agent toward an action the user never authorised; the on-behalf-of scope must block it and the approval gate must fire. Run as an AgentDojo banking/workspace scenario.",
              "ref": "agentdojo"
            }
          ],
          "evidence": [
            {
              "text": "Approval log linking each sensitive action to the human who approved it and the delegated token that carried it.",
              "ref": "oidc-ciba"
            }
          ]
        },
        "lenses": {
          "engineering": "Use token-exchange with an actor claim so the token says 'agent acting for user X', and wire sensitive actions to a CIBA push approval.",
          "detection": "Alert when a sensitive action proceeds without a matching approval event.",
          "red_team": "Inject instructions to push the agent past the user's intent; confirm the scope and approval gate stop it.",
          "grc": "Every sensitive action should resolve to a named human approver, that linkage is the record.",
          "secops": "Delegation tokens show both the agent and the user, so you can trace an action to the real authoriser."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "gap1"
      },
      {
        "id": "IA-04",
        "tiers": [
          "autonomy",
          "data-sensitivity"
        ],
        "response": {
          "lever": "revoke",
          "detail": "deny the agent's next tool call; instant revocation contains it short of a full kill"
        },
        "detection_schema": {
          "telemetry": [
            "agent_id",
            "tool_sink",
            "resource",
            "scope",
            "aud",
            "token_jti",
            "policy_epoch",
            "policy_decision_id",
            "decision",
            "deny_reason",
            "cache_hit",
            "revoked_at",
            "decision_latency_ms",
            "pdp_id",
            "pep_id",
            "prior_action_chain"
          ],
          "baseline": "Each agent's normal tool/scope profile, the current policy epoch, and per-PDP decision latency.",
          "alert": "An action allowed against a stale policy epoch or after revoked_at; a token whose audience / resource / scope does not match the sink; a cache_hit masking a revocation; or an allowed step-chain diverging from the task."
        },
        "enforcement_point": "In-path policy decision point (PDP) evaluated on every tool call (ABAC/NGAC), external to the model loop.",
        "layer": "identity",
        "plane": "control",
        "name": "Check permission continuously at run time, not just once at login",
        "plain": "Keep asking 'are you still allowed to do this?' on every action, not only at the start.",
        "threat": {
          "tags": [
            "ASI03"
          ],
          "desc": "An agent that is authorised once at the start can drift, it keeps acting on permissions that should have been revoked. Whatever enforces at run time is the real point of control."
        },
        "standard": [
          "ABAC",
          "NGAC (ANSI/INCITS 565-2020)",
          "Zero Trust (NIST SP 800-207)"
        ],
        "mappings": {
          "mitre": {
            "value": "ATLAS mitigations: AML.M0026 (Privileged AI Agent Permissions Configuration), AML.M0027 (Single-User AI Agent Permissions Configuration)",
            "status": "verified",
            "fit": "supporting",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS mitigations AML.M0026, AML.M0027",
              "rationale": "Check permission continuously at run time, not just once at login implements ATLAS mitigation(s) Privileged AI Agent Permissions Configuration, Single-User AI Agent Permissions Configuration.",
              "verified_on": "2026-06-24"
            }
          },
          "aisvs": {
            "value": "C9.5.3 (authz decided by a policy engine, never the model); C9.5.6 (re-check authz per privileged action); C9.5.1 (fine-grained tool and parameter policy); C5.2.5 (isolated policy decision point)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C5 Access Control & Identity",
              "rationale": "Continuous runtime authorization is the AISVS rule that a policy engine, never the model, decides access and re-checks it per privileged action.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (runtime controls; access controls enforced at the tool layer)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Check permission continuously at run time, not just once at login maps to IMDA MGF runtime controls; access controls enforced at the tool layer."
            }
          },
          "aicm": {
            "value": "IAM-15 (authorization mechanisms); IAM-08 (continuous access review)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-15, IAM-08",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-15, IAM-08) correspond to \"Check permission continuously at run time, not just once at login\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Check permission continuously at run time, not just once at login\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI03 Identity & Privilege Abuse",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI03",
              "rationale": "Check permission continuously at run time, not just once at login addresses OWASP ASI03 Identity & Privilege Abuse.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-04.3, IAM-05.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-04.3, IAM-05.3",
              "rationale": "Check permission continuously at run time, not just once at login maps to AISMM control(s) IAM-04.3, IAM-05.3.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Ping Identity (Agent Gateway)",
          "CrowdStrike"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "ngac",
          "nist-nccoe-agent-id",
          "ping-identity-ai",
          "google-secure-agents",
          "aismm"
        ],
        "implementation": {
          "pattern": "Authorization is evaluated at every tool call by a policy engine in the request path (attribute-based / NGAC), not cached from the start of the session. A policy change takes effect immediately, revoking authority that is already in flight.",
          "steps": [
            "Put a policy engine (ABAC/NGAC) in the request path so each tool call is checked against current policy.",
            "Drive decisions from live attributes (task, risk, time, prior actions), not a token issued once at login.",
            "Make policy changes revoke in-flight authority, not just future sessions.",
            "Evaluate privilege against the running graph of combined session actions, not just the current tool schema, a sequence of individually-allowed actions can satisfy a hijacked goal."
          ],
          "anti_patterns": [
            "authorising once at session start and trusting it for hours",
            "policy changes that only apply to new sessions",
            "the agent itself deciding whether it is allowed",
            "authorising each tool call in isolation while a chain of allowed actions achieves a hijacked objective"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm authorization is evaluated at each tool call by a policy engine in the request path, not cached from session start.",
              "ref": "nist-nccoe-agent-id"
            },
            {
              "text": "Confirm a policy change revokes authority that is already in flight.",
              "ref": "nist-nccoe-agent-id"
            }
          ],
          "runtime_test": [
            {
              "text": "Mid-task, revoke a permission and confirm the agent's next tool call is denied, not allowed to ride the old session.",
              "ref": "nist-nccoe-agent-id"
            }
          ],
          "evidence": [
            {
              "text": "Authorization-decision log from the runtime policy engine: per tool call, the policy version evaluated and the allow/deny result.",
              "ref": "nist-nccoe-agent-id"
            }
          ]
        },
        "lenses": {
          "engineering": "Move from session-start auth to per-call policy checks (OPA/NGAC in the request path); make revocation instant.",
          "detection": "Alert if a tool call succeeds against a permission that was already revoked.",
          "red_team": "Get authorised, have the permission pulled mid-task, then try one more action, it should be denied. Also chain individually-allowed actions toward a hijacked goal and see if sequence-aware authorization catches it.",
          "grc": "The per-call decision log proves authority was checked continuously, not just at login.",
          "secops": "Instant revocation is your fastest containment lever short of a kill switch."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "gap1"
      },
      {
        "id": "IA-05",
        "tiers": [
          "autonomy"
        ],
        "response": {
          "lever": "quarantine / de-provision",
          "detail": "bring an unregistered agent under governance or shut it down"
        },
        "detection_schema": {
          "telemetry": [
            "process_agent_id",
            "issued_identity_match",
            "host",
            "saas_app",
            "first_seen"
          ],
          "baseline": "the inventory of identities you issued",
          "alert": "a process with system access and no issued identity (a shadow agent)"
        },
        "enforcement_point": "Identity-governance / discovery plane reconciling issued identities against processes observed on endpoints and in SaaS.",
        "layer": "identity",
        "plane": "control",
        "name": "Find and inventory every agent, surface the shadow ones",
        "plain": "Keep a live list of every agent running, including the ones nobody told you about.",
        "threat": {
          "tags": [
            "ASI10"
          ],
          "desc": "Unmanaged 'shadow' agents with real system access run without the security team's knowledge, you can't protect what you can't see."
        },
        "standard": [
          "endpoint + SaaS discovery",
          "asset & privilege correlation"
        ],
        "mappings": {
          "aisvs": {
            "value": "C3.1.1 (registry and inventory of deployed artifacts)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C3 Model Lifecycle Management",
              "rationale": "Agent discovery and inventory aligns loosely with the AISVS deployed-artifact registry, which is model-centric, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.2.1 (maintain sufficient visibility & control over agents)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.1",
              "rationale": "Find and inventory every agent, surface the shadow ones maps to IMDA MGF maintain sufficient visibility & control over agents."
            }
          },
          "aicm": {
            "value": "IAM-03 (identity inventory); CCC-06 (change-management baseline)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-03, CCC-06",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-03, CCC-06) correspond to \"Find and inventory every agent, surface the shadow ones\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map function",
              "rationale": "NIST AI RMF Map function: establish context and identify and categorise the AI risks. \"Find and inventory every agent, surface the shadow ones\" is a corresponding risk-identification activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.4.2 (resource documentation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI10 Rogue Agents",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI10",
              "rationale": "Find and inventory every agent, surface the shadow ones addresses OWASP ASI10 Rogue Agents.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "ORG-02.1, ORG-04.2, IAM-02.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM ORG-02.1, ORG-04.2, IAM-02.2",
              "rationale": "Find and inventory every agent, surface the shadow ones maps to AISMM control(s) ORG-02.1, ORG-04.2, IAM-02.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "CrowdStrike",
          "Microsoft (Agent 365)",
          "Ping Identity"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "cisa-agentic",
          "crowdstrike-aidr",
          "ms-agent365",
          "aismm",
          "csa-agent-survey"
        ],
        "implementation": {
          "pattern": "Continuously reconcile the identities you issued (IA-01) against the agent processes actually observed on endpoints and in SaaS. Any agent with system access and no issued identity is a finding.",
          "steps": [
            "Discover agent processes from endpoint and SaaS telemetry.",
            "Reconcile that against your agent-identity register (IA-01).",
            "Flag any agent with system access that has no issued identity, and bring it under governance or shut it down."
          ],
          "anti_patterns": [
            "relying on a manual spreadsheet of agents",
            "discovering agents only during an incident",
            "no owner for un-registered agents"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm the discovery source covers both endpoints and SaaS, and reconciles against the identity register.",
              "ref": "crowdstrike-aidr"
            }
          ],
          "runtime_test": [
            {
              "text": "Spin up an unregistered 'shadow' agent with a real API key and confirm discovery flags it within the detection window.",
              "ref": "crowdstrike-aidr"
            }
          ],
          "evidence": [
            {
              "text": "Periodic reconciliation report: discovered agents vs issued identities, with the gap list and its remediation.",
              "ref": "aismm"
            }
          ]
        },
        "lenses": {
          "engineering": "Feed endpoint/SaaS agent signals into a reconciliation job against your identity register.",
          "detection": "Alert on any agent process with system access that has no issued identity.",
          "red_team": "Launch an unsanctioned agent and measure how long until it's discovered.",
          "grc": "The reconciliation report is your evidence that no ungoverned agents are operating.",
          "secops": "Shadow-agent discovery is often the first warning of a rogue or compromised agent."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "IA-06",
        "tiers": [
          "irreversibility",
          "external-reach"
        ],
        "enforcement_point": "The runtime enforcement plane (RA-01): each hop signs its contribution with its own workload identity (IA-01) before the next hop acts; the chain is verified end to end and written to the GV-02 store.",
        "layer": "identity",
        "plane": "control",
        "matrix_thesis": true,
        "thesis_type": "compensating",
        "readiness": "emerging",
        "name": "Bind a signed, end-to-end provenance chain to every agent action",
        "plain": "Sign every hand-off so you can prove exactly who and what led to any action: the person, the agents, and the tools.",
        "threat": {
          "tags": [],
          "desc": "Tamper-evident storage (GV-02) proves the log was not altered, but not who actually caused the action. In a chain (human to orchestrator to sub-agent to tool), a forged or replayed hand-off, or a sub-agent acting beyond its delegation, leaves the record pointing at the wrong actor. Without a signed lineage binding every hop, attribution collapses exactly when an investigation needs it, and EU AI Act Article 12 record-keeping has nothing cryptographic to stand on. This is the rest of the chain-of-custody gap that GV-02 storage alone does not close."
        },
        "standard": [
          "signed per-hop chain of custody (human, agent, sub-agent, tool)",
          "verifiable delegation lineage (RFC 8693 act-claim carried across hops)",
          "non-repudiation via per-hop signatures (JWS / DID-VC)"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.4.2 (bind each action to the execution chain for non-repudiation); C9.2.8 (cryptographic approval binding to params, identity, nonce)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "A signed end-to-end provenance chain is the AISVS binding of each action to its execution chain for non-repudiation.",
              "verified_on": "2026-06-24"
            }
          },
          "aismm": {
            "value": "MON-04.1 (end-to-end auditability for agent and delegation chains); IAM-05.2 (delegation-chain validation)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-04.1 (end-to-end auditability for agent and delegation chains); IAM-05.2 (delegation-chain validation)",
              "rationale": "Bind a signed, end-to-end provenance chain to every agent action maps to AISMM control(s) MON-04.1 (end-to-end auditability for agent and delegation chains); IAM-05.2 (delegation-chain validation)."
            }
          },
          "mgf": {
            "value": "§2.3.3 (complete audit trails); §2.2.1 (accountability across the value chain)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.3, §2.2.1",
              "rationale": "Bind a signed, end-to-end provenance chain to every agent action maps to IMDA MGF complete audit trails; accountability across the value chain."
            }
          },
          "aicm": {
            "value": "LOG-09 (log records)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-09",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-09) correspond to \"Bind a signed, end-to-end provenance chain to every agent action\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern / Manage functions",
              "rationale": "NIST AI RMF Govern / Manage functions: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Bind a signed, end-to-end provenance chain to every agent action\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "EU AI Act Art. 12 (record-keeping); Art. 19 (provider) / Art. 26(6) (deployer) log retention; ISO/IEC 42001 A.6.2.8 (AI system recording of event logs)",
            "status": "indicative",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Accountability / non-repudiation (ASI08 cascading; no clean ASI ID)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI08",
              "rationale": "Bind a signed, end-to-end provenance chain to every agent action addresses OWASP Accountability / non-repudiation (ASI08 cascading; no clean ASI ID)."
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "eu-ai-act-art26",
          "a2a-spec",
          "did-vc",
          "rfc8693",
          "eu-ai-act-art12"
        ],
        "implementation": {
          "pattern": "Every hand-off in an action chain is signed by the acting principal's own identity and bound to the upstream context, so the full lineage (initiating human, orchestrator, each sub-agent, the tool invoked) is cryptographically verifiable after the fact. The signed chain is written to the tamper-evident store (GV-02); together they give both 'the record was not altered' and 'this is provably who did it'.",
          "steps": [
            "Give every agent a distinct workload identity (IA-01) and propagate the user-as-subject, agent-as-actor act-claim across hops (IA-03, RFC 8693).",
            "At each hop, sign the request together with the prior hop's signature so the lineage chains cryptographically: human to agent to sub-agent to tool.",
            "Verify the full chain before a downstream agent or tool acts, and reject a hop whose upstream signature is missing, forged, or replayed.",
            "Write the signed chain into the tamper-evident audit store (GV-02) and bind it to the action's idempotency key (GV-08), so the provenance and the committed effect are one record."
          ],
          "anti_patterns": [
            "an audit trail that records the final actor but not the delegation chain that led to it",
            "trusting an immediate caller without verifying the upstream lineage",
            "provenance signed with a shared or human identity, so a hop cannot be attributed to one agent"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm action chains carry a signed per-hop provenance lineage (initiating human, each agent, the tool) bound to distinct workload identities and written to the tamper-evident store.",
              "ref": "a2a-spec"
            }
          ],
          "runtime_test": [
            {
              "text": "Replay or forge an upstream hand-off and confirm the downstream agent or tool rejects the action because the provenance chain fails verification.",
              "ref": "rfc8693"
            }
          ],
          "evidence": [
            {
              "text": "Verifiable provenance chains for sampled actions, each resolving the full human-to-tool lineage with valid per-hop signatures.",
              "ref": "eu-ai-act-art12"
            }
          ]
        },
        "lenses": {
          "engineering": "Sign each hop with the agent's workload identity over the request plus the upstream signature; verify the chain before acting.",
          "detection": "Alert when an action arrives with a missing, unverifiable, or replayed upstream signature in its provenance chain.",
          "red_team": "Try to forge or replay a hand-off so an action attributes to the wrong agent, or strip the chain down to a single hop.",
          "grc": "This is the chain-of-custody EU AI Act Art. 12 record-keeping needs to be evidentiary, not just retained; name the verification and retention owner.",
          "secops": "In an incident, the signed chain tells you which agent and which delegation led to the action, not just that something was logged."
        },
        "detection_schema": {
          "telemetry": [
            "provenance_chain_depth",
            "unsigned_hop_count",
            "signature_verification_failures"
          ],
          "baseline": "The expected chain shape per workflow (hop count and the set of signing identities).",
          "alert": "A hop with a missing, invalid, or replayed signature, or a chain shorter than the workflow's expected lineage."
        },
        "response": {
          "lever": "Reject and quarantine the action",
          "detail": "Block any action whose provenance chain fails verification, quarantine it for review, and revoke the offending hop's credential (ties to RT-04)."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "gap2",
        "star_ai": false
      },
      {
        "id": "EC-01",
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "Host kernel / hypervisor boundary (container -> gVisor -> micro-VM), hardened with a localized seccomp profile.",
        "layer": "containment",
        "plane": "data",
        "name": "Run the agent in a sandbox, from process isolation up to micro-VMs",
        "plain": "Put the agent in a sealed room sized to how risky its job is.",
        "threat": {
          "tags": [
            "ASI05"
          ],
          "desc": "An agent that can run code can break out of a weak sandbox and reach the host or other systems."
        },
        "standard": [
          "micro-VM / gVisor / containers",
          "containment spectrum: process → session → micro-VM"
        ],
        "mappings": {
          "mitre": {
            "value": "AML.T0105 (Escape to Host); ATLAS mitigations: AML.M0032 (Segmentation of AI Agent Components)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0105; mitigations AML.M0032",
              "rationale": "Run the agent in a sandbox, from process isolation up to micro-VMs addresses ATLAS technique(s) Escape to Host; implements ATLAS mitigation(s) Segmentation of AI Agent Components.",
              "verified_on": "2026-06-24"
            }
          },
          "aisvs": {
            "value": "C4.1.1 (isolated execution sandbox); C9.3.1 (per-tool least-privilege sandbox); C4.2.2 (TEE hardware isolation)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C4 Infrastructure & Deployment Security; C9 Orchestration & Agentic Action",
              "rationale": "Sandboxing from process to micro-VM is the AISVS isolated execution environment and per-tool least-privilege sandbox.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.2 (self-contained environments for high-risk tasks); §2.3.1 (sandbox code execution)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.2, §2.3.1",
              "rationale": "Run the agent in a sandbox, from process isolation up to micro-VMs maps to IMDA MGF self-contained environments for high-risk tasks; sandbox code execution.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-13 (AI sandboxing); AIS-11 (agent security boundaries)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-13, AIS-11",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-13, AIS-11) correspond to \"Run the agent in a sandbox, from process isolation up to micro-VMs\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Run the agent in a sandbox, from process isolation up to micro-VMs\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.4.5 (system and computing resources)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI05 Unexpected Code Execution",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI05",
              "rationale": "Run the agent in a sandbox, from process isolation up to micro-VMs addresses OWASP ASI05 Unexpected Code Execution.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-03.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-03.3",
              "rationale": "Run the agent in a sandbox, from process isolation up to micro-VMs maps to AISMM control(s) APP-03.3.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft (MXC)",
          "Google (SAIF 2.0)",
          "AWS",
          "gVisor",
          "Firecracker"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "gvisor",
          "firecracker",
          "ms-mxc",
          "google-saif2",
          "csa-maestro",
          "aismm",
          "plaskett-coding-agent-security"
        ],
        "implementation": {
          "pattern": "Match the isolation tier to the threat. Process isolation is the floor; a userspace-kernel sandbox is stronger; a hypervisor-backed micro-VM is the strongest of the three against host compromise. Agents that run untrusted code get a micro-VM, which sharply reduces direct exposure of the host kernel rather than removing it outright (real isolation strength depends on configuration, kernel exposure, and device access). (See implementers/sources for the specific tools at each tier.)",
          "steps": [
            "Decide the isolation tier per agent based on what it executes (process → gVisor → micro-VM).",
            "For untrusted-code agents, set the floor at a micro-VM so the host kernel is out of reach.",
            "Capture the isolation tier in the deployment spec so it can be verified later."
          ],
          "anti_patterns": [
            "running an untrusted-code agent in a bare container sharing the host kernel",
            "no record of which isolation tier is actually in force",
            "trusting application-layer limits as if they were isolation"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Assert the runtime tier matches the threat model and the host kernel is not directly reachable (gVisor runsc or Firecracker in the pod/VM spec).",
              "ref": "gvisor"
            }
          ],
          "runtime_test": [
            {
              "text": "Run a known sandbox-escape payload inside the sandbox and confirm it reaches at most the userspace kernel or guest VM, never the host.",
              "ref": "firecracker"
            },
            {
              "text": "Regression-test coding-agent sandbox escapes: run a documented escape from the agent runtime (Claude Code / Cursor / Codex) and confirm it cannot reach the host.",
              "ref": "plaskett-coding-agent-security"
            }
          ],
          "evidence": [
            {
              "text": "Sandbox runtime attestation / config snapshot proving the isolation tier in force at the time of each agent run.",
              "ref": "gvisor"
            }
          ]
        },
        "lenses": {
          "engineering": "Pick the tier by workload: a userspace-kernel sandbox for medium risk, a hypervisor-backed micro-VM for code execution; pin it in the deploy spec.",
          "detection": "Alert on syscalls or host access that the isolation tier should make impossible.",
          "red_team": "Run a sandbox-escape payload from the coding-agent runtime (per Plaskett documented escapes) and prove it cannot reach the host.",
          "grc": "The deployment spec showing the isolation tier is your evidence of containment.",
          "secops": "If an agent is compromised, strong isolation is what keeps the blast inside the sandbox."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "EC-02",
        "cross_domain": [
          {
            "domain": "data",
            "uri": "apeiris://data/controls/DX-03",
            "id": "DX-03",
            "name": "Sensitivity-Based Protection Requirement Mapping",
            "rel": "depends-on",
            "note": "DX-03 produces the full protection-requirement baseline (minimum encryption standard, access-control tier, retention limits, transfer restrictions, output-handling rules), not just a classification tag. EC-02 consumes that structured requirement set and enforces its egress / in-transit portion."
          }
        ],
        "tiers": [
          "external-reach",
          "data-sensitivity"
        ],
        "response": {
          "lever": "block",
          "detail": "drop the connection at the proxy; default-deny holds"
        },
        "detection_schema": {
          "telemetry": [
            "agent_id",
            "dest_host",
            "dest_ip",
            "port",
            "proto",
            "bytes_out"
          ],
          "baseline": "the task-allowed destination set",
          "alert": "a connection to a non-allowlisted destination, DNS-tunneling patterns, or SOCKS/non-HTTP egress"
        },
        "enforcement_point": "Egress proxy / firewall outside the agent's reach, default-deny, logged at the network layer.",
        "layer": "containment",
        "plane": "data",
        "name": "Filter the agent's outbound network traffic",
        "plain": "Only let the agent phone the few places its job needs, block the rest by default.",
        "threat": {
          "tags": [
            "ASI03"
          ],
          "desc": "A hijacked agent's data theft looks like an ordinary HTTPS request at the network layer. Without an outbound allowlist, exfiltration is invisible."
        },
        "standard": [
          "per-process/per-agent egress allowlist",
          "TLS-SNI + DNS-layer domain control",
          "default-deny outbound"
        ],
        "mappings": {
          "aisvs": {
            "value": "C7.3.3 (block model-triggered outbound requests)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C7 Model Behavior & Output Control",
              "rationale": "Outbound egress filtering partly maps to the AISVS rule that model output must not trigger uncontrolled outbound requests, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.2 (limit agent network access)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.2",
              "rationale": "Filter the agent's outbound network traffic maps to IMDA MGF limit agent network access.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "I&S-03 (network security); I&S-06 (segmentation and segregation)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: I&S-03, I&S-06",
              "rationale": "These CSA AICM v1.1 control(s) (I&S-03, I&S-06) correspond to \"Filter the agent's outbound network traffic\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Filter the agent's outbound network traffic\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI03 Identity & Privilege Abuse (egress/exfiltration); LLM02 Sensitive Information Disclosure",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI03, LLM02",
              "rationale": "Filter the agent's outbound network traffic addresses OWASP ASI03 Identity & Privilege Abuse (egress/exfiltration); LLM02 Sensitive Information Disclosure.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "INF-03.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM INF-03.3",
              "rationale": "Filter the agent's outbound network traffic maps to AISMM control(s) INF-03.3.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0025 (Exfiltration via Cyber Means); AML.T0086 (Exfiltration via AI Agent Tool Invocation); ATLAS mitigations: AML.M0030 (Restrict AI Agent Tool Invocation on Untrusted Data)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0025, AML.T0086; mitigations AML.M0030",
              "rationale": "Filter the agent's outbound network traffic addresses ATLAS technique(s) Exfiltration via Cyber Means, Exfiltration via AI Agent Tool Invocation; implements ATLAS mitigation(s) Restrict AI Agent Tool Invocation on Untrusted Data.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "CrowdStrike",
          "AWS"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "aws-egress-domains",
          "claude-sandbox-bypass",
          "csa-maestro",
          "anthropic-mcp",
          "aismm"
        ],
        "implementation": {
          "pattern": "All of the agent's outbound traffic routes through a control point the agent cannot influence, a cloud egress firewall or forward proxy enforcing a default-deny domain allowlist (matched at TLS SNI), paired with a DNS firewall to block tunnelling. The allowlist is the minimum set of destinations the task needs. Enforcement lives outside the agent's reach.",
          "steps": [
            "Default-deny all egress for the agent's network namespace.",
            "Allowlist only task-required domains, matched at TLS SNI.",
            "Add DNS-firewall rules (e.g. Route 53 Resolver) to block tunnelling and exfiltration over DNS.",
            "Log every connection at the network layer, including SOCKS and non-HTTP, not from the agent's self-report."
          ],
          "anti_patterns": [
            "wildcard allowlists (defeated by a SOCKS5 null-byte hostname-parsing bypass, see source)",
            "enforcing egress rules inside the agent runtime where a prompt-injected agent can rewrite them",
            "logging only HTTP and missing SOCKS-mediated traffic"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Assert default-deny plus a per-agent allowlist enforced externally; assert DNS-tunnel controls are present; assert no egress rule the agent process can edit.",
              "ref": "aws-egress-domains"
            }
          ],
          "runtime_test": [
            {
              "text": "Prompt-inject the agent to send a planted canary to an attacker-controlled domain; the allowlist must drop it.",
              "ref": "injecagent"
            },
            {
              "text": "Regression-test the bypass class, not just the happy path: a wildcard allowlist defeated by a SOCKS5 null-byte hostname-parsing bug (see source), confirm your filter blocks that class and that SOCKS/non-HTTP traffic is logged.",
              "ref": "claude-sandbox-bypass"
            }
          ],
          "evidence": [
            {
              "text": "Network-layer egress decision log: every outbound connection with destination, allow/deny, and the agent identity that requested it, captured at the network layer, not self-reported. Retained for EU AI Act Article 12.",
              "ref": "eu-ai-act-art12"
            }
          ]
        },
        "lenses": {
          "engineering": "Route agent egress through a default-deny proxy/firewall matched on SNI, plus a DNS firewall; never let the agent edit the rules.",
          "detection": "Alert on any blocked egress attempt and on non-HTTP/SOCKS traffic leaving an agent namespace.",
          "red_team": "Inject an exfil instruction to a canary domain, then try wildcard and null-byte hostname bypasses against the allowlist.",
          "grc": "The network-layer egress log is the artifact proving data couldn't leave to un-approved destinations.",
          "secops": "Default-deny egress contains an active exfiltration while you respond."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "EC-03",
        "tiers": [
          "data-sensitivity"
        ],
        "enforcement_point": "Memory write-path validator: an auth + format gate before anything persists to long-term memory.",
        "layer": "containment",
        "plane": "data",
        "name": "Keep memory short-lived, and validate anything written to it",
        "plain": "Don't let the agent quietly save a poisoned note it will trust and act on later.",
        "threat": {
          "tags": [
            "ASI06"
          ],
          "desc": "Memory poisoning is especially sneaky: a malicious instruction gets stored, recalled in a later session, and executed, because nothing checked it on the way in."
        },
        "standard": [
          "memory attestation: signed provenance on stored entries",
          "cross-session state tamper detection",
          "memory-write authentication",
          "structure/format validation",
          "access scoping"
        ],
        "mappings": {
          "aisvs": {
            "value": "C8.2.3 (validate writes to trusted memory); C8.3.1-C8.3.2 (memory expiry and reset); C9.4.4 (integrity-protect persisted agent state)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C8 Memory, Embeddings & Vector DB; C9 Orchestration & Agentic Action",
              "rationale": "Short-lived, validated memory maps to AISVS validate-writes-to-memory, expiry and reset, and persisted-state integrity.",
              "verified_on": "2026-06-24"
            }
          },
          "mitre": {
            "value": "AML.T0080 (AI Agent Context Poisoning); ATLAS mitigations: AML.M0031 (Memory Hardening), AML.M0030 (Restrict AI Agent Tool Invocation on Untrusted Data)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0080; mitigations AML.M0031, AML.M0030",
              "rationale": "Keep memory short-lived, and validate anything written to it addresses ATLAS technique(s) AI Agent Context Poisoning; implements ATLAS mitigation(s) Memory Hardening, Restrict AI Agent Tool Invocation on Untrusted Data.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (limit shared memory access); §2.1.1 (memory-poisoning threat modelling)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.1.1",
              "rationale": "Keep memory short-lived, and validate anything written to it maps to IMDA MGF limit shared memory access; memory-poisoning threat modelling.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "DSP-21 (data poisoning prevention and detection); DSP-17 (sensitive data protection)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: DSP-21, DSP-17",
              "rationale": "These CSA AICM v1.1 control(s) (DSP-21, DSP-17) correspond to \"Keep memory short-lived, and validate anything written to it\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Keep memory short-lived, and validate anything written to it\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.7.4 (quality of data for AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI06 Memory & Context Poisoning",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI06",
              "rationale": "Keep memory short-lived, and validate anything written to it addresses OWASP ASI06 Memory & Context Poisoning.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "DAT-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM DAT-05.2",
              "rationale": "Keep memory short-lived, and validate anything written to it maps to AISMM control(s) DAT-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "ms-failure-taxonomy",
          "agent-security-bench",
          "owasp-asi-2026",
          "containment-gap"
        ],
        "implementation": {
          "pattern": "Agent memory is volatile and session-scoped by default. Any write to long-term memory must pass write-authentication, structure/format validation, and access scoping before it can ever be recalled into context. Unvalidated tool output is never written to long-term memory.",
          "steps": [
            "Default agent memory to volatile, session-only scope.",
            "For any persistent write, authenticate the writer and validate the content's structure/format.",
            "Scope who and what can read each memory entry back into context.",
            "Never write raw, unvalidated tool output into long-term memory.",
            "Attest memory on write and read: attach signed provenance (who wrote it, what, when) to each stored entry and verify it on recall, so a poisoned or out-of-band write is caught before the agent acts on it."
          ],
          "anti_patterns": [
            "persisting tool output verbatim into long-term memory",
            "recalling stored memory into context with no validation",
            "shared memory readable across unrelated tasks or tenants"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Assert agent memory is volatile/session-scoped by default and that every persistent write passes write-authentication, format validation, and access scoping before recall.",
              "ref": "ms-failure-taxonomy"
            }
          ],
          "runtime_test": [
            {
              "text": "Inject a malicious instruction designed to be stored, then start a new session and confirm it is not silently recalled and executed. Use the Memory-Poisoning scenarios from Agent Security Bench.",
              "ref": "agent-security-bench"
            }
          ],
          "evidence": [
            {
              "text": "Memory-write audit log: what was written, by which validated source, the validation verdict, and the recall events that pulled it into context.",
              "ref": "ms-failure-taxonomy"
            }
          ]
        },
        "lenses": {
          "engineering": "Default memory to session scope; gate persistent writes behind validation; never store raw tool output.",
          "detection": "Alert when stored memory is recalled that never passed validation, or when a write comes from an un-authenticated source.",
          "red_team": "Plant an instruction in memory in one session and see if it executes in the next (Agent Security Bench).",
          "grc": "The memory-write audit log evidences that stored content was validated before reuse.",
          "secops": "If poisoning is found, the write log tells you what to purge and which sessions were exposed."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "EC-04",
        "tiers": [
          "data-sensitivity"
        ],
        "enforcement_point": "OS sandbox + tool broker enforcing mount and exposed-tool allowlists (seccomp), set below the agent.",
        "layer": "containment",
        "plane": "data",
        "name": "Limit filesystem and tool access to the bare minimum",
        "plain": "Give the agent only the files and tools its task needs, nothing more.",
        "threat": {
          "tags": [
            "ASI02",
            "ASI05"
          ],
          "desc": "An over-scoped agent can read bulk files, touch secrets, or run destructive operations far beyond its task."
        },
        "standard": [
          "capability sandboxing",
          "execution rings",
          "resource limits"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.5.1 (restrict invokable tools and parameter values); C9.3.1 (least-privilege tool sandbox); C5.2.1 (default-deny allowlist)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C5 Access Control & Identity",
              "rationale": "Least filesystem and tool access is the AISVS restriction of invokable tools and parameter values under default-deny.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.2 (least-privilege tool/data access); §2.3.1 (Tools)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.2, §2.3.1",
              "rationale": "Limit filesystem and tool access to the bare minimum maps to IMDA MGF least-privilege tool/data access; Tools.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-11 (agent security boundaries); IAM-05 (least privilege)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-11, IAM-05",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-11, IAM-05) correspond to \"Limit filesystem and tool access to the bare minimum\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Limit filesystem and tool access to the bare minimum\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.4.4 (tooling resources)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI02 Tool Misuse; ASI05 Unexpected Code Execution",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI02, ASI05",
              "rationale": "Limit filesystem and tool access to the bare minimum addresses OWASP ASI02 Tool Misuse; ASI05 Unexpected Code Execution.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-03.2, APP-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-03.2, APP-04.2",
              "rationale": "Limit filesystem and tool access to the bare minimum maps to AISMM control(s) APP-03.2, APP-04.2.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0053 (AI Agent Tool Invocation); AML.T0098 (AI Agent Tool Credential Harvesting); ATLAS mitigations: AML.M0028 (AI Agent Tools Permissions Configuration)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0053, AML.T0098; mitigations AML.M0028",
              "rationale": "Limit filesystem and tool access to the bare minimum addresses ATLAS technique(s) AI Agent Tool Invocation, AI Agent Tool Credential Harvesting; implements ATLAS mitigation(s) AI Agent Tools Permissions Configuration.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "Microsoft"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "ms-agent-governance-toolkit",
          "owasp-asi-2026",
          "aismm",
          "plaskett-coding-agent-security"
        ],
        "implementation": {
          "pattern": "The agent's mounted filesystem, tool set, and resource limits are scoped to the minimum for its task. No broad read of home or secrets directories, and no destructive tools unless the task explicitly needs them.",
          "steps": [
            "Mount only the files the task needs; keep secrets and home directories out of reach.",
            "Expose only the tools required, and mark destructive tools as off unless scoped in.",
            "Set resource and capability limits (seccomp, execution rings) per agent."
          ],
          "anti_patterns": [
            "mounting the whole home directory 'to be safe'",
            "giving every agent the full tool catalogue",
            "no seccomp/capability profile"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Assert capability scoping, the mounted filesystem, tool set, and resource limits are the minimum for the task, with no broad read of secrets directories.",
              "ref": "ms-agent-governance-toolkit"
            }
          ],
          "runtime_test": [
            {
              "text": "Instruct the agent to bulk-read sensitive files or invoke an out-of-scope destructive tool; the capability sandbox must deny it. Use AgentDojo/InjecAgent tool-misuse cases.",
              "ref": "agentdojo"
            }
          ],
          "evidence": [
            {
              "text": "Capability/seccomp/mount manifest as deployed, plus denied-syscall / denied-tool-call telemetry showing the sandbox refusing out-of-scope operations.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Write a per-agent seccomp + mount profile; expose tools through an allowlist, destructive ones off by default.",
          "detection": "Alert on denied tool calls and attempts to read outside the mounted scope.",
          "red_team": "Try to bulk-read secrets and invoke a destructive tool the task did not grant; abuse agent tools from an untrusted repo to reach beyond scope.",
          "grc": "The deployed capability manifest evidences least-privilege.",
          "secops": "Tight scope shrinks what a hijacked agent can damage."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "EC-05",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/BH-07",
            "id": "BH-07",
            "name": "Resource and Cost Anomaly Monitoring",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "irreversibility"
        ],
        "response": {
          "lever": "halt",
          "detail": "stop the agent at the budget ceiling instead of warning and continuing"
        },
        "enforcement_point": "Budget / quota service at the gateway, outside the agent loop; halts rather than warns on breach.",
        "thesis_type": "elevated",
        "layer": "containment",
        "plane": "data",
        "name": "Cap spend and resource use, stop denial-of-wallet",
        "plain": "Put a meter and a hard ceiling on how much the agent can spend or consume.",
        "threat": {
          "tags": [
            "LLM10"
          ],
          "desc": "A runaway agent can burn hundreds of thousands of tokens or API calls in minutes, documented cases hit five figures in a single session. The system keeps running while the bill explodes. This is not a standalone OWASP agentic category, so a faithful crosswalk inherits the gap."
        },
        "standard": [
          "per-agent / per-task token, cost, compute, and step budgets",
          "halt-on-breach",
          "cost-anomaly alerting"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.1.1 (per-tool resource quotas and timeouts); C9.1.2 (execution budgets incl. monetary spend); C12.2.5 (granular token-usage tracking)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C12 Monitoring, Logging & Anomaly Detection",
              "rationale": "Spend and resource caps are the AISVS per-tool quotas and execution budgets including monetary spend.",
              "verified_on": "2026-06-24"
            }
          },
          "mitre": {
            "value": "AML.T0034.002 (Agentic Resource Consumption); ATLAS mitigations: AML.M0004 (Restrict Number of AI Model Queries)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0034.002; mitigations AML.M0004",
              "rationale": "Cap spend and resource use, stop denial-of-wallet addresses ATLAS technique(s) Agentic Resource Consumption; implements ATLAS mitigation(s) Restrict Number of AI Model Queries.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (runtime rate limits on tool use)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Cap spend and resource use, stop denial-of-wallet maps to IMDA MGF runtime rate limits on tool use."
            }
          },
          "aicm": {
            "value": "GRC (operational / cost risk)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: ",
              "rationale": "These CSA AICM v1.1 control(s) () correspond to \"Cap spend and resource use, stop denial-of-wallet\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Cap spend and resource use, stop denial-of-wallet\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.4.5 (system and computing resources)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "LLM10 Unbounded Consumption (no standalone agentic ASI category)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP LLM10",
              "rationale": "Cap spend and resource use, stop denial-of-wallet addresses OWASP LLM10 Unbounded Consumption (no standalone agentic ASI category).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-04.2 (partial)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-04.2 (partial)",
              "rationale": "Cap spend and resource use, stop denial-of-wallet maps to AISMM control(s) APP-04.2 (partial).",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-llm-2025"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "Every agent and task carries a budget, tokens, cost, compute, and a step/iteration count. Crossing the budget halts the agent by default rather than degrading silently. Cost anomalies alert in near-real-time.",
          "steps": [
            "Set per-agent and per-task budgets for tokens, cost, compute, and step count.",
            "Make a budget breach halt the agent by default (fail closed), not just log a warning.",
            "Alert on cost/usage anomalies before the ceiling is reached.",
            "Enforce the budget at the orchestrator/gateway, outside the agent's own loop."
          ],
          "anti_patterns": [
            "no per-task ceiling, only a monthly bill",
            "budget breach that warns but keeps running",
            "the agent self-policing its own spend"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm every agent/task has token, cost, compute, and step budgets, enforced outside the agent loop, with halt-on-breach as the default.",
              "ref": "owasp-llm-2025"
            }
          ],
          "runtime_test": [
            {
              "text": "Drive an agent into a loop and confirm it halts at the step/cost ceiling rather than running unbounded.",
              "ref": "owasp-llm-2025"
            }
          ],
          "evidence": [
            {
              "text": "Per-task usage record (tokens, cost, steps) with budget and the halt event when breached.",
              "ref": "owasp-llm-2025"
            }
          ]
        },
        "lenses": {
          "engineering": "Enforce token/cost/step budgets at the gateway; fail closed on breach.",
          "detection": "Alert on cost/usage spikes and on agents approaching their ceiling.",
          "red_team": "Try to drive an agent into an expensive loop and see if anything stops it.",
          "grc": "Budget records show spend was bounded, relevant to operational-risk controls.",
          "secops": "A hard ceiling caps the financial blast radius of a runaway or hijacked agent."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "EC-06",
        "tiers": [
          "autonomy"
        ],
        "response": {
          "lever": "halt",
          "detail": "trip the loop cap / circuit breaker and force the loop to exit"
        },
        "enforcement_point": "Orchestration runtime holding deterministic loop caps, circuit breakers, and a forced exit on every loop.",
        "layer": "containment",
        "plane": "data",
        "name": "Contain runaway loops and over-reach (least-agency)",
        "plain": "Stop an agent that keeps looping or grabs more autonomy than the task needs.",
        "threat": {
          "tags": [
            "ASI01",
            "ASI10"
          ],
          "desc": "An agent can be working 'correctly' yet iterate without end or act with more autonomy than its task warrants. OWASP 2026 adds 'least-agency', the minimum autonomy for the job, alongside least-privilege."
        },
        "standard": [
          "deterministic iteration/recursion caps",
          "circuit breakers on tool-call frequency",
          "OWASP Least-Agency principle"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.1.2 (recursion-depth and loop budgets); C9.1.3 (swarm-level kill-switch); C9.2.5 (restrict self-modification)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Loop and over-reach containment maps to AISVS recursion budgets, swarm kill-switch, and the self-modification restriction.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.2 (bound autonomy via SOPs); §2.3.1 (runtime rate limits)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.2, §2.3.1",
              "rationale": "Contain runaway loops and over-reach (least-agency) maps to IMDA MGF bound autonomy via SOPs; runtime rate limits.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-11 (agent security boundaries)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-11",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-11) correspond to \"Contain runaway loops and over-reach (least-agency)\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Contain runaway loops and over-reach (least-agency)\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Goal Hijack; ASI10 Rogue Agents (Excessive Agency / Least-Agency)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01, ASI10",
              "rationale": "Contain runaway loops and over-reach (least-agency) addresses OWASP ASI01 Goal Hijack; ASI10 Rogue Agents (Excessive Agency / Least-Agency).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-03.2, APP-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-03.2, APP-04.2",
              "rationale": "Contain runaway loops and over-reach (least-agency) maps to AISMM control(s) APP-03.2, APP-04.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026",
          "aismm"
        ],
        "implementation": {
          "pattern": "The agent is granted the minimum autonomy for its task, with deterministic caps on iteration and recursion depth and circuit breakers that halt or slow it when tool-call frequency crosses a threshold. Loops have forced exit conditions.",
          "steps": [
            "Set the least autonomy the task needs (least-agency), not the most the platform allows.",
            "Add deterministic caps on iteration/recursion depth.",
            "Add circuit breakers that halt or throttle on abnormal tool-call frequency.",
            "Give every loop a forced exit condition.",
            "Forbid the agent from rewriting its own instructions, tool list, or permitted parameters at run time without a fresh approval, so it cannot widen its own authority mid-run."
          ],
          "anti_patterns": [
            "unbounded 'keep going until done' loops",
            "granting full autonomy by default",
            "no circuit breaker on tool-call rate",
            "letting an agent edit its own system prompt, add its own tools, or widen its own parameters mid-run"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm iteration/recursion caps, tool-call circuit breakers, and a least-agency scoping for each agent.",
              "ref": "owasp-asi-2026"
            }
          ],
          "runtime_test": [
            {
              "text": "Trigger a looping condition and confirm the cap/circuit-breaker halts it; attempt an action beyond the task's granted autonomy and confirm it is refused.",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Circuit-breaker / loop-halt events with the threshold that fired and the agent involved.",
              "ref": "ms-agent-governance-toolkit"
            }
          ]
        },
        "lenses": {
          "engineering": "Add max-iteration and recursion caps plus a tool-call-rate circuit breaker; scope autonomy down to the task.",
          "detection": "Alert on agents hitting iteration caps or abnormal tool-call rates.",
          "red_team": "Try to induce an endless loop or push the agent past its granted autonomy.",
          "grc": "Least-agency scoping is your record that autonomy was deliberately bounded.",
          "secops": "Circuit breakers stop a runaway before it exhausts resources or spreads."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "EC-07",
        "tiers": [
          "data-sensitivity",
          "external-reach"
        ],
        "detection_schema": {
          "telemetry": [
            "source_uri",
            "source_risk_class",
            "provenance",
            "trust_label",
            "taint_tag",
            "drives_tool_action",
            "requesting_user"
          ],
          "baseline": "The trusted-source set, each user's permissions, and which context spans are tainted (low-trust) versus clean.",
          "alert": "A low-trust or unclassified source entering context, retrieval exceeding the requesting user's permissions, or a tainted (low-trust) span directly driving a tool action without passing the audit / synthesis boundary."
        },
        "enforcement_point": "Retrieval / RAG ingestion layer: source-risk classification and provenance attached before content hits the prompt.",
        "layer": "containment",
        "plane": "data",
        "name": "Trust-rank retrieved content before it enters the agent's context",
        "plain": "Check and rank documents and web pages before the agent reads them as if they were true.",
        "threat": {
          "tags": [
            "ASI06"
          ],
          "desc": "Poisoning now reaches retrieval and RAG: a malicious document, web page, or knowledge-base entry pulled into context can steer the agent. Detecting the injection isn't the same as establishing the source's trust."
        },
        "standard": [
          "information-flow / taint control (low-trust evidence cannot directly drive tool actions)",
          "context trust-scoring carried with each retrieved span",
          "observation validation before context entry",
          "retrieval-source validation",
          "trust-ranking of knowledge sources",
          "provenance on retrieved content"
        ],
        "mappings": {
          "aisvs": {
            "value": "C8.2.4 (reject retrieval-manipulation content); C5.2.2 (per-stage retrieval authorization); C9.3.5 (isolate untrusted data from tool-calling)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C8 Memory, Embeddings & Vector DB; C5 Access Control & Identity; C9 Orchestration & Agentic Action",
              "rationale": "Trust-ranking retrieved content is the AISVS rejection of retrieval-manipulation content and isolation of untrusted data from tool calls.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.1 (taint tracing of untrusted data); §2.3.1 (input validation)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.1, §2.3.1",
              "rationale": "Trust-rank retrieved content before it enters the agent's context maps to IMDA MGF taint tracing of untrusted data; input validation.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "DSP-20 (data provenance and transparency); DSP-23 (data integrity check)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: DSP-20, DSP-23",
              "rationale": "These CSA AICM v1.1 control(s) (DSP-20, DSP-23) correspond to \"Trust-rank retrieved content before it enters the agent's context\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Manage functions",
              "rationale": "NIST AI RMF Map / Manage functions: establish context and identify and categorise the AI risks; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Trust-rank retrieved content before it enters the agent's context\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.7.5 (data provenance)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI06 Memory & Context Poisoning (retrieval/RAG vector); LLM08:2025 Vector and Embedding Weaknesses",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI06, LLM08",
              "rationale": "Trust-rank retrieved content before it enters the agent's context addresses OWASP ASI06 Memory & Context Poisoning (retrieval/RAG vector); LLM08:2025 Vector and Embedding Weaknesses.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "DAT-02.1, DAT-04.1, DAT-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM DAT-02.1, DAT-04.1, DAT-04.2",
              "rationale": "Trust-rank retrieved content before it enters the agent's context maps to AISMM control(s) DAT-02.1, DAT-04.1, DAT-04.2.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0070 (RAG Poisoning); AML.T0066 (Retrieval Content Crafting); AML.T0080 (AI Agent Context Poisoning); AML.T0100 (AI Agent Clickbait); ATLAS mitigations: AML.M0030 (Restrict AI Agent Tool Invocation on Untrusted Data), AML.M0031 (Memory Hardening)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0070, AML.T0066, AML.T0080, AML.T0100; mitigations AML.M0030, AML.M0031",
              "rationale": "Trust-rank retrieved content before it enters the agent's context addresses ATLAS technique(s) RAG Poisoning, Retrieval Content Crafting, AI Agent Context Poisoning, AI Agent Clickbait; implements ATLAS mitigation(s) Restrict AI Agent Tool Invocation on Untrusted Data, Memory Hardening.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "Databricks (Unity Catalog)",
          "Okta (Auth0 RAG authz)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-llm-2025",
          "mitre-atlas",
          "owasp-asi-2026",
          "databricks-dasf3",
          "auth0-genai",
          "aismm"
        ],
        "implementation": {
          "pattern": "Documents, web content, and knowledge-base entries are validated and trust-ranked before they enter context. Retrieval is identity-aware (the user's permissions apply to what can be retrieved), and low-trust sources are quarantined or labelled.",
          "steps": [
            "Establish a trust rank for each retrieval source and carry provenance into context.",
            "Apply the requesting user's permissions to retrieval (no retrieving what the user can't see).",
            "Quarantine or clearly label low-trust or external content before the agent acts on it.",
            "Score retrieved content for trust (source reputation, provenance, recency) and carry that score into context so the agent can weight or refuse low-trust spans; validate tool and observation outputs the same way before they become context.",
            "Apply information-flow control: separate an extraction step from a cross-source audit step from the action-capable synthesis step, give low-trust evidence asymmetric (read-limited) memory privileges, and forbid a tainted span from driving a tool call without passing the audit boundary."
          ],
          "anti_patterns": [
            "treating any retrieved document as trusted ground truth",
            "retrieval that ignores the user's data permissions",
            "no provenance on content pulled into context"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm retrieved content carries a trust rank and provenance, and that retrieval respects the requesting user's data permissions.",
              "ref": "databricks-dasf3"
            }
          ],
          "runtime_test": [
            {
              "text": "Plant a poisoned document in a retrievable source and confirm it is quarantined/down-ranked rather than acted on. Pair with indirect-prompt-injection cases.",
              "ref": "injecagent"
            }
          ],
          "evidence": [
            {
              "text": "Retrieval log with source, trust rank, and provenance for each item pulled into context.",
              "ref": "aismm"
            }
          ]
        },
        "lenses": {
          "engineering": "Make retrieval identity-aware and attach a trust rank + provenance to every chunk before it hits the prompt.",
          "detection": "Alert when low-trust or external content is retrieved into a high-stakes task.",
          "red_team": "Seed a poisoned doc into the knowledge base and see if the agent ingests it as fact.",
          "grc": "Retrieval logs evidence that content sources were vetted and access-scoped.",
          "secops": "When poisoning is found, retrieval provenance shows which sessions consumed it."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "EC-08",
        "tiers": [
          "data-sensitivity"
        ],
        "enforcement_point": "Secrets broker / vault resolving credentials at point-of-use, with the reasoning engine kept separate from execution.",
        "layer": "containment",
        "plane": "both",
        "name": "Keep secrets out of the prompt and context",
        "plain": "Never paste passwords or keys into the agent's text, anything in context can be pulled back out.",
        "threat": {
          "tags": [
            "LLM07"
          ],
          "desc": "Anything placed in the prompt or context is extractable. System-prompt leakage and credentials-in-context are real: studies have found thousands of valid secrets sitting in agent/MCP config files."
        },
        "standard": [
          "structural separation of sensitive data from agent context (TEE, opaque reference IDs)",
          "secrets-out-of-context",
          "runtime secret retrieval outside the model loop",
          "resistance to system-prompt extraction"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.5.4 (no secrets in model context); C7.3.2 (block prompt and secret disclosure in output); C8.2.1 (mask sensitive data before embedding)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C7 Model Behavior & Output Control; C8 Memory, Embeddings & Vector DB",
              "rationale": "Keeping secrets out of context is the AISVS no-secrets-in-model-context plus output filtering of prompt and secret disclosure.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (separate sensitive data from agent context; user takeover for credentials)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Keep secrets out of the prompt and context maps to IMDA MGF separate sensitive data from agent context; user takeover for credentials.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "DSP-17 (sensitive data protection); DSP-10 (sensitive data transfer)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: DSP-17, DSP-10",
              "rationale": "These CSA AICM v1.1 control(s) (DSP-17, DSP-10) correspond to \"Keep secrets out of the prompt and context\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Keep secrets out of the prompt and context\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "LLM07 System Prompt Leakage / secrets-in-context",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-llm-2025",
              "section": "OWASP LLM07",
              "rationale": "Keep secrets out of the prompt and context addresses OWASP LLM07 System Prompt Leakage / secrets-in-context.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "DAT-03.3, APP-02.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM DAT-03.3, APP-02.2",
              "rationale": "Keep secrets out of the prompt and context maps to AISMM control(s) DAT-03.3, APP-02.2.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0056 (Extract LLM System Prompt); AML.T0098 (AI Agent Tool Credential Harvesting); ATLAS mitigations: AML.M0012 (Encrypt Sensitive Information), AML.M0005 (Control Access to AI Models and Data at Rest)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0056, AML.T0098; mitigations AML.M0012, AML.M0005",
              "rationale": "Keep secrets out of the prompt and context addresses ATLAS technique(s) Extract LLM System Prompt, AI Agent Tool Credential Harvesting; implements ATLAS mitigation(s) Encrypt Sensitive Information, Control Access to AI Models and Data at Rest.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "owasp-llm-2025",
          "gitguardian-mcp-secrets",
          "aismm",
          "containment-gap"
        ],
        "implementation": {
          "pattern": "Credentials are never placed in prompts, system prompts, or context. Secrets are retrieved at the moment of use, outside the model loop, by a component the model never sees. The reasoning engine and the execution engine are kept separate so prompt extraction can't surface a secret.",
          "steps": [
            "Remove all credentials from prompts, system prompts, config, and context.",
            "Retrieve secrets at point-of-use through a broker outside the model loop (ties to IA-02).",
            "Separate the reasoning engine from the execution engine so a prompt-extraction attack reveals no secret.",
            "Treat the system prompt as potentially extractable, keep nothing sensitive in it.",
            "Where feasible, hold sensitive data outside the agent's context entirely, for example in a trusted execution environment, and pass the agent only opaque reference IDs, so there is no secret in context to extract (IMDA MGF, Terminal 3)."
          ],
          "anti_patterns": [
            "API keys pasted into the system prompt or a tool description",
            "secrets in MCP/agent config files committed to a repo",
            "assuming the system prompt is hidden from the user"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Scan prompts, system prompts, and config (including MCP config files) for embedded credentials; assert zero.",
              "ref": "gitguardian-mcp-secrets"
            }
          ],
          "runtime_test": [
            {
              "text": "Attempt system-prompt extraction and prompt-leak attacks; confirm no credential or sensitive business logic is recoverable. Use garak prompt-leak probes.",
              "ref": "garak"
            }
          ],
          "evidence": [
            {
              "text": "Secret-scanner reports over prompts/config plus an architecture note showing secrets are injected at run time, not embedded.",
              "ref": "gitguardian-mcp-secrets"
            }
          ]
        },
        "lenses": {
          "engineering": "Pull secrets from a broker at call time; keep them out of prompts and config entirely.",
          "detection": "Alert when a credential pattern appears in a prompt, tool description, or context window.",
          "red_team": "Try to extract the system prompt and any secrets in context (garak prompt-leak probes).",
          "grc": "Secret-scan reports over prompts/config evidence that credentials aren't exposed in context.",
          "secops": "Secrets fetched at point-of-use limit what an extracted context can reveal."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "EC-09",
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "block",
          "detail": "refuse to load repo-supplied config or hooks; do not escalate permissions"
        },
        "enforcement_point": "Workspace / config loader in the agent runtime: no auto-load of repo-supplied config or hooks.",
        "layer": "containment",
        "plane": "both",
        "name": "Treat the workspace and its config and hooks as untrusted",
        "plain": "Do not let a repo you just opened run its own hidden setup; check its config and hooks before the agent trusts them.",
        "threat": {
          "tags": [
            "ASI04",
            "ASI02",
            "ASI05"
          ],
          "desc": "Opening an untrusted repo or workspace can ship attacker-controlled configuration (mcp.json, .cursor config, agent config) or git hooks (.git/hooks, .git/config, .git/info/attributes) that the agent auto-loads or executes, or push the agent into a dangerous auto-approve permission mode that skips the human gate. This is especially acute for coding agents, one of the most widely deployed agent classes."
        },
        "standard": [
          "workspace-trust gating",
          "config and hook allowlisting with approval",
          "no auto-load of workspace-supplied hooks",
          "constrain dangerous / auto-approve permission modes"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.2.5 (restrict config and self-modification); C9.3.7 (allowlist external resources before install or invoke); C10.1.3 (sandbox locally-launched servers)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C10 MCP Security",
              "rationale": "Treating workspace config as untrusted maps to AISVS self-modification limits and allowlisting external resources before use.",
              "verified_on": "2026-06-24"
            }
          },
          "mitre": {
            "value": "AML.T0081 (Modify AI Agent Configuration); ATLAS mitigations: AML.M0014 (Verify AI Artifacts)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0081; mitigations AML.M0014",
              "rationale": "Treat the workspace and its config and hooks as untrusted addresses ATLAS technique(s) Modify AI Agent Configuration; implements ATLAS mitigation(s) Verify AI Artifacts.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (tighten permissive-by-default configuration); §2.1.1 (third-party skill supply-chain risk)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.1.1",
              "rationale": "Treat the workspace and its config and hooks as untrusted maps to IMDA MGF tighten permissive-by-default configuration; third-party skill supply-chain risk."
            }
          },
          "aicm": {
            "value": "AIS-11 (agent security boundaries); CCC-01 (change-management policy)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-11, CCC-01",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-11, CCC-01) correspond to \"Treat the workspace and its config and hooks as untrusted\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "APP-03.2, APP-03.3, DEV-03.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-03.2, APP-03.3, DEV-03.1",
              "rationale": "Treat the workspace and its config and hooks as untrusted maps to AISMM control(s) APP-03.2, APP-03.3, DEV-03.1.",
              "verified_on": "2026-06-22"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Treat the workspace and its config and hooks as untrusted\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.4.4 (tooling resources)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI04 Supply Chain; ASI02 Tool Misuse; ASI05 Unexpected Code Execution",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI04, ASI02, ASI05",
              "rationale": "Treat the workspace and its config and hooks as untrusted addresses OWASP ASI04 Supply Chain; ASI02 Tool Misuse; ASI05 Unexpected Code Execution.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "plaskett-coding-agent-security",
          "owasp-asi-2026",
          "aismm",
          "containment-gap"
        ],
        "implementation": {
          "pattern": "The agent treats its workspace as untrusted by default. Repo-supplied configuration (mcp.json, .cursor config, agent config), git hooks, and git attributes are not auto-loaded or executed; changes require explicit human approval. Dangerous and auto-approve permission modes are disabled or gated outside throwaway sandboxes.",
          "steps": [
            "Require explicit trust before an agent acts on a new or untrusted workspace.",
            "Do not auto-load or execute repo-supplied config (mcp.json, mcp-approvals.json, .cursor config, cli-config.json) or git hooks (.git/hooks, .git/config, .git/info/attributes); require review and approval.",
            "Disable or gate dangerous / auto-approve permission modes (skip-permissions, YOLO) outside sandboxed throwaway contexts.",
            "Keep agent config under version control and integrity-checked (ties to PT-03)."
          ],
          "anti_patterns": [
            "opening an untrusted repo with the agent in auto-approve mode",
            "auto-running git hooks or loading mcp.json from the working directory",
            "treating workspace files as trusted instructions"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm workspace-trust gating exists and that repo-supplied config and hooks are not auto-loaded or executed without approval; confirm dangerous permission modes are disabled or gated in production.",
              "ref": "plaskett-coding-agent-security"
            }
          ],
          "runtime_test": [
            {
              "text": "Open a booby-trapped repo containing a malicious mcp.json, .git/hooks, or .cursor config and confirm the agent does not execute it or escalate permissions.",
              "ref": "plaskett-coding-agent-security"
            },
            {
              "text": "Attempt a sandbox escape from the coding-agent runtime and confirm it cannot reach the host (regression-test against documented escapes).",
              "ref": "plaskett-coding-agent-security"
            }
          ],
          "evidence": [
            {
              "text": "Log of workspace-trust decisions and config / hook approvals, plus the permission-mode policy in force.",
              "ref": "plaskett-coding-agent-security"
            }
          ]
        },
        "lenses": {
          "engineering": "Gate workspace trust; never auto-load repo mcp.json/.cursor/.git hooks; disable skip-permissions in production.",
          "detection": "Alert when an agent loads config or runs a hook sourced from the working directory, or runs in an auto-approve mode.",
          "red_team": "Open a malicious repo with a planted mcp.json/.git/hooks and a dangerous-mode flag; try to get code execution or skip the approval gate (Plaskett vectors).",
          "grc": "Workspace-trust and config-approval logs evidence that repo-borne config cannot silently execute.",
          "secops": "Untrusted-workspace handling contains a poisoned-repo attack to the sandbox."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "EC-10",
        "tiers": [
          "autonomy",
          "external-reach"
        ],
        "enforcement_point": "An admission controller in front of the trigger path: it verifies signed event sources, dedupes and replay-protects, checks trigger allowlists and schedule ownership, and admits or rejects a run before any agent logic executes.",
        "layer": "containment",
        "plane": "control",
        "readiness": "deployable",
        "name": "Verify trigger provenance and admit autonomous runs",
        "plain": "Before an agent starts itself off an event, prove the event is real and allowed.",
        "threat": {
          "tags": [],
          "desc": "Highly autonomous agents self-initiate on environmental triggers: webhooks, schedules, queue messages, inbound emails. A forged, replayed, or spoofed trigger launches an unauthorized autonomous run with no human in the loop. The matrix gates what an agent does once running, but not what is allowed to start it. This is the admission boundary for full-agency (AWS Scope 4) deployments."
        },
        "standard": [
          "signed / authenticated event sources",
          "replay protection and idempotent run admission",
          "trigger allowlists and schedule ownership"
        ],
        "mappings": {
          "aisvs": {
            "value": "C12.4.1 (security evaluation in action triggers); C9.2.1 (gate high-impact triggers)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C12 Monitoring, Logging & Anomaly Detection; C9 Orchestration & Agentic Action",
              "rationale": "Trigger provenance and run admission partly maps to AISVS security evaluation in action triggers and gating high-impact triggers, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.1 (determine suitable use cases; bound how agents are triggered)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.1",
              "rationale": "Verify trigger provenance and admit autonomous runs maps to IMDA MGF determine suitable use cases; bound how agents are triggered."
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Verify trigger provenance and admit autonomous runs\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "owasp": {
            "value": "Excessive Agency (unbounded self-initiation; no clean ASI ID)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ",
              "rationale": "Verify trigger provenance and admit autonomous runs addresses OWASP Excessive Agency (unbounded self-initiation; no clean ASI ID)."
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "NIST",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "aws-scoping-matrix",
          "owasp-asi-2026",
          "cisa-agentic"
        ],
        "implementation": {
          "pattern": "Every autonomous run is admitted by a controller that sits in front of the trigger. The controller authenticates the event source (signature or mutual auth), rejects replays and duplicates, checks the trigger and schedule against an allowlist with a named owner, and only then admits the run. An unverifiable or out-of-policy trigger never starts an agent.",
          "steps": [
            "Authenticate every trigger source (signed webhooks, authenticated queues, verified senders) before admitting a run.",
            "Replay-protect and dedupe triggers with a nonce or idempotency key so a captured event cannot relaunch a run.",
            "Maintain a trigger allowlist and schedule ownership; reject triggers and schedules with no named owner.",
            "Bind the admitted run to a run_id (ties to RT-01) and deny by default when the admission check cannot complete."
          ],
          "anti_patterns": [
            "an agent that runs on any inbound webhook without verifying the sender",
            "schedules and triggers with no named owner",
            "no replay protection, so a captured trigger relaunches the agent"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm every autonomous trigger path authenticates its source, replay-protects, and checks an allowlist with a named owner before a run is admitted.",
              "ref": "aws-scoping-matrix"
            }
          ],
          "runtime_test": [
            {
              "text": "Replay a previously valid trigger and send a spoofed one, and confirm both are rejected before any agent logic runs.",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Admission logs showing each run tied to a verified, non-replayed trigger and a named trigger/schedule owner.",
              "ref": "cisa-agentic"
            }
          ]
        },
        "lenses": {
          "engineering": "Put an admission controller in front of triggers: verify signature, dedupe/replay-protect, check allowlist and owner, then admit.",
          "detection": "Alert on a run admitted from an unsigned, replayed, or unlisted trigger, or a schedule with no owner.",
          "red_team": "Forge and replay triggers (webhooks, emails, queue messages) and see whether you can start an unauthorized autonomous run.",
          "grc": "Closes the admission gap for full-agency agents; the evidence is admission logs tying runs to verified triggers and owners.",
          "secops": "When an unexpected run fires, the admission record shows which trigger started it and whether it was authentic."
        },
        "detection_schema": {
          "telemetry": [
            "trigger_source",
            "source_signature_valid",
            "replay_seen",
            "schedule_owner",
            "admitted",
            "run_id"
          ],
          "baseline": "The allowlisted trigger sources and schedules, each with a named owner.",
          "alert": "A run admitted from an unsigned or unlisted trigger, a replayed trigger, or a schedule with no owner."
        },
        "response": {
          "lever": "Reject the run",
          "detail": "Deny admission for any trigger that fails authentication, replay, or allowlist checks, and alert the trigger owner; deny by default when the check cannot complete."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": false
      },
      {
        "id": "PT-01",
        "tiers": [
          "external-reach"
        ],
        "enforcement_point": "Receiving agent's A2A endpoint verifier: JWS signature over the JCS-canonicalized Agent Card, served over HTTPS at its well-known address.",
        "layer": "protocol",
        "plane": "control",
        "name": "Authenticate and sign agent-to-agent communication",
        "plain": "Make sure an agent only takes instructions from another agent it can prove is genuine.",
        "threat": {
          "tags": [
            "ASI07"
          ],
          "desc": "A tool or agent invoked by an unauthorised or impersonated intermediary can hijack the workflow. Agent-to-agent links are the horizontal seam."
        },
        "standard": [
          "delegation-chain provenance (act-claim lineage carried across hops)",
          "A2A v1.0.0 signed Agent Cards (optional JWS/JCS integrity & authenticity)",
          "domain trust via HTTPS + trusted signing key"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.4.1 (authenticated agent principals); C9.5.5 (policy-gated inter-agent delegation)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Authenticated, signed agent-to-agent comms is the AISVS authenticated agent principal and policy-gated inter-agent delegation.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (Multi-agent: communicate via structured schemas, not free text)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Authenticate and sign agent-to-agent communication maps to IMDA MGF Multi-agent: communicate via structured schemas, not free text.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-11 (agent security boundaries)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-11",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-11) correspond to \"Authenticate and sign agent-to-agent communication\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Authenticate and sign agent-to-agent communication\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI07 Insecure Inter-Agent Communication",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI07",
              "rationale": "Authenticate and sign agent-to-agent communication addresses OWASP ASI07 Insecure Inter-Agent Communication.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-05.2, APP-03.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-05.2, APP-03.2",
              "rationale": "Authenticate and sign agent-to-agent communication maps to AISMM control(s) IAM-05.2, APP-03.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Linux Foundation A2A",
          "Beyond Identity (Ceros)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "a2a-spec",
          "did-vc",
          "beyondidentity-ceros"
        ],
        "implementation": {
          "pattern": "Agents identify each other before they trust each other. Under A2A v1.0.0, an Agent Card can be signed (optional JWS, content canonicalised with JCS) so a caller can verify the card's integrity and authenticity. Domain trust comes from serving the card over HTTPS at its well-known URI plus trusting the signing key, the signature alone does not prove control of a domain. A2A only permits signed Agent Cards (a MAY) while requiring encrypted transport (MUST) for production; requiring signed cards is this matrix's policy for production trust boundaries where agent discovery drives authorization, routing, or tool access, not a universal A2A mandate.",
          "steps": [
            "Verify the Agent Card's JWS signature against a trusted signing key before trusting the agent.",
            "Anchor domain trust in HTTPS/TLS at the card's well-known URI, not in the signature alone.",
            "Reject or quarantine cards that are unsigned, fail verification, or come from an untrusted key.",
            "Carry provenance across the delegation chain: each agent that forwards or acts on a request preserves the upstream identity and signature (the act-claim lineage from IA-03), so a downstream agent or tool can verify the whole chain, not only its immediate caller."
          ],
          "anti_patterns": [
            "treating an unsigned Agent Card as trusted",
            "assuming a signed card proves domain ownership",
            "no verification step before agent-to-agent calls"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm Agent Cards are verified (valid JWS chaining to a trusted key) and that domain trust is anchored in HTTPS at the well-known URI, not the signature alone.",
              "ref": "a2a-spec"
            }
          ],
          "runtime_test": [
            {
              "text": "Present a tampered or re-hosted Agent Card and a stale signature; both must be rejected.",
              "ref": "a2a-spec"
            }
          ],
          "evidence": [
            {
              "text": "Verification log for inbound agent connections: card source, signature result, and the trusted key used.",
              "ref": "a2a-spec"
            }
          ]
        },
        "lenses": {
          "engineering": "Verify the A2A Agent Card's JWS against a pinned key and require HTTPS at the well-known URI before calling another agent.",
          "detection": "Alert on agent-to-agent calls with unsigned, failed, or re-hosted cards.",
          "red_team": "Tamper with or re-host an Agent Card and replay a stale signature against the verifier.",
          "grc": "Inter-agent verification logs evidence that only authenticated agents were trusted.",
          "secops": "Card verification is the fast way to tell a genuine partner agent from an impostor."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "gap1",
        "star_ai": true
      },
      {
        "id": "PT-02",
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "deregister / refuse",
          "detail": "reject an unregistered MCP server and revoke its resource-bound token"
        },
        "enforcement_point": "Centralized MCP registry + tool-proxy gateway (each server an OAuth 2.1 resource server); no peer-to-peer hooks.",
        "layer": "protocol",
        "plane": "control",
        "name": "Authorize tool calls and govern the MCP server registry",
        "plain": "Approve which tools an agent may call, and keep the list of connected tools under control.",
        "threat": {
          "tags": [
            "ASI02"
          ],
          "desc": "Ungoverned tool connections (MCP servers) wired to broad cloud or SaaS permissions let an agent reach far more than intended. The GTG-1002 campaign weaponised exactly this, open-source pentest tools wired into a coding agent as MCP servers."
        },
        "standard": [
          "MCP OAuth resource-server checks (audience binding, RFC 8707 resource indicators, no token passthrough)",
          "MCP authorization (OAuth 2.1 resource-server model + RFC 9728 + RFC 8707)",
          "tool registry with dry-run / shadow mode"
        ],
        "mappings": {
          "aisvs": {
            "value": "C10.2.5 (authorize every tool call incl. argument values); C10.2.4 (scope-limited tools/list); C10.1.2 (allowlisted MCP servers)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C10 MCP Security",
              "rationale": "Tool-call authorization and MCP registry governance is the AISVS per-call authorization and allowlisted MCP servers.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (MCP: whitelist trusted servers; MCP as a governance layer)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Authorize tool calls and govern the MCP server registry maps to IMDA MGF MCP: whitelist trusted servers; MCP as a governance layer.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "IAM-15 (authorization mechanisms); IAM-18 (agent access restriction)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-15, IAM-18",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-15, IAM-18) correspond to \"Authorize tool calls and govern the MCP server registry\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Authorize tool calls and govern the MCP server registry\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.4.4 (tooling resources)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI02 Tool Misuse & Exploitation",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI02",
              "rationale": "Authorize tool calls and govern the MCP server registry addresses OWASP ASI02 Tool Misuse & Exploitation.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-03.3, IAM-04.3, APP-03.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-03.3, IAM-04.3, APP-03.2",
              "rationale": "Authorize tool calls and govern the MCP server registry maps to AISMM control(s) IAM-03.3, IAM-04.3, APP-03.2.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0053 (AI Agent Tool Invocation); ATLAS mitigations: AML.M0028 (AI Agent Tools Permissions Configuration)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0053; mitigations AML.M0028",
              "rationale": "Authorize tool calls and govern the MCP server registry addresses ATLAS technique(s) AI Agent Tool Invocation; implements ATLAS mitigation(s) AI Agent Tools Permissions Configuration.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "CrowdStrike",
          "Microsoft (Agent Governance Toolkit)",
          "Anthropic"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "mcp-authorization",
          "crowdstrike-aidr",
          "anthropic-mcp",
          "ms-agent-governance-toolkit",
          "anthropic-gtg1002",
          "aismm",
          "plaskett-coding-agent-security"
        ],
        "implementation": {
          "pattern": "Each remote, HTTP-transport MCP server is treated as an OAuth 2.1 resource server: it validates tokens but does not issue them, advertises its metadata for discovery (RFC 9728), and tokens are bound to the specific server (RFC 8707) to prevent confused-deputy passthrough. The OAuth profile is HTTP-transport-specific; a local STDIO MCP server is authorized out of band instead, by parent-process identity, executable/path allowlists, and environment-secret isolation. New tools enter a governed registry and run in dry-run/shadow mode before they are trusted.",
          "steps": [
            "Run remote (HTTP) MCP servers as OAuth 2.1 resource servers that validate, not mint, tokens.",
            "Branch by transport: apply the OAuth resource-server model only to remote HTTP MCP servers; a local STDIO server is authorized out of band, by parent-process identity, executable/path allowlists, and environment-secret isolation, not OAuth.",
            "Bind tokens to the specific MCP server with Resource Indicators (RFC 8707) to stop token passthrough.",
            "Govern a central registry of connected tools; new tools start in dry-run/shadow mode.",
            "Scope each tool's downstream cloud/SaaS permissions to least privilege.",
            "For OAuth-protected MCP servers, treat each as a resource server: publish protected-resource metadata, bind tokens to the server's audience with RFC 8707 resource indicators, reject token passthrough, and verify a token was issued for this server to prevent confused-deputy abuse.",
            "On the OAuth flow itself, require PKCE (S256), keep bearer tokens in the Authorization header and never in a query string, validate redirect URIs by exact match, and obtain per-client consent, the MCP authorization hardening (spec rev 2025-11-25) against token theft and the confused-deputy problem."
          ],
          "anti_patterns": [
            "agents connecting to arbitrary MCP servers with no registry",
            "tools wired to broad cloud/SaaS scopes",
            "tokens that any downstream server can replay (confused deputy)"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm MCP servers validate tokens (resource-server model), advertise RFC 9728 metadata, and bind tokens via RFC 8707; confirm a governed tool registry exists.",
              "ref": "mcp-authorization"
            }
          ],
          "runtime_test": [
            {
              "text": "Attempt to connect an un-registered MCP server and to replay a token meant for server A against server B; both must fail.",
              "ref": "mcp-authorization"
            }
          ],
          "evidence": [
            {
              "text": "Tool registry with each MCP server's status (shadow/approved), scopes, and the discovery/connection log.",
              "ref": "crowdstrike-aidr"
            }
          ]
        },
        "lenses": {
          "engineering": "Make MCP servers resource servers; bind tokens with RFC 8707; put new tools through a shadow-mode registry.",
          "detection": "Alert on connections to un-registered MCP servers and on tools used outside their approved scope.",
          "red_team": "Wire a rogue MCP server in (GTG-1002 style) and try token passthrough between servers; plant a malicious mcp.json / mcp-approvals.json in an opened repo and see if it auto-loads (Plaskett).",
          "grc": "The tool registry is your inventory and approval record for everything the agent can call.",
          "secops": "A governed registry lets you cut off a malicious tool across all agents at once."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "PT-03",
        "star_ai": true,
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/LI-03",
            "id": "LI-03",
            "name": "Supply Chain Integrity",
            "rel": "mirrors"
          }
        ],
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "invalidate manifest",
          "detail": "refuse to load an unsigned or silently-changed manifest"
        },
        "enforcement_point": "Manifest-signature verifier at load time and in CI, backed by an SBOM, re-verified on every update.",
        "layer": "protocol",
        "plane": "control",
        "name": "Verify skill/tool manifest integrity and sign the supply chain",
        "plain": "Check that every plug-in is genuine and unaltered before the agent uses it.",
        "threat": {
          "tags": [
            "ASI04",
            "NHI3"
          ],
          "desc": "Weaponised community skills, silent update drift, and unsafe manifest parsing let attackers slip code into the agent through its plug-ins."
        },
        "standard": [
          "Ed25519 manifest signing",
          "SBOM",
          "plugin verification"
        ],
        "mappings": {
          "aisvs": {
            "value": "C10.1.1 (trusted, cryptographically-verified components); C9.3.7 (registry and allowlist verification); C6.2.2 (signed AI BOM)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C10 MCP Security; C9 Orchestration & Agentic Action; C6 Supply Chain Security",
              "rationale": "Manifest integrity and supply-chain signing maps to AISVS trusted, cryptographically-verified components and signed AI BOM.",
              "verified_on": "2026-06-24"
            }
          },
          "mitre": {
            "value": "AML.T0099 (AI Agent Tool Data Poisoning); AML.T0104 (Publish Poisoned AI Agent Tool); ATLAS mitigations: AML.M0014 (Verify AI Artifacts), AML.M0013 (Code Signing)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0099, AML.T0104; mitigations AML.M0014, AML.M0013",
              "rationale": "Verify skill/tool manifest integrity and sign the supply chain addresses ATLAS technique(s) AI Agent Tool Data Poisoning, Publish Poisoned AI Agent Tool; implements ATLAS mitigation(s) Verify AI Artifacts, Code Signing.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.1 (third-party skill supply-chain risk)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.1",
              "rationale": "Verify skill/tool manifest integrity and sign the supply chain maps to IMDA MGF third-party skill supply-chain risk."
            }
          },
          "aicm": {
            "value": "STA-08 (supply chain inventory); STA-09 (service bill of material)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: STA-08, STA-09",
              "rationale": "These CSA AICM v1.1 control(s) (STA-08, STA-09) correspond to \"Verify skill/tool manifest integrity and sign the supply chain\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Manage functions",
              "rationale": "NIST AI RMF Map / Manage functions: establish context and identify and categorise the AI risks; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Verify skill/tool manifest integrity and sign the supply chain\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.10.3 (suppliers)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI04 Agentic Supply Chain Compromise; NHI3 Vulnerable Third-Party NHI; LLM03:2025 Supply Chain",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI04, NHI3, LLM03",
              "rationale": "Verify skill/tool manifest integrity and sign the supply chain addresses OWASP ASI04 Agentic Supply Chain Compromise; NHI3 Vulnerable Third-Party NHI; LLM03:2025 Supply Chain.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "DEV-02.2, DEV-03.2, DEV-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM DEV-02.2, DEV-03.2, DEV-04.2",
              "rationale": "Verify skill/tool manifest integrity and sign the supply chain maps to AISMM control(s) DEV-02.2, DEV-03.2, DEV-04.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft (Agent Governance Toolkit)",
          "CrowdStrike"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-llm-2025",
          "ms-agent-governance-toolkit",
          "owasp-asi-2026",
          "owasp-nhi-2025",
          "aismm",
          "cisa-sbom-ai"
        ],
        "implementation": {
          "pattern": "Every skill and tool manifest is cryptographically signed (e.g. Ed25519) and verified before use, with an SBOM tracking what's inside. Updates re-verify; unsigned or drifted manifests are refused.",
          "steps": [
            "Require a valid signature (Ed25519) on every skill/tool manifest before load.",
            "Maintain an SBOM for agent skills and dependencies.",
            "Re-verify on update so a silently changed manifest is caught.",
            "Refuse unsigned, unverified, or drifted manifests.",
            "Track the supply chain against CISA’s SBOM-for-AI minimum element clusters (models, datasets, infrastructure, security properties, KPIs, system-level properties, metadata)."
          ],
          "anti_patterns": [
            "installing community skills without signature checks",
            "no re-verification when a tool updates",
            "unsafe deserialization of manifest content"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm every skill/tool manifest carries a verified signature and an SBOM, and that updates re-verify.",
              "ref": "ms-agent-governance-toolkit"
            }
          ],
          "runtime_test": [
            {
              "text": "Present a tampered or unsigned manifest and a drifted update; all must be refused. Pair with CI static analysis (AS-02).",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Signature-verification log per skill load and an SBOM inventory with provenance.",
              "ref": "ms-agent-governance-toolkit"
            }
          ]
        },
        "lenses": {
          "engineering": "Sign manifests with Ed25519 and verify on load and on update; keep an SBOM.",
          "detection": "Alert on unsigned or signature-failed skill loads and on manifest drift.",
          "red_team": "Submit a weaponised community skill and a silent malicious update; see if either loads.",
          "grc": "Signature logs and the SBOM evidence supply-chain integrity.",
          "secops": "Signatures let you trace and revoke a compromised skill across the fleet."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "PT-04",
        "tiers": [
          "external-reach",
          "data-sensitivity"
        ],
        "detection_schema": {
          "telemetry": [
            "tool_id",
            "output_schema_valid",
            "injection_pattern_score",
            "agent_id"
          ],
          "baseline": "the expected output schema per tool",
          "alert": "a schema violation or an indirect-injection pattern in a tool's response"
        },
        "enforcement_point": "In-path tool gateway / security proxy: schema-validate and sanitize tool output before it re-enters the prompt.",
        "layer": "protocol",
        "plane": "data",
        "name": "Validate tool input/output, treat tool results as untrusted",
        "plain": "Treat whatever a tool sends back like a stranger's note: check it before acting on it.",
        "threat": {
          "tags": [
            "ASI01",
            "ASI02"
          ],
          "desc": "Adversarial content inside a tool's response, indirect prompt injection, can hijack the agent's next action."
        },
        "standard": [
          "JSON schema validation",
          "output sanitization",
          "dual-layer guardrails"
        ],
        "mappings": {
          "mitre": {
            "value": "ATLAS mitigation: AML.M0033 (Input and Output Validation for AI Agent Components)",
            "status": "verified",
            "fit": "supporting",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS mitigations AML.M0033",
              "rationale": "Validate tool input/output, treat tool results as untrusted implements ATLAS mitigation(s) Input and Output Validation for AI Agent Components.",
              "verified_on": "2026-06-24"
            }
          },
          "aisvs": {
            "value": "C9.3.2 and C10.4.1 (schema-validate tool output before context); C10.4.2 (screen tool results for injection)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C10 MCP Security",
              "rationale": "Validating tool I/O as untrusted is the AISVS schema-validation of tool output before context and injection screening.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (runtime input validation of tool responses)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Validate tool input/output, treat tool results as untrusted maps to IMDA MGF runtime input validation of tool responses.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-09 (input validation); AIS-10 (output validation)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-09, AIS-10",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-09, AIS-10) correspond to \"Validate tool input/output, treat tool results as untrusted\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure / Manage functions",
              "rationale": "NIST AI RMF Measure / Manage functions: analyse, assess, benchmark, and monitor the AI risks and impacts; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Validate tool input/output, treat tool results as untrusted\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Goal Hijack; ASI02 Tool Misuse (indirect prompt injection)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01, ASI02",
              "rationale": "Validate tool input/output, treat tool results as untrusted addresses OWASP ASI01 Goal Hijack; ASI02 Tool Misuse (indirect prompt injection).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-02.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-02.2",
              "rationale": "Validate tool input/output, treat tool results as untrusted maps to AISMM control(s) APP-02.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Google",
          "Anthropic"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-agentic-threats",
          "google-saif2",
          "anthropic-mcp",
          "aismm"
        ],
        "implementation": {
          "pattern": "Tool inputs and outputs are validated against strict schemas, and tool output is treated as untrusted input, sanitised and bounded before it can influence the agent's next step. Guardrails sit on both the input and output side.",
          "steps": [
            "Define and enforce a strict schema for each tool's input and output.",
            "Sanitise tool output and strip embedded instructions before it re-enters the prompt.",
            "Apply guardrails on both directions, not just user input."
          ],
          "anti_patterns": [
            "passing raw tool output straight back into the model as trusted",
            "no schema on tool responses",
            "guardrails only on the user prompt, not on tool output"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm strict input/output schemas and that tool output is sanitised before re-entering context.",
              "ref": "owasp-agentic-threats"
            }
          ],
          "runtime_test": [
            {
              "text": "Return adversarial content in a tool response (indirect prompt injection) and confirm the agent does not act on the embedded instruction. Use AgentDojo/InjecAgent.",
              "ref": "agentdojo"
            }
          ],
          "evidence": [
            {
              "text": "Schema-validation and sanitisation logs for tool I/O, with rejected/altered payloads.",
              "ref": "owasp-agentic-threats"
            }
          ]
        },
        "lenses": {
          "engineering": "Enforce JSON schemas on tool I/O and sanitise tool output before it re-enters the prompt.",
          "detection": "Alert on tool responses that fail schema validation or contain instruction-like content.",
          "red_team": "Embed injection payloads in tool responses (InjecAgent/AgentDojo) and see if the agent obeys them.",
          "grc": "I/O validation logs evidence that tool output was treated as untrusted.",
          "secops": "Output sanitisation blunts indirect injection before it reaches the agent's next action."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "PT-05",
        "tiers": [
          "external-reach",
          "irreversibility"
        ],
        "enforcement_point": "The destination sink that consumes the output (output-encoding, parameterized statements, schema validation as input).",
        "layer": "protocol",
        "plane": "data",
        "name": "Encode and validate the agent's own output before it reaches other systems",
        "plain": "Treat what the agent produces as untrusted too, before another system or agent runs with it.",
        "threat": {
          "tags": [
            "LLM05",
            "ASI08"
          ],
          "desc": "PT-04 guards what comes in. The mirror image is missing in most stacks: the agent's own output is trusted and executed by a database, shell, browser, API, or a second agent, classic injection (XSS, SQLi, RCE) and cascading failures."
        },
        "standard": [
          "context-appropriate output encoding",
          "downstream input validation",
          "untrusted-output handling (OWASP LLM05)"
        ],
        "mappings": {
          "aisvs": {
            "value": "C7.1.1 (schema-validate model output); C7.3.4 (detect hidden or encoded output); C7.3.3 (block output-triggered outbound)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C7 Model Behavior & Output Control",
              "rationale": "Encoding and validating the agent's own output is the AISVS schema-validation and hidden or encoded output detection.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (validate outputs before they are acted upon)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Encode and validate the agent's own output before it reaches other systems maps to IMDA MGF validate outputs before they are acted upon."
            }
          },
          "aicm": {
            "value": "AIS-10 (output validation); AIS-15 (prompt differentiation)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-10, AIS-15",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-10, AIS-15) correspond to \"Encode and validate the agent's own output before it reaches other systems\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Encode and validate the agent's own output before it reaches other systems\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "LLM05 Improper Output Handling; ASI08 Cascading Agent Failures",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP LLM05, ASI08",
              "rationale": "Encode and validate the agent's own output before it reaches other systems addresses OWASP LLM05 Improper Output Handling; ASI08 Cascading Agent Failures.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-02.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-02.2",
              "rationale": "Encode and validate the agent's own output before it reaches other systems maps to AISMM control(s) APP-02.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-llm-2025",
          "aismm"
        ],
        "implementation": {
          "pattern": "The agent's output is encoded for its destination and validated by the receiving system before it is executed or trusted. A second agent verifies an upstream agent's call rather than running it blindly.",
          "steps": [
            "Encode agent output for its target context (HTML, SQL, shell, API) before it is used.",
            "Have the receiving system validate agent output as untrusted input, not trusted instruction.",
            "When one agent consumes another's output, verify it before acting."
          ],
          "anti_patterns": [
            "a downstream system executing agent output verbatim",
            "a second agent running an upstream agent's call with no check",
            "no output encoding for the destination context"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm agent output is encoded for its destination and validated by the receiving system before execution.",
              "ref": "owasp-llm-2025"
            }
          ],
          "runtime_test": [
            {
              "text": "Have the agent emit a payload crafted to inject into a downstream system (XSS/SQLi/command) and confirm the receiver rejects or neutralises it.",
              "ref": "owasp-llm-2025"
            }
          ],
          "evidence": [
            {
              "text": "Output-handling validation logs at the boundary between the agent and each downstream consumer.",
              "ref": "owasp-llm-2025"
            }
          ]
        },
        "lenses": {
          "engineering": "Encode agent output per destination and validate it at the receiving system; don't let agent B run agent A's call unchecked.",
          "detection": "Alert when downstream systems receive agent output containing executable/injection patterns.",
          "red_team": "Get the agent to emit an XSS/SQLi/command payload and see if a downstream system runs it.",
          "grc": "Boundary validation logs evidence that agent output couldn't poison downstream systems.",
          "secops": "Output handling stops one compromised agent from cascading into others."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "PT-06",
        "tiers": [
          "external-reach"
        ],
        "enforcement_point": "In-path parameter sanitizer (content inspection, fail-closed) plus backend parameterization at the tool's own datastore.",
        "layer": "protocol",
        "plane": "data",
        "name": "Sanitize model-generated tool parameters, not just the schema",
        "plain": "Check the actual words the agent puts into a tool’s text fields, not just that the form is filled in correctly.",
        "threat": {
          "tags": [
            "ASI02",
            "ASI05"
          ],
          "desc": "A tool call can pass schema validation while a free-text field the model wrote (a query, path, body, or filter) carries an injected payload, such as SQL, a vector-store filter, a shell fragment, or a nested prompt, that fires against the tool backend. Structured-schema validation (PT-04) does not inspect the semantic content of model-generated text fields."
        },
        "standard": [
          "semantic parameter sanitization",
          "parameterized / bound queries at the tool backend",
          "content inspection of model-written free-text fields"
        ],
        "mappings": {
          "aisvs": {
            "value": "C10.4.3 (reject malformed or oversized tool params); C9.5.1 (constrain parameter values)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C10 MCP Security; C9 Orchestration & Agentic Action",
              "rationale": "Sanitizing model-generated tool parameters is the AISVS rejection of malformed params and parameter-value constraints.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (Tools: require strict input formats)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Sanitize model-generated tool parameters, not just the schema maps to IMDA MGF Tools: require strict input formats.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-09 (input validation); AIS-10 (output validation)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-09, AIS-10",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-09, AIS-10) correspond to \"Sanitize model-generated tool parameters, not just the schema\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "APP-02.2, APP-04.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-02.2, APP-04.1",
              "rationale": "Sanitize model-generated tool parameters, not just the schema maps to AISMM control(s) APP-02.2, APP-04.1.",
              "verified_on": "2026-06-22"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Sanitize model-generated tool parameters, not just the schema\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI02 Tool Misuse; ASI05 Unexpected Code Execution",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI02, ASI05",
              "rationale": "Sanitize model-generated tool parameters, not just the schema addresses OWASP ASI02 Tool Misuse; ASI05 Unexpected Code Execution.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0053 (AI Agent Tool Invocation); ATLAS mitigations: AML.M0033 (Input and Output Validation for AI Agent Components)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0053; mitigations AML.M0033",
              "rationale": "Sanitize model-generated tool parameters, not just the schema addresses ATLAS technique(s) AI Agent Tool Invocation; implements ATLAS mitigation(s) Input and Output Validation for AI Agent Components.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026",
          "owasp-agentic-threats",
          "aismm",
          "semantic-sanitizer-ref"
        ],
        "implementation": {
          "pattern": "Before a tool fires, free-text parameters the model generated are parsed and sanitized for nested injection, not merely checked against the JSON schema. The tool backend uses parameterized or bound queries so a text field cannot alter command structure, and high-risk fields are content-inspected for SQL, vector-filter, shell, or prompt payloads. The sanitizer runs in-path and fails closed.",
          "steps": [
            "Treat any free-text tool parameter the model wrote as untrusted input, even inside a valid schema.",
            "Use parameterized / bound queries and safe APIs at the tool backend so a text field cannot change command structure.",
            "Content-inspect high-risk free-text fields (query, path, body, filter) for injection payloads before the call fires; fail closed past a risk threshold.",
            "Run the sanitizer in the in-path policy engine, co-located with GV-04 and outside the model’s context window, so the agent cannot skip its own hooks.",
            "Start with deterministic patterns (SQL, shell, script, system-override, null-byte); optionally upgrade intent scoring to a small fine-tuned classifier (e.g. DeBERTa)."
          ],
          "anti_patterns": [
            "trusting a tool call because it passes JSON schema validation",
            "string-concatenating a model-written field into a query or command",
            "running the sanitizer inside the model’s context where it can be prompted to skip itself"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm the tool backend uses parameterized / bound queries and that model-generated free-text fields are semantically inspected (not just schema-checked) by an in-path, fail-closed sanitizer.",
              "ref": "owasp-agentic-threats"
            }
          ],
          "runtime_test": [
            {
              "text": "Drive the agent to place an injected payload (SQL, vector filter, shell, nested prompt) inside a valid schema’s free-text field and confirm it is hard-blocked before reaching the backend.",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Sanitization / parameterization logs for tool calls, with the risk score and rejected or neutralized free-text payloads.",
              "ref": "semantic-sanitizer-ref"
            }
          ]
        },
        "lenses": {
          "engineering": "Parameterize tool backends; run an in-path fail-closed sanitizer over model-written free-text fields before the call fires, schema validation is not enough.",
          "detection": "Alert on injection patterns (SQL, shell, vector-filter, prompt, system-override) inside otherwise-valid tool-call parameters.",
          "red_team": "Pass schema validation but inject a payload inside a free-text field (query/path/body) and see if it fires against the backend.",
          "grc": "Sanitizer risk-score logs evidence that model-written tool arguments were treated as untrusted.",
          "secops": "Catching prose-nested injection stops a valid-looking tool call from becoming an exploit."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "PT-07",
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "quarantine tool",
          "detail": "pull a tool whose description carries hidden instructions; re-verify on update"
        },
        "enforcement_point": "Tool-description scanner at discovery + signed, pinned tool metadata so a description cannot be swapped after approval.",
        "layer": "protocol",
        "plane": "data",
        "name": "Verify tool descriptions for hidden instructions (description injection)",
        "plain": "Check a tool’s own description for sneaky instructions before the agent reads and trusts it.",
        "threat": {
          "tags": [
            "ASI04",
            "ASI02",
            "ASI01"
          ],
          "desc": "PT-06 sanitizes the parameters the model writes; this is the mirror image. An attacker poisons a tool’s semantic description or documentation in a registry or MCP server, so the model reads it during discovery, misreads how or when to use the tool, and is steered into a malicious execution flow. The structural schema is valid; the prose documentation carries the attack (tool-poisoning / semantic phishing)."
        },
        "standard": [
          "tool-description / documentation integrity check",
          "structural schema with no implicit instructions",
          "signed tool metadata"
        ],
        "mappings": {
          "aisvs": {
            "value": "C10.4.8 (tool-definition snapshots and re-approval on change); C10.4.2 (screen tool content for injection)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C10 MCP Security",
              "rationale": "Verifying tool descriptions for hidden instructions is the AISVS tool-definition snapshot and re-approval plus content screening.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (MCP first-use trust verification for newly connected servers)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Verify tool descriptions for hidden instructions (description injection) maps to IMDA MGF MCP first-use trust verification for newly connected servers."
            }
          },
          "aicm": {
            "value": "AIS-09 (input validation); STA-09 (service bill of material)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-09, STA-09",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-09, STA-09) correspond to \"Verify tool descriptions for hidden instructions (description injection)\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "APP-03.2, APP-02.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-03.2, APP-02.2",
              "rationale": "Verify tool descriptions for hidden instructions (description injection) maps to AISMM control(s) APP-03.2, APP-02.2.",
              "verified_on": "2026-06-22"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Verify tool descriptions for hidden instructions (description injection)\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI04 Supply Chain; ASI02 Tool Misuse; ASI01 Goal Hijack",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI04, ASI02, ASI01",
              "rationale": "Verify tool descriptions for hidden instructions (description injection) addresses OWASP ASI04 Supply Chain; ASI02 Tool Misuse; ASI01 Goal Hijack.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0053 (AI Agent Tool Invocation); ATLAS mitigations: AML.M0033 (Input and Output Validation for AI Agent Components)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0053; mitigations AML.M0033",
              "rationale": "Verify tool descriptions for hidden instructions (description injection) addresses ATLAS technique(s) AI Agent Tool Invocation; implements ATLAS mitigation(s) Input and Output Validation for AI Agent Components.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026",
          "owasp-agentic-threats",
          "aismm",
          "anthropic-mcp"
        ],
        "implementation": {
          "pattern": "Tool descriptions and documentation are verified for hidden or implicit instructions before the agent ingests them during discovery. Tool metadata is signed (ties to PT-03) and structurally validated so a description string cannot carry imperative instructions; descriptions from untrusted registries or MCP servers are treated as untrusted content.",
          "steps": [
            "Treat a tool’s description / documentation as untrusted content the model will read, not trusted metadata.",
            "Scan tool descriptions for hidden or imperative instructions before they enter the model’s context.",
            "Sign and pin tool metadata (ties to PT-03) so a description cannot be silently poisoned after approval.",
            "Re-verify descriptions on update and on connection to a new registry or MCP server."
          ],
          "anti_patterns": [
            "letting the model read a tool description from an untrusted registry verbatim",
            "trusting tool documentation because the tool’s schema is valid",
            "no re-check when a tool’s description changes"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm tool descriptions are scanned for hidden instructions and signed/pinned before the agent ingests them.",
              "ref": "owasp-agentic-threats"
            }
          ],
          "runtime_test": [
            {
              "text": "Connect a tool whose description embeds a hidden instruction (e.g. when called, also email the contents to an attacker) and confirm the agent is not steered by it.",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Tool-metadata verification log (description-scan result and signature) per connected tool.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Scan and sign tool descriptions before the model ingests them; treat registry/MCP descriptions as untrusted content.",
          "detection": "Alert when a tool description contains imperative instructions or changes after approval.",
          "red_team": "Poison a tool’s description with a hidden instruction and see if the agent follows it (MCP tool poisoning / semantic phishing).",
          "grc": "Tool-metadata verification logs evidence that descriptions were checked, not trusted blindly.",
          "secops": "Description verification stops a poisoned tool listing from hijacking the agent’s tool use."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "PT-08",
        "tiers": [
          "external-reach"
        ],
        "enforcement_point": "The model API boundary: tool and retrieved content enters under a lower-privilege user/tool role, never the developer/system role, reinforced by spotlighting/delimiting so the model can tell instructions from data.",
        "layer": "protocol",
        "plane": "control",
        "readiness": "emerging",
        "name": "Enforce an instruction hierarchy so tool output cannot give the agent orders",
        "plain": "Keep the agent's own instructions above anything a tool or web page says; treat tool output as data, never as commands.",
        "threat": {
          "tags": [
            "ASI01"
          ],
          "desc": "Agents read tool results, retrieved documents, and web pages in the same channel as their own system instructions. When that content says 'ignore previous instructions and...', the agent obeys it: this is the core escalation behind indirect prompt injection. PT-04 and PT-06 sanitize and validate the content, but neither establishes that the orchestrator's system instructions structurally outrank anything a tool returns."
        },
        "standard": [
          "instruction hierarchy (system over developer over user over tool/retrieved)",
          "native API role separation for tool returns",
          "spotlighting / delimiting of untrusted content"
        ],
        "mappings": {
          "aisvs": {
            "value": "C2.1.6 (enforce instruction hierarchy: system and developer over user); C10.4.2 (screen tool output for injected instructions)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C2 Input Validation; C10 MCP Security",
              "rationale": "An instruction hierarchy where tool output cannot give orders is the AISVS persistent system-over-user instruction hierarchy.",
              "verified_on": "2026-06-24"
            }
          },
          "aismm": {
            "value": "APP-02.2 (guardrails and prompt separation)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-02.2 (guardrails and prompt separation)",
              "rationale": "Enforce an instruction hierarchy so tool output cannot give the agent orders maps to AISMM control(s) APP-02.2 (guardrails and prompt separation)."
            }
          },
          "mgf": {
            "value": "§2.3.1 (structural / system-level safeguards over prompt-layer)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Enforce an instruction hierarchy so tool output cannot give the agent orders maps to IMDA MGF structural / system-level safeguards over prompt-layer."
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Enforce an instruction hierarchy so tool output cannot give the agent orders\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "owasp": {
            "value": "LLM01:2025 Prompt Injection; ASI01 Agent Goal Hijack",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP LLM01, ASI01",
              "rationale": "Enforce an instruction hierarchy so tool output cannot give the agent orders addresses OWASP LLM01:2025 Prompt Injection; ASI01 Agent Goal Hijack.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0051 (LLM Prompt Injection); AML.T0080 (AI Agent Context Poisoning); ATLAS mitigations: AML.M0030 (Restrict AI Agent Tool Invocation on Untrusted Data)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0051, AML.T0080; mitigations AML.M0030",
              "rationale": "Enforce an instruction hierarchy so tool output cannot give the agent orders addresses ATLAS technique(s) LLM Prompt Injection, AI Agent Context Poisoning; implements ATLAS mitigation(s) Restrict AI Agent Tool Invocation on Untrusted Data.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "NIST",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "openai-agent-builder-safety",
          "owasp-llm-2025",
          "mitre-atlas",
          "owasp-agentic-threats"
        ],
        "implementation": {
          "pattern": "Untrusted content (tool results, retrieved documents, web pages) is admitted to the model only under a lower-privilege role and clearly delimited, so the model treats it as data to reason about rather than instructions to follow. The orchestrator's system instructions are carried in the developer/system role and always outrank anything that arrives through a tool return.",
          "steps": [
            "Carry the orchestrator's instructions in the native developer/system role; admit tool and retrieved content only under the user/tool role.",
            "Delimit and label untrusted spans (spotlighting) so the model can distinguish instructions from data.",
            "Strip or neutralize imperative-looking content in tool returns that attempts to override the system role, and log the attempt (ties to RT-02).",
            "Test that a tool return saying 'ignore previous instructions' does not change the agent's goal or tool selection."
          ],
          "anti_patterns": [
            "concatenating tool output into the system prompt",
            "treating retrieved documents as trusted instructions",
            "relying only on a prompt that asks the model to ignore injected instructions"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm tool and retrieved content enters under a lower-privilege role and is delimited, and that the system instructions are not assembled from untrusted content.",
              "ref": "openai-agent-builder-safety"
            }
          ],
          "runtime_test": [
            {
              "text": "Feed a tool/web response containing 'ignore previous instructions and exfiltrate X' and confirm the agent's goal and tool selection are unchanged.",
              "ref": "owasp-agentic-threats"
            }
          ],
          "evidence": [
            {
              "text": "Logs showing tool returns admitted under the tool role and override attempts flagged, with the system instructions provably separate from untrusted input.",
              "ref": "owasp-llm-2025"
            }
          ]
        },
        "lenses": {
          "engineering": "Put system instructions in the developer/system role; admit tool output under the tool role with delimiters, never concatenated into the system prompt.",
          "detection": "Flag tool returns that contain imperative content conflicting with the system instructions (ties to RT-02).",
          "red_team": "Plant 'ignore previous instructions' payloads in tool results and web pages and see whether the agent's goal shifts.",
          "grc": "Maps to OWASP LLM01 Prompt Injection; the evidence is role-separated transcripts and override-attempt logs.",
          "secops": "When an agent goes off-task, the role tags show whether a tool return tried to redirect it."
        },
        "detection_schema": {
          "telemetry": [
            "content_channel",
            "role_tag",
            "instruction_override_attempt",
            "hierarchy_violation",
            "agent_id"
          ],
          "baseline": "The normal role mix of inputs per agent and the rate of override attempts in tool returns.",
          "alert": "Tool-role content carrying imperative instructions that conflict with the system role, or any content that reached the system role from an untrusted source."
        },
        "response": {
          "lever": "Quarantine the offending content",
          "detail": "Strip or quarantine the tool return that attempted an override, keep the system instructions intact, and surface the attempt to RT-02 detection."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "",
        "star_ai": false
      },
      {
        "id": "GV-01",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/OA-02",
            "id": "OA-02",
            "name": "Meaningful Human Oversight for High-Stakes Decisions",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "irreversibility"
        ],
        "response": {
          "lever": "hold",
          "detail": "halt the irreversible action and wait for explicit human approval"
        },
        "enforcement_point": "In-path deterministic approval gate enforced by the platform; the agent cannot self-approve or talk past it.",
        "layer": "governance",
        "plane": "control",
        "name": "Require a human hard-stop for irreversible actions",
        "plain": "A person must say yes before the agent does anything that can't be undone.",
        "threat": {
          "tags": [
            "ASI10",
            "ASI02"
          ],
          "desc": "Autonomous writes, deletions, transfers, or deployments with no human checkpoint can cause irreversible harm if the agent is wrong or hijacked."
        },
        "standard": [
          "MFA-backed, cryptographically signed, time-bounded approval tokens (AWS Scoping Matrix Scope 2)",
          "deterministic approval workflows",
          "quorum logic",
          "hard-stop on irreversible actions"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.2.1 (human approval before irreversible actions); C9.2.3-C9.2.4 (reversibility classification and enforcement); C9.6.1 (manual kill-switch)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "A human hard-stop for irreversible actions is the AISVS human approval before irreversible actions plus reversibility classification.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.2.2 (human approval at significant checkpoints, esp. irreversible actions)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.2",
              "rationale": "Require a human hard-stop for irreversible actions maps to IMDA MGF human approval at significant checkpoints, esp. irreversible actions.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "GRC (Governance, Risk & Compliance)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: ",
              "rationale": "These CSA AICM v1.1 control(s) () correspond to \"Require a human hard-stop for irreversible actions\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern function",
              "rationale": "NIST AI RMF Govern function: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight. \"Require a human hard-stop for irreversible actions\" is a corresponding governance activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI10 Rogue Agents; ASI02 Tool Misuse",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI10, ASI02",
              "rationale": "Require a human hard-stop for irreversible actions addresses OWASP ASI10 Rogue Agents; ASI02 Tool Misuse.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-04.2, IR-04.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-04.2, IR-04.3",
              "rationale": "Require a human hard-stop for irreversible actions maps to AISMM control(s) APP-04.2, IR-04.3.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft (Agent Governance Toolkit)",
          "Okta (Auth0 async approval)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "aws-scoping-matrix",
          "cisa-agentic",
          "ms-agent-governance-toolkit",
          "auth0-genai"
        ],
        "implementation": {
          "pattern": "Irreversible actions stop deterministically and wait for explicit human approval (with quorum where the stakes warrant). The stop is enforced by the platform, not requested politely of the model.",
          "steps": [
            "Classify which actions are irreversible (deletes, transfers, deployments, external sends).",
            "Insert a deterministic hard-stop that blocks those actions pending approval.",
            "Require a named human approval, quorum for the highest-stakes actions.",
            "Make the stop platform-enforced, so a prompt-injected agent cannot skip it.",
            "Harden the approval itself: require MFA for approvers, cryptographically sign the approval decision, and time-bound the approval token so it auto-expires (AWS Agentic AI Security Scoping Matrix, Scope 2)."
          ],
          "anti_patterns": [
            "asking the model to 'please confirm' instead of a hard gate",
            "a single broad approval covering all future irreversible actions",
            "approvals the agent itself can satisfy",
            "running the agent in a dangerous / auto-approve permission mode that skips the human gate"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm irreversible actions are classified and blocked by a deterministic, platform-enforced approval gate (not model-requested).",
              "ref": "cisa-agentic"
            }
          ],
          "runtime_test": [
            {
              "text": "Drive the agent to attempt an irreversible action under prompt injection; confirm it halts and waits for a human, and that the agent cannot self-approve.",
              "ref": "ms-agent-governance-toolkit"
            }
          ],
          "evidence": [
            {
              "text": "Approval record linking each irreversible action to the human (or quorum) who approved it.",
              "ref": "auth0-genai"
            }
          ]
        },
        "lenses": {
          "engineering": "Put a deterministic approval gate in front of irreversible actions; wire it to a CIBA/async approval, enforced outside the agent.",
          "detection": "Alert if an irreversible action ever completes without a matching approval event.",
          "red_team": "Try to get the agent to self-approve or bypass the gate via injection.",
          "grc": "The approval record is direct evidence a human authorised every irreversible action.",
          "secops": "The hard-stop is your last line before an unrecoverable action lands."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-02",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/CR-02",
            "id": "CR-02",
            "name": "Model Evidence Archive and Audit Trail",
            "rel": "mirrors"
          }
        ],
        "tiers": [
          "data-sensitivity",
          "irreversibility"
        ],
        "detection_schema": {
          "telemetry": [
            "entry_seq",
            "chain_integrity_hash",
            "external_store_ack"
          ],
          "baseline": "a continuous, externally-held hash chain",
          "alert": "a chain break, a missing sequence number, or a write that did not reach the external store"
        },
        "enforcement_point": "External append-only, tamper-evident (hash-chained / Merkle-anchored) audit store, outside the agent platform's trust boundary.",
        "thesis_type": "compensating",
        "layer": "governance",
        "plane": "both",
        "name": "Keep an immutable, tamper-evident audit trail of what the agent did",
        "plain": "Write down every tool call, change, and decision in a record that can't be quietly altered.",
        "threat": {
          "tags": [
            "ASI08"
          ],
          "desc": "Without a trustworthy record you can't reconstruct what an agent did or why, and you lose accountability exactly when you need it most."
        },
        "standard": [
          "signed per-hop chain of custody (human, agent, sub-agent, tool)",
          "cryptographic provenance signing",
          "append-only / WORM logs",
          "Merkle-anchored audit"
        ],
        "mappings": {
          "mitre": {
            "value": "ATLAS mitigation: AML.M0024 (AI Telemetry Logging)",
            "status": "indicative",
            "fit": "supporting",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS mitigation AML.M0024",
              "rationale": "AI Telemetry Logging produces the records that an immutable, tamper-evident trail protects. Logging is not itself immutability, so this is a supporting mapping."
            }
          },
          "aisvs": {
            "value": "C12.4.2 (log security-critical actions with approver, params, outcome); C12.5.3 (immutable audit records); C12.1.2 (policy decisions documented for forensics)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C12 Monitoring, Logging & Anomaly Detection",
              "rationale": "An immutable, tamper-evident audit trail is the AISVS logging of security-critical actions and immutable audit records.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.3 (ensure log immutability; complete audit trails)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.3",
              "rationale": "Keep an immutable, tamper-evident audit trail of what the agent did maps to IMDA MGF ensure log immutability; complete audit trails.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "LOG-07 (logging scope); LOG-09 (log records)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-07, LOG-09",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-07, LOG-09) correspond to \"Keep an immutable, tamper-evident audit trail of what the agent did\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern / Manage functions",
              "rationale": "NIST AI RMF Govern / Manage functions: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Keep an immutable, tamper-evident audit trail of what the agent did\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "EU AI Act Art. 12 (logging capability); Art. 19 (provider) / Art. 26(6) (deployer) log retention, at least 6 months; ISO/IEC 42001 A.6.2.8 (AI system recording of event logs)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Accountability / non-repudiation (ASI08 cascading)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI08",
              "rationale": "Keep an immutable, tamper-evident audit trail of what the agent did addresses OWASP Accountability / non-repudiation (ASI08 cascading)."
            }
          },
          "aismm": {
            "value": "MON-04.1, IR-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-04.1, IR-05.2",
              "rationale": "Keep an immutable, tamper-evident audit trail of what the agent did maps to AISMM control(s) MON-04.1, IR-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Google / DeepMind",
          "Databricks (Unity Catalog)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "eu-ai-act-art26",
          "did-vc",
          "deepmind-ai-control",
          "databricks-dasf3",
          "eu-ai-act-art12",
          "aismm"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "Tool arguments, state mutations, and decisions are written to an append-only, tamper-evident store, ideally a hash-chained / Merkle-anchored ledger held outside the agent platform's own trust boundary, so a hijacked agent or compromised supervisor cannot rewrite its own history. This is the matrix's compensating control for the chain-of-custody gap: tamper-evident storage is the integrity foundation of chain-of-custody, not the whole chain (which also needs collection procedure, synchronized time, custody transfers, and named accountability). EU AI Act Article 12 mandates the automatic-logging capability for high-risk systems; the at-least-6-months retention is set by Article 19 (provider) and Article 26(6) (deployer), not Article 12. The WORM/hash-chain hardening is this matrix's recommended implementation, not the regulation's text.",
          "steps": [
            "Log tool arguments, state mutations, and decisions for every agent action.",
            "Write them to an append-only store the agent cannot modify (hash-chained / Merkle-anchored).",
            "Hold the store outside the agent platform's trust boundary so the watched system can't forge it.",
            "Set retention to meet EU AI Act Art. 19 (provider) / Art. 26(6) (deployer), at least 6 months, and name a retention owner.",
            "Record a signed chain of custody for each action: bind every hop (the initiating human, the acting agent, any delegated sub-agent, and the tool invoked) with its identity and signature, so an action's provenance is attributable end to end and not only to the final actor (addresses the gap2 chain-of-custody gap)."
          ],
          "anti_patterns": [
            "audit logs the agent or its platform can edit",
            "self-reported agent logs as the only record",
            "no retention horizon or owner for the evidence"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm the audit store is append-only / Merkle-anchored and emitted by a component outside the agent's trust domain; confirm retention meets Art. 12 with a named owner.",
              "ref": "eu-ai-act-art12"
            }
          ],
          "runtime_test": [
            {
              "text": "Attempt to tamper with or delete an audit entry from within the agent; the store must reject it and the change must be detectable (inclusion proof).",
              "ref": "deepmind-ai-control"
            }
          ],
          "evidence": [
            {
              "text": "Signed Merkle tree heads plus inclusion proofs for sampled actions, retained for the Art. 12 horizon, this same record is the chain-of-custody artifact for gap2.",
              "ref": "eu-ai-act-art12"
            }
          ]
        },
        "lenses": {
          "engineering": "Ship agent events to an append-only, hash-chained store outside the agent's reach; keep tool args + state changes + decisions.",
          "detection": "These logs are your primary detection source, alert if the log stream goes silent or an inclusion proof fails.",
          "red_team": "Try to make the agent rewrite or delete its own audit trail.",
          "grc": "Append-only logs with retention mapped to EU AI Act Art. 12 are core compliance evidence.",
          "secops": "An un-forgeable timeline is what lets you reconstruct an incident after the fact."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "gap2"
      },
      {
        "id": "GV-03",
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "Orchestrator / multi-agent control plane declaring decision rights, conflict-resolution rules, and a stop condition.",
        "layer": "governance",
        "plane": "control",
        "name": "Define multi-agent authority and conflict resolution explicitly",
        "plain": "When several agents work together, write down who's in charge and what happens when they disagree.",
        "threat": {
          "tags": [
            "ASI08"
          ],
          "desc": "Undefined authority across collaborating agents lets failures cascade, one agent's mistake propagates across systems with no one clearly accountable."
        },
        "standard": [
          "coordination / governance framework",
          "explicit authority model"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.5.5 (explicit inter-agent delegation policy); C9.2.10 (highest-impact class across multi-agent chains)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Defined multi-agent authority is the AISVS explicit inter-agent delegation policy and highest-impact class across chains.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (multi-agent interactions); §2.1.1 (system-complexity / multi-agent risk)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.1.1",
              "rationale": "Define multi-agent authority and conflict resolution explicitly maps to IMDA MGF multi-agent interactions; system-complexity / multi-agent risk."
            }
          },
          "aicm": {
            "value": "GRC (Governance, Risk & Compliance)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: ",
              "rationale": "These CSA AICM v1.1 control(s) () correspond to \"Define multi-agent authority and conflict resolution explicitly\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern, Map",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern / Map functions",
              "rationale": "NIST AI RMF Govern / Map functions: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight; establish context and identify and categorise the AI risks. \"Define multi-agent authority and conflict resolution explicitly\" is a corresponding risk-identification activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.3.2 (AI roles and responsibilities)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI08 Cascading Agent Failures",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI08",
              "rationale": "Define multi-agent authority and conflict resolution explicitly addresses OWASP ASI08 Cascading Agent Failures.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IAM-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-05.2",
              "rationale": "Define multi-agent authority and conflict resolution explicitly maps to AISMM control(s) IAM-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Databricks"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "databricks-dasf3",
          "csa-maestro"
        ],
        "implementation": {
          "pattern": "Multi-agent workflows declare an explicit authority model: which agent decides, how conflicts resolve, and where a failure must stop rather than propagate. CSA MAESTRO's cross-layer view (L1-L7) is the threat-modelling lens.",
          "steps": [
            "Declare the authority and decision rights for each agent in a workflow.",
            "Define conflict-resolution rules and a stop condition when agents disagree.",
            "Model cross-layer failure paths (MAESTRO L1-L7) so a fault doesn't cascade unbounded."
          ],
          "anti_patterns": [
            "agents with overlapping, undefined authority",
            "no rule for what happens when agents disagree",
            "failures that propagate with no circuit-stop"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm the workflow declares per-agent authority, conflict-resolution rules, and failure stop conditions.",
              "ref": "databricks-dasf3"
            }
          ],
          "runtime_test": [
            {
              "text": "Inject a disagreement/fault between two agents and confirm resolution follows the declared model and the failure does not cascade.",
              "ref": "csa-maestro"
            }
          ],
          "evidence": [
            {
              "text": "Documented authority model per multi-agent workflow plus logs of conflict-resolution events.",
              "ref": "databricks-dasf3"
            }
          ]
        },
        "lenses": {
          "engineering": "Encode authority and conflict-resolution rules into the orchestrator; add explicit stop conditions.",
          "detection": "Alert on authority conflicts and on a fault spreading across more than one agent.",
          "red_team": "Force two agents into conflict and try to trigger a cascade.",
          "grc": "The documented authority model evidences governed multi-agent operation.",
          "secops": "Clear authority and stop conditions keep one agent's failure from becoming many."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-04",
        "tiers": [
          "autonomy",
          "irreversibility"
        ],
        "enforcement_point": "In-path policy engine running policy-as-code on every action, fast and fail-closed.",
        "layer": "governance",
        "plane": "control",
        "name": "Enforce policy as code at run time, in the request path",
        "plain": "Turn the rules into code that actually blocks bad actions in the moment, not a document people hope agents follow.",
        "threat": {
          "tags": [
            "ASI01",
            "ASI02"
          ],
          "desc": "Guidance that is advisory rather than enforced gives no hard guarantee, a probabilistic model will eventually step outside written-but-unenforced rules."
        },
        "standard": [
          "structural, system-level enforcement preferred over prompt-layer guardrails",
          "deterministic policy engine",
          "sub-millisecond in-path enforcement"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.5.3 (deterministic policy engine, not the model); C9.5.1 (fine-grained runtime policy enforcement)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Policy-as-code at run time is the AISVS deterministic policy engine, not the model, enforcing fine-grained policy.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (deterministic system-level safeguards over prompt-layer)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1",
              "rationale": "Enforce policy as code at run time, in the request path maps to IMDA MGF deterministic system-level safeguards over prompt-layer.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "CCC-03 (change-management technology); GRC-01 (governance program policy)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: CCC-03, GRC-01",
              "rationale": "These CSA AICM v1.1 control(s) (CCC-03, GRC-01) correspond to \"Enforce policy as code at run time, in the request path\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Enforce policy as code at run time, in the request path\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.2.2 (AI policy)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Goal Hijack; ASI02 Tool Misuse (deterministic enforcement)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01, ASI02",
              "rationale": "Enforce policy as code at run time, in the request path addresses OWASP ASI01 Goal Hijack; ASI02 Tool Misuse (deterministic enforcement).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "ORG-05.1, IAM-05.3, APP-04.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM ORG-05.1, IAM-05.3, APP-04.1",
              "rationale": "Enforce policy as code at run time, in the request path maps to AISMM control(s) ORG-05.1, IAM-05.3, APP-04.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft (Agent Governance Toolkit)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "ms-agent-governance-toolkit",
          "owasp-asi-2026",
          "aismm"
        ],
        "implementation": {
          "pattern": "A deterministic policy engine sits in the request path and decides allow/deny for each action with hard guarantees, fast enough not to be the bottleneck. The policy fails closed when its detector is unavailable.",
          "steps": [
            "Express the rules as machine-enforceable policy, not prose.",
            "Evaluate policy in the request path on every action (deterministic, low-latency).",
            "Fail closed when the policy engine or a detector is down.",
            "Cover the OWASP agentic risks with concrete enforced rules (the Agent Governance Toolkit maps all ten).",
            "Prefer deterministic, system-level enforcement over prompt-layer instructions: block a disallowed tool at the tool layer rather than instructing the agent not to call it (IMDA MGF)."
          ],
          "anti_patterns": [
            "a policy PDF nobody enforces in code",
            "policy that fails open when the detector is down",
            "enforcement outside the request path the agent can route around"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm policy is enforced in the request path, is deterministic, and fails closed when a detector is unavailable.",
              "ref": "ms-agent-governance-toolkit"
            }
          ],
          "runtime_test": [
            {
              "text": "Disable a detector and confirm the guardrail fails closed; attempt a policy-violating action and confirm it is blocked in path.",
              "ref": "ms-agent-governance-toolkit"
            }
          ],
          "evidence": [
            {
              "text": "Policy-decision (allow/deny) logs with the policy version, for each evaluated action.",
              "ref": "ms-agent-governance-toolkit"
            }
          ]
        },
        "lenses": {
          "engineering": "Put an OPA-style policy engine in the request path; fail closed; cover all ten OWASP agentic risks with rules.",
          "detection": "Alert on policy denials and on the engine failing open.",
          "red_team": "Look for actions that bypass the engine or for fail-open behaviour when detectors drop.",
          "grc": "Policy-decision logs evidence that the rules were enforced, not merely written.",
          "secops": "In-path enforcement blocks bad actions in real time rather than after the fact."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": "gap3"
      },
      {
        "id": "GV-05",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/OA-04",
            "id": "OA-04",
            "name": "Delegated Autonomy Tier Governance",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "An AI management system (ISO/IEC 42001) plus an autonomy-tiering process anchored to NIST AI RMF.",
        "layer": "governance",
        "plane": "control",
        "name": "Run an AI management system and tier agents by their autonomy",
        "plain": "Have a real program governing your agents, and treat a highly autonomous agent as higher-risk than a simple one.",
        "threat": {
          "tags": [],
          "desc": "Without a structured, auditable program, and without scaling controls to how much agency an agent has, agent activity across the enterprise goes ungoverned."
        },
        "standard": [
          "risk-tiered change-management triggers (model, tool, domain, performance, regulatory)",
          "ISO/IEC 42001 AI management system",
          "NIST AI RMF Govern",
          "AWS Agentic AI Security Scoping Matrix (risk by level of agency)"
        ],
        "mappings": {
          "mgf": {
            "value": "§2.1.1 (risk-based autonomy tiering); §2.2.1 (governance approach & risk frameworks)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.1, §2.2.1",
              "rationale": "Run an AI management system and tier agents by their autonomy maps to IMDA MGF risk-based autonomy tiering; governance approach & risk frameworks.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "GRC-01 (governance program policy); GRC-02 (AI risk management program)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: GRC-01, GRC-02",
              "rationale": "These CSA AICM v1.1 control(s) (GRC-01, GRC-02) correspond to \"Run an AI management system and tier agents by their autonomy\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern; AI 600-1; COSAiS overlays (forthcoming)",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern function",
              "rationale": "NIST AI RMF Govern function: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight. \"Run an AI management system and tier agents by their autonomy\" is a corresponding governance activity. (The AI 600-1 / COSAiS overlays referenced in the cell are forthcoming and are not themselves evidenced here.)",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.2.2 (AI policy); ISO/IEC 42005 (impact assessment)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Governance program (cross-cutting)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-nhi-2025",
              "section": "OWASP ",
              "rationale": "Run an AI management system and tier agents by their autonomy addresses OWASP Governance program (cross-cutting)."
            }
          },
          "aismm": {
            "value": "GOV-03.1, RSK-02.2, GOV-05.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM GOV-03.1, RSK-02.2, GOV-05.1",
              "rationale": "Run an AI management system and tier agents by their autonomy maps to AISMM control(s) GOV-03.1, RSK-02.2, GOV-05.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "iso-42001",
          "nist-ai-rmf",
          "nist-ai-600-1",
          "csa-aicm",
          "aws-scoping-matrix",
          "cosai-oasis",
          "iso-ai-series",
          "nist-cosais",
          "nist-caisi",
          "aismm",
          "csa-agent-survey"
        ],
        "implementation": {
          "pattern": "An AI management system (ISO/IEC 42001) governs agent activity org-wide, anchored to NIST AI RMF and AICM. Controls scale to autonomy: the AWS Agentic AI Security Scoping Matrix tiers risk by how much agency and permission an agent has, so a high-autonomy, externally-connected agent gets more scrutiny than a read-only helper.",
          "steps": [
            "Stand up an ISO/IEC 42001 AI management system covering agents.",
            "Tier each agent by its level of agency and permissions (AWS Scoping Matrix).",
            "Apply heavier controls and impact assessment (ISO/IEC 42005) to higher tiers.",
            "Anchor mappings to NIST AI RMF / AI 600-1 and CSA AICM; feed shared learnings to CoSAI.",
            "Define change-review triggers (model updates, tool changes, domain shifts, performance regressions, regulatory changes) and categorise changes by risk, so a small change to a complex agentic system cannot ship an outsized impact unreviewed (IMDA MGF)."
          ],
          "anti_patterns": [
            "no org-level program, only per-team ad-hoc rules",
            "treating a high-autonomy agent the same as a scripted bot",
            "governance with no impact assessment for high-risk agents"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm an AI management system exists, agents are tiered by autonomy (AWS Scoping Matrix), and high tiers carry an impact assessment.",
              "ref": "aws-scoping-matrix"
            }
          ],
          "runtime_test": [
            {
              "text": "Sample agents and confirm the controls applied match their assigned autonomy tier.",
              "ref": "aws-scoping-matrix"
            }
          ],
          "evidence": [
            {
              "text": "ISO/IEC 42001 management-system records; the agent risk-tier register; impact assessments for high-autonomy agents.",
              "ref": "iso-42001"
            }
          ]
        },
        "lenses": {
          "engineering": "Adopt an autonomy-tier model (AWS Scoping Matrix) and apply control sets per tier.",
          "detection": "Watch for agents operating above their assigned tier's permissions.",
          "red_team": "Look for high-autonomy agents governed as if they were low-risk.",
          "grc": "ISO/IEC 42001 records + the tiering register are your core governance evidence.",
          "secops": "Knowing each agent's risk tier prioritises monitoring and response."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-06",
        "tiers": [
          "irreversibility"
        ],
        "response": {
          "lever": "halt + escalate",
          "detail": "stop when the aggregate cap is crossed, even if each individual action was approved"
        },
        "enforcement_point": "Aggregate velocity-cap counter held entirely outside the agent's context window or state file.",
        "thesis_type": "elevated",
        "layer": "governance",
        "plane": "control",
        "name": "Cap the rate and volume of irreversible actions",
        "plain": "Even with approvals, don't let an agent do a thousand small irreversible things that add up to a disaster.",
        "threat": {
          "tags": [
            "ASI08"
          ],
          "desc": "A per-action approval (GV-01) doesn't stop a runaway or compromised agent issuing many individually-small irreversible actions whose total is catastrophic, 10,000 small transfers, or deleting records one at a time below the approval threshold."
        },
        "standard": [
          "velocity thresholds",
          "aggregate caps on irreversible actions",
          "blast-radius limits"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.1.1-C9.1.2 (action quotas and budgets); C11.2.2 (per-principal and global rate limits)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C11 Adversarial Robustness",
              "rationale": "Rate and volume caps on irreversible actions map to AISVS action quotas and budgets and per-principal rate limits.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (rate limits); §2.2.2 (volume/value approval thresholds)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.2.2",
              "rationale": "Cap the rate and volume of irreversible actions maps to IMDA MGF rate limits; volume/value approval thresholds.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "GRC (Governance, Risk & Compliance)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: ",
              "rationale": "These CSA AICM v1.1 control(s) () correspond to \"Cap the rate and volume of irreversible actions\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Cap the rate and volume of irreversible actions\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI08 Cascading Agent Failures (blast-radius of irreversible actions)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI08",
              "rationale": "Cap the rate and volume of irreversible actions addresses OWASP ASI08 Cascading Agent Failures (blast-radius of irreversible actions).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-04.2",
              "rationale": "Cap the rate and volume of irreversible actions maps to AISMM control(s) APP-04.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "Deterministic velocity and aggregate caps bound how many irreversible operations an agent can perform in a window, independent of per-action approval. Crossing the aggregate cap halts and escalates.",
          "steps": [
            "Define aggregate and velocity limits for irreversible operations (count and value per window).",
            "Enforce them at the policy/orchestrator layer, co-located with GV-04.",
            "Halt and escalate to a human when the aggregate cap is hit, even if each action was individually approved."
          ],
          "anti_patterns": [
            "only per-action approval with no aggregate ceiling",
            "no velocity limit on bulk irreversible operations",
            "caps the agent can reset itself"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm deterministic velocity and aggregate caps exist for irreversible actions, enforced outside the agent.",
              "ref": "owasp-asi-2026"
            }
          ],
          "runtime_test": [
            {
              "text": "Drive the agent to issue many small irreversible actions and confirm the aggregate/velocity cap halts it and escalates.",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Records of irreversible-action volume per agent/window with the cap and any halt/escalation events.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Add aggregate + velocity counters on irreversible operations; halt-and-escalate on breach.",
          "detection": "Alert on bursts of irreversible actions or steady drip below the per-action threshold.",
          "red_team": "Try death-by-a-thousand-cuts: many small irreversible actions under the approval bar.",
          "grc": "Volume records evidence that aggregate blast radius was bounded, not just single actions.",
          "secops": "Velocity caps stop a compromised agent from doing maximum damage quickly."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-07",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/BH-09",
            "id": "BH-09",
            "name": "Synthetic-Content Provenance, Disclosure and Traceability",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "Hardened approval channel showing the approver independent, system-sourced facts (not the agent's summary).",
        "layer": "governance",
        "plane": "both",
        "name": "Protect humans from being deceived by an agent",
        "plain": "Stop an agent from sweet-talking or impersonating its way past the people who are supposed to check it.",
        "threat": {
          "tags": [
            "ASI09"
          ],
          "desc": "Human-Agent Trust Exploitation: an agent's output is crafted to deceive people, impersonating an executive, manufacturing an 'on-behalf-of' request, or socially engineering its own approver. This directly undercuts the GV-01 hard-stop, because the human can be manipulated."
        },
        "standard": [
          "output provenance & trust indicators to humans",
          "anti-impersonation labelling",
          "approval-channel integrity"
        ],
        "mappings": {
          "aisvs": {
            "value": "C7.4.1-C7.4.2 (non-fabricated source attribution); C7.4.4 (AI-content watermarking)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C7 Model Behavior & Output Control",
              "rationale": "Protecting humans from agent deception relates loosely to AISVS source attribution and content watermarking, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.2.2 (guard against automation bias & anthropomorphic deception)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.2",
              "rationale": "Protect humans from being deceived by an agent maps to IMDA MGF guard against automation bias & anthropomorphic deception.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "GRC (Governance, Risk & Compliance); UEM (User Endpoint Management)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: ",
              "rationale": "These CSA AICM v1.1 control(s) () correspond to \"Protect humans from being deceived by an agent\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Govern, Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern / Measure functions",
              "rationale": "NIST AI RMF Govern / Measure functions: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight; analyse, assess, benchmark, and monitor the AI risks and impacts. \"Protect humans from being deceived by an agent\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.8.2 (system documentation and information for users)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI09 Human-Agent Trust Exploitation",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI09",
              "rationale": "Protect humans from being deceived by an agent addresses OWASP ASI09 Human-Agent Trust Exploitation.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-04.1",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-04.1",
              "rationale": "Protect humans from being deceived by an agent maps to AISMM control(s) APP-04.1."
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026",
          "openai-governing-agentic"
        ],
        "implementation": {
          "pattern": "Agent-generated content is clearly labelled as such, carries provenance/trust indicators for the human reviewing it, and the approval channel itself resists manipulation, the approver sees independent facts about the action, not just the agent's persuasive summary.",
          "steps": [
            "Label agent output as agent-generated wherever a human consumes it.",
            "Show the approver independent, system-sourced facts about the action, not only the agent's framing.",
            "Harden the approval channel so an agent cannot impersonate a person or manufacture an 'on-behalf-of' request.",
            "Train reviewers on agent social-engineering patterns."
          ],
          "anti_patterns": [
            "approvers seeing only the agent's persuasive summary",
            "no visible marker that content came from an agent",
            "approval channels an agent can spoof"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm agent output is labelled to humans, the approval channel shows independent facts, and impersonation of a person is prevented.",
              "ref": "owasp-asi-2026"
            }
          ],
          "runtime_test": [
            {
              "text": "Red-team the human path: have the agent attempt to socially-engineer an approver or impersonate an executive; confirm trust indicators and channel integrity defeat it.",
              "ref": "owasp-asi-2026"
            }
          ],
          "evidence": [
            {
              "text": "Approval-UI design showing agent-output labelling and independent action facts; records of impersonation attempts blocked.",
              "ref": "owasp-asi-2026"
            }
          ]
        },
        "lenses": {
          "engineering": "Label agent output to humans and feed the approval UI independent action facts, not the agent's summary.",
          "detection": "Alert on agent output impersonating a person or asserting authority it doesn't have.",
          "red_team": "Social-engineer the approver and try to impersonate an executive through the agent.",
          "grc": "This closes OWASP ASI09, evidence the human checkpoint can't be talked past.",
          "secops": "Trust indicators help responders spot agent-driven social engineering early."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-08",
        "tiers": [
          "irreversibility"
        ],
        "response": {
          "lever": "abort commit",
          "detail": "abort if a revocation landed mid-flight; never double-apply the same action"
        },
        "detection_schema": {
          "telemetry": [
            "idempotency_key",
            "auth_recheck_result",
            "state_version_at_commit"
          ],
          "baseline": "single-apply per idempotency key",
          "alert": "a duplicate key, or a revocation that landed between check and commit"
        },
        "enforcement_point": "Transaction layer at the action sink: idempotency key + authorization/state recheck at the moment of commit.",
        "thesis_type": "elevated",
        "layer": "governance",
        "plane": "control",
        "name": "Make high-impact actions transactional, atomic, idempotent, state-checked",
        "plain": "Treat risky agent actions like bank transactions: re-check permissions and state right before committing, and never double-apply the same action.",
        "threat": {
          "tags": [
            "ASI08",
            "ASI03"
          ],
          "desc": "In asynchronous multi-agent systems, a prompt-injected or malfunctioning agent can flood the orchestrator and commit a state change in the gap before a parallel authorization revocation propagates, a time-of-check/time-of-use race. Continuous authorization (IA-04) and velocity caps (GV-06) reduce but do not close this seam."
        },
        "standard": [
          "transactional state isolation",
          "idempotency keys",
          "atomic commit verified against unified control-plane state"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.2.8 (nonce-bound approvals); C9.2.3-C9.2.4 (irreversibility handling)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Transactional, idempotent high-impact actions relate to AISVS nonce-bound approvals and irreversibility handling, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "mitre": {
            "value": "AML.T0101 (Data Destruction via AI Agent Tool Invocation); ATLAS mitigations: AML.M0029 (Human In-the-Loop for AI Agent Actions), AML.M0026 (Privileged AI Agent Permissions Configuration)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0101; mitigations AML.M0029, AML.M0026",
              "rationale": "Make high-impact actions transactional, atomic, idempotent, state-checked addresses ATLAS technique(s) Data Destruction via AI Agent Tool Invocation; implements ATLAS mitigation(s) Human In-the-Loop for AI Agent Actions, Privileged AI Agent Permissions Configuration.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.2.2 (deny action by default when approval infrastructure fails)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.2",
              "rationale": "Make high-impact actions transactional, atomic, idempotent, state-checked maps to IMDA MGF deny action by default when approval infrastructure fails."
            }
          },
          "aicm": {
            "value": "IAM-15 (authorization mechanisms); GRC (Governance, Risk & Compliance)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: IAM-15",
              "rationale": "These CSA AICM v1.1 control(s) (IAM-15) correspond to \"Make high-impact actions transactional, atomic, idempotent, state-checked\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "IAM-05.2, APP-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IAM-05.2, APP-04.2",
              "rationale": "Make high-impact actions transactional, atomic, idempotent, state-checked maps to AISMM control(s) IAM-05.2, APP-04.2.",
              "verified_on": "2026-06-22"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Make high-impact actions transactional, atomic, idempotent, state-checked\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI08 Cascading Agent Failures; ASI03 Identity & Privilege Abuse",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI08, ASI03",
              "rationale": "Make high-impact actions transactional, atomic, idempotent, state-checked addresses OWASP ASI08 Cascading Agent Failures; ASI03 Identity & Privilege Abuse.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026",
          "databricks-dasf3"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "High-impact agent actions behave like database transactions: atomic, idempotent (each carries an idempotency key so a replay or flood cannot double-apply it), and re-checked against the current control-plane state (authorization, budget, prior actions) at commit time, not just when the action was planned. A revocation that lands during execution aborts the commit. Applying distributed-systems transaction discipline to agent actions is this matrix’s own thesis.",
          "steps": [
            "Assign an idempotency key to each high-impact action so retries or floods cannot double-apply it.",
            "Re-verify authorization and state at commit time (TOCTOU-safe), not only at plan time.",
            "Make the mutation atomic against a unified control-plane state; abort if a revocation or budget breach landed mid-flight.",
            "Serialize or lock conflicting actions across asynchronous agents."
          ],
          "anti_patterns": [
            "committing a planned action without re-checking current authorization",
            "no idempotency key, so a flood double-applies an action",
            "asynchronous agents mutating the same asset with no isolation"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm high-impact actions carry idempotency keys and re-verify authorization plus state at commit time against a unified control-plane.",
              "ref": "owasp-asi-2026"
            }
          ],
          "runtime_test": [
            {
              "text": "Revoke an agent’s permission mid-action and flood the orchestrator with duplicate calls; confirm the action neither commits post-revocation nor double-applies.",
              "unverified": true
            }
          ],
          "evidence": [
            {
              "text": "Transaction logs showing idempotency keys, commit-time authorization checks, and aborted commits on revocation.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Give high-impact actions idempotency keys; re-check authz and state at commit, not plan, time; make mutations atomic.",
          "detection": "Alert on duplicate / replayed high-impact actions and on commits that land after a revocation.",
          "red_team": "Flood the orchestrator and race a revocation against an in-flight action to double-apply or commit post-revocation.",
          "grc": "Transaction logs evidence that actions were atomic and re-authorized at commit.",
          "secops": "Idempotency plus commit-time checks stop a flooded or hijacked agent from racing past revocation."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-09",
        "tiers": [
          "irreversibility"
        ],
        "enforcement_point": "Organizational accountability register binding a named line-of-business owner to each agent before deploy.",
        "layer": "governance",
        "plane": "control",
        "name": "Anchor a named business owner to every agent (accountability)",
        "plain": "Tie every agent to a real, named person in the business who is accountable for it before it ships.",
        "threat": {
          "tags": [],
          "desc": "When an autonomous loop causes a compliance violation, fragmented ownership between the engineering team that built the pipeline and the business unit that deployed it paralyzes incident response, the attribution crisis. A 2026 CSA survey found ownership fragmented across Security (39%), IT (32%), and AI (13%) functions, and 84% of organizations doubted they could pass an agent-behavior compliance audit."
        },
        "standard": [
          "business-owner identity bound to the agent workload",
          "explicit pre-deployment legal / operational liability",
          "incident RACI for agents"
        ],
        "mappings": {
          "mgf": {
            "value": "§2.2.1 (clear allocation of responsibility; use-case owner accountable)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.2.1",
              "rationale": "Anchor a named business owner to every agent (accountability) maps to IMDA MGF clear allocation of responsibility; use-case owner accountable.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "GRC-06 (governance responsibility model); IAM-12 (uniquely identifiable principals)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: GRC-06, IAM-12",
              "rationale": "These CSA AICM v1.1 control(s) (GRC-06, IAM-12) correspond to \"Anchor a named business owner to every agent (accountability)\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "GOV-04.3, IAM-02.2",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM GOV-04.3, IAM-02.2",
              "rationale": "Anchor a named business owner to every agent (accountability) maps to AISMM control(s) GOV-04.3, IAM-02.2."
            }
          },
          "nist": {
            "value": "AI RMF: Govern",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern function",
              "rationale": "NIST AI RMF Govern function: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight. \"Anchor a named business owner to every agent (accountability)\" is a corresponding governance activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.3.2 (AI roles and responsibilities)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Accountability (CISA risk class; no clean ASI ID)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ",
              "rationale": "Anchor a named business owner to every agent (accountability) addresses OWASP Accountability (CISA risk class; no clean ASI ID)."
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "csa-agent-survey",
          "iso-42001",
          "cisa-agentic"
        ],
        "implementation": {
          "pattern": "Every production agent has a named line-of-business owner bound to its workload identity, with explicit legal and operational liability defined before deployment. Agent incidents resolve to that business owner plus the engineering owner via a documented RACI, closing the attribution gap.",
          "steps": [
            "Assign a named business owner (line-of-business) and an engineering owner to every production agent.",
            "Bind the business-owner identity to the agent’s workload object (ties to IA-01).",
            "Define legal / operational liability and an incident RACI before deployment.",
            "Surface the owner in the agent registry and the audit trail (GV-02)."
          ],
          "anti_patterns": [
            "an agent in production with no named business owner",
            "ownership split with no defined incident RACI",
            "accountability that only resolves to the platform team"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm every production agent has a named business owner bound to its workload identity, with pre-defined liability and an incident RACI.",
              "ref": "csa-agent-survey"
            }
          ],
          "runtime_test": [
            {
              "text": "Pick a random production agent and confirm you can resolve its business owner, engineering owner, and incident RACI within minutes.",
              "unverified": true
            }
          ],
          "evidence": [
            {
              "text": "Agent-registry entries showing business-owner binding and the incident RACI.",
              "ref": "iso-42001"
            }
          ]
        },
        "lenses": {
          "engineering": "Bind a named business-owner identity to each agent workload object; surface it in the registry.",
          "detection": "Flag production agents with no bound business owner.",
          "red_team": "Find a high-impact agent and see whether anyone is clearly accountable for it.",
          "grc": "Closes the CISA Accountability risk class and ISO A.3.2; owner binding plus RACI is the evidence.",
          "secops": "Knowing the business and engineering owner instantly is what unblocks incident response."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": ""
      },
      {
        "id": "GV-10",
        "tiers": [
          "autonomy",
          "irreversibility"
        ],
        "enforcement_point": "The product / UX layer (AI disclosure, action-scope surfacing) plus an oversight-analytics pipeline over approval telemetry; sits outside the model loop.",
        "layer": "governance",
        "plane": "control",
        "matrix_thesis": true,
        "thesis_type": "compensating",
        "readiness": "deployable",
        "name": "Enable end-user responsibility and guard against automation bias",
        "plain": "Tell the people using the agent what it can do, train them to actually check it, and watch for rubber-stamping.",
        "threat": {
          "tags": [],
          "desc": "Even with a human in the loop, oversight quietly fails. Users over-trust a system that has been reliable (automation bias), rubber-stamp approvals, lose the skill to judge the agent's work (tradecraft erosion), or were never clearly told they are dealing with an agent. The human checkpoint then becomes theatre, and the GV-01 hard-stop and IA-03 approval step inherit a weak link they were assumed to be strong."
        },
        "standard": [
          "end-user transparency and AI-interaction disclosure",
          "oversight-effectiveness metrics (override rate, review response time)",
          "role-based training against automation bias and tradecraft loss"
        ],
        "mappings": {
          "mitre": {
            "value": "ATLAS mitigation: AML.M0018 (User Training)",
            "status": "verified",
            "fit": "supporting",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS mitigations AML.M0018",
              "rationale": "Enable end-user responsibility and guard against automation bias implements ATLAS mitigation(s) User Training.",
              "verified_on": "2026-06-24"
            }
          },
          "aisvs": {
            "value": "C9.2.2 (full, non-truncated action detail in approvals); C7.4.1 (source attribution)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action; C7 Model Behavior & Output Control",
              "rationale": "End-user responsibility and the automation-bias guard map to AISVS full, non-truncated action detail in approvals, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "aismm": {
            "value": "GOV-03.3 (role-based AI training); GOV-04.3 (oversight escalation)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM GOV-03.3 (role-based AI training); GOV-04.3 (oversight escalation)",
              "rationale": "Enable end-user responsibility and guard against automation bias maps to AISMM control(s) GOV-03.3 (role-based AI training); GOV-04.3 (oversight escalation)."
            }
          },
          "mgf": {
            "value": "§2.4 (enable end-user responsibility); §2.2.2 (audit human-oversight effectiveness; guard against automation bias)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.4, §2.2.2",
              "rationale": "Enable end-user responsibility and guard against automation bias maps to IMDA MGF enable end-user responsibility; audit human-oversight effectiveness; guard against automation bias.",
              "verified_on": "2026-06-24"
            }
          },
          "nist": {
            "value": "AI RMF: Govern",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Govern function",
              "rationale": "NIST AI RMF Govern function: cultivate and operate a culture of AI risk management, with policies, roles, accountability, and oversight. \"Enable end-user responsibility and guard against automation bias\" is a corresponding governance activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.9.2 (responsible use of AI systems)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Excessive Agency / Human-Agent Trust Exploitation (cross-ref GV-07; no clean ASI ID)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ",
              "rationale": "Enable end-user responsibility and guard against automation bias addresses OWASP Excessive Agency / Human-Agent Trust Exploitation (cross-ref GV-07; no clean ASI ID)."
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "openai-governing-agentic",
          "iso-42001",
          "nist-ai-rmf"
        ],
        "implementation": {
          "pattern": "End users are equipped to exercise real oversight, and the organisation measures whether that oversight is actually working. At the point of interaction the user is told they are dealing with an agent and what it is allowed to do; reviewers are trained on the agent's failure modes; and approval telemetry is monitored for the signatures of automation bias (near-total approval rates, near-instant sign-offs) so a rubber-stamping checkpoint is caught rather than trusted.",
          "steps": [
            "Disclose at the point of interaction that the user is dealing with an agent, and surface the agent's range of actions and data access.",
            "Train reviewers on the agent's common failure modes (hallucination, stale policy, loop-after-error) and on guarding their own tradecraft.",
            "Instrument approvals: track human override rate and review response time, and flag outlier reviewers whose decisions deviate from the norm.",
            "Re-tier, re-train, or rotate oversight when the metrics show rubber-stamping rather than judgement."
          ],
          "anti_patterns": [
            "a human-approval step with no measurement of whether approvals are meaningful",
            "users who are never told they are interacting with an agent",
            "reviewers asked to approve actions they lack the domain expertise to judge"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm end users are told they are interacting with an agent at the point of interaction, and that reviewers of agent actions receive role-specific training on its failure modes.",
              "ref": "imda-mgf"
            }
          ],
          "runtime_test": [
            {
              "text": "Pull the approval telemetry for a deployed agent and check for automation-bias signatures: an override rate near zero, or review times too short to be a real decision.",
              "ref": "imda-mgf"
            }
          ],
          "evidence": [
            {
              "text": "Oversight-effectiveness dashboards (override rate, review response time, outlier-reviewer flags) trended over time, plus training-completion records.",
              "ref": "openai-governing-agentic"
            }
          ]
        },
        "lenses": {
          "engineering": "Surface an in-product AI disclosure and action-scope notice; emit approval events (who, what, latency, decision) to the oversight pipeline.",
          "detection": "Alert on automation-bias signatures: override rate approaching zero, review latency below a human-decision floor, or a reviewer whose pattern is an outlier.",
          "red_team": "Test whether a reviewer will rubber-stamp a subtly wrong action, and whether users can tell an agent from a human.",
          "grc": "Closes the end-user-responsibility dimension (MGF 2.4) and the automation-bias risk; the override-rate and response-time metrics are the evidence.",
          "secops": "When an approved action goes wrong, the oversight telemetry shows whether the checkpoint was real or theatre."
        },
        "detection_schema": {
          "telemetry": [
            "risk_tier",
            "agent_confidence",
            "evidence_packet_hash",
            "raw_evidence_available",
            "approval_override_rate",
            "review_response_time_ms",
            "reviewer_queue_depth",
            "ground_truth_sample_result",
            "appeal_or_reversal_rate",
            "reviewer_decision_distribution"
          ],
          "baseline": "Per-reviewer and per-agent norms for override rate, review latency, and sampled correctness, weighted by task risk tier and the evidence actually shown to the reviewer.",
          "alert": "Override rate trending to zero, review latency below a plausible human-decision floor, approvals made with no raw evidence available, a reviewer deviating sharply from peers, or sampled ground-truth showing rubber-stamped errors."
        },
        "response": {
          "lever": "Re-tier / re-train / rotate oversight",
          "detail": "When approval telemetry shows rubber-stamping, raise the review bar for that autonomy tier, retrain or rotate the reviewer, or fall back to a stricter approval mode until oversight is meaningful again."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": "",
        "star_ai": false
      },
      {
        "id": "GV-11",
        "tiers": [
          "irreversibility"
        ],
        "enforcement_point": "A compensation layer at the action sink and orchestrator: pre-action snapshots, a reversible-operation classification, and Saga-style compensating workflows that fire on a hard-stop, with owner signoff and post-incident evidence packaging.",
        "layer": "governance",
        "plane": "control",
        "readiness": "deployable",
        "name": "Plan recovery and compensation for actions the agent already committed",
        "plain": "When an agent has already changed something and you stop it, have a tested way to undo it or make good.",
        "threat": {
          "tags": [],
          "desc": "Prevention and kill switches stop an agent going forward but do nothing about external state it has already changed: a sent email, a payment, a deployed config. Killing the compute loop (RT-04) does not revert in-flight or completed external effects, and transactional/idempotent actions (GV-08) prevent double-apply but are not rollback, restitution, or compensation. Without pre-planned recovery, a stopped agent can leave the business in a worse, half-finished state."
        },
        "standard": [
          "reversible-operation classification",
          "Saga-style compensating transactions",
          "pre-action snapshots and restore"
        ],
        "mappings": {
          "aisvs": {
            "value": "C3.3.1-C3.3.2 (automated rollback and full state restoration); C9.2.3 (reversibility classification)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C3 Model Lifecycle Management; C9 Orchestration & Agentic Action",
              "rationale": "Recovery and compensation relate to AISVS automated rollback and reversibility classification, which is model-rollback, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "aismm": {
            "value": "IR-02.1 (AI incident response team); INF-04.3 (resilience of AI stateful components)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IR-02.1 (AI incident response team); INF-04.3 (resilience of AI stateful components)",
              "rationale": "Plan recovery and compensation for actions the agent already committed maps to AISMM control(s) IR-02.1 (AI incident response team); INF-04.3 (resilience of AI stateful components)."
            }
          },
          "mgf": {
            "value": "§2.3.3 (failsafe mechanisms; intervention up to fallback)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.3",
              "rationale": "Plan recovery and compensation for actions the agent already committed maps to IMDA MGF failsafe mechanisms; intervention up to fallback."
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Plan recovery and compensation for actions the agent already committed\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "owasp": {
            "value": "Cascading failures / recovery (ASI08 adjacent; no clean ASI ID)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI08",
              "rationale": "Plan recovery and compensation for actions the agent already committed addresses OWASP Cascading failures / recovery (ASI08 adjacent; no clean ASI ID)."
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "NIST",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "aws-scoping-matrix",
          "cisa-agentic",
          "ms-failure-taxonomy"
        ],
        "implementation": {
          "pattern": "Before an agent takes a high-impact action, classify whether it is reversible and snapshot the state it touches. Register a compensating workflow for each reversible operation, so that on a hard-stop or detected harm the orchestrator can safe-state open sessions and reverse completed effects; irreversible operations are escalated to a named owner with the evidence packaged for review.",
          "steps": [
            "Classify each high-impact action as reversible, compensable, or irreversible before it runs.",
            "Snapshot the external state an action will change, and register a compensating workflow for reversible/compensable ones.",
            "On hard-stop (GV-01) or anomaly (RT-04), fire the compensating workflows to safe-state open sessions and reverse completed effects.",
            "Escalate irreversible effects to the named owner (GV-09) and package the action chain (IA-06) as post-incident evidence."
          ],
          "anti_patterns": [
            "a kill switch with no plan for state the agent already changed",
            "treating idempotency (GV-08) as if it were rollback",
            "no classification of which actions can actually be undone"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm high-impact actions are classified by reversibility and carry a registered compensating workflow or an owner-escalation path before they run.",
              "ref": "aws-scoping-matrix"
            }
          ],
          "runtime_test": [
            {
              "text": "Hard-stop an agent mid-task after it has committed an external change and confirm the compensating workflow safe-states the open session and reverses the reversible effects.",
              "ref": "ms-failure-taxonomy"
            }
          ],
          "evidence": [
            {
              "text": "Recovery runbooks plus incident records showing compensations fired, irreversible effects escalated to the owner, and evidence packaged.",
              "ref": "cisa-agentic"
            }
          ]
        },
        "lenses": {
          "engineering": "Classify actions by reversibility, snapshot before high-impact writes, and register Saga-style compensating workflows fired on hard-stop.",
          "detection": "Track unreversed effects after a stop: completed external actions with no compensation fired.",
          "red_team": "Drive an agent to commit an irreversible external action, then trigger a stop and see what is left half-finished.",
          "grc": "Recovery and restitution is the gap after prevention and kill; the evidence is runbooks, reversibility classes, and incident compensations.",
          "secops": "When you stop a runaway agent, the compensation layer is what returns the systems it touched to a safe state."
        },
        "response": {
          "lever": "Fire compensation workflows",
          "detail": "On a hard-stop or detected harm, run the pre-registered compensating transactions to safe-state open sessions and reverse reversible effects, escalate irreversible ones to the named owner, and package the evidence."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": "",
        "star_ai": false
      },
      {
        "id": "RT-01",
        "deployment_modes": [
          {
            "mode": "Endpoint / workstation agent",
            "telemetry": "EDR, process tree, shell history, browser-automation events"
          },
          {
            "mode": "Container / VM agent",
            "telemetry": "eBPF, container runtime, syscall, network, file events"
          },
          {
            "mode": "SaaS-hosted / managed platform",
            "telemetry": "IdP logs, API-gateway logs, tool-gateway logs, SaaS audit logs"
          },
          {
            "mode": "MCP / A2A-brokered agent",
            "telemetry": "protocol-proxy logs, token-broker logs, Agent-Card verification, tool-call traces"
          },
          {
            "mode": "Serverless agent",
            "telemetry": "cloud audit logs, function-invocation logs, policy-decision logs"
          }
        ],
        "tiers": [
          "autonomy"
        ],
        "detection_schema": {
          "telemetry": [
            "agent_id",
            "run_id",
            "goal_id",
            "prompt_hash",
            "tool_call_id",
            "parent_trace_id",
            "process_tree",
            "child_process",
            "file_ops",
            "net_calls",
            "capability_binding",
            "memory_object_id"
          ],
          "baseline": "The sanctioned process / file / network profile for the agent, correlated to run_id and goal_id so low-level OS events resolve to high-level agent intent.",
          "alert": "An unsanctioned shell or child process, file / network access outside scope, or an OS action that cannot be correlated to a known run_id / tool_call_id (process activity with no agent-intent provenance)."
        },
        "enforcement_point": "Host EDR sensor at the OS layer (process tree, file, network), each event stamped with the agent identity.",
        "layer": "runtime",
        "plane": "data",
        "name": "Capture OS-level telemetry of what the agent actually does",
        "plain": "Watch the agent from the operating system, because that's the only place you can see everything it does.",
        "threat": {
          "tags": [],
          "desc": "Agents run as child processes with the user's full privileges, so network- and application-layer tools can't see what they really do. Only OS-level telemetry captures the full picture, which is why the endpoint is the runtime enforcement point."
        },
        "standard": [
          "OpenTelemetry tracing across the user-agent, agent-tool, and model-reasoning layers",
          "EDR",
          "process lineage",
          "file I/O + network telemetry"
        ],
        "mappings": {
          "mitre": {
            "value": "ATLAS mitigation: AML.M0024 (AI Telemetry Logging)",
            "status": "verified",
            "fit": "supporting",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS mitigations AML.M0024",
              "rationale": "Capture OS-level telemetry of what the agent actually does implements ATLAS mitigation(s) AI Telemetry Logging.",
              "verified_on": "2026-06-24"
            }
          },
          "aisvs": {
            "value": "C12.1.1 (log agent actions with telemetry); C12.1.3 (structured, interoperable schema)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C12 Monitoring, Logging & Anomaly Detection",
              "rationale": "OS-level telemetry of agent actions is the AISVS logging of agent actions with a structured, interoperable schema.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.3 (multi-layer monitoring; OpenTelemetry tracing)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.3",
              "rationale": "Capture OS-level telemetry of what the agent actually does maps to IMDA MGF multi-layer monitoring; OpenTelemetry tracing.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "LOG-03 (security monitoring and alerting); LOG-09 (log records)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-03, LOG-09",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-03, LOG-09) correspond to \"Capture OS-level telemetry of what the agent actually does\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure function",
              "rationale": "NIST AI RMF Measure function: analyse, assess, benchmark, and monitor the AI risks and impacts. \"Capture OS-level telemetry of what the agent actually does\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Observability (MAESTRO L5 Evaluation & Observability)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-nhi-2025",
              "section": "OWASP ",
              "rationale": "Capture OS-level telemetry of what the agent actually does addresses OWASP Observability (MAESTRO L5 Evaluation & Observability)."
            }
          },
          "aismm": {
            "value": "MON-02.1, MON-03.1, INF-04.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-02.1, MON-03.1, INF-04.1",
              "rationale": "Capture OS-level telemetry of what the agent actually does maps to AISMM control(s) MON-02.1, MON-03.1, INF-04.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "CrowdStrike"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "crowdstrike-aidr",
          "csa-maestro",
          "aismm"
        ],
        "implementation": {
          "pattern": "Endpoint detection and response (EDR) captures the agent's full process tree, file I/O, and network activity at the OS level, so you can see an agent process spawn an unauthorised shell or call a binary outside its manifest, which network and app layers miss. OS-level EDR is the right source only where you control the host; for SaaS-hosted, managed-platform, MCP/A2A-brokered, and serverless agents there is no host OS to instrument, so match the telemetry to the deployment mode (see the per-mode table).",
          "steps": [
            "Run EDR on hosts where agents execute; capture process lineage, file I/O, and network telemetry.",
            "Tie telemetry to the agent's distinct identity (IA-01) so you know which agent did what.",
            "Baseline normal agent behaviour so anomalies (RT-04) stand out.",
            "Protect the telemetry itself: it now holds prompts, tool parameters, and identities, so access-control the store, minimise sensitive content, and treat it as a high-value target (this telemetry is part of the security layer the third open gap warns about).",
            "Integrate agent tracing with existing observability such as OpenTelemetry across the user-agent, agent-tool, and model-reasoning layers, so the logs are analysable rather than merely voluminous (IMDA MGF)."
          ],
          "anti_patterns": [
            "relying only on network/app logs that can't see the agent process",
            "telemetry not tied to a specific agent identity",
            "no OS-level visibility on hosts running agents",
            "collecting sensitive agent telemetry into an unprotected store that becomes its own breach path"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm OS-level telemetry (process lineage, file I/O, network) is captured on agent hosts and tied to agent identity.",
              "ref": "crowdstrike-aidr"
            }
          ],
          "runtime_test": [
            {
              "text": "Have an agent spawn an unsanctioned shell or call a binary outside its manifest; confirm EDR captures the full process tree and flags it.",
              "ref": "crowdstrike-aidr"
            }
          ],
          "evidence": [
            {
              "text": "EDR process-lineage records per agent run, retained as the OS-level activity trail.",
              "ref": "crowdstrike-aidr"
            }
          ]
        },
        "lenses": {
          "engineering": "Deploy EDR on agent hosts and correlate process trees to agent identities.",
          "detection": "Build detections on agent process lineage, unsanctioned shells, off-manifest binaries, unexpected child processes.",
          "red_team": "Have the agent live-off-the-land (spawn shells, call system tools) and see if OS telemetry catches it.",
          "grc": "OS-level activity records evidence that agent behaviour is actually observed, not assumed.",
          "secops": "Process lineage is what lets you scope and contain a compromised agent host."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "gap2"
      },
      {
        "id": "RT-02",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/BH-06",
            "id": "BH-06",
            "name": "Injection-Resistance Evaluation in Production",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "block / quarantine",
          "detail": "stop or quarantine a suspected hijack before the agent acts on it"
        },
        "detection_schema": {
          "telemetry": [
            "content_channel",
            "trust_boundary",
            "input_source",
            "retrieved_doc_id",
            "tool_result_id",
            "injection_score",
            "instruction_override_attempt",
            "attack_family",
            "blocked_action",
            "later_success",
            "agent_id"
          ],
          "baseline": "An injection eval suite (e.g. AgentDojo / InjecAgent) run over realistic tasks, tracked as attack-success-rate and false-positive-rate rather than a single classifier threshold; plus each agent's normal trust-boundary mix of inputs.",
          "alert": "Tool-returned or retrieved content carrying imperative instructions that conflict with the system prompt, especially crossing from a lower-trust boundary; an injection score over threshold; or a delayed success where an earlier benign-looking input later drives a disallowed action. Covers text and multimodal (image / audio / document) input streams."
        },
        "enforcement_point": "In-path guardrails on both inputs and outputs, blocking or quarantining suspected hijacks before the agent acts.",
        "layer": "runtime",
        "plane": "data",
        "name": "Detect direct and indirect prompt injection at every input and output",
        "plain": "Scan what goes into and out of the agent for hidden instructions trying to hijack it.",
        "threat": {
          "tags": [
            "ASI01"
          ],
          "desc": "Injection arrives via code comments, config files, repository content, web pages, or poisoned tool responses, and redirects the agent's goal."
        },
        "standard": [
          "prompt inspection",
          "I/O guardrails",
          "sensitive-data redaction"
        ],
        "mappings": {
          "aisvs": {
            "value": "C2.1.3 (injection detection on all steering inputs); C12.2.1 (alert on injection and jailbreak); C10.4.2 (screen tool results for indirect injection)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C2 Input Validation; C12 Monitoring, Logging & Anomaly Detection; C10 MCP Security",
              "rationale": "Detecting direct and indirect prompt injection is the AISVS injection detection on steering inputs and tool results.",
              "verified_on": "2026-06-24"
            }
          },
          "mitre": {
            "value": "AML.T0051 (LLM Prompt Injection); ATLAS mitigations: AML.M0015 (Adversarial Input Detection), AML.M0020 (Generative AI Guardrails)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0051; mitigations AML.M0015, AML.M0020",
              "rationale": "Detect direct and indirect prompt injection at every input and output addresses ATLAS technique(s) LLM Prompt Injection; implements ATLAS mitigation(s) Adversarial Input Detection, Generative AI Guardrails.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (input validation for injection); §2.1.1 (prompt-injection threat modelling)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.1.1",
              "rationale": "Detect direct and indirect prompt injection at every input and output maps to IMDA MGF input validation for injection; prompt-injection threat modelling."
            }
          },
          "aicm": {
            "value": "LOG-03 (security monitoring and alerting); AIS-09 (input validation)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-03, AIS-09",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-03, AIS-09) correspond to \"Detect direct and indirect prompt injection at every input and output\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure / Manage functions",
              "rationale": "NIST AI RMF Measure / Manage functions: analyse, assess, benchmark, and monitor the AI risks and impacts; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Detect direct and indirect prompt injection at every input and output\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Agent Goal Hijack; LLM01:2025 Prompt Injection",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01, LLM01",
              "rationale": "Detect direct and indirect prompt injection at every input and output addresses OWASP ASI01 Agent Goal Hijack; LLM01:2025 Prompt Injection.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "MON-03.2, MON-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-03.2, MON-04.2",
              "rationale": "Detect direct and indirect prompt injection at every input and output maps to AISMM control(s) MON-03.2, MON-04.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "CrowdStrike",
          "Google",
          "OpenAI"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-llm-2025",
          "crowdstrike-aidr",
          "google-saif2",
          "openai-agent-builder-safety",
          "garak",
          "aismm",
          "plaskett-coding-agent-security",
          "ms-pyrit"
        ],
        "implementation": {
          "pattern": "Guardrails inspect both inputs and outputs for injection in real time, redact sensitive data, and block or quarantine suspected hijack attempts before the agent acts on them.",
          "steps": [
            "Inspect every input (including retrieved/tool content) and output for injection patterns.",
            "Redact sensitive data at the boundary.",
            "Block or quarantine suspected injections and surface them for review."
          ],
          "anti_patterns": [
            "scanning only the user prompt, not tool/retrieved content",
            "no output-side inspection",
            "guardrails that fail open when overloaded"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm injection inspection runs on inputs (incl. tool/retrieved content) and outputs, with redaction at the boundary.",
              "ref": "google-saif2"
            }
          ],
          "runtime_test": [
            {
              "text": "Run a prompt-injection eval suite and report the attack-success-rate before vs after the guardrail, against a threshold. Use AgentDojo and garak probes.",
              "ref": "agentdojo"
            }
          ],
          "evidence": [
            {
              "text": "Guardrail decision logs (blocked/redacted/allowed) and periodic injection-eval reports with attack-success-rate.",
              "ref": "garak"
            }
          ]
        },
        "lenses": {
          "engineering": "Wrap the agent in input+output injection guardrails; redact secrets at the boundary; fail closed.",
          "detection": "Alert on detected injection attempts and track attack-success-rate over time.",
          "red_team": "Run AgentDojo/garak injection suites and report ASR before vs after the guardrail; also deliver injection via untrusted-workspace files such as code comments and config (Plaskett).",
          "grc": "Injection-eval reports evidence the control is measured, not assumed.",
          "secops": "Real-time injection blocking stops a hijack before the agent executes the attacker's goal."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "RT-03",
        "tiers": [
          "autonomy"
        ],
        "detection_schema": {
          "telemetry": [
            "agent_id",
            "stated_intent_hash",
            "executed_tool_sink",
            "parameter_entropy",
            "monitor_visibility_mode",
            "model_access_level",
            "coverage",
            "recall",
            "time_to_response",
            "oversight_evasion_eval_score"
          ],
          "baseline": "Each agent's normal intent-to-action mapping (from multi-turn testing), plus the supervisor's measured coverage / recall and its score on an oversight-evasion evaluation.",
          "alert": "The executed tool sink maps outside the stated-intent vector; the anomaly score breaks variance; or the oversight-evasion eval degrades (the agent may be learning to appease the monitor). Fall back to behavioral / internal-state checks (RT-08) when visible reasoning cannot be trusted."
        },
        "enforcement_point": "A separate, constrained supervisor model running over the agent's reasoning-and-action stream, outside the agent it watches.",
        "readiness": "emerging",
        "thesis_type": "compensating",
        "layer": "runtime",
        "plane": "data",
        "name": "Supervise the agent's reasoning and check it matches its actions",
        "plain": "Compare what the agent says it will do with the tool calls and effects it actually produces; don't treat its visible reasoning as ground truth.",
        "threat": {
          "tags": [
            "ASI01"
          ],
          "desc": "A well-aligned model can be hijacked at run time, or its stated reasoning can drift from what it actually does. Treat the agent itself as a potential insider threat, assurance shouldn't depend on alignment being perfect."
        },
        "standard": [
          "agents monitoring other agents (reflection or LLM-judge nodes)",
          "reasoning-chain monitoring",
          "intent-vs-action consistency check",
          "escalating detection tiers (D1-D4)"
        ],
        "mappings": {
          "aisvs": {
            "value": "C9.2.6 (AI-augmented review of planned actions); C9.2.7 (harden the reviewer against injection)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C9 Orchestration & Agentic Action",
              "rationale": "Supervising reasoning against actions is the AISVS AI-augmented review of planned actions, with the reviewer hardened against injection.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (Planning: log & verify reasoning); §2.3.3 (monitor model-reasoning layer)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.3.3",
              "rationale": "Supervise the agent's reasoning and check it matches its actions maps to IMDA MGF Planning: log & verify reasoning; monitor model-reasoning layer.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "LOG-05 (audit logs monitoring and response)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-05",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-05) correspond to \"Supervise the agent's reasoning and check it matches its actions\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure / Manage functions",
              "rationale": "NIST AI RMF Measure / Manage functions: analyse, assess, benchmark, and monitor the AI risks and impacts; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Supervise the agent's reasoning and check it matches its actions\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Agent Goal Hijack",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01",
              "rationale": "Supervise the agent's reasoning and check it matches its actions addresses OWASP ASI01 Agent Goal Hijack.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "MON-04.1, MON-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-04.1, MON-05.2",
              "rationale": "Supervise the agent's reasoning and check it matches its actions maps to AISMM control(s) MON-04.1, MON-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Google / DeepMind"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "imda-mgf",
          "deepmind-ai-control",
          "anthropic-glasswing"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "A trusted supervisor compares the agent's declared plan against its actual tool calls and real-world effects (not its visible chain-of-thought, which may be unfaithful), and escalates through DeepMind's detection tiers D1-D4 (the tier set by how capable the agent is at evading detection). This matrix's compensating control is the dual-model design: run the supervisor on a separate, more constrained model — separate and constrained is the load-bearing property, not merely smaller — to reduce the shared attack surface. This is defence-in-depth, not a proof of immunity, and it does not by itself secure the security layer; D1-D4 belongs to DeepMind.",
          "steps": [
            "Run a supervisor over the agent's reasoning and action stream (D1-D4 detection tiers).",
            "Capture reasoning traces distinctly from action logs and flag where stated intent diverges from action.",
            "Run the supervisor on a separate, smaller, constrained model to reduce shared attack surface (matrix thesis, not provably immune).",
            "Escalate to response tiers (see RT-04) when divergence or evasion is detected.",
            "Complement the supervisor with agents that monitor other agents in real time (reflection or LLM-judge nodes), flagging where an agent's output diverges from its retrieved evidence (IMDA MGF)."
          ],
          "anti_patterns": [
            "monitoring only actions, never the reasoning that drove them",
            "running the monitor on the same model and context as the agent it watches",
            "claiming a monitor is 'immune' to hijack"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm a supervisor reviews reasoning + action, that reasoning traces are captured distinctly, and that the monitor runs outside the supervised agent's trust domain.",
              "ref": "deepmind-ai-control"
            }
          ],
          "runtime_test": [
            {
              "text": "Stage an intent-vs-action divergence (the agent says one thing, does another) and confirm the supervisor detects and escalates it.",
              "ref": "deepmind-ai-control"
            }
          ],
          "evidence": [
            {
              "text": "Supervisor detection logs with the tier (D1-D4) and the divergence that triggered escalation.",
              "ref": "deepmind-ai-control"
            }
          ]
        },
        "lenses": {
          "engineering": "Add a separate supervisor model over the agent's reasoning+action stream; flag intent-vs-action mismatches.",
          "detection": "Alert when the agent's actions diverge from its stated plan, or the supervisor goes quiet.",
          "red_team": "Try to make the agent act against its stated intent without the supervisor noticing; attack the supervisor itself.",
          "grc": "Supervisor logs evidence that reasoning was monitored, not just outputs.",
          "secops": "Reasoning-vs-action divergence is an early signal of a hijack in progress."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "gap3"
      },
      {
        "id": "RT-04",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/CR-01",
            "id": "CR-01",
            "name": "Continuous Production Monitoring and Risk Aggregation",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "autonomy",
          "irreversibility"
        ],
        "response": {
          "lever": "pause / kill / isolate (dependency-aware)",
          "detail": "enforced outside the agent; also invalidates delegated tokens and terminates tool-side jobs"
        },
        "enforcement_point": "Pause / kill / isolate switch enforced outside the agent and made dependency-aware (revokes tokens, kills tool-side jobs).",
        "layer": "runtime",
        "plane": "data",
        "name": "Detect anomalies and trigger pause, kill switch, or containment",
        "plain": "Spot when the agent goes off the rails and be able to pause or stop it instantly.",
        "threat": {
          "tags": [
            "ASI10"
          ],
          "desc": "An action that can't be verified against its provenance, or lateral movement in progress, needs an immediate stop, and sometimes a graceful pause for review rather than a hard kill."
        },
        "standard": [
          "graceful interruption (pause for review)",
          "kill switch on provenance failure",
          "endpoint isolation / circuit breakers",
          "response tiers (R1-R3)"
        ],
        "mappings": {
          "aisvs": {
            "value": "C12.2.2 (anomaly detection); C9.3.8 (automated tool containment); C9.6.1 (kill-switch)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C12 Monitoring, Logging & Anomaly Detection; C9 Orchestration & Agentic Action",
              "rationale": "Anomaly detection driving pause or kill maps to AISVS anomaly detection, automated tool containment, and kill-switch.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.3 (alert thresholds, interventions up to termination & fallback)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.3",
              "rationale": "Detect anomalies and trigger pause, kill switch, or containment maps to IMDA MGF alert thresholds, interventions up to termination & fallback.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "SEF-09 (incident records management); SEF-06 (event triage processes)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: SEF-09, SEF-06",
              "rationale": "These CSA AICM v1.1 control(s) (SEF-09, SEF-06) correspond to \"Detect anomalies and trigger pause, kill switch, or containment\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Detect anomalies and trigger pause, kill switch, or containment\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI10 Rogue Agents (containment)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI10",
              "rationale": "Detect anomalies and trigger pause, kill switch, or containment addresses OWASP ASI10 Rogue Agents (containment).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "IR-04.3, IR-05.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM IR-04.3, IR-05.1",
              "rationale": "Detect anomalies and trigger pause, kill switch, or containment maps to AISMM control(s) IR-04.3, IR-05.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Google / DeepMind",
          "CrowdStrike"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "deepmind-ai-control",
          "crowdstrike-aidr",
          "openai-governing-agentic",
          "aismm",
          "nist-fasttrack"
        ],
        "implementation": {
          "pattern": "Behavioural anomalies trigger graduated response (DeepMind R1-R3): a graceful pause for human review, a hard kill on provenance failure, or endpoint isolation / circuit breakers for lateral movement. Interruptibility (pause/suspend) is treated as distinct from termination.",
          "steps": [
            "Define anomaly triggers (unverifiable action, lateral movement, divergence from RT-03).",
            "Provide a graceful pause/suspend-for-review as well as a hard kill (interruptibility, not only termination).",
            "Wire kill-on-provenance-failure and endpoint isolation as graduated responses (R1-R3).",
            "Rehearse the kill switch in a timed drill so it actually contains."
          ],
          "anti_patterns": [
            "only a hard kill, no graceful pause for review",
            "a kill switch never tested in a drill",
            "containment that depends on the agent cooperating"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm graduated responses exist (pause, kill, isolate) and the kill switch is enforced outside the agent.",
              "ref": "deepmind-ai-control"
            }
          ],
          "runtime_test": [
            {
              "text": "Run a timed kill-switch drill and a graceful-pause drill; confirm both actually contain the agent within the target time.",
              "ref": "crowdstrike-aidr"
            }
          ],
          "evidence": [
            {
              "text": "Drill records (trigger, response tier, time-to-contain) and logs of real containment events.",
              "ref": "crowdstrike-aidr"
            }
          ]
        },
        "lenses": {
          "engineering": "Build pause + kill + isolate as graduated responses, enforced outside the agent; rehearse them.",
          "detection": "Feed anomalies (unverifiable actions, lateral movement) into automated response triggers.",
          "red_team": "Trigger anomalies and time how fast containment actually engages; try to outrun the kill switch.",
          "grc": "Drill records evidence that containment works on a known cadence.",
          "secops": "This is your live stop button, graceful pause for review, hard kill for clear danger."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "RT-05",
        "cross_domain": [
          {
            "domain": "data",
            "uri": "apeiris://data/controls/DM-04",
            "id": "DM-04",
            "name": "Non-PII Output Leakage Prevention",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "data-sensitivity"
        ],
        "response": {
          "lever": "block / redact",
          "detail": "block or redact sensitive content on its way out"
        },
        "detection_schema": {
          "telemetry": [
            "egress_content_class",
            "dlp_match",
            "redaction_action",
            "agent_id"
          ],
          "baseline": "the data classes each agent is allowed to emit",
          "alert": "credentials, regulated, or proprietary data detected in egress"
        },
        "enforcement_point": "DLP engine inspecting egress and interactions, a second net behind the containment-layer network filter.",
        "layer": "runtime",
        "plane": "data",
        "name": "Apply data-loss prevention to agent egress and interactions",
        "plain": "Catch sensitive data on its way out before the agent leaks it.",
        "threat": {
          "tags": [],
          "desc": "Credentials, regulated data, or proprietary content can be exposed through an agent's actions and outputs."
        },
        "standard": [
          "DLP",
          "content inspection",
          "session recording"
        ],
        "mappings": {
          "aisvs": {
            "value": "C5.2.4 (post-inference filtering of unauthorized data); C7.3.2 (block sensitive disclosure); C12.2.6 (covert-channel monitoring)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C5 Access Control & Identity; C7 Model Behavior & Output Control; C12 Monitoring, Logging & Anomaly Detection",
              "rationale": "DLP on egress is the AISVS post-inference filtering of unauthorized data and covert-channel monitoring.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.1 (filter sensitive data at the MCP layer); §2.2.1 (data protection)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.1, §2.2.1",
              "rationale": "Apply data-loss prevention to agent egress and interactions maps to IMDA MGF filter sensitive data at the MCP layer; data protection.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "LOG-16 (output monitoring); DSP-17 (sensitive data protection)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-16, DSP-17",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-16, DSP-17) correspond to \"Apply data-loss prevention to agent egress and interactions\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Manage function",
              "rationale": "NIST AI RMF Manage function: prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Apply data-loss prevention to agent egress and interactions\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "LLM02 Sensitive Information Disclosure",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-llm-2025",
              "section": "OWASP LLM02",
              "rationale": "Apply data-loss prevention to agent egress and interactions addresses OWASP LLM02 Sensitive Information Disclosure.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "MON-04.3, DAT-03.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-04.3, DAT-03.3",
              "rationale": "Apply data-loss prevention to agent egress and interactions maps to AISMM control(s) MON-04.3, DAT-03.3.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0057 (LLM Data Leakage); AML.T0024 (Exfiltration via AI Inference API); AML.T0086 (Exfiltration via AI Agent Tool Invocation)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0057, AML.T0024, AML.T0086",
              "rationale": "Apply data-loss prevention to agent egress and interactions addresses ATLAS technique(s) LLM Data Leakage, Exfiltration via AI Inference API, Exfiltration via AI Agent Tool Invocation.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "CrowdStrike",
          "Ping Identity"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "crowdstrike-aidr",
          "ping-identity-ai",
          "aismm"
        ],
        "implementation": {
          "pattern": "Data-loss prevention inspects agent egress and interactions for sensitive content, blocking or redacting credentials, regulated data, and proprietary content before they leave.",
          "steps": [
            "Run DLP/content inspection on agent outputs and egress.",
            "Block or redact credentials, regulated data, and proprietary content.",
            "Record sessions for high-risk agents to support review and investigation."
          ],
          "anti_patterns": [
            "no content inspection on agent output",
            "DLP only on email/file channels, not agent egress",
            "logging that itself captures secrets in the clear"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm DLP/content inspection covers agent egress and interactions, with redaction of sensitive data.",
              "ref": "crowdstrike-aidr"
            }
          ],
          "runtime_test": [
            {
              "text": "Have the agent attempt to send a planted credential / regulated record; DLP must block or redact it (complements EC-02 egress).",
              "ref": "crowdstrike-aidr"
            }
          ],
          "evidence": [
            {
              "text": "DLP event logs (blocked/redacted) tied to the agent identity and session.",
              "ref": "ping-identity-ai"
            }
          ]
        },
        "lenses": {
          "engineering": "Insert DLP/content inspection on agent output and egress; redact secrets and regulated data.",
          "detection": "Alert on DLP hits in agent egress and on sensitive patterns in agent output.",
          "red_team": "Try to exfiltrate planted regulated data and credentials through agent output.",
          "grc": "DLP logs evidence that sensitive data didn't leave through the agent.",
          "secops": "DLP is a second net behind egress filtering for data on the way out."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "RT-06",
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "Your own threat model and ATLAS/ATT&CK mapping, scored additively (ARiES) so partial signals are not zeroed out.",
        "readiness": "emerging",
        "thesis_type": "frontier",
        "layer": "runtime",
        "plane": "data",
        "name": "Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration",
        "plain": "Track the new attacker moves that today's threat libraries don't fully name yet.",
        "threat": {
          "tags": [],
          "desc": "MITRE ATLAS has begun adding agentic technique IDs (for example AML.T0053 (AI Agent Tool Invocation), AML.T0070 (RAG Poisoning), and AML.T0104 (Publish Poisoned AI Agent Tool)), but neither ATT&CK nor ATLAS yet has first-class IDs for autonomous killchain orchestration and real-time pivot decisioning. Anthropic's LLM ATT&CK Navigator (Jun 3 2026) found the highest-uplift actors are distinguished by their scaffolding, not their technique count: GTG-1002 hit a maximum risk score using a medium-tier technique count by wiring pentest tools into a coding agent and letting it run the killchain (832 banned accounts; 13,873 actions; 482 techniques across all 14 tactics)."
        },
        "standard": [
          "MITRE ATT&CK / ATLAS + an agentic-orchestration extension",
          "ARiES-style additive detection-scoring heuristic (Threat + Vulnerability + Impact; keeps weak signals visible, not a formal risk calculation)"
        ],
        "mappings": {
          "aisvs": {
            "value": "C12.2.3 (custom detection rules for coordinated and novel attacks)",
            "status": "indicative",
            "fit": "partial",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C12 Monitoring, Logging & Anomaly Detection",
              "rationale": "Mapping AI-native threats relates to AISVS custom detection rules for coordinated and novel attacks, hence indicative.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.1.1 (threat modelling & taint tracing for agentic systems)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.1.1",
              "rationale": "Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration maps to IMDA MGF threat modelling & taint tracing for agentic systems."
            }
          },
          "aicm": {
            "value": "LOG-05 (audit logs monitoring and response); TVM-05 (detection updates)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-05, TVM-05",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-05, TVM-05) correspond to \"Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Measure functions",
              "rationale": "NIST AI RMF Map / Measure functions: establish context and identify and categorise the AI risks; analyse, assess, benchmark, and monitor the AI risks and impacts. \"Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring; broad, does not codify tactical ATT&CK/ATLAS threat mapping)",
            "status": "indicative",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "MITRE ATLAS (agentic technique IDs emerging); orchestration-decisioning IDs still missing",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-nhi-2025",
              "section": "OWASP ",
              "rationale": "Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration addresses OWASP MITRE ATLAS (agentic technique IDs emerging); orchestration-decisioning IDs still missing."
            }
          },
          "aismm": {
            "value": "MON-05.2, IR-04.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-05.2, IR-04.1",
              "rationale": "Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration maps to AISMM control(s) MON-05.2, IR-04.1.",
              "verified_on": "2026-06-22"
            }
          },
          "mitre": {
            "value": "AML.T0053 (AI Agent Tool Invocation); AML.T0070 (RAG Poisoning); AML.T0080 (AI Agent Context Poisoning); AML.T0086 (Exfiltration via AI Agent Tool Invocation); AML.T0024/T0025 (Exfiltration); AML.T0104 (Publish Poisoned AI Agent Tool)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS techniques AML.T0053, AML.T0070, AML.T0080, AML.T0086, AML.T0024, AML.T0104",
              "rationale": "Map AI-native threats, extend ATT&CK/ATLAS to agentic orchestration addresses ATLAS technique(s) AI Agent Tool Invocation, RAG Poisoning, AI Agent Context Poisoning, Exfiltration via AI Agent Tool Invocation, Exfiltration, Publish Poisoned AI Agent Tool.",
              "verified_on": "2026-06-24"
            }
          }
        },
        "implementers": [
          "Anthropic"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "MITRE ATLAS",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "anthropic-attack-navigator",
          "mitre-atlas",
          "anthropic-gtg1002",
          "mitre-attack",
          "aismm"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "Map observed agentic attacks onto ATT&CK/ATLAS, adopt the new agentic ATLAS technique IDs as they land, and extend your own threat model for the orchestration-decisioning behaviours that still have no IDs. Score with an additive model (ARiES: Threat + Vulnerability + Impact) so partial attack-enablement signals stay visible instead of being zeroed out.",
          "steps": [
            "Adopt ATLAS agentic technique IDs (e.g. AML.T0053 (AI Agent Tool Invocation) and AML.T0070 (RAG Poisoning)) as your baseline; verify exact IDs at atlas.mitre.org.",
            "Extend your threat model for autonomous orchestration / real-time pivot decisioning (labelled as your own, since no standard ID exists yet).",
            "Score risk additively (ARiES-style) so partial enablement isn't hidden by a multiplicative zero.",
            "Track the scaffolding actors build around the model, not just technique counts."
          ],
          "anti_patterns": [
            "assuming today's ATT&CK/ATLAS IDs fully cover agentic orchestration",
            "multiplicative scoring that zeroes out partial-enablement signals",
            "claiming 'no IDs exist' now that ATLAS has added agentic techniques"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm your threat model references current ATLAS agentic technique IDs and explicitly labels the orchestration-decisioning gap as un-IDed.",
              "ref": "mitre-atlas"
            }
          ],
          "runtime_test": [
            {
              "text": "Replay an orchestration-style attack (tool-chained killchain) and confirm your detections and scoring surface it even when individual techniques look low-risk.",
              "ref": "anthropic-attack-navigator"
            }
          ],
          "evidence": [
            {
              "text": "A maintained mapping of observed agentic attacks to ATLAS IDs, with the un-IDed orchestration behaviours flagged as the matrix's own extension.",
              "ref": "anthropic-attack-navigator"
            }
          ]
        },
        "lenses": {
          "engineering": "Tag your detections to ATLAS agentic technique IDs and add custom IDs for orchestration behaviours.",
          "detection": "Build detections for tool-chained killchains and real-time pivots, not just single techniques; score additively.",
          "red_team": "Run an orchestration-style killchain (GTG-1002 pattern) and see whether scoring catches a medium-technique, max-risk attack.",
          "grc": "An ATLAS-mapped threat model evidences current, AI-native threat coverage.",
          "secops": "Watching scaffolding/orchestration catches the attacks that per-technique scoring rates as low."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": ""
      },
      {
        "id": "RT-07",
        "tiers": [
          "autonomy"
        ],
        "detection_schema": {
          "telemetry": [
            "agent_pair",
            "shared_artifact_id",
            "cross_agent_causal_edge",
            "timing_correlation",
            "mutual_information_score",
            "common_objective_inference",
            "policy_bypass_path",
            "correlated_action_window"
          ],
          "baseline": "Normal inter-agent coordination reconstructed as a causal graph across goals, memory, tools, and actions.",
          "alert": "Correlated cross-agent actions, shared-artifact hand-offs that bypass policy, timing- or state-based coordination, or rising mutual information between agents that should be independent. Collusion can be low-entropy, so do not rely on message entropy alone."
        },
        "enforcement_point": "A cross-agent correlation layer plus inter-agent traffic inspection (research-stage, carried as a thesis).",
        "readiness": "research",
        "thesis_type": "frontier",
        "layer": "runtime",
        "plane": "data",
        "name": "Detect multi-agent collusion and covert channels",
        "plain": "Watch for agents quietly coordinating in ways that look harmless one at a time.",
        "threat": {
          "tags": [
            "ASI07",
            "ASI08"
          ],
          "desc": "Agents can establish hidden coordination or steganographic side-channels over authenticated links, coordinated actions that look benign individually but add up to an attack. Authenticating the channel (PT-01) doesn't detect collusion over it."
        },
        "standard": [
          "cross-agent behavioural correlation",
          "covert-channel / steganography detection"
        ],
        "mappings": {
          "mitre": {
            "value": "ATLAS mitigation: AML.M0024 (AI Telemetry Logging)",
            "status": "indicative",
            "fit": "supporting",
            "evidence": {
              "ref": "mitre-atlas",
              "section": "MITRE ATLAS mitigation AML.M0024",
              "rationale": "AI Telemetry Logging supplies the observability that collusion and covert-channel detection depends on. The mitigation is a telemetry dependency, not the detector itself, so this is a supporting mapping."
            }
          },
          "aisvs": {
            "value": "C12.2.6 (covert-channel indicators); C12.2.3 (coordinated-attack rules)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C12 Monitoring, Logging & Anomaly Detection",
              "rationale": "Detecting collusion and covert channels is the AISVS covert-channel and C2 monitoring plus coordinated-attack rules.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.2 (test for emergent multi-agent behaviours); §1.2.3 (systemic & multi-agent risks)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.2, §1.2.3",
              "rationale": "Detect multi-agent collusion and covert channels maps to IMDA MGF test for emergent multi-agent behaviours; systemic & multi-agent risks."
            }
          },
          "aicm": {
            "value": "LOG-05 (audit logs monitoring and response)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-05",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-05) correspond to \"Detect multi-agent collusion and covert channels\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure function",
              "rationale": "NIST AI RMF Measure function: analyse, assess, benchmark, and monitor the AI risks and impacts. \"Detect multi-agent collusion and covert channels\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI07 Insecure Inter-Agent Communication; ASI08 Cascading Agent Failures (multi-agent collusion)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI07, ASI08",
              "rationale": "Detect multi-agent collusion and covert channels addresses OWASP ASI07 Insecure Inter-Agent Communication; ASI08 Cascading Agent Failures (multi-agent collusion).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "MON-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-05.2",
              "rationale": "Detect multi-agent collusion and covert channels maps to AISMM control(s) MON-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "csa-maestro",
          "deepmind-ai-control"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "Correlate behaviour across agents to spot coordination that no single agent's logs reveal, and inspect inter-agent traffic for covert/steganographic channels. This is the matrix's own (research-stage) position, an active research direction, not yet a codified standard control.",
          "steps": [
            "Correlate actions across agents to detect coordinated patterns that look benign individually.",
            "Inspect inter-agent communication for covert or steganographic channels beyond the authenticated payload.",
            "Flag information-asymmetry exploitation between agents for review."
          ],
          "anti_patterns": [
            "monitoring each agent in isolation only",
            "trusting an authenticated channel without inspecting for covert content",
            "no cross-agent correlation at all"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm cross-agent behavioural correlation exists and inter-agent traffic is inspected beyond authentication.",
              "unverified": true
            }
          ],
          "runtime_test": [
            {
              "text": "Stage two agents coordinating a split attack over an authenticated channel and confirm correlation flags the aggregate pattern.",
              "unverified": true
            }
          ],
          "evidence": [
            {
              "text": "Cross-agent correlation alerts and inter-agent channel-inspection logs.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Add cross-agent correlation analytics and inspect inter-agent payloads for covert content.",
          "detection": "Alert on coordinated cross-agent patterns and anomalous inter-agent traffic.",
          "red_team": "Split an attack across two cooperating agents and hide coordination in an authenticated channel.",
          "grc": "Correlation logs evidence that multi-agent collusion is actually watched for (a known frontier).",
          "secops": "Cross-agent correlation reveals attacks invisible in any single agent's timeline."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": "gap3"
      },
      {
        "id": "RT-08",
        "tiers": [
          "autonomy"
        ],
        "detection_schema": {
          "telemetry": [
            "agent_id",
            "activation_probe_score",
            "logit_anomaly_score",
            "monitor_visibility_mode",
            "model_access_level",
            "probe_coverage"
          ],
          "baseline": "The model's internal-state baseline and the probe's coverage / recall (self-hosted or model-developer only).",
          "alert": "A representation- or logit-level anomaly suggesting a hidden goal, or probe coverage dropping below the level needed to trust visible-reasoning monitoring (RT-03)."
        },
        "enforcement_point": "Representation- or logit-level probes on model internal state; reachable only by model developers or self-hosted teams.",
        "readiness": "research",
        "thesis_type": "frontier",
        "layer": "runtime",
        "plane": "data",
        "name": "Monitor latent and representation-level signals, not just visible reasoning",
        "plain": "Watch the model’s internal signals, not only the words it shows you, because a capable model can hide its plan.",
        "threat": {
          "tags": [
            "ASI01"
          ],
          "desc": "RT-03 monitors the agent’s visible chain-of-thought, but frontier research warns of assumption collapse: a capable model can develop oversight awareness (altering visible output to appease the supervisor) or use opaque / latent reasoning (internalizing strategy without emitting parseable text). Text-level monitoring then misses the malicious plan."
        },
        "standard": [
          "representation / logit-level anomaly detection",
          "activation probes",
          "do-not-rely-solely-on-chain-of-thought"
        ],
        "mappings": {
          "aicm": {
            "value": "LOG-05 (reasoning and action audit logging); TVM (Threat & Vulnerability Management)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: LOG-05",
              "rationale": "These CSA AICM v1.1 control(s) (LOG-05) correspond to \"Monitor latent and representation-level signals, not just visible reasoning\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "MON-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MON-05.2",
              "rationale": "Monitor latent and representation-level signals, not just visible reasoning maps to AISMM control(s) MON-05.2.",
              "verified_on": "2026-06-22"
            }
          },
          "nist": {
            "value": "AI RMF: Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure function",
              "rationale": "NIST AI RMF Measure function: analyse, assess, benchmark, and monitor the AI risks and impacts. \"Monitor latent and representation-level signals, not just visible reasoning\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.6 (AI system operation and monitoring)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Agent Goal Hijack (latent / opaque-reasoning vector)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01",
              "rationale": "Monitor latent and representation-level signals, not just visible reasoning addresses OWASP ASI01 Agent Goal Hijack (latent / opaque-reasoning vector).",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Google / DeepMind"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "AWS Scoping"
        ],
        "sources": [
          "deepmind-ai-control",
          "anthropic-glasswing"
        ],
        "matrix_thesis": true,
        "implementation": {
          "pattern": "Supervision extends below the visible text: representation- or logit-level anomaly detection and activation probes watch the model’s inner state for deception or hidden goals, on the assumption that a capable agent may not reveal its plan in parseable text. This is an emerging, frontier direction and this matrix's own position; few production stacks implement it today. It is mainly a control for model developers or self-hosted-model operators — most consumers of a hosted, closed model cannot reach logits or activations and must require it of their provider.",
          "steps": [
            "Do not rely solely on visible chain-of-thought for oversight (RT-03’s stated assumption can collapse).",
            "Add representation / logit-level anomaly detection and activation probes where model internals are accessible.",
            "Flag oversight-awareness signals: visible reasoning that diverges from internal-state indicators.",
            "Treat this as defence-in-depth alongside RT-03, not a replacement."
          ],
          "anti_patterns": [
            "assuming a model’s visible reasoning is faithful to its actual plan",
            "monitoring only parseable text output",
            "claiming representation monitoring is a solved problem (it is frontier research)"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm oversight does not rely solely on visible chain-of-thought and that representation-level signals are monitored where model internals are accessible.",
              "ref": "deepmind-ai-control"
            }
          ],
          "runtime_test": [
            {
              "text": "Red-team for oversight-awareness / sandbagging: confirm a model altering its visible output to appease the monitor is still flagged by internal-state signals.",
              "unverified": true
            }
          ],
          "evidence": [
            {
              "text": "Representation-anomaly detection logs or probe outputs kept alongside the chain-of-thought monitor.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Add logit/representation anomaly detection and activation probes where you can access internals; do not trust chain-of-thought alone.",
          "detection": "Alert when visible reasoning diverges from internal-state indicators (oversight awareness).",
          "red_team": "Sandbag the visible chain-of-thought to appease the supervisor while pursuing a hidden goal; see if internal-state monitoring catches it.",
          "grc": "An emerging control; evidence is partial, record it as a known frontier limit (defence-in-depth).",
          "secops": "Representation-level signals can catch a deceptive agent that looks clean in its text output."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": ""
      },
      {
        "id": "AS-01",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/EV-04",
            "id": "EV-04",
            "name": "Adversarial Red-Team Testing",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "Pre-deployment red-team / eval harness gated on a launch threshold (an attack-success-rate you clear).",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Adversarially red-team and evaluate the agent before launch",
        "plain": "Try hard to break the agent yourself before anyone else can.",
        "threat": {
          "tags": [
            "ASI01"
          ],
          "desc": "Resistance to goal hijack and multi-turn drift has to be measured, not assumed, an agent that looks safe in a demo can fail under a determined adversary."
        },
        "standard": [
          "red-team suites",
          "agentic eval benchmarks",
          "FinBot CTF"
        ],
        "mappings": {
          "aisvs": {
            "value": "C11.1.3 (adversarial evaluation pre-release); C11.1.2 (versioned alignment test suite per release)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C11 Adversarial Robustness",
              "rationale": "Pre-launch adversarial red-teaming is the AISVS adversarial evaluation and versioned alignment test suite per release.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.2 (pre-deployment testing: task execution, policy, robustness); §2.2.1 (regular red teaming)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.2, §2.2.1",
              "rationale": "Adversarially red-team and evaluate the agent before launch maps to IMDA MGF pre-deployment testing: task execution, policy, robustness; regular red teaming.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "AIS-05 (application security testing)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-05",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-05) correspond to \"Adversarially red-team and evaluate the agent before launch\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure function",
              "rationale": "NIST AI RMF Measure function: analyse, assess, benchmark, and monitor the AI risks and impacts. \"Adversarially red-team and evaluate the agent before launch\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI01 Goal Hijack (multi-turn drift)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI01",
              "rationale": "Adversarially red-team and evaluate the agent before launch addresses OWASP ASI01 Goal Hijack (multi-turn drift).",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "APP-04.3, APP-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM APP-04.3, APP-05.2",
              "rationale": "Adversarially red-team and evaluate the agent before launch maps to AISMM control(s) APP-04.3, APP-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Anthropic",
          "Microsoft",
          "OpenAI"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-finbot-ctf",
          "ms-failure-taxonomy",
          "anthropic-attack-navigator",
          "agentdojo",
          "promptfoo",
          "aismm",
          "ms-pyrit"
        ],
        "implementation": {
          "pattern": "Before launch the agent is put through adversarial red-teaming and agentic eval benchmarks, multi-turn goal-hijack, tool-misuse, and exfiltration scenarios, with results measured against thresholds, not vibes.",
          "steps": [
            "Run red-team suites and agentic eval benchmarks (e.g. AgentDojo, FinBot CTF) covering hijack, tool misuse, and exfiltration.",
            "Include multi-turn scenarios that test goal drift over a session, not single prompts.",
            "Measure attack-success-rate against a launch threshold.",
            "Feed findings back into controls before launch."
          ],
          "anti_patterns": [
            "single-prompt testing that misses multi-turn drift",
            "red-teaming with no pass/fail threshold",
            "treating a clean demo as evidence of safety"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm a red-team plan exists covering multi-turn hijack, tool misuse, and exfiltration, with defined pass thresholds.",
              "ref": "ms-failure-taxonomy"
            }
          ],
          "runtime_test": [
            {
              "text": "Execute the red-team/eval suite and report attack-success-rate vs threshold; launch is blocked if the threshold is exceeded.",
              "ref": "agentdojo"
            }
          ],
          "evidence": [
            {
              "text": "Pre-launch red-team report with scenarios, attack-success-rates, and the go/no-go decision.",
              "ref": "owasp-finbot-ctf"
            }
          ]
        },
        "lenses": {
          "engineering": "Wire AgentDojo/FinBot-style suites into the pre-launch pipeline with multi-turn scenarios.",
          "detection": "Reuse red-team scenarios as live detection content after launch (ties to RT-02).",
          "red_team": "This is your home turf, hijack, drift, tool-misuse, exfiltration, measured against a threshold.",
          "grc": "The pre-launch red-team report is a key release-readiness artifact.",
          "secops": "Knowing the agent's tested failure modes speeds triage when one shows up live."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "AS-02",
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "fail the build",
          "detail": "block the merge on a high-severity finding"
        },
        "enforcement_point": "CI pipeline running SAST + manifest scanning on every skill change, failing the build on high-severity findings.",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Statically analyze agent skills and manifests in CI",
        "plain": "Automatically scan every plug-in and its manifest for problems before it ships.",
        "threat": {
          "tags": [
            "ASI04"
          ],
          "desc": "Unverified plug-ins and manifests entering the pipeline are a supply-chain entry point for malicious code."
        },
        "standard": [
          "SAST",
          "manifest scanning",
          "dependency review"
        ],
        "mappings": {
          "aisvs": {
            "value": "C6.1.1 (malicious-code scanning of artifacts); C6.2.3 (build-gate on AI BOM completeness)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C6 Supply Chain Security",
              "rationale": "Static analysis of skills and manifests in CI is the AISVS malicious-code scanning and AI BOM build-gate.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.2 (pre-deployment testing); §2.1.1 (third-party skill supply-chain risk)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.2, §2.1.1",
              "rationale": "Statically analyze agent skills and manifests in CI maps to IMDA MGF pre-deployment testing; third-party skill supply-chain risk."
            }
          },
          "aicm": {
            "value": "AIS-05 (application security testing); CCC-02 (quality testing)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-05, CCC-02",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-05, CCC-02) correspond to \"Statically analyze agent skills and manifests in CI\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Manage functions",
              "rationale": "NIST AI RMF Map / Manage functions: establish context and identify and categorise the AI risks; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Statically analyze agent skills and manifests in CI\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI04 Agentic Supply Chain Compromise",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI04",
              "rationale": "Statically analyze agent skills and manifests in CI addresses OWASP ASI04 Agentic Supply Chain Compromise.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "DEV-03.3, DEV-04.1",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM DEV-03.3, DEV-04.1",
              "rationale": "Statically analyze agent skills and manifests in CI maps to AISMM control(s) DEV-03.3, DEV-04.1.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Microsoft (Agent Governance Toolkit)",
          "CrowdStrike"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-asi-2026",
          "ms-agent-governance-toolkit",
          "aismm",
          "cisa-sbom-ai"
        ],
        "implementation": {
          "pattern": "CI statically analyses agent skills and manifests, reviews dependencies, and fails the build on high-severity findings before anything reaches production. Pairs with signature verification (PT-03).",
          "steps": [
            "Run SAST and manifest scanning on every skill/tool change in CI.",
            "Review dependencies for known-vulnerable components.",
            "Fail the build on high-severity findings (a gate, not a warning).",
            "Verify signatures (PT-03) as part of the same pipeline."
          ],
          "anti_patterns": [
            "a scanner that runs but doesn't block merge",
            "skills added outside CI",
            "no dependency review on agent plug-ins"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm SAST/manifest scanning runs in CI and high-severity findings fail the build (a gate, not advisory).",
              "ref": "owasp-asi-2026"
            }
          ],
          "runtime_test": [
            {
              "text": "Submit a skill with a known-bad pattern and confirm CI blocks the merge.",
              "ref": "ms-agent-governance-toolkit"
            }
          ],
          "evidence": [
            {
              "text": "CI scan reports (SARIF) with commit SHA and the gate decision per build.",
              "unverified": true
            }
          ]
        },
        "lenses": {
          "engineering": "Add SAST + manifest scanning as a blocking CI gate on every skill change.",
          "detection": "Surface new high-severity CI findings to the security team.",
          "red_team": "Try to slip a malicious skill past CI with an obfuscated pattern.",
          "grc": "CI scan reports with commit SHA evidence supply-chain testing before release.",
          "secops": "Blocking bad skills at CI keeps them out of production entirely."
        },
        "maturity": {
          "current": null,
          "target": "enforced"
        },
        "coverage_note": ""
      },
      {
        "id": "AS-03",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/EV-01",
            "id": "EV-01",
            "name": "Pre-Deployment Evaluation Gate",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "autonomy",
          "irreversibility"
        ],
        "response": {
          "lever": "block release",
          "detail": "block any deploy that regresses against the safety baseline"
        },
        "enforcement_point": "Release gate running the adversarial evaluation suite on every deployment, blocking regressions against the baseline.",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Gate releases on continuous adversarial validation",
        "plain": "Re-test for safety on every release, because agent behaviour drifts over time.",
        "threat": {
          "tags": [],
          "desc": "Emergent behaviour changes the risk profile run to run; a training-time audit doesn't satisfy a runtime-risk requirement."
        },
        "standard": [
          "eval gates",
          "continuous adversarial validation",
          "EU AI Act Art. 9 risk management"
        ],
        "mappings": {
          "aisvs": {
            "value": "C11.1.2 (alignment suite on every release); C11.1.5 (regression-flagging evaluator); C3.2.3 (re-eval on model or routing change)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C11 Adversarial Robustness; C3 Model Lifecycle Management",
              "rationale": "Gating releases on continuous adversarial validation is the AISVS alignment suite per release with regression flagging.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.3 (continuous testing post-deployment; guard against model drift)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.3",
              "rationale": "Gate releases on continuous adversarial validation maps to IMDA MGF continuous testing post-deployment; guard against model drift.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "CCC-04 (unauthorized change protection)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: CCC-04",
              "rationale": "These CSA AICM v1.1 control(s) (CCC-04) correspond to \"Gate releases on continuous adversarial validation\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure / Manage functions",
              "rationale": "NIST AI RMF Measure / Manage functions: analyse, assess, benchmark, and monitor the AI risks and impacts; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Gate releases on continuous adversarial validation\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "EU AI Act Art. 9; ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Continuous validation (release gate)",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-nhi-2025",
              "section": "OWASP ",
              "rationale": "Gate releases on continuous adversarial validation addresses OWASP Continuous validation (release gate)."
            }
          },
          "aismm": {
            "value": "MOD-05.1, DEV-03.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MOD-05.1, DEV-03.3",
              "rationale": "Gate releases on continuous adversarial validation maps to AISMM control(s) MOD-05.1, DEV-03.3.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Google / DeepMind"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "deepmind-ai-control",
          "eu-ai-act-art9"
        ],
        "implementation": {
          "pattern": "Adversarial validation runs as a release gate on every deployment, not once at training time. A regression in safety evals blocks the release, matching EU AI Act Article 9's continuous risk-management duty for high-risk AI systems (and sound governance practice for lower-risk agents).",
          "steps": [
            "Run the adversarial/eval suite as a gate on each release.",
            "Block releases that regress against the safety baseline.",
            "Map the gate to EU AI Act Art. 9 continuous risk management (a direct obligation for high-risk AI systems, voluntary hardening otherwise).",
            "Re-run after model or prompt changes, not just code changes."
          ],
          "anti_patterns": [
            "a one-time pre-launch audit treated as permanent",
            "eval results that don't block release",
            "ignoring drift from model/prompt updates"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm adversarial validation gates every release and a safety regression blocks it.",
              "ref": "eu-ai-act-art9"
            }
          ],
          "runtime_test": [
            {
              "text": "Introduce a deliberate safety regression and confirm the release gate blocks it.",
              "ref": "deepmind-ai-control"
            }
          ],
          "evidence": [
            {
              "text": "Per-release eval-gate results with the baseline comparison and go/no-go decision.",
              "ref": "deepmind-ai-control"
            }
          ]
        },
        "lenses": {
          "engineering": "Make the eval suite a blocking release gate; re-run on model/prompt changes.",
          "detection": "Trend eval scores release-over-release to catch slow drift.",
          "red_team": "Confirm a planted regression is actually caught by the gate.",
          "grc": "Per-release eval results map to EU AI Act Art. 9 continuous risk management.",
          "secops": "Catching regressions pre-release keeps unsafe behaviour out of production."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": ""
      },
      {
        "id": "AS-04",
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "External bug-bounty program scoped explicitly to agentic abuse, feeding findings back into AS-01.",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Run a bug-bounty / vulnerability reward program for agentic abuse",
        "plain": "Pay outside researchers to find the abuse paths your own testing missed.",
        "threat": {
          "tags": [],
          "desc": "Abuse and safety risks that standard penetration testing misses, prompt injection that hijacks an agent, data exfiltration, harmful autonomous actions."
        },
        "standard": [
          "safety bug bounty",
          "AI vulnerability reward program"
        ],
        "mappings": {
          "aicm": {
            "value": "TVM (Threat & Vulnerability Management — Security Testing)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: ",
              "rationale": "These CSA AICM v1.1 control(s) () correspond to \"Run a bug-bounty / vulnerability reward program for agentic abuse\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Measure function",
              "rationale": "NIST AI RMF Measure function: analyse, assess, benchmark, and monitor the AI risks and impacts. \"Run a bug-bounty / vulnerability reward program for agentic abuse\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Crowdsourced abuse discovery",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-nhi-2025",
              "section": "OWASP ",
              "rationale": "Run a bug-bounty / vulnerability reward program for agentic abuse addresses OWASP Crowdsourced abuse discovery."
            }
          }
        },
        "implementers": [
          "OpenAI",
          "Google"
        ],
        "frameworks": [
          "CSA AICM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "AWS Scoping"
        ],
        "sources": [
          "openai-bug-bounty"
        ],
        "implementation": {
          "pattern": "A safety-focused bug-bounty program invites external researchers to find agentic abuse paths, prompt-injection hijacks, exfiltration, harmful autonomous actions, with rewards scaled to impact. (Scope differs by program: OpenAI's Safety Bug Bounty explicitly covers agentic prompt injection and exfiltration; Google routes prompt injection and jailbreaks through its abuse channels, not the core AI VRP.)",
          "steps": [
            "Stand up a safety bug-bounty with explicit agentic-abuse scope.",
            "Reward prompt-injection hijacks, data exfiltration, and harmful autonomous actions.",
            "Feed validated reports back into controls and red-team scenarios."
          ],
          "anti_patterns": [
            "a bounty scoped only to classic appsec, excluding agent abuse",
            "no path from report to control improvement",
            "treating safety reports as out of scope"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm the bug-bounty scope explicitly includes agentic abuse (injection, exfiltration, harmful autonomous actions).",
              "ref": "openai-bug-bounty"
            }
          ],
          "runtime_test": [
            {
              "text": "Track that submitted agentic-abuse reports are reproduced and resolved, and feed them into AS-01 scenarios.",
              "ref": "openai-bug-bounty"
            }
          ],
          "evidence": [
            {
              "text": "Bug-bounty program scope and a log of agentic-abuse reports with remediation status.",
              "ref": "openai-bug-bounty"
            }
          ]
        },
        "lenses": {
          "engineering": "Fold validated bounty findings into fixes and regression tests.",
          "detection": "Turn reported abuse paths into detection content.",
          "red_team": "External researchers extend your own red-team coverage, triage and reproduce their reports.",
          "grc": "A scoped bounty + remediation log evidences ongoing external assurance.",
          "secops": "Bounty reports are early warning of abuse paths before they're exploited at scale."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": ""
      },
      {
        "id": "AS-05",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/EV-02",
            "id": "EV-02",
            "name": "Fitness, Safety, Reliability and Policy-Conformance Evaluation",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "autonomy"
        ],
        "enforcement_point": "Model producer's frontier-capability evaluation before release; for consumers, a version-pinning release gate.",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Study frontier offensive capability before public release",
        "plain": "Check whether a powerful new model can find and exploit vulnerabilities before you ship it.",
        "threat": {
          "tags": [],
          "desc": "Models approaching expert-human level at finding and exploiting vulnerabilities are a release-gating risk. Frontier labs converge on studying this before release, treating the agent itself as a potential insider threat and not assuming alignment is perfect."
        },
        "standard": [
          "pre-release red team",
          "control evaluations",
          "staged release"
        ],
        "mappings": {
          "aicm": {
            "value": "MDS-12 (open model risk assessment); MDS-06 (adversarial attack analysis)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: MDS-12, MDS-06",
              "rationale": "These CSA AICM v1.1 control(s) (MDS-12, MDS-06) correspond to \"Study frontier offensive capability before public release\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Measure functions",
              "rationale": "NIST AI RMF Map / Measure functions: establish context and identify and categorise the AI risks; analyse, assess, benchmark, and monitor the AI risks and impacts. \"Study frontier offensive capability before public release\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.5.2 (AI system impact assessment process)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "Frontier capability assessment",
            "status": "indicative",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-nhi-2025",
              "section": "OWASP ",
              "rationale": "Study frontier offensive capability before public release addresses OWASP Frontier capability assessment."
            }
          },
          "aismm": {
            "value": "MOD-02.2, RSK-05.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MOD-02.2, RSK-05.2",
              "rationale": "Study frontier offensive capability before public release maps to AISMM control(s) MOD-02.2, RSK-05.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "Anthropic",
          "Google",
          "OpenAI"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "AWS Scoping"
        ],
        "sources": [
          "anthropic-glasswing",
          "deepmind-agi-safety",
          "openai-preparedness-v2",
          "aismm"
        ],
        "implementation": {
          "pattern": "Before public release, frontier offensive capability is studied through pre-release red-teaming and control evaluations, with staged release and deployment gating tied to tracked-risk thresholds (e.g. OpenAI Preparedness Framework). Anthropic's Project Glasswing is framed defensively, studying capability to secure critical software.",
          "steps": [
            "Evaluate the model's offensive/vuln-finding capability before public release.",
            "Gate deployment on tracked-risk thresholds (Preparedness Framework v2).",
            "Stage the release and expand access as evidence accrues.",
            "Treat the agent as a potential insider threat; don't assume alignment is perfect."
          ],
          "anti_patterns": [
            "full public release with no frontier-capability assessment",
            "deployment gating with no defined risk threshold",
            "assuming alignment removes the need for control evaluations"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm a pre-release frontier-capability evaluation and tracked-risk deployment thresholds exist.",
              "ref": "openai-preparedness-v2"
            }
          ],
          "runtime_test": [
            {
              "text": "Run control evaluations against the model's offensive capability and confirm release is gated on the threshold.",
              "ref": "deepmind-agi-safety"
            }
          ],
          "evidence": [
            {
              "text": "Frontier-capability assessment and the deployment-gating decision against the threshold.",
              "ref": "openai-preparedness-v2"
            }
          ]
        },
        "lenses": {
          "engineering": "Build staged-release controls tied to risk thresholds.",
          "detection": "Watch for capability-jump signals that should re-trigger assessment.",
          "red_team": "Probe the model's vuln-finding/exploit capability pre-release as a control evaluation.",
          "grc": "Frontier assessments + gating decisions evidence responsible release.",
          "secops": "Knowing a model's offensive ceiling informs how tightly to monitor it in production."
        },
        "maturity": {
          "current": null,
          "target": "manual"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "AS-06",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/LI-02",
            "id": "LI-02",
            "name": "Model Provenance Chain",
            "rel": "depends-on"
          },
          {
            "domain": "model",
            "uri": "apeiris://model/controls/LI-05",
            "id": "LI-05",
            "name": "Training Data Lineage Pointer",
            "rel": "depends-on"
          }
        ],
        "tiers": [
          "data-sensitivity"
        ],
        "enforcement_point": "Artifact / model registry at build time: weight signing (Sigstore / OpenSSF) and the ML-BOM, separate from app manifests.",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Verify model-weights and training-data provenance before load",
        "plain": "Make sure the model itself, and the data it learned from, is genuine and unaltered, not just the plug-ins.",
        "threat": {
          "tags": [
            "ASI04"
          ],
          "desc": "Skill-signing (PT-03, AS-02) protects plug-ins, but a poisoned or swapped base model bypasses all of it, a backdoor can live in the weights, not the manifest. Training-data poisoning is baked into the model and is distinct from runtime memory poisoning."
        },
        "standard": [
          "model signing (OpenSSF OMS / Sigstore model-transparency)",
          "ML-BOM",
          "training-data provenance",
          "verify-gate before load",
          "CISA SBOM for AI minimum elements (7 clusters)"
        ],
        "mappings": {
          "aisvs": {
            "value": "C3.1.3 (verify signatures at model load); C6.1.3 (artifact integrity verification); C6.2.1 (AI BOM data provenance)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C3 Model Lifecycle Management; C6 Supply Chain Security",
              "rationale": "Verifying weights and data provenance is the AISVS signature verification at load and AI BOM data provenance.",
              "verified_on": "2026-06-24"
            }
          },
          "aicm": {
            "value": "MDS-09 (model signing / ownership verification); MDS-08 (model integrity)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: MDS-09, MDS-08",
              "rationale": "These CSA AICM v1.1 control(s) (MDS-09, MDS-08) correspond to \"Verify model-weights and training-data provenance before load\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Manage",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Manage functions",
              "rationale": "NIST AI RMF Map / Manage functions: establish context and identify and categorise the AI risks; prioritise and act on the identified AI risks, treating, responding, recovering, and allocating resources. \"Verify model-weights and training-data provenance before load\" is a corresponding risk-treatment activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.7.5 (data provenance)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI04 Supply Chain (model layer); LLM03:2025 Supply Chain; LLM04:2025 Data and Model Poisoning",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI04, LLM03, LLM04",
              "rationale": "Verify model-weights and training-data provenance before load addresses OWASP ASI04 Supply Chain (model layer); LLM03:2025 Supply Chain; LLM04:2025 Data and Model Poisoning.",
              "verified_on": "2026-06-22"
            }
          },
          "aismm": {
            "value": "MOD-04.1, DEV-04.2",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM MOD-04.1, DEV-04.2",
              "rationale": "Verify model-weights and training-data provenance before load maps to AISMM control(s) MOD-04.1, DEV-04.2.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "OpenSSF",
          "Sigstore",
          "Google (SAIF)"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "AWS Scoping"
        ],
        "sources": [
          "owasp-llm-2025",
          "openssf-model-signing",
          "google-saif2",
          "aismm",
          "cisa-sbom-ai"
        ],
        "matrix_thesis": false,
        "implementation": {
          "pattern": "Model weights are cryptographically signed and verified before load (OpenSSF Model Signing / Sigstore model-transparency), with an ML-BOM and signed provenance binding the weights to their training context. Training and fine-tuning data carry provenance and validation so poisoning at the data layer is caught.",
          "steps": [
            "Sign model artifacts/weights and verify the signature before load.",
            "Maintain an ML-BOM and provenance binding weights to training context.",
            "Validate training/fine-tuning data provenance to catch data-layer poisoning.",
            "Make verification a hard gate, refuse to load an unverified or swapped model.",
            "Re-verify when the provider, model version, route, quantization, or safety configuration changes underneath an approved deployment, and gate the change behind regression tests and re-approval (provider and model drift).",
            "Generate an AI-BOM/SBOM covering CISA’s seven minimum element clusters: SBOM metadata, system-level properties, model components (hashes, architecture, fine-tuning state), dataset properties (lineage, sensitivities), security properties (guardrails, filters), infrastructure components, and KPIs."
          ],
          "anti_patterns": [
            "signing skills but never the base model",
            "loading model weights with no signature check",
            "no provenance on training/fine-tuning data",
            "treating an approved model as static when the provider can change its version, route, or safety configuration underneath it"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm model weights are signed and verified before load (OMS/Sigstore), with an ML-BOM and training-data provenance.",
              "ref": "openssf-model-signing"
            }
          ],
          "runtime_test": [
            {
              "text": "Attempt to load an unsigned or tampered model artifact; the verify-gate must refuse it.",
              "ref": "openssf-model-signing"
            }
          ],
          "evidence": [
            {
              "text": "Model signature-verification records, the ML-BOM, and training-data provenance attestations.",
              "ref": "openssf-model-signing"
            }
          ]
        },
        "lenses": {
          "engineering": "Add model-signature verification (OMS/Sigstore) as a hard gate before load; keep an ML-BOM.",
          "detection": "Alert on attempts to load an unsigned or signature-mismatched model.",
          "red_team": "Try to swap in a backdoored model or poison the training/fine-tune data.",
          "grc": "Model provenance + ML-BOM evidence supply-chain integrity down to the weights.",
          "secops": "Weight verification stops a poisoned model from ever reaching production."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "AS-07",
        "cross_domain": [
          {
            "domain": "model",
            "uri": "apeiris://model/controls/BH-04",
            "id": "BH-04",
            "name": "Behavioral Boundary Performance Testing",
            "rel": "composes-with"
          }
        ],
        "tiers": [
          "external-reach"
        ],
        "response": {
          "lever": "block load",
          "detail": "block a skill whose real capabilities exceed or contradict its declaration"
        },
        "enforcement_point": "Behavioral static-analysis gate (AST parsing of the skill) at load time, blocking capability that exceeds the declaration.",
        "readiness": "emerging",
        "layer": "assurance",
        "plane": "lifecycle",
        "name": "Verify a skill does what it declares (behavioral integrity)",
        "plain": "Check that a plug-in actually does what its description says, not just that it is signed and clean.",
        "threat": {
          "tags": [
            "ASI04",
            "ASI02"
          ],
          "desc": "Signing proves a skill is genuine and unaltered (PT-03) and scanning catches known-bad patterns (AS-02), but neither proves the skill does what it declares. A study of 49,943 skills found roughly 80% deviate from their declared behavior (18.9% from adversarial intent), and 5% carry multi-stage attack chains hidden inside legitimate-looking skills, declaring read a file but actually reading the file and exfiltrating credentials or opening a shell."
        },
        "standard": [
          "behavioral integrity verification (declared vs actual capability)",
          "static analysis + capability extraction over a shared taxonomy"
        ],
        "mappings": {
          "aisvs": {
            "value": "C6.1.4 (behavioral acceptance testing); C9.3.4 (enforce manifest-declared behavior at runtime)",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aisvs",
              "section": "AISVS v1.0, C6 Supply Chain Security; C9 Orchestration & Agentic Action",
              "rationale": "Verifying a skill does what it declares is the AISVS behavioral acceptance testing and runtime manifest enforcement.",
              "verified_on": "2026-06-24"
            }
          },
          "mgf": {
            "value": "§2.3.2 (test tool-calling correctness); §2.1.1 (third-party skill risk)",
            "status": "indicative",
            "fit": "adjacent",
            "evidence": {
              "ref": "imda-mgf",
              "section": "IMDA MGF §2.3.2, §2.1.1",
              "rationale": "Verify a skill does what it declares (behavioral integrity) maps to IMDA MGF test tool-calling correctness; third-party skill risk."
            }
          },
          "aicm": {
            "value": "AIS-05 (application security testing); STA-09 (service bill of material)",
            "status": "verified",
            "fit": "partial",
            "evidence": {
              "ref": "csa-aicm",
              "section": "AICM v1.1: AIS-05, STA-09",
              "rationale": "These CSA AICM v1.1 control(s) (AIS-05, STA-09) correspond to \"Verify a skill does what it declares (behavioral integrity)\"; ids verified against the AICM v1.1 catalog (the IAM/AIS/LOG/STA/TVM domains renumbered from v1.0.3).",
              "verified_on": "2026-06-27"
            }
          },
          "aismm": {
            "value": "DEV-03.3, DEV-04.1, APP-04.3",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "aismm",
              "section": "CSA AISMM DEV-03.3, DEV-04.1, APP-04.3",
              "rationale": "Verify a skill does what it declares (behavioral integrity) maps to AISMM control(s) DEV-03.3, DEV-04.1, APP-04.3.",
              "verified_on": "2026-06-22"
            }
          },
          "nist": {
            "value": "AI RMF: Map, Measure",
            "status": "verified",
            "fit": "adjacent",
            "evidence": {
              "ref": "nist-ai-rmf",
              "section": "Map / Measure functions",
              "rationale": "NIST AI RMF Map / Measure functions: establish context and identify and categorise the AI risks; analyse, assess, benchmark, and monitor the AI risks and impacts. \"Verify a skill does what it declares (behavioral integrity)\" is a corresponding measurement and monitoring activity.",
              "verified_on": "2026-06-27"
            }
          },
          "iso": {
            "value": "ISO/IEC 42001 A.6.2.4 (AI system verification and validation)",
            "status": "verified",
            "fit": "adjacent"
          },
          "owasp": {
            "value": "ASI04 Supply Chain; ASI02 Tool Misuse",
            "status": "verified",
            "fit": "direct",
            "evidence": {
              "ref": "owasp-asi-2026",
              "section": "OWASP ASI04, ASI02",
              "rationale": "Verify a skill does what it declares (behavioral integrity) addresses OWASP ASI04 Supply Chain; ASI02 Tool Misuse.",
              "verified_on": "2026-06-22"
            }
          }
        },
        "implementers": [
          "framework-level"
        ],
        "frameworks": [
          "CSA AICM",
          "CSA AISMM",
          "NIST",
          "ISO / Reg",
          "OWASP",
          "IMDA MGF",
          "AWS Scoping"
        ],
        "sources": [
          "biv-skills",
          "owasp-asi-2026",
          "aismm"
        ],
        "implementation": {
          "pattern": "Before a skill is trusted, and on each update, its actual behavior is verified against its declared capabilities: static code analysis extracts what the skill really does (filesystem, credential, shell, network access) and compares it to its description over a shared capability taxonomy. Skills whose real capabilities exceed or contradict their declaration are blocked or flagged.",
          "steps": [
            "Extract each skill’s actual capabilities (filesystem, credential, shell, network) via static analysis.",
            "Compare actual vs declared capabilities over a shared taxonomy; flag or block description-implementation gaps.",
            "Treat capability escalation beyond the declaration as adversarial until proven otherwise.",
            "Re-verify on every skill update (ties to PT-03 signing and AS-02 static analysis)."
          ],
          "anti_patterns": [
            "trusting a skill because it is signed (PT-03) without checking it does what it claims",
            "approving a skill on its description alone",
            "no re-verification when a skill updates"
          ]
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm skills are behaviorally verified (declared vs actual capability) before trust and on update, not only signed and pattern-scanned.",
              "ref": "biv-skills"
            }
          ],
          "runtime_test": [
            {
              "text": "Submit a skill that declares a narrow capability but implements a hidden credential or shell exfil step; confirm the capability-diff flags or blocks it.",
              "ref": "biv-skills"
            }
          ],
          "evidence": [
            {
              "text": "Capability-diff audit report per skill (declared vs actual capabilities), retained with the skill registry.",
              "ref": "biv-skills"
            }
          ]
        },
        "lenses": {
          "engineering": "Diff each skill’s actual capabilities (static analysis) against its declaration; block capability escalation; re-run on update.",
          "detection": "Alert when a skill’s runtime behavior exceeds its declared capabilities.",
          "red_team": "Ship a skill that declares read-file but also reads credentials and opens a shell; see if the capability-diff catches it.",
          "grc": "Capability-diff audit reports evidence that skills were verified to do what they declare.",
          "secops": "Behavioral verification catches hidden multi-stage attack chains in legitimate-looking skills."
        },
        "maturity": {
          "current": null,
          "target": "automated"
        },
        "coverage_note": "",
        "star_ai": true
      },
      {
        "id": "AS-08",
        "cross_domain": [
          {
            "domain": "data",
            "uri": "apeiris://data/controls/DV-08",
            "id": "DV-08",
            "name": "Data Governance Attestation Production",
            "rel": "composes-with"
          }
        ],
        "layer": "assurance",
        "plane": "both",
        "name": "Harden and assure the security control plane as tier-zero infrastructure",
        "plain": "The tools that enforce agent security, gateways, policy engines, credential brokers, approval systems, and audit stores, are themselves a high-value target. Treat them as tier-zero: isolate, monitor, access-control, make tamper-evident, and test them like the assets they protect.",
        "matrix_thesis": true,
        "thesis_type": "compensating",
        "readiness": "emerging",
        "coverage_note": "gap3",
        "tiers": [
          "autonomy",
          "external-reach",
          "irreversibility",
          "data-sensitivity"
        ],
        "enforcement_point": "The security control plane itself (agent gateways, policy engines, credential/token brokers, approval and audit services) administered as a separate tier-zero zone, not co-resident with the agents it governs.",
        "threat": {
          "desc": "An attacker who compromises the security layer itself, the agent gateway, the policy engine, the credential broker, the approval workflow, or the audit store, can disable, bypass, or forge every other control at once. The matrix names this as an open gap: securing the security layer.",
          "tags": [
            "security-layer compromise",
            "control-plane bypass",
            "tier-zero"
          ]
        },
        "standard": [
          "tier-zero / zero-trust hardening of the enforcement infrastructure",
          "separation of duties between the control plane and the agents it governs",
          "tamper-evident audit for the control plane (builds on GV-02)"
        ],
        "maturity": {
          "target": "enforced",
          "current": null
        },
        "implementers": [],
        "mappings": {},
        "sources": [
          "ms-agent365",
          "deepmind-ai-control",
          "cosai-oasis"
        ],
        "implementation": {
          "pattern": "Inventory the components that make agent-security decisions or hold their evidence, gateways, MCP/A2A brokers, policy engines, credential and token brokers, approval/HITL services, and audit/log stores, and run them as tier-zero infrastructure: isolated from the agents they govern, access-controlled with separation of duties, continuously monitored, tamper-evident, and tested adversarially. The control plane must not be reachable or modifiable by the very agents it constrains.",
          "steps": [
            "Inventory every control-plane component (gateways, brokers, policy engines, approval services, audit stores) and label it tier-zero.",
            "Isolate the control plane from the agent runtime: separate identities, networks, and administrative boundaries so a compromised agent cannot reach or reconfigure it.",
            "Enforce separation of duties and least privilege on control-plane administration; no single agent, operator, or service can both act and silence the controls.",
            "Make the control plane tamper-evident: hash-chain or externally anchor its config and audit stores (builds on GV-02) so changes are detectable.",
            "Monitor the control plane as a high-value target (its own RT-01/RT-04 telemetry) and adversarially test it (its own AS-01 red-team) as part of every release."
          ],
          "anti_patterns": [
            "the policy engine, broker, or audit store running inside the same trust boundary as the agents it governs",
            "agents or their operators able to edit policy, mint their own tokens, or rewrite the audit log",
            "treating the security layer as trusted-by-default and never testing or monitoring it"
          ]
        },
        "response": {
          "lever": "Freeze the control plane",
          "detail": "On suspected control-plane compromise, fail closed: revoke control-plane credentials, freeze policy changes, and fall back to a known-good policy/audit snapshot before resuming agent operations."
        },
        "lenses": {
          "engineering": "Stand up the gateways, brokers, policy engines, and audit stores as separately-administered tier-zero services with their own identities and networks.",
          "detection": "Alert on any change to policy, token issuance, or audit configuration, and on any agent identity reaching a control-plane endpoint it should never touch.",
          "red_team": "Attack the security layer directly: try to disable logging, mint tokens, edit policy, or have a governed agent reach the policy engine or audit store.",
          "grc": "Evidence that the control plane is inventoried, access-controlled with separation of duties, tamper-evident, monitored, and tested as tier-zero.",
          "secops": "Run the freeze-the-control-plane playbook: revoke control-plane credentials, freeze policy, restore a known-good snapshot, then resume."
        },
        "validation": {
          "design_check": [
            {
              "text": "Confirm every control-plane component (gateway, broker, policy engine, approval service, audit store) is inventoried, isolated from the agent runtime, and administered with separation of duties.",
              "unverified": true
            }
          ],
          "runtime_test": [
            {
              "text": "From a compromised-agent position, attempt to reach, reconfigure, or silence the policy engine, token broker, or audit store; all attempts must fail and be alerted.",
              "unverified": true
            }
          ],
          "evidence": [
            {
              "text": "Tamper-evident record (hash-chained or externally anchored) of control-plane configuration and access, plus the results of the adversarial test of the security layer.",
              "unverified": true
            }
          ]
        }
      }
    ],
    "cisa_coverage": [
      {
        "id": "Privilege",
        "title": "Privilege Risks",
        "desc": "Overly broad permissions let a compromised agent cause lateral harm.",
        "controls": [
          "IA-01",
          "IA-02",
          "IA-03",
          "IA-04",
          "EC-04",
          "GV-01"
        ]
      },
      {
        "id": "Design & Config",
        "title": "Design and Configuration Risks",
        "desc": "Unvetted third-party components, or static controls for dynamic workflows.",
        "controls": [
          "EC-09",
          "PT-02",
          "PT-03",
          "AS-02",
          "GV-04",
          "EC-10",
          "PT-08"
        ]
      },
      {
        "id": "Behavioural",
        "title": "Behavioral Risks",
        "desc": "Unpredictable behavior, prompt injection, or data poisoning.",
        "controls": [
          "RT-02",
          "RT-03",
          "PT-04",
          "PT-06",
          "EC-03"
        ]
      },
      {
        "id": "Structural",
        "title": "Structural Risks",
        "desc": "Cascading failures and broad attack surface from interconnected multi-agent workflows.",
        "controls": [
          "GV-03",
          "GV-06",
          "GV-08",
          "RT-07",
          "PT-01",
          "GV-11"
        ]
      },
      {
        "id": "Accountability",
        "title": "Accountability Risks",
        "desc": "Lack of auditability; hard to trace decision chains or assign responsibility.",
        "controls": [
          "GV-02",
          "RT-01",
          "GV-05",
          "IA-06",
          "GV-10"
        ]
      }
    ],
    "awsNote": "AWS's four agency scopes (1-4) align to this matrix's autonomy and irreversibility risk-driver tiers: the higher the scope, the more of these controls move from optional to mandatory. The six dimensions below map each AWS control area to the controls that satisfy it. AWS is mapped as a coverage view rather than a per-control column because its dimensions are coarser than a control catalog.",
    "threat_scenarios": [
      {
        "id": "indirect-injection",
        "title": "Indirect prompt injection",
        "desc": "A poisoned web page, document, or tool response carries instructions that hijack the agent's next action.",
        "controls": [
          "PT-08",
          "RT-02",
          "PT-04",
          "EC-07",
          "RT-03"
        ],
        "atlas": [
          "AML.CS0020",
          "AML.CS0035",
          "AML.CS0039"
        ]
      },
      {
        "id": "mcp-token-theft",
        "title": "MCP server or tool compromise",
        "desc": "A poisoned or untrusted MCP server or tool steals passed-through tokens, harvests credential files, or exfiltrates data through tool calls (confused deputy).",
        "controls": [
          "PT-02",
          "IA-02",
          "PT-07",
          "EC-01"
        ],
        "atlas": [
          "AML.CS0053",
          "AML.CS0054",
          "AML.CS0045"
        ]
      },
      {
        "id": "rag-poisoning",
        "title": "Poisoned RAG / retrieval",
        "desc": "A malicious entry in the knowledge base or vector store is retrieved into context and acted on.",
        "controls": [
          "EC-07",
          "EC-03",
          "RT-02"
        ],
        "atlas": [
          "AML.CS0024",
          "AML.CS0025"
        ]
      },
      {
        "id": "shadow-agent",
        "title": "Shadow agent",
        "desc": "An unmanaged agent with real access runs without the security team's knowledge.",
        "controls": [
          "IA-05",
          "IA-01",
          "GV-09"
        ],
        "atlas": [
          "AML.CS0048"
        ]
      },
      {
        "id": "autonomous-killchain",
        "title": "Autonomous cyber kill-chain",
        "desc": "An agent is wired with offensive tools and runs recon-to-exfiltration with minimal human steps (GTG-1002 style).",
        "controls": [
          "RT-06",
          "AS-05",
          "RT-04",
          "EC-02",
          "GV-06"
        ],
        "atlas": [
          "AML.CS0050",
          "AML.CS0051",
          "AML.CS0047"
        ]
      },
      {
        "id": "collusion",
        "title": "Multi-agent collusion",
        "desc": "Agents coordinate over authenticated channels in ways that look benign one at a time.",
        "controls": [
          "RT-07",
          "GV-03",
          "PT-01"
        ]
      },
      {
        "id": "trigger-spoof",
        "title": "Trigger spoofing",
        "desc": "A forged or replayed event starts an unauthorized autonomous run.",
        "controls": [
          "EC-10",
          "IA-01",
          "GV-01"
        ],
        "atlas": [
          "AML.CS0038",
          "AML.CS0055"
        ]
      },
      {
        "id": "denial-of-wallet",
        "title": "Denial of wallet",
        "desc": "A runaway or hijacked agent burns spend and API quota at machine speed.",
        "controls": [
          "EC-05",
          "GV-06",
          "EC-06"
        ],
        "atlas": [
          "AML.CS0030"
        ]
      },
      {
        "id": "memory-poison",
        "title": "Dormant memory poisoning",
        "desc": "A latent payload is seeded into long-term memory and triggers in a later session.",
        "controls": [
          "EC-03",
          "EC-07",
          "RT-02"
        ],
        "atlas": [
          "AML.CS0040"
        ]
      },
      {
        "id": "supply-chain",
        "title": "Tool / skill / model supply-chain compromise",
        "desc": "A weaponized or silently-updated skill, tool, or model enters the agent through its plug-ins or weights.",
        "controls": [
          "PT-03",
          "AS-02",
          "AS-07",
          "AS-06"
        ],
        "atlas": [
          "AML.CS0049",
          "AML.CS0041",
          "AML.CS0015",
          "AML.CS0031"
        ]
      },
      {
        "id": "exfil-via-tools",
        "title": "Data exfiltration via agent tools",
        "desc": "The agent is steered to send sensitive data out through a legitimate tool call.",
        "controls": [
          "RT-05",
          "EC-02",
          "EC-08",
          "PT-05"
        ],
        "atlas": [
          "AML.CS0037",
          "AML.CS0021",
          "AML.CS0029"
        ]
      },
      {
        "id": "agent-api-c2",
        "title": "Agent API as command and control",
        "desc": "An attacker turns an authorized LLM, assistant, or orchestrator API into a covert command-and-control channel, living off trusted AI traffic to bypass network egress controls.",
        "controls": [
          "RT-07",
          "RT-04",
          "IA-04",
          "EC-02",
          "GV-04"
        ],
        "atlas": [
          "AML.CS0042",
          "AML.CS0044"
        ]
      },
      {
        "id": "human-deception",
        "title": "Agent deception of humans",
        "desc": "The agent's output manipulates its own approver or impersonates a person.",
        "controls": [
          "GV-07",
          "GV-10",
          "GV-01"
        ]
      }
    ],
    "aws_coverage": [
      {
        "id": "Identity context",
        "title": "Identity context (authN / authZ)",
        "desc": "Who the agent is and what it is allowed to do, propagated and verified.",
        "controls": [
          "IA-01",
          "IA-02",
          "IA-03",
          "IA-04",
          "IA-05",
          "IA-06",
          "PT-01",
          "PT-02"
        ]
      },
      {
        "id": "Data, memory & state",
        "title": "Data, memory & state protection",
        "desc": "Protecting what the agent reads, remembers, and carries between steps.",
        "controls": [
          "EC-03",
          "EC-07",
          "EC-08",
          "PT-04",
          "RT-05",
          "GV-08"
        ]
      },
      {
        "id": "Audit & logging",
        "title": "Audit & logging",
        "desc": "A trustworthy, attributable record of what the agent did.",
        "controls": [
          "GV-02",
          "GV-09",
          "RT-01",
          "IA-06"
        ]
      },
      {
        "id": "Agent & FM controls",
        "title": "Agent & foundation-model controls",
        "desc": "Securing the model and the agent's own code, before and during use.",
        "controls": [
          "RT-02",
          "RT-03",
          "RT-08",
          "PT-03",
          "PT-08",
          "AS-01",
          "AS-02",
          "AS-03",
          "AS-04",
          "AS-05",
          "AS-06",
          "AS-07"
        ]
      },
      {
        "id": "Agency perimeters",
        "title": "Agency perimeters & policies",
        "desc": "The boundaries on what the agent can reach, spend, and do.",
        "controls": [
          "EC-01",
          "EC-02",
          "EC-04",
          "EC-05",
          "EC-06",
          "IA-04",
          "GV-01",
          "GV-04",
          "GV-06",
          "PT-05",
          "PT-06",
          "PT-07"
        ]
      },
      {
        "id": "Orchestration",
        "title": "Orchestration",
        "desc": "Coordinating multiple agents and stopping the whole system safely.",
        "controls": [
          "EC-09",
          "EC-10",
          "GV-11",
          "IA-03",
          "GV-03",
          "GV-05",
          "GV-07",
          "GV-10",
          "RT-04",
          "RT-06",
          "RT-07"
        ]
      }
    ],
    "aws_scopes": [
      {
        "scope": "Scope 1",
        "name": "No agency",
        "desc": "Read-only operations, human-initiated, predefined workflows.",
        "controls": [
          "IA-01",
          "GV-02"
        ]
      },
      {
        "scope": "Scope 2",
        "name": "Prescribed agency",
        "desc": "Limited change capability, gated by explicit human approval (human-in-the-loop).",
        "controls": [
          "GV-01",
          "IA-03",
          "GV-07"
        ]
      },
      {
        "scope": "Scope 3",
        "name": "Supervised agency",
        "desc": "Autonomous execution after a human starts it; watched live.",
        "controls": [
          "RT-01",
          "RT-03",
          "RT-04"
        ]
      },
      {
        "scope": "Scope 4",
        "name": "Full agency",
        "desc": "Fully autonomous, initiating activity on environmental triggers.",
        "controls": [
          "GV-06",
          "RT-04",
          "GV-03",
          "RT-07"
        ]
      }
    ],
    "lifecycle": [
      {
        "stage": "Continuous assurance",
        "layers": "AS",
        "note": "red-team, scan, and verify before ship, then re-prove on every change"
      },
      {
        "stage": "Control-plane auth & identity",
        "layers": "IA / PT",
        "note": "who the agent is and what it may do"
      },
      {
        "stage": "Data-plane sandbox execution",
        "layers": "EC",
        "note": "where it runs and what it can reach"
      },
      {
        "stage": "Continuous OS / supervisor observation",
        "layers": "RT",
        "note": "in-path runtime proxy: watch live and stop"
      }
    ]
  }
}