Skip to main content
User guide

Detection rules

Describe the behaviour to catch in one sentence and get a Kibana detection rule (KQL / EQL / threshold) mapped to MITRE ATT&CK; export .ndjson and import into Kibana. Paid.

Paid capability, Standard (14-day trial included) and above.

Describe the intent

Describe the intent

Three inputs:

  • Index: where the rule will run. The model reads that index's actual fields (the same scan as the Field dictionary) and writes the rule with the names the cluster has.
  • Intent: name the trigger, the time window and the field names, e.g. "the same source.ip produces 5 or more event.action="login_failure" within 5 minutes".
  • Rule type: auto / KQL query / EQL sequence / threshold. "Auto" lets the model choose: single-condition → KQL, ordered multi-event → EQL, counting → threshold.

Arriving from an investigation report's "turn into a rule" or from Smart query pre-fills the form.

The generated rule

Generated rule

BlockContent
ConfidenceThe model's self-assessment of how well the rule captures the intent
TagsMITRE ATT&CK technique IDs and tactics
QueryThe KQL or EQL; threshold rules also show the field and count
ExplanationWhat the rule catches, why it is written this way, likely false-positive sources
Full rule JSONThe Kibana rule object: name, description, severity, risk score, schedule

Generation consults the Runbooks knowledge base ("used N runbook documents").

If the intent is too vague the model declines and says what is missing (trigger, window or field names).

Deploying to Kibana

Two routes:

  • Export .ndjson: Kibana → Security → Rules → Import.
  • By hand: Kibana → Security → Rules → Create rule, pick the type, paste the query / threshold configuration.

Exported rules are enabled: false. Simulate in the Detection Engine, check the false-positive rate, have operations review, then enable by hand.

Rule library

"Save as rule" stores the rule in the team library, visible to everyone; load it back, export again or delete. The library lives in .rst_copilot_userstate in ES.

On this page