Skip to content

Data masking

For: Account owners, administrators and data-protection reviewersRequires: Any signed-in user can view rules and test masking; changes need the Admin roleScreenshots show sample data

The data masking page holds the rules that hide parts of sensitive values in your API’s responses. When the assistant calls one of your tools, StrikeUp masks the response before the AI reads it and before it is stored in the tool-run log, so a card number reaches the AI as ************4242. Here you review the rules StrikeUp suggests, create your own, and test them on sample JSON. Open it from SecurityData masking; the page heading reads Privacy Data Masking.

  • Review the rules StrikeUp suggests. When a toolkit is generated from your API specification, StrikeUp proposes rules for fields that look sensitive. They mask nothing until you activate them. Activate suggested rules.
  • Create a rule for any field. Name the field, choose which toolkits and tools it covers, and how many characters stay visible at each end. Create a rule.
  • Check rules on sample data. Paste a JSON response and see the masked version the assistant would receive. Nothing is saved. Test masking.
  • Pause, change or delete a rule. Switch a rule off without losing it, or adjust what it keeps. Change, pause or delete a rule.
  • Find a rule by its reach. Filter the table by scope: every toolkit, one toolkit or one tool. Every control, explained.
The "Privacy Data Masking" card on the Data masking page. At the top right are "Refresh", "Test Masking" and the highlighted blue "New Rule" button, which opens the Create Masking Rule form. Below "Filter by Scope:" (set to All) the rules table lists seven rules with their field path, scope badge, toolkit and tool, kept characters, symbol, priority and status, for example "Card number" on payment_method.card_number (Global, 0 / 4, priority 95, Active), "VAT ID" for the Demo Billing API toolkit and "Billing contact phone", which is Inactive.The "Privacy Data Masking" card on the Data masking page. At the top right are "Refresh", "Test Masking" and the highlighted blue "New Rule" button, which opens the Create Masking Rule form. Below "Filter by Scope:" (set to All) the rules table lists seven rules with their field path, scope badge, toolkit and tool, kept characters, symbol, priority and status, for example "Card number" on payment_method.card_number (Global, 0 / 4, priority 95, Active), "VAT ID" for the Demo Billing API toolkit and "Billing contact phone", which is Inactive.
Every masking rule in one table; New Rule adds one and it applies from the next tool call.
What this screenshot shows
Screen
Data masking (/admin/security/data-privacy)
Highlighted
button “New Rule”, rules-card-header-right, enabled. opens the Create Masking Rule dialog
Also visible
Filter by Scope select set to All; Seven rules: Global, Toolkit and Toolkit Tool scopes; one Inactive; Columns name, field path, scope, toolkit/tool, keep chars, symbol, priority, status, actions
Purpose
overview of the company's masking rules
RegionWhat it showsWhat you do there
Suggested rules, at the very topAI Suggested Masking Rules ({{count}}) with the field, name, toolkit and a preview for each suggestion. Shown only while suggestions are waitingActivate or dismiss suggestions
HeaderPrivacy Data Masking, Refresh, Test Masking and New RuleReload rules, test, create a rule
Filter by Scope:A scope filterNarrow the table to one scope
Rules tableEvery rule, active and inactive, highest priority firstEdit or delete a rule

A rule keeps the first and last characters you choose and replaces every character in between with the masking symbol. The value keeps its length, so the AI can still tell a card number from a postcode.

ValueKeep firstKeep lastResult
abcd22abcd, unchanged: 4 characters is not longer than 2 + 2
abcde22ab*de
jane.doe@example.com22ja****************om
424242424242424204************4242
Robert33Robert, unchanged: 6 characters is not longer than 3 + 3
Roberta33Rob*rta

A value is masked only when it is longer than the two numbers added together. Only text values are masked: a card number your API returns as a JSON number, such as 4242424242424242 without quotes, passes unchanged.

The field path is compared with each field’s position in the response, ignoring upper and lower case. Fields inside lists are numbered from 0, such as orders[0].customer.email.

Field path in the ruleMatchesDoes not match
emailemail, user.email, orders[0].customer.emailemailVerified
user.emailuser.email, account.user.emailuser.emails[0]
*.ibaniban and any field called iban at any depthiban_country
userevery text value inside user, such as user.name and user.phoneusername
emails*emails[0], emails[1]: a list of plain text values—
*.account_number,*.sort_codeboth fields; a comma separates several paths in one rule—

A path that names an object masks everything inside it. user masks the whole user record, which is rarely what you want; name the field instead.

