Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ It's also paranoid about not making your gaming worse. Polling pauses entirely d
## Highlights

- 🎯 **17+ monitored settings** spanning display, security, performance, capture, input, and Windows services
- ⚙️ **One-click Recommended preset** -- General tab button stages the gaming-optimized configuration across every setting (Want + Monitor + Auto-apply). Idempotent, so re-running it after a future update picks up only the new settings.
- 🎮 **Pauses during gameplay** — fullscreen, borderless, *and* during benchmark runs (3DMark, Cinebench, Geekbench, etc.)
- ⚡ **One-click apply** with a per-setting auto-apply opt-in
- 🪟 **Native Win11 Fluent design** with light / dark / system themes
Expand Down Expand Up @@ -82,7 +83,7 @@ A curated catalog of services GamerGuardian can stop + disable (or set to Manual

### Windows AI

Policy-toggle disables for Copilot, Recall, Click-to-Do, Edge Copilot/Hubs/GenAI, and Notepad Rewrite / Paint AI. Optional one-way removal of Windows AI UWP packages (`Microsoft.Copilot`, `Microsoft.Windows.Ai.Copilot.Provider`, `MicrosoftWindows.Client.AIX`). Inspired by [zoicware/RemoveWindowsAI](https://github.com/zoicware/RemoveWindowsAI) but stays in the safe "policy toggle + service disable" lane -- every change is reversed by deleting the same registry value. Walk-through in the [Windows AI section of SETTINGS-REFERENCE.md](docs/SETTINGS-REFERENCE.md#windows-ai-policies).
Policy-toggle disables for Copilot, Recall, Click-to-Do, Edge Copilot/Hubs/GenAI, Notepad Rewrite / Paint AI, Windows search AI suggestions, Windows AI Actions (right-click rewrite/summarize), typing-data harvesting, and Microsoft 365 Copilot in Word/Excel/OneNote. Optional one-way removal of Windows AI UWP packages (`Microsoft.Copilot`, `Microsoft.Windows.Ai.Copilot.Provider`, `MicrosoftWindows.Client.AIX`) and service disables for `WSAIFabricSvc` + `AarSvc`. Inspired by [zoicware/RemoveWindowsAI](https://github.com/zoicware/RemoveWindowsAI) but stays in the safe "policy toggle + service disable + opt-in UWP removal" lane -- every change is reversed by deleting the same registry value or re-enabling the service. Walk-through in the [Windows AI section of SETTINGS-REFERENCE.md](docs/SETTINGS-REFERENCE.md#windows-ai-policies).

## Performance & gaming impact

Expand Down
130 changes: 126 additions & 4 deletions docs/SETTINGS-REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,12 @@ Every setting here is managed via the Settings window. Toggle **Monitor** to hav
**Windows AI policies**

- [Click-to-Do (Snipping Tool AI)](#click-to-do-snipping-tool-ai) (`ai.clicktodo`)
- [Microsoft 365 Copilot in Word / Excel / OneNote](#microsoft-365-copilot-in-word---excel---onenote) (`ai.office`)
- [Microsoft Edge Copilot / Hubs / GenAI](#microsoft-edge-copilot---hubs---genai) (`ai.edge`)
- [Notepad Rewrite + Paint AI features](#notepad-rewrite--paint-ai-features) (`ai.notepadpaint`)
- [Search box AI suggestions + taskbar companion](#search-box-ai-suggestions--taskbar-companion) (`ai.settingssearch`)
- [Typing / input insights data collection](#typing---input-insights-data-collection) (`ai.inputinsights`)
- [Windows AI Actions](#windows-ai-actions) (`ai.actions`)
- [Windows Copilot](#windows-copilot) (`ai.copilot`)
- [Windows Recall + AI data analysis](#windows-recall--ai-data-analysis) (`ai.recall`)

Expand All @@ -40,6 +44,7 @@ Every setting here is managed via the Settings window. Toggle **Monitor** to hav

**Windows services**

- [Agent Activation Runtime Service](#agent-activation-runtime-service) (`service:AarSvc`)
- [Connected User Experiences and Telemetry](#connected-user-experiences-and-telemetry) (`service:DiagTrack`)
- [Delivery Optimization](#delivery-optimization) (`service:DoSvc`)
- [Downloaded Maps Manager](#downloaded-maps-manager) (`service:MapsBroker`)
Expand Down Expand Up @@ -444,6 +449,30 @@ Every setting here is managed via the Settings window. Toggle **Monitor** to hav
**Reversible via.** Delete DisableClickToDo from HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsAI and HKCU\Software\Microsoft\Windows\Shell\ClickToDo.


### Microsoft 365 Copilot in Word / Excel / OneNote

`ai.office`   **Recommended:** Off

**What it does.** Disables the Copilot button + ribbon entries inside the desktop Word, Excel, and OneNote apps; also opts the machine out of Microsoft's AI model training on document contents (HKLM\Policies\office admin template).

**Why you'd change it.** Microsoft 365 Copilot is opt-in by license, but the UI affordances still show up in every Word document; disabling cleanly removes them. The training opt-out is a separate policy that prevents document text from being used to train Microsoft's models even if a user happens to invoke Copilot.

**How it helps.** No Copilot ribbon. No suggestions panel. No accidental cloud calls. No document-text contribution to model training.

**Per-scenario recommendation:**

| Scenario | Setting |
|---|---|
| Office user who doesn't have a Copilot license | Off -- the buttons are just dead weight |
| Office user with Copilot license, occasional use | On (or selectively per app) |
| Privacy-conscious / regulated workflows | Off |
| Office not installed | Doesn't matter -- the toggle is a no-op |

**Risks.** If you do have a Copilot license and want to use it, you lose the in-app entry points. Reverse by deleting the keys.

**Reversible via.** Delete EnableCopilot from HKCU\Software\Microsoft\Office\16.0\Word\Options and Excel\Options, CopilotEnabled from HKCU\...\OneNote\Options\Copilot, and disabletraining from HKLM\SOFTWARE\Policies\Microsoft\office\16.0\common\ai\training\general.


### Microsoft Edge Copilot / Hubs / GenAI

`ai.edge`   **Recommended:** Off
Expand Down Expand Up @@ -472,11 +501,11 @@ Every setting here is managed via the Settings window. Toggle **Monitor** to hav

`ai.notepadpaint`   **Recommended:** Off

**What it does.** Per-user disable of Notepad Rewrite, Paint Cocreator, Paint Image Creator, and Paint Generative Erase. All are HKCU registry writes -- no elevation needed.
**What it does.** Per-user disable of Notepad Rewrite, Paint Cocreator, Paint Image Creator, and Paint Generative Erase. Plus a per-user opt-out of Paint's experiment-targeting service and the HKLM machine-wide Paint policy that stops Image Creator from offering itself before per-user toggle. Combined HKCU + HKLM writes.

**Why you'd change it.** These features bolt cloud AI onto otherwise simple apps. Users who don't use the AI features may prefer Notepad and Paint without the buttons.
**Why you'd change it.** These features bolt cloud AI onto otherwise simple apps. Users who don't use the AI features may prefer Notepad and Paint without the buttons. v0.1.39 added the targeting opt-out + HKLM policy so the disable holds across new Paint experiments rolling out under feature flags.

**How it helps.** Notepad and Paint behave like classic versions; no AI action buttons; no cloud calls when you open a document or image.
**How it helps.** Notepad and Paint behave like classic versions; no AI action buttons; no cloud calls when you open a document or image; no opt-in prompts when MS rolls out new AI experiments.

**Per-scenario recommendation:**

Expand All @@ -488,7 +517,76 @@ Every setting here is managed via the Settings window. Toggle **Monitor** to hav

**Risks.** None. AI features disappear from those two apps.

**Reversible via.** Delete the registry values under HKCU\Software\Microsoft\Notepad (RewriteEnabled) and HKCU\Software\Microsoft\Windows\CurrentVersion\Paint (DisableCocreator, DisableImageCreator, DisableGenerativeErase).
**Reversible via.** Delete the registry values under HKCU\Software\Microsoft\Notepad (RewriteEnabled), HKCU\Software\Microsoft\Windows\CurrentVersion\Paint (DisableCocreator, DisableImageCreator, DisableGenerativeErase), HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Paint\View (IsSignedUpForTargetingService), and HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Paint (DisableImageCreator).


### Search box AI suggestions + taskbar companion

`ai.settingssearch`   **Recommended:** Off

**What it does.** Two HKCU policies: DisableSearchBoxSuggestions (kills the AI/Copilot-flavored web suggestion layer in the Windows search box) and TaskbarCompanion (the floating Copilot widget Windows can dock next to the taskbar). HKCU only -- no UAC.

**Why you'd change it.** The search box's AI suggestion layer calls Microsoft web endpoints to suggest answers as you type. The taskbar companion is a floating overlay some Windows 11 builds enable by default. Both are noise for users who use the search box for files and apps.

**How it helps.** Search box returns local files / apps only -- no web suggestions, no Copilot answers inline, no taskbar companion widget. Indexing itself (Start menu, Explorer, Outlook) is untouched.

**Per-scenario recommendation:**

| Scenario | Setting |
|---|---|
| Anyone who uses Windows Search for local files only | Off |
| Active user of search box web/Copilot suggestions | On |
| Privacy-conscious | Off |

**Risks.** You lose the web-suggestion layer and the taskbar companion. Search itself works exactly as before.

**Reversible via.** Delete DisableSearchBoxSuggestions from HKCU\SOFTWARE\Policies\Microsoft\Windows\Explorer and TaskbarCompanion from HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced.


### Typing / input insights data collection

`ai.inputinsights`   **Recommended:** Off

**What it does.** Two HKCU settings that disable Windows' typing-data and ink-data harvesting: RestrictImplicitTextCollection (blocks the OS from saving the plain text you type for personalized suggestions) and InsightsEnabled (the per-user master switch in the Input settings panel). HKCU only -- no UAC.

**Why you'd change it.** By default, Windows builds a per-user typing model from text you've typed in apps. That data feeds personalized suggestions, autocorrect, and (in some Insider builds) AI features. Users who don't want their typing harvested can opt out at the OS level.

**How it helps.** Stops the OS from saving samples of what you type. Personalized typing suggestions degrade slightly (Windows falls back to the global suggestion model); everything else works as normal.

**Per-scenario recommendation:**

| Scenario | Setting |
|---|---|
| Privacy-conscious | Off |
| Anyone who doesn't notice typing suggestions getting better over time | Off |
| Active user of personalized typing suggestions on a touch keyboard | On |

**Risks.** Typing suggestions become slightly less personalized over time. No effect on autocorrect or basic spell-check.

**Reversible via.** Delete RestrictImplicitTextCollection from HKCU\Software\Microsoft\InputPersonalization and InsightsEnabled from HKCU\Software\Microsoft\input\Settings.


### Windows AI Actions

`ai.actions`   **Recommended:** Off

**What it does.** Windows' shell-level AI Actions surface (right-click "rewrite with AI / summarize / search the web for this" on selected text, images, etc.). Toggled via the FeatureManagement override hive -- two numeric feature IDs (1853569164 and 4098520719) get EnabledState = 1 (force-disabled).

**Why you'd change it.** AI Actions is a 24H2-era Windows feature that adds AI suggestions to right-click menus and similar surfaces. The FeatureManagement override is the documented kill switch (zoicware uses the same IDs).

**How it helps.** Right-click menus, image picker dialogs, and other shell surfaces stop showing AI action options. No cloud calls when you right-click an image or selected text.

**Per-scenario recommendation:**

| Scenario | Setting |
|---|---|
| Anyone who doesn't use AI right-click actions | Off |
| Active user of AI Actions | On |
| Privacy-conscious | Off |

**Risks.** You lose the AI options in right-click / image-context menus. The right-click menus themselves still work for everything else.

**Reversible via.** Delete EnabledState from HKLM\SYSTEM\ControlSet001\Control\FeatureManagement\Overrides\8\1853569164 and 4098520719. Feature IDs may change in future Windows builds -- if you see new AI Actions surfaces after a Windows Update, GamerGuardian's existing overrides will still hold for these two but new feature IDs would need a new monitor entry.


### Windows Copilot
Expand Down Expand Up @@ -610,6 +708,30 @@ Every setting here is managed via the Settings window. Toggle **Monitor** to hav

## Windows services

### Agent Activation Runtime Service

`service:AarSvc`   **Recommended:** Default (Manual) -- only Disable if you've also flipped the AI policy toggles + disabled WSAIFabricSvc

**What it does.** Per-user service that backs Windows AI agent activations -- the runtime Copilot voice, Cortana legacy hooks, and certain shell AI surfaces call into when they want to launch in the background.

**Why you'd change it.** Like WSAIFabricSvc, this service is paired with the Windows AI policy toggles. If you've disabled Copilot, Recall, etc. at the policy level, AarSvc has nothing useful to do; if any AI feature is still enabled, leave it on.

**How it helps.** Removes a per-user service backing AI features you've already disabled. Pairs naturally with WSAIFabricSvc + the Windows AI policy toggles.

**Per-scenario recommendation:**

| Scenario | Setting |
|---|---|
| Competitive FPS | Default (Manual) -- only Disable if you've also flipped the AI policy toggles + disabled WSAIFabricSvc |
| Streaming + game | Default (Manual) -- only Disable if you've also flipped the AI policy toggles + disabled WSAIFabricSvc |
| Casual single-player | Default (Manual) -- only Disable if you've also flipped the AI policy toggles + disabled WSAIFabricSvc |
| Productivity / mixed-use | Default (Manual) -- only Disable if you've also flipped the AI policy toggles + disabled WSAIFabricSvc |

**Risks.** Per-user services use a generated suffix on the actual service name (AarSvc_<hex>). GamerGuardian disables the template definition so every new per-user instance starts disabled, but existing user sessions may need a logoff/logon to pick up the change. If you re-enable any AI feature later, it will fail to launch until you re-enable this service.

**Reversible via.** Set-Service -Name AarSvc -StartupType Manual


### Connected User Experiences and Telemetry

`service:DiagTrack` &nbsp; **Recommended:** Disabled
Expand Down
5 changes: 5 additions & 0 deletions src/GamerGuardian/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,11 @@ protected override void OnStartup(StartupEventArgs e)
new ClickToDoMonitor(),
new EdgeAiMonitor(),
new NotepadPaintAiMonitor(),
// v0.1.39 additions for closer parity with zoicware/RemoveWindowsAI:
new SettingsSearchAiMonitor(),
new AiActionsMonitor(),
new InputInsightsMonitor(),
new OfficeCopilotMonitor(),
};
var serviceMonitors = GamerGuardian.Services.ServiceCatalog.All
.Select(d => (IMonitoredSetting)new WindowsServiceMonitor(d));
Expand Down
5 changes: 5 additions & 0 deletions src/GamerGuardian/Models/AppConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ public sealed class GlobalPreferences
public ToggleSettingPref ClickToDo { get; set; } = new() { DesiredOn = true };
public ToggleSettingPref EdgeAi { get; set; } = new() { DesiredOn = true };
public ToggleSettingPref NotepadPaintAi { get; set; } = new() { DesiredOn = true };
// v0.1.39 additions for closer parity with zoicware/RemoveWindowsAI:
public ToggleSettingPref SettingsSearchAi { get; set; } = new() { DesiredOn = true };
public ToggleSettingPref AiActions { get; set; } = new() { DesiredOn = true };
public ToggleSettingPref InputInsights { get; set; } = new() { DesiredOn = true };
public ToggleSettingPref OfficeCopilot { get; set; } = new() { DesiredOn = true };
}

public sealed class ToggleSettingPref
Expand Down
80 changes: 80 additions & 0 deletions src/GamerGuardian/Monitors/AiActionsMonitor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
using GamerGuardian.Models;
using GamerGuardian.Services;
using Microsoft.Win32;

namespace GamerGuardian.Monitors;

/// <summary>
/// Disables Windows' "AI Actions" feature via the FeatureManagement
/// override hive. AI Actions is the right-click "rewrite with AI / summarize /
/// search the web" surface that started appearing in Windows 11 24H2.
///
/// <para>Implementation note: FeatureManagement overrides live under numeric
/// feature IDs (the IDs come from MS's internal feature flag service, not
/// from any docs we can cite). EnabledState=1 means "force disabled"; 2 means
/// "force enabled"; absent means "use server-provided default."
/// We use the two feature IDs zoicware/RemoveWindowsAI documents: 1853569164
/// (AI Actions shell surface) and 4098520719 (AI Actions data plumbing).</para>
/// </summary>
public sealed class AiActionsMonitor : IMonitoredSetting
{
public string Id => "ai.actions";

private const string OverridesRoot = @"SYSTEM\ControlSet001\Control\FeatureManagement\Overrides\8";
private static readonly uint[] FeatureIds = { 1853569164u, 4098520719u };

public IEnumerable<DriftItem> CheckDrift(AppConfig config)
{
var pref = config.Global.AiActions;
var current = ReadCurrent();
if (current is null) yield break;
if (current.Value == pref.DesiredOn) yield break;

bool desired = pref.DesiredOn;
yield return new DriftItem(
SettingId: Id,
DisplayKey: "ai",
DisplayLabel: "Windows AI",
Description: desired
? "Windows AI Actions (right-click rewrite / summarize / search) -- re-enable"
: "Windows AI Actions -- disable via FeatureManagement override",
CurrentValue: current.Value ? "On" : "Off (override)",
DesiredValue: desired ? "On" : "Off (override)",
AutoApply: pref.AutoApply,
Apply: () => Task.Run(() => Apply(desired)),
IsMonitored: pref.Monitor,
RawBefore: current.Value ? "(no override)" : "EnabledState=1 on both feature IDs",
RawDesired: desired ? "(deleted)" : "EnabledState=1 on both feature IDs");
}

public static bool? ReadCurrent()
{
try
{
bool allDisabled = true;
foreach (var id in FeatureIds)
{
using var k = Registry.LocalMachine.OpenSubKey(OverridesRoot + "\\" + id, writable: false);
if ((k?.GetValue("EnabledState") as int?) != 1) { allDisabled = false; break; }
}
return !allDisabled;
}
catch { return null; }

Check notice

Code scanning / CodeQL

Generic catch clause Note

Generic catch clause.
}

public static void Apply(bool on)
{
if (on)
{
foreach (var id in FeatureIds)
{
ElevatedRegistry.DeleteHklmValue(OverridesRoot + "\\" + id, "EnabledState");
}
}
else
{
ElevatedRegistry.SetHklmMulti(FeatureIds.Select(id =>
(subkey: OverridesRoot + "\\" + id, name: "EnabledState", kind: "REG_DWORD", data: "1")));
}
}
}
Loading
Loading