← Omkar Khadamkar Verdict card
Verdict card · the console

How Google’s console explains itself

Before adding anything to someone else’s screen, read what’s already there. This is what a Google SecOps case explains on screen, and what it leaves to the documentation.

Unreadable in place · AI count 51 of 72Source public screenshots and docs
Contents
  1. 01How much the screen explains
  2. 02Where the verdict sits
  3. 03Who controls what
  4. 04What the consoles do for their own AI
  5. 05When the console changed
01How much the screen explains

Before arguing that a console is hard to read, count it. A number can be disputed; an adjective cannot.

So an AI agent counted every icon, badge, colour and label in one case investigation view, by written rules: one row per mark per place, colours that vary get their own row, and near-universal conventions count as readable but are flagged.

By the AI agent’s count, under those rules, 51 of the 72 marks that are not text cannot be read without leaving the console.

Two things have to be said in the same breath as that number. Static screenshots cannot show tooltips, so some of them may speak on hover; the audit lists exactly which rows to check in a live tenant. And the console does one thing here that nothing else in the study does: the Security Graph, one click away, carries its own legend in the product, naming every shape and colour it draws.

What “explained only in the docs” looks like

This is the case header, as Google’s own documentation draws it. The green arrows are the documentation’s; the product has none of them.

Google's documentation image of a SecOps case header. Green arrows and labels point at a red vertical bar marked Case Priority, the case title, the case ID, a circular-arrow glyph marked Case Stage, a clock glyph marked Timestamp, an environment selector and a Manage Tags control.
Google Security Operations documentation, CC BY 4.0, unaltered.

Look at the left edge. A red bar, and the only thing in the world that tells you it means priority is a green arrow on a documentation page. The stage is a circular arrow. The time is a clock. In the product, all three are marks with no words, and this image is where the words live.

Hold on to that red bar. Option 0, one of the six designs in How it was made, put a red bar down its own card to mean Malicious, and failed a gate for it.

The Case Wall — the running record of everything that happened to a case — carries eight more, and these are Google’s images too. Not one of them carries a word.

The Case Wall’s eight marks, as the product draws them A gear glyph with the count 4. A folder glyph with the count 4. A clipboard-with-check glyph with the count 0. A speech-bubble glyph with the count 0. A lightbulb glyph with the count 0. A two-speech-bubbles glyph with the count 0. A star glyph with the count 0. A clock-and-arrow glyph for sort order.

In the order shown, they mean: actions taken on alerts · case status changes · task details · a comment · insights · a pinned chat · a favourite · the sort order. The screen says none of it. The pairings come from one documentation page, and there is nothing on screen that would get you there.

02Where the verdict sits

In the integration as published, that verdict arrives as verdict: MALICIOUS — a string inside a JSON tree, five selections into the case by the AI agent’s count of the published screenshots. The Case Wall entry for the same action says the analysis was returned. It never says what it concluded.

So: hard to find — and once found, silent about what it covered or what came after.

The agent's verdict sits five selections into the case, inside a JSON tree Five selections from an open case: the alert, its Playbooks tab, the playbook step, View result, and the Technical Details tab of the dialog that opens. Then into a JSON tree to reach verdict colon MALICIOUS. FROM AN OPEN CASE TO THE VERDICT The alert Playbooks tab The step View result Technical tab data issue threatDetectionDetails aiAnalysis verdict: MALICIOUS 5 selections from the case The Case Wall entry for the same action says the analysis was returned — never what it concluded. On the same screen three severity signals disagree, and nothing reconciles them: a yellow priority bar the docs define as Medium, an alert named “MEDIUM SEVERITY ALERT”, and the agent's own severity: HIGH.
From the AI agent’s audit, rows R34 (the JSON verdict), C4 (the Case Wall wording) and R36 / T1 (the three disagreeing severity signals). This is the problem the card exists to answer.
Close-up: the answer as it arrives, keys sorted A to Z with the verdict last Above the tree, the dialog names the alert WIZ: MEDIUM SEVERITY ALERT. The tree runs data, issue, threatDetectionDetails, aiAnalysis with seven keys in alphabetical order: analyzedAt, conclusion, confidenceLevel, id, severity HIGH, status COMPLETED, verdict MALICIOUS. The conclusion runs off the panel's edge. Notes: the conclusion runs off the panel; severity says HIGH while the alert's name says MEDIUM and the case's yellow bar means Medium; the keys run A to Z so the answer is the last line. CLOSE-UP · THE TECHNICAL DETAILS TAB, WHERE THE VERDICT LIVES ⚑ WIZ: MEDIUM SEVERITY ALERT 4 ▾ 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 5 4 3 The conclusion runs off the panel’s edge. HIGH here. The alert’s name above says MEDIUM, and the case’s bar is yellow, which Google defines as Medium. Keys run A to Z, so the answer itself is the last line.
Redrawn from the same screenshot, in the tree’s own order. The id is shortened.

You can try that. The prototype on the case study page has a Today · no card state that reproduces it: the verdict exists only as raw data, behind the playbook’s results.