For each field, StrikeUp takes the rules that apply to the toolkit and tool that answered, in this order, and uses the first one that matches:

  1. Higher Priority first.
  2. With equal priority, the narrower scope first: one tool, then one toolkit, then all toolkits.
RuleScopePriorityField pathUsed for billing_contact.email from the tool listInvoices?
Billing contact emailOne tool: listInvoices60billing_contact.emailYes: highest priority that matches
Customer emailOne toolkit60*.emailNo: same priority, wider scope
Any emailEvery toolkit40emailNo: lower priority

StrikeUp suggests rules when it generates a toolkit from your API specification. It reads the field names in the specification and proposes a rule for each field that looks like a password, key, card, bank, identity, contact or personal detail, with keep and priority values to match. Identifiers, counts, statuses and dates are not suggested.

  1. Open SecurityData masking. Pending suggestions appear at the top in AI Suggested Masking Rules ({{count}}), grouped by kind, such as “Passwords & Secrets” and “Payment & Financial”. The group names are always in English.
  2. Read each row: the field, the rule name with the reason, the toolkit, and Masked Preview.
  3. Select Activate on a row, or Activate All for a whole group or every suggestion. The message {{count}} rule(s) activated confirms it, and the rule moves to the rules table as Active.
  4. Select the ✕ icon on a row you do not want, or Dismiss All.
The "AI Suggested Masking Rules (2)" card at the top of the Data masking page, with "Activate All" and "Dismiss All" for every suggestion. Suggestions are grouped: under "Passwords & Secrets" the field payment_method.cvc, named "Card security code", for the Demo Billing API with masked preview "***"; under "Payment & Financial" the field refund.payout_iban, "Refund payout IBAN", with preview GB29…6819. Each row has its own "Activate" button and a dismiss icon. The highlighted "Activate" button in the card security code row turns that suggestion into an active rule.The "AI Suggested Masking Rules (2)" card at the top of the Data masking page, with "Activate All" and "Dismiss All" for every suggestion. Suggestions are grouped: under "Passwords & Secrets" the field payment_method.cvc, named "Card security code", for the Demo Billing API with masked preview "***"; under "Payment & Financial" the field refund.payout_iban, "Refund payout IBAN", with preview GB29…6819. Each row has its own "Activate" button and a dismiss icon. The highlighted "Activate" button in the card security code row turns that suggestion into an active rule.
Suggested rules mask nothing until you activate them; dismissed ones can be restored on the Suggestions page.
What this screenshot shows
Screen
Data masking (/admin/security/data-privacy)
Highlighted
button “Activate”, suggestions-card-first-group-row, enabled. activates the suggested rule for payment_method.cvc
Also visible
Groups Passwords & Secrets and Payment & Financial (English-only group names); Two suggestions with field, name, toolkit, masked preview; Activate All / Dismiss All at card and group level
Purpose
review AI-suggested masking rules created when a toolkit was generated

An activated suggestion becomes an ordinary rule for that toolkit, and you can edit it like any other. A dismissed suggestion stays switched off and is not suggested again for that toolkit; restore it from Suggestions. While suggestions wait, other pages show Masking rules suggested ({{count}}) — sensitive fields detected in your toolkits. with a Review them link.

The preview uses an invented sample value, so it can differ from the real result, for example for very short values. Use Test masking to see the real outcome.

Typical suggestions look like this:

Kind of fieldKeep firstKeep lastPriority
Passwords, PINs, card security codes, secret keys0090
API keys and tokens4080
Card and bank account numbers, national ID and phone numbers0475
Email addresses, IBANs, passport numbers2465
Names, addresses, dates of birth3350
IP addresses8040
  1. Select New Rule in the header.
  2. Fill in Name * and Field Path *, for example *.email. Add a Description if colleagues need the reason.
  3. Choose Scope *. For Toolkit-specific, also pick the toolkit; for Toolkit-Tool specific, the toolkit and the tool.
  4. Set Keep First Characters, Keep Last Characters, Masking Symbol and Priority.
  5. Select Create. The message Masking rule created successfully! appears and the dialog closes.
