Forum Discussion

RICSEC's avatar
RICSEC
Copper Contributor
Aug 05, 2026

Insider Risk Level not being correctly picked up by DLP

I have two users currently with assigned Insider Risk levels, one elevated and one minor. I have taken the templated DLP policy (DSPM for AI - Block sensitive info from AI sites) which looks for sensitive information being pasted to generative AI sites, and applies a block if the user is an elevated risk user, and a block with override for a moderate/minor risk user (this was audit only originally).

For each advanced DLP rule within that policy, I have a separate policy tip which shows so I know which Advanced DLP rule has been hit. 

 

However, I'm having some discrepancies with the correct insider risk level being identified by Purview and therefore the wrong advanced DLP rule is being applied. 

Testing examples:

Logged into a Windows 11 PC with the account, and using Medium confidence UK NINO's I try pasting the content into ChatGPT:

  • Elevated risk user: Block with Override
  • Minor Risk user: Block with Override

If I try the exact same scenario on a different PC, I can sometimes get to the point where even though its the same set of data, Purview allows me to paste it at after checking the data. Or in another scenario, I was getting both users hitting the "elevated risk" advanced DLP rule.

 

The Devices are all showing as up to date sync wise with DLP policies, and the policy itself is showing as fully synced.

 

Assigned insider risk levels:

 

 

DLP Rules:

Elevated:

 

Moderate/Minor:

 

 

