Skip to main content
CID222 Docs

Risk analysis and LLM reviews

Tune when a repeated jailbreak attempt opens a deep review, read the verdicts, and decide the locks and unlock requests they produce.

  • Version: 0.4
  • Feature: risk.llm_review
  • Role: admin_user, viewer
  • Type: task

The per-message detectors score one prompt at a time. Risk Analysis is the tier that reasons across a person: when the same user trips jailbreak or prompt-injection detection often enough inside a window, a local LLM analyst reads their detections across sessions and reaches a verdict that can warn them or take their AI access away. This page holds those verdicts, the locks, the unlock queue, the knowledge the analyst reasons with, and the trigger that starts it all.

What do I need?

Licence
Enterprise
Role
admin_userviewer

Prerequisites

  • The analyst stack is running — see Ask the AI Analyst for what the llm-analyst compose profile needs.
  • RISK_ANALYST_SERVICE_ENABLED is 'true'. Anything else fails every dispatch as analyst_disabled.
  • Redis is reachable: the sliding window and the cooldown live there.
  • You are signed in as an admin_user or the superadmin. A viewer may read every tab and decide nothing.

Everything on this page is scoped to what you may read. An admin_user sees their own tenant and the members of the groups they own; an id outside that answers 404, never 403, so the endpoint cannot be used to discover another team's locked users.

Warning

The trigger ships off. With no analyst reachable an enabled trigger only accumulates reviews that nothing will complete, so turning it on is a deliberate step after the analyst answers.

How a review starts

Every detection the gateway writes — dashboard chat, /chat/completions, image analysis — passes through one funnel. A detection counts toward the window when its entity type is a jailbreak or prompt-injection label and its confidence is at or above the floor.

The floor is deliberately below the level that blocks a single message: the signal this feature acts on is repetition of attempts that individually were not enough. When the window fills, one review is opened, the window is emptied, and a cooldown starts so the next review needs fresh attempts rather than inheriting the ones already reviewed.

Tune the trigger

Open the settings

Select Security & Compliance → Risk Analysis, then the Trigger settings tab.

While the trigger is off the tab opens on The analyst is not runningRepeated jailbreak attempts are still detected and recorded, but no deep review is dispatched and nobody is locked.

Set when a review fires

Under When a review fires, set Attempts, Window (minutes), Confidence floor and Cooldown (minutes).

The defaults are 2 attempts in 10 minutes at a floor of 0.7, then a 15-minute cooldown. The floor is the detectors' own flag tier; 0.85 is what blocks a message outright.

Decide what happens when the analyst does not answer

Under Analysis, set Timeout (ms), On timeout and Report language.

On timeout takes Warn, Lock or Clear and is applied when no verdict arrives — a verdict with no reasoning behind it. Warn is the default: the attempts are real, but locking on silence is a false-positive landmine.

Turn it on

Switch Dispatch deep reviews on and select Save changes.

A Trigger settings saved. toast confirms it. The configuration is deployment-wide — there are no per-tenant overrides — and a save patches only the fields you changed.

Danger

Choosing Lock on timeout means an unreviewable user loses AI access with nothing analysed. The gateway stands that policy down automatically after three consecutive analyst failures, warning instead and writing LLM_REVIEW_ANALYST_UNAVAILABLE, so one outage cannot lock everyone who trips the trigger.

Read a verdict

Open a review

On the Reviews tab, filter by Status, Verdict or group, and select a row.

The drawer adds the analyst's reasoning, the evidence it cited and the model it ran on. A notification can link straight at one verdict, and that link survives a refresh.

Read status and verdict together

Check the Status column before believing the Verdict column.

On a Completed review the verdict is the analyst's decision. On a Failed or Timed out review it is the fallback that was applied, with no reasoning, no evidence and no score behind it.

StatusWhat Verdict means
Pending / AnalysingNothing yet
CompletedThe analyst decided this
FailedThe configured fallback, applied. Nothing was analysed
Timed outThe same, after the watchdog fired

Warning

A Lock verdict that did not pass the analyst's own verification is downgraded to a warn. The raw result is archived either way, so a review can read Unverified with a warn verdict and reasoning that argues for a lock. That is the rule working: a lock costs a user their access with no human in the loop, and an analyst that did not verify has not verified anything.

Restore someone's access

A lock stops AI access wherever CID can identify the person. Sign-in keeps working on purpose, so the user can see the notice and ask for it to be lifted.

Work the queue

Open Unlock requests and read What they said.

Approving clears the lock and re-arms the trigger clean. Denying leaves the lock and records why. A user may file one request at a time, at most three per hour.

Approve or deny

Select the approve action, or the deny action and write an optional Note of up to 500 characters.

Approving reports Approved — {user} has AI access again. Denying restates the effect: {user} stays locked. The note is recorded on the decision and is visible in the audit trail.

Or unlock directly

On Locked users, select Unlock on an active row and confirm Restore AI access?

{user} regains AI access immediately, and the repeated-attempt window is re-armed clean. Both the window and the cooldown are cleared — an unlock means start over, not resume.

Note

A cleared lock stays in the table as history. Switch the segmented control to Cleared to see it, with Cleared naming when and by which path. A lock lifted from the dashboard and one lifted by approving a request leave the same trail.

Curate what the analyst knows

The Attack knowledge tab holds the cards every review reasons against — techniques, and the benign shapes that look like them. Nothing here is written from any user's data.

Withdraw a card that over-fires

Find the card and switch Enabled off.