The "Create Masking Rule" dialog, filled in. "Name *" is "Customer email", the description reads "Hide most of every customer email address returned by the Accounts API.", "Field Path *" is *.email, "Scope *" is "Toolkit-specific" and "Toolkit *" is Demo Accounts API. "Keep First Characters" is 2, "Keep Last Characters" is 4, "Masking Symbol" is * and "Priority" is 60. The highlighted "Create" button at the bottom saves the rule as active straight away.The "Create Masking Rule" dialog, filled in. "Name *" is "Customer email", the description reads "Hide most of every customer email address returned by the Accounts API.", "Field Path *" is *.email, "Scope *" is "Toolkit-specific" and "Toolkit *" is Demo Accounts API. "Keep First Characters" is 2, "Keep Last Characters" is 4, "Masking Symbol" is * and "Priority" is 60. The highlighted "Create" button at the bottom saves the rule as active straight away.
A filled-in rule that masks every email field in Accounts API responses, keeping the first 2 and last 4 characters.
What this screenshot shows
Screen
Create Masking Rule (/admin/security/data-privacy)
Highlighted
button “Create”, dialog-footer-right, enabled. creates the rule; it is active immediately
Also visible
Name Customer email, field path *.email; Scope Toolkit-specific, toolkit Demo Accounts API; Keep first 2, keep last 4, symbol *, priority 60
Purpose
create a masking rule

A new rule is active at once and applies from the next tool call. Responses already stored in the tool-run log keep what they had.

Example. The rule in the screenshot masks every email field returned by the Demo Accounts API, keeping 2 characters at the start and 4 at the end: olivia.hart@example.com becomes ol*****************.com.

  1. Select Test Masking in the header.
  2. Paste a sample response into JSON Data *. It must be valid JSON.
  3. Optionally choose Toolkit (Optional) and Tool Name (Optional).
  4. Select Test and compare Original JSON: with Masked JSON:.
The "Test Masking" dialog after a test run with "Toolkit (Optional)" set to Demo Billing API. Under "Result:" the list "Applied Rules (3):" names Card number (Global), IBAN (Global) and VAT ID (Server). "Original JSON:" shows a sample invoice response for Sample & Partners Ltd with a full VAT ID and card number. The highlighted "Masked JSON:" block shows the same response as the assistant would receive it: VAT ID GB******789 and card number ************4242, with the invoice number unchanged; both blocks scroll to show the IBAN further down. At the bottom are "Close" and "Test".The "Test Masking" dialog after a test run with "Toolkit (Optional)" set to Demo Billing API. Under "Result:" the list "Applied Rules (3):" names Card number (Global), IBAN (Global) and VAT ID (Server). "Original JSON:" shows a sample invoice response for Sample & Partners Ltd with a full VAT ID and card number. The highlighted "Masked JSON:" block shows the same response as the assistant would receive it: VAT ID GB******789 and card number ************4242, with the invoice number unchanged; both blocks scroll to show the IBAN further down. At the bottom are "Close" and "Test".
Paste a sample API response to see exactly what the assistant would receive; nothing is saved.
What this screenshot shows
Screen
Test Masking (/admin/security/data-privacy)
Highlighted
“”, dialog-result-masked-json, shown after Test. shows the masked version of the sample JSON
Also visible
Applied Rules (3) list: every active rule in scope for the chosen toolkit; Original JSON with card number, IBAN, VAT ID; Masked JSON with the same values masked
Purpose
check rules on sample data before relying on them

The test uses the same rules and order as a live tool call:

Your choiceRules used
No toolkitRules for all toolkits only
A toolkitRules for all toolkits and for that toolkit
A toolkit and a toolRules for all toolkits, for that toolkit and for that tool

The list under AI Suggested Masking Rules ({{count}}) is not involved: suggestions waiting for activation never mask. The applied-rules list names every active rule that applies to your choice, whether or not it changed a value, with its scope in StrikeUp’s internal wording (“Global”, “Server”, “ServerTool”). Compare the two JSON blocks to see what actually changed. Nothing is saved, and any member of your team can run tests.

  • Change a rule: select the pencil icon in its row, adjust the fields, and select Update. Scope, toolkit and tool cannot be changed; delete the rule and create a new one instead.
  • Pause a rule: in the same dialog, select Disable, then Update. The rule shows Inactive and masks nothing until you select Enable and save again.
  • Delete a rule: select the bin icon and confirm the browser’s question, Are you sure you want to delete this masking rule?. The rule is removed for good.

A change applies from the next tool call.

