phishtriage

For security teams · 15 minutes

Data handling

For each thing the PhishTriage browser extension does: what leaves the device, where it goes, and how long it is kept. Then the processors, what a team can see, deletion, and the administrator policy keys that change data flows.

This page explains the privacy policy, which is binding. Where the two differ, the policy is right, except on behaviour of version 1.0.0 that the policy, written for 1.1.0 and later, does not describe, such as the feedback buttons. Headings in quotation marks below are the policy’s own section titles.

Versions and scope

What runs before anyone presses anything

Source: the policy’s permission list under “TL;DR”, and “When you click ‘Analyze’ (on-demand triage)”. The four mail hosts are version 1.0.0’s; policy 1.10 adds a fifth, outlook.cloud.microsoft, from 1.1.0.

Inventory, per action

Every request to the backend also carries the device’s IP address, as every HTTP request does. What happens to it is under IP addresses and the application log.

Action and default What leaves the device Where it goes Retention (hosted)
Registration
Automatic at install; retried before the first scan of a session if it failed.
The device’s random pseudoId, the browser, an empty label, and an enrolment token only if an administrator pushed one by policy. No email address, nothing typed. api.phishtriage.com Device record: no expiry. Deleted on request by email.
Email check
Analyze pressed on one of the four mail hosts.
The open message, on Gmail and on Outlook on the web: subject, sender address and display name, one recipient, the reply-to (Gmail only), date, text body with the quoted thread stripped, up to ten URLs from the message (including any in the quoted part), attachment filenames, and a fixed note that authentication results are unavailable. Never attachment contents. api.phishtriage.com, then a model (see Where analysis happens) Triage record: 365 days by default, or the period that applies (7–365 days), fixed when it is written; 90 days if written before 4 October 2026 (see Retention). Log line: not deleted automatically; cleared by hand on request (see the application log).
Page check
Analyze pressed on any other page.
Title, full URL with path and query string, hostname, page text with hidden text included (up to 10,000 characters in the newest 1.0.0 builds, 5,000 in earlier ones), up to fifteen links; in the newest builds also readable same-origin frame content, a count of unreadable large frames and a wrapper flag. As above As above
Evidence capture
Keep evidence of phishing: on by default.
After a page check that comes back phishing or suspicious: a JPEG screenshot of the visible tab and the page’s full HTML. Never on the four mail hosts. api.phishtriage.com Phishing: 12 months. Suspicious: 30 days, or 12 months if a reviewer confirms it. Rejected by a reviewer: deleted immediately.
Background protection
Off by default.
The hostname, on each navigation. With Cache domains for 1 hour: at most once an hour per domain. api.phishtriage.com Visit record: as for the triage record. Log line: not deleted automatically; cleared by hand on request (see the application log).
Send full URLs
Off by default.
The full URL, query string included, on each main-frame navigation. api.phishtriage.com As above
File protection
Off by default.
For every download: SHA-256 fingerprint, filename, size, the extension’s verdict and the short reasons for it. Not the file. filescan.phishtriage.com File-check record: 365 days by default, or the period that applies, fixed when it is written (see Retention). File scanner log line: not deleted automatically; cleared by hand on request.
Check it properly
Per file, on a click.
That one file. filescan.phishtriage.com File scanned in memory, not stored. The file-check record is kept, as above.
Deep scan every file
Off by default.
Every downloaded file. filescan.phishtriage.com As above
Feedback buttons
Looks safe to me / Looks dangerous, version 1.0.0.
Nothing. The answer is kept on the device only. Local storage Up to 100 entries, until the extension or its storage is removed.
Portal sign-in
Optional, from the popup’s Log in.
Sign-in happens on Google’s pages. We receive the email address, its verified flag, the Google Workspace domain if any, and the display name. Google, then our portal Account and identity records: no automatic expiry.
Opening the popup
Every time.
The device’s credential, to ask which account and team the device belongs to. A device without a current credential first exchanges its extensionId for one. api.phishtriage.com Nothing is stored for the lookup itself; a newly issued credential is stored as a hash. The device keeps the answer locally.

Details for each row follow. Analyze and visit requests also carry the device’s pseudoId and, once registered, its extensionId. Evidence uploads, the start of a portal sign-in, the popup’s account check and, with file protection on, the blocklist refresh and every file check and full scan sent to filescan.phishtriage.com carry the device’s credential instead.

Registration

Runs from the browser’s install event, and again before the first scan of a session if that attempt did not succeed. There is no register control in the popup. Before registration the pseudoId is a 12-character random hexadecimal string generated on the device with crypto.getRandomValues; registration replaces it with a 32-character (128-bit) random value minted by the server. Neither is derived from an email address, IP address, hardware ID, fingerprint or any other identifier. Registration fails silently and retries; an unregistered device still scans. The stored extension record holds the extensionId, pseudoId, browser identifier, an optional label, when the device registered, and when it was last active — a timestamp rewritten on every scan and every visit ping that is recorded. Policy: “Pseudonymous ID” and “What the backend stores, and for how long”.

Email check and page check

Policy: “When you click ‘Analyze’ (on-demand triage)” and “What the backend stores, and for how long”.

Evidence capture

