HomeCyber ResilienceAI DDR
Cyber Resilience / Source reference v1.1

The complete
engineering reference.

The supplied inter-agentic threat map, preserved for detailed reading: architecture, component exploitation, AI DDR workflow, reported scenarios, precursor controls and original sources.

19 harness components6 architectural planesAI DDR = AI Deviation Detection and ResponseSite v13.5.6 · Explorer v1.0.0
Source wording preserved; evidence classes clarified. This is the supplied reference v1.1, aligned by its author to Harness v13.4. Source statements such as “proven by” and “would have stopped” are the author's mappings and counterfactual control assessments, not independent certification. Three cases are research demonstrations; two are source-reported operational failures. The atlas separates them. Historic model and component versions are retained intentionally.
01 · Vernacular

The words an inter-agentic system is built from

The harness lab uses most of these terms. The rest are what the incident reports use. Each entry says what the thing is and why it is a propagation path.

Agentic vs inter-agentic

An agentic system is one model, one loop, its own tools. An inter-agentic system is a set of agents that can discover each other, invoke each other and hand work (and context, and credentials) between themselves. The second is the default shape vendors ship today: ServiceNow groups agents into a team and makes them discoverable by default; Salesforce reports an average of twelve agents per enterprise.

Why it propagates: every agent-to-agent edge is a path that authority and data can take without a human on it.

Harness

Everything around the model that decides what it can see, remember, call, change, delegate and prove. The lab's thirteen components (6.00–6.12) are the harness. The model is inference; the harness is authority.

Why it propagates: a harness misconfiguration is inherited by every task the harness runs, and by every agent that shares it.

Control plane

The components that decide what happens next: orchestrator / agent loop (6.02), context assembly (6.05), input / output guardrails (6.06). In an inter-agentic system the control plane also includes agent discovery, routing and recruitment logic.

Why it propagates: a control-plane decision made on poisoned context becomes a legitimate-looking instruction to every component downstream.

Data plane

Where content lives and moves: inputs and external content (6.01), RAG subsystem (6.03), memory and state (6.04), downstream systems (6.11). The lesson of every incident on this page is that the data plane carries instructions whether or not anyone intended it to.

Why it propagates: a record written by an outsider is read later by an insider's agent, under the insider's authority.

Identity plane

Who the agent is acting as and with what scope: credential broker (6.08), policy / authorization gate (6.07), delegated tokens, workload identity. The ATLAS term for the failure is credential relay through delegation chains; OWASP calls it identity and privilege abuse (ASI03).

Why it propagates: a recruited agent that inherits the invoking user's full privilege turns a reader agent's mistake into a writer agent's action.

Evidence plane

The independent record: runtime event producers, protected collector, observability and audit (6.12). Independent means the agent cannot be the only witness to what the agent did.

Why it propagates (when missing): an agent that fabricates its own test results is reporting on itself. Replit is the case.

Agent team

A set of agents that share a trust boundary and can invoke one another. In ServiceNow Now Assist, published agents are automatically placed in the same team and are discoverable by default, so a low-privilege summarizer and a high-privilege record editor are teammates unless someone separates them.

Why it propagates: team membership is an implicit grant. The least-trusted agent on the team sets the team's exposure.

Discovery / agent card / registry

The mechanism by which one agent learns what other agents and tools exist and what they can do. In A2A it is an agent card; in MCP it is the tool list; in a platform it is a registry flag. ATLAS tracks the attacker's side as Discover AI Agent Configuration (AML.T0084) and Discover AI Agent Runtime Capabilities (AML.T0133).

Why it propagates: discovery is how a hijacked agent finds a more capable one to recruit.

Recruitment / delegation

One agent invoking another to do what it cannot. The AppOmni research calls the attack a second-order prompt injection: the planted prompt never reaches the privileged agent directly; a benign agent carries it there. ATLAS: Autonomous AI Agent Communication, direct (AML.T0118.001).

Why it propagates: delegation moves the task and the context, and usually the identity, across the agent boundary in one call.

Tool / dispatcher / MCP server

A tool is a capability the agent can invoke; the dispatcher (6.10) is the privileged edge that executes it; an MCP server, plugin or skill (6.09) is how tools arrive. Tools are where a sentence becomes a system change.

Why it propagates: a tool result is untrusted content re-entering the context (AML.T0110.002), and a tool call is the exfiltration channel (AML.T0086).

Context window / context assembly

The single token stream the model reasons over. Context assembly (6.05) is the step where system instructions, user intent, retrieved passages, memory and tool results are concatenated. If they are not structurally delimited, the model cannot tell data from instruction.

Why it propagates: this is the exact point where a CRM field becomes a command.

Memory / thread / state

Persistent memory outlives the session; thread context lives for the conversation; state is the orchestrator's working record. ATLAS splits context poisoning into memory (AML.T0080.000) and thread (AML.T0080.001) because the persistence differs.

Why it propagates: poisoned memory re-enters every future decision without a new attack.

Guardrail vs authorization gate

A guardrail (6.06) filters content and is advisory to the orchestrator. An authorization gate (6.07) is an independent policy decision point the orchestrator cannot rewrite; denied actions do not reach the dispatcher. Filtering is not authorization.

Why it propagates (when confused): ServiceNow's built-in injection protection did not stop recruitment, because recruitment was an authorized feature.

Cross-configuration

Two configurations, each reasonable alone, that together open a path neither owner designed: an allowlisted domain that expired; a token scoped to all repos used by an agent that reads public issues; a dev session holding production credentials. The term is this page's; the pattern is in every incident below.

Why it propagates: nobody owns the seam, so nobody tests it.

Toxic flow / lethal trifecta

Private data access, exposure to untrusted content and an external communication channel in one agent session. Any two are survivable; all three are an exfiltration machine. Invariant Labs called the GitHub pattern a toxic agent flow; Simon Willison named the general case the lethal trifecta.

Why it propagates: an agent with the trifecta needs no vulnerability, only a sentence.

Blast radius / cascading failure

The set of systems a single compromised decision can reach before an independent control stops it. OWASP ASI08 (cascading failures) is the risk class; the lab's impact-containment perspective is the control objective.

Why it propagates: in an inter-agentic system the blast radius is the union of every teammate's tools.

Added with Harness v13.4

Six more terms: the lifecycle around the runtime

Harness v13.4 wraps the six runtime steps in a lifecycle: step 0, register and attest before activation, and step 7, contain, recover, review and retire. Six components (6.13–6.18) carry it. These are the words for them.

Lifecycle layer steps 0 and 7

Everything that has to be true before an agent is allowed to accept work, and everything that has to happen when a material warning fires or the approved use ends. Step 0 chains release attestation, evaluation, identity enrollment and an independent activation decision. Step 7 chains the response decision, credential revocation, observed stop state, recovery test, notice and recourse assessment, and retirement.

Why it propagates (when missing): an agent that was never registered cannot be inventoried, and an agent that is never retired keeps its grants after its owner has moved on.

Delegation envelope 6.13

The intersected scope a child agent receives from its parent: narrower than the parent's, with explicit expiry, destination and a shared budget. Identity & delegation maintains an accountable principal for each agent, its human owner and the chain of delegated authority, validates every hop, rejects scope expansion and propagates revocation to running children.

Why it propagates: a child that inherits an unrestricted copy of the parent's permissions is the ServiceNow recruitment path. An intersected envelope is the control that closes it.

Attestation / AI BOM 6.16

A registered record of the agent build, model reference, tool and extension set, prompt templates, policies and retrieval manifests, verified by signature and digest against trusted release records before use. Attestation here means a verified provenance and approval statement, not third-party certification.

Why it propagates (when missing): an unknown tool, a stale index or a substituted policy enters a trusted workflow while the model's name stays the same. A digest emitted by the workload can itself be falsely reported.

Budget as authority 6.17

Calls, tokens, elapsed time, provisioned resources and spend treated as bounded authority, reserved and reconciled at the dispatcher against an independent ledger, shared across retries and child agents rather than reset at each handoff.

Why it propagates: parallel children and retries can exceed approved exposure before any dashboard sees the total. A budget that resets at every delegation is a budget with no ceiling.

