The worklist
Figures
Filters
One search box over host and provider, a row of state chips, and quiet scoping controls on the right.
Chips only appear when they can match something, so an empty
Workflow chip means no automation platform has been seen at all.
Columns
Click any row to expand it. The detail strip shows Why this
ranking (the reasons behind the risk level), exact first and last
seen timestamps, and the three action buttons.
How risk is ranked
Risk is derived from signals the inventory already carries. There is no hidden score and no model: recognition, capability, and exposure.
Unknown hosts rank high because nobody has verified where the data
goes. Workflow platforms rank high because an AI step inside an
automation can relay records between systems without a human in the
loop. Device spread ranks high because a tool on twenty laptops is a
policy problem, not an individual one.
When the automatic action passes a service over
A workspace can set Newly discovered AI so that anything the fleet finds is inspected, or protected, or blocked, without waiting for a person. That action does not reach every discovered row, and the row now says so rather than leaving you to guess. Only a corroborated candidate is acted on automatically. A host the classifier recognised on a single weak signal stays a candidate for a person to decide about, and a host nobody probed is acted on only when its name alone clears the bar.
The bar is deliberate. An earlier build promoted a bank to protected
off a single refused request, and a rule that decrypts a bank on one weak
signal is worse than a service nobody inspected. Anything held back is
still listed, still ranked, and can be inspected or blocked by hand in one
click; the automation simply will not decide for you.
Risk is only meaningful for undecided services. Anything sanctioned,
blocked, or managed resolves to low by definition, so the worklist
shows
— rather than pretending the ranking still says something.The decisions
All of these require theendpoint.ai_services.manage permission (formerly
runtime_security.ai_services.manage, see
Endpoint permissions) and write an audit record.
Three of them are decisions about the service, and they move
status:
Onboarding used to create the App and push no rule at all, which
left the service governed on paper but never decrypted. It now
writes its own
inspect rule, so the one status that means “fully
managed” gets the full treatment. If you onboarded a service before
August 2026 and added the inspect rule by hand, that rule is
yours and is left alone.Protect: inspect without deciding
Protect is not a decision about whether the company wants the service, so it leavesstatus alone and the row stays in the review
queue.
Protect is the middle ground between letting something happen unseen
and banning it: you get visibility and redaction on a tool nobody has
vetted, without breaking anybody’s day while you decide.
Which decision to reach for
A weekly triage pass
1
Filter to Needs review, sorted by highest risk
The default sort already does this. Set the time range to the last
7 days for the new arrivals, or all time to clear the backlog.
2
Start with the unknown hosts
Expand each row and read Why this ranking. Resolve the
hostname: is it an internal gateway, a new vendor, or something
nobody can account for?
3
Check exposure before deciding
A service on one device is usually a person to talk to. A service
on twenty is a policy to write. Use the device and user filters to
see who is behind it.
4
Decide
Sanction, block, or onboard. Every row you leave undecided is a
row the report will call ungoverned.
5
Confirm the block landed
Blocked services push a host rule to the fleet. Policy propagates
within about 30 seconds, or immediately if you Push policy
from Endpoint → Devices.
Insights
Runtime Security → Shadow AI → Insights is the read on the estate, where the worklist is the read on individual services. It deliberately repeats nothing from the inventory.
The trend needs at least a day of rollup data. Until agents have
reported, it says so rather than drawing a flat zero line.
Export the report
Export on the Shadow AI page generates a PDF built server-side.
The report leads with a narrative summary, then the risk-ranked
inventory, the traffic trend against the prior period, exposure
breakdowns, and a methodology section that states plainly that
detection is passive and destination-only.
Sanctioned services are approved tools, not shadow AI, so they are
excluded from the report everywhere: the table, the totals, and the
breakdowns. The inventory in the console still shows them, filtered
behind the Sanctioned chip.
shadow-ai-report-20260729.pdf or
shadow-ai-summary-20260729.pdf, so a monthly export drops cleanly
into an evidence folder.
API
The discovery routes live under/api/runtime-security/ and use the
same workspace authentication as the rest of the dashboard API.
endpoint.discovery.view reads; endpoint.ai_services.manage acts.
Both permissions were renamed in August 2026. Reading the inventory
used to require the endpoint policy key, which took Shadow AI away from
roles that could see Runtime Security but were never given policy
read, so the inventory now has a permission of its own. See
Endpoint permissions.
{id} is the service’s uuid. Every decision route returns the
updated service row.
GET /discovery accepts status, days, device_id, and user
query parameters, matching the console’s filters:
Audit trail
Every decision is recorded in the audit trail against thers_discovered_service entity, with the acting user and
the hostname.
Forward them to your SIEM with the
audit webhook if shadow-AI decisions
are part of your control evidence.
Common workflows
Build the case for enforcement
Build the case for enforcement
- Run the fleet observe-only for two weeks.
- Export the full report for the last 14 days.
- Walk the risk drivers and the department breakdown with the data-protection owner.
- Decide the enforcement policy with real numbers rather than hypotheticals.
Clear the high-risk backlog
Clear the high-risk backlog
- Chip: High risk. Sort: Most devices.
- Work top-down. Broad exposure first, since it affects the most people.
- Blocked services push a host rule immediately; tell the affected teams before you block a tool they use daily.
Investigate one team
Investigate one team
- Set the User filter to a team member, or read the department breakdown on Insights.
- Switch the drill-down between device and user while staying filtered, the breakdowns stay populated.
- Sanction the tools the team genuinely needs and onboard the one handling sensitive data.
Bring a discovered service under full inspection
Bring a discovered service under full inspection
- Onboard as app on the row. An App is created and linked.
- Configure thresholds, custom PII rules, and tool policy on the new App, see Apps.
- Add an
inspecthost rule for the hostname pointing at that App, in Endpoint policy → AI host rules. - Confirm events start arriving with
source=agentin Observability.
Prove coverage to an auditor
Prove coverage to an auditor
- Export the full report with Anonymize on if the audience should not see identities.
- Pair it with the audit trail export for the same period, which carries the decisions and who made them.
- The methodology section states the detection limits explicitly, which is usually the auditor’s first question.

