The User Was Disabled… But The Account Was Still Active
The user had left the business.
HR confirmed the termination. IT disabled the Microsoft 365 account. The password was reset. MFA was blocked. The checklist looked complete.
Everything looked secure.
But the phone was still syncing mail.
Teams was still open in the browser.
SharePoint access continued quietly in the background.
The account was disabled.
The session wasn’t.
This Agent Foskett briefing investigates a real-world Microsoft 365 offboarding risk: disabled users, active sessions, refresh tokens, remembered devices and cloud access that can continue after the identity appears to be locked down.
Briefing summary
Disabling an account can stop new sign-ins, but it does not always tell the full story. GEMXIT investigates stale sessions, refresh tokens, remembered devices and cloud access that may continue after offboarding.
What happened
Why disabling an account is not the whole story
First hunt: find successful sign-ins after the account was disabled
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
let DisabledUser = "user@company.com"; let DisableTime = datetime(2026-05-20T09:00:00Z); SigninLogs | where TimeGenerated > DisableTime | where UserPrincipalName =~ DisabledUser | project TimeGenerated, UserPrincipalName, AppDisplayName, ClientAppUsed, IPAddress, ResultType, ConditionalAccessStatus, DeviceDetail | order by TimeGenerated desc
Second hunt: confirm the disable event and session revocation
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
AuditLogs | where TimeGenerated > ago(14d) | where TargetResources has "user@company.com" | where OperationName has_any ( "Update user", "Disable account", "Reset password", "Revoke user sign in sessions" ) | project TimeGenerated, OperationName, Result, InitiatedBy, TargetResources | order by TimeGenerated desc
Third hunt: cloud application activity after offboarding
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
let DisabledUser = "user@company.com"; let DisableTime = datetime(2026-05-20T09:00:00Z); CloudAppEvents | where Timestamp > DisableTime | where AccountDisplayName has "user" or AccountId has DisabledUser | project Timestamp, AccountDisplayName, Application, ActionType, IPAddress, DeviceType | order by Timestamp desc
Where this becomes dangerous
What should organisations do?
How GEMXIT approaches offboarding security reviews
Final thought
It is: “Did access actually stop?”
Continue the investigation with Cyber Security Is Not Just Antivirus, MFA Session Hijacking, The Session Token Never Expired, The VPN Login Continued After The Exit Meeting, When Nothing Looks Wrong, Identity and Access Security, Zero Trust and the GEMXIT Security Review.
Develop IT. Protect IT. GEMXIT PTY LTD | GEMXIT UK LTD