Prerequisites
- A Mnemom API token in
$MNEMOM_TOKEN(for the/v1/protection/*and/v1/safe-house/*API calls) - An agent ID in
$AGENT_ID(e.g.mnm-550e8400-e29b-41d4-a716-446655440000) - Your provider API key in
$ANTHROPIC_API_KEY(for the test messages sent through the gateway in Steps 2 and 5)
Step 1 — Enable Safe House in observe mode
Start withobserve mode. This runs full threat analysis with zero latency impact, so you can see what Safe House would catch before committing to blocking. Safe House configuration lives on the agent’s protection card — mode is the top-level master switch; screen_surfaces decides which surfaces the detector pipeline inspects.
Surfaces are screening units, not a per-turn budget: the front door runs once per enabled surface a request carries. The card below starts with incoming only, so you will see one front-door evaluation per request. Turning on tool_responses (Step 7) adds another evaluation for each tool result the request hands back to the model — inside that same request, before the model reads it.
Idempotency-Key is required on every protection-card PUT — any client-generated string works, but a fresh one per distinct write (like uuidgen above) keeps retries safe without accidentally replaying a stale one. The full protection-card grammar is at /specifications/protection-card-schema; the canonical card the composer returns also includes card_id, _composition, and any platform / org defaults that flow into the agent’s effective card.
CLI alternative. Save the card as protection.card.yaml and publish with one command — no curl required:
Step 2 — Send a test threat message
Send a BEC (business email compromise) style message through the gateway and check the response headers. This will not block anything in observe mode — but it will log a detection. Route it through the Gateway exactly as you normally would — use the samex-mnemom-agent name this agent was registered under (or omit the header if it was created without one) so the request resolves to $AGENT_ID:
X-Safe-House-* headers were retired in favor of the unified X-Mnemom-Verdict four-checkpoint structure (see Headers reference):
In observe mode,
X-Mnemom-Verdict.front reports observed so you can track what would have happened in enforce mode — the message still reaches the agent regardless. The X-Mnemom-Advisory header carries the detector findings as a JSON array; see /api-reference/headers#x-mnemom-advisory.Step 3 — Review detections in the dashboard
Open your Mnemom dashboard to see Safe House detections logged from your test — select the agent, then its Security tab. The test message should appear within a few seconds of the request completing. You can also pull aggregate detection stats directly via the API. Stats are org-scoped — one rollup across every agent in the org, over a trailing window in days (there is no per-agent filter):days defaults to 7 and caps at 90.
Step 4 — Switch to enforce mode
Once you are comfortable with what Safe House is catching, switch to enforce mode. From this point, messages that score above thequarantine threshold are held for review, and messages above the block threshold are dropped.
Step 5 — See a message get quarantined
Send the same BEC message again, this time in enforce mode:200, but the verdict and advisory headers show the message was quarantined before the model ever saw it:
id out of the safe_house.quarantine advisory entry — that is your quarantine id. The original message was held before reaching the agent; the model instead saw a quarantine placeholder. Your application should parse X-Mnemom-Verdict on every response (not just non-2xx ones) and surface a front=enforced result to whoever is responsible for security review.
Step 6 — Review and release from quarantine
Inspect the quarantined message and decide whether to release it or discard it. Quarantine endpoints are org-scoped (one quarantine queue per org); the quarantine id from thesafe_house.quarantine advisory in Step 5 is the lookup key. Note that the original message text is never stored — only its hash — so there is no plaintext preview to inspect here:
released; pass is_false_positive: true to also feed the release back into threshold calibration:
DELETE on the quarantine resource, which marks it deleted (the content hash is retained for audit; the agent is never sent the original content):
Step 7 — Screen tool results
Steps 1–6 only screenedincoming — the user message. If your agent uses tools, the more common injection route is the tool result: a search hit, an email body, an API response with instructions hidden inside it. Turn on the tool_responses surface:
Next steps
Add canary credentials
Plant fake API keys in agent context. Any attempt to use them is a zero-FP indicator of successful exfiltration.
Configure source trust
Allowlist trusted upstreams in
trusted_sources.{domains, agent_ids, ip_ranges} to short-circuit detection on known-good callers (each skip is still logged for audit).Enable outbound DLP
Scan agent responses for PII and secrets before they are returned to callers.
Review your dashboard
Security overview, session risk trends, and per-category detection breakdowns for all your agents.
See also
- Safe House concept — Full explanation of modes, threat categories, and detection layers
- When the front door runs — Why the front door fires once per inbound surface, not once per turn
- Safe House Gateway Integration — How Safe House fits into the Mnemom gateway request pipeline
- Enforcement Modes — How the gateway handles violations after they reach the agent