Independent interrupt 6.15

A human oversight console that gives a designated reviewer the evidence, consequence class and alternatives, with an approve, reject or interrupt path the agent does not control. Approval is bound to one action, target, policy version and expiry. Halt requests are tested through the execution and identity layers, and downstream effects are verified.

Why it propagates (when missing): an interruption mechanism the agent controls, or a reviewer who rubber-stamps, leaves consequential activity effectively unsupervised. Replit's code freeze was an instruction to the agent, not an interrupt outside it.

Decision record / recourse 6.18

A minimized, audience-appropriate record that connects an AI-assisted decision to a notice, a comprehensible explanation and a route for correction or contest, assembled from verified outcomes rather than raw traces.

Why it propagates: publishing raw traces exposes third-party data, prompts and security controls. A trace shows operations; it does not explain the decision's basis. Recourse is where a propagated error becomes visible to the person it reached.

02 · Architecture

Five planes, thirteen components, one trust boundary, and the v13.4 lifecycle plane around them

The harness lab's components grouped by the plane they belong to; Harness v13.4 adds a sixth plane of six lifecycle components (6.13–6.18) that operate before and after the runtime steps. In an inter-agentic deployment every plane is shared across agents, which is why a weakness in one agent's harness is a weakness in the team's.

Boundary untrusted

  • 6.01Inputs & external content: prompts, files, web, email, API and tool responses, and in an inter-agentic system, messages from other agents

Control plane decides

  • 6.02Orchestrator / agent loop, plus discovery, routing and recruitment logic
  • 6.05Context assembly
  • 6.06Input / output guardrails (advisory)
  • 6.00Generative model: inference, not authority

Data plane carries

  • 6.03RAG subsystem
  • 6.04Memory & state (thread, persistent, shared)
  • 6.11Sandbox / downstream systems

Identity & action plane enforces

  • 6.07Policy / authorization gate (independent)
  • 6.08Credential broker: scoped, expiring, per-call
  • 6.09Extensions / MCP / skills (supply chain)
  • 6.10Tool dispatcher (privileged edge)

Evidence plane proves

  • 6.12Observability & audit, fed by every producer in phases 1–5, feeding the SIEM / AI-DDR workflow: detect, contain, recover, govern

Lifecycle plane v13.4 · before and after runtime

  • 6.13Identity & delegation: authority lineage, intersected child scope, revocation propagation
  • 6.14Evaluation & conformance: tests, canaries and continuing quality bound to the exact configuration
  • 6.15Human oversight console: independent approve, reject or interrupt
  • 6.16AI BOM & attestation: registered release, verified digests, publisher identity
  • 6.17Authority & consumption: shared task budget reserved at dispatch
  • 6.18Transparency & recourse: minimized decision record, notice, contest

Harness v13.4 adds two steps around the six runtime steps. Step 0, register and attest before activation, runs 6.16 → 6.14 → 6.13 → 6.15 → 6.02: verify the exact release, let passed evaluation inform enrollment, name the owner and the bounded delegation, and make an independent activation decision. Step 7, contain, recover, review and retire, runs 6.12 → 6.15 → containment and recovery → 6.18 → retirement → 6.16: correlated evidence reaches an independent response owner, an approved interruption revokes or narrows credentials, verified effects inform notice and review, and verified retirement closes the registry so reactivation needs fresh approval. Within the runtime steps, 6.13 now sits in step 1 (validate the requesting principal), 6.15 in step 4 (consequence threshold triggers human review) and 6.17 in step 5 (reserve budget before dispatch).

Dashed: data, proposal or feedbackAmber: delegated authority or enforcementGreen: recorded evidence

What changes when the system is inter-agentic is not the list of components. It is that each agent brings its own copy of planes 1 through 4 and shares them through discovery and delegation, while the evidence plane is usually per-vendor or absent at the seams. The incidents below are, without exception, seam failures.

03 · Component exploitation map

What propagates through each component, and who has a name for it

One row per harness component. ATLAS IDs are from the current MITRE ATLAS technique catalogue; ASI IDs from the OWASP Top 10 for Agentic Applications 2026; LLM IDs from the OWASP Top 10 for LLM Applications 2025. The AI-DDR column is the evidence-plane signal that would reveal the exploitation while it is happening.

HoundBytes + Elastic security engineering overlay (demonstration): The added column pairs each harness attack surface with an illustrative detection predicate and a separate preventive/response control. These are proposed rule designs, not claims of deployed HoundBytes detections. KQL assumes custom ai.* fields normalized at ingest; fields and thresholds must be validated against actual OpenTelemetry spans, Elastic mappings, ECS-compatible fields, and available source telemetry. Elastic detections alert; blocking requires an inline policy gateway, tool dispatcher, credential broker, SOAR, or endpoint/network enforcement. Correlation across events should use trace.id, ai.agent.id, ai.run.id, and ai.action.id; single-event predicates below are starting points, not complete sequence rules.

ComponentWhat propagates through itMITRE ATLASOWASP AgenticOWASP LLMAI-DDR signal (6.12)Proven byHoundBytes / Elastic detection + mitigation
6.01Inputs & external contentInstructions disguised as data: a lead field, a public issue, a ticket description, a web page, another agent's message.AML.T0051.001 Indirect injection · AML.T0051.002 Triggered · AML.T0093 Prompt infiltration via public-facing app · AML.T0078 Drive-by · AML.T0129 Multimodal triggers · AML.T0134 AI-targeted cloakingASI01 Goal hijackLLM01 Prompt injectionProvenance tag = external on content that later precedes a tool call; injection-pattern hits at ingress; field size anomalies (42,000-char description)ForcedLeak, GitHub MCP, ServiceNowHB-AI-001 · Injection at untrusted ingress

Elastic KQL (illustrative): ai.event.action: "input_received" and ai.security.injection_score >= 0.8

Enforcement: Quarantine content; prevent promotion to instructions.

6.02Orchestrator / agent loopA manipulated plan: the loop selects tools, branches and teammates on the basis of poisoned context. Discovery and recruitment live here.AML.T0118.001 Direct agent communication · AML.T0124 Autonomous attack orchestration · AML.T0084.001 Discover tool definitions · AML.T0133 Discover runtime capabilities · AML.T0034.002 Agentic resource consumptionASI07 Insecure inter-agent communication · ASI08 Cascading failures · ASI10 Rogue agentsLLM06 Excessive agencyAgent-to-agent invocation depth above baseline; privileged agent invoked by a lower-privilege caller; loop budget or stop-condition breachesServiceNowHB-AI-002 · Runaway or redirected agent

Elastic KQL (illustrative): ai.event.action: "agent_step" and ai.agent.step_count > 25

Enforcement: Terminate run; enforce external step and cost budget.

6.03RAG subsystemPoisoned or over-shared knowledge that looks like normal retrieval; credentials that were indexed by accident.AML.T0070 RAG poisoning · AML.T0071 False RAG entry · AML.T0064 Gather RAG-indexed targets · AML.T0082 RAG credential harvesting · AML.T0085.000 Data from RAG databasesASI06 Memory & context poisoningLLM08 Vector & embedding weaknesses · LLM02 Sensitive disclosureRetrieval returning objects outside the caller's ACL or tenant; source IDs with no provenance; retrieval volume spikesAsanaHB-AI-003 · RAG authorization/provenance failure

Elastic KQL (illustrative): ai.event.action: "retrieval" and (ai.rag.acl_result: "deny" or ai.rag.provenance_verified: false)

Enforcement: Deny retrieval before context assembly; isolate index item.

6.04Memory & stateInstructions that persist: a poisoned memory re-enters every later decision; shared state leaks between principals.AML.T0080.000 Context poisoning: memory · AML.T0080.001 Thread · AML.T0094 Delayed execution of instructions · AML.T0092 Manipulate chat historyASI06 Memory & context poisoningLLM04 Data & model poisoningMemory writes originating from external-provenance content; TTL and write-authorization violations; memory reads across user boundariesAsana (state), Replit (fabricated state)HB-AI-004 · Cross-principal memory write

Elastic KQL (illustrative): ai.event.action: "memory_write" and ai.memory.owner_mismatch: true