Policy: “Keeping evidence of phishing pages”. On the mail hosts, the lines above are how version 1.0.0, the version in the stores, behaves. Policy 1.10 describes the next version, 1.1.0, which there keeps a screenshot cropped to the analysed message and that message’s HTML, never the inbox.

Background protection and Send full URLs

Policy: “When you opt into URL or Domain Visit Tracking”.

File protection

Policy: “When you opt into File protection (early access)” and “Third-party processors”.

Feedback buttons

In version 1.0.0 a press of Looks safe to me or Looks dangerous sends nothing. The sidebar shows “Thanks — saved on this device.” The answer is kept in the extension’s local storage: up to 100 entries, each with the verdict, which button was pressed, the time, whether it was an email or a web page, and the full address of the page or mail message it was pressed on. Sign out and Leave team do not clear these entries; removing the extension, or clearing its storage, does. Policy 1.10, written for 1.1.0 and later, describes a press being sent by default; see its “Your corrections to a verdict”.

Portal sign-in

Policy: “Account and identity records”, “Pseudonymous ID” and “Third-party processors”.

Where analysis happens

Anything that needs a model is offered to backends in a fixed order. The first to return a usable answer is the one that answers:

  1. a model PhishTriage hosts itself, on a machine it runs on its own network;
  2. a third-party model service (Ollama Cloud) — configured in no deployment as of the effective date;
  3. Anthropic’s Claude API, the last resort.

A tier is asked only if it is configured, not switched off, and the request has time left. A tier that fails — unreachable, too slow, an error, a rate limit, unparseable or wrongly shaped output — hands the same content to the next. The policy deliberately makes no promise that content stays on PhishTriage hardware, and gives no proportion: the fallback is a rule, not a ratio. In the week of 17 August 2026 a misconfiguration sent every scan to Anthropic.

For some emails a second request is made to the tier that just answered, with the same content and an added instruction. It never goes onward and never to Anthropic. The stored triage record notes which tier answered. The policy does not say where the model server is.

Policy: “Where analysis happens”.

Processors and destinations

The extension’s data goes to destinations PhishTriage operates:

Records are stored in a PostgreSQL database on hardware PhishTriage owns and operates, in Estonia. No third-party storage provider has kept these records since production moved to PostgreSQL in August 2026. The processors the policy names:

The product includes no analytics, advertising, telemetry SDKs, error-reporting services or fingerprinting libraries. With file protection on, the second fetch of an ordinary download goes to the download’s own host, as described above. Policy: “Third-party processors”.

IP addresses and the application log

Policy: “What the backend stores, and for how long” and “The application log”.

What stays on the device

Deletion requests act on our servers and cannot reach the browser profile. Policy: “What the extension keeps on your own device”.

Retention summary

Policy: “Retention” and “Keeping evidence of phishing pages”.

What the team can see

Teams are created in the portal (Create a team). Only owners can open the Team page; every member, owner or not, sees the dashboard and its lists. What both show depends on the team’s Reporting mode. Every team starts in Aggregate. This describes the live portal.

Aggregate Attributed
Totals, trends and verdict counts Shown to every member; cover each member’s scans from when they joined, until each scan’s deletion date (see Retention) Shown to every member; cover each member’s scans from when they joined, until each scan’s deletion date (see Retention)
Dashboard lists (Requested Triages, Visited URLs, Phishing Evidence, Registered Extensions, Connected Devices), seen by every member, without a person column Withheld (“Not shown”) Shown for activity from the switch and from each member’s join: colleagues’ scans (each email’s sender and subject, or the page address, with its verdict; a scan opens to its summary, scores and any evidence), the site names their Background protection reported and, where Send full URLs is on, the full addresses, the evidence captures and the team’s browsers. Each scan reaches the member’s browser as stored, with its recipient address (normally the colleague’s own) and the message or page text, its links and attachment names, even though the list shows only sender and subject, or the address
Scans tab: Time, Type, Target, Verdict, Risk, Device / person (the person’s name or email address when the scan has an account); email and page scans and, with file protection on, each checked download by file name; an email or page scan opens to its sender and subject, or URL Withheld (“Not shown”) Shown for activity from the moment attributed reporting was turned on, and for each member from when they joined
Reporting tab: Scan volume by person Withheld Shown, same window
Devices tab: the Person column and per-device scan count Withheld (“Person and scan count are not shown.”) Shown
Phishing Evidence list (screenshots and page source) Withheld from everyone, the owner and the person whose device made the capture included: no viewing, downloading, confirming, rejecting or deleting single captures Visible to every member, in the same window as the scans; owners can Confirm phishing or Reject and delete

Sources: the portal’s Team page; the policy’s “Keeping evidence of phishing pages” and “Account and identity records”.

Deletion and access requests

Policy: “Retention” and “Your rights”.

Administrator policy keys that change data flows

These keys exist in the managed-storage schema of version 1.0.0. A key that is set wins over the user’s switch. The popup marks each controlled switch with a Managed badge and disables it. When proxyUrl, trackDomains, trackVisits or cacheDomainVisits is set, Settings also shows the notice “Some settings are managed by your organization and can’t be changed here.” There is no key for the feedback buttons, because in this version they send nothing.

Where each browser takes these keys, how an enrolment key joins browsers to a team, and the permissions a forced switch still needs: Roll out PhishTriage by browser policy. Managed rollout is offered with Enterprise; we can set it up with you (contact us).