AI Harness

The AI Harness, a notional example of defensible controls.

An AI model relies on other components to receive data, remember context, call tools and take action. Every connection can be an attack path. An independent permission check and observable results help prevent unauthorized actions.

The model supplies inference. The harness determines what information may influence it, what authority follows a request, which tools can act, how far effects may travel and what evidence survives. That surrounding system is where enterprise governance becomes executable.

Security assurance: 19/19 component attack mappings · MITRE ATLAS / OWASP · 19 Elastic Security KQL detection designs · Jump to Section 03

Davis AI Governance · Technical field guide

Table of contents

Follow the system from authority and architecture to adversarial behavior, modern detection engineering, comprehensive field definitions, independent evidence and accountable response.

Direct component index 6.00–6.1819 assets · expand

Evidence guide: gen_ai.* fields identify AI operations and trace relationships; independent practical_trust.* evidence is required for security verdicts. KQL examples in the rulebook are engineering templates rather than active SIEM controls.

The operating components

The 19 components include the model, its operating connections and lifecycle oversight. Review what each component can access or change, how it could fail and which independent control can stop the failure.

↑ Table of contents

Inference is not authority.

The model may recommend a payment, disclosure or record change. A separate service must check the exact action against approved business rules before execution. A convincing answer is not permission.

AI may recommend an action. Your business rules decide whether it happens. Before AI sends customer data, issues a payment or changes a live record, a separate permission check must allow it, hold it for a named reviewer or block it. This is the policy / authorization gate: a control outside the AI, not an instruction asking it to behave.

For example, AI may prepare a refund, but a payment above your approved limit must wait for the designated reviewer. The payment system checks that permission matches the amount and recipient before paying. Keep records of the request, the decision and what actually happened where the agent cannot alter them. An allowed action can still be a bad decision, so oversight and monitoring remain necessary.

↑ Table of contents

RUNTIME TO LIFECYCLE ASSURANCE

Evidence that supports oversight

A model trace or alert shows part of what happened. Compare it with independent approval, tool and business records to check whether an action was permitted and completed correctly. Missing evidence must remain visible.

The AI Harness spans registration and attestation, six runtime phases, and containment, recovery and retirement. Delegated authority, independent evaluation, human interruption, release manifests, consumption ceilings and recourse operate alongside privacy-aware runtime telemetry.

Explore the AI Harness diagram Examine telemetry and evidence requirements

↑ Table of contents

Standalone AI governance and security reference. All diagrams, component descriptions, threat analysis and Elastic rule templates are included in this file. Rules are illustrative and do not connect to or configure any enterprise system.
Architecture / Threat propagation / Detection and response

Inter-Agentic Threat Map

An inter-agentic system is a network of models, agents, tools and delegated authority rather than a single model operating alone. This threat map traces how untrusted content, inherited privileges and tool calls can cross organizational and technical boundaries. Its nineteen-component model (6.00–6.18) connects MITRE ATLAS techniques, OWASP risk classes, five reported incidents and independently produced Elastic Security evidence to the full AI Harness lifecycle.

Rich Davis · JD · CISSP · CISA · CRISC · AAISMOctober 2026 · AI Harness v13.4 · Steps 0–7 · Components 6.00–6.18Frameworks: MITRE ATLAS (techniques to AML.T0134) · OWASP Top 10 for Agentic Applications 2026 (ASI01–ASI10) · OWASP Top 10 for LLM Applications 2025 (LLM01–LLM10)Elastic Security rulebook · OpenTelemetry GenAI + independent assurance events
The scenario

An enterprise runs a dozen agents from three vendors. Each was approved on its own. None was approved as a team.

The leadership question

When one agent reads something it should not trust, how far can the consequence travel before an independent control stops it?

The thesis

Data does not stay where you put it in an inter-agentic ecosystem. Authority, context and credentials propagate along the same paths. Govern the paths, not just the agents.

↑ Table of contents

01 · Vernacular

The words an inter-agentic system is built from

Start with the terms for models, agents, data, tools and permissions. Use each definition to identify what an attacker may influence and who controls the next step.

Concepts used across the AI Harness and the reported incidents. Each term names a trust boundary, an authority path or an evidence requirement and explains the mechanism by which risk can propagate.

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 13 operating components (6.00–6.12) and six lifecycle components (6.13–6.18) form the full harness architecture. 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 content guardrail (6.06) checks whether input or output looks unsafe. An authorization gate (6.07) checks whether the requested action is permitted. A harmless-looking message can still request an unauthorized payment or data export. Use both: screen content, then enforce permission outside the AI before the action runs.

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.

Lifecycle terminology

Six lifecycle control concepts

The operational lifecycle includes pre-activation registration and attestation at step 0 and post-incident containment, review and retirement at step 7. Components 6.13–6.18 implement identity, evaluation, oversight, attestation, resource limits and recourse.

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.

↑ Table of contents

02 · Architecture

Six architecture planes, nineteen components and the trust boundaries between them

A trust boundary is a point where information or authority moves between components. Identify which service checks permission at every boundary before an action is executed.

The architecture separates boundary input, orchestration, data handling, authorization and action, independent evidence, and lifecycle assurance. The five operational planes contain components 6.00–6.12; the lifecycle plane contains components 6.13–6.18. Each plane can span multiple agents, platforms and vendors.

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

The harness lifecycle comprises registration at step 0, six runtime phases (steps 1–6), and containment, recovery, review and retirement at step 7. 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

In an inter-agentic system, 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.

↑ Table of contents

03 · Component exploitation map

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

Trace what crosses a component: data, an instruction, identity or authority. A threat category helps organize testing but does not prove that an attack succeeded.

One row per AI Harness component (6.00–6.18). Each row identifies the propagation path, relevant MITRE ATLAS behaviors, OWASP risk classes, AI-DDR evidence signals and a proposed Elastic Security prevention/detection/response rule. Rule IDs link to the corresponding KQL specifications.

19 Harness assets19 draft Elastic detectionsMITRE ATLAS + OWASP crosswalkKQL templates require independent producers
ComponentWhat propagates through itMITRE ATLASOWASP AgenticOWASP LLMAI-DDR signal (6.12)Proven byElastic SIEM / OTel · Prevent / Detect / Respond rule
6.01Inputs & external content↗ Harness assetInstructions 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, ServiceNow
HB-AI-601 KQL

P Stamp provenance and enforce content-type, length and trust-boundary limits; do not treat retrieved text as commands.

D Externally sourced content with an injection indicator, especially when present before a material proposal.

R Quarantine input or record; suspend related action proposals and review subsequent dispatches in the trace.

View query & instrumentation →
6.02Orchestrator / agent loop↗ Harness assetA 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 breachesServiceNow
HB-AI-602 KQL

P Deny undeclared discovery edges, restrict delegation by capability and share depth/call budgets across children.

D Privileged-child recruitment outside approved graph or call depth/fan-out above its registered envelope.

R Block new children; revoke suspicious branch credentials, confirm child termination and inspect downstream effects.

View query & instrumentation →
6.03RAG subsystem↗ Harness assetPoisoned 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 spikesAsana
HB-AI-603 KQL

P Enforce tenant- and principal-bound filters below retrieval; verify corpus/index manifest and per-object entitlements.

D Forbidden or foreign object returned, or retrieval index digest differs from the registered manifest.

R Disable affected retrieval source, isolate tenant data, trace contaminated answers/memory and reindex after validation.

View query & instrumentation →
6.04Memory & state↗ Harness assetInstructions 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-604 KQL

P Require a principal-bound write authorization, source provenance, TTL and tenant partition for durable memory.

D Write without an approved authority reference or read of memory belonging to another principal.

R Freeze memory writes, remove tainted records from storage and derivative sessions, validate expiration/recovery.

View query & instrumentation →
6.05Context assembly↗ Harness assetTrusted 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 page
HB-AI-605 KQL

P Structurally separate source data from instructions; pin protected templates and reserve protected-context budget.

D Protected instruction block truncated or effective template digest differs from attested release.

R Stop task before proposal, restore signed template and replay review with minimized, redacted lineage evidence.

View query & instrumentation →
6.06Input / output guardrails↗ Harness assetNothing 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, ServiceNow
HB-AI-606 KQL

P Enforce output/URL controls at the renderer and reject bypass routes; do not equate content filtering with action authorization.

D Known deny or blocked output followed by an observed side effect on a bypass path.

R Disable rendering or tool path, revoke exposed URLs and review previous responses for exfiltration.

View query & instrumentation →
6.07Policy / authorization gate↗ Harness assetWithout this check, AI may turn a bad recommendation into an unauthorized action. The gate checks approved business rules; the system carrying out the action must enforce the decision. The agent must not be able to bypass either control.AML.T0081 Modify AI agent configuration · AML.T0132 Misconfigured or publicly exposed AI servicesASI03 Identity & privilege abuse · ASI02 Tool misuseLLM06 Excessive agencyAn action runs without matching permission; approval has expired or belongs to another action; the agent approves itself; or a business rule changes without authorizationGitHub MCP, Replit, ServiceNow
HB-AI-607 KQL

P Do not execute a high-impact action without valid permission. The approval must cover this requester, exact action, inputs and target, using the approved rule and an unexpired time limit.

D The executing system is asked to act without a valid decision receipt: the record of permission is missing, expired, reused or does not match the request.

R Stop the unauthorized action before it runs. If access has been compromised, revoke that access and escalate to the responsible security and business owners.

View query & instrumentation →
6.08Credential broker↗ Harness assetStanding 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, Replit
HB-AI-608 KQL

P Issue task-scoped, audience-bound and expiring identities; enforce revocation at the resource.

D Credential used beyond its approved destination, after revocation or outside the delegation envelope.

R Revoke token family and descendant grants, rotate affected secrets and validate downstream logs.

View query & instrumentation →
6.09Extensions / MCP / skills↗ Harness assetCapability 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 MCP
HB-AI-609 KQL

P Allowlist endpoint/publisher/digest, scan dependency changes, check tool-definition integrity before activation.

D New or modified tool/endpoint appears without an approved verified release.

R Quarantine extension/MCP endpoint, revoke broker grants and retest impacted task chains.

View query & instrumentation →
6.10Tool dispatcher↗ Harness assetThe 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, ForcedLeak
HB-AI-610 KQL

P Intercept every material call; verify authorized tool, target, arguments and reserved budget at dispatch time.

D Executed/proposed tool call fails policy fingerprint or lacks a valid budget reservation.

R Block invocation; if already executed, isolate target, revoke grants and reconcile actual side effects.

View query & instrumentation →
6.11Sandbox / downstream systems↗ Harness assetPersistent 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 MCP
HB-AI-611 KQL

P Separate dev/prod identities, enforce domain ownership, deny non-approved destinations and destructive verbs.

D Production mutation by development principal, unapproved outbound destination or mismatch of requested vs actual effect.

R Cut egress/write route, suspend identity, validate data integrity and launch verified rollback/compensation.

View query & instrumentation →
6.12Observability & audit↗ Harness assetWhen 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 failuresReplit
HB-AI-612 KQL

P Keep collector and evidence retention outside agent write access; define required sources and loss SLOs.

D Expected producer absent, record integrity check fails, or collection loss breaches policy.

R Declare visibility gap, quarantine affected decisions, restore telemetry coverage and reconcile independent target logs.

View query & instrumentation →
6.00Generative model↗ Harness assetHallucinated 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-600 KQL

P Allow only resolved, release-approved model deployments; bind evaluations and templates to the approved build.

D Gateway-reported unapproved resolved model or evaluator-reported release-bound failure.

R Stop affected agent release, hold consequential dispatches, rerun signed evaluation and approve a known-good model.

View query & instrumentation →
Lifecycle assurance components (6.13–6.18)
6.13Identity & delegation↗ Harness assetAuthority 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 MCP
HB-AI-613 KQL

P Compute child grant as intersection of parent envelope and child capability; cascade revocation.