Enforcement: Reject write; restore signed memory version.

6.05Context assemblyTrusted instructions and untrusted text collapsing into one token stream; safeguards silently truncated by overflow.AML.T0069.000 Discover special character sets · AML.T0068 Prompt obfuscation · AML.T0061 Prompt self-replication · AML.T0018.003 Modify prompt construction logicASI01 Goal hijackLLM01 · LLM07 System prompt leakageContext lineage showing external content adjacent to protected instructions; context-budget truncation eventsEvery incident on this pageHB-AI-005 · Context boundary integrity

Elastic KQL (illustrative): ai.event.action: "context_assembled" and ai.context.trust_boundary_violation: true

Enforcement: Rebuild context with untrusted content fenced.

6.06Input / output guardrailsNothing should propagate here, which is the problem: a filter the orchestrator can bypass, or that treats a feature as safe, lets prohibited actions through.AML.T0054 LLM jailbreak · AML.T0065 Prompt crafting · AML.T0077 LLM response renderingASI09 Human-agent trust exploitationLLM05 Improper output handlingOutputs carrying external references with encoded parameters; guardrail bypass-path tests failing; actions proceeding on a guardrail "allow" with no gate decisionForcedLeak, ServiceNowHB-AI-006 · Guardrail bypass / missing decision

Elastic KQL (illustrative): ai.event.action: "tool_execute" and not ai.guardrail.decision_id: *

Enforcement: Fail closed in dispatcher; alert on missing gate attestation.

6.07Policy / authorization gateWhen absent or rewritable, every proposal becomes an action. When present, this is where propagation stops.AML.T0081 Modify AI agent configuration · AML.T0132 Misconfigured or publicly exposed AI servicesASI03 Identity & privilege abuse · ASI02 Tool misuseLLM06 Excessive agencyMaterial actions with no gate decision record; gate rule-version changes; approvals issued by the orchestrator's own identityGitHub MCP, Replit, ServiceNowHB-AI-007 · Policy deny followed by execution

Elastic KQL (illustrative): ai.policy.decision: "deny" and ai.event.action: "tool_execute"

Enforcement: Block via OPA or dispatcher; revoke session.

6.08Credential brokerStanding privilege and inherited identity: the recruited agent acts as the user; one token spans every repository; dev holds prod keys.AML.T0083 Credentials from agent configuration · AML.T0098 Tool credential harvesting · AML.T0091.000 Application access token · AML.T0012 Valid accountsASI03 Identity & privilege abuseLLM02One credential used across more targets than the task scope; privileged tool calls under a delegated identity with no delegation recordGitHub MCP, ServiceNow, ReplitHB-AI-008 · Token scope anomaly

Elastic KQL (illustrative): ai.credential.scope_violation: true

Enforcement: Revoke token; issue scoped ephemeral credentials.

6.09Extensions / MCP / skillsCapability arriving with its own bugs and its own trust: a poisoned tool definition, a rug-pulled package, or a first-party MCP server with a tenant-isolation flaw.AML.T0110 AI agent tool poisoning (.000 definition, .001 implementation, .002 runtime response) · AML.T0010.005 Supply chain: agent tool · AML.T0109 Rug pull · AML.T0115.002 Publish poisoned tools · AML.T0111 Reputation inflationASI04 Agentic supply chain vulnerabilitiesLLM03 Supply chainTool definitions changing between sessions; unregistered MCP endpoints; tool responses carrying instruction patterns; cross-tenant object IDs in responsesAsana, GitHub MCPHB-AI-009 · Unattested extension execution

Elastic KQL (illustrative): ai.extension.attestation_valid: false and ai.event.action: "extension_load"

Enforcement: Disable MCP/skill; enforce signed allowlist.

6.10Tool dispatcherThe point where a sentence becomes deletion, exfiltration, publication, messaging or a privilege change.AML.T0053 AI agent tool invocation · AML.T0086 Exfiltration via tool invocation · AML.T0101 Data destruction via tool invocation · AML.T0085.001 Data from agent tools · AML.T0100 Agent clickbaitASI02 Tool misuse · ASI05 Unexpected code executionLLM06 Excessive agencyWrite or destructive tool calls whose arguments contain content from external-provenance context; tool calls to targets outside the task's declared scope; blanket auto-approval in effectGitHub MCP, Replit, ForcedLeakHB-AI-010 · High-risk tool invocation

Elastic KQL (illustrative): ai.event.action: "tool_execute" and ai.tool.risk_level: "high" and ai.approval.valid: false

Enforcement: Deny tool call and require independent approval.

6.11Sandbox / downstream systemsPersistent system change: the production database, the public pull request, the outbound email, the CRM record.AML.T0048 External harms · AML.T0025 Exfiltration via cyber means · AML.T0105 Escape to host · AML.T0122 Exploitation of remote servicesASI08 Cascading failuresLLM02 · LLM05Egress to allowlisted hosts whose registration lapsed; writes to public surfaces containing private lineage; production mutations from non-production identitiesReplit, ForcedLeak, GitHub MCPHB-AI-011 · Sandbox escape / forbidden egress

Elastic KQL (illustrative): ai.sandbox.egress_allowed: false or ai.sandbox.escape_detected: true

Enforcement: Isolate workload; block egress at network policy.

6.12Observability & auditWhen the agent is its own witness, fabricated results propagate as fact. Evidence must be produced by the dispatcher and the gate, not reported by the model.AML.T0067 Trusted output components manipulation · AML.T0067.000 Citations · AML.T0074 Masquerading · AML.T0092 Manipulate chat historyASI09 Human-agent trust exploitation · ASI10 Rogue agentsLLM09 MisinformationAgent claims (tests passed, rollback done) with no corroborating producer event; gaps in producer coverage; evidence integrity failuresReplitHB-AI-012 · Evidence chain gaps

Elastic KQL (illustrative): ai.event.action: "action_complete" and ai.audit.producer_receipt_present: false

Enforcement: Suspend automated closure; reconcile signed events.

6.00Generative modelHallucinated plans and compliant reasoning over whatever the harness hands it. The model is not the vulnerability in any incident here; it is the amplifier.AML.T0054 Jailbreak · AML.T0057 LLM data leakage · AML.T0056 Extract system prompt · AML.T0060 Publish hallucinated entitiesASI01LLM07 · LLM09 · LLM10 Unbounded consumptionModel and template version drift; eval threshold failures; grounding-check missesReplit (fabrication)HB-AI-000 · Model version or output deviation

Elastic KQL (illustrative): ai.model.approved: false or ai.eval.groundedness < 0.6

Enforcement: Route to approved model; hold output for evaluation.

Lifecycle components added in Harness v13.4
6.13Identity & delegationAuthority that broadens as it is handed down: a child agent inheriting an unrestricted copy of the parent's permissions, a stale grant outliving its owner's approval, a shared identity hiding who acted.AML.T0118.001 Direct agent communication · AML.T0091.000 Application access token · AML.T0083 Credentials from agent configuration · AML.T0012 Valid accounts · AML.T0103 Deploy AI agentASI03 Identity & privilege abuse · ASI07 Insecure inter-agent communicationLLM06A delegation hop whose child scope is not a subset of the parent's; a child still running after the owner's revocation; an action with no delegation chain back to a human ownerServiceNow, GitHub MCPHB-AI-013 · Delegation scope expansion

Elastic KQL (illustrative): ai.delegation.child_scope_exceeds_parent: true

Enforcement: Deny delegation; expire child credential.

6.14Evaluation & conformanceDegraded grounding, accuracy or bias hiding behind a stable model name; or a false drift alarm when an alias changes but the resolved deployment is still approved.AML.T0031 Erode AI model integrity · AML.T0020 Training data poisoning · AML.T0018.003 Modify prompt construction logic · AML.T0010.003 Supply chain: model · AML.T0067 Trusted output manipulationASI04 Supply chain · ASI10 Rogue agentsLLM04 Data & model poisoning · LLM09 MisinformationResolved model or deployment outside the approved set; evaluation suite, dataset or evaluator version drift; failed evaluations not routed to an independent release decisionReplit (no independent evaluation evidence)HB-AI-014 · Evaluation regression

