One control layer. Your policy, your identity, your logs.

Set enforcement per failure class, bind restoration to the right user, and audit every decision without storing a single prompt.

Enforcement modes

Pick the posture per workflow, and per failure.

Block

Strict fail-closed. Nothing leaves unless it was transformed and approved.

For High-assurance and regulated workflows

Allow + Audit

Work continues when enforcement cannot complete, and an explicit security event is raised.

For Business continuity with accountability

Observe

Measure AI usage and policy impact before you enforce anything.

For Discovery and rollout planning

Policy per failure class

# nymgate policy · v42
enforcement:
  default: block
  on_failure:
    detector_unavailable: block
    gateway_unavailable:  block
    unknown_schema:       allow_with_audit
    unverified_transport: block
  groups:
    research-pilot:       observe

Fail-open behaviour is always explicit policy, never a silent fallback.

Identity and vault

Only the right user can turn a token back into data.

Asker · signed in with SSO

Refund for Ahmet Yılmaz is ready to approve.

Colleague · opened the shared chat

Refund for ⟦PERSON:7F31:0001⟧ is ready to approve.

AI provider · stored conversation

Refund for ⟦PERSON:7F31:0001⟧ is ready to approve.

Mapping scope

  1. Tenant
  2. User or application
  3. Conversation
Encryption
AES-256-GCM, per-conversation derived keys
Storage
Redis in your cluster, hashed identifiers
Lifetime
TTL per surface, sliding on use
Browser users
Enterprise SSO (Entra ID, OIDC)
APIs and agents
Managed application identity
Sharing
Opening a shared chat grants no restore rights

Policy

Centrally managed, versioned like code.

  • Microsoft Entra ID and any OIDC provider
  • Policy by user, group, application and provider
  • Your own sensitive-data rules and dictionaries
  • Versioned policy with staged rollout
  • Controlled adapter versions, optionally signed
  • Offline or manual update path
  • Central health and status for every replica

policy.yaml

identity:
  provider: entra-id
groups:
  finance:
    surfaces: [chatgpt, claude]
    entities: [PERSON, TCKN, IBAN, CARD]
  engineering:
    surfaces: [claude-code, codex, cursor]
    entities: [SECRET, HOST, CUSTOMER_ID]
providers:
  allow: [openai, anthropic]
custom:
  - name: POLICY_NO
    pattern: 'POL-\d{8}'
mapping_ttl: { chat: 7d, api: 24h }

Audit

Audit the control, not the confidential conversation.

SurfaceGroupEventOutcome
Claude CodeEngineering3 secrets transformedAllowed84 ms
ChatGPTFinanceTCKN + IBANTransformed121 ms
ChatGPTHRUnknown schemaBlockedAdapter v17
Responses APIclaims-botPERSON ×2, PHONETransformed96 ms
ClaudeLegalDetector unavailableAllowed + auditedpolicy v42

Recorded

  • User or application identity
  • Provider and surface
  • Entity types and counts
  • Policy and detector version
  • Latency and enforcement outcome
  • Failure class

Never recorded

  • Raw prompts
  • Raw responses
  • Vault mappings
  • Provider credentials

Deployment

Built for environments where “send it to our SaaS” is not an acceptable architecture.

KubernetesHelm chart, multiple gateway replicas
OpenShiftNon-root, restricted SCC
Private cloud / VPCYour account, your network
On-premisesYour data centre, your hardware
OfflineSigned releases, no runtime downloads
  • OCI images
  • Helm
  • Non-root
  • CPU-only inference
  • Redis
  • Readiness and liveness
  • Corporate HTTPS proxy
  • Custom CA bundle
  • Signed versions
  • Docker for pilots

Compliance, stated carefully

Reduce the amount of sensitive data exposed to external AI services and support your organisation's data-minimisation and AI-governance controls.

NymGate does not make you KVKK compliant on its own, does not make an international transfer lawful, and does not anonymise all personal data.

Don't block AI. Control what leaves.

Give employees and developers the AI tools they already use, without treating every prompt as safe by default.