PII and data leakage detection for LLM apps
Personal data leaks in two directions: users paste it into prompts, and models repeat it in answers. Wardstone flags both and tells you which kinds of data it found.
Free plan: 10,000 requests a month. No credit card. See pricing
Data types it reports
When the data_leakage category is flagged, subcategories.data_leakage.triggered lists the types found. There are eight:
- address
- credit_card
- iban
- ip_address
- name
- phone_number
- ssn
Check prompts and responses
On the way in, a check lets you stop personal data from being sent to a third party model provider or written to your logs. On the way out, it lets you stop a model from returning a customer's details, for example after a retrieval step pulls in the wrong record.
What it does not do
Plan around these limits:
- It reports types, not positions, so it cannot mask the text for you.
- Treat the data_leakage flag as the main signal. The subcategory list is a hint and can include a type that is not actually present.
- Secrets such as API keys and passwords are not a listed type.
- It is a detection signal, not a compliance certification, and it does not replace access control on your data.
Real results from the API
Each input below was sent to the public Wardstone endpoint. All personal data in these examples is made up.
Card number and SSN in a reply
The data leakage subcategories name both types.
Request text
Sure, the customer's card number is 4111 1111 1111 1111 and their SSN is 123-45-6789.API response
- Prompt attack
- Low Risk
- Harmful content
- Low Risk
- Data leakage
- Severe Risk
- Unknown links
- Low Risk
Data leakage types reported: credit_card, ssn
Flagged. Primary category: data leakage (Severe Risk).
Show response JSON
{
"flagged": true,
"risk_bands": {
"prompt_attack": {
"level": "Low Risk"
},
"content_violation": {
"level": "Low Risk"
},
"data_leakage": {
"level": "Severe Risk"
},
"unknown_links": {
"level": "Low Risk"
}
},
"primary_category": "data_leakage",
"subcategories": {
"data_leakage": {
"triggered": [
"credit_card",
"ssn"
]
}
}
}Contact details in a reply
A name, email address, phone number and street address in one sentence. The data leakage flag is right. The type list includes credit_card, which is not in the text, and leaves out name. That is why the flag, not the type list, should drive your decision.
Request text
You can reach Jane Smith at [email protected] or +1 415 555 0132, she lives at 42 Market Street, San Francisco.API response
- Prompt attack
- Low Risk
- Harmful content
- Low Risk
- Data leakage
- Severe Risk
- Unknown links
- Low Risk
Data leakage types reported: address, credit_card, email, phone_number
Flagged. Primary category: data leakage (Severe Risk).
No personal data
Ordinary support text for comparison.
Request text
Can you help me reset my password? I can't log in to my account.API response
- Prompt attack
- Low Risk
- Harmful content
- Low Risk
- Data leakage
- Low Risk
- Unknown links
- Low Risk
Not flagged. Every category came back Low Risk.
Run these checks on your own traffic. Free plan: 10,000 requests a month. No credit card.
Create a free accountCheck a model reply before you return it
This uses the wardstoneCheck helper from the API docs. Decide which risk levels should block in your app.
def check_reply_for_personal_data(reply: str) -> str:
result = wardstone_check(reply)
if result["risk_bands"]["data_leakage"]["level"] in ("High Risk", "Severe Risk"):
found = result["subcategories"]["data_leakage"]["triggered"]
print("Possible personal data in reply:", found)
return "I can't share personal details here."
return replyFrequently asked questions
Which kinds of personal data does Wardstone detect?
Addresses, card numbers, email addresses, IBANs, IP addresses, names, phone numbers and SSNs. They are reported in subcategories.data_leakage.triggered when the data_leakage category is flagged.
Does it redact PII?
No. It tells you that personal data is present and which types were found, but not where they are in the text. Add your own masking step if you need redaction.
Can I use it for GDPR or HIPAA compliance?
It can be one technical control in a wider programme, but Wardstone does not claim any compliance certification and this is not legal advice. Compliance depends on how you collect, store and process data across your whole system.
Should I scan prompts, responses or both?
Both. Scanning prompts keeps personal data away from model providers and logs. Scanning responses stops a model from showing one person's data to someone else.
Does Wardstone store the text I send?
The usage log records request metadata such as the status code, whether the request was flagged and the primary category. It does not record the text you send. See the privacy policy for full details.
Is there a free plan?
Yes. The Free plan includes 10,000 requests a month and needs no credit card. Business is $199 a month (plus applicable taxes) for 500,000 requests a month. Enterprise pricing is custom. You can create an API key straight after signing up.
Related
Send your first request in a few minutes
Sign up, create a key and the dashboard gives you a ready to run request with your key filled in. Free plan: 10,000 requests a month. No credit card.