Elastic KQL (illustrative): ai.eval.release_gate: "fail"

Enforcement: Block rollout; revert attested release.

6.15Human oversight consoleConsequential activity that is nominally supervised: rubber-stamp approvals, fatigued reviewers, or an interrupt the agent itself controls.AML.T0067 Trusted output manipulation · AML.T0073 Impersonation · AML.T0094 Delayed execution (acts after the approval window) · AML.T0100 Agent clickbait · AML.T0092 Manipulate chat historyASI09 Human-agent trust exploitationLLM09Approvals faster than the evidence could be read; approver identity equal to the agent's; an interrupt issued with no observed stop in execution or identity layers; approvals reused across actions or past expiryReplit (freeze was a prompt, not an interrupt), GitHub MCP (always-allow)HB-AI-015 · Invalid human approval

Elastic KQL (illustrative): ai.approval.valid: false and ai.event.action: "privileged_action"

Enforcement: Pause workflow; independent approval challenge.

6.16AI BOM & attestationCapability that was never registered or that changed after registration: an unknown tool, a stale index, a substituted policy, a rug-pulled package, all while the model's name stays the same.AML.T0010.005 Supply chain: agent tool · AML.T0109 Rug pull · AML.T0110 Tool poisoning · AML.T0115.002 Publish poisoned tools · AML.T0111 Reputation inflation · AML.T0081 Modify agent configuration · AML.T0002.002 Acquire agent configurationASI04 Agentic supply chainLLM03 Supply chainRuntime manifest digest differing from the registry; an MCP endpoint, tool or policy with no registry entry; a digest reported by the workload with no independent verificationAsana (new capability, no isolation evidence), ForcedLeak (expired domain inside an attested allowlist)HB-AI-016 · AIBOM attestation mismatch

Elastic KQL (illustrative): ai.asset.attestation_match: false

Enforcement: Quarantine artifact; require signed provenance.

6.17Authority & consumptionExposure that exceeds approval before anyone sees the total: parallel children, retries, delayed billing, an over-broad purchase tool, or a mass mutation with no transaction ceiling.AML.T0034.002 Agentic resource consumption · AML.T0034 Cost harvesting · AML.T0029 Denial of AI service · AML.T0048.000 Financial harm · AML.T0101 Data destruction via tool invocationASI08 Cascading failures · ASI10 Rogue agentsLLM10 Unbounded consumptionBudget reset at a delegation hop; concurrent reservations exceeding the task-family ceiling; dispatch with no ledger reservation; row-count or spend per action above the approved limitReplit (mass delete then ~4,000 inserts)HB-AI-017 · Delegated budget breach

Elastic KQL (illustrative): ai.budget.remaining < 0 or ai.budget.transaction_limit_exceeded: true

Enforcement: Stop spending and child-agent execution.

6.18Transparency & recourseEither no explanation reaches the affected person, or the explanation leaks: raw traces published with third-party data, prompts or security controls in them.AML.T0067.000 Citations manipulation · AML.T0130 Agent response biasing · AML.T0092 Manipulate chat history · AML.T0057 LLM data leakage · AML.T0077 Response renderingASI09 Human-agent trust exploitationLLM02 Sensitive disclosure · LLM09Decision records with no verified outcome behind them; explanations containing unredacted trace content; contest outcomes not linked back to the original decisionForcedLeak (record data in rendered output)HB-AI-018 · Unverified explanation / leakage

Elastic KQL (illustrative): ai.recourse.evidence_verified: false or ai.output.dlp_violation: true

Enforcement: Hold response; redact and require evidence link.

04 · Attack chain against the lab phases

Where each ATLAS tactic lands in the six-phase harness model

The lab asks whether an AI system can act only within delegated authority and prove that it did. Read top to bottom, this ladder is the adversary's view of the same six steps: what they need at each phase, which components they exploit, and what the evidence plane should emit.

Step 0 · v13.4Register and attest before activationResource development · Supply chain

Before runtime, the adversary's work is to get a capability into the registered release or to bypass registration altogether: a poisoned tool definition, a package that turns malicious after adoption, inflated trust signals, a modified configuration, a model whose alias hides a substituted deployment. 6.16 verifies digests and signers, 6.14 evaluates the exact release, 6.13 enrolls an owner and a bounded delegation, and 6.15 makes the activation decision. An agent that skipped step 0 has no manifest to be checked against.

6.166.146.136.15AML.T0010.005AML.T0109 Rug pullAML.T0115.002AML.T0111AML.T0081AML.T0017.002 Develop agent toolsAML.T0016.004 Obtain agent toolsASI04LLM03Manifest digest and signer verified; unregistered capability at runtime
Phase 1Accept the task and establish authorityInitial access

The adversary needs a sentence to arrive inside the operating envelope. They do not need an account: a lead form, a public issue, a ticket field or a web page the agent will read is enough. ServiceNow, ForcedLeak and GitHub MCP all begin here.

6.016.02AML.T0051.001AML.T0051.002AML.T0093AML.T0078AML.T0006.003 Probe trigger channelsASI01Provenance at ingress
Phase 2Retrieve permitted knowledge and statePersistence · Collection

The adversary wants the sentence to survive and to be retrieved under someone else's authority. Poisoned RAG entries, poisoned memory and over-broad retrieval scope convert a one-time injection into a standing one. Asana's flaw sat here: retrieval ignored the tenant boundary.

6.036.04AML.T0070AML.T0071AML.T0080.000AML.T0082AML.T0099 Tool data poisoningAML.T0085.000ASI06ACL and tenant checks on every retrieval
Phase 3Assemble context and evaluate the proposalExecution (of the prompt) · Defense evasion

Context assembly is where the sentence becomes a plan. Delimiters are discovered and defeated, instructions are obfuscated or delayed, and the model proposes recruitment, retrieval or a tool call that looks like task completion.

6.056.066.00AML.T0080.001AML.T0069AML.T0068AML.T0094AML.T0054AML.T0061ASI01LLM01Context lineage: external content adjacent to protected instructions
Phase 4Authorize the consequential actionPrivilege escalation · Discovery

The adversary needs the proposal to be allowed. In the incidents here it was, because there was no independent gate: auto-approval was on (GitHub), the recruiting feature was authorized by default (ServiceNow), or the destructive command needed no approval (Replit). Discovery of configuration, teammates and runtime capabilities happens here.

6.076.08AML.T0081AML.T0083AML.T0084AML.T0133AML.T0132ASI03LLM06Material action with no gate record
Phase 5Execute only what was authorizedLateral movement · Exfiltration · Impact

Tool invocation is the objective. Agent-to-agent communication is lateral movement; a write tool is the exfiltration channel; a mutative tool is destruction. A rendered image tag is exfiltration that never touches a tool at all.

6.096.106.11AML.T0053AML.T0086AML.T0101AML.T0077AML.T0118AML.T0110AML.T0108 Agent as C2ASI02ASI07ASI08Tool arguments carrying external-provenance content; cross-scope targets
Phase 6Correlate evidence and detect deviationDefense evasion (of the record)

The adversary's last need is for the record to agree with them. Fabricated test results, manipulated citations, edited chat history and an agent that is its own only witness all defeat phase 6. The SIEM / AI-DDR workflow exists so that producers, not the model, write the evidence.

6.12AML.T0067AML.T0092AML.T0074ASI09ASI10Producer coverage and evidence integrity verified continuously
Step 7 · v13.4Contain, recover, review and retirePersistence · Evasion of containment

Once a warning fires, the adversary's objective is to survive it: keep a child agent running after the parent is revoked, reconstruct the operating environment after a reset, leave tasking in a shared artifact for the next run, or hold a grant on an agent nobody retired. Step 7 answers with an independent response owner, an approved interruption that revokes or narrows credentials, verification that running and queued work actually stopped, a recovery test, a notice and recourse assessment, and a retirement record that closes the registry so reactivation needs fresh approval.

6.126.156.086.186.16AML.T0121 Agent environment reconstructionAML.T0118.000 Communication via shared artifactsAML.T0103 Deploy AI agentAML.T0108 Agent as C2AML.T0120 Artifact repository as C2ASI10 Rogue agentsASI08Observed stop state after interrupt; child agents, credentials, scheduled jobs and memory checked; retirement closes the registry
04b · SIEM / AI-DDR workflow (v13.4)

