Redaction controls
Telltale tells you whether a person or an AI agent is driving a session. It does that from how the page is used, not from what people type. This page lists what is never collected, the controls you have on top of that, and how to check them.
What Telltale never collects
These are left out by the browser SDK and the collector whatever you configure. The one opt-in exception is on your server channels, not in the browser: with Deep insights turned on by the workspace owner, Telltale keeps the MCP tool or API fields you list from agent calls, which can hold what someone typed into an agent (never headers, cookies or credentials).
- Typed content. No text from inputs, textareas, selects or editable regions, and no field values. Key timing is measured; which key was pressed is used only to pair a press with its release and is never sent.
- Credentials. Nothing at all from password fields: no timing, no shapes, no labels. Forms with a password or file input are never turned into proposed tools.
- Cookies, storage and headers. No cookie values, no values from the page's own storage (the SDK reads only what it stored itself), no request header values. Header names may be recorded for action discovery; header values never are.
- Request and response bodies. Action discovery (capture
'schema') records shapes only: field names and types, such as{ "quantity": "integer" }. Never the values sent or returned. - Clipboard contents, page text and selectors. Paste is counted by pattern (for example select-all then paste), never what was pasted.
- Query strings and fragments. Page addresses are kept as paths, cut at
?and#. Path segments that look like identifiers are replaced by templates (for example/orders/{p2}).
See How Telltale works for every signal that *is* collected.
Sensitive routes are skipped
Requests to paths that look like sign-in, tokens, passwords, secrets, sessions, payment, billing, checkout, verification, one-time codes, MFA or cards are never observed for discovery, and on a sensitive page no control label is read. This is built in; you don't configure it.
data-telltale-ignore
Add data-telltale-ignore to any element to keep it and everything inside it out of observation:
<section data-telltale-ignore>
<!-- account number, medical notes, anything you don't want measured -->
</section>Inside an ignored element:
- key timing, key auto-repeat and similar input measurements are not taken;
- no control or field label is read;
- a native form that itself carries
data-telltale-ignoreis never proposed as a tool (put the attribute on the<form>); - page-declared choices (
<select>options, radio values) are not read, even withcaptureChoices: true.
Other controls
| Control | Where | What it does |
|---|---|---|
capture: 'behavior' | init() or the Site's capture setting | Interaction and environment signals only: no request metadata and no shapes. The default. |
capture: 'requests' | same | Adds same-origin request metadata: method, path template and status. No shapes. |
capture: 'schema' | same | Adds request and response shapes for action discovery. Field names and types only. |
| Site capture setting | Dashboard › Tools | A ceiling: the page can never collect more than the Site allows. |
captureLabels: false | init() | No control or field labels at all, even with schema capture. |
data-telltale-label | an element | Opts a control's own label in, in clear. Without it a label is sent only as a keyed token, and its text only after many separate sessions showed the same token. |
behaviourStream: false | init() | Turns the behaviour stream off. Such sessions never get a Human verdict. |
data-telltale-wait-for-consent | the script tag | Collects nothing until your consent banner calls optIn(). |
Consent and withdrawal
The hosted tag records from page load unless you hold it for your consent banner (see Browser SDK). A visitor's saved refusal is always honoured. optOut() stops collection in every tab, cancels anything still being sent and discards pending evidence. Withdrawal never removes Telltale's record of decisions your backend already asked for; to delete a person's data, use Settings › Data & privacy (erasure and subject export).
MCP servers and APIs
- By default nothing to redact on Telltale's side. The MCP SDK and the API middleware send tool names, routes, outcomes, timings and the IDs your
identifyreturns; never arguments, results, bodies, query values, headers or cookies (MCP, APIs). - Your own logs:
dataStaysWithYouhands the full call to your logger or OpenTelemetry. Redact there with your own tools; Telltale never receives it. - The why field (MCP, opt in per tool, and only while Understand what agents are trying to do is on): a one-line reason the agent gives, kept 30 days. An agent may put personal data in it; tell your users.
- Deep insights (opt in, owner-enabled): only the fields you list per tool or route are sent. Redaction happens in your SDK before anything leaves your server: unlisted fields are dropped, credential-like fields and values are dropped whatever you list, values are capped, and your
redact(fields)hook runs last (it can remove or shorten fields, never add them). Telltale checks every field again on arrival and drops anything credential-like. Stored encrypted, 7 to 30 days. See Deep insights.
What leaves Telltale
Webhooks and forwarding to your own tools (OpenTelemetry, PostHog, Segment, configured in Settings › Developer tools) carry categories only: the verdict, a confidence band, an agent's name together with how we know it, the decision outcome, and the Site and account IDs you sent us. They never carry reasons, scores, typed content or request values. The browser page itself only ever receives the category.
Check it yourself
Open your browser's developer tools on a page with the tag, filter network requests to your Telltale origin and read the request bodies: you will see event types, timings and shapes, never what was typed. It's not working covers what the install check can see.