> For the complete documentation index, see [llms.txt](https://docs.eesel.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eesel.ai/account/pii-redaction.md).

# PII Redaction for Past Tickets

PII redaction removes card numbers, names, addresses and other personal details from past support tickets before eesel stores or indexes them.

Turn on PII redaction to remove credit card numbers, SSNs, names, addresses, and more from past helpdesk tickets **before** they're persisted or indexed.

Past tickets are one of the best ways to teach your agent how your team answers, but they are full of customer details. PII redaction keeps what the agent needs to learn from a ticket and masks the personal details, so they never reach your stored ticket history or the search index.

## What it does

When PII redaction is enabled, every past ticket your agent syncs is run through an AI-based detector before anything is written to the database or sent to the search index. Personally identifiable information is replaced with a typed mask like `[REDACTED:CC]` or `[REDACTED:EMAIL]`.

This means:

* Your agent **cannot** see the original PII when retrieving from past tickets
* Your stored ticket history **does not** contain the original PII
* The search index **does not** contain the original PII

The masked content still has plenty of context for the agent to learn from, only the sensitive substrings are removed.

## What gets redacted

The detector looks for fifteen categories of PII:

| Category                     | Examples                                                          |
| ---------------------------- | ----------------------------------------------------------------- |
| **Credit cards**             | `4532-1234-5678-9010`                                             |
| **Social Security Numbers**  | `123-45-6789`                                                     |
| **Date of birth**            | "DOB: 1984-07-19"                                                 |
| **Bank account / IBAN**      | `GB82 WEST 1234 5698 7654 32`                                     |
| **API keys & secrets**       | AWS keys, Stripe `sk_live_*`, OpenAI `sk-*`, GitHub `ghp_*`, etc. |
| **JSON Web Tokens**          | `eyJhbGciOi…`                                                     |
| **Email addresses**          | `customer@example.com`                                            |
| **Phone numbers**            | `+1 (415) 555-0182`, `+44 20 7946 0958`                           |
| **Person names**             | "John Smith called…"                                              |
| **Physical addresses**       | "742 Evergreen Terrace, Springfield, IL 62701"                    |
| **IP addresses**             | IPv4 and IPv6                                                     |
| **Passport numbers**         | 6–9 alphanumeric                                                  |
| **Driver's licence numbers** |                                                                   |
| **National IDs**             | Aadhaar, NHS number, etc.                                         |
| **Tax IDs**                  | EIN, VAT, etc.                                                    |

The detector knows to ignore well-known **non-PII lookalikes**, including:

* Product, brand, or company names (Salesforce, Stripe, Acme Co.)
* Test card numbers (`4242 4242 4242 4242`, `5555 5555 5555 4444`, etc.)
* Order numbers, invoice IDs, ticket IDs
* Dates that aren't introduced as birth dates

## Where it applies

PII redaction runs on **past helpdesk tickets** that are synced into your agent's knowledge for training. It is **opt-in per integration**.

| Surface                                                     | Redaction applies? |
| ----------------------------------------------------------- | ------------------ |
| Past tickets synced from your helpdesk                      | Yes, when enabled  |
| Help Center articles, macros, knowledge base pages          | No                 |
| Files uploaded to your workspace                            | No                 |
| Conversations the agent has at runtime                      | No                 |
| Tickets that were indexed **before** you enabled the toggle | No (see below)     |

## Turning redaction on or off

Today the toggle lives on the **Zendesk Tickets** path-settings page. Other helpdesks run the same redactor on their past-ticket syncs and follow your workspace's default; they just don't have their own switch yet.

1. In your agent's platform view, open the connected Zendesk integration
2. Click **Tickets** in the integration's sub-menu, then open its settings
3. Scroll to the **Redact PII before indexing** toggle
4. Flip it on (or off) and click **Save Settings**

{% hint style="warning" %}
**Check the toggle rather than assuming it's on.** Redaction is **off by default** for workspaces created recently. Older workspaces have it on by default. Either way, whatever you explicitly set always wins, so if you want it on, turn it on and save.
{% endhint %}

Once it's on, the next past-tickets sync (whether you trigger it manually or it runs after a settings change) puts incoming tickets through the redactor.

## What this doesn't do

* **Existing indexed tickets are not retroactively redacted.** Flipping the toggle only affects tickets ingested from now on. To re-redact older tickets, trigger a fresh past-tickets sync.
* **Runtime tool calls aren't affected.** When the agent fetches a Zendesk ticket live (e.g., to draft a reply), the raw ticket content reaches the model. Redaction only runs on the persistent training corpus.
* **Non-helpdesk knowledge sources aren't affected.** Articles, files, and other sources are not run through the redactor.
* **The toggle only appears on Zendesk.** Other helpdesks follow your workspace's setting when they sync past tickets, but they don't have their own switch yet.

## FAQ

<details>

<summary>Is PII redaction on by default?</summary>

It depends on when your workspace was created. Redaction is off by default for recently created workspaces and on by default for older ones. Whatever you set explicitly always wins, so check the **Redact PII before indexing** toggle and save it the way you want.

</details>

<details>

<summary>Does PII redaction apply to live conversations?</summary>

No. Redaction runs only on past helpdesk tickets synced into your agent's knowledge. When your agent fetches a ticket live, for example to draft a reply, the raw ticket content reaches the model. Help Center articles, macros and uploaded files are not redacted either.

</details>

<details>

<summary>How accurate is eesel's PII redaction?</summary>

In our benchmarks against synthetic support tickets, the redactor catches the vast majority of obvious PII without flagging things like product names or test card numbers. Detection runs on a fast, modern LLM (Gemini 3 Flash) with a tuned prompt and a deny-list of common false positives.

That said, no automated detector is perfect:

* A new or unusual PII format may slip through
* A name that's also a common noun may be missed
* Very long tickets may have lower recall than short ones

If you're indexing tickets that contain especially sensitive data (e.g., regulated health information), pair this feature with the usual access controls and consider clearing especially sensitive tickets from your helpdesk before sync.

</details>

<details>

<summary>Does PII redaction slow down ticket sync?</summary>

Only a little. There's an additional \~1-2 seconds per ticket for the LLM call. Past-ticket sync is a background job, so this doesn't affect interactive operations.

</details>

<details>

<summary>What happens if the PII redaction service is unavailable?</summary>

The sync **fails closed**: tickets that can't be redacted are skipped rather than indexed in their raw form, and retried on the next sync.

</details>

<details>

<summary>Can I see what was redacted from each ticket?</summary>

Not in the UI today. The number and types of redactions per ticket are logged on our side so support can investigate specific cases on request.

</details>

<details>

<summary>Do you store the original ticket content anywhere after redaction?</summary>

No. The redacted version replaces the original before anything is persisted in our database or sent to the search index.

</details>

<details>

<summary>Does PII redaction work on Intercom, Freshdesk, Gorgias and HubSpot?</summary>

Yes. The same detector runs when those integrations sync past tickets, following your workspace's default (or a setting saved for that integration). What they don't have yet is their own toggle in the UI, so if you want to be certain of the state on a non-Zendesk helpdesk, ask us in the support chat.

</details>

## Related pages

* [Security and Privacy](/account/security-and-privacy.md) for how your data is stored, encrypted and kept
* [Zendesk](/integrations/helpdesks/zendesk.md) for the Tickets settings where the toggle lives
* [Use eesel from Claude and other AI assistants](/apis-and-developer-resources/use-eesel-from-claude-and-other-assistants.md) and [Use eesel from ChatGPT](/apis-and-developer-resources/use-eesel-from-chatgpt.md)

For privacy questions about redaction, start a conversation in the support chat under **Help and support** in your dashboard, or email <hi@eesel.app>.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.eesel.ai/account/pii-redaction.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
