The verdict an analyst picks when closing an alert is the only feedback most detections ever get, and when the verdict is wrong the detection programme quietly tunes itself in the wrong direction. True positive, false positive and benign true positive sound like definitions for a glossary, but each one should trigger a different engineering action: escalate and learn, fix the logic or the data, or decide whether the behaviour is worth alerting on at all. This guide is about those downstream consequences: how each disposition drives tuning, suppression and metrics, what a worked case looks like for each, and how mislabelling hides detection drift. It assumes you already run a triage workflow; for the workflow itself see the Alert Triage Guide. It is written for detection engineers, SOC leads and analysts who close alerts every day.
Key takeaways
- Three verdicts, three different owners. A true positive goes to incident response, a false positive goes back to the detection engineer as a defect, and a benign true positive goes to a policy decision about whether the activity should be alerting at all.
- Benign true positive is not a polite false positive. The rule worked: the behaviour it describes really happened. Suppressing it by editing the rule logic is the most common way teams blind a working detection.
- Split false positives by cause. "Incorrect logic" and "incorrect data" need different fixes, by different people. Both Microsoft Sentinel and Splunk Enterprise Security ship them as separate closure options for this reason.
- Every suppression needs scope, an owner and an expiry. An exception without an end date becomes a permanent blind spot that nobody remembers approving.
- Measure the labels, not just the alerts. Per-rule precision, the share of benign verdicts and the share of undetermined closures are only meaningful if verdicts are audited; otherwise metrics reward whoever closes fastest.
The three verdicts, defined by what they imply
Classic detection language uses a two by two matrix: the alert fired or did not, and the activity was malicious or not. That matrix has no room for the situation SOCs see most often: the rule matched exactly the behaviour it was written for, and the behaviour was real, but it was authorised. Vendors and SOCs added a third verdict for that case, usually called benign true positive or benign positive. The useful way to define each verdict is by what it says about the rule, not about the analyst's mood.
| Verdict | Did the rule match what it was designed to match? | Was the activity malicious or unauthorised? | What it says about the detection | Primary downstream action |
|---|---|---|---|---|
| True positive | Yes | Yes | The detection works and has value | Escalate to incident response; feed lessons back into detection coverage |
| Benign true positive | Yes | No: authorised, expected or test activity | The logic is correct; the alerting policy or context is incomplete | Decide: enrich with context, scope a narrow exception, lower priority or accept |
| False positive: logic | No: the rule matched something outside its intent | No | The query is wrong or too broad | Detection engineer fixes and regression tests the rule |
| False positive: data | The rule was right for the data it saw, but the data was wrong | No | Parsing, normalisation, time stamps or enrichment are broken | Data or platform engineer fixes the pipeline; check every rule using that source |
| Undetermined | Unknown | Unknown | Not enough telemetry or time to decide | Track as a visibility gap, not as a closure |
A false negative, the attack that never alerted, is the fourth cell of the classic matrix. It never appears in the closure queue, so it can only be found through hunting, testing and incident reviews. That matters here because the wrong response to a benign true positive often creates false negatives that nobody will ever see in a dashboard.
How the major platforms encode dispositions
Platforms are listed alphabetically; order is not a ranking. The point of the comparison is that mainstream tools already separate the verdicts this guide describes, so the taxonomy can be adopted without custom fields.
| Platform | Closure values as documented | Notes for tuning |
|---|---|---|
| Microsoft Defender XDR | Not set (default); True positive, with a threat type; Informational, expected activity, with an activity type; False positive | Microsoft describes the informational category as the place for security tests, red team activity and expected unusual behaviour from trusted apps and users, which is the benign true positive case. |
| Microsoft Sentinel | True Positive: suspicious activity; Benign Positive: suspicious but expected; False Positive: incorrect alert logic; False Positive: incorrect data; Undetermined | A classification is mandatory when closing, with a free-text comment. The two false positive options separate logic defects from data defects. |
| Splunk Enterprise Security | Undetermined (default); True Positive: Suspicious Activity; Benign Positive: Suspicious But Expected; False Positive: Incorrect Analytic Logic; False Positive: Inaccurate Data; Other; Testing | Dispositions can be turned off or added as custom values, one can be set as the default, and a Required toggle forces a disposition before a finding is closed. |
Availability: each product's closure options and toggles depend on version and portal; the values above are as described in the vendors' documentation in November 2026. Whatever the tool, map its values onto the five verdicts in the previous table so reporting is consistent across sources.
True positive: what it should change
Threat model: a true positive confirms that an adversary, insider or malicious automation performed the behaviour the rule describes. The risk after closure is not the alert itself but assuming the rule caught the whole intrusion.
- Architecture in words: the alert becomes an incident, the incident record links back to the rule ID, and the post-incident review asks which earlier stages of the attack did not alert. Each answer becomes a detection backlog item, mapped to an ATT&CK technique, for example T1078 Valid Accounts when the attacker used stolen credentials before the alerting stage.
- Tuning action: do not tune the rule down; consider raising its severity or adding a correlation that fires earlier. Record the threat type, because Microsoft notes that specifying it helps the team see threat patterns.
- Failure modes: labelling an authorised red team exercise as a true positive inflates the rule's apparent value; labelling a confirmed incident as benign because the user "said it was them" removes the only evidence the rule worked.
- Controls: require a linked incident or case for every true positive; require a second reviewer before a true positive is downgraded.
Worked scenario: a rule fires on interactive Remote Desktop logons (T1021.001) by a service account. The analyst confirms the account's password was used from an unmanaged host. The incident review finds the password had been exposed weeks earlier in a script repository and nothing alerted on its first use from a new location. Outcome: the RDP rule keeps its severity, and two new backlog items are opened, one for secret scanning on repositories and one for first-seen source host on service account logons. See the Detection Engineering Guide for running that backlog.
False positive: fix the logic or fix the data
Threat model: a false positive is a defect. Its direct cost is analyst time, and its indirect cost is trust: analysts learn to close the rule without reading it, so a real hit on the same rule is likely to be missed.
Incorrect logic
- Typical causes: a string match that is too loose, a missing field condition, a threshold set without baselining, a parent and child process pair that also occurs in legitimate software.
- Tuning action: change the rule, not the alert stream. Palantir's Alerting and Detection Strategy framework suggests adding a component that maximises true positives, removing common false positives through patterns, and back-end filtering of expected false positives; it adds that if a low false positive rate cannot be reached, the alert may need to be broken down, refactored or discarded.
- Controls: every logic fix ships with a regression test that still produces a true positive. The same framework requires true positive validation for every detection, which is what stops a "fix" that silently disables the rule.
Incorrect data
- Typical causes: a parser change that moves a field, time zone or clock skew, an enrichment lookup returning a stale asset owner, duplicated events from a misconfigured forwarder, a renamed cloud log schema.
- Tuning action: do not touch the rule. Raise a defect against the data pipeline, and query which other rules read the same source, because a data fault rarely affects only one detection.
- Controls: log source health checks (volume, latency, field population) and schema change notifications from platform owners. See the Detection as Code Guide for testing parsers alongside rules.
Worked scenario: a PowerShell encoded command rule (T1059.001) floods the queue on Monday morning. Half the hits come from a software deployment tool that passes encoded arguments: a logic false positive, fixed by tightening the rule to exclude that signed binary path combined with its parent process, with a test case kept for a malicious encoded command. The other half have empty command line fields after an agent upgrade: a data false positive, routed to the endpoint team, with every rule that reads command line fields checked for silent failure.
Benign true positive: the verdict that decides your blind spots
Threat model: the behaviour is genuinely suspicious in the abstract (a new admin created, a mass download, a scanner sweeping a subnet) but it was authorised this time. The danger is that an attacker doing the same thing from the same account, host or tool looks identical. Benign true positives are where suppression decisions create false negatives.
Four responses exist, in order of preference:
- Enrich, do not suppress: add the context that lets the analyst confirm authorisation in seconds, such as a change ticket lookup, the scanner's scheduled window or the account's owner. The alert still fires; it is just cheaper to close.
- Narrow, time-bound exception: suppress on a combination of attributes (account and host and process, not account alone) with an owner and an expiry. Microsoft Sentinel automation rule exceptions, for example, expire after 24 hours by default unless a later expiry is set, and Microsoft says the default reduces the chance of false negatives.
- Lower the priority or route differently: keep the event as a low-severity signal that contributes to entity risk scoring rather than a queue item.
- Accept and document: where the behaviour is routine and low risk, record the decision, the approver and the review date, and move the detection to a hunting query rather than an alert.
What not to do: edit the rule logic to exclude the user or host permanently. Microsoft's own guidance draws the line between automation rule exceptions, which close matching incidents while keeping the closing reason as an audit trail, and analytics rule changes, which change what the rule detects and are permanent. Permanent logic exclusions belong to false positive fixes; benign true positives should usually be handled by context or by expiring exceptions.
Worked scenario: a rule detects creation of new cloud access keys for a privileged role. Every Tuesday a deployment pipeline's service identity rotates its keys, producing a benign true positive. The bad response is excluding that identity from the rule, because a stolen pipeline credential would then mint keys silently. The good response is an exception scoped to that identity, from the pipeline's known runner network, during the rotation window, with a 90-day expiry and an owner; any key creation by the same identity outside those conditions still alerts. See the Alert Fatigue Reduction Guide for broader noise work.
Where identity fits
Non-human identities produce a disproportionate share of benign true positives: service accounts, pipelines, scanners and AI agents legitimately do things that look like attacker behaviour, at machine speed. That makes them the easiest population to over-suppress. Two rules help. First, never suppress on identity alone; combine identity with source, target and time, so the exception describes the job rather than the account. Second, treat a stolen machine credential as the default threat model when reviewing any exception that names one. See the MITRE ATT&CK T1078 Valid Accounts Guide.
Suppression mechanisms compared
| Mechanism | Suits | Visibility kept | Main risk | Required metadata |
|---|---|---|---|---|
| Rule logic change | False positive: logic | None for excluded cases | Silent false negatives if over-broad | Change record, regression test, reviewer |
| Shared filter applied to many rules | Known noisy application accepted across rules | None for excluded cases | One filter blinds many detections at once | Owner, list of affected rules, review date |
| Alert-level exception or automation rule | Benign true positive, short term | Alert recorded, no queue item | Expiry extended without review | Scope, owner, expiry, closing reason |
| Allowlist held outside the rule | Many rules sharing the same approved entities | None for listed entities | List grows without pruning | Per-entry owner and expiry |
| Severity or routing change | Benign true positive that still has signal value | Full, at lower priority | Low-severity queue never reviewed | Rationale, review date |
| Enrichment | Benign true positive with a checkable authorisation source | Full | Enrichment source goes stale | Source owner, health check |
The Sigma specification illustrates the shared filter case: a rule can list known falsepositives, and the separate Sigma Filters specification defines global filters to apply the same tuning to many rules, for example a valid Group Policy script that triggers several rules. That is efficient, and it is also why a shared filter deserves stricter review than a single rule change. Microsoft similarly describes watchlists as a way to keep exceptions outside the rule and reuse them across rules.
Metrics that depend on honest labels
Every detection quality metric is computed from verdicts. If verdicts are wrong, the metrics confidently report the wrong thing.
- Per-rule precision: true positives divided by all decided alerts for that rule. Decide in advance whether benign true positives count against precision; most teams report them separately, because counting them as noise pushes engineers to suppress working rules.
- Benign share per rule: benign true positives as a share of all alerts. A high share is a context problem (missing enrichment or change data), not a logic defect.
- False positive split: logic versus data. A rising data share points at pipeline health, not at the detection team.
- Undetermined rate: closures with no verdict. Above a few per cent it usually means missing telemetry or analysts closing to meet a time target.
- Exception hygiene: the number of active exceptions, the share with an owner and an expiry, and the share past their review date.
- Validation pass rate: the share of rules whose true positive test still fires after tuning, measured by scheduled detection tests. See the Breach and Attack Simulation (BAS) Guide.
For response timing metrics that sit beside these, see MTTD vs MTTR.
How mislabelling hides drift
Detection drift is the slow divergence between what a rule was written to catch and what it now catches, caused by changes in the environment, the data or attacker tradecraft. Labels are the instrument that should reveal it, and mislabelling switches the instrument off.
- Benign labelled as false positive: the engineer "fixes" a working rule by excluding the activity. Precision rises, coverage falls, and the dashboard shows improvement.
- Data faults labelled as logic faults: rules are rewritten around a broken parser. When the parser is fixed, the rewritten rules now miss real events.
- Everything closed as benign: a rule whose true positives all get labelled benign ("the user confirmed it") looks low value and is retired, even though the confirmations were never verified.
- Zero alerts read as success: a rule that stops firing because its data source died produces no labels at all, which looks like a quiet environment. Only volume baselines and scheduled tests reveal it.
Implementing a disposition programme
- Standardise the taxonomy: adopt the five verdicts, map each tool's native values onto them and make the verdict mandatory at closure, with a short structured reason (for example "authorised: change ticket" or "data: empty field").
- Pilot on the noisiest rules: take the 10 rules with the most alerts, have a detection engineer review a sample of each rule's closures for two weeks, and correct the labels. Expect to find benign and false positive verdicts swapped.
- Wire verdicts to owners: false positive logic creates a ticket for the rule owner, false positive data a ticket for the source owner, benign true positive a request to the asset or identity owner for enrichment or an exception decision.
- Put exceptions under change control: every exception carries scope, owner, approver, expiry and the rule IDs it affects. Start new exceptions in alert-but-tag mode for a week before closing automatically, so you can see what they would suppress.
- Test after every tuning change: rerun the rule's true positive test; if it no longer fires, roll back the change from version control.
- Audit labels monthly: sample closures per analyst and per rule, record the disagreement rate and use it for coaching, not discipline.
- Review exceptions quarterly: expire or renew each one with the owner's confirmation; delete exceptions whose rule has been retired.
Small and large SOCs: a small team can run this with a spreadsheet of exceptions and a monthly half-day review; see Small SOC Operations. A large or managed SOC needs the verdict, reason and exception data in the case system, reported per rule and per customer, and a clear contract term on who may approve exceptions.
Common failure patterns
- One "closed" button with no verdict: nothing flows back to the detection team, so the same noise returns daily.
- Permanent exclusions for benign activity: a privileged service account is excluded from a rule forever; when its credential is stolen, the attacker inherits the exclusion.
- Precision targets that count benign as noise: engineers are rewarded for suppressing working detections.
- Tuning without a regression test: a logic fix silently stops the rule matching its intended behaviour, and nobody knows until an incident review.
- Undetermined used as an exit: analysts under a time target close hard alerts as undetermined, hiding telemetry gaps that should be funded.
- Shared filters nobody owns: a global filter added for one noisy application is still suppressing a dozen rules years after the application was retired.
Framework mapping
| Activity | NIST CSF 2.0 | NIST SP 800-53 Rev. 5 | ISO/IEC 27001:2022 Annex A |
|---|---|---|---|
| Analysing alerts and recording verdicts | DE.AE-02, RS.MA-02 | AU-6, IR-4 | A.8.16, A.5.25 |
| Declaring incidents from true positives | DE.AE-08, RS.MA-03 | IR-4, IR-5 | A.5.25, A.5.26 |
| Tuning detections from verdicts | ID.IM-03 | SI-4, CA-7 | A.8.16 |
| Learning from true positives and reviews | ID.IM-01 | IR-4 | A.5.27 |
Practitioner checklist
- Make a verdict mandatory at closure and map every tool's values to true positive, benign true positive, false positive logic, false positive data and undetermined.
- Route each verdict type to a named owner: incident response, rule owner, data source owner or asset owner.
- Prefer enrichment over suppression for benign true positives.
- Scope every exception on several attributes, never on identity alone, and give it an owner and an expiry.
- Keep a true positive test for every rule and rerun it after each tuning change.
- Report benign true positives separately from false positives in precision metrics.
- Watch per-rule volume baselines so silent rules are investigated, not celebrated.
- Sample and audit closure labels monthly and review exceptions quarterly.
Standards and references
- NIST: Cybersecurity Framework 2.0
- NIST: SP 800-53 Rev. 5
- Microsoft Learn: Manage incidents in Microsoft Defender
- Microsoft Learn: Navigate, triage and manage Microsoft Sentinel incidents
- Microsoft Learn: Handle false positives in Microsoft Sentinel
- Splunk: Configure dispositions for findings in Splunk Enterprise Security
- SigmaHQ: Sigma rules and Sigma filters specifications
- Palantir: Alerting and Detection Strategy Framework
Related NHI Mgmt Group resources: Alert Triage Guide · SAST Triage Guide · Backported Security Fixes Guide · Sigma Rules Guide · SOC Guide