It leaves the analyst's prompt on the next refresh. This is a toggle rather than a delete because withdrawing a card is a statement about this deployment's data, not an edit of the published source — and it is allowed for every origin, official cards included.

Add your own

Select New entry, or Import JSON for a list of them.

An import answers with created, updated, skipped and refused counts. It never walks over a card a person wrote here: an id collision is skipped and named, never fatal.

Warning

Cards marked Official restate MITRE ATLAS, OWASP or deepteam. They cannot be edited or removed here — a 409 — and a correction ships as a new payload. Cards that arrived in a payload (bootstrap) also refuse deletion, because the next import would recreate them, enabled.

Sign off on a set analysis

The Analyses tab is a different object from a review: one report over a whole filtered slice of All detections, started with Analyse on that page rather than by a trigger. A review is about a person; an analysis is about a filter.

Open a report

Filter by Risk, Review, Detection type or Status, and select a row.

The drawer shows what filter it covered, how much of it the analyst read, the reasoning, the cited detections and the recommendations. A running report can be cancelled there.

Record the decision

Select Review, write optional Reviewer notes (optional), then Approve or Reject.

A Report approved or Report rejected toast confirms it, and the decision records who decided and when. Selecting Reopen on a decided report returns it to Pending.

Warning

The Review filter offers In review, but nothing in the product ever sets that state. It is reserved for a future ITSM sync, so the option matches no rows today. The states that exist are Pending, Approved and Rejected.

Fields reference

Trigger settings

FieldDefaultWhat it does
Dispatch deep reviewsoffWhether the window opens reviews at all
Attempts2Qualifying detections inside the window before a review fires
Window (minutes)10How far back the count reaches
Confidence floor0.7The detectors' flag tier. Below the 0.85 that blocks a message
Cooldown (minutes)15How long the window stays quiet after a review
Timeout (ms)120000After this the review is marked timed out
On timeoutWarnWarn, Lock or Clear, applied when no verdict arrives
Report languageEnglishThe language the analyst writes reasoning in. The assistant always answers in the language of the question

Tabs

TabWhat it holds
ReviewsOne row per deep analysis of a person: status, verdict, score, checks, attempts, duration
AnalysesSet-based reports over an All Detections filter, with their sign-off state
Locked usersActive and cleared locks, with the review that placed each one
Unlock requestsThe queue, with what the user said and the decision
Attack knowledgeThe cards the analyst reasons with, by kind, id, topic, source, origin and version
MITRE ATLAS / OWASPThe loaded reference releases the analyst cites by id
Trigger settingsThe table above

Stat tiles

TileWhat it counts
Unlock requestsRequests waiting on a human decision
Locked usersLocks active right now
Reviews todayDeep analyses dispatched since midnight
VerdictsLock / warn / clear, all time

Verify

  1. With the trigger on, send the same user's account past the attempt threshold inside the window. A row appears on Reviews at Pending, then Analysing, then Completed.
  2. Open Event logs. The trigger writes LLM_REVIEW_TRIGGERED, the verdict writes LLM_REVIEW_COMPLETED, and a failure writes LLM_REVIEW_FAILED. A lock the analyst asked for writes USER_AI_LOCKED_PENDING and the applied lock writes USER_AI_LOCKED.
  3. Approve an unlock request. The lock's Status becomes Cleared, and USER_AI_UNLOCKED appears in the audit trail — as does UNLOCK_REQUESTED for the user's own request and UNLOCK_DENIED for a refusal.
  4. Approve or reject a report on Analyses and confirm the Review column changes. The decision is written to the audit trail as a resource update.
  5. No event metadata ever carries the analyst's reasoning or evidence. What leaves for SIEM is the review id, verdict, score, confidence, verification flag, status and counts.

If it fails

  • This feature (risk.llm_review) is not included in the installed license tier. Contact your CID representative to upgrade. — a 403 with the code FEATURE_NOT_LICENSED. An Enterprise key. An already-applied lock keeps enforcing regardless, and the page a locked user sees keeps working.
  • Could not save settings — the trigger config was rejected. Every field is range-checked; attempts above 50, a window above 1440 minutes or a confidence outside 0–1 are refused.
  • Reviews pile up at Pending and nothing completes — the analyst is not reachable, or RISK_ANALYST_SERVICE_ENABLED is not the string true. A disabled integration fails a review terminally rather than leaving it pending forever, so persistent Pending points at the queue, not at the flag.
  • Reviews complete as Failed with a timeout and users are being warned instead of locked — the circuit breaker has stood the Lock fallback down after three consecutive failures. Look for LLM_REVIEW_ANALYST_UNAVAILABLE; the problem is infrastructure, and detections are going unreviewed.
  • That lock was already cleared. — somebody decided it elsewhere. Not an error.
  • Approving or denying returns a 409 — the request was already decided. The row refreshes itself.
  • A review, lock or request you expect is missing — it belongs to a tenant outside your scope, and is deliberately indistinguishable from one that does not exist.
  • Could not change the entry or Import refused on Attack knowledge — most often a 409 on an official or bootstrap card. Disabling it is always allowed.
  • Nothing ever triggers although jailbreak detections are recorded — check the confidence floor against the detections' own confidence, and check that Redis is up. A Redis failure loses the window silently rather than failing the user's chat turn.

Next steps

  • Ask the AI Analyst — the same analyst, answering your questions instead of judging users, and where its infrastructure requirements are written down.
  • My team — what a group leader sees of these verdicts about their own members.
  • All detections — the detections that fill the window, and where a set analysis is started.

Last updated on

On this page

Download PDF