Read the AI usage report
Who used which AI application and how much — the shadow-AI report over browser-extension and proxy traffic, clean requests included.
- Version: 0.4
- Feature: ext.browser
- Role: admin_user, viewer
- Type: task
AI Usage is the shadow-AI report: who used which AI application, how much, and what they tried to send. Unlike every other detection surface, it counts clean traffic too — the extension and the proxy report every inspected request, not only the ones a filter caught.
What do I need?
- Licence
- Any
- Role
admin_userviewer
Prerequisites
- At least one capture point is reporting: the browser extension is enrolled on some devices, or the inline proxy / ICAP integration is inspecting traffic.
- You are signed in as an admin_user, the superadmin, or a viewer. Every endpoint behind this page requires admin_user.
- The installed licence includes the browser-extension feature (ext.browser). It ships in all three tiers.
The report unions two capture points at read time: the browser extension's own event store and the
proxy/ICAP AI_USAGE events in the shared event log. What the proxy cannot know — the device, the
upload kind, the page URL — stays empty rather than being guessed, and the overview reports how
many rows came from each side, so a thin report can be traced to whichever capture point is silent.
Note
Rows are grouped by application, not by hostname. One ChatGPT conversation emits events from
chatgpt.com and from whichever regional upload bucket served the file; grouping by raw hostname
reported three apps in use as twelve. Hostnames under the reserved TLDs .test, .example,
.invalid and .localhost are dropped from the union entirely — they are fixtures, never real
destinations.
/assets/screenshots/ai-usage@0.4.pngSet the scope
Open the page
Select Detection & Filtering → AI Usage.
The page loads the last 30 days and refreshes itself once a minute.
Filter to one application
Type into Filter by application….
The filter is applied by the gateway to every tile and table at once, and it matches the
application name as well as the hostname — typing chatgpt returns the upload-bucket rows too.
Filter by verdict or capture point
Set the verdict dropdown to Allowed, Redacted or Blocked, and the source dropdown to Extension or Proxy.
Both are applied by the gateway on the shared base query, so the tiles and the tables move together. Proxy rows are always Allowed, so Blocked with Proxy is a valid query that returns nothing.
Set the window
Pick Last 7 days, Last 30 days or Last 90 days.
The window is day-based. Anything finer belongs to All detections.
Read the report
The five tiles are the summary:
| Tile | What it counts |
|---|---|
| AI interactions | Every inspected request in the window, with the Allowed / Redacted / Blocked split |
| Active users | Distinct people and devices — a device is one real human, just unidentified. The unattributed bucket is never counted here |
| AI applications | Distinct applications, with the file and image upload count underneath |
| Est. prompt tokens | A client-side estimate. It is not billing, and it is not the figure on Token cost and savings |
| High risk events | Events scoring 60 or above, with the peak score |
Highest risk events sits directly under them: the top 50 events by risk score, the list an operator acts on. Selecting a row opens that exact event in the All Detections detail view.
Note
The risk score, 0–100, scores what the user tried to send and deliberately ignores the verdict.
A blocked ID card and an allowed one describe the same behaviour. It is base + volume + channel,
where base is the highest severity present — credentials and identity documents rank above
financial data, which ranks above direct identifiers. Model attacks such as prompt injection score
on a separate, lower footing, and show in the Risk column as Model attack.
Below the chart, Models seen tags each model with its event count. A tag reading
n inferred means those events named no model and the model was carried from that user's last
observed one — an inference, not a measurement. File uploads never name a model, so most
attributions are inherited.
Drill into one person
Open the by-user table
In Usage breakdown, select By user.
Each row is one identity: a person (an authenticated login), a Device (an anonymous browser profile) or Unattributed (proxy traffic carrying no identity at all). Narrow with the User kind filter beside the tabs.
Open their page
Select a row.
The person page repeats the tiles, the applications they used and their own events, scoped to that identity. It offers Open in All Detections, Export CSV and Export PDF.
Warning
Selecting the Unattributed row does not open a person page — that key matches nobody. The dashboard sends you to Inspection with the attribution rules open instead, because the fix is to attribute the traffic, not to browse it.
Export the view
Export the page as a PDF
Select PDF report in the page header.
The gateway re-assembles the report server-side under your own scope and renders it. The cover states the app, verdict, source and user filters, and the period.
Warning
The User kind filter is applied in the browser to rows already fetched — no query narrows on it. The export therefore covers every kind, and says so: the cover line reads User kind (view filter) precisely because the figures below it are not filtered by it.
Fields reference
Header controls
| Control | What it does | Applied by |
|---|---|---|
| Filter by application… | Free-text application or hostname filter | Gateway |
| Verdict dropdown | All verdicts / Allowed / Redacted / Blocked | Gateway |
| Source dropdown | All sources / Extension / Proxy | Gateway |
| Window dropdown | Last 7 days / Last 30 days / Last 90 days; 365 is the API maximum | Gateway |
| User kind filter | All users / People / Devices / Unattributed | Browser only |
| PDF report | The filtered view as a branded PDF | Gateway |
Usage breakdown columns
| Column | By AI application | By user |
|---|---|---|
| First column | Application, with an n hosts sub-line when several were folded in | User, with a Device or Unattributed tag |
| Events | Inspected requests | Inspected requests |
| Allowed / Redacted / Blocked | The verdict split | The verdict split |
| Uploads | File and image uploads | File and image uploads |
| Users / Apps | Distinct users of the app | Distinct apps the user touched |
| Est. tokens | Client-side estimate | Client-side estimate |
| Last activity | Relative time of the newest event | Relative time of the newest event |
Verify
- With a device enrolled on the browser extension, visit an AI site and send a prompt. Within a minute the AI interactions tile rises and the application appears under By AI application.
- Switch the source dropdown between Extension and Proxy. If one of them empties the page, that capture point is the only one reporting — the Active users sub-line says which.
- Open Event logs and filter for
AI_USAGE. Those are the proxy/ICAP rows this page unions in; extension rows live in the extension's own store and do not appear there. - Reading this page writes no event of its own. There is nothing to look for in the audit trail after opening it.
If it fails
- Could not load usage data — The request failed. Try again — if it keeps failing, check that the gateway is reachable. The panel deliberately does not guess at a cause.
- A separate toast naming
FEATURE_NOT_LICENSEDand the featureext.browser— the installed licence does not carry the browser-extension key, and both this page and Browser extension are refused. See Licence. - No traffic matched these filters in a breakdown tab — the window, application, verdict or source filter excluded everything. Clear them one at a time.
- The report is thin and Active users reads via proxy / ICAP — no extension is reporting. Enrol a device, or accept that the report covers only proxied traffic.
- An application you know is in use is absent — check whether its hostname sits under a reserved TLD, which the union drops. No other hostname is ever excluded; finding the destination nobody configured is the point of the report.
- A person appears twice — one row under a login name and one under a device key. Only the extension can name an authenticated identity; a device row is a browser profile that has not signed in.
- Failed to render AI usage PDF: … — a 503. The report renderer is down; the page itself is unaffected.
Next steps
- All detections — the same events with their detections, and the detail view the Highest risk events table links into.
- Inspection — where proxy traffic gets attributed to a person, which is what empties the Unattributed bucket.
- Browser extension — enrol the devices that produce the richer half of this report.
Last updated on