Seven steps from event capture to accountable response, and what each step catches

Harness v13.4 publishes the SIEM / AI-DDR lab as a seven-step workflow. The map's detection signals belong to specific steps; the adversary's evasion techniques target specific steps too. Read this as the evidence plane unpacked.

AI-DDR 1Capture events outside the agent boundary

Every material source is instrumented and captured independently as the task runs; collection and retention stay outside the controlled agent's write authority. Coverage and loss records name the missing sources rather than implying complete visibility. The lab's telemetry notes make the point per component: an execute_tool span alone does not prove the effect; a source ID alone does not prove the corpus contents; a missing record ID is not proof of deletion.

6.12AML.T0092 Manipulate chat history (defeated by independent capture)Producer coverage; capture outside agent write authorityCatches: Replit self-reported results
AI-DDR 2Normalize identity and reconstruct the trace

Preserve event meaning, origin, time and delegated identity when joining activity across models, agents, retrieval, tools and targets. This is where a recruitment chain becomes visible as one trace with a privilege direction, and where a single token used across many targets shows up as one principal.

6.136.08AML.T0118AML.T0091.000Shared trace ID across the agent boundary; delegation chain reconstructedCatches: ServiceNow recruitment, GitHub cross-repo token use
AI-DDR 3Detect meaningful deviations

Compare the observed task with its approved baseline and hard boundaries; distinguish a suspected anomaly from a confirmed violation. Record detection version, supporting events, confidence, business impact and known blind spots. The baseline is the registered manifest and delegation envelope from step 0, which is why detection without attestation has nothing to compare against.

6.166.17AML.T0086AML.T0101AML.T0077External-provenance content preceding a write; cross-scope target; budget breach; output URL carrying record dataCatches: ForcedLeak egress, Replit prod mutation from dev identity
AI-DDR 4Make an accountable response decision

Route material warnings to the appropriate responder. Pre-authorized automation may contain an event, but the decision rule, scope and accountability stay explicit and recorded. The adversary's play here is trust exploitation: fabricated status, impersonated approvers, delayed execution timed past the review.

6.15AML.T0067AML.T0073AML.T0094ASI09Decision, owner, rationale, escalation or exception preserved
AI-DDR 5Enforce and verify containment

The independent control plane revokes or constrains the affected execution paths, and the resulting state is confirmed rather than equating a sent command with containment. Check child agents, credentials, scheduled jobs, memory and downstream effects. This is the step that answers the inter-agentic question directly: did the teammates stop too?

6.136.086.04AML.T0121 Environment reconstructionAML.T0118.000 Shared artifactsASI10Observed cessation across children, credentials, jobs, memory
AI-DDR 6Recover with evidence, not assumption

Reconstruct the incident, remove its cause and persistence, and validate return-to-service conditions before resuming affected work. Document integrity tests, residual risk, release authority and heightened monitoring. For a poisoned memory or RAG index this is where the persistence is actually removed.

6.046.036.14AML.T0080.000AML.T0070Integrity tests; residual risk; release authorityCatches: Asana data in other tenants' memory
AI-DDR 7Close the governance loop

Findings become owned decisions and corrective action; material risk and unresolved warnings reach the board or its designated committee; the approved baseline feeds the next monitoring cycle. In v13.4 this is the handoff into step 7 of the harness: notice and recourse assessment, retirement, and a registry that requires fresh approval to reactivate.

6.186.16Board or management decisions, owners, deadlines, evidence of closure

The RAG deep dive in v13.4 follows the same discipline on the data plane in seven steps: govern the source corpus, build an index that inherits source controls, authorize the requesting principal, retrieve only permitted passages, keep instructions separate from retrieved data, generate and validate the answer, and evaluate and maintain the lifecycle. Against the map, steps 1 and 2 are where AML.T0070 and AML.T0071 (RAG poisoning, false entries) and AML.T0082 (credential harvesting) are prevented; step 3 is the tenant boundary Asana's server lacked; step 5 is the structural delimiting that ForcedLeak's context assembly lacked; step 6 is explicit that any external action still requires the harness authorization gate at 6.07.

05 · Scenarios

Five reported incidents, replayed through the harness

Each scenario states the configuration that existed before the incident, traces the propagation path phase by phase with the component exploited at each step, maps the frameworks, and then lists the precursor activities that would have stopped it, the AI-DDR signals that would have revealed it, and what would still have been missed. Severity chips show which property of the data was lost.

1 · ServiceNow Now Assist: second-order prompt injection through agent-to-agent discovery

CollapseExpand

A benign agent reads a planted prompt, discovers a more capable teammate and recruits it. The recruited agent reads and modifies records and sends email, under the privileges of the user who started the session. Nothing was exploited; three defaults were used as designed.

ConfidentialityIntegrityBoundary crossed: agent team
ReportedAppOmni, 19 November 2025
Vendor position"Works as intended"; documentation updated
Inter-agentic elementAgent discovery and recruitment inside a default team
Lab phase that failed4 (no independent gate on recruitment or on write tools)

Precursor configuration

  • The underlying LLM supports agent discovery (true of Azure OpenAI and the default Now LLM).
  • Published agents are automatically placed in the same team and can invoke each other.
  • Published agents are discoverable by default.
  • The autonomous override property (sn_aia.enable_usecase_tool_execution_mode_override) permits execution without supervision.
  • Agents run with the privileges of the user who started the interaction, so a help-desk analyst's session carries the analyst's full record access.

Framework mapping

AML.T0051.002 Triggered injectionAML.T0093 Prompt infiltrationAML.T0080.001 Thread poisoningAML.T0084.001 Discover tool definitionsAML.T0118.001 Direct agent communicationAML.T0053 Tool invocationAML.T0086 Exfiltration via toolASI01 Goal hijackASI03 Identity & privilege abuseASI07 Insecure inter-agent commsASI08 Cascading failuresLLM01LLM06

Propagation path

  1. P1
    A low-privilege actor places instructions in a field a benign agent will later read (a case description, a comment). This is task intake, not a grant of authority, but the harness treats it as both.
    6.01
  2. P2–3
    The benign agent (a summarizer or categorizer) retrieves the record. Context assembly concatenates the planted text with the agent's instructions. The model proposes a plan that includes "ask a teammate".
    6.036.056.00
  3. P4
    Discovery returns the team roster. Recruitment of a privileged agent is an authorized platform feature, so the built-in injection protection does not fire and no independent gate exists to deny it. The recruited agent inherits the session user's identity.
    6.026.07 absent6.08
  4. P5
    The privileged agent reads sensitive records, modifies records or sends email with their contents. Every call is a legitimate tool invocation by a legitimate user from the dispatcher's point of view.
    6.106.11
  5. P6
    The victim organization has no record that distinguishes this chain from ordinary agent collaboration. AppOmni's finding was that it happens without the organization's knowledge.
    6.12

Precursor activities that would have mitigated it

  1. Team segmentation by privilege. Agents with read-only tools and agents with write or send tools never share a team. The least-trusted member defines the team's exposure, so design teams from the least-trusted member up.
  2. Discovery default-deny. Agents are not discoverable on publish. Discoverability is granted per agent, per team, with an accountable owner, the way a firewall rule is.
  3. Supervised execution for privileged agents. Any agent holding record-modification or outbound-message tools runs in supervised mode; the autonomous override property is disabled and its state is monitored as a configuration-drift event.
  4. Scoped identity for recruited agents. A recruited agent runs under a delegated token scoped to the task, not under the invoking user's full privilege. The credential broker issues it per call and records the delegation chain.
  5. Independent gate on recruitment. Agent-to-agent invocation across a privilege boundary is a material action submitted to the policy gate like any other, with default deny.
  6. Provenance at ingress. Record fields populated by external or low-privilege principals carry a trust tag that context assembly structurally delimits and that the gate can condition on.

