Open source · Runs on your own device

Catch card numbers, IDs and passwords before they reach an AI chat.

DataShield Local checks what you paste, type, send and upload on ChatGPT, Claude, Gemini, Copilot and Gmail, and scans files on your disk. A local model plus checksum rules finds personal data, Indian IDs, payment data and secrets. Nothing you check ever leaves your computer.

See it work

Screenshots from the browser extension on a local demo chat page. All values are made up.

A warning next to the message box says the draft holds critical data: person, credit card, card expiry, CVV, email
Heads-up while typing. A quiet note appears as soon as the draft holds sensitive data, before you hit send.
Before a message is sent, a dialog lists a card number, expiry and CVV with masked previews and offers Edit message, Send masked or Send anyway
Send check. Pressing Enter stops the send and shows what was found and why it matters (a card with its expiry or CVV is enough to pay). Edit the message, send it masked, or send anyway.
The sent chat message shows placeholders such as [CREDIT_CARD] and [CVV] instead of the real values
Sent masked. The assistant still gets the request; the card, expiry, CVV, name and e-mail never leave your computer.
A dialog blocks a paste containing a name, PAN, Aadhaar, phone, username and password
Paste check. Pasted text is checked before the page sees it. Here a KYC note with PAN, Aadhaar and a net-banking login is held back.
A dialog blocks a dropped CSV file and lists the names, e-mails, phones, card numbers and expiry dates inside it
File uploads. PDFs, Word, Excel, CSV, e-mail and zip files are opened and checked before the site receives them.
The review app highlights each finding with its label and shows a critical risk banner; the order number and AWB are left alone
Review app. Paste any text to see every finding, its severity and the overall risk. Order numbers, tracking numbers and "best before" dates are left alone.

What it finds

20 labels, each with a severity and default action you can change in policy.yaml.

Credentials

Leaked keys are the costliest mistake.

PASSWORDAPI_KEYAUTH_TOKENPRIVATE_KEYCONNECTION_STRING

Payments

Card numbers checked with Luhn, IBAN with mod-97.

CREDIT_CARDCARD_EXPIRYCVVBANK_ACCOUNTUPI_IDOTP_PIN

Indian IDs

Aadhaar verified with the Verhoeff checksum.

AADHAARPAN

Personal

Context-aware, so order numbers and dates of other things are left alone.

PERSONEMAILPHONEADDRESSDATE_OF_BIRTHUSERNAMEIP_ADDRESS

How it decides

Findings are weighed together: a card number alone is serious, a card with its CVV is critical.

SeverityLabels (default policy)Action
CriticalCVV, OTP / PIN, password, private key, connection string, API key, auth tokenBlock
HighCard number, card expiry, bank account, Aadhaar, PAN, UPI IDMask
MediumPhone, e-mail, address, date of birth, usernameWarn
LowPerson name, IP addressAllow

Accuracy

Strict span F1 with the checksum rules, on test sets whose wording was held out from training.

0.97820 labels, synthetic test set
0.992earlier 12-label test set
0.9568 real reviewed documents
~0.1 sper message on a laptop CPU

Real-world accuracy is measured on few documents so far; expect it to be lower than the synthetic numbers. Details and limits are in the model card.

Install

  1. Install the engine and download the model once (about 740 MB, checksum-verified):
    pip install "datashield-local @ git+https://github.com/agarje02/data_shield_local"
    datashield-local download-model
  2. Start it. The review app opens at http://127.0.0.1:8765:
    datashield-local
  3. Scan files and folders (text, code, logs, PDF, Word, Excel, e-mail, zip):
    datashield-local scan ~/Downloads --html report.html
  4. Browser extension (Chrome, Edge): run datashield-local install-native-host once, then load the extension/ folder from the repo in chrome://extensions with Developer mode on.

Private by design

Local only

The engine listens on 127.0.0.1. No text, file or finding is sent anywhere.

Locked to you

Programs need a per-user token; web pages and other hosts are refused.

No values in logs

The audit log keeps labels, locations and salted hashes, never the values.

Fails open

If the engine is off, the extension steps aside instead of slowing you down.