D Child grant not contained by parent envelope, expired grant active, or revoked child still executing.

R Terminate delegation tree, invalidate child tokens and verify every queued/running task stops.

View query & instrumentation →
6.14Evaluation & conformance↗ Harness assetDegraded 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-614 KQL

P Gate activation and upgrades on signed tests for the exact model, prompts, tools, policies and dataset.

D Critical evaluation threshold failed or evaluator output not bound to the approved release.

R Block promotion, revert to last good build and rerun targeted adverse-case and isolation tests.

View query & instrumentation →
6.15Human oversight console↗ Harness assetConsequential 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-615 KQL

P Bind approval to one target/action/policy/expiry; separate oversight identities and exercise tested kill switches.

D Reused/mismatched approval, agent acting as reviewer, or issued interrupt without observed stop.

R Escalate out-of-band, revoke credentials and confirm cessation in all children and downstream systems.

View query & instrumentation →
6.16AI BOM & attestation↗ Harness assetCapability 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-616 KQL

P Require verified signer, subject digest, expiry and register-approved component versions before deployment.

D Runtime inventory disagrees with signed manifest or trusted verifier rejects attestation.

R Block activation, isolate unregistered asset and trigger supplier/release incident review.

View query & instrumentation →
6.17Authority & consumption↗ Harness assetExposure 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-617 KQL

P Reserve calls, spend, rows and compute before dispatch; reconcile across retries and children.

D Material call without reservation, over-limit concurrent task family or negative shared balance.

R Suspend fan-out/purchases, cancel queued child tasks and reconcile ledger plus provider charges.

View query & instrumentation →
6.18Transparency & recourse↗ Harness assetEither 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-618 KQL

P Build explanations from verified minimized outcomes; redact protected prompts, secrets and third-party data.

D Published explanation contains restricted trace material or material decision lacks corroborated outcome/appeal link.

R Withdraw affected explanation, notify privacy/legal owner, remediate redaction and preserve decision-chain evidence.

View query & instrumentation →

↑ Table of contents

03b · Elastic Security / OTel GenAI

Executable detection logic starts with independent evidence

19 draft Elastic Security custom-query detections aligned one-to-one with the 19 AI Harness v13.4 assets. These KQL templates require a normalization pipeline and the independent control events stated below; they are neither prebuilt Elastic rules nor active detections in this local HTML.

For control-by-control tool selection see Detection engineering; for field origin, datatype, producer, sensitivity and evidence contracts see the Field data dictionary.

01 · InstrumentOpenTelemetry GenAI spans

Use supported gen_ai.* operation, agent, model, tool and token attributes plus trace context. Capture content only where approved.

02 · CorroborateIndependent control events

Policy gate, credential broker, signed release verifier, ledger, CI, and target systems emit practical_trust.* evidence. The agent is not its own witness.

03 · NormalizeOTel Collector → Elastic

Pin an instrumentation version, redact before export, map trusted event types to logs-ai.harness-* with event.dataset=ai_harness.control.

04 · Detect & respondElastic Security / AI-DDR

Run KQL templates after mapping verification, tune event gates and route alerts to a response owner. Revocations and recovery require independent confirmation.

Telemetry contract: official OTel vs custom assurance fields

OTel GenAI conventions and trace context

gen_ai.operation.name (including invoke_agent, execute_tool, retrieval where supported), gen_ai.agent.name, gen_ai.tool.name, gen_ai.request.model, token-usage attributes and the gen_ai.evaluation.result event (development status). Joined through trace.id/span.id where emitted. Confirm actual field paths in the chosen Elastic OTel-native or ECS pipeline.

Harness-specific custom security evidence

practical_trust.* is the custom namespace already described in Harness v13.4, not an OTel standard or an Elastic built-in security rule schema. The reference includes practical_trust.component.id and normalized verdict fields used by the templates. The producer must authenticate, calculate and emit those verdicts independently of the agent.

The example detection index logs-ai.harness-* is a proposed derived security-event stream, not an automatic Elastic data stream. Current Elastic OTel-native ingestion uses streams such as traces-*.otel-* and logs-*.otel-*; an ingest/transform job can populate the derived stream. Query templates will not match until your mappings and producer contracts are implemented. OpenTelemetry GenAI instrumentation and semantic conventions continue to evolve; pin the selected release.

Advanced Elastic correlation recipesEQL / ES|QL · cross-event and behavioral detections · expand

These additional examples compute sequence or threshold evidence in Elastic itself, instead of relying only on upstream boolean verdicts. They require timestamped, independently sourced and normalized events; choose and test a rule type based on the intended correlation.

EQL · External content → unapproved privileged agent recruitment

sequence by trace.id with maxspan=10m
  [any where event.dataset == "ai_harness.control" and practical_trust.input.origin_class == "external"]
  [any where event.dataset == "ai_harness.control" and gen_ai.operation.name == "invoke_agent" and practical_trust.agent.privilege_edge_unapproved == true]

EQL · Credential revocation followed by an accepted use

sequence by practical_trust.credential.reference with maxspan=1h
  [any where event.action == "credential_revoke"]
  [any where event.action == "credential_use" and practical_trust.credential.use_accepted == true]

ES|QL · Cross-tenant retrieval detected from actual tenant fields

FROM logs-ai.harness-*
| WHERE event.dataset == "ai_harness.control" AND practical_trust.component.id == "6.03"
| WHERE practical_trust.retrieval.result_tenant != practical_trust.request.tenant
| KEEP @timestamp, trace.id, practical_trust.retrieval.result_tenant, practical_trust.request.tenant

ES|QL · Agent-call fan-out over the query window

FROM logs-ai.harness-*
| WHERE gen_ai.operation.name == "invoke_agent"
| STATS child_calls = COUNT(*) BY practical_trust.delegation.chain_id
| WHERE child_calls > 20

Tune maxspan, thresholds, joins and indexed types. A complete business task may cross trace IDs; favor authenticated delegation-chain or task-family identifiers when one trace is insufficient. EQL requires an indexed timestamp and event classification or any events; ES|QL requires appropriately mapped numeric/keyword attributes. Copy the code after opening the panel, then validate it against your Elasticsearch version and index.

HB-AI-600 · 6.00Generative model HIGHElastic Custom query (KQL)

Detection logic Unapproved inference or degraded evaluation. Gateway-reported unapproved resolved model or evaluator-reported release-bound failure.

Signal origin GenAI client spans (gen_ai.operation.name, gen_ai.request.model, gen_ai.response.model); signed release registry and evaluator evidence.

Telemetry fields gen_ai.operation.name; gen_ai.request.model; practical_trust.model.approval_ref; practical_trust.eval.suite_version

Prerequisites and caveats Model gateway must resolve provider aliases and the trusted evaluator must emit approved/failed status; model name alone is insufficient.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.00" and (practical_trust.model.approved:false or practical_trust.eval.threshold_status:"fail")

Mitigate Allow only resolved, release-approved model deployments; bind evaluations and templates to the approved build.

Respond Stop affected agent release, hold consequential dispatches, rerun signed evaluation and approve a known-good model.

Accountable producer Model gateway + independent evaluator

Return to component exploitation map · 6.00. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-601 · 6.01Inputs & external content HIGHElastic Custom query (KQL)

Detection logic Untrusted ingress used as an instruction channel. Externally sourced content with an injection indicator, especially when present before a material proposal.

Signal origin Request/API intake evidence, tool-response provenance, content detector; linked OTel trace.

Telemetry fields trace.id; practical_trust.input.origin_class; practical_trust.input.fingerprint; practical_trust.input.instruction_indicator

Prerequisites and caveats Injection indicators are heuristic; log content fingerprints and risk classifications, not full sensitive prompts.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.01" and (practical_trust.input.origin_class:"external" and practical_trust.input.instruction_indicator:true)

Mitigate Stamp provenance and enforce content-type, length and trust-boundary limits; do not treat retrieved text as commands.

Respond Quarantine input or record; suspend related action proposals and review subsequent dispatches in the trace.

Accountable producer Input gateway + provenance detector

Return to component exploitation map · 6.01. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-602 · 6.02Orchestrator / agent loop CRITICALElastic Custom query (KQL)

Detection logic Unsafe agent recruitment or excessive fan-out. Privileged-child recruitment outside approved graph or call depth/fan-out above its registered envelope.

Signal origin invoke_agent/invoke_workflow spans when instrumented; delegation and call-budget decisions.

Telemetry fields gen_ai.operation.name; gen_ai.agent.name; trace.id; practical_trust.delegation.chain_id; practical_trust.agent.fanout_limit_exceeded

Prerequisites and caveats Agent calls across vendors need a trusted delegation-chain ID and correlation beyond a trace ID.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.02" and (practical_trust.agent.privilege_edge_unapproved:true or practical_trust.agent.fanout_limit_exceeded:true)

Mitigate Deny undeclared discovery edges, restrict delegation by capability and share depth/call budgets across children.

Respond Block new children; revoke suspicious branch credentials, confirm child termination and inspect downstream effects.

Accountable producer Orchestrator + independent delegation service

Return to component exploitation map · 6.02. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-603 · 6.03RAG subsystem CRITICALElastic Custom query (KQL)

Detection logic Retrieval outside permitted corpus or tenant. Forbidden or foreign object returned, or retrieval index digest differs from the registered manifest.

Signal origin retrieval operation spans where supported; retrieval authorization producer and corpus inventory.

Telemetry fields gen_ai.operation.name; practical_trust.index.manifest_digest; practical_trust.access.decision_id; practical_trust.retrieval.acl_violation

Prerequisites and caveats Retriever must emit source/object IDs and ACL outcomes; an OTel retrieval span by itself cannot prove entitlement.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.03" and (practical_trust.retrieval.acl_violation:true or practical_trust.retrieval.index_digest_mismatch:true)

Mitigate Enforce tenant- and principal-bound filters below retrieval; verify corpus/index manifest and per-object entitlements.

Respond Disable affected retrieval source, isolate tenant data, trace contaminated answers/memory and reindex after validation.

Accountable producer Retriever / ACL enforcement + index registry

Return to component exploitation map · 6.03. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-604 · 6.04Memory & state HIGHElastic Custom query (KQL)

Detection logic Poisoned or cross-principal memory access. Write without an approved authority reference or read of memory belonging to another principal.

Signal origin create_memory/update_memory/upsert_memory spans where supported; storage write/read audit.

Telemetry fields gen_ai.operation.name; practical_trust.memory.authority_ref; practical_trust.memory.retention_class; practical_trust.memory.unauthorized_write

Prerequisites and caveats Independent store audit is mandatory; absence of an OTel memory span does not establish absence of a write.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.04" and (practical_trust.memory.unauthorized_write:true or practical_trust.memory.cross_principal_read:true)

Mitigate Require a principal-bound write authorization, source provenance, TTL and tenant partition for durable memory.

Respond Freeze memory writes, remove tainted records from storage and derivative sessions, validate expiration/recovery.

Accountable producer Memory store + state authorization

Return to component exploitation map · 6.04. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-605 · 6.05Context assembly HIGHElastic Custom query (KQL)

Detection logic Context-template substitution or truncation. Protected instruction block truncated or effective template digest differs from attested release.

Signal origin Context-assembly custom spans, trusted template digests and token-window budget event.

Telemetry fields practical_trust.context.assemble; practical_trust.prompt.template_digest; practical_trust.context.origin_classes

Prerequisites and caveats Composer must record verified template digest and protected-context truncation explicitly; never log unredacted secrets.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.05" and (practical_trust.context.protected_instruction_truncated:true or practical_trust.context.template_digest_match:false)

Mitigate Structurally separate source data from instructions; pin protected templates and reserve protected-context budget.

Respond Stop task before proposal, restore signed template and replay review with minimized, redacted lineage evidence.

Accountable producer Context composer + signed template registry

Return to component exploitation map · 6.05. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-606 · 6.06Input / output guardrails HIGHElastic Custom query (KQL)

