Defender Detected the Threat — But the Response Action Failed
The Microsoft Defender XDR incident looked reassuring.
Threat detected. Automated response initiated.
But a process was still running on the endpoint.
“So Defender found it?” the analyst asked.
“Yes,” Agent Foskett replied.
“And stopped it?”
He opened the Action Center.
“That,” he said, “is a different question.”

Case file: Detection is not containment
A realistic, illustrative Microsoft Defender XDR investigation into response-action status, endpoint telemetry, and the evidence needed to verify containment.
The incident looked resolved
By 09:20, the incident queue had quietened down. Someone assumed the endpoint was contained.
Agent Foskett asked for one thing: proof that the response action had completed successfully.
The detail hidden in the Action Center
The exact wording and status fields shown in the portal vary by action and product experience. The investigators preserved the action ID, target device, initiation time, displayed status, error information, and screenshots or exports available to their roles.
“The button was pressed,” Agent Foskett said. “That is not the same as the door being locked.”
Detection, investigation and response are different stages
An incident status, an alert status, and an action status are not interchangeable. Closing an incident or seeing an action requested does not establish that the endpoint was isolated or the threat removed. Analysts must verify the actual outcome in the relevant Defender portal views and on the device where appropriate.
First hunt: what did the endpoint execute?
DeviceProcessEvents in Microsoft Defender XDR advanced hunting. This query narrows the timeline around the known device and searches for suspicious command interpreters. Adjust the device name and timeframe for your own environment. Process activity alone does not establish that a command was malicious.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
let TargetDevice = "FIN-WKS-014";
let StartTime = datetime(2026-10-13T09:00:00Z);
let EndTime = datetime(2026-10-13T10:30:00Z);
DeviceProcessEvents
| where Timestamp between (StartTime .. EndTime)
| where DeviceName =~ TargetDevice
| where FileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe", "wscript.exe")
| project Timestamp, DeviceName, FileName, ProcessCommandLine,
AccountName, InitiatingProcessFileName, ProcessId, ReportId
| order by Timestamp ascThe endpoint went quiet at the wrong moment
In this scenario, the connectivity gap was consistent with the failed isolation request, but the team did not assume it was the sole cause without the action error and endpoint evidence. A device can stop sending telemetry for many reasons, and an offline endpoint may still be executing local processes.
“Silence is not containment,” Agent Foskett said. “Sometimes it is just silence.”
Second hunt: what did Defender actually alert on?
AlertInfo and AlertEvidence advanced-hunting tables help reconstruct the detection and associated entities. They do not provide a complete authoritative history of Action Center response execution. For action success or failure, use the Defender portal Action Center and available action-specific records.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 11
- 12
let StartTime = datetime(2026-10-13T09:00:00Z);
let EndTime = datetime(2026-10-13T10:30:00Z);
AlertInfo
| where Timestamp between (StartTime .. EndTime)
| where ServiceSource has "Defender for Endpoint"
| project AlertId, AlertTime=Timestamp, Title, Severity, Category
| join kind=leftouter (
AlertEvidence
| project AlertId, EvidenceTime=Timestamp, DeviceName,
EntityType, EvidenceRole, FileName, RemoteIP
) on AlertId
| order by AlertTime ascWas the suspicious activity still happening?
They also reviewed the alert’s investigation graph and available device timeline. A quiet timeline after the action request would not, by itself, prove containment; the device might simply have stopped reporting.
Third hunt: check network activity after the alert
DeviceNetworkEvents query looks for observed network connections from the target endpoint after the detection. It is a useful hunting lead, not proof of exfiltration. The query only returns events collected and retained by Defender for Endpoint.- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
let TargetDevice = "FIN-WKS-014";
let AlertTime = datetime(2026-10-13T09:12:00Z);
DeviceNetworkEvents
| where Timestamp between (AlertTime .. AlertTime + 90m)
| where DeviceName =~ TargetDevice
| project Timestamp, DeviceName, InitiatingProcessFileName,
InitiatingProcessCommandLine, RemoteIP, RemoteUrl,
RemotePort, ActionType
| order by Timestamp ascWhat happened to the response action?
For the isolation attempt in this scenario, the team found no reliable confirmation that the device had been isolated. The response was therefore treated as unverified and unsuccessful until an operator could validate the state.
Depending on permissions and product configuration, some actions require approval or may be unavailable for certain device states. Those are separate checks from the malware detection itself.
Reconstructing the timeline
Containment required a second attempt
They also reviewed whether suspicious processes, persistence mechanisms or credentials remained at risk. If the host could not be reached, the team treated it as potentially uncontained and used available network, identity and physical controls rather than declaring the incident resolved.
The operational lesson
Where supported, configure workflows to surface response failures to the SOC. Do not assume that every Defender action exposes a queryable KQL status field in advanced hunting.
Final thought
“Good,” replied Agent Foskett. “Did the isolation succeed?”
The analyst checked the Action Center. The action had failed.
“Then we have an alert,” Agent Foskett said, “not containment.”
Detection is only the beginning. Verify the response.
The Logs Already Knew! 🔎

