Back to changelog

PII Masking Runs on Jev

Masked text is now read by one model, Jev, hosted by TypeSafe under a Business Associate Agreement with Captain. Requests and responses keep their shape. No change is needed on your side.

  • jev is the default engine: {"mask_pii": true} with no pii_engine is masked by jev. See Engines.
  • kev keeps working: a request that sends "pii_engine": "kev" is masked by Jev and reported as jev. The Kev model is no longer run.
  • Text is masked in parallel: a document's text no longer waits for a turn on a model with fixed capacity.
  • Large PDFs: before, some large PDFs ran out of the 14-minute masking window and failed to index. Text masking no longer runs into that window.
  • Rate limits are retried: when the model is rate limited, Captain waits and retries inside the masking window. A file that still cannot be masked fails to index, and nothing is stored unmasked. See Speed and reliability.
  • The report says which model answered: in Get PII Report, model is the Jev model that masked the file.
  • Earlier engine names keep working: captain-jev with the boolean pii_fallback is masked by Jev. With pii_fallback: true it still falls back to captain-presidio when the model cannot be reached.
  • One provider for masked text: text is sent to Jev at TypeSafe and nowhere else. jev-openrouter and jev-ai-gateway in a pii_fallback list are accepted and ignored, and retry_budget_seconds still sets how long Captain retries. See Fallback.
  • Image masking is unchanged: text inside image pixels is still found by OCR.