03Who controls what

A guest cannot design what it does not control, so the constraints come before the criteria. The host documents exactly three layers, and only the third belongs to the vendor.

LayerWho controls itWhat that means here
The consoleFixedCase queue, case header, the priority bar, Escalate and Close, the tab strip, and what the host’s own widgets show, such as Alerts and Entities highlights. A design that needs any of this to change is answering a different question
The Overview gridThe customer’s adminThe admin decides which widgets exist, where they sit and how wide they are. A vendor cannot assume its card is installed at all, or that it sits where the vendor drew it
The widgets themselvesThe vendorHTML (display-only, as far as the docs say), Key value, Insights, Quick Actions and Pending Actions (the playbook pauses and asks). Plus a Case Wall entry and a playbook action result, which always exist

The constraint that shaped the card most: the HTML widget displays, it does not write. Anything that changes the case has to be a Quick Action button or a Pending Action choice. So “accept or override” is not a button a designer may simply draw — it is a documented action type or it does not exist. Option 0, one of the six designs in How it was made, drew it anyway, and failed a gate for it.

And because the admin owns the grid, the card cannot be the only place the verdict lives: whatever a vendor writes into the Case Wall has to carry it alone, for every tenant that never installed the widget.

04What the consoles do for their own AI

The eight rules aren’t invented. The two consoles checked already do much of this for the AI they build themselves, Google’s more fully than Microsoft’s. What they don’t do is extend the same standing to a guest’s.

Google’s own agentMicrosoft’s own AIWiz’s verdict in Google’s console
Where it showsA banner in the case summaryThe incident page, as it opensDeep in raw data (the published screenshot)
When it ranCompletion time on every entryNot stated on the cardOnly inside the raw data
What it usedIts reasoning and supporting dataIts alert limit, statedNot carried
When the case changesEach re-run kept as its own entryReused only if the incident “didn’t change significantly”Nothing. A snapshot

Sources: Google’s agent documentation (the case-summary banner is on Enterprise tiers) · Microsoft’s incident-summary documentation. Splunk, Palo Alto and CrowdStrike weren’t checked; their AI documentation is mostly behind logins.

Google’s own AI gets a date. The guest AI gets a JSON field. Microsoft’s “didn’t change significantly” check is this card’s Outdated state, already shipping — for the host’s own AI. The card asks for parity, not for something new.

And it points at what comes next. Google’s agent auto-investigates cloud audit-log alerts, which is the kind of alert that made the bucket public. So in that case, Google’s AI could well reach its own verdict on the new alert — true positive, in its vocabulary — while Wiz’s earlier benign sits in the raw data, in a different vocabulary, with nothing to reconcile them. Two AIs, one case is the problem this card doesn’t solve yet.

05When the console changed

The audit was committed on 17 September at 18:13. Google’s release note for a revamped version of that view is dated 18 September.

The layout dated. All eight rules still applied, and two of them got sharper.

Rule 1 gained a second width — the new experience has a resizable preview drawer beside the queue, so “the view the case opens to” now means two densities. Rule 7 gained the migration case: when a tenant moves to the new experience, custom widget configuration does not carry over, and an admin has to copy it across by hand. For the length of that migration, the plain text entry is the only thing the vendor still owns.

The host shipped a new version of the view after the audit was committed A timeline: the audit committed 17 September at 18:13, the release note for a revamped Investigation Management experience dated 18 September. All eight contract rules held; two got sharper. 17 Sep, 18:13 audit committed 18 Sep release note: revamped view Eight rules in the guest's contract. Eight still applied. Two got sharper. Rule 1 gained a second width a resizable preview drawer now sits beside the queue Rule 7 gained the migration case widget configuration does not carry over; an admin copies it across by hand
This was an accident, and it is the strongest evidence in the study — a layout dated, and the obligations did not. It is the argument for writing the contract rather than only the card.

The count was not re-pointed at the new view. It publishes no screenshots, and no third-party verdict has been shown inside it, so a count there would be assertion rather than evidence. What changed is recorded instead, and the audit says at the top which experience it covers.

The same card at the two widths the host now gives it Two columns. In the full case view the card carries the verdict, both severities, when it was analysed, freshness, the conclusion, every claim with where it can be checked, and the actions with their consequences. In the preview drawer it carries the verdict, both severities, freshness and a claim count, and one control that opens the case. Nothing is decided at the narrow width. ONE CARD · TWO WIDTHS · RULE 1 OF THE CONTRACT Full case view Verdict · confidence Both severities, each with the system that issued it Analysed at · data cut · added to the case by Is anything newer than the data it used Conclusion Every claim, with where it can be checked Accept · override, each with its consequence and the record, with undo, once you act Preview drawer Verdict · confidence Both severities, short form Analysed at · outdated by How many claims, how many checkable here Open the case to decide nothing is decided at this width The narrow width is the host's, not the guest's: it arrived on 18 September. A card that assumed one width would already be broken.
Contract rule 1 — arrive where the work already is, at whatever width the host gives you. Both widths are in the prototype.