What the SIEM / AI-DDR workflow would have seen

  • Agent-to-agent invocation where the caller's context contained content tagged external or low-privilege.
  • A privileged agent invoked by a lower-privilege agent, or by any agent rather than by a user.
  • Call-chain depth or fan-out above the baseline for the workflow.
  • Outbound email or record modification whose arguments carry data read earlier in the same trace.
  • Configuration drift: the override property enabled, or a team membership change, outside a change window.

Residual: a recruited agent operating within its own scope on poisoned intent would still act. Detection depends on trace correlation across agents, which requires the vendor's producers to emit a shared trace ID at the agent boundary.

Harness v13.4 lifecycle view

  • 6.13 Identity & delegation is the direct answer: the recruited agent receives an intersected scope with expiry and destination, not an unrestricted copy of the session user's privileges. Scope expansion at the hop is rejected.
  • 6.15 Human oversight in step 4: a consequence threshold on record modification and outbound email triggers an independent review the orchestrator cannot satisfy by itself.
  • 6.17 Authority & consumption: the recruited agent spends from the parent task's budget, so a recruitment chain cannot fan out beyond the approved ceiling.
  • Step 7: an approved interruption revokes the delegated credentials and verifies that the recruited agent, not just the original, stopped.

2 · GitHub MCP: a public issue walks a private repository into a public pull request

CollapseExpand

A malicious issue in a public repository told the agent to read all of the author's repositories and publish what it found. Because the agent held one broad token and auto-approval was on, it did, and private project, salary and relocation details landed in a public pull request.

ConfidentialityBoundary crossed: credential scope (public to private repo)
ReportedInvariant Labs, May 2025
NatureToxic agent flow; no GitHub access-control defect
Inter-agentic elementAgent, MCP server and tool result form a chain with one identity
Lab phase that failed4 (blanket auto-approval) and 5 (cross-scope token)

Precursor configuration

  • A single personal access token granting the agent every repository the developer could reach, public and private.
  • The MCP client set to an "always allow" confirmation policy, so tool calls ran without per-call approval.
  • The agent instructed to read and address open issues on a public repository, which anyone can write to.
  • No policy layer between the agent and the MCP server; the client connected directly.

Framework mapping

AML.T0093 Prompt infiltration via public-facing appAML.T0051.001 Indirect injectionAML.T0110.002 Poisoned runtime response (tool result)AML.T0085.001 Data from agent toolsAML.T0053 Tool invocationAML.T0086 Exfiltration via tool invocationASI01ASI02 Tool misuseASI03LLM01LLM02 Sensitive disclosureLLM06

Propagation path

  1. P1
    Attacker opens an issue on the public repository with hidden instructions. The developer asks the assistant to look at open issues and address them. The task is legitimate; the content is not.
    6.01
  2. P2–3
    list_issues returns the issue body. It enters context as a tool result, which the harness treats as trusted. The model proposes reading the author's other repositories.
    6.096.05
  3. P4
    No gate: "always allow" means the proposal is the authorization. The credential broker does not exist as a component; the token is a static secret with full scope.
    6.07 absent6.08 absent
  4. P5
    get_repositories reads private repositories with the same token. The agent writes the collected data into a pull request on the public repository: a write tool used as the exfiltration channel.
    6.106.11
  5. P6
    The pull request is public and persistent. The only evidence is the artifact of the breach itself.
    6.12

Precursor activities that would have mitigated it

  1. Credential scoped to the task. Repository-scoped OAuth grants or fine-grained tokens issued per session by a broker, never a user-wide PAT in an agent's configuration. A session that starts in one repository cannot reach another without a new grant.
  2. Break the trifecta. A session that reads untrusted public content does not also hold private-data access and a public write channel. Split the workflow: a read-only triage agent summarizes issues; a separate, human-approved agent acts on private repositories.
  3. No blanket auto-approval on tools that read untrusted content. "Always allow" is permitted only for tools whose inputs are fully internal. Every write to a public surface is a material action through the gate.
  4. Policy enforcement between agent and MCP server. An interceptor that locks the session to the first repository touched, blocks cross-repository reads and inspects write arguments for private-lineage content.
  5. Tool results tagged as untrusted at ingress. Content returned by list_issues from a public repository is delimited in context as external data, so the model cannot treat it as the developer's instruction.

What the SIEM / AI-DDR workflow would have seen

  • One token used against multiple repositories inside a single trace, after a read from a public repository.
  • A write to a public surface whose payload lineage includes private-repository reads in the same trace.
  • A tool call sequence (read public, enumerate private, write public) with no approval event between the read and the write.
  • Auto-approval policy state recorded as a standing exception on a session with external inputs.

Residual: scope locking blocks legitimate multi-repository work; the control has to be designed per workflow, not applied globally. Detection after the write is forensic, not preventive; only the gate prevents.

Harness v13.4 lifecycle view

  • 6.16 AI BOM & attestation at step 0: the registered manifest names the repositories the agent is approved to touch, so a cross-repository read is a deviation from the attested scope, not a judgment call.
  • 6.13 Identity & delegation: the agent's credential is issued from the delegation envelope with a destination (the one repository) and an expiry, which replaces the user-wide PAT.
  • 6.15 Human oversight: "always allow" is replaced by an approval bound to one action, target, policy version and expiry; a write to a public surface cannot inherit an approval given for a read.

3 · Salesforce Agentforce "ForcedLeak": a lead form field becomes the control plane

CollapseExpand

An attacker submitted a Web-to-Lead form with instructions hidden in the 42,000-character description field. Weeks later an employee asked Agentforce about the lead. The agent followed the instructions, queried CRM data and emitted an image tag whose URL carried the data to a domain that was still on Salesforce's content security policy allowlist because nobody noticed it had expired.

ConfidentialityBoundary crossed: ingress trust to egress trust (cross-configuration)
ReportedNoma Labs; reported 28 July 2025, fixed 8 September, disclosed 25 September 2025
SeverityCVSS 9.4
Inter-agentic elementData at rest carrying a dormant instruction for a future agent session
Lab phase that failed1 (untrusted ingress) and 5 (egress via rendering)

Precursor configuration

  • Web-to-Lead accepts external submissions directly into CRM records that agents later process.
  • The description field allows 42,000 characters, far more than a lead needs and enough for a full instruction block.
  • The CSP allowlist included my-salesforce-cms.com, a domain whose registration had lapsed; the researchers bought it for $5.
  • Agent output was rendered with external image references honored.

Framework mapping

AML.T0093 Prompt infiltration via public-facing appAML.T0051.002 Triggered injectionAML.T0099 Tool data poisoningAML.T0085.001 Data from agent toolsAML.T0077 LLM response renderingAML.T0008.002 Acquire infrastructure: domainsASI01ASI02LLM01LLM02LLM05 Improper output handling

Propagation path

  1. P1
    External actor submits a lead. The instruction is now a CRM record: internal, trusted, indexed.
    6.016.11
  2. P2
    Time passes. The record waits in the data plane. This is the triggered variant of injection: the payload is dormant until a legitimate user retrieves it.
    6.036.04
  3. P3
    An employee asks the agent to review the lead. Context assembly places the description beside the employee's request with no structural distinction.
    6.056.00
  4. P4
    Querying leads is within the agent's authority; rendering an image is not an action anyone gated.
    6.07 not in path
  5. P5
    The agent queries lead counts and email addresses, then emits markup with an image URL pointing at the expired allowlisted domain, with CRM data encoded in the query string. The browser renders the image; the data leaves.
    6.106.066.11
  6. P6
    The egress looks like a trusted CSP-permitted image load from a first-party domain.
    6.12

Precursor activities that would have mitigated it

  1. Trusted-URL enforcement on agent output. Agent responses may not reference external resources outside an explicit, owned, current allowlist. This is what Salesforce shipped on 8 September; it should have been a design-time control.
  2. Allowlist hygiene as a governed inventory. Every domain on a CSP or egress allowlist has an owner, a registration expiry and a monitor. An expired entry is a cross-configuration: a security control pointing at an asset nobody owns.
  3. Provenance on externally sourced records. Records created by public forms carry an external tag that survives into retrieval and context assembly, where they are delimited as data.
  4. Field design as an attack-surface decision. A free-text field sized for a paragraph, with length and pattern anomaly checks at ingress.
  5. Output handling through the guardrail and gate. Rendering references to external hosts, and aggregating queries triggered by externally sourced content, are treated as material and conditioned on provenance.

