$5 free credits when you sign up
← All releases
v1.1· Release

v1.1 — Guardrails: pre/post-call enforcement

Five guardrails in the request path on every plan — PII redaction, prompt injection detection, secret scanning, abuse blocking, and response scanning — with org-default + per-key override semantics.

Nemo Team2 min read
guardrailssecuritypii

Guardrails are live. Every chat completion, embedding, and image request now flows through a configurable safety pipeline before it reaches the provider — and the response flows back through it before it reaches the caller. No Enterprise paywall: every guardrail is available on every plan from day one.

What ships

Five guardrail providers, all in-path:

  • PII redaction — Microsoft Presidio. Detects and masks emails, phone numbers, SSNs, credit cards, names, addresses before the prompt leaves our infrastructure.
  • Prompt injection — heuristic + classifier detection on adversarial corpora. Blocks the request with a structured 400 when a known injection pattern is matched.
  • Keyword / regex blocklists — bring your own term list or regex. Useful for compliance words, competitor names, internal codenames.
  • Custom guardrails — point at any HTTP endpoint that returns { allowed: bool, redacted_text?: string }. We call it pre- and post-call.
  • Response scanning — same providers run on the assistant message before the caller sees it.

Scope hierarchy

Guardrails resolve key > team > org. The org default applies unless a team or virtual key overrides it. Per-request override is also supported via extra_body.nemo_guardrail_ids — pass an array of IDs to run only those for this call.

curl https://api.nemorouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-nemo-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-flash",
    "messages": [{"role": "user", "content": "Email me at jane@example.com"}],
    "extra_body": { "nemo_guardrail_ids": ["pii-redact-default"] }
  }'

When a guardrail blocks, the response is a 400 with error.code = guardrail_violation and the offending guardrail ID — never a silent pass-through.

Configure guardrails at /{org}/guardrails. Audit hits at /{org}/observability.