AiEGIS 12 Layers vs 15 Layers — Which Is Canonical

The canonical count is 15, evidenced by the live /api/protect response. Here is each layer in one sentence. 2026-05-25.

The Empirical Answer

The AiEGIS evaluation pipeline is fifteen layers. The proof is a single curl against the live endpoint:

curl -sX POST https://aiegis.ie/api/protect \
  -H "Authorization: Bearer ${AIEGIS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"agent_id":"test","action":"read","payload":"x"}'

# response includes:
# "schema_version": "v0.7.0-15layers-2026-05-23",
# "layers_evaluated": [
#   {"layer":"L1", "name":"Agent Identity Protocol", "verdict":"ALLOW"},
#   {"layer":"L2", "name":"Agent Instruction Language", "verdict":"ALLOW"},
#   ... 13 more ...
#   {"layer":"L15", "name":"Correlation Engine", "verdict":"ALLOW"}
# ]

The schema_version string itself contains the canonical count: v0.7.0-15layers-2026-05-23. The layers_evaluated array has exactly 15 entries.

Why You Still See "12" on Some Pages

Between v0.5 (early 2026) and v0.7 (2026-05-23) three layers moved from "designed but partial" to "fully surfaced in the response":

The how-to-issue-an-agent-passport blog at the time of this writing still references "12 enforced security layers." That phrasing is from when L9, L13, and L15 emitted side-channel verdicts but were not first-class in the response shape. The architecture was always fifteen; the response shape caught up on 2026-05-23.

The Fifteen Layers, One Sentence Each

Per the canonical source at api_v2.py:3464:

LayerNameWhat it does
L1Agent Identity ProtocolVerifies the agent's Ed25519 passport, checks revocation, asserts operator scope.
L2Agent Instruction LanguageParses the agent's intended action into a structured form so downstream layers can reason about it.
L3Compliance / PIIRuns the rule packs (EU AI Act, GDPR, NIST AI RMF, MGAIF, POPIA) over the payload and returns per-pack verdicts.
L4Agent Police / ScopeEnforces action-level scope: this agent is allowed to read but not write, allowed in EU jurisdiction but not US, etc.
L5Model Quality GateRefuses to dispatch the action if the underlying model fails baseline quality checks (e.g. degraded confidence on a high-risk action).
L6Input SanitizerStrips or rejects prompt-injection patterns and other adversarial input shapes before they reach the agent's reasoning layer.
L7Memory / Receipt IntegrityVerifies the agent's session memory and the per-decision receipt have not been tampered between layers.
L8Tool Sandbox / Session TTLEnforces tool-invocation sandboxing and session expiry; tools cannot exceed their declared scope.
L9Meta SecurityCross-checks L1-L8 verdicts for internal consistency; catches a layer claiming ALLOW while emitting a high-severity threat.
L10Data ProtectionApplies GDPR / data-residency rules to any output that touches personal data.
L11Network SecurityEnforces network-layer policy: outbound destinations, TLS posture, allowed protocols.
L12Behavioral IntelligenceScores the action against the agent's behavioural baseline; outliers trigger WARN or BLOCK.
L13MCP RegistryVerifies any invoked MCP tool is registered, current, and not revoked.
L14Confidence ScoringAggregates per-layer signal into a single confidence number used by downstream consumers.
L15Correlation EngineCorrelates across recent actions on the same agent to catch cross-action patterns (e.g. exfiltration spread across small reads).

What the Layer Count Does Not Tell You

A layer count is a structural claim, not a security claim. Fifteen layers that all return ALLOW unconditionally are worse than three layers that each block correctly. The right question for a buyer is not "how many layers" but "what does the runtime do when I send it the input that should fail" — the AIVSS enforcement-effectiveness dimension. See the AIVSS fixture walkthrough for how to score this empirically.

For the Auditor

The thing to put in your evidence pack is the layers_evaluated array on a real /api/protect response, not a marketing diagram of fifteen boxes. The array carries per-layer verdicts (ALLOW / WARN / BLOCK) and, for L9 and L13, per-layer latency in milliseconds. That is the substrate the EU AI Act Article 26 walkthrough at /article-26-walkthrough grounds its findings against.