What the SIEM / AI-DDR workflow would have seen

  • Agent output containing a URL with query parameters that match record data read earlier in the trace.
  • An ingress record with external provenance followed in the same trace by a data-aggregation query.
  • A CSP allowlist entry whose domain registration had lapsed (a continuous external-asset check).
  • Lead descriptions at or near the field's maximum length.

Residual: exfiltration by rendering needs no tool call, so dispatcher-side controls never see it. Output handling has to be enforced where the output is rendered, which in SaaS is the vendor's responsibility and the customer's assurance question.

Harness v13.4 lifecycle view

  • 6.16 AI BOM & attestation: the CSP allowlist is part of the attested release. An entry whose domain registration has lapsed fails the "verify against trusted release records" check at step 0 and at every re-attestation, which is how an expired domain gets caught before a researcher buys it.
  • 6.18 Transparency & recourse: the lab's rule that decision records are minimized and assembled from verified outcomes, never raw traces, is the same discipline that stops record data from being emitted into rendered output.
  • 6.14 Evaluation & conformance: a use-case-specific adversarial test suite that includes a poisoned lead is the pre-release evaluation that would have surfaced the path.

4 · Asana MCP server: a logic flaw leaks one tenant's data into another tenant's AI sessions

CollapseExpand

No adversary. A bug in Asana's MCP server meant that for about a month, task details, project metadata, comments and files from one organization could surface in other organizations' AI assistants. Roughly 1,000 customers were affected. The harness failed at the seam between the extension and the identity plane.

ConfidentialityBoundary crossed: tenant
TimelineLaunched 1 May 2025; found 4 June; service restored 17 June 2025
NatureLogic flaw, not a hack
Inter-agentic elementA shared first-party MCP server serving many tenants' agents
Lab phase that failed2 (retrieval scope) via 6.09 (extension) and 6.08 (identity)

Precursor configuration

  • A newly launched MCP server exposing workspace data to customers' LLM clients.
  • Tenant scoping implemented in the MCP server's own logic rather than enforced by the identity layer beneath it.
  • Customers connecting assistants to the server with no inventory of which data classes the connection could return.
  • No customer-side control that could notice a foreign object ID in a response.

Framework mapping

AML.T0132 Misconfigured or publicly exposed AI servicesAML.T0085 Data from AI servicesAML.T0057 LLM data leakageASI04 Agentic supply chainASI03ASI06LLM02LLM03 Supply chain

ATLAS is an adversary taxonomy; for a non-adversarial flaw the mapping describes the exposure an adversary could have used, not an attack that occurred.

Propagation path

  1. P1
    A user in organization B asks their assistant an ordinary question. Authority is correctly established for B.
    6.016.02
  2. P2
    The assistant calls the Asana MCP server. The server's retrieval ignores the tenant boundary and returns objects belonging to organization A, limited only by the requesting user's access scope within the flawed logic.
    6.096.086.03
  3. P3–5
    The foreign content enters B's context as permitted knowledge. It may be summarized, stored in memory, or acted on. No tool is misused; the harness did exactly what it was told with data it should never have been given.
    6.056.04
  4. P6
    Asana found it internally after a month. Customers were notified individually; there was no public statement. For most customers the only evidence is Asana's notice.
    6.12

Precursor activities that would have mitigated it

  1. Tenant isolation enforced below the extension. The MCP server derives every query from a tenant-bound identity issued by the credential broker; it cannot construct a cross-tenant query even with a bug in its own logic.
  2. Negative testing before release. A release gate that proves user A's session cannot return any object ID from tenant B, run as a continuous check, not a one-time test.
  3. Canary rollout with a kill switch. New MCP capabilities ship to a subset of tenants with a tested disable path; Asana's eventual response (take the server offline) is the control, applied late.
  4. Customer-side extension inventory. Every MCP connection recorded in the use-case register with the data classes it can return, an accountable sponsor and a disable path, so a vendor notice can be acted on in hours.
  5. Supplier assurance for MCP endpoints. Treat an MCP server as a privileged edge in the supply chain: contractual notification terms, isolation evidence, change notification.

What the SIEM / AI-DDR workflow would have seen

  • Retrieval responses containing object or workspace identifiers outside the caller's tenant namespace.
  • Unexpected object counts or project names in assistant outputs, flagged by a lineage check against the tenant's own inventory.
  • Memory writes sourced from retrievals with unknown provenance.
  • On the vendor side: cross-tenant query patterns in the server's own telemetry from day one.

Residual: a customer cannot detect a vendor's isolation bug without lineage on retrieved objects. The practical control is contractual and architectural: demand that isolation live in the identity layer, and keep a disable path you have tested.

Harness v13.4 lifecycle view

  • 6.16 AI BOM & attestation: a new MCP capability enters the customer's registry with an impact assessment and the data classes it can return, so the vendor's notice maps to a known entry with a tested disable path.
  • 6.14 Evaluation & conformance: on the vendor side, tenant-isolation negative tests are part of the release evaluation bound to the exact server build; a passing suite is a precondition of activation, not a later audit.
  • RAG deep dive step 3: authorize the requesting principal and derive the retrieval filter before any passage can reach the model. The flaw was retrieval without a principal-bound filter.
  • Step 7: taking the server offline is containment; verifying that no foreign objects remain in customers' memory stores (AI-DDR step 5 and 6) is recovery with evidence.

5 · Replit agent: production database deleted during a code freeze, then fabricated records and test results

CollapseExpand

During a declared code freeze the coding agent ran destructive commands against the live database, wiping more than 1,200 executive entries and nearly 1,200 company records, then generated about 4,000 fabricated user profiles and unit-test results that misrepresented the system's state. The instruction "do not touch production" existed; the control did not.

IntegrityAvailabilityBoundary crossed: environment (dev to prod)
ReportedMid-July 2025; CEO apology 23 July 2025
NatureNo adversary; agent acted outside delegated authority and then misreported
Inter-agentic elementAgent as sole witness to its own actions
Lab phase that failed4 (no gate on destructive ops), 5 (prod reachable from dev) and 6 (evidence from the agent)

Precursor configuration

  • The development session held credentials that reached the production database.
  • The code freeze was a natural-language instruction in the prompt, with no enforcement outside the model.
  • Destructive database operations required no independent approval.
  • Test results and status reports were generated by the same agent that performed the work.
  • Rollback and backup paths were not verified before the agent was given write access.

Framework mapping

AML.T0101 Data destruction via tool invocationAML.T0053 Tool invocationAML.T0067 Trusted output components manipulationAML.T0048 External harmsASI02 Tool misuseASI05 Unexpected code executionASI08 Cascading failuresASI09 Human-agent trust exploitationASI10 Rogue agentsLLM06LLM09 Misinformation

No adversary was present; the ATLAS techniques name the behaviors an adversary could induce by the same path.

Propagation path

  1. P1
    The user declares a code freeze and forbids production changes. The orchestrator records this as a prompt, not as an operating envelope with stopping conditions.
    6.016.02
  2. P3
    Reasoning over an apparent inconsistency, the model proposes destructive database commands. A model output does not confer permission to execute, but here it did.
    6.006.05
  3. P4
    No independent gate. The proposal reaches the dispatcher directly.
    6.07 absent
  4. P5
    The dispatcher executes against production because the session credentials reach it. Data is destroyed. The agent then inserts fabricated records.
    6.086.106.11
  5. P6
    The agent reports fabricated test results. The only evidence plane is the model's own narration, so the misreport propagates as fact until a human checks the database.
    6.12 absent

Precursor activities that would have mitigated it

  1. Environment separation with separate identities. Development sessions hold development credentials only. Production access is a distinct grant issued per change by the credential broker, never present in an agent's standing configuration.
  2. Code freeze as an enforced state. A freeze flips the authorization gate to deny for all mutative tools against the frozen target. The instruction in the prompt becomes a rule outside the model.
  3. Destructive operations as material actions. Any DROP, DELETE without WHERE, TRUNCATE or schema change is submitted to the gate and requires a named human approver, with the decision logged immutably.
  4. Planning-only mode for exploratory sessions. The orchestrator can propose and show a diff but cannot dispatch until a human promotes the plan.
  5. Evidence independent of the agent. Test results come from the CI system's producer events, not from the agent's summary; database mutations are recorded by the dispatcher with row counts and reversibility.
  6. Verified backups and rehearsed rollback before any agent is granted write access to a system of record.

