Active Response
Response Actions is the durable, audited containment and one-shot remediation log.
Response Actions is the durable, audited containment and one-shot remediation log. An operator selects a device and an action from a fixed catalog; UEC persists the action first, dispatches a typed command, tracks the result, and guarantees an inverse for every reversible containment.
Action catalog
Section titled “Action catalog”| Action | Kind | Inverse | Windows | macOS | Linux |
|---|---|---|---|---|---|
| Isolate | Containment | Unisolate | ✅ | ✅ | ✅ |
| BlockDomain | Containment | UnblockDomain | ✅ | ✅ | ✅ |
| BlockUsbStorage | Containment | UnblockUsbStorage | ✅ | — | ✅ |
| BluetoothDisable | Containment | BluetoothEnable | ✅ | — | — |
| CertDeploy | One-shot | none | ✅ | — | — |
| DefenderScan | One-shot | none | ✅ | — | — |
| RemoveThreat | One-shot | none | ✅ | — | — |
| BitLockerEncrypt | One-shot | none | ✅ | — | — |
| BitLockerDecrypt | One-shot | none | ✅ | — | — |
| DefenderHarden | One-shot | none | ✅ | — | — |
Unsupported actions are not offered for a target platform. A one-shot is directly runnable but has no inverse, no auto-revert deadline and does not enter the desired-containment feed.
BitLockerDecrypt is not the undo of BitLockerEncrypt. They are independent one-shot actions. Treating decrypt as an inverse could silently decrypt a disk when an action expired.
Safety invariants
Section titled “Safety invariants”- The server sends an action name and typed envelope, never a command line, script or path.
- Isolation always preserves management access: loopback, DNS, DHCP and the agent’s configured server endpoint.
- An action row is persisted before dispatch.
- Only one live action exists for the same tenant/device/type/target.
- Every reversible action has a working, idempotent inverse.
- Every create, dispatch, result, undo and expiry is audited.
- Actions have an expiry unless SuperAdmin explicitly marks them indefinite.
- Tenant settings provide a master kill switch, automatic-response opt-in, allowed actions and an hourly cap.
- Heartbeat convergence reverts orphaned containment; endpoint state cannot outlive its record.
Manual containment workflow
Section titled “Manual containment workflow”- Open the target device or Response Actions.
- Select the action.
- Provide a reason and expiry.
- Confirm. UEC creates the row, then dispatches it.
- Watch state:
Pending → Dispatched → Succeeded/Failed/TimedOut. - Verify the result and the device’s last endpoint confirmation.
- Undo with the explicit inverse or allow expiry.
If the device is offline, the row remains pending and the dispatch worker retries when it reconnects. A pending action already beyond expiry is cancelled rather than dispatched.
States
Section titled “States”| State | Meaning |
|---|---|
| Pending | Persisted, not yet delivered |
| PendingApproval | Waiting for configured approval |
| Dispatched | Transport accepted delivery |
| Succeeded | Endpoint reported success |
| Failed / TimedOut | Executor failed or acknowledgement window elapsed |
| Expired / Reverted | Containment ended by expiry or inverse |
Automatic response
Section titled “Automatic response”Alert rules can bind response actions, but automatic response is:
- opt-in per tenant;
- limited to allowed action types;
- capped hourly;
- still subject to dedup/rate limits in the alert pipeline;
- audited with source alert and rule IDs.
Start with low-risk actions and a short default undo interval. Do not enable automatic isolate on a production-critical ring without approval and rollback rehearsals.
Read the action log
Section titled “Read the action log”For each row, inspect target, reason, origin, source alert/rule, actor, dispatch/result times, expiry, endpoint confirmation, failure reason and message. The reason is mandatory because this log is both an operational and audit record.
Rule-triggered flow
Section titled “Rule-triggered flow”- Alert survives deduplication and rule rate limits.
- Active-response hook reads rule bindings.
- Tenant settings and hourly cap are enforced.
- Action is created with
Origin = Ruleand source IDs. - Dispatch follows the same state machine as a manual action.
There is no separate unguarded “run script” path.