{"version":"2.1.234","anchor":"policy-denials-now-distinguish-denied-from-never-answered","canonical_anchor":"policy-denials-now-distinguish-denied-from-never-answered","heading":"Policy denials now distinguish \"denied\" from \"never answered\"","tier":"notice","area":"Policy","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234\/e\/policy-denials-now-distinguish-denied-from-never-answered","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.234","markdown":"### Policy denials now distinguish \"denied\" from \"never answered\"\n\nPolicy checks now distinguish \"your org denied this\" from \"we haven't got an answer yet\".\n\n**What**\n\nChecks against organization policy now report why something is unavailable rather than just that it is. Skills sync stays off when `allow_account_skills_sync` comes back as denied by the org or as never registered, and defers the round when the answer is simply not cached yet.\n\n**Details**\n\n- The denial kind is `unregistered` when no verdict has been registered, otherwise the backend's own classification such as `org_denied` or `cache_miss`.\n- Plugin and skill search telemetry now separates a real policy denial from `policy_mirror_unregistered` and `policy_cache_miss`.\n- Remote Control startup builds its refusal message from the same kind.\n- Verdicts come from the server; with no registered verdict the code reads `unregistered`.\n\n**Evidence**\n\n`policy_mirror_unregistered`\n\n- Area: Policy\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 3\/5"}