All work
Verdict card for security consoles · Self-initiated · 2026

The agent is done. The case isn’t.

Google SecOps ships a widget for Wiz’s AI verdict. It shows the answer, but not how old it is, what the agent looked at, or whether the case has moved on. This drop-in replacement gives the verdict its age from today’s fields, and says the rest as the result carries more. The rules behind it are written to carry to other consoles.

Verdict age in the launch image 49 daysDrop-in widget open sourceAnalyst sessions 0

Reviewing the method? Read How it was made, the console and the build. Corrected since it was first published on 23 September: what changed.

In plain terms

A weather forecast says when it was issued and what it covers. An AI’s verdict should too. In Wiz’s own launch picture, the verdict on screen was 49 days old, and nothing said so. This page shows a drop-in widget that fixes that, and four steps to ship it.

Contents
  1. 01Where the verdict lands today
  2. 02What your analyst needs
  3. 03How to ship it
  4. 04The checklist: eight rules
  5. 05What isn’t proven yet
  6. +How Google’s console explains itself
  7. +How to build it in Google SecOps
  8. +How it was made
01Where the verdict lands today

Wiz’s Blue Agent investigates a threat and reaches a verdict. The analyst who acts on it works in Google Security Operations.

The agent is not wrong. It is just done. Everything below follows from that: a finding that was true when it was made, landing on a screen where the facts have moved on.

Google has owned Wiz since March 2026, and the integration is now Google’s own, but they are still two products. The verdict crosses through a playbook action that fetches whatever analysis exists at that moment. The integration’s sync job can carry status and comments both ways, and severity one way; the analysis itself never syncs. It lands in a ready-made widget, where an admin has added one, or in the step’s raw result.

The ready-made widget

Google’s content hub ships a widget for this action. Here it is, running Google’s own code on Google’s own example result:

Google's widget for the Wiz Blue Agent result: seven rows in the order the data arrives. ID, status, the verdict MALICIOUS in plain text, analysed at 2026-06-09T16:12:58.253716Z, severity Critical with four dots, confidence level High with three dots, and the conclusion cut off after one line, the rest shown only on hover.
Google’s widget, from its content hub (Apache-2.0), on the action’s own example result. Rendered, not redrawn.

It’s Google’s generic template: every field, in the order the data arrives. The verdict is plain text, no heavier than the ID. The time is 2026-06-09T16:12:58.253716Z, with no age. Confidence gets the same dots as severity. The conclusion is cut to one line. Nothing says what the agent used, or whether the case has moved on.

The raw result

Without a widget, the analyst opens the step’s raw result. In Wiz’s own launch screenshot, the analysis is dated 27 July and was fetched on 14 September: 49 days old, and nothing said so. A demo reusing an old threat is normal. The problem is what the screen does with it.

Here is that screen, redrawn, with five things to check on any screen that shows an AI’s answer.

Wiz's launch screenshot, redrawn: a Google SecOps case with the Blue Agent result dialog open A Google SecOps case, number 13139, with a yellow priority bar and two alert tabs named WIZ: MEDIUM. The Playbooks tab is open. A dialog titled Wiz_Get Blue Agent Analysis_1 shows the time 2026-09-14 19:00:34 in its header and a JSON tree on its Technical Details tab, whose keys run from analyzedAt, 2026-07-27T15:53:10.655319Z, to verdict, MALICIOUS. A side panel repeats the 14 September time and says the analysis was successfully returned. Five numbered marks point at the time in the header, the analysis time, the verdict, the three severity signals and what is cut off or missing. WIZ’S LAUNCH SCREENSHOT, REDRAWN · CASE 13139 IN GOOGLE SECOPS Google SecOps · Cases Wiz - Unusual Amount Of Objects Were Downloaded From S3 Bucket B… 1. WIZ: MEDIUM… 2. WIZ: MEDIUM… Overview Events (1) Playbooks (1) ✓ Wiz - Get Blue Agent WIZ Wiz_Get Blue Agent Analysis_1 2026-09-14 19:00:34 × ⚑ WIZ: MEDIUM SEVERITY ALERT Results Technical Details JSON Result ▾ data (1) ▾ issue (1) ▾ threatDetectionDetails (1) ▾ aiAnalysis (7) analyzedAt2026-07-27T15:53:10.655319Z conclusionSSO user **** executed a large-scale data exfiltration operation, down confidenceLevelHIGH idab50f325-… severityHIGH statusCOMPLETED verdictMALICIOUS WIZ Wiz_Get Blue Agent Analysis_1 2026-09-14 19:00:34 Target Entities Action: Result Outcome Successfully returned Blue Agent analysis for threat b515c2ff-… in Wiz. View Result 1 1 2 3 4 4 4 5 5
Wiz’s launch screenshot of 14 Sep 2026, redrawn: layout and on-screen text as they appear in the original. Grey bars stand for text that doesn’t matter here, and names and email addresses are left out. The dialog’s Results tab isn’t shown in the original, so what it renders is unknown.
  1. What stands out. The most prominent time next to the answer is 14 Sep 19:00:34, in the dialog’s header and again in the side panel: when the step fetched the analysis. It has no time zone.
  2. What format it’s in. The time the agent analysed is the first row of the raw tree, 2026-07-27T15:53:10.655319Z: UTC to the microsecond, under its raw key, with no age.
  3. What order it’s in. The keys run A to Z, so verdict, the answer itself, is the last line.
  4. Whether it agrees. Three severities share the screen: the case’s yellow priority bar, which Google’s documentation defines as Medium; the alert’s name, “MEDIUM SEVERITY ALERT”; and the agent’s severity: HIGH. Nothing says which one governs.
  5. What’s missing. The conclusion runs off the panel’s edge, the side panel says the analysis was “returned” but not what it concluded, and nothing puts the two times side by side.