1 Reply

  • KnutPetter's avatar
    KnutPetter
    Tin Contributor

    SHORT VERSION

     

    Before you chase Adaptive Protection, check two things that produce exactly this

    pattern on their own. The policy tip you see does not identify the rule that

    enforced the action, and a policy in simulation mode with tips turned on does not

    apply the action you configured.

     

    WHY THE POLICY TIP IS NOT A RELIABLE RULE INDICATOR

     

    Purview shows only the policy tip from the highest priority, most restrictive rule

    that the content matched, both across rules within a policy and across policies.

    The documentation is explicit that custom policy tips show for the most restrictive

    rule, not necessarily the rule that is performing the restriction. So a distinct tip

    per rule tells you which rule won the tip contest, not which rule produced the

    enforcement you observed. That alone can make it look like the wrong insider risk

    level was picked up.

     

    https://learn.microsoft.com/purview/dlp-use-notifications-and-policy-tips

     

    WHY BOTH USERS END UP WITH BLOCK WITH OVERRIDE

     

    The DSPM for AI - Block sensitive info from AI sites policy is created in test mode.

    When a policy state is Run the policy in simulation mode and Show policy tips is on,

    the action applied at runtime is not the action you configured. A configured Block is

    applied as Block with override, and a configured Block with override is also applied

    as Block with override. With tips off, both are applied as Audit.

     

    That maps one to one onto your test results. Your elevated rule is Block and your

    moderate and minor rule is Block with override, and both users end up with Block with

    override, which makes the two rules indistinguishable at the endpoint. The runtime

    table is in the endpoint section of the rule reference.

     

    https://learn.microsoft.com/purview/dlp-policy-reference

     

    So the first thing I would check is the policy state. Confirm it is Turn it on right

    away, not simulation with policy tips.

     

    CHECK WHETHER MORE THAN ONE POLICY IS IN PLAY

     

    Endpoint DLP applies the aggregate of the most restrictive actions across every

    matching rule and policy, and where the override option differs, no override wins

    over allow override. If you also still have the Adaptive Protection quick setup

    policy for Endpoint DLP running, the documentation states that when a user is

    targeted by both a default Adaptive Protection device policy and an independent

    device DLP policy, only the actions of the most restrictive policy are applied. Two

    overlapping policies will produce results that look like the wrong risk level was

    matched.

     

    https://learn.microsoft.com/purview/dlp-adaptive-protection-learn

     

    THE NINO CONFIDENCE DETAIL IS PROBABLY RELEVANT HERE

     

    U.K. national insurance number has no checksum. It reaches high confidence only when

    the pattern function and a keyword from Keyword_uk_nino are both found within a

    proximity of 300 characters. Pattern alone is medium confidence.

     

    That means the same NINO can land at medium or high confidence depending on what

    surrounding text happens to be in the paste. If your two rules were built with

    different confidence thresholds, or if the text you pasted on the second machine

    carried slightly different context, you get a match on one rule and not the other

    with what looks like identical data. Worth testing the exact string with the Test

    function on the SIT, and worth checking that both rules use the same confidence level

    and instance count.

     

    https://learn.microsoft.com/purview/sit-defn-uk-national-insurance-number

     

    PASTE TO BROWSER HAS ITS OWN CONSTRAINTS

     

    The Paste to supported browsers activity evaluates the clipboard content at the

    moment of the paste, independently of any source file classification, and it has

    constraints that catch people out.

     

    Pasted content is classified locally on the device. Advanced classification is not

    used for the paste activity, so exact data match, named entities, trainable

    classifiers and credential classifiers never trigger on a paste. Standard pattern

    based SITs, which is what NINO is, do work.

     

    The activity only works with Sensitive service domain groups. The flat Service

    domains list has no effect on it. Also leave the global Service domains action set to

    Block. Setting it to Allow is documented as making the policy behave erratically,

    which would fit the inconsistency you are seeing between machines.

     

    There is a documented lag between the paste and the classification response, and

    during that lag you can see both a policy evaluation notification and a check

    complete notification in Edge, or a policy evaluation toast in Chrome and Firefox.

    Your observation that Purview sometimes lets the paste through after checking the

    data is that behaviour, not necessarily a risk level problem.

     

    On Windows, Chrome and Firefox require the Microsoft Purview extension. Edge is

    native. If one test machine has the extension and the other does not, that alone

    explains a machine to machine difference.

     

    https://learn.microsoft.com/troubleshoot/microsoft-365/purview/data-loss-prevention/diagnose-paste-to-supported-browser-issues

     

    LATENCY YOU HAVE TO ALLOW FOR

     

    A new or edited policy takes up to roughly 60 minutes to sync to onboarded devices.

    Changes to user or group membership take roughly 24 hours to come into policy scope.

    Device sync status in the portal can take up to 2 hours to refresh, so a device

    showing as synced is not proof that it holds the policy version you just edited.

    Enabling Adaptive Protection can take up to 36 hours before insider risk levels and

    DLP actions are applied to user activity.

     

    https://learn.microsoft.com/purview/dlp-edlp-tshoot-sync

    https://learn.microsoft.com/purview/insider-risk-management-adaptive-protection

     

    ONE POINT THAT IS MY OWN ASSESSMENT, NOT DOCUMENTED BEHAVIOUR

     

    Testing two users with different risk levels by signing in and out of the same PC is

    not a clean test in my view. Each onboarded device carries a single associated DLP

    UPN, and the Valid user attribute reflects whether the currently logged on user is in

    scope of a device targeted policy. Policy sync itself is a device level operation. I

    would run the two accounts on two dedicated devices, or at minimum confirm the device

    picked up policy again after each sign in, before concluding that the wrong insider

    risk level was evaluated. You can read DlpUpn and HasDlpValidUpn per device from the

    DeviceInfo table in Advanced hunting.

     

    HOW TO ACTUALLY PROVE WHICH RULE FIRED

     

    Stop using the policy tip for this. Use Activity Explorer and open the paste event,

    which names the policy and the rule that matched.

     

    If you need to go deeper, endpoint DLP diagnostics show you what the device actually

    holds. Always on diagnostics has been enabled by default on onboarded Windows devices

    since mid April 2026, and you can request a collection from the Purview portal.

    Otherwise run the MDE Client Analyzer with the -t switch, reproduce the paste, and

    read the Actions value for each policy rule. EnforcementMode 1 is Audit, 2 is Warn

    which is block with override, and 3 is Block. That tells you exactly which rules

    reached the device and in which mode, which is the piece you are currently inferring

    from tips.

     

    https://learn.microsoft.com/troubleshoot/microsoft-365/purview/data-loss-prevention/analyze-endpoint-dlp-diagnostic-logs

     

    WHAT I WOULD CHANGE IN THE TEST SETUP

     

    I would split the two risk levels into two separate policies rather than two rules in

    one policy, and disable one while testing the other. It costs nothing in coverage,

    and it removes both most restrictive aggregation and policy tip precedence from your

    test loop. Once you get clean, repeatable results per policy, you can merge them back

    if you prefer a single policy.