Containment, coverage, security graph, and operations
This reference owns Gatekeeper's operational assurance surfaces: exact-target containment, cross-session graph correlation, structural coverage, evidence, telemetry, fingerprints, and replay.
Containment
Containment is durable enforcement state, not a compromise classifier. A trusted detector or operator creates a
record; ContainmentOverrideGate and ContainedIdentityGate enforce it.
A ContainmentTarget is tenant-bound and names a closed target kind plus bounded identifier. The store exposes
explicit Active, Released, NotContained, and Indeterminate outcomes. MustBlock is true for active and
indeterminate states: unreadable or unverifiable containment never becomes an allow decision.
JsonFileContainmentStore is the strict single-process implementation behind IContainmentStore. It owns an
exclusive sidecar lock, validates bounded schema-v1 JSON, performs serialized compare-and-swap mutations, flushes a
temporary file, and atomically replaces the durable state. Deployments needing multiple writers must implement the
interface with equivalent atomicity and tenant isolation.
Release requires ContainmentReleaseAuthorization verified by caller-supplied authority. Canonical signing bytes,
bounded expiry, expected version, and durable nonce replay protection make release explicit. Containment has no
silent TTL expiry.
See Resource isolation and containment for routing contained identities to separate HTTP resources.
Security graph
The security graph correlates privacy-minimized observations across sessions without storing prompts, arguments, or responses.
content-free observation
↓
bounded ingestion pump ── drop/conflict ──→ durable coverage gap
↓
tenant-bound graph store
↓
immutable compute ── incomplete coverage ──→ no healthy/global decision
↓ complete approved fact
containment bridge → signed containment lifecycle → future run/tool refusal
↓
read-only Mission Control projection
| Component | Responsibility |
|---|---|
| Graph observation models | Carry bounded tenant/session/agent/MCP/endpoint facts and coverage-gap markers |
SecurityGraphIngestionPump |
Caller-owned bounded queue, one serial durable consumer, linearizable completion |
| Graph store | Tenant-bound persistence, retention, atomic replacement, keyed session digests |
AgenticSecurityGraph.Compute |
Immutable correlation that never fabricates a score for an unobserved node |
SecurityGraphContainmentBridge |
Maps only approved complete report facts into the Phase-3 containment lifecycle |
| Mission Control projection | Read-only totals, truncation, and structured privacy-minimized facts |
Queue drops, capacity failures, and write conflicts become durable coverage gaps. Incomplete coverage cannot produce a healthy claim or a global containment fact. The bridge is fixed to one tenant and does not introduce a second store, threshold model, or mutation authority.
Coverage and evidence
Coverage analyzer
GatekeeperCoverageAnalyzer answers whether reported tools are structurally reachable by local middleware.
InterceptedLocalFunction: a localAIFunctionthat tool gates can observe.ProviderHostedOpaque: execution owned by the provider and invisible to local tool middleware.
AnalyzeOrThrow can refuse an unprotected high-risk static tool. The risk classifier is a bounded heuristic and may
be overridden by the caller. Static analysis cannot prove tools added later by every dynamic AIContextProvider,
nor inspect arbitrary operation names hidden inside a generic dispatch schema. Risk acknowledgment records an
accepted gap; it never increases structural coverage.
Evidence and references
GateEvidence records policy, stage, decision, action, severity, correlation, and bounded metadata. Reasons and
metadata must exclude secrets, raw arguments, stable identities, taint values, and containment keys.
GateReferenceLedger assigns opaque references for operator follow-up. GateReferenceIndexAggregator provides
bounded counts and severity projections; it is not a payload store.
GateTelemetry records invocations, verdict counts, and latency. A verdict is what the gate found. The trace action
is what enforcement did. Under observation, a block verdict with action Warn is not a prevented effect.
Configuration fingerprints and receipts
GateConfigFingerprint binds receipts and replay evidence to frozen behavior. Stateful gates and declarative
contracts contribute their bounded configuration. A changed policy must not reuse the old configuration identity.
RunReceipt summarizes the applied configuration and decisions without copying sensitive payloads. Mutation
capture defaults to redacted. Full argument capture is explicit and suitable only for non-sensitive fixtures.
Replay
GateReplayer evaluates captured calls against baseline and candidate gate lists using the same allow/block/mutate,
throwing-gate, and fixed-point semantics as the live loop. Reports are deterministic and secret-minimizing by
default. Replay validates counterfactual policy behavior; it does not reproduce a tool side effect or prove a
provider-hosted capability was intercepted.
Construction drift and provenance
The following are construction checks rather than per-request runtime gates:
PromptTemplateDriftGatepins reviewed prompt templates.McpToolDescriptionPoisoningGatepins MCP tool description/schema material.McpServerProvenanceGaterequires explicit caller-supplied server identity and collision-safe qualified names.SkillGateConstructionCheckvalidates Agent Skills manifests/content under the selected mode.
Missing provenance is never inferred from a tool-name prefix or model-visible text. Half-configured baseline/current pairs fail construction rather than silently skipping validation.
Operator checklist
- Give every durable store one tenant boundary and one owner.
- Treat active and indeterminate containment as blocked.
- Persist release nonces and require compare-and-swap version checks.
- Bound retention, queues, reports, and read-only projections.
- Preserve coverage gaps through ingestion and computation.
- Compare telemetry verdicts with trace actions.
- Re-run coverage after dynamic composition.
- Replay candidate policy before promotion, then roll through observation before enforcement.
- Keep operations surfaces read-only unless a separately authenticated mutation path is explicitly designed.