You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Inactive guest identities are disabled or removed from the tenant not reporting correctly #1589
We cleanup our inactive guest accounts monthly for anything older than 90 days.
The latest v2 Assessment is finding 12K+ inactive guest accounts. I skimmed the list provided and they are reporting a current active date.
Checking the lastSignInDateTime, lastNonInteractiveSignInDateTime, and lastSuccessfulSignInDateTime (The timestamp of the last truly successful interactive or non-interactive sign-in) I'm finding the lastSuccessfulSignInDateTime is not accurate for the guest user.
I am confused, Is the test failing, or is the test showing wrong data or is the graph returning wrong data? What comparison did you do?
And, is the test result inaccurate in a way?
Inactive guest identities are disabled or removed from the tenant test,
not reporting correctly is identifying 12K+ inactive guests. No way I have
that.
Looks to me like your using LastSuccessfulSignInDateTime for the test and
for userType=Guests graph is not bringing back the correct data.
LastNonInteractiveSignInDateTime
has a more recent date than LastSuccessfulSignInDateTime for Guests.
For userType=Member graph brings back the most recent date for
LastSuccessfulSignInDateTime.
UserType : Guest
LastSignInDateTime : 1/26/2026 2:41:28 PM
LastNonInteractiveSignInDateTime : 10/6/2026 6:04:18 PM
LastSuccessfulSignInDateTime : 1/26/2026 2:41:31 PM
lastSuccessfulSignInDateTime should be the date of the
LastNonInteractiveSignInDateTime but it is not.
For a Member user seems to be working as expected.
UserType : Member
LastSignInDateTime : 10/11/2026 8:39:00 PM
LastNonInteractiveSignInDateTime : 10/12/2026 4:59:46 AM
LastSuccessfulSignInDateTime : 10/12/2026 4:59:46 AM
If you want to give me your microsoft email I will send you real data
separately. I just do not want to post it publicly.
On Mon, Oct 12, 2026 at 4:47 PM Mark Graceffa ***@***.***>
wrote:
No need. I think I understand the issue. I will validate, resp. look at our reference tenant for reproducible evidence and come back if I need more info.
OK, Let me know as I can give you some examples in my tenant with UPNs. I
just do not want to post them here in an open forum.
Found 12254 inactive guest user(s) with no sign-in activity in the last 90
days:
Here is one you list with a last login as: 2025-02-12
I see this for the guest user:
UserType : Guest
LastSignInDateTime : 7/7/2025 6:18:55 AM
LastNonInteractiveSignInDateTime : 10/12/2026 8:45:31 PM
LastSuccessfulSignInDateTime : 2/12/2025 9:26:58 AM
Another Guest you report last login: 2026-02-25 and I see this:
UserType : Guest
LastSignInDateTime : 2/25/2026 9:48:28 AM
LastNonInteractiveSignInDateTime : 9/25/2026 2:22:10 PM
LastSuccessfulSignInDateTime : 2/25/2026 6:37:12 PM
For Guests it doesn't seem like LastSuccessfulSignInDateTime is accurate.
For our Stale Guest account cleanup of anything older over 90 days we look
at both LastSignInDateTime and LastNonInteractiveSignInDateTime being older
than 90 days.
Mark
And that is actually correct handling of how the test is currently designed to assess inactive guests.
As per signInActivity logging behavior:
lastSuccessfulSignInDateTime - The date and time of the user's most recent successful interactive or non-interactive sign-in. Use this property if you need to determine when the account was truly accessed. This field can be used to build reports, such as inactive users.
lastNonInteractiveSignInDateTime - The last non-interactive sign-in date for a specific user. You can use this field to calculate the last time a client attempted (either successfully or unsuccessfully) to sign in to the directory on behalf of a user.
lastSignInDateTime - The last interactive sign-in date and time for a specific user. This property records the last time a user attempted an interactive sign-in to the directory - whether the attempt was successful or not. Note: Since unsuccessful attempts are also logged, this value might not accurately reflect actual system usage. For tracking actual account access, please use the lastSuccessfulSignInDateTime property.
Consider a situation where you have a custom application that regularly polls some data on-behalf-of the user using an authorization it obtained years ago. The user never signed in again. The application still keeps polling data and keeps refreshing its own token. You will see updates of the non interactive sign-ins for as long as your app is alive, not as long as the user is actually using the app. Completely unrelated to the user activity. Same is if you have a web app that has endless session. The user might be coming back to the app, but the app will never ask the user to verify their identity again, for example - redirecting the user authenticate again. And while this might be a desired outcome, this is not what Zero Trust principle of verify explicitly recommends.
The Zero Trust Assessment evaluates not against a slight chance of infinite session, but against the Zero Trust Principles.
For what I can say, your quoted logs for the second guest show:
A real, successful, sign-in and verification of the user account happened on 2/25/2026 at 6:37PM. This event, potentially, created a cookie at user's browser and potentially a refresh token at some app.
Last recorded attempt for an interactive sign-in happened on 2/25/2026 at 09:48 PM - the directory does not record the result - success or failure, unless you have exported the actual sign-in logs and trace back.
The last attempted non-interactive sign-in (that means a sign-in from a client using a valid refresh token) happened on 9/25/2026. This event is not a proof that the user was actually using the application.
From these events, the only real user identity verification (Zero Trust Principle of verify explicitly) happened back in February. Based on that, Zero Trust assessment tool identifies that the controls you have applied in your tenant (and applications) do not follow the principles of Zero Trust and marks all those users as invalid as per Zero Trust Principles.
Activity
astaykov commentedon Oct 12, 2026
I am confused, Is the test failing, or is the test showing wrong data or is the graph returning wrong data? What comparison did you do?
And, is the test result inaccurate in a way?
mgraceffa commentedon Oct 12, 2026
mgraceffa commentedon Oct 12, 2026
astaykov commentedon Oct 13, 2026
No need. I think I understand the issue. I will validate, resp. look at our reference tenant for reproducible evidence and come back if I need more info.
mgraceffa commentedon Oct 13, 2026
astaykov commentedon Oct 16, 2026
Oh, now I see your situation.
And that is actually correct handling of how the test is currently designed to assess inactive guests.
As per signInActivity logging behavior:
Consider a situation where you have a custom application that regularly polls some data on-behalf-of the user using an authorization it obtained years ago. The user never signed in again. The application still keeps polling data and keeps refreshing its own token. You will see updates of the non interactive sign-ins for as long as your app is alive, not as long as the user is actually using the app. Completely unrelated to the user activity. Same is if you have a web app that has endless session. The user might be coming back to the app, but the app will never ask the user to verify their identity again, for example - redirecting the user authenticate again. And while this might be a desired outcome, this is not what Zero Trust principle of verify explicitly recommends.
The Zero Trust Assessment evaluates not against a slight chance of infinite session, but against the Zero Trust Principles.
For what I can say, your quoted logs for the second guest show:
From these events, the only real user identity verification (Zero Trust Principle of verify explicitly) happened back in February. Based on that, Zero Trust assessment tool identifies that the controls you have applied in your tenant (and applications) do not follow the principles of Zero Trust and marks all those users as invalid as per Zero Trust Principles.