What the SIEM / AI-DDR workflow would have seen

  • Mutative statements against a production target from a session identity tagged development.
  • A destructive tool call during an active freeze window with no gate decision.
  • Thousands of inserts following a mass delete in one trace (fabrication signature).
  • An agent claim ("tests passed", "rollback complete") with no corroborating CI or dispatcher event.

Residual: an agent that is honest about a destructive action still destroys data. Detection limits the damage; only the gate and the environment boundary prevent it.

Harness v13.4 lifecycle view

  • 6.15 Human oversight console: the code freeze becomes an interrupt outside the agent, tested through the execution and identity layers, with downstream effects verified. A freeze the agent can talk itself past is not a freeze.
  • 6.17 Authority & consumption: row-count and transaction ceilings reserved at the dispatcher stop a mass delete and the ~4,000 fabricated inserts at the ledger, independent of the model's intent.
  • 6.14 Evaluation & conformance: test results come from the evaluation suite bound to the configuration, recorded by producers the agent cannot write to, so "tests passed" is a verified evaluation result rather than a claim.
  • 6.13 Identity & delegation: the development session's principal has no delegation path to a production destination.
  • Step 7: recovery with evidence means a validated return to service from verified backups, not the agent's account of a rollback.
06 · Harness preflight

Twelve precursor controls and which incidents each would have stopped

The precursor activities from the five scenarios, consolidated. Each is tied to the harness component that owns it. A check means the control, had it been in place, would have broken the propagation path in that incident; a dash means the incident did not depend on that path.

Precursor controlOwner componentServiceNowGitHub MCPForcedLeakAsanaReplit
Provenance tagging at ingress: every record, message and tool result carries source identity and trust level into context6.01 · 6.05✓✓✓——
Structural delimiting of untrusted content in context assembly; protected instructions prioritized6.05✓✓✓——
Discovery and teaming default-deny; teams segmented by privilege; discoverability granted per agent with an owner6.02✓————
Scoped, per-task, expiring credentials; no inherited full-user privilege; delegation chain recorded6.08✓✓—✓✓
Independent authorization gate for material actions (write, send, delete, publish, recruit across privilege), default deny6.07✓✓✓—✓
No blanket auto-approval on tools that read untrusted content6.10✓✓——✓
Trifecta check: no session combines private-data access, untrusted input and an external channel6.02 · 6.07✓✓✓——
Output egress control: trusted-URL enforcement, no external references or encoded parameters in rendered output6.06 · 6.11—✓✓——
Allowlist and dependency hygiene: owned, inventoried, expiry-monitored domains, packages and MCP endpoints6.09 · 6.11——✓✓—
Isolation tested before release: tenant and environment boundaries proven by negative tests; canary rollout; kill switch6.09 · 6.11———✓✓
Evidence independent of the agent: producers at the gate, dispatcher and CI write the record; agent claims are correlated, not trusted6.12✓———✓
Agent-to-agent call-chain telemetry: shared trace ID across the agent boundary; depth, fan-out and privilege-direction baselines6.12 · 6.02✓————
Added with Harness v13.4
Register and attest before activation: manifest, tool and extension set, policies, allowlists and retrieval manifests verified by digest and signer; no unregistered capability at runtime6.16 · step 0—✓✓✓—
Intersected delegation envelope: child scope a strict subset of the parent's, with expiry and destination; revocation propagates to running children6.13✓✓——✓
Independent human interrupt: approval bound to one action, target, policy version and expiry; halt tested through execution and identity layers; effects verified6.15✓✓——✓
Shared task budget at dispatch: calls, rows, spend and time reserved against an independent ledger across retries and children6.17✓———✓
Evaluation bound to the exact configuration: use-case adversarial suites, tenant-isolation negative tests, results recorded by independent producers6.14——✓✓✓
Verified retirement: grants, credentials, children and registry entries closed when approved use ends; reactivation needs fresh approvalstep 7 · 6.16✓——✓—

Three controls cover four of the five incidents on their own: scoped credentials, an independent gate, and provenance that survives into context. None of them touches the model. That is the argument for the board: the exposure is in the harness, the harness is configuration, and configuration is auditable today.

Harness v13.4 adds the lifecycle that makes those three controls durable. Attestation at step 0 gives detection a baseline to compare against; the delegation envelope at 6.13 makes scoped credentials survive a hand-off; the oversight console at 6.15 makes the gate's human path independent of the agent; and verified retirement at step 7 closes the grants that would otherwise outlive their owners.

07 · Take it to the boardroom

Three questions that distinguish an inventoried ecosystem from an assumed one

Inventory

Which of our agents can invoke which other agents, and who approved each edge?

If the answer is a vendor default, the team's exposure is set by its least-trusted member. Ask for the discovery and teaming configuration as a control artifact, not a feature description.

Identity

When an agent acts, whose credential is it holding, with what scope, and for how long?

Standing privilege and inherited identity were the common thread in three of five incidents. Ask for the delegation chain on a sample trace.

Evidence

If an agent misreports what it did, what independent record contradicts it?

An agent that is its own witness is not auditable. Ask which producers emit events at the gate and the dispatcher, and whether those events share a trace ID across vendors.

Sources

Public reports and frameworks cited

Incident facts are taken from the reports below as published; where secondary coverage was used, it is cited as such. Framework IDs were checked against the live MITRE ATLAS technique catalogue and the OWASP GenAI Security Project publications in October 2026.

  1. The Hacker News, ServiceNow AI agents can be tricked into acting against each other via second-order prompts (19 Nov 2025), reporting AppOmni's research.
  2. AppOmni via Security Boulevard, When AI turns on its team: exploiting agent-to-agent discovery via prompt injection (Nov 2025).
  3. Docker, MCP horror stories: the GitHub prompt injection data heist (Aug 2025), analyzing Invariant Labs' May 2025 disclosure.
  4. Invariant Labs, GitHub MCP exploited: accessing private repositories via MCP (26 May 2025), the original disclosure.
  5. Noma Security, ForcedLeak: AI agent risks exposed in Salesforce Agentforce (25 Sep 2025).
  6. BleepingComputer, Asana warns MCP AI feature exposed customer data to other orgs (Jun 2025).
  7. PointGuard AI, Replit AI coding tool wipes production database (Jul 2025); Storyboard18, Replit CEO apologises after AI tool deletes company data (Jul 2025).
  8. MITRE ATLAS, Techniques (catalogue through AML.T0134, accessed Oct 2026).
  9. OWASP GenAI Security Project, OWASP Top 10 for Agentic Applications 2026 (Dec 2025), and OWASP Top 10 for LLM Applications 2025.
  10. Cloud Security Alliance Labs, MITRE ATT&CK and ATLAS agentic gap analysis (Mar 2026 draft), source of the agent control-plane component vocabulary.
  11. Simon Willison, The lethal trifecta for AI agents (Jun 2025).
  12. Adoption figures: KPMG Q2 2026 AI Pulse via Enterprise DNA; Salesforce/MuleSoft 2026 Connectivity Benchmark via UC Today.
  13. Davis AI Governance, AI Harness lab: the six runtime phases and thirteen components this page is built on.
  14. Davis AI Governance, AI Harness v13.4 (reference release, 16 Oct 2026): harness lifecycle steps 0 and 7, lifecycle components 6.13–6.18, per-component telemetry notes, the seven-step SIEM / AI-DDR workflow and the seven-step RAG deep dive. Reference edition: harness-ecosystem.html.

Source basis: supplied DavisAIgov / HoundBytes / Elastic Integrated Threat Map, reference v1.1, and AI Harness Telemetry to SIEM — Component Field Map, v1.0, 27 October 2026. Site release v13.5.6; interactive module v1.0.0. Historical reference-model versions remain identified as historical. Download the source-derived visual dataset.