SESTEK AI Agents masks personal data (PII) at two moments. Each kind is set up separately:
- During the conversation, a guardrail's PII Anonymization masks personal data in the exchange with an AI agent. The AI agent's model receives masked customer messages, and the customer receives masked answers.
- In stored conversations, the tenant's masking setting masks personal data in what the conversation reports show. Dynamic masking hides it on screen only. Static masking replaces it permanently in storage.
The two kinds work independently, so a tenant can use either one or both.
Masking during the conversation
A guardrail with PII Anonymization masks the entities you switch on, separately for each side of the exchange:
- Input: entities are masked in the customer's message before the AI agent's model sees it.
- Output: entities are masked in the agent's answer before the customer sees it.
In this example, Credit Card, e-Mail and Person are switched on and the masking mode is Replace with PII type:
| Step | Text |
|---|---|
| Customer writes | my card number is 4111 1111 1111 1111 and my email is jane.doe@example.com |
| AI agent's model receives | my card number is [Credit Card] and my email is [e-Mail] |
| AI agent writes | Hello Emma, ... |
| Customer receives | Hello [Person], ... |

Each side uses one of three masking types: Replace with PII type, Replace with character "*" or Block messages including PII's. To choose entities, add custom PII and attach the guardrail to an AI agent, see Guardrails.
📝 Note: Input masking uses the guardrail of the AI agent that receives the conversation from the flow. In a multi-agent setup, that is the supervisor agent. If the guardrail is attached only to a sub-agent, the customer's input is not masked.
What each part sees
| Part | What it sees |
|---|---|
| The AI agent's model | The customer's messages, with the input entities masked |
| Tools the AI agent calls | The values the model passes to them. A masked entity arrives as its placeholder, such as [Credit Card]. |
| The customer | The agent's answer, with the output entities masked |
| The flow before and after the AI agent (variables, HTTP nodes) | The conversation exactly as the customer wrote it. Guardrail masking applies only to the exchange with the AI agent. |
Masking stored conversations
The tenant's masking setting controls what the conversation reports show. It is set once for the whole tenant at Administration > Settings > Masking.

1. Enable Masking: Turns on masking for stored conversations. The other options appear once you tick it.
2. Dynamic Masking / Static Masking: Sets where masking is applied: on screen only, or permanently in storage. The table below compares them.
3. Masking Mode: Replace with PII type replaces each entity with its type, so John Foster becomes [Person]. Replace with character "*" replaces each character with an asterisk, so John Foster becomes **** ******.
4. PII To Be Masked: One checkbox per entity, plus Select All. The list is the same set of entities that guardrails use: Credit Card, e-Mail, Person, Phone Number, Location, National Id Number and others.
Dynamic and Static masking compared
| Aspect | Dynamic Masking | Static Masking |
|---|---|---|
| Where it masks | On screen, when the data is shown | In storage, after the conversation ends |
| Stored conversation | Unchanged | Selected entities replaced permanently |
| What is masked | Transcript, summary, AI Insight values, customer name, phone and email, the single-conversation export, customer fields in the conversation list | Transcript, summary, AI Insight values, customer name, phone and email |
| Which conversations | Any conversation, because masking happens when the data is shown | Only conversations that end after Static is switched on. Older conversations are not rewritten. |
| Turning masking off | The original data shows again | Masked data stays masked |
| Conversation data APIs | Return the original data | Return the masked data once masking has completed |
With Static masking, Conversation Details shows Masking in progress until the conversation has been rewritten. Until then, Export, Generate AI Insights and Generate Summary are unavailable.

The conversation data APIs return the stored data. These are the Conversation History API and the Daily Conversation Reports API. Only Static masking applies to them, so if masked data must leave the platform through the APIs, use Static.
⚠️ Warning: Static masking cannot be undone. Once a conversation is masked, its original data cannot be restored. Turning masking off or switching to Dynamic does not bring it back.
Choosing the right masking
| If you need | Use |
|---|---|
| Reviewers see masked data, and the original stays available | Dynamic Masking |
| The original data is not kept at all | Static Masking |
| Masked data leaves the platform through the APIs | Static Masking |
| The AI model never sees the data | Guardrail input masking on the AI agent that receives the conversation, alongside either of the above |