Close-up: the two times on the screen, 49 days apart Left, the dialog's header: Wiz_Get Blue Agent Analysis_1 and 2026-09-14 19:00:34, the time the playbook step fetched the analysis, with no time zone. Right, the first row of the JSON tree: analyzedAt 2026-07-27T15:53:10.655319Z, the time the agent analysed, in UTC. Below, a line from 27 July 15:53 UTC, analysed, to 14 September 19:00, fetched: 49 days. Nothing on the screen does this subtraction. CLOSE-UP · THE TWO TIMES ON THE SCREEN WIZ Wiz_Get Blue Agent Analysis_1 2026-09-14 19:00:34 1 The dialog’s header, and the side panel’s: when the playbook step fetched the analysis. No time zone. The most prominent time next to the answer. ▾ aiAnalysis (7) analyzedAt 2026-07-27T15:53:10.655319Z 2 conclusion SSO user **** executed… The first row of a raw tree: when the agent actually analysed. UTC to the microsecond, labelled only by its raw key, with no age. 49 days 27 Jul, 15:53 UTC · analysed 14 Sep, 19:00 · fetched Nothing on the screen does this subtraction.
Both times are quoted exactly from the screenshot. The gap is plain arithmetic on them: 49 days if the zone-less fetch time is UTC, and within a day of that in any time zone.

SecOps’ own triage agent shows when it ran, and keeps every re-run. Wiz’s verdict, even in Google’s widget, gets a raw timestamp. How the consoles treat their own AI.

02What your analyst needs

Six questions an analyst could ask of any verdict, and what they get today and with the card.

Today, in Google SecOpsWith the card
1 · Where is the answer?A ready-made widget in the alert’s view, if an admin added one. Otherwise raw data, five selections deep by the AI agent’s countThe same slot, saying whose verdict it is. Or the case Overview, where an admin builds it, as in the prototype
2 · When was it made?A raw UTC timestamp, with no age“13:16 UTC · 54 min old at 14:10 UTC”, and the data it used: “data up to 13:14 UTC”
3 · Has the case moved on?New alerts join the case, and nothing links them to the verdict“Outdated by alert A3” beside the verdict, then why: “Alert A3 happened at 13:57 UTC, 43 min after the newest data the agent used. The agent hasn’t seen it.”
4 · Which severity counts?Three ratings, and no rule for which governs. Confidence drawn with the same dots as severityTwo, each with its owner: “Wiz: Low severity · this console: Medium case priority · they differ”. The card changes neither. Confidence is a word
5 · Can I check it?A conclusion cut to one line. The evidence stays in WizThe whole conclusion, what the agent read, and where to check each claim: in this case, or only in Wiz
6 · What happens when I act?Where the sync job runs, closing the case updates the threat in Wiz. No field records whether the analyst agreed with the verdictAccept or Override as Quick Actions that say what they will do. No Accept while the verdict is outdated or low-confidence. The record goes to the Case Wall

The same case, today and with the card

In the synthetic case CS-4133, the agent said Benign with high confidence, using data up to 13:14. At 13:57 the same key made the bucket public, and that alert, A3, joined the case. The agent hadn’t seen it. Both images are the real widget files on that case, read at 14:10 UTC.

Google's widget on case CS-4133: seven raw fields. Verdict BENIGN in plain text, analysed at 2026-09-17T13:16:00.000Z with no age, severity Low and confidence High both drawn as dots, and the conclusion cut to one line.
Today · Google’s widgetSeven raw fields. The time has no age, and nothing mentions alert A3.
The card on the same case. Its first line: Benign, in ink rather than green, High confidence, and in amber, Outdated by alert A3. Then labelled rows: made 13:16 UTC, 54 min old at 14:10 UTC; data up to 13:14 UTC, what the agent read and the alert it is about; a tinted note that alert A3 happened at 13:57 UTC, 43 min after the newest data the agent used, and the agent hasn't seen it; and both ratings with their owners. Below, the agent's reasoning and its claims, with where to check each.
With the cardOutdated by alert A3, which came after the data the verdict used. 54 minutes old at 14:10 UTC.

How the card got here, from the first version through 61 variations to this one: a 62-second film.

Try it

LiveSynthetic console · invented data · real widget files

Start on Today and find what the agent concluded, and when. Then switch to With the card, press Override verdict in Quick Actions and give a reason. Wait twenty seconds and press Refresh: the revised verdict appears, naming your override, and the Case Wall records each step.

