When the Operator Asks to Correlate, Make It a Gate
An operator asked an incident-investigation agent to compare the current alert with earlier incidents. The agent wrote a plausible root-cause analysis (RCA) without doing that comparison. A language-model instruction alone did not make the requested search a condition of finishing.
The incident patterns below are composite and anonymized. Counts are rounded. Names, IDs, and infrastructure details are fictionalized to protect customer confidentiality.
The miss
Composite: an operator in Slack asked the investigator to correlate with prior sessions for the same alert family before closing. The run produced a fluent RCA. Nothing in the control plane required a prior-incident search. The request was not recorded as a requirement on the run.
The missing comparison was a service-contract failure: the product let the investigation close without checking whether the operator’s requested work happened. A prior match would not necessarily change the verdict, but the search should be visible either way.
What enforcement looks like
- Classify the operator’s message into a small set of goals (
investigate,correlate_prior_session, …). Classification needs a way to clarify ambiguous requests; it cannot infer intent perfectly. - Stamp the goal on the session / investigation metadata
- Block verdict or triage acceptance until required searches complete — for example, search prior incidents and list sessions keyed by alert identity. Record an explicit unavailable or failed search rather than silently treating it as a match or as no history.
- Offer an explicit slash command such as
/correlatefor operators who want to remove ambiguity
For automated triggers, webhook acknowledgements can return correlation fields (run_id, invocation_id, target name). Those identifiers let an operator or test harness wait for one invocation instead of searching audit logs.
The distinction is also central to curiosity before confidence and evidence-gated RCA: host code checks whether the search ran; the model explains what the search found. A gate proves the action occurred, not that the retrieved incident is relevant.
The gate requires a recorded search or explicit failure; it does not judge whether a prior case matches.
What operators can check
- Treat missed correlation asks as product bugs, not “operator should have phrased better”
- Require explicit correlate intent for noisy alert families
- Measure how often close happens without prior-session search when the goal was set
What the platform must enforce
- Do not rely on system-prompt reminders for correlation
- Gate acceptance on the required searches for that recorded user goal, while making tool failures and missing history explicit
- Return waitable correlation IDs from webhook triggers so evaluation tests and operators can track the same run
Related
- Previous: Same Alert, Different Verdict
- Next: “No Data” Is Often Truncated Data
- Curiosity before confidence
Acknowledgments. User-goal gating lessons from shipping Aiden SRE investigate. Patterns composite.
Building AI for incident triage without the demo theater? Find me on GitHub or LinkedIn.
FAQ
Why do agents ignore 'correlate with prior incidents'?
Soft prompts are polite suggestions. Without a classified user goal and a hard gate that blocks close until prior search ran, the model can skip correlation and still look done.
What is a user-goal gate for correlation?
Server-side intent that stamps correlate_prior_session on the run and refuses verdict/triage accept until prior-incident search and session listing completed.
How should operators make correlation intent explicit?
Use an explicit command or phrase the product recognizes (for example /correlate), not only conversational hope.
Stay in the loop — production notes on AI agents, workflows, and SRE.
Low volume — new posts and curated reading lists. Unsubscribe anytime.