[nonimo]
EN
Download the app

AI data leak: how client data escapes your Irish apps

· Written and maintained by Nonimo

An AI data leak in your own software rarely looks like a hack. It looks like a developer’s debug log full of client names, a retrieval step that pulls the wrong file into a prompt, or a model calling a tool with a PPS number in its arguments. The data leaves through calls your application makes on purpose, and nobody sees it go.

Nonimo Gateway runs on your own servers. See plans and get in touch.

For an Irish business the consequence is not abstract. Under the GDPR and the Data Protection Act 2018 your firm is the controller of that data wherever the copies end up, and an exposed copy may be a breach you have 72 hours to report to the Data Protection Commission. The fix is the same in every case: send less, pseudonymise what you send, and keep the key at home.

The five routes of an AI data leak

These are the places personal data travels when an application calls an LLM API. Most firms have thought about the top one and few have mapped the rest.

routehow data gets outwho ends up holding it
the promptthe user’s text and your system prompt go to the providerthe model provider
logsyour app, your gateway and your monitoring tools record requestsyou, and any tool vendor
retrieval (RAG)document chunks are pulled into the prompt automaticallythe provider, plus your vector store
tool callsthe model passes arguments to functions you exposethe provider and the target system
provider retentionthe provider keeps requests for abuse monitoringthe model provider, for a period

The prompt

This is the obvious one. A staff member pastes a client’s email into an internal tool, and the tool forwards it whole. The question is whether the task needed what was in it. Our list of what personal data to remove before AI applies just as much to text your app sends as to text a person pastes.

Logs

Every layer likes to log. Your web framework logs request bodies when an error occurs; your AI gateway records prompts for cost tracking; your error tracker captures the payload of a failed call. Each copy is personal data with its own retention, and the DPC’s guidance on AI asks for a retention schedule precisely so that inputs are not kept indefinitely. Cloud tools are no exception: AWS’s documentation for Bedrock Guardrails states that the input field in its CloudWatch invocation logs always contains the original, unmodified request, even where the guardrail masks data.

Retrieval

Retrieval-augmented generation puts your own documents into the prompt, chosen by similarity rather than by a person. If the store holds client files, the model can receive a paragraph about one client while answering a question about another. The provider then holds that paragraph too.

Tool calls

When a model can call functions, the arguments it generates are another channel. A booking tool might receive a name, a date of birth and an Eircode. The same AWS page says that in tool use workloads Bedrock Guardrails does not evaluate the tool call arguments, results or definitions, which is a useful reminder to check what any filter actually inspects.

Provider retention

The provider keeps a copy for a while even when it does not train on it. OpenAI’s data controls documentation says API data is not used for training by default and that abuse monitoring logs are kept for up to 30 days, with Zero Data Retention available on approval. Our guide to what ChatGPT keeps covers the consumer side.

When an AI data leak becomes a breach

Article 4(12) of the GDPR defines a personal data breach as a breach of security leading to accidental or unlawful destruction, loss, alteration or unauthorised disclosure of, or access to, personal data. Sending a prompt to a provider you have an Article 28 contract with is processing, not a breach. The leak becomes a breach when the copy lands somewhere you did not authorise: an exposed log bucket, a third-party monitoring tool with no agreement, a retrieval answer shown to the wrong customer.

At that point Article 33 applies. The DPC’s breach notification page asks organisations to report within 72 hours of becoming aware of a breach that presents a risk to individuals. The less a log holds, the smaller that risk, which is why minimising at source is worth more than any clean-up.

A worked example from a Dublin letting agent

The firm and the people are invented. A letting agent in Dublin 8 builds a tool that drafts replies to tenant queries. A typical request carries the tenant’s name, the PPSN copied from the application file, the address and a note about rent arrears. The app logs every request in full to help the developer, and retrieval pulls in the tenancy agreement.

Map it against the five routes and the leak is easy to see. The PPSN is in the prompt, the log and the provider’s 30-day monitoring copy, and nothing in the reply needs it. The arrears note is financial information about a named person, held in three places. Applying four steps changes that:

  1. Minimise. The tool stops reading the PPSN from the file. The model never needed it.
  2. Pseudonymise before the call. The tenant’s name and address become [PERSON_1] and [ADDRESS_1] before the request leaves.
  3. Keep the key. The mapping from placeholder to real value stays on the agent’s own server, not in the prompt or the log.
  4. Restore in the answer. The draft comes back with placeholders and the real values are filled in before staff read it.

The log now records placeholders. The provider’s copy holds no name, no address and no PPS number. If the log were ever exposed, it would say much less about anyone.

How to stop data leaking through your LLM calls

The steps above generalise into a short checklist for any Irish team building on an LLM API:

Nonimo Gateway, briefly

Nonimo Gateway puts that step in one place. It runs on your own servers, and the content does not pass through Nonimo. It is OpenAI-compatible, so you point your base_url at it. It replaces personal data before the request leaves and restores it in the response, and you keep your own OpenAI key. It is also available as a LiteLLM plugin. Plans and prices are on the Nonimo Gateway page. It helps you pseudonymise; minimising what you collect remains your call.

Where the proxy sits in your architecture is covered in our guide to an AI gateway for Irish firms, and whether you need a model of your own is in private LLM or privacy proxy. If your apps already send client data to an LLM, find the five routes in your own code this week. See Nonimo Gateway’s plans and get in touch.

Sources

Checked 20 October 2026.

Nonimo is the software that does this on your own computer: it redacts client names and IDs before your text reaches ChatGPT. No account needed, and the app does it without your files leaving your machine.

Common questions

What is an AI data leak?

An AI data leak is personal or confidential data leaving your control through an AI system, usually without anyone noticing. In your own applications it happens through the prompt sent to the model, the logs kept along the way, documents pulled in by retrieval, and data passed to tools the model calls.

Is sending client data to an LLM API a personal data breach?

Not automatically. A breach under Article 4(12) of the GDPR is a security failure leading to unauthorised disclosure of or access to personal data. Sending data to a provider you have a contract with, for a lawful purpose, is processing, not a breach; sending it somewhere you have no agreement with, or exposing a log of it, can be.

Do we have to tell the DPC about an AI data leak?

If it is a personal data breach that presents a risk to the people affected, yes, within 72 hours of becoming aware of it. The DPC's breach notification page sets this out. Keep a record of the incident and your reasoning whether or not you notify.

Does OpenAI keep the data our app sends through its API?

OpenAI says API data is not used for training by default, but its abuse monitoring logs are retained for up to 30 days. Zero Data Retention, which excludes customer content from those logs, needs prior approval from OpenAI.

How do we stop personal data leaking through our LLM calls?

Send less, and pseudonymise what you do send. Take out what the task does not need, replace the remaining names and numbers with placeholders before the call, keep the mapping on your own systems, and restore the real values in the answer.

Should the PPSN ever go to an LLM?

Rarely, if ever. A PPS number is an identifier a model almost never needs to draft, summarise or classify a document. Strip it at source rather than relying on a later step to mask it.

Tools

Take personal data out of a file or text before it goes to AI. Or cover the details on a copy of your ID and add a watermark before you send it.

All tools →