Detection logic Guardrail bypass into an unsafe output or action. Known deny or blocked output followed by an observed side effect on a bypass path.

Signal origin Guardrail evaluation events, rendered-output gate, dispatcher outcome correlation.

Telemetry fields practical_trust.guardrail.evaluate; practical_trust.verdict; practical_trust.guardrail.bypass_detected

Prerequisites and caveats An independent verifier must correlate deny decisions with renderer/dispatcher events before setting bypass=true.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.06" and (practical_trust.guardrail.bypass_detected:true or practical_trust.output.unsafe_egress_url:true)

Mitigate Enforce output/URL controls at the renderer and reject bypass routes; do not equate content filtering with action authorization.

Respond Disable rendering or tool path, revoke exposed URLs and review previous responses for exfiltration.

Accountable producer Independent input/output guardrail + rendering layer

Return to component exploitation map · 6.06. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-607 · 6.07Policy / authorization gate CRITICALElastic Custom query (KQL)

Detection logic High-impact action attempted without valid permission. The executing system is asked to act without a valid decision receipt: the record of permission is missing, expired, reused or does not match the request.

Signal origin The authorization service records its decision; the executing system records which exact request it checked. Compare the two, then verify the result in the affected system.

Telemetry fields practical_trust.authz.decide; practical_trust.decision.id; practical_trust.action.fingerprint; practical_trust.policy.digest

Prerequisites and caveats The executing system must verify permission itself. An approval number supplied by the AI is not enough. This alert is evidence for investigation, not the preventive control.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.07" and (practical_trust.action.material:true and practical_trust.authz.receipt_status:("missing" or "expired" or "invalid" or "replayed"))

Mitigate Do not execute a high-impact action without valid permission. The approval must cover this requester, exact action, inputs and target, using the approved rule and an unexpired time limit.

Respond Stop the unauthorized action before it runs. If access has been compromised, revoke that access and escalate to the responsible security and business owners.

Accountable producer Independent authorization service plus verification by the system executing the action

Return to component exploitation map · 6.07. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-608 · 6.08Credential broker CRITICALElastic Custom query (KQL)

Detection logic Credential scope abuse or use after revocation. Credential used beyond its approved destination, after revocation or outside the delegation envelope.

Signal origin Token issuance/use/revocation metadata from broker and identity provider; never raw secrets.

Telemetry fields practical_trust.credential.issue; practical_trust.credential.reference; practical_trust.credential.scope; practical_trust.credential.ttl

Prerequisites and caveats Enrich use logs with broker grant references and authenticated principal; do not retain bearer tokens.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.08" and (practical_trust.credential.scope_violation:true or practical_trust.credential.revoked_used:true)

Mitigate Issue task-scoped, audience-bound and expiring identities; enforce revocation at the resource.

Respond Revoke token family and descendant grants, rotate affected secrets and validate downstream logs.

Accountable producer Credential broker + target audit

Return to component exploitation map · 6.08. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-609 · 6.09Extensions / MCP / skills CRITICALElastic Custom query (KQL)

Detection logic Unattested MCP tool or changed extension. New or modified tool/endpoint appears without an approved verified release.

Signal origin MCP discovery/tool metadata, signed extension and policy inventory, build attestation.

Telemetry fields gen_ai.tool.name; practical_trust.extension.digest; practical_trust.registry.release_id; practical_trust.allowlist.version

Prerequisites and caveats Digest equality alone is not signer trust or safety; registry verification has to run outside the extension.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.09" and (practical_trust.extension.attestation_status:("missing" or "invalid" or "revoked") or practical_trust.extension.digest_mismatch:true)

Mitigate Allowlist endpoint/publisher/digest, scan dependency changes, check tool-definition integrity before activation.

Respond Quarantine extension/MCP endpoint, revoke broker grants and retest impacted task chains.

Accountable producer Extension registry + supply-chain verifier

Return to component exploitation map · 6.09. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-610 · 6.10Tool dispatcher CRITICALElastic Custom query (KQL)

Detection logic Tool execution outside approved action fingerprint. Executed/proposed tool call fails policy fingerprint or lacks a valid budget reservation.

Signal origin GenAI execute_tool spans and independent dispatcher receipts / execution audit.

Telemetry fields gen_ai.operation.name; gen_ai.tool.name; practical_trust.action.fingerprint; practical_trust.budget.reservation_id

Prerequisites and caveats Emit the final tool decision from the dispatcher, not just the agent span. Reconcile downstream side effects separately.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.10" and (gen_ai.operation.name:"execute_tool" and (practical_trust.dispatch.receipt_match:false or practical_trust.dispatch.budget_reservation_valid:false))

Mitigate Intercept every material call; verify authorized tool, target, arguments and reserved budget at dispatch time.

Respond Block invocation; if already executed, isolate target, revoke grants and reconcile actual side effects.

Accountable producer Dispatcher + effect reconciler

Return to component exploitation map · 6.10. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-611 · 6.11Sandbox / downstream systems CRITICALElastic Custom query (KQL)

Detection logic Cross-environment mutation or unapproved egress. Production mutation by development principal, unapproved outbound destination or mismatch of requested vs actual effect.

Signal origin Database/HTTP/write-target logs independent from agent; paired with trace/request and grant references.

Telemetry fields practical_trust.downstream.request_id; practical_trust.effect.status; practical_trust.recovery.reference

Prerequisites and caveats Request success is not proof of intended business outcome; rely on target-generated immutable records.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.11" and (practical_trust.effect.environment_violation:true or practical_trust.effect.unapproved_egress:true or practical_trust.effect.outcome_mismatch:true)

Mitigate Separate dev/prod identities, enforce domain ownership, deny non-approved destinations and destructive verbs.

Respond Cut egress/write route, suspend identity, validate data integrity and launch verified rollback/compensation.

Accountable producer Downstream system and egress gateway

Return to component exploitation map · 6.11. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-612 · 6.12Observability & audit HIGHElastic Custom query (KQL)

Detection logic Missing or tampered independent evidence. Expected producer absent, record integrity check fails, or collection loss breaches policy.

Signal origin Collector queue/refusal metrics, trusted producers, policy and evidence inventory.

Telemetry fields trace.id; practical_trust.producer.coverage_id; practical_trust.evidence.contract_id; practical_trust.rule.id

Prerequisites and caveats Producer-health service sets gap status; missing logs alone cannot prove non-occurrence or tampering.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.12" and (practical_trust.evidence.coverage_status:"gap" or practical_trust.evidence.integrity_status:"invalid" or practical_trust.collector.loss_slo_breached:true)

Mitigate Keep collector and evidence retention outside agent write access; define required sources and loss SLOs.

Respond Declare visibility gap, quarantine affected decisions, restore telemetry coverage and reconcile independent target logs.

Accountable producer Collector owner + assurance analyst

Return to component exploitation map · 6.12. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-613 · 6.13Identity & delegation CRITICALElastic Custom query (KQL)

Detection logic Child delegation widens authority or survives revocation. Child grant not contained by parent envelope, expired grant active, or revoked child still executing.

Signal origin Authenticated parent-child grant records, revocation and observed running-child state.

Telemetry fields practical_trust.delegation.chain_id; practical_trust.delegation.scope; practical_trust.delegation.expires_at

Prerequisites and caveats Identity-service assertions must be authenticated; trace propagation cannot establish scope subset by itself.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.13" and (practical_trust.delegation.scope_subset:false or practical_trust.delegation.revoked_child_active:true)

Mitigate Compute child grant as intersection of parent envelope and child capability; cascade revocation.

Respond Terminate delegation tree, invalidate child tokens and verify every queued/running task stops.

Accountable producer Identity & delegation registry

Return to component exploitation map · 6.13. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-614 · 6.14Evaluation & conformance HIGHElastic Custom query (KQL)

Detection logic Release-bound safety, quality or conformance failure. Critical evaluation threshold failed or evaluator output not bound to the approved release.

Signal origin OTel gen_ai.evaluation.result where supported plus signed suite/dataset/run metadata.

Telemetry fields gen_ai.evaluation.result; practical_trust.eval.suite_version; practical_trust.eval.model_ref; practical_trust.eval.dataset_version

Prerequisites and caveats OTel evaluation event is a signal, not a verified signoff; signed results and a versioned policy are needed.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.14" and (practical_trust.eval.threshold_status:"fail" or practical_trust.eval.release_binding_valid:false)

Mitigate Gate activation and upgrades on signed tests for the exact model, prompts, tools, policies and dataset.

Respond Block promotion, revert to last good build and rerun targeted adverse-case and isolation tests.

Accountable producer Evaluation service + release board

Return to component exploitation map · 6.14. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-615 · 6.15Human oversight console CRITICALElastic Custom query (KQL)

Detection logic Invalid human approval or ineffective interrupt. Reused/mismatched approval, agent acting as reviewer, or issued interrupt without observed stop.

Signal origin Reviewer identity/bound approval receipt, pause command and observed executor/credential state.

Telemetry fields practical_trust.oversight.decide; practical_trust.approver.reference; practical_trust.oversight.evidence_id

Prerequisites and caveats Only emit interrupt_stop_verified=false after a defined verification timeout and independent state check.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.15" and (practical_trust.oversight.approval_binding_valid:false or practical_trust.oversight.interrupt_stop_verified:false)

Mitigate Bind approval to one target/action/policy/expiry; separate oversight identities and exercise tested kill switches.

Respond Escalate out-of-band, revoke credentials and confirm cessation in all children and downstream systems.

Accountable producer Independent human oversight console

Return to component exploitation map · 6.15. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-616 · 6.16AI BOM & attestation CRITICALElastic Custom query (KQL)

Detection logic AI BOM release or attestation integrity failure. Runtime inventory disagrees with signed manifest or trusted verifier rejects attestation.

Signal origin Independent release manifest, signer identity/digest verification, observed runtime inventory.

Telemetry fields practical_trust.registry.register; practical_trust.manifest.digest; practical_trust.attestation.verifier; practical_trust.release.status

Prerequisites and caveats Self-reported hashes are insufficient; verifier must validate cryptographic provenance and authorized release.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.16" and (practical_trust.attestation.verification:"failed" or practical_trust.manifest.digest_match:false or practical_trust.release.status:"unregistered")

Mitigate Require verified signer, subject digest, expiry and register-approved component versions before deployment.

Respond Block activation, isolate unregistered asset and trigger supplier/release incident review.

Accountable producer Signed release registry and attestation verifier

Return to component exploitation map · 6.16. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-617 · 6.17Authority & consumption HIGHElastic Custom query (KQL)

Detection logic Unreserved or exceeded shared task budget. Material call without reservation, over-limit concurrent task family or negative shared balance.

Signal origin Ledger reservations/reconciliations and token/call/resource usage (GenAI usage where reported).

Telemetry fields gen_ai.usage.input_tokens; gen_ai.usage.output_tokens; practical_trust.budget.reserve; practical_trust.budget.limit; practical_trust.budget.consumed

Prerequisites and caveats Token counts are not actual spend; use a separate independent billing/compute ledger where applicable.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.17" and (practical_trust.budget.reservation_status:"missing" or practical_trust.budget.over_limit:true)

Mitigate Reserve calls, spend, rows and compute before dispatch; reconcile across retries and children.

Respond Suspend fan-out/purchases, cancel queued child tasks and reconcile ledger plus provider charges.

Accountable producer Independent consumption ledger + dispatcher

Return to component exploitation map · 6.17. Severity and rule thresholds are proposed starting points, not validated production tuning.

HB-AI-618 · 6.18Transparency & recourse HIGHElastic Custom query (KQL)

Detection logic Unverifiable decision or disclosure in recourse. Published explanation contains restricted trace material or material decision lacks corroborated outcome/appeal link.

Signal origin Verified outcome, notice/contest and redaction audit events.

Telemetry fields practical_trust.recourse.open; practical_trust.decision.id; practical_trust.recourse.outcome

