Skip to main content

The canonical set

Every Mnemom response carries a tightly-scoped header surface. The Mnemom-namespaced set is six headers, plus an optional API-version header and an AAP allow-list pair. Anything else under X-Mnemom-* or X-AIP-* was retired clean-break on 2026-05-08 — see What was retired below.
Migrating from legacy headers? Deprecated headers (X-Safe-House-*, most X-AIP-*, X-Mnemom-Autonomy-Verdict) were retired clean-break on 2026-05-08. See What was retired below for the legacy → canonical mapping.There is no dual-emit window and no Sunset header on the legacy names — they stopped emitting on the 2026-05-08 ship.
AAP allow-list (two headers):
Unclaimed agents: verdict headers are fail-open, not analytical. Gateway-auto-provisioned agents that have not been claimed have no canonical alignment card. X-Mnemom-Verdict and X-AIP-Verdict are still emitted on every request, but their values (pass/clear) come from the gateway’s fail-open path — AIP analysis did not run. X-AIP-Checkpoint-Id will not be present. This is expected behavior; it is not the unverified state described above — unverified means analysis was attempted (a canonical card exists) and failed, whereas an unclaimed agent has no analysis to attempt in the first place. The full integrity pipeline starts after claim. See integrity during the unclaimed phase.
Plus standards: Content-Type, Cache-Control, CORS headers, and Idempotent-Replay: true on cached idempotency replays.

X-Mnemom-Verdict — structured per-checkpoint state

Format. Single-line, semicolon-separated key=value pairs. Familiar HTTP convention (Cookie, Cache-Control, Server-Timing). Always exactly four checkpoints, always in canonical order:
Each value is one of pass | observed | nudged | enforced | unverified. The semantics of each verdict per checkpoint: The four-checkpoint model is documented in the Safe House concept. All four checkpoints always run on every gateway-routed request — pass means the checkpoint ran and the request was clean.
Verdict timing is mode-dependent: in enforce the integrity/back verdicts are resolved before the response is returned (streaming adds latency to preserve this); in observe/nudge analysis is post-hoc, so a backgrounded checkpoint’s same-turn header value is provisional. off runs no analysis.unverified is integrity-only and fail-closed by design. It is the sole verdict that can never be silently reported as pass — an analyzer failure (timeout, error, or breaker-open) is a distinct outcome from a clean analysis, so the header says so explicitly. This is orthogonal to off/no-analysis: off never runs a checkpoint at all, while unverified means analysis was attempted and failed.

Parser snippets

TypeScript:
Python:
Go:

X-Mnemom-Advisory — operator-actionable advisory entries

Format. Compact JSON array. Each entry is {source, text, severity?, id?}. Capped at 5 entries (HTTP header size safety). Omitted entirely when there are no advisories.
Field semantics:

Parsing

When the receiving application needs more than 5 advisories per request, fetch the full set via the per-agent advisory listing endpoint — the header cap is a transport budget, not a semantic limit.

X-Mnemom-Request-Id — support correlation

UUIDv4 per request. Stable across the entire request lifecycle (gateway → mnemom-api → Supabase → response). When you open a support ticket, paste this header value — we can pull every log line, OTel span, and audit row for the request.
The header is always emitted on gateway-routed responses, including 4xx and 5xx error responses. Even on auth-failure 401s, the X-Mnemom-Request-Id is set — paste-into-support works on the failure case too.

Inbound stripping

The gateway strips customer-supplied X-Mnemom-* and X-AIP-* from inbound requests at the boundary. This closes a header-smuggling attack vector — without the strip, an upstream proxy or compromised middleware could inject X-Mnemom-Verdict: front=pass; ... into a request and confuse downstream consumers parsing headers naively. The four customer-meaningful headers that survive the strip:
  • X-Mnemom-Api-Key — programmatic auth.
  • X-Mnemom-Version — date-based API version negotiator.
  • X-Mnemom-Agent — named-agent identifier (lets the gateway route per-agent).
  • X-Mnemom-Session — multi-turn session correlation (typically server-emitted, but customers can pass through to maintain session continuity across a managed proxy).
Anything else under X-Mnemom-* or X-AIP-* on inbound is deleted. If you’re testing with curl and accidentally include a verdict-shaped header, the response will reflect the gateway’s own canonical state — your inbound value never reaches downstream code.

What was retired

20 deprecated response headers were retired clean-break on 2026-05-08: Autonomy verdict (1):
  • X-Mnemom-Autonomy-Verdict → folds into X-Mnemom-Verdict.autonomy.
Safe House extras (9):
  • X-Safe-House-Verdict / X-Safe-House-Advisory / X-Safe-House-Event → fold into X-Mnemom-Verdict.front + X-Mnemom-Advisory.
  • X-Safe-House-Quarantine-Id / X-Safe-House-Canary-Triggered / X-Safe-House-DLP → fold into X-Mnemom-Advisory entries.
  • X-Safe-House-Session-Risk / X-Safe-House-Mode / X-Safe-House-Simulated-Verdict → were operator-dashboard signals only; data lives in sh_evaluations / audit_log.
AAP extras (10):
  • X-AIP-Action / X-AIP-Proceed / X-AIP-Synthetic / X-AIP-Source / X-AIP-Analysis-Scope / X-AIP-Reason / X-AIP-Nudge-Count / X-AIP-Enforcement → fold into X-Mnemom-Verdict.integrity.
  • X-AIP-Certificate-Id / X-AIP-Chain-Hash → fetch via the integrity-checkpoints REST surface using X-AIP-Checkpoint-Id.

Common renames at a glance

For upgraders, the high-traffic renames customers were most likely to have hard-coded: There is no dual-emit window and no Sunset header on the legacy names. The retirement is clean-break.

See also

  • Errors — canonical status-code + error-code contract, including Safe House verdict-to-status mapping and retry semantics.
  • Webhook contract — the seven invariants every webhook event carries.