Where
Above the page heading, only while suggestions are waiting.
What
Lists each suggestion by group with Field, Name, Toolkit/Tool and Masked Preview. Activate and Activate All turn suggestions into active rules; the ✕ icon and Dismiss All switch them off for good. Groups can be folded.
Why
Starts you with rules for the sensitive fields your API actually returns.
Where
The header, left of Test Masking.
What
Reloads the rules table. It does not reload the suggestions; reload the page for that.
Why
Shows rules a colleague just added.
Where
The header.
What
Opens the test dialog described in Test masking. Saves nothing.
Why
Confirms a rule does what you expect before real data passes through it.
Where
The header, at the right. The empty table also offers Create your first masking rule to protect sensitive data.
What
Opens Create Masking Rule.
Why
Covers fields no suggestion caught.
Where
Filter by Scope:, above the table.
What
Shows All rules, or only Global, Toolkit or Toolkit Tool rules. It filters the suggestions in the same way.
Why
Finds the rules for one toolkit in a long list.
ColumnWhat it showsWhy
NameThe rule name, with its description underneathTells colleagues what the rule protects
Field PathThe path or paths the rule matchesCheck the path matches your API’s field names
ScopeGlobal (blue), Toolkit (purple) or Toolkit Tool (orange)Shows how far the rule reaches
Toolkit/ToolThe toolkit, and the tool for single-tool rules; empty for rules on all toolkitsShows which API the rule belongs to
Keep CharsCharacters kept at the start / at the endShows how much stays readable
SymbolThe masking character—
Priority0–100; the table is sorted by it, highest firstDecides which rule wins
StatusActive or InactiveInactive rules mask nothing
ActionsPencil (edit) and bin (delete) iconsChange or remove the rule
FieldDefaultRules
Name *EmptyRequired. Missing name or path shows Name and Field Path are required
DescriptionEmptyOptional
Field Path *EmptyRequired. Dot notation, * wildcards, commas between several paths. The path is not checked against your API
Scope *Global (all toolkits)Or Toolkit-specific, or Toolkit-Tool specific
Toolkit *—Required for the two narrower scopes: Toolkit is required for toolkit-specific rules. Lists every toolkit, including switched-off ones
Tool Name *—Required for a single-tool rule: Tool name is required for toolkit-tool specific rules. Matches the tool’s exact name
Keep First Characters20–50
Keep Last Characters20–50
Masking Symbol*One character. Do not leave it empty
Priority00–100; Higher priority rules are applied first

The Edit Masking Rule dialog has the same fields except scope, toolkit and tool, plus the Disable or Enable button.

Where
Test Masking in the header.
What
JSON Data * takes the sample; Toolkit (Optional) and Tool Name (Optional) choose which rules apply. Empty input shows Please enter JSON data to test; input that is not JSON shows Invalid JSON format. Close clears the dialog.
Why
Shows the exact masked text the assistant would receive.
PartWho can use it
The page, rules table and suggestions, read-onlyEvery signed-in member
Test MaskingEvery signed-in member
Creating, editing, pausing and deleting rules; activating and dismissing suggestionsThe Admin role only. Other roles see the buttons, but the change fails with Request failed
TopicFact
What is maskedSuccessful responses from your toolkits’ tools, before the AI reads them and before they are written to the tool-run log.
What is not maskedWhat customers type in the chat, the assistant’s replies, the request the assistant sends to your API (it is stored in the tool-run log as sent), knowledge base content, and messages on the violations page.
Error responsesWhen your API answers with an error, the AI receives the error text unmasked; only the copy in the tool-run log is masked. Keep personal data out of your API’s error messages.
If masking fails, the response is withheldIf masking a response fails, for example because a rule’s masking symbol is empty, neither the AI nor the log gets the response: both see “[Error] The API response was withheld because the data-masking rules could not be applied.” and the assistant cannot use that tool result. Check every rule has a symbol.
One-wayMasking changes the value in the response. StrikeUp keeps no original, and there is no way to unmask.
Takes effect at onceNew and changed rules apply from the next tool call. Older tool-run entries are not masked again.
Text values onlyNumbers, true/false and empty values are never masked.
Per workspaceRules belong to your workspace. A rule for all toolkits covers every toolkit of your workspace.
LanguagesMatching uses field names, so it works whatever language the values are in. Suggestion group names are shown in English.
CostMasking itself uses no AI. Suggested rules are created as part of generating a toolkit.

Not for a successful tool response covered by an active rule. It sees an unmasked value only when no active rule matches the field; error responses from your API are masked like any other. When masking a response fails, the AI gets no response at all, only a note that it was withheld. Test your rules with Test Masking to close gaps.

No. Masking applies only to the responses of your toolkits’ tools. What a customer types, and what the assistant writes back, is not masked. The guardrails on SecurityGuardrails check customer messages, but they allow or block; they do not mask.

No. A rule replaces the characters in the response itself, and StrikeUp keeps no copy of the original value. The AI, the chat and the tool-run log only ever have the masked value. To see a full value, look it up in your own system.