03How to ship it

One file, in the format the console already uses. Then four steps, in the order that pays off first.

The card is a drop-in for the widget Google ships for this action: the same action, placement, size and data binding. Once it ships with the integration, which Google now maintains, admins add it the way they add any ready-made widget. Like any HTML widget it only displays (its one documented exception, an approval link, answers a playbook step that is waiting), so the decisions are Quick Actions. The widget, its tests and a side-by-side harness are public.

With nothing else changed, it already gives the verdict its age, keeps confidence a word, and shows the whole conclusion. Here it is on Google’s example result from section 01:

The card on Google's example result: Malicious in red, High confidence, and Newer alerts not checked. Made 9 Jun, 16:12 UTC, 109 days old at 07:00 UTC. The agent didn't say what data it used, or up to when, and nothing has checked the case. Wiz: Critical severity, and the agent's whole reasoning.
The card on Google’s example result, read at 07:00 UTC on 27 Sep 2026: today’s seven fields, and nothing else.
The card: Benign in ink, High confidence, and Outdated by alert A3 on its first line; made 13:16 UTC, 54 min old at 14:10 UTC; data up to 13:14 UTC, what the agent read and the alert it is about; and a tinted note that alert A3 happened at 13:57 UTC, 43 min after the newest data the agent used.
1 · Say when, and flag when it’s out of dateIts time, age and data cut-off, and Outdated, naming the alert, once the case holds a later one.Needs: the data cut-off, and a check that runs when the case changes
The card at low confidence: Malicious, still in red, Low confidence in bold, and No newer alerts. Below, No recommendation, with the gap in the agent's words. It says what the agent read and could not read, and each claim says whether it can be checked in this case or only in Wiz.
2 · Say what it looked atWhat it read, which alert it is about, and where to check each claim. At low confidence, no recommendation.Needs: sources and claims in the result
The console's Quick Actions widget, whose description says Accept is withdrawn while the verdict is outdated and what Override and Undo do; only Override and Undo are shown. Below it, the Case Wall: at 14:04 the analyst overrode the verdict to Malicious with a reason, synced to Wiz as a comment, and at 13:58 the integration's insight: Outdated by alert A3.
3 · Let the analyst decide, and undoQuick Actions that say what they do, with no Accept while the verdict is outdated. The record goes to the Case Wall.Needs: accept, override and undo as actions, and widget conditions
The revised card: Malicious and No newer alerts, with a note that it said Benign at 13:16 UTC and the analyst overrode it to Malicious at 14:04 UTC, and that it was re-analysed with alert A3. Made 14:10 UTC, under 1 min old, with data up to 13:59 UTC; the earlier conclusion is kept below the new one.
4 · When your agent changes its mind, say soThe revision names what it replaced and the analyst’s decision, and keeps the earlier conclusion.Needs: a re-analysis when new evidence arrives

Start with step 1. Its first half needs nothing new: the age comes from the timestamp the result already carries, and the action’s own Case Wall line can carry the verdict and its time, widget or not. The rest is in How to build it in Google SecOps.

04The checklist: eight rules

The card is one answer. These eight rules are what any agent owes the console it lands in.

  1. Arrive where the work already is, at whatever width the host gives you.
  2. Say what you saw, and when.
  3. Declare what you could not see. A missing input is part of the finding, not a footnote.
  4. Let the host’s claim stand beside yours. Never silently overwrite. Never silently defer.
  5. Make every claim checkable, and say where — in the host’s own objects wherever you can, and marked as leaving the case where you can’t.
  6. Change nothing without an explicit human act — and say what the act will do, in both systems, before it happens. Name what cannot be undone.
  7. Degrade to text. Where no widget is installed, the entry you write still carries the verdict, the confidence and the analysis time.
  8. Explain your own marks. Every icon, badge and colour on your surface carries a visible label, and you never reuse a glyph the host already uses for something else.

By its documentation, they also hold for Google’s revamped case view, in preview since 26 July. An AI agent’s check found seven of the eight applied as written to a second product, Dropzone AI in ServiceNow. The details.

05What isn’t proven yet

No analyst has used this yet: n = 0. Until one does, everything here is the card’s claim, not its result.

The test is ready: time to the right move on the hardest case, with the card and with Google’s widget, counting wrong moves. It counts against the card if analysts find the verdict as fast without it, or catch the stale verdict without it. All the limits.

The card only sees its own case. Grouping never reopens a closed case, so if the analyst trusts the verdict and closes the case, the next alert about the same key opens a new one, where the card can’t see it. That needs a check across cases, which this study didn’t design.

Some of it only a live console can settle, such as whether a widget redraws when a new result arrives: the list.

What comes next is two AIs in one case. SecOps’ own agent investigates cloud audit-log alerts, the kind that made the bucket public, so it could reach its own verdict on the new alert, with nothing to reconcile it with Wiz’s. That one is the console’s to solve.

If you work in a SOC and can spare 15 minutes, get in touch.

My calls

Self-initiated, with no client and no tenant. AI agents did the hands-on work: the count, six designs, the scoring and the build. The calls that shaped the card were mine.

Every decision, and who made it: who decided what.