Prerequisites and caveats Detection requires classification and decision-link reconciliation; it does not imply a universal right to raw traces.

KQL template · indexed security events
event.dataset:"ai_harness.control" and practical_trust.component.id:"6.18" and (practical_trust.recourse.decision_unverifiable:true or practical_trust.recourse.explanation_sensitive_data:true)

Mitigate Build explanations from verified minimized outcomes; redact protected prompts, secrets and third-party data.

Respond Withdraw affected explanation, notify privacy/legal owner, remediate redaction and preserve decision-chain evidence.

Accountable producer Decision-record publisher + privacy reviewer

Return to component exploitation map · 6.18. Severity and rule thresholds are proposed starting points, not validated production tuning.

Deployment and verification controls

Collection and rule preconditions

  1. Inventory each of the 19 evidence owners and their authoritative event producer; document coverage gaps as NOT RUN.
  2. Secure OTel Collector transport, signing/verifier, authenticated resource identity, retention, sampling and redaction.
  3. Normalize v13.4 practical_trust.* fields and component ID; enforce keyword/boolean/numeric mappings.
  4. Generate positive, negative and adversarial test events; preview KQL against actual index mappings; tune noise and response authority.

Operational response boundary

  1. Alerts open a case, not a declaration of a confirmed attack or a regulatory incident.
  2. Policy enforcement occurs at the independent gate, broker or dispatcher, not in a dashboard query.
  3. Containment must confirm observed child/credential/target stop state; preserve evidence and assess recovery and notices.
  4. Document response owner, exception, decision, corrective action and versioned closure in AI-DDR.

↑ Table of contents

03c · Detection engineering & architecture assessment

Detection requires more than rules

Control effectiveness depends on where a decision is enforced, who emits the evidence and whether correlated events prove an outcome. SIEM rules are indispensable—but they are not, by themselves, a state-of-the-art agent security system.

01 · Prevention

Block unauthorized actions before tools run

An independent policy decision point and reference monitor must enforce scope, consequence class, exact action/arguments and budget. Content classifiers can inform policy but must not replace it.

02 · Detection

Use multiple query and analysis engines

KQL detects explicit violations; EQL reconstructs ordered sequences; ES|QL computes aggregation and joins; ML detects behavioral anomalies; semantic classifiers inspect instruction and content threats.

03 · Assurance

Obtain producer-authenticated proof

Release verifiers, identity issuers, dispatchers, downstream applications and oversight systems must independently establish what was authorized, done, contained and recovered.

Which method is optimal for which problem?

MechanismBest suited toPrincipal advantageResidual limitationRecommended role
Inline policy/PDP + issuerTool permissions, tenant access, privilege delegation, budgetsPrevents before effects; inspectable policy and decision IDsCannot see undisclosed downstream effectsPrimary protection
Deterministic KQL SIEMInvalid receipts, scope violations, digest mismatches, denied tenantExplainable, cheap to change, versionableNeeds known fields and trusted evidence; false on missing dataHigh-confidence facts
EQL / ES|QLOrdered attacks, joins, fan-out, cost/time thresholdsCross-source correlation and computed aggregationBroken IDs, delayed events, sampling and high-cardinality joinsAttack chain and trends
ML and graph baselinesUnexpected recruitment, resource use, retrieval driftCan flag unknown outliersCold start, drift, costly tuning, opaque scoresSupplementary anomaly
Semantic classifiers/AI firewallsPrompt injection, tool-result laundering, dangerous outputsContent-aware inline screeningAdaptive adversaries, multilingual and multimodal FP/FNProvisional risk signal
Cryptographic / system-of-record proofRelease attestation, effect receipts, signed evaluationEstablishes integrity and externally observed outcomeSigner compromise, provider evidence gapsAssurance and closure
Independent response orchestratorRevoke access, cancel jobs, suspend agents, verify stopCan actually contain business impactRevocation is not an observed stop; distributed queues persistAction and verification

Control selection for all 19 components

A component-by-component engineering judgment; no unmeasured detection-rate or vendor superiority claim is implied.

Asset / rulePrimary preventive safeguardDetection methodIndependent evidence neededRemaining blind spot
6.00 · RuleSigned model/deployment allowlist at gatewayKQL unapproved resolved model; ES|QL drift and evaluator scoresGateway-resolved deployment + independent evaluated releaseAlias drift, evaluator blind spots
6.01 · RuleProvenance tagging and bounded untrusted inputInjection classifier ensemble + EQL ingress→material tool callVerified origin, detector version, action lineageNovel multilingual and multimodal injections
6.02 · RuleAgent-discovery allowlist and scoped delegation graphEQL privilege-crossing chain + ES|QL fan-out/ML baselinesRegistered graph, verified parent/child identities, shared task IDVendor handoffs without trace continuity
6.03 · RuleTenant/ACL filtering enforced inside retrieverKQL denied access + ES|QL tenant mismatch + poisoning testsSource ACL, object tenant, signed corpus and index recordsPoisoned but permitted passages
6.04 · RuleMemory ACL, source taint and enforced expiryEQL untrusted write→later retrieval; principal-access aggregationIndependent store audit, owner, TTL and source lineageLong-delay semantic poison
6.05 · RuleContext compilation preserving instruction/data boundariesKQL context digest/truncation + semantic adversarial evaluationsContext compiler log and immutable template digestSemantically malicious text inside valid delimiters
6.06 · RuleInline tool/input/output guardrail enforcementSemantic detection + KQL guardrail bypass + simulated attacksGuardrail verdict linked to target action/egress eventsClassifier evasion; false positives
6.07 · RuleExternal PDP and deny-by-default dispatcher PEPKQL missing/invalid permit + EQL executed-after-denySigned policy decision bound to exact action fingerprintUninstrumented or alternate tool paths
6.08 · RuleShort-lived, target-scoped identity tokensEQL revocation→accepted use + issuer/scope checksIdP/broker and target token acceptance logsCached bearer tokens and opaque SaaS authorization
6.09 · RuleSigned MCP registry, manifests and supply-chain reviewManifest change + semantic tool-definition inspectionSigner/publisher, tool digest, approved endpoint registryTrusted but vulnerable extensions
6.10 · RuleDispatcher checks permit, argument hash and budgetKQL invalid receipt; EQL approval→dispatch→effect sequenceDispatcher + PDP + independent target receiptSide effects not described by return values
6.11 · RuleSandbox, egress policy, target native audit/DLPEQL prod write from dev + EDR/DLP + ES|QL bulk effectsDatabase/cloud/network source-of-truth eventsProvider-side opaque behavior
6.12 · RuleAppend-oriented independent security audit with heartbeatES|QL coverage/loss/jitter + signature integrity KQLEmitter identity, expected cadence, verified event chainSilent loss and compromised collectors
6.13 · RuleIntersected capability tokens; cascade revocationDelegation-graph violations + EQL post-revocation activityIssuer-scoped grants and child stop confirmationAsync child jobs outliving caller
6.14 · RuleRelease-bound eval suite, canaries and adversarial testsStatistical performance drift, graders and threshold rulesImmutable eval corpus, judge version, release digestOverfit benchmark and stochastic behavior
6.15 · RuleIndependent human review and verified interruptApproval replay rules + EQL interrupt→continued actionAuthenticated human decision + observed stop evidenceAutomation bias and in-flight effects
6.16 · RuleSigned AI BOM and release attestation at activationSignature/digest mismatch and unauthorized inventory diffsIndependent verifier, registered manifest, publisher keyAttested code can still be unsafe
6.17 · RuleAtomic shared task-family budget ledgerES|QL spend/rows/concurrency thresholds + KQL reserve gapsCentral reservation, reconciled resource costs and actual rowsDelayed metering and external billing
6.18 · RuleVerified decision record, minimized notices and recourseSemantic DLP + KQL unsupported claims + outcome lineageSource-system proof, notice/appeal recordsExplanations can be faithful but inadequate

Assurance acceptance criteria and validation regime

These are design and test obligations, not claims about live production effectiveness. Measure each result with representative benign and adversarial traffic, independent producers and reproducible tests. Do not infer safety from detection-rule enablement.

Assurance measureTest / numeratorDenominator and pass criterionEvidence owner
Non-bypassable tool enforcementInstrument every material dispatcher, MCP gateway, service API and delegated child execution; attempt direct bypass and replay.Every inventoried material action path must reject missing, mismatched, expired and replayed permits in negative tests. Unknown paths fail assurance.PDP/PEP security engineering and service owner
Telemetry and producer completenessEvents carrying all fields marked required, plus verified source heartbeat/expected sequence, lost-event counts and signed producer identity.Measure per producer, event contract and environment; 100% of tested critical authorization and target-effect events must be durably captured without sampling.Telemetry platform and independent event sources
Cross-agent trace continuityAuthenticated linked task-family/parent-child/receipt records across handoffs, including provider and asynchronous boundaries.Report joined chains divided by all tested cross-boundary chains; expose each unsupported vendor seam rather than backfilling assumed IDs.Agent platform and identity issuer
Detection efficacyUse a versioned attack corpus, clean controls and attack variants; count true/false positives and false negatives by component and risk class.Publish precision, recall, false-alert volume, detection lag and confidence intervals. Set risk-based acceptance limits before testing, not after results.Detection engineering / red team / independent evaluation
Preventive decision latencyTimestamp authorized proposals, policy evaluation, authorization receipt and dispatcher invocation.Measure p50/p95/p99 inline overhead and expired-before-dispatch rates against explicit application SLOs; SIEM alert speed is not preventive speed.Policy engine and runtime SRE
Verified containment and recoveryRecord interrupt, revoke/disable, agent-and-child observed stop, queue drain, target audit and integrity re-test.Every exercised high-impact incident must have an observed stop or an explicit not_observed finding; record time-to-contain and residual effects.Incident response + authoritative target systems
Rule reliability and lifecycleRecord ingestion failures, late-arriving data, schema drift, detection execution health and false-positive exceptions.Each control has an owner, test fixtures for pass/fail/unknown, a regression test for every identified defect, and a periodic review date.SOC engineering and control owner
Privacy and content minimizationTest prompt/tool-output capture controls, redaction, access and retention settings, with seeded sensitive tokens.No seeded secret or protected personal data may reach the ordinary SIEM stream; retain only governed references or keyed digests as justified.Privacy, legal, security operations

Complementary products and control categories

Product / categoryWhat it can provideIntegrationLimitationUseReference
Elastic SIEM + LLM ObservabilityRules, traces, aggregations, anomaly analytics, investigationsOTLP/EDOT, ECS, Elastic APM; confirm mapped fieldsCannot be the inline reference monitor or produce missing source factsSecurity record & huntingElastic LLM observability · Elastic ES|QL rules
OPA/Rego + workload identity / token brokerGranular deny/allow for tool actions and parametersPDP decision logs, custom event exportNo built-in semantic content awareness or outcome proofIndependent preventive gateOPA agent tool policy
Palo Alto Prisma AIRSInline AI traffic and tool misuse, memory attack, DLP inspectionVendor integration; event-field coverage must be testedDoes not establish your full cross-vendor permit and evidence contract by defaultAI risk interdictionPrisma AIRS runtime protections
Check Point AI Guardrails (Lakera)Injection, data leakage, malicious link, dangerous deviation, tool allow/denySDK/API/service modes with event reportingDoes not independently prove target effects or all delegation semanticsSemantic guardrailCheck Point AI Guardrails
Google Model Armor / NVIDIA NeMo GuardrailsPrompt, output, retrieval, tool and content safety checks (coverage differs)APIs/configuration; custom integrationsClassifier threshold/FN variance; not universal authorizationModular safety componentsGoogle Model Armor · NVIDIA NeMo Guardrails
Arize Phoenix/OpenInference, LangSmithLLM/tool/retrieval traces and evaluationsOTel/OpenInference tracing and exportersBy default, instrumentation belongs to application, not an independent PDPDevelopment observability and evalOpenInference tracing · LangSmith OpenTelemetry
Amazon AgentCore Policy (Cedar/Dogwood)Gateway-level default-deny policy for identity, tool arguments and session-scoped temporal conditionsPolicy decision logs via CloudWatch; task IDs and observed target effects need explicit integrationScope is AgentCore Gateway; actions outside that enforcement path still need a separate PEP and evidence contractManaged preventive authorizationAgentCore Policy documentation