A value is masked only when it is longer than Keep First Characters and Keep Last Characters added together. With 3 and 3, “Robert” (6 characters) stays as it is and “Roberta” becomes “Rob*rta”. Lower the numbers for fields with short values.

Only text values are masked. If your API returns a card number as a JSON number, without quotes, no rule changes it. Ask your API team to return such values as text, or remove them from the response.

Does the path email also mask customer.email?

Section titled “Does the path email also mask customer.email?”

Yes. A path matches the field with that name at any depth, so email covers email, customer.email and orders[0].customer.email. Upper and lower case are ignored. Write customer.email instead if you only want that one.

Add * to the end of the path, such as emails*. Values in a plain list are numbered, emails[0], emails[1], and the path emails on its own does not match them. Objects inside a list, such as orders[0].email, are matched by email as usual.

Two rules match the same field. Which one wins?

Section titled “Two rules match the same field. Which one wins?”

The one with the higher Priority. With equal priority, the narrower scope wins: a single-tool rule before a toolkit rule before a rule for all toolkits. Only one rule applies to each field, so a later rule never masks further.

No. The edit dialog changes name, description, path, the kept characters, symbol, priority and status only. To move a rule to another scope or toolkit, create the new rule with New Rule and delete the old one.

How do I switch a rule off without deleting it?

Section titled “How do I switch a rule off without deleting it?”

Select the pencil icon in the rule’s row, select Disable, then Update. The rule shows Inactive and stops masking from the next tool call; switch it back on the same way.

StrikeUp creates them when it generates a toolkit from your API specification. It reads the field names in the specification and proposes rules for fields that look like secrets or personal data. The suggested rules belong to that toolkit and wait, switched off, until you activate them.

Do suggested rules mask anything before I activate them?

Section titled “Do suggested rules mask anything before I activate them?”

No. A suggestion masks nothing until you select Activate or Activate All on SecurityData masking. After that it is an ordinary active rule that you can edit or pause.

I dismissed a suggestion by mistake. Can I get it back?

Section titled “I dismissed a suggestion by mistake. Can I get it back?”

Yes. Dismissed suggestions are kept, switched off. Restore them from ConfigureSuggestions, then activate them on the data masking page. A dismissed field is not suggested again on its own when the toolkit is regenerated.

Why does the masked preview differ from the real result?

Section titled “Why does the masked preview differ from the real result?”

The preview masks an invented sample value, not your data, and always shows at least a few masking characters. Real values that are too short stay unmasked. Paste a real-looking response into Test Masking to see the actual result.

The test lists a rule that changed nothing. Why?

Section titled “The test lists a rule that changed nothing. Why?”

The applied-rules list in Test Masking names every active rule that applies to the toolkit and tool you chose, whether or not its path matched a field. Compare the original and masked JSON to see which values actually changed.

Can colleagues without the Admin role test masking?

Section titled “Can colleagues without the Admin role test masking?”

Yes. Every signed-in member can open Test Masking and run tests; nothing is saved. Creating, editing, deleting, activating and dismissing rules need the Admin role.

Is the request the assistant sends to my API masked in the log?

Section titled “Is the request the assistant sends to my API masked in the log?”

No. The tool-run log stores the request exactly as sent, including any values the customer gave the assistant. Only your API’s response is masked. Keep this in mind for tools that take personal data as input.

No. A rule applies from the next tool call. Entries already in the tool-run log keep the values they were stored with, masked or not.

SymptomWhat to check
A value still appears in full in a tool runIn order: is the rule Active? Does the path match the field (try Test Masking)? Is the value text, not a number? Is it longer than the kept characters together? Do the toolkit and the exact tool name match? Does a higher-priority rule keep more characters?
Nothing is masked any more for a toolkitLook for a rule with an empty Symbol column. Give it a symbol, such as *, and save.
Name and Field Path are requiredFill in both the name and the field path.
Toolkit is required for toolkit-specific rules or Tool name is required for toolkit-tool specific rulesPick the toolkit, and for a single-tool rule the tool, or choose a wider scope.
Invalid JSON formatThe sample must be valid JSON: double quotes around names and text, no trailing commas.
Failed to activate masking rule, Failed to dismiss masking rule or Request failedChanges need the Admin role.
The suggestions card is missingNo suggestions are waiting. Dismissed ones are on ConfigureSuggestions. Reload the page if you expected new ones.
The preview and the real result differThe preview uses a sample value. Use Test Masking with a realistic response.
A whole object is maskedThe path names the object, such as user. Name the field instead, such as user.email.