Microsoft’s Recall feature captures and stores snapshots of nearly everything users do on their PC—text, images, emails, passwords, documents, *ENCRYPTED MESSAGING, LIKE SIGNAL!* and browsing history—at regular intervals. This creates a persistent, local timeline of activity that can be searched later by AI. While Microsoft claims this data stays on-device, its existence dramatically expands the attack surface for hackers, malware, and forensic snooping.
The risk isn't just hypothetical: if a threat actor gains access, Recall becomes a treasure trove of sensitive personal and corporate information—automatically organized, indexed, and searchable. Even if “disabled,” the underlying components may remain installed and collecting data silently. For any user concerned about privacy, Recall poses an unprecedented surveillance risk from within their own system.
To learn about running LOCAL and PRIVATE A.I. on your own hardware with ZERO data going over the internet, see this tip: **Running LLMs at Home for the Average User** -> https://synapticoverload.com/Tips/Details/d187314e-371c-411d-ac2e-44dce58fb29b
---
Here is a **comprehensive PowerShell script** that removes Copilot, Recall, associated files, packages, tasks, and disables future reinstalls via Group Policy or Registry edits.
---
### ✅ **Instructions**
#### 1. Copy the script below.
#### 2. Open **Notepad** (press `Windows + R`, type `notepad`, then press Enter).
#### 3. Paste the script into Notepad.
#### 4. Click **File > Save As**.
- Change "Save as type" to **All Files**.
- Name the file: `RemoveRecallCopilot.ps1`
- Save it to your **Desktop**.
#### 5. Run PowerShell as Administrator:
- Click the **Start** menu.
- Type `powershell`.
- **Right-click** "Windows PowerShell" and choose **Run as administrator**.
#### 6. In the PowerShell window, type the following **exactly** and press Enter:
```powershell
cd "$HOME\Desktop"
Set-ExecutionPolicy Bypass -Scope Process -Force
.\RemoveRecallCopilot.ps1
```
---
That’s it. The script will start, show you what's happening, and save a log file **right next to the script** on your desktop. When it's done, **restart your computer**.
And I hate to do this to you, buuut... If you need more granular help on those steps, ANY A.I. can help get you going! ;)
---
### 📜 **Script: `RemoveRecallCopilot.ps1`**
```powershell
# === Set up logging in the current directory ===
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$logPath = Join-Path -Path (Get-Location) -ChildPath "RemoveCopilotRecall_$timestamp.log"
function Log {
param ([string]$msg, [string]$color = "White")
Write-Host $msg -ForegroundColor $color
Add-Content -Path $logPath -Value $msg
}
Log "===============================" Green
Log " Removing Copilot & Recall" Green
Log " Log File: $logPath"
Log "===============================" Green
# === 1. Remove Appx Packages ===
Log "`n[1/5] Removing Copilot and Recall Appx packages..." Cyan
$patterns = "*Copilot*", "*Recall*", "*ExperienceAI*"
$found = $false
foreach ($pattern in $patterns) {
$packages = Get-AppxPackage -AllUsers | Where-Object { $_.Name -like $pattern }
if ($packages) {
$found = $true
$packages | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
Log "Removed Appx packages matching $pattern"
}
$provisioned = Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $pattern
if ($provisioned) {
$found = $true
$provisioned | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
Log "Removed provisioned packages matching $pattern"
}
}
if (-not $found) {
Log "No matching Appx/Provisioned packages found." Yellow
}
# === 2. Delete Recall Files ===
Log "`n[2/5] Deleting Recall and AI-related files..." Cyan
$paths = @(
"C:\ProgramData\Microsoft\Windows\Experience\Recall",
"$env:LOCALAPPDATA\Packages\MicrosoftWindows.Client.AI_*",
"C:\Program Files\WindowsApps\MicrosoftWindows.Client.AI_*",
"C:\ProgramData\Microsoft\Windows\Experience"
)
foreach ($path in $paths) {
if (Test-Path $path) {
try {
Log "Removing $path" Gray
takeown /f $path /r /d y | Out-Null
icacls $path /grant administrators:F /t | Out-Null
Remove-Item $path -Recurse -Force -ErrorAction Stop
Log "Deleted: $path" Green
} catch {
Log "Failed to delete: $path ($($_.Exception.Message))" Red
}
} else {
Log "Not found: $path" Yellow
}
}
# === 3. Remove Scheduled Tasks ===
Log "`n[3/5] Removing Recall and Copilot scheduled tasks..." Cyan
$tasks = Get-ScheduledTask | Where-Object {
$_.TaskName -like "*Copilot*" -or $_.TaskName -like "*Recall*"
}
if ($tasks) {
foreach ($task in $tasks) {
try {
Unregister-ScheduledTask -TaskName $task.TaskName -Confirm:$false -ErrorAction Stop
Log "Removed scheduled task: $($task.TaskName)" Green
} catch {
Log "Failed to remove task: $($task.TaskName) ($($_.Exception.Message))" Red
}
}
} else {
Log "No matching scheduled tasks found." Yellow
}
# === 4. Set Registry Keys ===
Log "`n[4/5] Setting Registry keys to block future reinstallations..." Cyan
$regPaths = @(
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot",
"HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI"
)
foreach ($path in $regPaths) {
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
Log "Created registry path: $path"
}
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot" -Name "TurnOffWindowsCopilot" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI" -Name "DisableAIDataAnalysis" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsAI" -Name "DisableRecall" -Value 1 -Type DWord
Log "Registry keys set successfully." Green
# === 5. Final Instructions ===
Log "`n[5/5] Final Step" Cyan
Log "You should reboot your system now to ensure all changes take effect." Yellow
Log "IMPORTANT: Use 'wushowhide.diagcab' to hide future Recall or Copilot updates." Magenta
Log "`nAll tasks complete." Green
Log "Log saved to: $logPath" Green
```
This will save a log file in your current directory that you run it from. I did multiple update sessions with ChatGPT on this one, testing it on my own machine.
-> I had ChatGPT write that script, btw! Now that I think about it, it would have been ironic to have CoPilot write it!