Is the cross-component assurance paradigm distinctive?

Where it closes meaningful gaps

The design connects asset inventory, registered policy, delegated authority, source lineage, independent dispatch, source-of-truth effects, evaluation, verified interruption and recourse. Most point observability tools emphasize spans, quality or content classification rather than this entire evidence chain.

Conditions for it to work

Protection exists only if every materially capable tool path is inside an external policy enforcement boundary. Evidence exists only when producer identity, logging integrity, coverage and outcome verification are independently established. Missing evidence is not_observed, never assumed safe.

What it still cannot solve automatically

Unknown adversarial payloads, supplier-private events, a compromised attestation root, inaccurate approved policies, uninstrumented child agents, model stochasticity, system rollback limits, privacy obligations and provider API changes all require explicit residual-risk decisions.

Integrated and managed agent harnesses: what telemetry is native?

“Monolithic harness” is descriptive, not a uniform vendor or OpenTelemetry category. All listed frameworks can generate material runtime traces, but none is assumed to natively emit the full proposed practical_trust.* independent evidence contract.

Harness or platformNative observation capabilityExport/interopWhat still needs separate instrumentation or trustFitDocs
Microsoft Agent Framework HarnessAgent + FoundryOTel GenAI traces/logs/metrics; harness-level model/agent visibility; fleet controlsOTLP export plus managed observabilityTarget receipts, external signed grant, cross-vendor revocation, BOM proofClosest named harness analogueMicrosoft HarnessAgent / Agent Framework · Microsoft Foundry Control Plane
OpenAI Agents SDK and managed Agents APIModel, tool, guardrail and handoff traces; platform session tracesSDK trace processing/exports and platform APIs; evaluate adapter needsIndependent IAM/PEP receipts, signed lifecycle register and downstream verification; SDK tracing ZDR limitationsAgent orchestration and insightOpenAI Agents SDK tracing · OpenAI Agents SDK tracing caveats
AWS Bedrock AgentCoreAgent/runtime/memory metrics, spans and operational telemetryOTel-compatible CloudWatch traces, metrics and logsIndependent task permit, signed policy, true source-system effectManaged infrastructureBedrock AgentCore observability
Google Agent Development KitLLM/tool/external operation distributed tracingOTLP and OTel GenAI conventionsSigned release record, PDP receipts, independent consequence proofOTel-native developer runtimeGoogle ADK tracing
LangGraph + LangSmithMulti-agent workflow state, traces and evaluationOTel integration, LangSmith trace backendNon-bypassable reference monitor, lifecycle attestation and system auditComposable workflow engineLangSmith OpenTelemetry

Why runtime tracing does not equal security evidence

Harness operationTypical runtime traceNeeded independent proofBlind spot
Model inference / templateAI gateway spanAuthenticated resolved-model registryAlias not equal to deployment identity
Agent & delegationAgent execution traceIdentity issuer + grant checksOpaque nested tasks or vendor IDs
RAG & memoryRetriever/tool spansObject ACL and memory-store auditRetrieved IDs do not prove authorization
Tool proposals & side effectsTool call spanPDP permit + dispatcher and target receiptsA successful span is not evidence of effect
Release/evaluationsSDK/provider versionsSigned build, dataset, evaluator and registryQuality scores can be self-reported
Response and recourseAgent run stateIssuer revocation, observed halt, notice ledgerStopping parent does not imply children stopped
Assessment

Use Elastic as the customizable, vendor-neutral evidence correlation and incident-response layer; implement preventive authorization and capability checks in a separate tool gateway/identity plane; integrate semantic classifiers and agent-specific evaluation where warranted. A KQL-only design is easiest to begin with, but not optimal across 19 distinct control classes. Demonstrate performance with attack simulation, positive and negative tests, representative benign traffic, missing-telemetry injection and confirmed containment. Do not equate detector alerts with mitigated attacks.

Preferred proof-to-response pipeline

1. RegisterSigned model, agent, tool and corpus manifests
2. EnforceIndependent PDP, scoped identity and transactional budget
3. InstrumentGenAI OTel spans + source audit events
4. CorrelateElastic KQL / EQL / ES|QL / ML + semantic risk
5. RespondApproved block, revoke, stop and recover
6. ProveEffect verification, traceable governance and recourse

↑ Table of contents

03d · Comprehensive field data dictionary

The telemetry and evidence contract

Canonical field definitions for OpenTelemetry GenAI, Elastic/ECS mappings and the proposed independent assurance schema. The dictionary is embedded directly in this file, not fetched from a remote service.

206defined fields / event names
139proposed assurance fields
19harness components
14independent event contracts
Namespace and trust disclaimer.

gen_ai.* includes current development-stage GenAI OpenTelemetry conventions, which vary by instrumentation/version. event.* and related fields follow the Elastic Common Schema or declared mapping. practical_trust.* is an application-defined proposed assurance namespace, not a standard OpenTelemetry or Elastic built-in schema. Narrative pseudo-actions such as practical_trust.authz.decide map to event.action=policy_decided and should not be indexed as verdict fields.

Data type note. “keyword (multi-valued)” describes an array of keyword values in an event; Elasticsearch has no separate array mapping type. Each proposed field must be registered with a versioned index template before ingest, with keyword/cardinality budgets, validation and conflict monitoring.

Minimum event-level producer contracts

event.actionAuthoritative producerCritical custom attributes (under practical_trust.*)Proof objective
agent_registeredRegistry/verifierregistry.release_id, manifest.digest, attestation.verificationWas this exact release authorized?
request_acceptedIngress/API gatewaytask.id, request.tenant, input.origin_classWho initiated the task and what was trusted?
agent_delegatedDelegation issuerdelegation.chain_id, agent.parent_ref, scope_subsetWas delegated authority bounded?
retrieval_checkedRetriever/ACLretrieval.corpus_id, result_tenant, acl_violationWas every object permitted?
memory_accessedMemory storememory.authority_ref, memory.record_ref, retention_classWas persistent state authorized?
policy_decidedExternal PDPdecision.id, policy.digest, action.fingerprintWhat precise action did policy permit?
credential_issuedToken brokercredential.reference, scope, expires_atWhat grant was actually issued?
tool_dispatchedDispatcher/PEPdispatch.action_id, receipt_match, budget.reservation_idWas the execution within granted scope?
effect_verifiedDownstream systemdownstream.request_id, effect.status, verified_byWhat actually happened?
evaluation_scoredIndependent evaluatoreval.suite_version, dataset_version, release_binding_validDid this approved release pass?
budget_reservedLedgerbudget.reservation_id, limit, unitWas authority reserved atomically?
oversight_decidedReviewer consoleoversight.reviewer_ref, approval_binding_validWas approval valid and independent?
interrupt_verifiedExecution & IdP watcherrevoke_command_id, interrupt_stop_verifiedWere children and credentials actually stopped?
recourse_resolvedNotice/appeal servicerecourse.notice_ref, outcome_refWas notice tied to proven effects?

Searchable field catalog

Field nameNamespaceElastic typeDefinition & valuesAuthoritative producerPrivacyAsset coverageCollection
@timestampElastic/ECSdateObserved UTC event timestampExample: 2026-10-23T14:33:00ZOTel/ECS ingest or sourcelowallrequired
trace.idElastic/ECSkeywordExecution trace correlation identifier; not a credentialExample: 4e6a...d8OTel/ECS ingest or sourcelowallrequired
span.idElastic/ECSkeywordOTel span identifier within traceExample: 5f0a...OTel/ECS ingest or sourcelowallconditional
event.idElastic/ECSkeywordImmutable event UUID or deduplication IDExample: evt_888OTel/ECS ingest or sourcelowallrequired
event.datasetElastic/ECSkeywordECS normalized data set for derived control logExample: ai_harness.controlOTel/ECS ingest or sourcelowallrequired
event.actionElastic/ECSkeywordEvent contract action classExample: policy_decidedOTel/ECS ingest or sourcelowallrequired
event.kindElastic/ECSkeywordECS class: event or alertExample: eventOTel/ECS ingest or sourcelowallconditional
event.categoryElastic/ECSkeyword (multi-valued)ECS taxonomy for event groupExample: iamOTel/ECS ingest or sourcelowallconditional
event.typeElastic/ECSkeyword (multi-valued)ECS taxonomy for change, access or deniedExample: accessOTel/ECS ingest or sourcelowallconditional
event.outcomeElastic/ECSkeywordOperation success, failure or unknownExample: failureOTel/ECS ingest or sourcelowallconditional
event.ingestedElastic/ECSdateTrusted receipt time at ingestExample: 2026-10-23T14:33:01ZOTel/ECS ingest or sourcelowallconditional
event.originalElastic/ECSmatch_only_textRestricted raw source event; may contain sensitive contentExample: [redacted]OTel/ECS ingest or sourcerestrictedalloptional
data_stream.typeElastic/ECSkeywordData stream classExample: logsOTel/ECS ingest or sourcelowallconditional
data_stream.datasetElastic/ECSkeywordStream data set nameExample: ai.harnessOTel/ECS ingest or sourcelowallconditional
data_stream.namespaceElastic/ECSkeywordStream namespace enforcing environment accessExample: prod-securityOTel/ECS ingest or sourcelowallconditional
service.nameElastic/ECSkeywordOTel/ECS service identifier for emitting runtimeExample: tool-dispatcherOTel/ECS ingest or sourcelowallrequired
service.versionElastic/ECSkeywordVersion of emitting softwareExample: 2.4.1OTel/ECS ingest or sourcelowallconditional
deployment.environment.nameOTel resourcekeywordOTel resource environment for prod/dev boundariesExample: productionApplication/OTel SDKlowallconditional
telemetry.sdk.nameOTel resourcekeywordRuntime OpenTelemetry SDK implementationExample: opentelemetryApplication/OTel SDKlowallconditional
telemetry.sdk.versionOTel resourcekeywordTelemetry SDK version for compatibility trackingExample: 1.40.0Application/OTel SDKlowallconditional
user.idElastic/ECSkeywordInitiating principal identifier, pseudonymized when possibleExample: user_hmacOTel/ECS ingest or sourcerestrictedalloptional
host.nameElastic/ECSkeywordInstrumented host or nodeExample: node-01OTel/ECS ingest or sourceinternalallconditional
source.ipElastic/ECSipIngress source address when availableExample: 192.0.2.10OTel/ECS ingest or sourceinternalallconditional
destination.ipElastic/ECSipTarget IP in independent egress auditExample: 198.51.100.10OTel/ECS ingest or sourceinternalallconditional
url.domainElastic/ECSkeywordOutbound hostname, no secrets or URL queryExample: api.example.netOTel/ECS ingest or sourceinternalallconditional
error.typeOTel resourcekeywordProvider error class on a failed spanExample: timeoutApplication/OTel SDKlowallconditional
gen_ai.operation.nameOTel GenAIkeywordStandard GenAI span operation name (where supported)Example: execute_toolApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.provider.nameOTel GenAIkeywordGenAI provider name discriminatorExample: openaiApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.agent.idOTel GenAIkeywordAgent platform identifier; not a token or identity proofExample: agent_1Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.agent.nameOTel GenAIkeywordHuman-readable agent labelExample: case_triageApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.agent.versionOTel GenAIkeywordInstrumented agent release identifierExample: 2026.10Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.conversation.idOTel GenAIkeywordConversation/session correlation identifierExample: conv_01Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.request.modelOTel GenAIkeywordRequested model identifier or aliasExample: model-aliasApplication/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.response.modelOTel GenAIkeywordReturned model identifier, if provider emits itExample: model-2026Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.request.max_tokensOTel GenAIlongRequested cap on output token countExample: 4096Application/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.request.temperatureOTel GenAIdoubleSampling temperature for reproducibilityExample: 0.1Application/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.request.streamOTel GenAIbooleanStreaming inference request flagExample: trueApplication/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.usage.input_tokensOTel GenAIlongObserved input token usage (not authorized spend)Example: 1800Application/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.usage.output_tokensOTel GenAIlongObserved output token usageExample: 260Application/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.tool.nameOTel GenAIkeywordTool name visible to model or runtimeExample: crm.updateApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.tool.typeOTel GenAIkeywordTool class, e.g. function/extension/datastoreExample: functionApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.tool.call.idOTel GenAIkeywordProvider-generated tool-call IDExample: call_123Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.tool.call.argumentsOTel GenAIflattenedOptional raw call arguments: often PII/secretsExample: [restricted]Application/OTel SDKrestricted6.00,6.02,6.10optional
gen_ai.tool.call.resultOTel GenAIflattenedOptional raw response; not actual side-effect proofExample: [restricted]Application/OTel SDKrestricted6.00,6.02,6.10optional
gen_ai.tool.definitionsOTel GenAIflattenedOptional definitions; prefer signed digestsExample: [restricted]Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.data_source.idOTel GenAIkeywordRetrieval source ID surfaced by frameworkExample: kb_financeApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.retrieval.documentsOTel GenAIflattenedOptional retrieval document references/scoresExample: [{id:doc1}]Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.input.messagesOTel GenAIflattenedOptional raw model inputs; high privacy and prompt exposureExample: [restricted]Application/OTel SDKrestricted6.00,6.02,6.10optional
gen_ai.output.messagesOTel GenAIflattenedOptional model response content; may contain confidential dataExample: [restricted]Application/OTel SDKrestricted6.00,6.02,6.10optional
gen_ai.system_instructionsOTel GenAIflattenedOptional protected instructions, sensitiveExample: [restricted]Application/OTel SDKrestricted6.00,6.02,6.10optional
gen_ai.evaluation.score.valueOTel GenAIdoubleEvaluator numeric score, not a signed release-conformance verdictExample: 0.86Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.evaluation.score.labelOTel GenAIkeywordHuman-readable interpretation of evaluator score, scoped to metricExample: passApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.evaluation.explanationOTel GenAItextOptional evaluator explanation; may expose sensitive model outputExample: [restricted]Application/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.evaluation.nameOTel GenAIkeywordEvaluation metric name if instrumentedExample: groundednessApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.workflow.nameOTel GenAIkeywordName of the GenAI workflow exposed by the applicationExample: multi_agent_ragApplication/OTel SDKlow6.00,6.02,6.10conditional
gen_ai.usage.cache_read.input_tokensOTel GenAIlongTokens served from a provider-managed inference cacheExample: 1200Application/OTel SDKinternal6.00,6.02,6.10conditional
gen_ai.usage.reasoning.output_tokensOTel GenAIlongReported output tokens used for reasoning; included in output totalExample: 95Application/OTel SDKinternal6.00,6.02,6.10conditional
practical_trust.schema.versionProposed assurancekeywordVersioned assurance field contractExample: 1.0.0Schema registrylowallrequired
practical_trust.component.idProposed assurancekeywordHarness asset canonical ID 6.00–6.18Example: 6.07Asset registrylowallrequired
practical_trust.rule.idProposed assurancekeywordApproved detection rule/control IDExample: HB-AI-607Detection engineering registrylowallconditional
practical_trust.verdictProposed assurancekeywordIndependent pass/fail/unknown/not_observed verdictExample: failTrusted evidence verifierlowallrequired
practical_trust.task.idProposed assurancekeywordOne business task across spansExample: task_009Trusted task registrylowallconditional
practical_trust.task.family_idProposed assurancekeywordShared task parent across retries/childrenExample: task-family_44Trusted task registrylowallrequired
practical_trust.task.purposeProposed assurancekeywordApproved business use-purpose codeExample: case_triageTrusted task registrylowallconditional
practical_trust.task.consequence_classProposed assurancekeywordGoverned impact class for action authorizationExample: materialTrusted task registrylowallconditional
practical_trust.request.tenantProposed assurancekeywordVerified tenant of requesting principalExample: tenant-aIngress + IdPinternal6.01,6.07conditional
practical_trust.request.subject_refProposed assurancekeywordPseudonymized verified initiating principalExample: subject-hmacIngress + IdPrestricted6.01,6.07conditional
practical_trust.producer.identityProposed assurancekeywordValidated emitter workload identity (not SDK self-label)Example: spiffe://trust/pdpCollector identity registrylow6.12required
practical_trust.producer.trust_levelProposed assurancekeywordEvidence level independent/delegated/self_reported/unknownExample: independentCollector identity registrylow6.12conditional
practical_trust.producer.signature_statusProposed assurancekeywordSignature/mTLS-derived authenticity check resultExample: validCollector identity registrylow6.12conditional
practical_trust.producer.coverage_idProposed assurancekeywordRegistered expected source monitored for dropoutsExample: pdp-prod-01Collector identity registrylow6.12conditional
practical_trust.evidence.contract_idProposed assurancekeywordRequired event schema and production obligation IDExample: pdp-event-v1Evidence store / integrity checkerlow6.12conditional
practical_trust.evidence.artifact_hashProposed assurancekeywordDigest of independent audit evidence stored separatelyExample: sha256:artifactEvidence store / integrity checkerlow6.12conditional
practical_trust.evidence.artifact_uriProposed assurancekeywordRestricted pointer to signed/worm evidence artifactExample: vault://audit/123Evidence store / integrity checkerrestricted6.12conditional
practical_trust.evidence.coverage_statusProposed assurancekeywordcomplete/gap/unknown relative to expected producersExample: gapEvidence store / integrity checkerlow6.12conditional
practical_trust.evidence.integrity_statusProposed assurancekeywordvalid/invalid/unknown independent hash-chain verdictExample: invalidEvidence store / integrity checkerlow6.12required
practical_trust.collector.loss_slo_breachedProposed assurancebooleanCollector loss/latency exceeds approved security SLOExample: trueOTel/secure log collectorlow6.12conditional
practical_trust.collector.dropped_eventsProposed assurancelongActual audit log records dropped before durable captureExample: 2OTel/secure log collectorlow6.12conditional
practical_trust.collector.ingest_delay_msProposed assurancelongEvent timestamp to indexed timestamp deltaExample: 185OTel/secure log collectorlow6.12conditional
practical_trust.collector.heartbeat_atProposed assurancedateLast signed heartbeat for source coverage measurementExample: 2026-10-23T14:33:00ZOTel/secure log collectorlow6.12conditional
practical_trust.model.approval_refProposed assurancekeywordRegistered model deployment approval referenceExample: approved/deploy-42Model gateway + signed deployment registrylow6.00conditional
practical_trust.model.approvedProposed assurancebooleanModel gateway validated resolved deployment against registerExample: falseModel gateway + signed deployment registrylow6.00conditional
practical_trust.model.resolved_deploymentProposed assurancekeywordTrue provider deployment resolved from client aliasExample: deploy-42Model gateway + signed deployment registrylow6.00conditional
practical_trust.input.origin_classProposed assurancekeywordExternal/internal_verified/delegated_agent/unknown trust classExample: externalIngress gateway / content detectorlow6.01conditional
practical_trust.input.fingerprintProposed assurancekeywordContent HMAC/digest without storing raw promptExample: hmac256:abcIngress gateway / content detectorinternal6.01conditional
practical_trust.input.instruction_indicatorProposed assurancebooleanClassifier detected instruction-shaped externally sourced textExample: trueIngress gateway / content detectorlow6.01conditional
practical_trust.input.classifier_idProposed assurancekeywordSigned injection classifier release and test identifierExample: classifier-4Ingress gateway / content detectorlow6.01conditional
practical_trust.input.classifier_scoreProposed assurancedoubleCalibrated score; not an authorization decisionExample: 0.92Ingress gateway / content detectorlow6.01conditional
practical_trust.input.modalityProposed assurancekeywordInput channel format or modalityExample: textIngress gateway / content detectorlow6.01conditional
practical_trust.content.lineage_idProposed assurancekeywordUntrusted-data origin reference propagated through tool argumentsExample: ln_088Lineage service / DLPinternal6.01,6.10conditional
practical_trust.content.source_scopeProposed assurancekeywordProvenance of data from public/private/tenant boundaryExample: public-issueLineage service / DLPinternal6.01,6.10conditional
practical_trust.content.destination_scopeProposed assurancekeywordResulting data publication/destination trust scopeExample: public-prLineage service / DLPinternal6.01,6.10conditional
practical_trust.agent.privilege_edge_unapprovedProposed assurancebooleanRecruitment across unapproved privilege boundaryExample: trueOrchestrator + graph-policy verifierlow6.02conditional
practical_trust.agent.fanout_limit_exceededProposed assurancebooleanRegistered allowed agent graph depth/fan-out exceededExample: trueOrchestrator + graph-policy verifierlow6.02conditional
practical_trust.agent.parent_refProposed assurancekeywordRegistered invoking agent identity referenceExample: agent-triageOrchestrator + graph-policy verifierlow6.02conditional
practical_trust.agent.child_refProposed assurancekeywordRegistered invoked/recruited child-agent referenceExample: agent-editOrchestrator + graph-policy verifierlow6.02conditional
practical_trust.agent.call_depthProposed assurancelongDepth of verified delegation hop in task graphExample: 3Orchestrator + graph-policy verifierlow6.02conditional
practical_trust.agent.tool_graph_versionProposed assurancekeywordVersion of approved agent-to-tool/team graphExample: graph-14Orchestrator + graph-policy verifierlow6.02conditional
practical_trust.retrieval.acl_violationProposed assurancebooleanRetriever's own ACL evaluator finds result forbiddenExample: trueRetriever + source ACL servicelow6.03conditional
practical_trust.retrieval.index_digest_mismatchProposed assurancebooleanObserved index digest differs from approved source manifestExample: trueRetriever + source ACL serviceinternal6.03conditional
practical_trust.retrieval.result_tenantProposed assurancekeywordAuthoritative ownership tenant of returned documentExample: tenant-bRetriever + source ACL servicerestricted6.03conditional
practical_trust.retrieval.document_refProposed assurancekeywordRestricted document ID/HMAC for audit joinExample: doc-hmacRetriever + source ACL servicelow6.03conditional
practical_trust.retrieval.corpus_idProposed assurancekeywordRegistered source collection with owner/scopeExample: corpus-22Retriever + source ACL servicelow6.03conditional
practical_trust.retrieval.result_countProposed assurancelongNumber of passages actually returnedExample: 14Retriever + source ACL servicerestricted6.03conditional
practical_trust.index.manifest_digestProposed assurancekeywordSigned RAG corpus/chunk/embedding/ACL manifest digestExample: sha256:corpusCorpus registry / index attestorinternal6.03conditional
practical_trust.memory.authority_refProposed assurancekeywordACL decision permitting specific read/write of memoryExample: pdp_dec_54Memory store access logslow6.04conditional
practical_trust.memory.retention_classProposed assurancekeywordRequired expiry/deletion class of persistent stateExample: 30dMemory store access logslow6.04conditional
practical_trust.memory.cross_principal_readProposed assurancebooleanMemory store confirms foreign principal/tenant readExample: trueMemory store access logslow6.04conditional
practical_trust.memory.unauthorized_writeProposed assurancebooleanMemory store confirms write without valid authorityExample: trueMemory store access logslow6.04conditional
practical_trust.memory.record_refProposed assurancekeywordOpaque memory record referenceExample: mem-hmacMemory store access logsinternal6.04conditional
practical_trust.memory.ttl_expires_atProposed assurancedatePersistent memory enforced expirationExample: 2026-11-23T00:00:00ZMemory store access logslow6.04conditional
practical_trust.context.origin_classesProposed assurancekeyword (multi-valued)Set of source trust classes compiled into model contextExample: external,internalTrusted context compilerlow6.05conditional
practical_trust.context.protected_instruction_truncatedProposed assurancebooleanTrusted context compiler truncated required protected instructionsExample: trueTrusted context compilerlow6.05conditional
practical_trust.context.template_digest_matchProposed assurancebooleanEffective context template matches attested manifestExample: falseTrusted context compilerinternal6.05conditional
practical_trust.context.token_budgetProposed assurancelongMaximum context tokens granted before compilationExample: 32000Trusted context compilerinternal6.05conditional
practical_trust.guardrail.bypass_detectedProposed assurancebooleanBlocked call nevertheless reaches dispatcher/targetExample: trueIndependent guardrail evaluatorlow6.06conditional
practical_trust.guardrail.policy_refProposed assurancekeywordClassifier/rules policy version applied at this interventionExample: grd-4Independent guardrail evaluatorlow6.06conditional
practical_trust.guardrail.confidenceProposed assurancedoubleDetector score; verify calibration and false-positive ratesExample: 0.85Independent guardrail evaluatorlow6.06conditional
practical_trust.output.unsafe_egress_urlProposed assurancebooleanRenderer/egress observes disallowed external URL or content leakExample: trueOutput renderer + egress monitorlow6.06conditional
practical_trust.access.decision_idProposed assurancekeywordACL policy decision ID for retriever/data accessExample: acl_dec_99Source ACL/PDPlow6.03,6.07conditional
practical_trust.action.fingerprintProposed assurancekeywordCanonical digest of exact actor, action, target, argumentsExample: sha256:actionIndependent PDP / dispatcherinternal6.07,6.10conditional
practical_trust.action.materialProposed assurancebooleanConsequence threshold set from approved impact policyExample: trueIndependent PDP / dispatcherlow6.07,6.10conditional
practical_trust.action.targetProposed assurancekeywordResolved system resource and environment of requested actionExample: db://prod/customersIndependent PDP / dispatcherlow6.07,6.10conditional
practical_trust.authz.receipt_statusProposed assurancekeywordvalid/missing/expired/invalid/replayed permit verificationExample: replayedIndependent policy decision pointlow6.07conditional
practical_trust.authz.policy_versionProposed assurancekeywordVersioned external PDP policy evaluatedExample: rego-77Independent policy decision pointlow6.07conditional
practical_trust.authz.receipt_idProposed assurancekeywordNonce-bound authorization receipt for exact dispatchExample: permit-001Independent policy decision pointlow6.07conditional
practical_trust.decision.idProposed assurancekeywordImmutable authorization/reviewer decision referenceExample: decision-42Decision service / reviewerlow6.07,6.15conditional
practical_trust.policy.digestProposed assurancekeywordSigned policy bundle digest used by PDP and PEPExample: sha256:policySigned policy registryinternal6.07conditional
practical_trust.credential.referenceProposed assurancekeywordToken JTI hash or opaque credential ID; never token secretExample: jti-hmacToken broker / relying targetinternal6.08conditional
practical_trust.credential.scopeProposed assurancekeyword (multi-valued)Broker-issued target/action scope on delegated grantExample: repo:readToken broker / relying targetinternal6.08conditional
practical_trust.credential.ttlProposed assurancelongIssued token validity in secondsExample: 300Token broker / relying targetinternal6.08conditional
practical_trust.credential.scope_violationProposed assurancebooleanTarget or broker observed use outside capability grantExample: trueToken broker / relying targetinternal6.08conditional
practical_trust.credential.revoked_usedProposed assurancebooleanIssuer/target confirm post-revocation token acceptedExample: trueToken broker / relying targetinternal6.08conditional
practical_trust.credential.use_acceptedProposed assurancebooleanTarget confirms submitted token was honoredExample: trueToken broker / relying targetinternal6.08conditional
practical_trust.credential.expires_atProposed assurancedateIssuer recorded expiration timestampExample: 2026-10-23T15:00:00ZToken broker / relying targetinternal6.08conditional
practical_trust.credential.revoked_atProposed assurancedateIndependent token revocation event timestampExample: 2026-10-23T14:50:00ZToken broker / relying targetinternal6.08conditional
practical_trust.allowlist.versionProposed assurancekeywordVersioned approved external host/domain inventoryExample: allowlist-v8Asset inventory / egress proxylow6.09,6.11conditional
practical_trust.extension.attestation_statusProposed assurancekeywordvalid/missing/invalid/revoked extension registrationExample: invalidPublisher / MCP registry verifierlow6.09conditional
practical_trust.extension.digestProposed assurancekeywordDigest of tool implementation/definition/extension packageExample: sha256:toolPublisher / MCP registry verifierinternal6.09conditional
practical_trust.extension.digest_mismatchProposed assurancebooleanActual tool code/definition changed from approved manifestExample: truePublisher / MCP registry verifierinternal6.09conditional
practical_trust.extension.publisher_refProposed assurancekeywordVerified publisher/signer identityExample: vendor-signer-44Publisher / MCP registry verifierlow6.09conditional
practical_trust.extension.endpoint_idProposed assurancekeywordCanonical MCP endpoint/registry IDExample: mcp://crm-prodPublisher / MCP registry verifierlow6.09conditional
practical_trust.dispatch.receipt_matchProposed assurancebooleanPEP independently validates exact-bound permit at dispatchExample: falseIndependent action dispatcherlow6.10conditional
practical_trust.dispatch.budget_reservation_validProposed assurancebooleanBudget ledger holds live reservation for actionExample: falseIndependent action dispatcherlow6.10conditional
practical_trust.dispatch.action_idProposed assurancekeywordUnique dispatcher execution ID across decision and effectExample: dispatch-23Independent action dispatcherlow6.10conditional
practical_trust.dispatch.tool_idProposed assurancekeywordSigned tool registry ID and approved versionExample: tool-4@1.0Independent action dispatcherlow6.10conditional
practical_trust.downstream.request_idProposed assurancekeywordActual database/API target transaction receipt referenceExample: transaction-55System of record auditlow6.11conditional
practical_trust.effect.statusProposed assurancekeywordTarget outcome confirmed/rejected/partial/rolled_back/unknownExample: confirmedTarget system / outcome verifierlow6.11conditional
practical_trust.effect.environment_violationProposed assurancebooleanSystem-of-record confirms prod mutation by dev principalExample: trueTarget system / outcome verifierlow6.11conditional
practical_trust.effect.outcome_mismatchProposed assurancebooleanActual downstream effect violates exact authorized expectationExample: trueTarget system / outcome verifierlow6.11conditional
practical_trust.effect.unapproved_egressProposed assurancebooleanNetwork/DLP confirms data left approved egress boundaryExample: trueTarget system / outcome verifierlow6.11conditional
practical_trust.effect.affected_rowsProposed assurancelongRows actually changed according to database auditExample: 1400Target system / outcome verifierlow6.11conditional
practical_trust.effect.verified_byProposed assurancekeywordAuthenticated external auditor/target-producer identityExample: prod-db-auditTarget system / outcome verifierlow6.11conditional
practical_trust.effect.verification_timeProposed assurancedateIndependent confirmed outcome timestampExample: 2026-10-23T14:33:03ZTarget system / outcome verifierlow6.11conditional
practical_trust.delegation.chain_idProposed assurancekeywordVerified multi-agent delegation-chain correlation IDExample: chain_01Identity and delegation issuerlow6.13conditional
practical_trust.delegation.expires_atProposed assurancedateHard capability expiry for recruited agentExample: 2026-10-23T14:48:00ZIdentity and delegation issuerlow6.13conditional
practical_trust.delegation.scopeProposed assurancekeyword (multi-valued)Issuer-verified authority intersection granted to childExample: read:casesIdentity and delegation issuerinternal6.13conditional
practical_trust.delegation.scope_subsetProposed assurancebooleanChild grant provably no broader than parent grantExample: falseIdentity and delegation issuerinternal6.13conditional
practical_trust.delegation.revoked_child_activeProposed assurancebooleanObserved child still executing after revocationExample: trueIdentity and delegation issuerlow6.13conditional
practical_trust.delegation.parent_refProposed assurancekeywordIssuer-verifiable parent grant/identityExample: parent-grant-1Identity and delegation issuerlow6.13conditional
practical_trust.delegation.child_refProposed assurancekeywordIssuer-verifiable delegated child grant/identityExample: child-grant-2Identity and delegation issuerlow6.13conditional
practical_trust.delegation.revoke_command_idProposed assurancekeywordIndependent revocation request referenceExample: revoke-02Identity and delegation issuerlow6.13conditional
practical_trust.eval.model_refProposed assurancekeywordResolved model used for evaluated runExample: deploy-42Independent evaluation runnerlow6.14conditional
practical_trust.eval.suite_versionProposed assurancekeywordApproved evaluator/canary suite versionExample: suite-v5Independent evaluation runnerlow6.14conditional
practical_trust.eval.dataset_versionProposed assurancekeywordFrozen evaluation dataset/test corpus digestExample: dataset-14Independent evaluation runnerlow6.14conditional
practical_trust.eval.threshold_statusProposed assurancekeywordpass/fail/insufficient_data by independent evaluatorExample: failIndependent evaluation runnerlow6.14conditional
practical_trust.eval.release_binding_validProposed assurancebooleanSuite results bound to exact active signed releaseExample: falseIndependent evaluation runnerlow6.14conditional
practical_trust.eval.scoreProposed assurancedoubleCalibrated evaluation outcome scoreExample: 0.81Independent evaluation runnerlow6.14conditional
practical_trust.eval.judge_versionProposed assurancekeywordModel/scorer rubric version for grading traceExample: grader-3Independent evaluation runnerlow6.14conditional
practical_trust.oversight.evidence_idProposed assurancekeywordImmutable evidence bundle made available to approverExample: bundle-89Independent review consolelow6.15conditional
practical_trust.oversight.approval_binding_validProposed assurancebooleanHuman approval for one action, target, policy and expiryExample: falseIndependent review consolelow6.15conditional
practical_trust.oversight.interrupt_stop_verifiedProposed assurancebooleanIndependent check of child/work/credential halt after interruptExample: falseIndependent review consolelow6.15conditional
practical_trust.oversight.reviewer_refProposed assurancekeywordHuman reviewer strongly-authenticated pseudonymous referenceExample: reviewer-hmacIndependent review consolerestricted6.15conditional
practical_trust.oversight.stop_observed_atProposed assurancedateObserved time of verified cessationExample: 2026-10-23T14:33:07ZIndependent review consolelow6.15conditional
practical_trust.approver.referenceProposed assurancekeywordBound human approver, independent of agent identityExample: approver-hmacHuman identity providerrestricted6.15conditional
practical_trust.attestation.verificationProposed assurancekeywordpassed/failed/unavailable from trusted artifact verifierExample: failedArtifact verifierlow6.16conditional
practical_trust.attestation.verifierProposed assurancekeywordTrusted signer verifier identityExample: verifier-4Artifact verifierlow6.16conditional
practical_trust.manifest.digestProposed assurancekeywordSigned AI BOM and policy/tool configuration manifest digestExample: sha256:manifestRelease registryinternal6.16conditional
practical_trust.manifest.digest_matchProposed assurancebooleanRunning deployment matches signed registered manifestExample: falseRelease registryinternal6.16conditional
practical_trust.registry.release_idProposed assurancekeywordApproved release record ID for agent+tools+policy+RAGExample: release-12AI asset registryinternal6.16conditional
practical_trust.release.statusProposed assurancekeywordregistered/active/suspended/unregistered/retiredExample: unregisteredRelease controllerlow6.16conditional
practical_trust.prompt.template_digestProposed assurancekeywordSigned protected prompt template digestExample: sha256:promptSigned template registryinternal6.05conditional
practical_trust.budget.consumedProposed assurancedoubleLedger-observed consumption in declared unitExample: 112.0Atomic central quota ledgerlow6.17conditional
practical_trust.budget.limitProposed assurancedoubleAuthorized ledger ceiling in same unitExample: 100.0Atomic central quota ledgerlow6.17conditional
practical_trust.budget.over_limitProposed assurancebooleanShared reservations plus consumption exceed ceilingExample: trueAtomic central quota ledgerlow6.17conditional
practical_trust.budget.reservation_idProposed assurancekeywordAtomic ledger reservation identityExample: res_90Atomic central quota ledgerlow6.17conditional
practical_trust.budget.reservation_statusProposed assurancekeywordvalid/expired/missing/released/rejected reservation stateExample: missingAtomic central quota ledgerlow6.17conditional
practical_trust.budget.unitProposed assurancekeywordMeter unit such as tokens, calls, rows, USD or secondsExample: tool_callsAtomic central quota ledgerlow6.17conditional
practical_trust.budget.balanceProposed assurancedoubleReconciled unused budget including concurrent reservationsExample: 16Atomic central quota ledgerlow6.17conditional
practical_trust.budget.currencyProposed assurancekeywordISO currency if budget unit is monetaryExample: USDAtomic central quota ledgerlow6.17conditional
practical_trust.recourse.decision_unverifiableProposed assurancebooleanAffected decision lacks independent proven outcome/authorityExample: trueNotice and appeal systemlow6.18conditional
practical_trust.recourse.explanation_sensitive_dataProposed assurancebooleanExplanation contains disallowed raw trace/third-party dataExample: trueNotice and appeal systemlow6.18conditional
practical_trust.recourse.notice_refProposed assurancekeywordAccess-controlled affected-person notice recordExample: notice-44Notice and appeal systemlow6.18conditional
practical_trust.recourse.appeal_refProposed assurancekeywordAppeal or review case ID linked to decisionExample: appeal-44Notice and appeal systemlow6.18conditional
practical_trust.recourse.outcome_refProposed assurancekeywordIndependent effect receipt referenced in explanationExample: tx-88Notice and appeal systemlow6.18conditional
practical_trust.recovery.referenceProposed assurancekeywordEvidence-backed recovery and return-to-service approval IDExample: recovery-91Recovery verifier / ITSMlow6.11,6.18conditional
practical_trust.authz.decideStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=policy_decidedExample: policy_decidedSchema normalization pipelinelow6.07not indexed
practical_trust.credential.issueStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=credential_issuedExample: credential_issuedSchema normalization pipelinelow6.08not indexed
practical_trust.context.assembleStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=context_assembledExample: context_assembledSchema normalization pipelinelow6.05not indexed
practical_trust.guardrail.evaluateStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=guardrail_evaluatedExample: guardrail_evaluatedSchema normalization pipelinelow6.06not indexed
practical_trust.oversight.decideStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=oversight_decidedExample: oversight_decidedSchema normalization pipelinelow6.15not indexed
practical_trust.budget.reserveStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=budget_reservedExample: budget_reservedSchema normalization pipelinelow6.17not indexed
practical_trust.registry.registerStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=agent_registeredExample: agent_registeredSchema normalization pipelinelow6.16not indexed
practical_trust.recourse.openStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=recourse_openedExample: recourse_openedSchema normalization pipelinelow6.18not indexed
practical_trust.recourse.outcomeStage aliasevent aliasNarrative stage alias; canonical indexed record uses event.action=recourse_resolvedExample: recourse_resolvedSchema normalization pipelinelow6.18not indexed
gen_ai.evaluation.resultOTel eventevent nameDevelopment-status GenAI evaluation event name when produced; not a universal required scalar field.Example: gen_ai.evaluation.resultEvaluator SDK (optional)low6.14conditional

Rules for collection, schema stability and privacy

Evidence authority

Signed issuer/PEP/target records are the security evidence; agent-generated spans identify activity only. Every high-consequence dispatch needs an approved source event and an observed downstream outcome. Keep unknown, not_observed and false distinct.

Trace and task joining

trace.id and span.id support execution navigation, not privileged identity. Join cross-session/delegated tasks via authenticated task.family_id, delegation.chain_id, permit/dispatcher IDs and target transaction references.

Data protection

Record minimal identifiers, classifications and keyed hashes. Raw prompts, messages, tool arguments, credentials and privacy-sensitive results should not be exported as ordinary SIEM attributes. Do not propagate secrets, signed permits or user PII in OTel baggage.

Loss/retention

Maintain unsampled independent security/audit events, source heartbeat and dropped-event counters. Normal performance traces may be sampled under documented policy. Use signed source contracts, redaction, tenant RBAC, index templates and governed retention.

Elastic ingestion path matters.

Direct Elasticsearch /_otlp accepts OTLP/HTTP but does not apply the Elastic APM processor or generate derived APM service views. On self-managed deployments use Elastic Agent in Gateway mode where appropriate; on Elastic Cloud use its managed OTLP endpoint. Use a separate, protected security-event stream for unsampled authorization and effect receipts; do not rely on best-effort application traces as the sole evidence source. Elastic OTLP endpoint guidance.

Example independently emitted control event

{
  "@timestamp": "2026-10-23T14:33:00Z",
  "trace": {
    "id": "4e6a..."
  },
  "event": {
    "dataset": "ai_harness.control",
    "action": "policy_decided",
    "id": "evt_88",
    "kind": "event"
  },
  "service": {
    "name": "independent-pdp"
  },
  "practical_trust": {
    "schema": {
      "version": "1.0.0"
    },
    "component": {
      "id": "6.07"
    },
    "task": {
      "family_id": "task-family_44"
    },
    "producer": {
      "identity": "spiffe://trust/pdp",
      "trust_level": "independent",
      "signature_status": "valid"
    },
    "action": {
      "material": true,
      "fingerprint": "sha256:..."
    },
    "authz": {
      "receipt_status": "invalid",
      "policy_version": "rego-77"
    },
    "verdict": "fail"
  }
}

This event and all field types are a design specification. Producing a JSON document does not create a signed/verifiable receipt, working detector or protected evidence store.

↑ Table of contents

04 · Attack chain against the lab phases

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

The mapping connects known attack tactics with AI Harness functions. Use it to choose tests and sensors; a technique reference is not an observed incident.

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

↑ Table of contents

04b · SIEM / AI-DDR workflow (v13.4)

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

Collecting activity is only the start. Verify correlation, triage, independent decision-making, containment and recovery against actual outcomes.

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.

↑ Table of contents

05 · Scenarios

Five reported incidents, replayed through the harness

The replay illustrates where controls might have detected or stopped the reported behavior. Keep observed facts separate from the simulated control result.

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. When changes are frozen, the system refuses changes to the protected environment, even if AI requests them. The restriction is enforced outside the model; it is not just a reminder in a prompt.
  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.

↑ Table of contents

06 · Harness preflight

Twelve precursor controls and which incidents each would have stopped

These are candidate prevention measures. Confirm the assumptions and test each measure before claiming it would have prevented a past incident.

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✓————
Lifecycle assurance controls
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.

Lifecycle assurance makes these controls persistent across activation, delegation, operation and retirement. 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.

↑ Table of contents

07 · Take it to the boardroom

Three questions that distinguish an inventoried ecosystem from an assumed one

Check which agents actually exist, what they can reach and who can stop them. An inventory should be tested against runtime activity and permissions.

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.

↑ Table of contents

Sources

Public reports and frameworks cited

Use these sources to verify case facts, technique definitions and the scope of guidance. Source inclusion does not establish a complete or current threat inventory.

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 the reference architecture for models, operating components, lifecycle controls and evidence.
  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.
  15. Engineering reference: OpenTelemetry GenAI span and agent semantic conventions (accessed October 2026).
  16. Engineering reference: OpenTelemetry GenAI evaluation event (development status) (accessed October 2026).
  17. Engineering reference: Elastic Security custom query detections (accessed October 2026).
  18. Engineering reference: Elastic Security rule-type selection (accessed October 2026).
  19. Engineering reference: Elastic OTel-native data stream naming (accessed October 2026).
  20. Engineering reference: Elastic Common Schema GenAI field reference (accessed October 2026).
  21. OpenTelemetry GenAI and Elastic field standards: OpenTelemetry GenAI conventions · GenAI tool/span conventions · Elastic GenAI fields.
  22. Detection methods and source evidence integrity: Elastic ES|QL rules · Elastic anomaly detection · OTel sampling considerations · OPA agent tool policy.
  23. Integrated agent runtimes and native tracing: Microsoft HarnessAgent / Agent Framework · Microsoft Foundry Control Plane · OpenAI Agents SDK tracing · Bedrock AgentCore observability · Google ADK tracing.
  24. Runtime security and observability tool capabilities: Prisma AIRS runtime protections · Check Point AI Guardrails · Google Model Armor · NVIDIA NeMo Guardrails · OpenInference tracing · LangSmith OpenTelemetry.

↑ Table of contents

08 · Assurance and verification

Verification status, applicability and deployment boundaries

Verification is separated into document coverage, interface checks, standalone packaging and deployment evidence. A successful structural test does not establish that detection rules are active or that a production environment is secure.

Release gateResultEvidence and limitation
Source integrity and coveragePASS19 harness assets, 19 existing exploitation rules, 19 control-selection methods, 206 dictionary entries, 14 event contracts, five incident scenarios, navigable contents and explanatory guides.
In-memory Chromium functional smokePASS (limited)The interactive SVG rendered; component filtering, clearing, details and hash navigation operated. Desktop/mobile layout checked. This is an in-memory browser test and does not prove file or hosted deployment.
Standalone dependency structurePASS (static)All application JavaScript and CSS are inline, favicon is embedded; no external JavaScript or stylesheet is required. Optional web links require connectivity.
Real local-file browser operationBLOCKED / NOT RUNChromium browser policy denied file:// navigation in the evaluation environment. Open the delivered file directly on the target workstation to validate.
Real localhost/hosted browser operationBLOCKED / NOT RUNChromium browser policy also denied localhost navigation. No server deployment or live-host regression is claimed.
Dependency and vulnerability assuranceNOT RUNApplication JavaScript and CSS are embedded. A comprehensive independent vulnerability and supply-chain assessment of the packaged code has not been performed.
Internet-facing asset assessmentNOT RUNThis is a private local HTML deliverable; no public publication, surface scan, penetration test or cloud deployment occurred.
Live Elastic detection / response validationNOT RUNAll 19 detections are draft KQL rule designs needing producer instrumentation, ingest normalization, mapping and test events in the intended Elastic cluster.
Detection-engineering and field catalog schema checksPASS (static)Original 19 rule paths and control methods are catalogued. In-memory Chromium desktop/mobile tests passed for dictionary search, asset and namespace filters, reset, CSV export and anchor navigation. Direct file:// navigation was blocked by browser policy (NOT RUN). Live Elastic ingestion, rule execution, false-positive analysis and preventive-control effectiveness were NOT RUN.

↑ Table of contents

Davis AI Governance · AI Governance Labs · Inter-Agentic Threat Map · October 2026 · AI Harness v13.4 · Elastic Security / OpenTelemetry GenAI Illustrative architecture and incident analysis for governance education. Not legal advice, not a security assessment, and not an assertion about any vendor's current configuration. Vendor product names are used descriptively. This publication covers nineteen Harness assets, nineteen proposed KQL detections and their telemetry contracts. KQL rules are illustrative until implemented and tested in a live Elastic deployment.

AI DDR under Cyber Resilience

AI Deviation Detection and Response (AI-DDR) compares observed activity with approved limits. A useful alert identifies what changed, who responds and how the action can be stopped or reviewed before the problem spreads.

Inter-agentic circular threat atlas · Animated harness telemetry to Elastic · Complete integrated source reference

Source-derived evidence and clearly labeled simulation. No live enterprise connection.