The privacy model

How it stays sealed

cloak-convert is built so a file has nowhere to leak to — not by policy, by construction. Here is exactly what happens to a file, what a browser-enforced content-security policy guarantees, and where detection's limits are.

Deterministic conversions never leave the tab

PDF, Word, Markdown, HTML, CSV, TSV, JSON and Excel round-trips are computed entirely in your browser. Zero bytes are uploaded. The egress monitor stays SEALED — cross-check it against your own Network panel.

AI-assisted conversions relay a cloaked copy

When you ask AI to restructure or summarise a document, its text is cloaked on your device first: every identifier the engine detects — emails, phone numbers, dates of birth, cards, IBANs, passports, national and company IDs, IP addresses, postcodes, places, and person names (on-device dictionary, a ~25 000-name gazetteer, and a multilingual name model that runs in this tab) — becomes a realistic surrogate. The cloaked copy of the document text is what goes to the CloakAPI gateway; the reply is mapped back locally. The detected raw values — and the map that restores them — never leave the tab. If the name model cannot load, the conversion is refused and nothing is sent.

The gateway is fail-closed

The relay is the published SDK's fail-closed wrapper: it tokenises the whole request before sending, obtains a pretokenisation MAC, and blind-relays the surrogate body. If the engine can't load, or a secrets-class value (card / IBAN / national ID) is present, it refuses to send — it never falls back to plaintext.

A receipt on every job

Each conversion produces an egress receipt: what format changed, how many sensitive values were in the chamber, and exactly how many bytes — if any — were relayed. On-device jobs read 0 bytes, always.

The boundary is enforced by the browser

Every page ships a strict Content-Security-Policy. The only off-origin destinations the browser will even permit a connection to are the CloakAPI gateway and your account — nothing else can be reached, so a bug or a bad dependency can't quietly phone home:

connect-src 'self' https://api.cloakapi.io https://app.cloakapi.io

This is delivered as a real policy, not a promise. Deterministic conversions make no connections at all; the two allowed hosts are used only for AI-assisted relays (a cloaked copy) and billing.

What we can and can't claim

  • We can say: deterministic conversions egress 0 bytes; on an AI-assisted job every value the engine detects is replaced by a surrogate before the copy is relayed, the re-identification map never leaves the tab, and a receipt records what happened.
  • We won't say: that detection is complete. Structured identifiers — emails, phone numbers, dates of birth, cards, IBANs, passports, national/health/company IDs, IP addresses and postcodes — are deterministic and high-coverage. Person names are matched against an on-device dictionary, a ~25 000-name gazetteer, and a multilingual name model (DistilBERT NER) that runs in this tab — uncommon and non-Latin-script names are in scope. Detection is still not omniscient: an identifier none of the layers recognise can slip through. Organisations are recognised by a legal suffix (Ltd, GmbH, AS, Inc…) plus the on-device model, so a single-word company name can still be missed. Street addresses are matched in US number-first order, so a European “Storgata 14” style address is not detected as an address at all. On an AI-assisted conversion, anything not detected is relayed as written — read the receipt, and use a deterministic conversion (0-egress) if that matters for your document.

What about scanned images and OCR?

On-device OCR isn't available yet, so an image-only (scanned) PDF is detected and reported honestly rather than uploaded to a cloud OCR service — nothing is read or sent. Text-based PDFs, Word docs and the data formats all convert on-device today.

Egress monitor SEALED
On-device
0
Gateway
0
Third-party
0

Genuine external consumer

cloak-convert uses the same published @cloakapi/sdk any developer can install — the cold-downloadable build, no privileged internal access. The privacy engine you run is the one shipped to everyone.

Platform Privacy Policy ↗