Skip to the content.

Verify what gets redacted

Do not trust the proxy blindly: check it on your own data. Two built-in ways, both local. For the quickest proof, run the tool-call leak demo first: it shows you exactly what a provider receives, without and with PrivAiTe.

1. See exactly what the provider receives

Turn de-anonymization off and send test traffic:

pii:
  deanonymization:
    enabled: false

The response comes back without the real values restored, so what you read is literally what left for the provider (<PERSON_1>, <EMAIL_ADDRESS_1>, …). Diff it against your input: every placeholder is a catch, every real value still visible is a miss. Works for tool-call arguments and streaming too.

2. Dry-run inspection endpoint

Enable it explicitly (off by default), then submit text and get the detections back. Nothing is forwarded to any provider, nothing is logged, nothing is counted in /stats:

pii:
  inspect:
    enabled: true
curl -s localhost:8400/v1/pii/inspect -H 'Content-Type: application/json' \
  -d '{"text": "Contact Marie Dupont at marie@acme.com"}'
{
  "language": "en",
  "entities": [
    {"type": "PERSON", "text": "Marie Dupont", "start": 8, "end": 20,
     "score": 0.99, "source": "onnx", "replacement": "<PERSON_1>"},
    {"type": "EMAIL_ADDRESS", "text": "marie@acme.com", "start": 24, "end": 38,
     "score": 1.0, "source": "presidio", "replacement": "<EMAIL_ADDRESS_1>"}
  ],
  "anonymized": "Contact <PERSON_1> at <EMAIL_ADDRESS_1>",
  "would_block": []
}

anonymized is the exact string the provider would have seen, and would_block lists any types your block_entities policy would have rejected outright. There is deliberately no admin view of live traffic: the reversible map is per-request and in-memory only, never logged or persisted.