Ops findings are for the SOC only. Customers never see them: not in the customer portal, and not on customer notification routes. The Ops tab appears only with the Talon v2 setting on, and needs a talon-analyst release with the ops API.
What the jobs check
Each finding is about one subject (an agent, or a source and its index pattern) and stays one finding across runs: Talon updates it while it lasts and resolves it once the subject is measured healthy again. A run that couldn’t measure something resolves nothing, so an outage never makes problems disappear.
What is code and what is the model. The severity, title, evidence (numbers, ids and times, never log text) and any artifact are written by the job’s code. Why it matters and what to do are the model’s explanation; when there isn’t one (the model’s budget was spent, say) the recommendation is the job’s own fixed hint. CoPilot shows the model’s text as plain text, never as Markdown or HTML.
The Ops tab
AI Analyst → Ops, for admins, analysts and responders, like the Memory tab.- Findings. Filter by job, customer, status (open by default), severity and, for admins, platform findings. Each row shows the severity, title, customer, job, when it was first and last seen and its status. Load more pages through older ones.
- A finding’s detail opens in a side drawer: the evidence as a list of fields, any artifact in a copyable code block, and Talon’s explanation and recommendation as plain text.
- Actions on a finding, each recorded in CoPilot’s audit log (
talon_ops.acknowledge,talon_ops.mute,talon_ops.reopen) and in Talon’s, with you as the actor:- Acknowledge: you’ve seen it; it stops being open.
- Mute until a date (at most 90 days ahead): it stays quiet until then, and is open again afterwards if it is still true.
- Reopen an acknowledged or muted finding. A resolved finding can’t be reopened by hand: it opens again when a run finds it again. An acknowledged finding whose severity rises is open again.
- Jobs. Each job with its schedule, its last run (status, the counts of new, updated and resolved findings, when) and its next run. Admins have Run now for an enabled job (
talon_ops.runin the audit log).
Notifications
Create an internal route (Notifications → Internal Routes) with the trigger Talon flags something in the stack. CoPilot asks Talon for new findings every 3 minutes and sends each one each time it becomes news: when it is new, when it comes back after resolving, when its severity rises and when a mute on it expires. A finding that stays the same is not sent again, and a severity that falls is not sent. The route’s minimum severity applies (Talon’sinfo, low, medium and high are CoPilot’s Informational, Low, Medium and High).
- The default message names the finding, the job, the customer, its status and when it was first and last seen, with a link to the Ops tab (set
COPILOT_URLfor the link). - A webhook gets the finding as data in an
ops_findingobject: see Theops_findingblock. - A template can use
{{ context.ops_finding }}, including Talon’swhyandrecommendation. Every string from Talon (the model’s text, but also titles and the host names and OS strings endpoints report) is escaped in HTML and Markdown templates and everywhere on Teams, so a link or image in it shows as text.
copilot-ops-poller, every customer); only an admin can run, pause, reschedule or delete that job in the scheduler.
Turning the jobs on
The jobs run in talon-analyst, and are off until you enable them there. In talon-analyst’s.env, on every api and worker container:
silent_log_sources also needs Talon’s indexer connection (TALON_MCP_INDEXER_URL), and the jobs need a worker running. Restart Talon after the change. Optional settings (see talon-analyst’s INSTALL.md):
In CoPilot, turn on the Talon v2 setting, then open AI Analyst → Ops. The health dashboard’s Ops jobs row warns when a job’s last run failed or was skipped; the Jobs panel shows its error.
