Skip to content

fix: retire the Windows Copilot switch on Windows 11 24H2 and later - #3235

Merged
laurentiu021 merged 1 commit into
mainfrom
fix/privacy-switch-by-windows-build
Nov 10, 2026
Merged

laurentiu021 merged 1 commit into
mainfrom
fix/privacy-switch-by-windows-build

Conversation

@laurentiu021

Copy link
Copy Markdown
Owner

The Windows Copilot switch in Privacy & Telemetry writes one policy, TurnOffWindowsCopilot. On Windows 11 version 24H2 and later that policy does nothing, and the switch said it had been applied.

What changes

  • What the policy does. Microsoft's WindowsAI policy reference lists TurnOffWindowsCopilot as deprecated. It turns off the Windows Copilot pane and its taskbar button, it is not for the newer Windows Copilot app, and it also keeps an upgrade from installing that app on a PC whose image had the pane. Windows 11 24H2 (build 26100) has the app and no pane. So on 24H2 and later, Apply wrote a value nothing reads, the switch read back as on, the status line counted it among the protections that are active, and the app went on working.
  • From build 26100 on, the switch is retired. PrivacyToggle.IsRetired marks a switch the Windows on this PC no longer reads. LoadToggles lists such a switch only while it is on, so it can still be turned off to clear the policy. There it is named "Disable Windows Copilot (no effect on this PC)", its description says so and points to Preinstalled Apps for removing the app, and the tab's "N of M privacy protections active" leaves it out of both counts. Off, it is not listed at all, so a profile imported there drops its choice for it the way it drops a key it does not know. That log line now says the choice is not listed on this PC.
  • Before 24H2, and when the build cannot be read, the switch is offered as before, now named "Disable Windows Copilot". Its description says what the policy does and that it does not affect the app once installed. An unreadable build counts as earlier, as the widgets switch already treats one as Windows 11: either way the switch keeps what it did before the build was read.
  • InstalledWindows.IsWindows11Version24H2OrLater holds the boundary, next to IsWindows10.

Tests

  • PrivacyServiceTests: the switch is offered with its new name and description on 19045, 22631, 26099, an unreadable build and no build. On 26100 and 26200 it is not listed while off, and every other key still is. On 26100 with the policy set it is listed, retired and on, with the no-effect wording, and turning it off removes the value, after which it is no longer listed.
  • EverySwitch_WritesTheValuesItsKeyStandsFor now pins this switch's key, value and protected value too. It used to leave the switch out.
  • EveryToggle_KeepsTheKeyProfilesNameItBy and TheRealSwitches_FillEveryReach read over a key of the test's own instead of the machine's registry. Read from the machine, the Windows and the settings of the PC running the test would decide whether this switch is listed.
  • PrivacyViewModelTests.ASwitchWindowsNoLongerReads_IsNotCountedAmongTheProtectionsActive: with a retired switch on, the status line counts 1 of 2. Turned off, it is still 1 of 2, with one pending change.
  • InstalledWindowsTests: 26099 counts as before 24H2, 26100 and 26200 as 24H2 or later, and an unreadable build as earlier.

Red checks

Each change below was put back on its own, and the named tests failed for that reason:

  • The list keeping a retired switch that is off: the off test on 26100 and 26200, and the on test's last check.
  • The boundary one build late (> for >=): the 26100 rows of the off test and of Windows11Version24H2OrLater_IsEveryBuildFrom24H2sFirst, and the on test.
  • An unreadable build counted as 24H2: the null and "not a build" rows of the offered test, ABuildThatCouldNotBeRead_CountsAsEarlierThan24H2_..., the key list, the write map and TheRealSwitches_FillEveryReach.
  • The switch never marked retired: the off test on both builds and the on test.
  • The status line counting every switch: the view model test read "2 of 3".
  • FakePrivacy not copying the flag: the same test, so the fake really carries it.
  • The old name: every row of the offered test.

Unit suite twice, the format check, and all four projects built with no warnings.

The README's Privacy & Telemetry screenshot dates from 1.51.6 and already shows older names; it is retaken with the other screenshots.

The switch writes TurnOffWindowsCopilot, the policy that turns off the
Windows Copilot pane and its taskbar button. Windows 11 version 24H2
replaced the pane with the Windows Copilot app, which ignores the
policy, so there the switch read back as on after Apply and changed
nothing, and the tab counted it among the protections that are active.

From build 26100 on the switch is listed only while it is on, so it can
be turned off to clear the policy, says it has no effect on this PC,
and is not counted as a protection. On earlier builds, and when the
build cannot be read, it is "Disable Windows Copilot" and says what the
policy does, and that it does not affect the app once installed.
@laurentiu021
laurentiu021 merged commit 125e2b0 into main Nov 10, 2026
7 checks passed
@laurentiu021
laurentiu021 deleted the fix/privacy-switch-by-windows-build branch November 10, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant