Talon Tool for debloating Windows 11 - Deep Dive into what its doing

Started by tzirf, Feb 20, 2025, 11:39 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

tzirf


UPDATE: 3/17/2025 - After deep diving into the scripts that Talon uses to make its changes I have learned a great deal more about this utility and how is functions. If you want to learn about that you just have to read my posts further down. While I do believe that Talon can be useful there is a major problem with the current utility that needs to be solved. The latest version of the utility runs a script called WPFTweaksIPv46 from Chris Titus Tech Windows Utility that edits the registry to force Windows 11 to prefer IPv4 over IPv6. This is a problem for anyone that is using IPv6, which is nearly 50% of the world as of 2025. For this reason I would actually recommend NOT USING Talon to debloat your Windows 11 installation unless you know for certain that you are not using IPv6.   


Talon is a simple utility to debloat Windows 11 in 2 clicks as described by the development team. It is available for free download from its github page

It should be noted that if you are looking to debloat Windows 11 and remove all the crap that Microsoft has bundled in the operating system you will need to use this tool on a fresh installation of Windows 11. It is not recommended to use this tool on a copy of Windows 11 that already has been put in use.

I find  it interesting how the tools have evolved over the years to debloat Windows 10 and now Windows 11. The point of this post is to provide a useful tool that I have thoroughly looked at and tested and to say that this utility does in fact debloat Windows 11 and make the operating system usable. My biggest complaint is that with Windows 10 there was only need for modest adjustments to remove all the crap that almost no one uses. With Windows 11 its like Microsoft decided to put the bloat on steroids and it became this massive undertaking to manually debloat the operating system. So its nice to see that a utility exists that can do it for you in a couple clicks.

I have to hand it to the development team behind this utility. They really paid close attention to detail here. The utility will remove and prevent all those obnoxious useless updates that Microsoft likes to push out to put back what you have removed from the operating system; mostly worthless apps that come bundled with Windows 11, but almost no one utilizes. Additionally it fully removes Microsoft Edge and prevents it from being automatically reinstalled by Windows Update. The options remains for the user to install Edge if they choose however. This can safely be completed because talon asks which browser you would like to use and gives you the option to choose from Chrome, Edge, Brave, Firefox, Librewolf and only removes Edge if another browser is picked. Additionally some other things worth noting are the UI adjustments, where it makes the start menu cleaner and places it back on the left hand side of the taskbar. As well as removing copilot AI aka stupid Cortana. Yes I said it, Cortana was absolutely stupid. The amount of people that found Microsoft's virtual assistant useful can probably be counted on one hand. Sure it has been discontinued as of 2023 and was replaced with Microsoft Copilot, yet another rubbish AI-powered virtual assistant.

The only things I don't like about this utility is its adjustment of the background picture & the taskbar UI changes that it makes. Both of these can be changed back using Windows Themes. The reason I don't like the included UI changes are due to the graphical issues they introduce. Stuff like this isn't functional for users and causes headaches as Windows is one giant graphical UI and when stuff doesn't show up properly its a major problem. Peronally I think the developer should remove this change and forget about customizing Windows 11 theme and just focus on the original intent of the tool, to debloat it.  Additionally it should be noted that due to the heavy use of power scripts and the compiler chosen for the windows executable being this is python language, this will definitely be flagged by antivirus as malware. The good news is the code is open source and can be reviewed and in my testing I found no malicious activity. I think this is a fantastic utility that many out there will find useful and perhaps this will also allow those who didn't plan on moving to Windows 11 due to all the bloat to make the jump now, I know I am one of those people. The idea of having to deal with all the garbage in Windows 11 didn't have me lining up to install it anytime soon.

I was unable to find a full detailed list of what this removes from Windows 11 on the github page, which is unfortunate and maybe the developers will add that at some point. That being said for those who are more visual as in seeing the changed/difference I plan on doing a more in depth look  at this and making a video to showcase the changes.

tzirf

#1
I made a video today showing how to use Talon, and the before and after result of using it. After recording the video twice I have decided not to record it a third time and to just upload it. I ran into a bunch of hiccups in the video that I am just going to leave in there because others may run into these problems as well. To be clear the issues were not related to Talon utility. These issues were directly related to Windows Defender blocking Talon or interrupting it after it began running. I did run some additional tests and found that after installing Windows 11 Pro on another computer these problems didn't show up, but I did notice during that installation Windows update downloaded and installed an update for Windows 11 that changed the build version to 26100.3476, where my original testing was on Windows 11 Build version 26100.2033. After trying to duplicate the errors I decided it wasn't worth investigating further. I am mentioning it because under build 26100.2033 Defender becomes a royal pain in the butt. Even after disabling its protection it was still detecting and removing Talon. I found the only way to prevent this was to manually add Talon to the exceptions list.

On a side note, a couple comments I noticed online on reddit and some other youtube videos people were claiming that this removed the Microsoft Store and blocks you from reinstalling apps from it. I don't know if this was recently changed, but the current version of Talon doesn't do this. You can see it in my video I show the Microsoft Store working and I reinstall some apps that Talon removed no problem. As for Microsoft Edge you need to download the installation file from Microsoft website to reinstall that. The Microsoft Store thinks the app is already installed and doesn't give the option to install it.

I state this in the video, but I want to state it here as well. Talon is detected by antivirus and Windows Defender as malware/hacking tool and will be removed automatically. This is a false positive. I have already looked into the executable and the scripts that Talon downloads and uses and there is nothing malicious or nefarious about them. If you would like the opinion of a third party (someone not connected to the development of Talon) I think John Hammond has a great video on this, where he dives into whether this is malware or not. The last thing I am going to say about this and there are 2 primary reasons why antivirus detects Talon as malware, the first is its lacking a digital signature and the 2nd is its behavior; specifically how it calls/downloads the power-shell scripts it uses.   


For those interested, Talon does create a log file that shows everything it does to Windows 11. That full log file has been attached to this post. Unfortunately its much to big for me to include in a post. I will say this the log file is extensive and detailed, which is nice because you can see exactly what is being done on the system.

As for Talon, I find this tool highly useful! Especially for those who are not tech savvy. I think the 2 things that the developer should adjust is, 1 forget changing the theme to a black theme and 2 don't change the wallpaper. Neither of these changes fall in line with their mission statement, of wanting to debloat Windows 11 for users that cannot use more advanced tools. What it does do is change something that probably 99% of people will not want. They said they wanted a tool that a grandmother could run and I am here to tell you that my grandmother would be calling me within 3 seconds asking how to get her picture of her family back as her wallpaper and how to change the Windows UI back to blue if she ran this tool. I am willing to bet that the MAJORITY of people that this tool would be used for would fall into this category. If the developer wants to keep that feature as part of Talon, then give people a choice so at least they have informed consent. The current version of this tools DOESN'T MENTION ANYTHING about changing the wallpaper and windows theme to black. I think its a bit strange that the developer made this choice, when they are so obviously against Microsoft changing settings and installing apps without your permission.

Some basic numbers here to illustrate the difference between a fresh installation of Windows 11 before and after running Talon.

Fresh Installation:
152 processes running
3.2GB of System Memory Used on start up

Fresh Installation after running Talon:
85 Processes running
2.1GB of system memory used on start up

The amount of processes that Talon removes is huge. The amount of system memory saved is also significant on a Fresh installation of Windows. This just goes to show much extra resources are being utilized by the junk that comes bundled and preinstalled with Windows 11.

That being said, if you want to watch the video you can find it below. Turned into a much longer video than I anticipated due to some issues I ran into...






tzirf

#2
I decided to do some follow up posts and fair warning, these are going to be long. I am going to dive through all the scripts that Talon is using to dispel any false beliefs that Talon is using some kind of wizardry to de-bloat Windows 11. The truth is its not, its just using standard PowerShell Scripts. Additionally I am doing this because having this level of transparency in my opinion is a good idea for a utility like this. 

Before I get into that I WANT TO BE CLEAR, I AM NOT RECOMMENDING OR SUGGESTING THAT YOU USE TALON. For some odd reason people think because I made a video/forum post about TALON that I am endorsing the utility. I am in no way shape or form endorsing it. However I am going to correct false information about the utility, just as I would about anything else because I think its important that false information be corrected. We have enough false information in the world and it doesn't benefit anyone.

Now lets go over how Talon is removing Microsoft Edge, adjusting Windows UI settings/features, removing all the default apps and blocking Windows 11 feature updates. Talon is using 4 PowerShell scripts and 1 json to call more PowerShell scripts to achieve all of this. Those scripts are as follows:

edge_vanisher.ps1 - Used to removed Microsoft Edge
uninstall_oo.ps1 - Used to remove OneDrive & Outlook
Win11Debloat.ps1 - Used to remove apps, disable telemetry and UI changes. Github Page 
update_policy_changer.ps1 - Used to block feature updates 
barebones.json - used to call upon Chris Titus Tech Windows Toolbox (which uses yes you guessed it more PowerShell scripts) (Github Page) and makes use of the following scrips from that toolbox:

WPFTweaksWifi
WPFTweaksHome
WPFTweaksRemoveEdge
WPFTweaksRemoveHomeGallery
WPFTweaksDisableLMS1
WPFTweaksIPv46
WPFTweaksDeBloat
WPFTweaksConsumerFeatures
WPFTweaksTele
WPFTweaksDisplay
WPFTweaksAH
WPFTweaksRightClickMenu
WPFTweaksRemoveCopilot
WPFTweaksLoc
WPFTweaksRemoveOnedrive
WPFTweaksServices
WPFTweaksDeleteTempFiles
WPFTweaksRecallOff
WPFTweaksDisableBGapps
WPFFeaturesSandbox
WPFFeatureshyperv 


It should be noted that based on the configuration/hardware used in the computer some of the scripts from Chris Titus Tech may or may not be used during the process.

Lets first look at the edge_vanisher.ps1. This is a PowerShell script...

# Edge Vanisher
# filename: edge_vanisher.ps1
#
# This script's purpose is to remove Edge from Windows 11 systems and prevent the system from reinstalling it.
# The user can still reinstall Edge by downloading it from Microsoft's website.


# Administrator rights check
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Host "This script must be run with administrator rights!" -ForegroundColor Red
    Break
}
Write-Host "Edge Vanisher started" -ForegroundColor Yellow
Write-Host "Starting Microsoft Edge uninstallation process..." -ForegroundColor Yellow
# Terminate Edge processes
Write-Host "Terminating Edge processes..." -ForegroundColor Cyan
$processes = Get-Process | Where-Object { $_.Name -like "*edge*" }
if ($processes) {
    $processes | ForEach-Object {
        Write-Host "Terminated process: $($_.Name) (PID: $($_.Id))" -ForegroundColor Cyan
    }
    $processes | Stop-Process -Force -ErrorAction SilentlyContinue
} else {
    Write-Host "No running Edge processes found." -ForegroundColor Cyan
}
# Uninstall Edge with setup.exe
Write-Host "Uninstalling Edge with setup..." -ForegroundColor Cyan
$edgePath = "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\*\Installer\setup.exe"
if (Test-Path $edgePath) {
    Start-Process -FilePath $(Resolve-Path $edgePath) -ArgumentList "--uninstall --system-level --verbose-logging --force-uninstall" -Wait
}
# Remove Start Menu shortcuts
Write-Host "Removing Start Menu shortcuts..." -ForegroundColor Cyan
$startMenuPaths = @(
    "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk",
    "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk",
    "$env:ALLUSERSPROFILE\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk"
)
foreach ($path in $startMenuPaths) {
    if (Test-Path $path) {
        Write-Host "Deleting: $path" -ForegroundColor Cyan
        Remove-Item -Path $path -Force -ErrorAction SilentlyContinue
        if (!(Test-Path $path)) {
            Write-Host "Successfully deleted: $path" -ForegroundColor Green
        } else {
            Write-Host "Failed to delete: $path" -ForegroundColor Red
        }
    }
}
# Clean Edge folders
Write-Host "Cleaning Edge folders..." -ForegroundColor Cyan
$edgePaths = @(
    "$env:LOCALAPPDATA\Microsoft\Edge",
    "$env:PROGRAMFILES\Microsoft\Edge",
    "${env:ProgramFiles(x86)}\Microsoft\Edge",
    "${env:ProgramFiles(x86)}\Microsoft\EdgeUpdate",
    "${env:ProgramFiles(x86)}\Microsoft\EdgeCore",
    "$env:LOCALAPPDATA\Microsoft\EdgeUpdate",
    "$env:PROGRAMDATA\Microsoft\EdgeUpdate",
    "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk",
    "$env:PUBLIC\Desktop\Microsoft Edge.lnk"
)
foreach ($path in $edgePaths) {
    if (Test-Path $path) {
        Write-Host "Cleaning: $path" -ForegroundColor Cyan
        takeown /F $path /R /D Y | Out-Null
        icacls $path /grant administrators:F /T | Out-Null
        Remove-Item -Path $path -Recurse -Force -ErrorAction SilentlyContinue
    }
}
# Clean Edge registry entries
Write-Host "Cleaning Edge registry entries..." -ForegroundColor Cyan
$edgeRegKeys = @(
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update",
    "HKLM:\SOFTWARE\Microsoft\EdgeUpdate",
    "HKCU:\Software\Microsoft\Edge",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeUpdate",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeUpdate",
    "HKLM:\SOFTWARE\Microsoft\Edge",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Edge",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update"
)
foreach ($key in $edgeRegKeys) {
    if (Test-Path $key) {
        Write-Host "Deleting registry key: $key" -ForegroundColor Cyan
        Remove-Item -Path $key -Recurse -Force -ErrorAction SilentlyContinue
        if (!(Test-Path $key)) {
            Write-Host "Successfully deleted registry key: $key" -ForegroundColor Green
        } else {
            Write-Host "Failed to delete registry key: $key" -ForegroundColor Red
        }
    }
}
# Force uninstall EdgeUpdate
$edgeUpdatePath = "${env:ProgramFiles(x86)}\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"
if (Test-Path $edgeUpdatePath) {
    Start-Process $edgeUpdatePath -ArgumentList "/uninstall" -Wait -ErrorAction SilentlyContinue
}
# Remove EdgeUpdate services
$services = @(
    "edgeupdate",
    "edgeupdatem",
    "MicrosoftEdgeElevationService"
)
foreach ($service in $services) {
    Stop-Service -Name $service -Force -ErrorAction SilentlyContinue
    sc.exe delete $service
}
# Finally force uninstall Edge
$edgeSetup = Get-ChildItem -Path "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\*\Installer\setup.exe" -ErrorAction SilentlyContinue
if ($edgeSetup) {
    Start-Process $edgeSetup.FullName -ArgumentList "--uninstall --system-level --verbose-logging --force-uninstall" -Wait
}
# Restart Explorer
Stop-Process -Name explorer -Force -ErrorAction SilentlyContinue
Start-Process explorer
Write-Host "`nMicrosoft Edge uninstallation process completed!" -ForegroundColor Green
# Create empty Edge folders and protect them
Write-Host "Creating protective Edge folders..." -ForegroundColor Cyan
$protectiveFolders = @(
    @{
        Base = "${env:ProgramFiles(x86)}\Microsoft\Edge"
        App = "${env:ProgramFiles(x86)}\Microsoft\Edge\Application"
        CreateSubFolder = $true
    },
    @{
        Base = "${env:ProgramFiles(x86)}\Microsoft\EdgeCore"
        CreateSubFolder = $false
    }
)
foreach ($folder in $protectiveFolders) {
    # Create folders
    New-Item -Path $folder.Base -ItemType Directory -Force | Out-Null
    if ($folder.CreateSubFolder) {
        New-Item -Path $folder.App -ItemType Directory -Force | Out-Null
    }
    Write-Host "Processing protective folder: $($folder.Base)" -ForegroundColor Cyan
    # Get current username
    $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    # Apply permissions to the base folder only for EdgeCore
    if (!$folder.CreateSubFolder) {
        try {
            $acl = New-Object System.Security.AccessControl.DirectorySecurity
           
            # Set ownership
            $acl.SetOwner([System.Security.Principal.NTAccount]$currentUser)
           
            # Disable inheritance
            $acl.SetAccessRuleProtection($true, $false)
            # Add full control permission including take ownership permission
            $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $currentUser,
                "FullControl,TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Allow"
            )
            # Add security permissions
            $acl.AddAccessRule($accessRule)
            # Block take ownership permission for SYSTEM, Administrators and Trusted Installer
            $systemSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
            $adminsSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
            $trustedInstallerSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464")
            $authenticatedUsersSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
           
            $denyRule1 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $systemSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
           
            $denyRule2 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $adminsSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
            $denyRule3 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $trustedInstallerSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
            $denyRule4 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $authenticatedUsersSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
            # Add deny rules
            $acl.AddAccessRule($denyRule1)
            $acl.AddAccessRule($denyRule2)
            $acl.AddAccessRule($denyRule3)
            $acl.AddAccessRule($denyRule4)
            # Apply security permissions
            Set-Acl $folder.Base $acl -ErrorAction Stop
            Write-Host "Success: $($folder.Base)" -ForegroundColor Green
        }
        catch {
            Write-Host "Error occurred: $($folder.Base) - $_" -ForegroundColor Red
        }
    }
    else {
        # Process all items recursively for Edge folder
        Get-ChildItem -Path $folder.Base -Recurse | ForEach-Object {
            try {
                $acl = New-Object System.Security.AccessControl.DirectorySecurity
               
                # Set ownership
                $acl.SetOwner([System.Security.Principal.NTAccount]$currentUser)
               
                # Disable inheritance
                $acl.SetAccessRuleProtection($true, $false)
                # Add full control permission including take ownership permission
                $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $currentUser,
                    "FullControl,TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Allow"
                )
                # Add security permissions
                $acl.AddAccessRule($accessRule)
                # Block take ownership permission for SYSTEM, Administrators and Trusted Installer
                $systemSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
                $adminsSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
                $trustedInstallerSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464")
                $authenticatedUsersSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
               
                $denyRule1 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $systemSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
               
                $denyRule2 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $adminsSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
                $denyRule3 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $trustedInstallerSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
                $denyRule4 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $authenticatedUsersSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
                # Add deny rules
                $acl.AddAccessRule($denyRule1)
                $acl.AddAccessRule($denyRule2)
                $acl.AddAccessRule($denyRule3)
                $acl.AddAccessRule($denyRule4)
                # Apply security permissions
                Set-Acl $_.FullName $acl -ErrorAction Stop
                Write-Host "Success: $($_.FullName)" -ForegroundColor Green
            }
            catch {
                Write-Host "Error occurred: $($_.FullName) - $_" -ForegroundColor Red
            }
        }
    }
}
Write-Host "Protective folders created and security settings configured for Edge and EdgeCore." -ForegroundColor Green

tzirf

#3
So starting at the top of the script we see that the developers of Talon made good use of the comments and tell us that this scripts purpose is to remove edge from Windows 11 and prevent the system from reinstalling it. They even mention that in order to reinstall it you must download Edge from Microsoft's website. As for what this script is doing, once again I have to give credit to the developers, they provide comments in each section of the script to let the user know what it does. Now as for how this is removing edge taking a quick look at the code.
# Uninstall Edge with setup.exe
Write-Host "Uninstalling Edge with setup..." -ForegroundColor Cyan
$edgePath = "${env:ProgramFiles(x86)}\Microsoft\Edge\Application\*\Installer\setup.exe"
if (Test-Path $edgePath) {
    Start-Process -FilePath $(Resolve-Path $edgePath) -ArgumentList "--uninstall --system-level --verbose-logging --force-uninstall" -Wait
This is the same PowerShell script that has been used for years to uninstall Edge. It makes use of the setup.exe for edge that Microsoft provides and tells the system to uninstall Edge. This method isn't anything special, in fact its the same uninstall script minus the "--force-uninstall" argument that is used by Windows 11 to uninstall Edge in the EU. Unfortunately the rest of the world needs this argument because Microsoft has decided to block the uninstall option in Windows 11.

This part of the script removes the start menu shortcuts for edge:
# Remove Start Menu shortcuts
Write-Host "Removing Start Menu shortcuts..." -ForegroundColor Cyan
$startMenuPaths = @(
    "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk",
    "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk",
    "$env:ALLUSERSPROFILE\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk


This part of the script removes the folders created for Edge that are located in APPDATA, Program Files X86 and ProgramData directories:
# Clean Edge folders
Write-Host "Cleaning Edge folders..." -ForegroundColor Cyan
$edgePaths = @(
    "$env:LOCALAPPDATA\Microsoft\Edge",
    "$env:PROGRAMFILES\Microsoft\Edge",
    "${env:ProgramFiles(x86)}\Microsoft\Edge",
    "${env:ProgramFiles(x86)}\Microsoft\EdgeUpdate",
    "${env:ProgramFiles(x86)}\Microsoft\EdgeCore",
    "$env:LOCALAPPDATA\Microsoft\EdgeUpdate",
    "$env:PROGRAMDATA\Microsoft\EdgeUpdate",
    "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Edge.lnk",
    "$env:PUBLIC\Desktop\Microsoft Edge.lnk"


This part of the script removes Edge registry entries:
# Clean Edge registry entries
Write-Host "Cleaning Edge registry entries..." -ForegroundColor Cyan
$edgeRegKeys = @(
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update",
    "HKLM:\SOFTWARE\Microsoft\EdgeUpdate",
    "HKCU:\Software\Microsoft\Edge",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe",
    "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeUpdate",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft EdgeUpdate",
    "HKLM:\SOFTWARE\Microsoft\Edge",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Edge",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge",
    "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge Update"


This part of the script removes Edgeupdate service:
# Force uninstall EdgeUpdate
$edgeUpdatePath = "${env:ProgramFiles(x86)}\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe"
if (Test-Path $edgeUpdatePath) {
    Start-Process $edgeUpdatePath -ArgumentList "/uninstall" -Wait -ErrorAction SilentlyContinue
}
# Remove EdgeUpdate services
$services = @(
    "edgeupdate",
    "edgeupdatem",
    "MicrosoftEdgeElevationService"
)
foreach ($service in $services) {
    Stop-Service -Name $service -Force -ErrorAction SilentlyContinue
    sc.exe delete $service


This part of the script creates directories that prevent Windows update from reinstalling Edge automatically by forcing ownership and creating access control policies where only the User account can reinstall Edge by using a file system access rule, where the file system is denied:

foreach ($folder in $protectiveFolders) {
    # Create folders
    New-Item -Path $folder.Base -ItemType Directory -Force | Out-Null
    if ($folder.CreateSubFolder) {
        New-Item -Path $folder.App -ItemType Directory -Force | Out-Null
    }
    Write-Host "Processing protective folder: $($folder.Base)" -ForegroundColor Cyan
    # Get current username
    $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
    # Apply permissions to the base folder only for EdgeCore
    if (!$folder.CreateSubFolder) {
        try {
            $acl = New-Object System.Security.AccessControl.DirectorySecurity
           
            # Set ownership
            $acl.SetOwner([System.Security.Principal.NTAccount]$currentUser)
           
            # Disable inheritance
            $acl.SetAccessRuleProtection($true, $false)
            # Add full control permission including take ownership permission
            $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $currentUser,
                "FullControl,TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Allow"
            )
            # Add security permissions
            $acl.AddAccessRule($accessRule)
            # Block take ownership permission for SYSTEM, Administrators and Trusted Installer
            $systemSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
            $adminsSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
            $trustedInstallerSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464")
            $authenticatedUsersSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
           
            $denyRule1 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $systemSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
           
            $denyRule2 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $adminsSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
            $denyRule3 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $trustedInstallerSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
            $denyRule4 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                $authenticatedUsersSid,
                "TakeOwnership,ChangePermissions",
                "ContainerInherit,ObjectInherit",
                "None",
                "Deny"
            )
            # Add deny rules
            $acl.AddAccessRule($denyRule1)
            $acl.AddAccessRule($denyRule2)
            $acl.AddAccessRule($denyRule3)
            $acl.AddAccessRule($denyRule4)
            # Apply security permissions
            Set-Acl $folder.Base $acl -ErrorAction Stop
            Write-Host "Success: $($folder.Base)" -ForegroundColor Green
        }
        catch {
            Write-Host "Error occurred: $($folder.Base) - $_" -ForegroundColor Red
        }
    }
    else {
        # Process all items recursively for Edge folder
        Get-ChildItem -Path $folder.Base -Recurse | ForEach-Object {
            try {
                $acl = New-Object System.Security.AccessControl.DirectorySecurity
               
                # Set ownership
                $acl.SetOwner([System.Security.Principal.NTAccount]$currentUser)
               
                # Disable inheritance
                $acl.SetAccessRuleProtection($true, $false)
                # Add full control permission including take ownership permission
                $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $currentUser,
                    "FullControl,TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Allow"
                )
                # Add security permissions
                $acl.AddAccessRule($accessRule)
                # Block take ownership permission for SYSTEM, Administrators and Trusted Installer
                $systemSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
                $adminsSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
                $trustedInstallerSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464")
                $authenticatedUsersSid = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
               
                $denyRule1 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $systemSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
               
                $denyRule2 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $adminsSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
                $denyRule3 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $trustedInstallerSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
                $denyRule4 = New-Object System.Security.AccessControl.FileSystemAccessRule(
                    $authenticatedUsersSid,
                    "TakeOwnership,ChangePermissions",
                    "ContainerInherit,ObjectInherit",
                    "None",
                    "Deny"
                )
                # Add deny rules
                $acl.AddAccessRule($denyRule1)
                $acl.AddAccessRule($denyRule2)
                $acl.AddAccessRule($denyRule3)
                $acl.AddAccessRule($denyRule4)
                # Apply security permissions
                Set-Acl $_.FullName $acl -ErrorAction Stop
                Write-Host "Success: $($_.FullName)" -ForegroundColor Green
            }
            catch {
                Write-Host "Error occurred: $($_.FullName) - $_" -ForegroundColor Red
            }
        }
    }
}
   

tzirf

The next script Talon uses is uninstall_oo.ps1 and its used to remove OneDrive and Outlook from Windows 11.

# Uninstall OO
# filename: uninstall_oo.ps1
#
# This script is designed to uninstall One Drive and Outlook from Windows 11 systems.
# The user can still reinstall these programs from Microsoft's website at any time.

# Run with highest privileges
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    try {
        Start-Process PowerShell -Verb RunAs "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -WindowStyle Hidden
        exit
    }
    catch {
        exit
    }
}

try {
    Set-ExecutionPolicy Bypass -Scope Process -Force
    $ErrorActionPreference = 'SilentlyContinue'

    # Close Outlook processes
    Get-Process | Where-Object { $_.ProcessName -like "*outlook*" } | Stop-Process -Force
    Start-Sleep -Seconds 2

    # Remove Outlook apps
    Get-AppxPackage *Microsoft.Office.Outlook* | Remove-AppxPackage
    Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -like "*Microsoft.Office.Outlook*"} | Remove-AppxProvisionedPackage -Online
    Get-AppxPackage *Microsoft.OutlookForWindows* | Remove-AppxPackage
    Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -like "*Microsoft.OutlookForWindows*"} | Remove-AppxProvisionedPackage -Online

    # Remove Outlook folders
    $windowsAppsPath = "C:\Program Files\WindowsApps"
    $outlookFolders = Get-ChildItem -Path $windowsAppsPath -Directory | Where-Object { $_.Name -like "Microsoft.OutlookForWindows*" }
    foreach ($folder in $outlookFolders) {
        $folderPath = Join-Path $windowsAppsPath $folder.Name
        takeown /f $folderPath /r /d Y | Out-Null
        icacls $folderPath /grant administrators:F /t | Out-Null
        Remove-Item -Path $folderPath -Recurse -Force
    }

    # Remove shortcuts
    $shortcutPaths = @(
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Outlook.lnk",
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Outlook.lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Outlook.lnk",
        "$env:PUBLIC\Desktop\Outlook.lnk",
        "$env:USERPROFILE\Desktop\Outlook.lnk",
        "$env:PUBLIC\Desktop\Microsoft Outlook.lnk",
        "$env:USERPROFILE\Desktop\Microsoft Outlook.lnk",
        "$env:PUBLIC\Desktop\Outlook (New).lnk",
        "$env:USERPROFILE\Desktop\Outlook (New).lnk",
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook (New).lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Outlook (New).lnk"
    )
    $shortcutPaths | ForEach-Object { Remove-Item $_ -Force }

    # Taskbar cleanup
    Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Value 0 -Type DWord -Force

    $registryPaths = @(
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\TaskbarMRU",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\TaskBar",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
    )
    foreach ($path in $registryPaths) {
        if (Test-Path $path) {
            @("Favorites", "FavoritesResolve", "FavoritesChanges", "FavoritesRemovedChanges", "TaskbarWinXP", "PinnedItems") |
            ForEach-Object { Remove-ItemProperty -Path $path -Name $_ -ErrorAction SilentlyContinue }
        }
    }

    Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml" -Force
    Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\iconcache*" -Force
    Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\thumbcache*" -Force

    # OneDrive removal
    Get-Process | Where-Object { $_.ProcessName -like "*onedrive*" } | Stop-Process -Force
    if (Test-Path "$env:SystemRoot\SysWOW64\OneDriveSetup.exe") {
        & "$env:SystemRoot\SysWOW64\OneDriveSetup.exe" /uninstall
    } elseif (Test-Path "$env:SystemRoot\System32\OneDriveSetup.exe") {
        & "$env:SystemRoot\System32\OneDriveSetup.exe" /uninstall
    }

    @(
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk",
        "$env:PUBLIC\Desktop\OneDrive.lnk",
        "$env:USERPROFILE\Desktop\OneDrive.lnk",
        "$env:USERPROFILE\OneDrive",
        "$env:LOCALAPPDATA\Microsoft\OneDrive",
        "$env:ProgramData\Microsoft\OneDrive",
        "$env:SystemDrive\OneDriveTemp"
    ) | ForEach-Object { Remove-Item $_ -Force -Recurse }

    @(
        "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}",
        "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
    ) | ForEach-Object { Remove-Item -Path $_ -Recurse -Force }

    # Restart Explorer
    Get-Process explorer | Stop-Process -Force
    Start-Sleep -Seconds 2
    Start-Process explorer
}
catch {}
exit

You should notice a pattern here as the developer has made sure to include comments explaining what each part of the PowerShell script is used for. I don't think I have to go over this in more detail, but I will separate out the scripts below to show what they are used for.

The following is used to remove Outlook App, its associated folders and shortcuts:

    # Remove Outlook apps
    Get-AppxPackage *Microsoft.Office.Outlook* | Remove-AppxPackage
    Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -like "*Microsoft.Office.Outlook*"} | Remove-AppxProvisionedPackage -Online
    Get-AppxPackage *Microsoft.OutlookForWindows* | Remove-AppxPackage
    Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -like "*Microsoft.OutlookForWindows*"} | Remove-AppxProvisionedPackage -Online

    # Remove Outlook folders
    $windowsAppsPath = "C:\Program Files\WindowsApps"
    $outlookFolders = Get-ChildItem -Path $windowsAppsPath -Directory | Where-Object { $_.Name -like "Microsoft.OutlookForWindows*" }
    foreach ($folder in $outlookFolders) {
        $folderPath = Join-Path $windowsAppsPath $folder.Name
        takeown /f $folderPath /r /d Y | Out-Null
        icacls $folderPath /grant administrators:F /t | Out-Null
        Remove-Item -Path $folderPath -Recurse -Force
    }

    # Remove shortcuts
    $shortcutPaths = @(
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook.lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Outlook.lnk",
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Outlook.lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Microsoft Office\Outlook.lnk",
        "$env:PUBLIC\Desktop\Outlook.lnk",
        "$env:USERPROFILE\Desktop\Outlook.lnk",
        "$env:PUBLIC\Desktop\Microsoft Outlook.lnk",
        "$env:USERPROFILE\Desktop\Microsoft Outlook.lnk",
        "$env:PUBLIC\Desktop\Outlook (New).lnk",
        "$env:USERPROFILE\Desktop\Outlook (New).lnk",
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Outlook (New).lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Outlook (New).lnk"
    )
    $shortcutPaths | ForEach-Object { Remove-Item $_ -Force }


The following is used to cleanup the Taskbar:

# Taskbar cleanup
    Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Value 0 -Type DWord -Force

    $registryPaths = @(
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\TaskbarMRU",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\TaskBar",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
    )
    foreach ($path in $registryPaths) {
        if (Test-Path $path) {
            @("Favorites", "FavoritesResolve", "FavoritesChanges", "FavoritesRemovedChanges", "TaskbarWinXP", "PinnedItems") |
            ForEach-Object { Remove-ItemProperty -Path $path -Name $_ -ErrorAction SilentlyContinue }
        }
    }

    Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Shell\LayoutModification.xml" -Force
    Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\iconcache*" -Force
    Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\thumbcache*" -Force

The following removes OneDrive and removes associated shortcuts and directories:

# OneDrive removal
    Get-Process | Where-Object { $_.ProcessName -like "*onedrive*" } | Stop-Process -Force
    if (Test-Path "$env:SystemRoot\SysWOW64\OneDriveSetup.exe") {
        & "$env:SystemRoot\SysWOW64\OneDriveSetup.exe" /uninstall
    } elseif (Test-Path "$env:SystemRoot\System32\OneDriveSetup.exe") {
        & "$env:SystemRoot\System32\OneDriveSetup.exe" /uninstall
    }

    @(
        "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk",
        "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk",
        "$env:PUBLIC\Desktop\OneDrive.lnk",
        "$env:USERPROFILE\Desktop\OneDrive.lnk",
        "$env:USERPROFILE\OneDrive",
        "$env:LOCALAPPDATA\Microsoft\OneDrive",
        "$env:ProgramData\Microsoft\OneDrive",
        "$env:SystemDrive\OneDriveTemp"]]]]
    ) | ForEach-Object { Remove-Item $_ -Force -Recurse }

    @(
        "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}",
        "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}",
        "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
    ) | ForEach-Object { Remove-Item -Path $_ -Recurse -Force }


tzirf

The next script Talon uses is Win11Debloat.ps1 and its used to remove apps, telemetry, tracking, suggested content, Bing web search, copilot, Recall and makes several adjustments to the UI. The developer of this script provides full details of what it does on the GitHub page, so I recommend checking that out if you want more information. As for the script Talon is running it can be viewed below:

param (
    [switch]$Silent,
    [switch]$Verbose,
    [switch]$Sysprep,
    [string]$User,
    [switch]$RunAppConfigurator,
    [switch]$RunDefaults, [switch]$RunWin11Defaults,
    [switch]$RunSavedSettings,
    [switch]$RemoveApps,
    [switch]$RemoveAppsCustom,
    [switch]$RemoveGamingApps,
    [switch]$RemoveCommApps,
    [switch]$RemoveDevApps,
    [switch]$RemoveW11Outlook,
    [switch]$ForceRemoveEdge,
    [switch]$DisableDVR,
    [switch]$DisableTelemetry,
    [switch]$DisableBingSearches, [switch]$DisableBing,
    [switch]$DisableDesktopSpotlight,
    [switch]$DisableLockscrTips, [switch]$DisableLockscreenTips,
    [switch]$DisableWindowsSuggestions, [switch]$DisableSuggestions,
    [switch]$ShowHiddenFolders,
    [switch]$ShowKnownFileExt,
    [switch]$HideDupliDrive,
    [switch]$TaskbarAlignLeft,
    [switch]$HideSearchTb, [switch]$ShowSearchIconTb, [switch]$ShowSearchLabelTb, [switch]$ShowSearchBoxTb,
    [switch]$HideTaskview,
    [switch]$DisableStartRecommended,
    [switch]$DisableCopilot,
    [switch]$DisableRecall,
    [switch]$DisableWidgets, [switch]$HideWidgets,
    [switch]$DisableChat, [switch]$HideChat,
    [switch]$ClearStart,
    [switch]$ClearStartAllUsers,
    [switch]$RevertContextMenu,
    [switch]$DisableMouseAcceleration,
    [switch]$HideHome,
    [switch]$HideGallery,
    [switch]$ExplorerToHome,
    [switch]$ExplorerToThisPC,
    [switch]$ExplorerToDownloads,
    [switch]$ExplorerToOneDrive,
    [switch]$DisableOnedrive, [switch]$HideOnedrive,
    [switch]$Disable3dObjects, [switch]$Hide3dObjects,
    [switch]$DisableMusic, [switch]$HideMusic,
    [switch]$DisableIncludeInLibrary, [switch]$HideIncludeInLibrary,
    [switch]$DisableGiveAccessTo, [switch]$HideGiveAccessTo,
    [switch]$DisableShare, [switch]$HideShare
)

# Show error if current powershell environment does not have LanguageMode set to FullLanguage
if ($ExecutionContext.SessionState.LanguageMode -ne "FullLanguage") {
   Write-Host "Error: Win11Debloat is unable to run on your system. Powershell execution is restricted by security policies" -ForegroundColor Red
   Write-Output ""
   Write-Output "Press enter to exit..."
   Read-Host | Out-Null
   Exit
}

Clear-Host
Write-Output "-------------------------------------------------------------------------------------------"
Write-Output " Win11Debloat Script - Get"
Write-Output "-------------------------------------------------------------------------------------------"

Write-Output "> Downloading Win11Debloat..."

# Download latest version of Win11Debloat from github as zip archive
Invoke-WebRequest http://github.com/raphire/win11debloat/archive/master.zip -OutFile "$env:TEMP/win11debloat-temp.zip"

# Remove old script folder if it exists, except for CustomAppsList and SavedSettings files
if (Test-Path "$env:TEMP/Win11Debloat/Win11Debloat-master") {
    Write-Output ""
    Write-Output "> Cleaning up old Win11Debloat folder..."
    Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings | Remove-Item -Recurse -Force
}

Write-Output ""
Write-Output "> Unpacking..."

# Unzip archive to Win11Debloat folder
Expand-Archive "$env:TEMP/win11debloat-temp.zip" "$env:TEMP/Win11Debloat"

# Remove archive
Remove-Item "$env:TEMP/win11debloat-temp.zip"

# Make list of arguments to pass on to the script
$arguments = $($PSBoundParameters.GetEnumerator() | ForEach-Object {
    if ($_.Value -eq $true) {
        "-$($_.Key)"
    }
    else {
         "-$($_.Key) ""$($_.Value)"""
    }
})

Write-Output ""
Write-Output "> Running Win11Debloat..."

# Run Win11Debloat script with the provided arguments
$debloatProcess = Start-Process powershell.exe -PassThru -ArgumentList "-executionpolicy bypass -File $env:TEMP\Win11Debloat\Win11Debloat-master\Win11Debloat.ps1 $arguments" -Verb RunAs

# Wait for the process to finish before continuing
if ($null -ne $debloatProcess) {
    $debloatProcess.WaitForExit()
}

# Remove all remaining script files, except for CustomAppsList and SavedSettings files
if (Test-Path "$env:TEMP/Win11Debloat/Win11Debloat-master") {
    Write-Output ""
    Write-Output "> Cleaning up..."

    # Cleanup, remove Win11Debloat directory
    Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings | Remove-Item -Recurse -Force
}

Write-Output ""

The very first part of the script sets the parameters for Win11Debloat to use. I am not going to go into details about each one of these parameters and the reason for that is because the developer provides those details already on the GitHub Page
param (
    [switch]$Silent,
    [switch]$Verbose,
    [switch]$Sysprep,
    [string]$User,
    [switch]$RunAppConfigurator,
    [switch]$RunDefaults, [switch]$RunWin11Defaults,
    [switch]$RunSavedSettings,
    [switch]$RemoveApps,
    [switch]$RemoveAppsCustom,
    [switch]$RemoveGamingApps,
    [switch]$RemoveCommApps,
    [switch]$RemoveDevApps,
    [switch]$RemoveW11Outlook,
    [switch]$ForceRemoveEdge,
    [switch]$DisableDVR,
    [switch]$DisableTelemetry,
    [switch]$DisableBingSearches, [switch]$DisableBing,
    [switch]$DisableDesktopSpotlight,
    [switch]$DisableLockscrTips, [switch]$DisableLockscreenTips,
    [switch]$DisableWindowsSuggestions, [switch]$DisableSuggestions,
    [switch]$ShowHiddenFolders,
    [switch]$ShowKnownFileExt,
    [switch]$HideDupliDrive,
    [switch]$TaskbarAlignLeft,
    [switch]$HideSearchTb, [switch]$ShowSearchIconTb, [switch]$ShowSearchLabelTb, [switch]$ShowSearchBoxTb,
    [switch]$HideTaskview,
    [switch]$DisableStartRecommended,
    [switch]$DisableCopilot,
    [switch]$DisableRecall,
    [switch]$DisableWidgets, [switch]$HideWidgets,
    [switch]$DisableChat, [switch]$HideChat,
    [switch]$ClearStart,
    [switch]$ClearStartAllUsers,
    [switch]$RevertContextMenu,
    [switch]$DisableMouseAcceleration,
    [switch]$HideHome,
    [switch]$HideGallery,
    [switch]$ExplorerToHome,
    [switch]$ExplorerToThisPC,
    [switch]$ExplorerToDownloads,
    [switch]$ExplorerToOneDrive,
    [switch]$DisableOnedrive, [switch]$HideOnedrive,
    [switch]$Disable3dObjects, [switch]$Hide3dObjects,
    [switch]$DisableMusic, [switch]$HideMusic,
    [switch]$DisableIncludeInLibrary, [switch]$HideIncludeInLibrary,
    [switch]$DisableGiveAccessTo, [switch]$HideGiveAccessTo,
    [switch]$DisableShare, [switch]$HideShare
)
 
What you should notice is that this script just downloads the Win11Debloat PowerShell script made by Raphire that is available to use on GitHub

This can be seen in the following part of the script, where it does a web request to download the zip file containing Win11Debloat: 
Invoke-WebRequest http://github.com/raphire/win11debloat/archive/master.zip -OutFile "$env:TEMP/win11debloat-temp.zip"
Once the download is complete, it then unzips the archive, deletes the original archive and proceeds with running the script with the provided arguments. Again, the developer has done a great job including comments that provide all this information:

# Unzip archive to Win11Debloat folder
Expand-Archive "$env:TEMP/win11debloat-temp.zip" "$env:TEMP/Win11Debloat"

# Remove archive
Remove-Item "$env:TEMP/win11debloat-temp.zip"

# Make list of arguments to pass on to the script
$arguments = $($PSBoundParameters.GetEnumerator() | ForEach-Object {
    if ($_.Value -eq $true) {
        "-$($_.Key)"
    }
    else {
         "-$($_.Key) ""$($_.Value)"""
    }
})

Write-Output ""
Write-Output "> Running Win11Debloat..."

# Run Win11Debloat script with the provided arguments
$debloatProcess = Start-Process powershell.exe -PassThru -ArgumentList "-executionpolicy bypass -File $env:TEMP\Win11Debloat\Win11Debloat-master\Win11Debloat.ps1 $arguments" -Verb RunAs

# Wait for the process to finish before continuing
if ($null -ne $debloatProcess) {
    $debloatProcess.WaitForExit()
}

Finally when its done the following commands are run to remove the script files and directory used by Win11Debloat"
# Remove all remaining script files, except for CustomAppsList and SavedSettings files
if (Test-Path "$env:TEMP/Win11Debloat/Win11Debloat-master") {
    Write-Output ""
    Write-Output "> Cleaning up..."

    # Cleanup, remove Win11Debloat directory
    Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings | Remove-Item -Recurse -Force
}

tzirf

The next script talon uses is update_policy_changer.ps1 and this script is used to ensure Windows only receives security updates. This prevents Windows update from reinstalling the apps that have be en removed and undoing the other changes to windows.
# Update Policy Changer
# filename: update_policy_changer.ps1
#
# This script makes a few small tweaks to ensure that Windows only receives security updates, leaving out "feature" updates.
# This prevents Windows from reinstalling any extra applications or changes that the user doesn't want, ensuring only necessary changes.

# Massive thanks to DTLegit for this script!

# Define the registry path
$RegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

# Define the registry values
$RegistrySettings = @{
    "DeferQualityUpdates"              = 1
    "DeferQualityUpdatesPeriodInDays"  = 4
    "ProductVersion"                   = "Windows 11"
    "TargetReleaseVersion"             = 1
    "TargetReleaseVersionInfo"         = "24H2"
}

# Ensure the registry path exists
if (-not (Test-Path $RegPath)) {
    New-Item -Path $RegPath -Force | Out-Null
}

# Set the registry values
foreach ($Name in $RegistrySettings.Keys) {
    $Value = $RegistrySettings[$Name]

    # Determine the value type (DWORD or String)
    $Type = if ($Value -is [int]) { "DWord" } else { "String" }

    # Set the registry value
    Set-ItemProperty -Path $RegPath -Name $Name -Value $Value -Type $Type -Force
    Write-Host "Set $Name to $Value ($Type)"
}

Write-Host "`nRegistry settings applied successfully."

This script is short and to the point. The only part we really have to focus on at all is the following:
# Define the registry path
$RegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

# Define the registry values
$RegistrySettings = @{
    "DeferQualityUpdates"              = 1
    "DeferQualityUpdatesPeriodInDays"  = 4
    "ProductVersion"                   = "Windows 11"
    "TargetReleaseVersion"             = 1
    "TargetReleaseVersionInfo"         = "24H2"
}

What this is doing is created a registry key called "WindowsUpdate" and creating DWORD to configure the settings for the registry key. Specifically

"DeferQualityUpdates"
uses a value of 1 to enable the defer updates option.
"DeferQualityUpdatesPeriodInDays" uses a value of 4 to set the number of days you want to defer features for. This uses a value in DECIMAL and I believe can only be set between 0-365. So the 4 being decimal is equal to 100 days.
"TargetReleaseVersion" uses a value of 1 to enable this policy which allows you to either move to or stay on a specific version of Windows 11 until it reaches end of life or you make changes to this policy.
"TargetReleaseVersionInfo" uses a value of 24H2 (the most recent version of Windows 11) and this sets the version of Windows 11 you want to remain on and prevents feature update versions of Windows 11 from installing. It should be noted that this registry tweak should only work on Windows 11 Pro and higher. Meaning if you have Windows 11 Home I don't believe this will work. Additionally it has some limitations, for example the policy will be ignored once the version of Windows reaches end of life and Windows will automatically update once 60 days have passed. 




tzirf

The final script that Talon uses is a json (JavaScript Object Notation) called barebones.json and this script calls upon Chris Titus Tech Windows Toolbox and makes use of the following scrips from that toolbox. Additionally I have linked each script to the documentation that Chris provides for these.

WPFTweaksWifi
WPFTweaksHome
WPFTweaksRemoveEdge
WPFTweaksRemoveHomeGallery
WPFTweaksDisableLMS1
WPFTweaksIPv46
WPFTweaksDeBloat
WPFTweaksConsumerFeatures
WPFTweaksTele
WPFTweaksDisplay
WPFTweaksAH
WPFTweaksRightClickMenu
WPFTweaksRemoveCopilot
WPFTweaksLoc
WPFTweaksRemoveOnedrive
WPFTweaksServices
WPFTweaksDeleteTempFiles
WPFTweaksRecallOff
WPFTweaksDisableBGapps
WPFFeaturesSandbox
WPFFeatureshyperv 


It should be noted that all of Chris Titus Tech scripts are PowerShell as well. Even though Chris already provides details about these scripts (the links are bove) I am still going to list them here and cover them in my own detail.

WPFTweaksWifi is used to disable WiFi-Sense, which is a spy service that phones home to Microsoft with information related to all nearby scanned WiFi networks and the current Geolocation of the device running Windows 11. It also transmits WiFi network passwords you enter and shares them with contacts you have if you are using a Microsoft Account and its syncing with Outlook, Skype and Facebook. It should be noted the reason so many developers created tools to block/remove this is because there is almost NO MENTION of what WiFi Sense is doing to create these "hotspots" and this is enabled by default in Windows 11. The average person has no idea and yet this information is being collected, sent to Microsoft Servers and then shared automatically with contacts.

Again I am going to point out that the developer has done a fantastic job here by including comments to describe what the PowerShell Script is doing.

},
  "WPFTweaksWifi": {
    "Content": "Disable Wifi-Sense",
    "Description": "Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location.",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a005_",
    "registry": [
      {
        "Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting",
        "Name": "Value",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "1"
      },
      {
        "Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowAutoConnectToWiFiSenseHotspots",
        "Name": "Value",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "1"
      }

Essentially what this script does is create 2 registry entries, the first is "AllowWiFiHotSpotReporting", which controls whether you report WiFi information to Microsoft, the value of 0 means this is disabled and it will not report information. The second is "AllowAutoConnectToWiFiSenseHotspots" and again the value is 0, meaning this is also disabled. This particular setting allows Windows 11 to automatically connect to shared hotspots from your contacts. The way this works is Microsoft syncs contacts via Outlook, Skype and Facebook and if a contact gets in proximity of a hotspot the device will connect to Microsoft's servers and request the hotspots SSID & Password.


WPFTweaksHome is used to disable the HomeGroup services. As the developer states HomeGroup is a password protected home networking service that lets you share files with other PCs on the network.

},
  "WPFTweaksHome": {
    "Content": "Disable Homegroup",
    "Description": "Disables HomeGroup - HomeGroup is a password-protected home networking service that lets you share your stuff with other PCs that are currently running and connected to your network.",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a005_",
    "service": [
      {
        "Name": "HomeGroupListener",
        "StartupType": "Manual",
        "OriginalType": "Automatic"
      },
      {
        "Name": "HomeGroupProvider",
        "StartupType": "Manual",
        "OriginalType": "Automatic"
      }
   
All this is doing is taking 2 services that run in Windows 11 "HomeGroupListener" and "HomeGroupProvider" and its setting them to only startup if manually run, meaning the user must run these. Their default settings are set to automatically run, meaning Windows 11 runs the automatically on startup.

WPFTeaksRemoveEdge is used to remove Microsoft Edge when it gets reinstalled by updates. I am not going to post the full code here but you can view it on this page. This code is changing the Region of Windows 11 to Ireland than using the standard uninstall for Microsoft Edge. Afterwards its reverts the region back to the original one set during the Windows 11 installation. Very clever way to remove Edge I have to say.
"WPFTweaksRemoveEdge": {
    "Content": "Remove Microsoft Edge",
    "Description": "Removes MS Edge when it gets reinstalled by updates. Credit: Psyirius",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a029_",
    "InvokeScript": [
      "Uninstall-WinUtilEdgeBrowser -action \"Uninstall\""
    ],
    "UndoScript": [
      "Uninstall-WinUtilEdgeBrowser -action \"Install\""

WPFTweaksRemoveHomeGallery is used to remove the Home and Gallery directory from being listed in explorer. It does this by deleting registry entries. Additionally it makes "This PC" the default directory. 

WPFTweaksRemoveHomeGallery": {
    "Content": "Remove Home and Gallery from explorer",
    "Description": "Removes the Home and Gallery from explorer and sets This PC as default",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a029_",
    "InvokeScript": [
      "
      REG DELETE \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}\" /f
      REG DELETE \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}\" /f
      REG ADD \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\" /f /v \"LaunchTo\" /t REG_DWORD /d \"1\"
      "
    ],
    "UndoScript": [
      "
      REG ADD \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}\" /f /ve /t REG_SZ /d \"{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}\"
      REG ADD \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}\" /f /ve /t REG_SZ /d \"CLSID_MSGraphHomeFolder\"
      REG DELETE \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\" /f /v \"LaunchTo\"
      "
    ],
If you are unsure of what this is changing, here is a picture of the before and after:
BACRemoveHome.jpg

WPFTweaksDisableLMS1 is used for disabling and removing the Local Manageability Service (LMS) that is part of the Intel Active Management Technology (AMT) Software. AMT is a feature that allows IT admins to remotely manage and control computers in a network, even if the computer is turned off or the operating system is not functioning. It should be noted that this software/service will only show up on computers that have an Intel processor that supports vPro technology. Additionally while the script does remove a service that almost no one outside of enterprise environments use. Its important to understand that by default these services are running, but have no capabilities until they have been provisioned for the environment. This means the service isn't active and cannot be used to remotely manage the system. That being said I do agree with Chris that this could pose a potential security risk and should be removed from systems where it is not being used.   

},
  "WPFTweaksDisableLMS1": {
    "Content": "Disable Intel MM (vPro LMS)",
    "Description": "Intel LMS service is always listening on all ports and could be a huge security risk. There is no need to run LMS on home machines and even in the Enterprise there are better solutions.",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a026_",
    "InvokeScript": [
      "
        Write-Host \"Kill LMS\"
        $serviceName = \"LMS\"
        Write-Host \"Stopping and disabling service: $serviceName\"
        Stop-Service -Name $serviceName -Force -ErrorAction SilentlyContinue;
        Set-Service -Name $serviceName -StartupType Disabled -ErrorAction SilentlyContinue;

        Write-Host \"Removing service: $serviceName\";
        sc.exe delete $serviceName;

        Write-Host \"Removing LMS driver packages\";
        $lmsDriverPackages = Get-ChildItem -Path \"C:\\Windows\\System32\\DriverStore\\FileRepository\" -Recurse -Filter \"lms.inf*\";
        foreach ($package in $lmsDriverPackages) {
            Write-Host \"Removing driver package: $($package.Name)\";
            pnputil /delete-driver $($package.Name) /uninstall /force;
        }
        if ($lmsDriverPackages.Count -eq 0) {
            Write-Host \"No LMS driver packages found in the driver store.\";
        } else {
            Write-Host \"All found LMS driver packages have been removed.\";
        }

        Write-Host \"Searching and deleting LMS executable files\";
        $programFilesDirs = @(\"C:\\Program Files\", \"C:\\Program Files (x86)\");
        $lmsFiles = @();
        foreach ($dir in $programFilesDirs) {
            $lmsFiles += Get-ChildItem -Path $dir -Recurse -Filter \"LMS.exe\" -ErrorAction SilentlyContinue;
        }
        foreach ($file in $lmsFiles) {
            Write-Host \"Taking ownership of file: $($file.FullName)\";
            & icacls $($file.FullName) /grant Administrators:F /T /C /Q;
            & takeown /F $($file.FullName) /A /R /D Y;
            Write-Host \"Deleting file: $($file.FullName)\";
            Remove-Item $($file.FullName) -Force -ErrorAction SilentlyContinue;
        }
        if ($lmsFiles.Count -eq 0) {
            Write-Host \"No LMS.exe files found in Program Files directories.\";
        } else {
            Write-Host \"All found LMS.exe files have been deleted.\";
        }
        Write-Host 'Intel LMS vPro service has been disabled, removed, and blocked.';
       "
    ],
    "UndoScript": [
      "
      Write-Host \"LMS vPro needs to be redownloaded from intel.com\"

      "
    ],

WPFTweaksIPv46 is used to configure Windows 11 to prefer IPv4 over IPv6 by modifying the registry and changing the value of DisabledComponent to 32. Very simple script and very easy to understand what it happening. Simply put if you make use of IPv6 this isn't something you would want to run. Its interesting that Talon includes this and doesn't ask the user if they use IPv6 before running the script. This tweak is honestly worthless and should be removed. Their tool is designed to be run by people who are not tech savvy and this can cause internet issues for those using IPv6 and they would have no idea why or how to fix it. Perhaps the developers are unaware that different regions of the world actually rely heavily (more than 50%) on IPv6, this includes USA, France, Belgium, Puerto Rico, Germany, Malaysia, India, Saudi Arabia, Montserrat and Bahrain who is actually 100% IPv6. Also as of 2025 the world wide adoption of IPv6 is nearing the 50% mark. I don't know why this was included in a de-bloating tool for Windows 11. Changing this setting has no benefit or advantage even for those running IPv4.   

"WPFTweaksIPv46": {
    "Content": "Prefer IPv4 over IPv6",
    "Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a023_",
    "registry": [
      {
        "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
        "Name": "DisabledComponents",
        "Value": "32",
        "OriginalValue": "0",
        "Type": "DWord"
      }
    ],

WPFTweaksDeBloat is used to remove all Microsoft Store apps, including games. It doesn't remove apps required for winget to work. 

"WPFTweaksDeBloat": {
    "Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
    "Description": "USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a028_",
    "appx": [
      "Microsoft.Microsoft3DViewer",
      "Microsoft.AppConnector",
      "Microsoft.BingFinance",
      "Microsoft.BingNews",
      "Microsoft.BingSports",
      "Microsoft.BingTranslator",
      "Microsoft.BingWeather",
      "Microsoft.BingFoodAndDrink",
      "Microsoft.BingHealthAndFitness",
      "Microsoft.BingTravel",
      "Microsoft.MinecraftUWP",
      "Microsoft.GamingServices",
      "Microsoft.GetHelp",
      "Microsoft.Getstarted",
      "Microsoft.Messaging",
      "Microsoft.Microsoft3DViewer",
      "Microsoft.MicrosoftSolitaireCollection",
      "Microsoft.NetworkSpeedTest",
      "Microsoft.News",
      "Microsoft.Office.Lens",
      "Microsoft.Office.Sway",
      "Microsoft.Office.OneNote",
      "Microsoft.OneConnect",
      "Microsoft.People",
      "Microsoft.Print3D",
      "Microsoft.SkypeApp",
      "Microsoft.Wallet",
      "Microsoft.Whiteboard",
      "Microsoft.WindowsAlarms",
      "microsoft.windowscommunicationsapps",
      "Microsoft.WindowsFeedbackHub",
      "Microsoft.WindowsMaps",
      "Microsoft.WindowsSoundRecorder",
      "Microsoft.ConnectivityStore",
      "Microsoft.ScreenSketch",
      "Microsoft.MixedReality.Portal",
      "Microsoft.ZuneMusic",
      "Microsoft.ZuneVideo",
      "Microsoft.Getstarted",
      "Microsoft.MicrosoftOfficeHub",
      "*EclipseManager*",
      "*ActiproSoftwareLLC*",
      "*AdobeSystemsIncorporated.AdobePhotoshopExpress*",
      "*Duolingo-LearnLanguagesforFree*",
      "*PandoraMediaInc*",
      "*CandyCrush*",
      "*BubbleWitch3Saga*",
      "*Wunderlist*",
      "*Flipboard*",
      "*Twitter*",
      "*Facebook*",
      "*Royal Revolt*",
      "*Sway*",
      "*Speed Test*",
      "*Dolby*",
      "*Viber*",
      "*ACGMediaPlayer*",
      "*Netflix*",
      "*OneCalendar*",
      "*LinkedInforWindows*",
      "*HiddenCityMysteryofShadows*",
      "*Hulu*",
      "*HiddenCity*",
      "*AdobePhotoshopExpress*",
      "*HotspotShieldFreeVPN*",
      "*Microsoft.Advertising.Xaml*"
    ],
    "InvokeScript": [
      "
        $TeamsPath = [System.IO.Path]::Combine($env:LOCALAPPDATA, 'Microsoft', 'Teams')
        $TeamsUpdateExePath = [System.IO.Path]::Combine($TeamsPath, 'Update.exe')

        Write-Host \"Stopping Teams process...\"
        Stop-Process -Name \"*teams*\" -Force -ErrorAction SilentlyContinue

        Write-Host \"Uninstalling Teams from AppData\\Microsoft\\Teams\"
        if ([System.IO.File]::Exists($TeamsUpdateExePath)) {
            # Uninstall app
            $proc = Start-Process $TeamsUpdateExePath \"-uninstall -s\" -PassThru
            $proc.WaitForExit()
        }

        Write-Host \"Removing Teams AppxPackage...\"
        Get-AppxPackage \"*Teams*\" | Remove-AppxPackage -ErrorAction SilentlyContinue
        Get-AppxPackage \"*Teams*\" -AllUsers | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue

        Write-Host \"Deleting Teams directory\"
        if ([System.IO.Directory]::Exists($TeamsPath)) {
            Remove-Item $TeamsPath -Force -Recurse -ErrorAction SilentlyContinue
        }

        Write-Host \"Deleting Teams uninstall registry key\"
        # Uninstall from Uninstall registry key UninstallString
        $us = (Get-ChildItem -Path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall, HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall | Get-ItemProperty | Where-Object { $_.DisplayName -like '*Teams*'}).UninstallString
        if ($us.Length -gt 0) {
            $us = ($us.Replace('/I', '/uninstall ') + ' /quiet').Replace('  ', ' ')
            $FilePath = ($us.Substring(0, $us.IndexOf('.exe') + 4).Trim())
            $ProcessArgs = ($us.Substring($us.IndexOf('.exe') + 5).Trim().replace('  ', ' '))
            $proc = Start-Process -FilePath $FilePath -Args $ProcessArgs -PassThru
            $proc.WaitForExit()
        }
      "
    ],

tzirf

WPFTweaksConsumerFeatures is used to prevent Windows 10 from automatically installing apps, games or links from the Microsoft Store. It should be noted that this will only effect those who are signed into the Microsoft Store or are using a Microsoft Account on Windows 11. Apparently this will prevent access to some apps, such as phone link (lets be honest no one uses that anyways). The script does this by adding a registry entry that disables windows consumer features. 

"WPFTweaksConsumerFeatures": {
    "Content": "Disable ConsumerFeatures",
    "Description": "Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a003_",
    "registry": [
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
        "OriginalValue": "<RemoveEntry>",
        "Name": "DisableWindowsConsumerFeatures",
        "Value": "1",
        "Type": "DWord"
      }
    ],


WPFTweaksTele is used to disable a huge chunk of the Microsoft Telemetry that is running in Windows 11. As far as I am concerned this is ONE OF THE MOST IMPORTANT script used in Talon. The developer does mention this in the comments, but I am going to reiterate it here. If you use Microsoft Edge, this script will lock many of the settings because there is Telemetry that will be disabled that edge relies on. Unfortunately this telemetry is what Microsoft uses to spy heavily on what and how Microsoft Edge is used for.

The scripts relies on editing the registry and Task Scheduler to disable all these programs from running automatically. I am not going to dive into all these to explain what they do, but I will say this, if you want to know what these programs collect for data, you can view them in "Task Scheduler" and Microsoft does provide a description for many of them. That being said, the vast majority of these tasks are automatically scheduled by default to run DAILY or at start up, whether the user is logged in or not. The reason I bring this is up is so people understand how much telemetry data Microsoft is collecting. Even if your not logged into and using the computer. Most people I know leave their computer turned on 24/7. Lets just take the first 5 Scheduled Tasks that get disabled in this list. If each one of them runs daily (they don't, but lets just think they do for my example) at a given time, that is 5 services that are running, collecting data and sending it back to Microsoft per day.There are a total of 13 scheduled tasks that collect data on a schedule and send it back to Microsoft.     
  },
  "WPFTweaksTele": {
    "Content": "Disable Telemetry",
    "Description": "Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser.",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a003_",
    "ScheduledTask": [
      {
        "Name": "Microsoft\\Windows\\Application Experience\\Microsoft Compatibility Appraiser",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Application Experience\\ProgramDataUpdater",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Autochk\\Proxy",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Customer Experience Improvement Program\\Consolidator",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Customer Experience Improvement Program\\UsbCeip",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\DiskDiagnostic\\Microsoft-Windows-DiskDiagnosticDataCollector",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Feedback\\Siuf\\DmClient",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Feedback\\Siuf\\DmClientOnScenarioDownload",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Windows Error Reporting\\QueueReporting",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Application Experience\\MareBackup",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Application Experience\\StartupAppTask",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Application Experience\\PcaPatchDbTask",
        "State": "Disabled",
        "OriginalState": "Enabled"
      },
      {
        "Name": "Microsoft\\Windows\\Maps\\MapsUpdateTask",
        "State": "Disabled",
        "OriginalState": "Enabled"
      }
    ],
    "registry": [
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\DataCollection",
        "Type": "DWord",
        "Value": "0",
        "Name": "AllowTelemetry",
        "OriginalValue": "<RemoveEntry>"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
        "OriginalValue": "<RemoveEntry>",
        "Name": "AllowTelemetry",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "ContentDeliveryAllowed",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "OemPreInstalledAppsEnabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "PreInstalledAppsEnabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "PreInstalledAppsEverEnabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "SilentInstalledAppsEnabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "SubscribedContent-338387Enabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "SubscribedContent-338388Enabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "SubscribedContent-338389Enabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "SubscribedContent-353698Enabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
        "OriginalValue": "1",
        "Name": "SystemPaneSuggestionsEnabled",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Siuf\\Rules",
        "OriginalValue": "0",
        "Name": "NumberOfSIUFInPeriod",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
        "OriginalValue": "<RemoveEntry>",
        "Name": "DoNotShowFeedbackNotifications",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
        "OriginalValue": "<RemoveEntry>",
        "Name": "DisableTailoredExperiencesWithDiagnosticData",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\AdvertisingInfo",
        "OriginalValue": "<RemoveEntry>",
        "Name": "DisabledByGroupPolicy",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting",
        "OriginalValue": "0",
        "Name": "Disabled",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DeliveryOptimization\\Config",
        "OriginalValue": "1",
        "Name": "DODownloadMode",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Remote Assistance",
        "OriginalValue": "1",
        "Name": "fAllowToGetHelp",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\OperationStatusManager",
        "OriginalValue": "0",
        "Name": "EnthusiastMode",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
        "OriginalValue": "1",
        "Name": "ShowTaskViewButton",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\People",
        "OriginalValue": "1",
        "Name": "PeopleBand",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
        "OriginalValue": "1",
        "Name": "LaunchTo",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem",
        "OriginalValue": "0",
        "Name": "LongPathsEnabled",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "_Comment": "Driver searching is a function that should be left in",
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DriverSearching",
        "OriginalValue": "1",
        "Name": "SearchOrderConfig",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile",
        "OriginalValue": "1",
        "Name": "SystemResponsiveness",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile",
        "OriginalValue": "1",
        "Name": "NetworkThrottlingIndex",
        "Value": "4294967295",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Control Panel\\Desktop",
        "OriginalValue": "1",
        "Name": "MenuShowDelay",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Control Panel\\Desktop",
        "OriginalValue": "1",
        "Name": "AutoEndTasks",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management",
        "OriginalValue": "0",
        "Name": "ClearPageFileAtShutdown",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKLM:\\SYSTEM\\ControlSet001\\Services\\Ndu",
        "OriginalValue": "1",
        "Name": "Start",
        "Value": "2",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Control Panel\\Mouse",
        "OriginalValue": "400",
        "Name": "MouseHoverTime",
        "Value": "400",
        "Type": "String"
      },
      {
        "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters",
        "OriginalValue": "20",
        "Name": "IRPStackSize",
        "Value": "30",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Feeds",
        "OriginalValue": "<RemoveEntry>",
        "Name": "EnableFeeds",
        "Value": "0",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Feeds",
        "OriginalValue": "1",
        "Name": "ShellFeedsTaskbarViewMode",
        "Value": "2",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
        "OriginalValue": "<RemoveEntry>",
        "Name": "HideSCAMeetNow",
        "Value": "1",
        "Type": "DWord"
      },
      {
        "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement",
        "OriginalValue": "1",
        "Name": "ScoobeSystemSettingEnabled",
        "Value": "0",
        "Type": "DWord"
      }
    ],
    "InvokeScript": [
      "
      bcdedit /set `{current`} bootmenupolicy Legacy | Out-Null
        If ((get-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" -Name CurrentBuild).CurrentBuild -lt 22557) {
            $taskmgr = Start-Process -WindowStyle Hidden -FilePath taskmgr.exe -PassThru
            Do {
                Start-Sleep -Milliseconds 100
                $preferences = Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\TaskManager\" -Name \"Preferences\" -ErrorAction SilentlyContinue
            } Until ($preferences)
            Stop-Process $taskmgr
            $preferences.Preferences[28] = 0
            Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\TaskManager\" -Name \"Preferences\" -Type Binary -Value $preferences.Preferences
        }
        Remove-Item -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}\" -Recurse -ErrorAction SilentlyContinue

        # Fix Managed by your organization in Edge if regustry path exists then remove it

        If (Test-Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge\") {
            Remove-Item -Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge\" -Recurse -ErrorAction SilentlyContinue
        }

        # Group svchost.exe processes
        $ram = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1kb
        Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\" -Name \"SvcHostSplitThresholdInKB\" -Type DWord -Value $ram -Force

        $autoLoggerDir = \"$env:PROGRAMDATA\\Microsoft\\Diagnosis\\ETLLogs\\AutoLogger\"
        If (Test-Path \"$autoLoggerDir\\AutoLogger-Diagtrack-Listener.etl\") {
            Remove-Item \"$autoLoggerDir\\AutoLogger-Diagtrack-Listener.etl\"
        }
        icacls $autoLoggerDir /deny SYSTEM:`(OI`)`(CI`)F | Out-Null

        # Disable Defender Auto Sample Submission
        Set-MpPreference -SubmitSamplesConsent 2 -ErrorAction SilentlyContinue | Out-Null
        "
    ],

tzirf

WPFTweaksDiplay is used to set the visual effects in Windows to performance settings. A basic script to automate something that can be done within Windows using the sysdm.cpl and heading to the Advanced tab and selecting "Settings" under "Performance".
{
  "Content": "Set Display for Performance",
  "Description": "Sets the system preferences to performance. You can do this manually with sysdm.cpl as well.",
  "category": "z__Advanced Tweaks - CAUTION",
  "panel": "1",
  "Order": "a027_",
  "registry": [
    {
      "Path": "HKCU:\\Control Panel\\Desktop",
      "OriginalValue": "1",
      "Name": "DragFullWindows",
      "Value": "0",
      "Type": "String"
    },
    {
      "Path": "HKCU:\\Control Panel\\Desktop",
      "OriginalValue": "1",
      "Name": "MenuShowDelay",
      "Value": "200",
      "Type": "String"
    },
    {
      "Path": "HKCU:\\Control Panel\\Desktop\\WindowMetrics",
      "OriginalValue": "1",
      "Name": "MinAnimate",
      "Value": "0",
      "Type": "String"
    },
    {
      "Path": "HKCU:\\Control Panel\\Keyboard",
      "OriginalValue": "1",
      "Name": "KeyboardDelay",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
      "OriginalValue": "1",
      "Name": "ListviewAlphaSelect",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
      "OriginalValue": "1",
      "Name": "ListviewShadow",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
      "OriginalValue": "1",
      "Name": "TaskbarAnimations",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VisualEffects",
      "OriginalValue": "1",
      "Name": "VisualFXSetting",
      "Value": "3",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\DWM",
      "OriginalValue": "1",
      "Name": "EnableAeroPeek",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
      "OriginalValue": "1",
      "Name": "TaskbarMn",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
      "OriginalValue": "1",
      "Name": "TaskbarDa",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
      "OriginalValue": "1",
      "Name": "ShowTaskViewButton",
      "Value": "0",
      "Type": "DWord"
    },
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Search",
      "OriginalValue": "1",
      "Name": "SearchboxTaskbarMode",
      "Value": "0",
      "Type": "DWord"
    }
  ],
  "InvokeScript": [
    "Set-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\" -Type Binary -Value ([byte[]](144,18,3,128,16,0,0,0))"
  ],
  "UndoScript": [
    "Remove-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\""
  ],

WPFTweaksAH is used to disable the activity history within Windows. This will erase recent docs, the clipboard and run history. The script adds several registry entries to disable these features.
{
  "WPFTweaksAH": {
    "Content": "Disable Activity History",
    "Description": "This erases recent docs, clipboard, and run history.",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a005_",
    "registry": [
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
        "Name": "EnableActivityFeed",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "<RemoveEntry>"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
        "Name": "PublishUserActivities",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "<RemoveEntry>"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
        "Name": "UploadUserActivities",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "<RemoveEntry>"
      }
    ],
   


WPFTweaksRightClickMenu is used to adjust the UI of Windows 11, specifically to bring back the context menu when right clicking. Think what you are used to seeing in Windows 10.
  "WPFTweaksRightClickMenu": {
    "Content": "Set Classic Right-Click Menu ",
    "Description": "Great Windows 11 tweak to bring back good context menus when right clicking things in explorer.",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a027_",
    "InvokeScript": [
      "
      New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\"
      Write-Host Restarting explorer.exe ...
      $process = Get-Process -Name \"explorer\"
      Stop-Process -InputObject $process
      "
    ],
    "UndoScript": [
      "
      Remove-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Recurse -Confirm:$false -Force
      # Restarting Explorer in the Undo Script might not be necessary, as the Registry change without restarting Explorer does work, but just to make sure.
      Write-Host Restarting explorer.exe ...
      $process = Get-Process -Name \"explorer\"
      Stop-Process -InputObject $process
      "

WPFTweaksRemoveCopilot is used to disable and remove Copilot from Windows. The script edits the Registry to disable Copilot and then using the DISM Tool to remove the package from Windows. 
},
  "WPFTweaksRemoveCopilot": {
    "Content": "Disable Microsoft Copilot",
    "Description": "Disables MS Copilot AI built into Windows since 23H2.",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a025_",
    "registry": [
      {
        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsCopilot",
        "Name": "TurnOffWindowsCopilot",
        "Type": "DWord",
        "Value": "1",
        "OriginalValue": "<RemoveEntry>"
      },
      {
        "Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\WindowsCopilot",
        "Name": "TurnOffWindowsCopilot",
        "Type": "DWord",
        "Value": "1",
        "OriginalValue": "<RemoveEntry>"
      },
      {
        "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
        "Name": "ShowCopilotButton",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "1"
      }
    ],
    "InvokeScript": [
      "
      Write-Host \"Remove Copilot\"
      dism /online /remove-package /package-name:Microsoft.Windows.Copilot
      "
    ],
    "UndoScript": [
      "
      Write-Host \"Install Copilot\"
      dism /online /add-package /package-name:Microsoft.Windows.Copilot
      "
    ],

WPFTweaksLoc is used to disable the location tracking inside Windows. Again its editing the registry to make these changes. 
"WPFTweaksLoc": {
    "Content": "Disable Location Tracking",
    "Description": "Disables Location Tracking...DUH!",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a005_",
    "registry": [
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location",
        "Name": "Value",
        "Type": "String",
        "Value": "Deny",
        "OriginalValue": "Allow"
      },
      {
        "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Sensor\\Overrides\\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}",
        "Name": "SensorPermissionState",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "1"
      },
      {
        "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Service\\Configuration",
        "Name": "Status",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "1"
      },
      {
        "Path": "HKLM:\\SYSTEM\\Maps",
        "Name": "AutoUpdateEnabled",
        "Type": "DWord",
        "Value": "0",
        "OriginalValue": "1"
      }
    ],

WPFTweaksRemoveOnedrive is used to move any files in OneDrive to the default home directory then it uninstalls OneDrive from Windows. I have to hand it to Chris this script is beautifully designed to move files so that nothing is lost, but also it checks for both versions of OneDrive that could be installed in Windows. 
"WPFTweaksRemoveOnedrive": {
    "Content": "Remove OneDrive",
    "Description": "Moves OneDrive files to Default Home Folders and Uninstalls it.",
    "category": "z__Advanced Tweaks - CAUTION",
    "panel": "1",
    "Order": "a030_",
    "InvokeScript": [
      "
      $OneDrivePath = $($env:OneDrive)
      Write-Host \"Removing OneDrive\"

      # Check both traditional and Microsoft Store installations
      $regPath = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OneDriveSetup.exe\"
      $msStorePath = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Appx\\AppxAllUserStore\\Applications\\*OneDrive*\"

      if (Test-Path $regPath) {
          $OneDriveUninstallString = Get-ItemPropertyValue \"$regPath\" -Name \"UninstallString\"
          $OneDriveExe, $OneDriveArgs = $OneDriveUninstallString.Split(\" \")
          Start-Process -FilePath $OneDriveExe -ArgumentList \"$OneDriveArgs /silent\" -NoNewWindow -Wait
      } elseif (Test-Path $msStorePath) {
          Write-Host \"OneDrive appears to be installed via Microsoft Store\" -ForegroundColor Yellow
          # Attempt to uninstall via winget
          Start-Process -FilePath winget -ArgumentList \"uninstall -e --purge --accept-source-agreements Microsoft.OneDrive\" -NoNewWindow -Wait
      } else {
          Write-Host \"OneDrive doesn't seem to be installed\" -ForegroundColor Red
          Write-Host \"Running cleanup if OneDrive path exists\" -ForegroundColor Red
      }

      # Check if OneDrive got Uninstalled (both paths)
      if (Test-Path $OneDrivePath) {
        Write-Host \"Copy downloaded Files from the OneDrive Folder to Root UserProfile\"
        Start-Process -FilePath powershell -ArgumentList \"robocopy '$($OneDrivePath)' '$($env:USERPROFILE.TrimEnd())\\' /mov /e /xj\" -NoNewWindow -Wait

        Write-Host \"Removing OneDrive leftovers\"
        Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"
        Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\OneDrive\"
        Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:programdata\\Microsoft OneDrive\"
        Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:systemdrive\\OneDriveTemp\"
        reg delete \"HKEY_CURRENT_USER\\Software\\Microsoft\\OneDrive\" -f
        # check if directory is empty before removing:
        If ((Get-ChildItem \"$OneDrivePath\" -Recurse | Measure-Object).Count -eq 0) {
            Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$OneDrivePath\"
        }

        Write-Host \"Remove Onedrive from explorer sidebar\"
        Set-ItemProperty -Path \"HKCR:\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\" -Name \"System.IsPinnedToNameSpaceTree\" -Value 0
        Set-ItemProperty -Path \"HKCR:\\Wow6432Node\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\" -Name \"System.IsPinnedToNameSpaceTree\" -Value 0

        Write-Host \"Removing run hook for new users\"
        reg load \"hku\\Default\" \"C:\\Users\\Default\\NTUSER.DAT\"
        reg delete \"HKEY_USERS\\Default\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"OneDriveSetup\" /f
        reg unload \"hku\\Default\"

        Write-Host \"Removing autostart key\"
        reg delete \"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"OneDrive\" /f

        Write-Host \"Removing startmenu entry\"
        Remove-Item -Force -ErrorAction SilentlyContinue \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\OneDrive.lnk\"

        Write-Host \"Removing scheduled task\"
        Get-ScheduledTask -TaskPath '\\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false

        # Add Shell folders restoring default locations
        Write-Host \"Shell Fixing\"
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"AppData\" -Value \"$env:userprofile\\AppData\\Roaming\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Cache\" -Value \"$env:userprofile\\AppData\\Local\\Microsoft\\Windows\\INetCache\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Cookies\" -Value \"$env:userprofile\\AppData\\Local\\Microsoft\\Windows\\INetCookies\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Favorites\" -Value \"$env:userprofile\\Favorites\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"History\" -Value \"$env:userprofile\\AppData\\Local\\Microsoft\\Windows\\History\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Local AppData\" -Value \"$env:userprofile\\AppData\\Local\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"My Music\" -Value \"$env:userprofile\\Music\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"My Video\" -Value \"$env:userprofile\\Videos\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"NetHood\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Network Shortcuts\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"PrintHood\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Printer Shortcuts\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Programs\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Recent\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Recent\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"SendTo\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\SendTo\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Start Menu\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Startup\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Templates\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Templates\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{374DE290-123F-4565-9164-39C4925E467B}\" -Value \"$env:userprofile\\Downloads\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Desktop\" -Value \"$env:userprofile\\Desktop\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"My Pictures\" -Value \"$env:userprofile\\Pictures\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Personal\" -Value \"$env:userprofile\\Documents\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{F42EE2D3-909F-4907-8871-4C22FC0BF756}\" -Value \"$env:userprofile\\Documents\" -Type ExpandString
        Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{0DDD015D-B06C-45D5-8C4C-F59713854639}\" -Value \"$env:userprofile\\Pictures\" -Type ExpandString
        Write-Host \"Restarting explorer\"
        taskkill.exe /F /IM \"explorer.exe\"
        Start-Process \"explorer.exe\"

        Write-Host \"Waiting for explorer to complete loading\"
        Write-Host \"Please Note - The OneDrive folder at $OneDrivePath may still have items in it. You must manually delete it, but all the files should already be copied to the base user folder.\"
        Write-Host \"If there are Files missing afterwards, please Login to Onedrive.com and Download them manually\" -ForegroundColor Yellow
        Start-Sleep 5
      } else {
        Write-Host \"Nothing to Cleanup with OneDrive\" -ForegroundColor Red
      }
      "
    ],
    "UndoScript": [
      "
      Write-Host \"Install OneDrive\"
      Start-Process -FilePath winget -ArgumentList \"install -e --accept-source-agreements --accept-package-agreements --silent Microsoft.OneDrive \" -NoNewWindow -Wait
      "
    ],

WPFTweaksServices is used to change many system services to manual that don't need to be running all the time. The script is extremely long, but its simple. As chris mentions in the comments, these are harmless changes because the services will still be started if they are called upon by Windows or an application. The difference is they won't be running all the time and consuming resources for no reason.

Due to the length of this code, lets just refer back to the published documentation for it which you can find here

WPFTweaksDeleteTempFiles is a small simple script that deletes temporary files. Its probably run as part of Talon in order to clean up unnecessary temp files once the changes have been made.
"WPFTweaksDeleteTempFiles": {
    "Content": "Delete Temporary Files",
    "Description": "Erases TEMP Folders",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a002_",
    "InvokeScript": [
      "Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
    Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
    ],

tzirf

WPFTweaksRecallOff is used to disable Windows Recall. Again this is ONE OF THE MOST IMPORTANT scripts used by Talon. Recall is a feature that likes to save images of what you are doing on the computer every few seconds and can capture login information and other information that could be harmful if it were  extracted by say malware and transmitted to a bad actor. To make matters worse, Recall stores these images in an insecure manner and leverages AI to scan and analyze the images so that the data is searchable using natural language; meaning you can search your computer for it. While the feature may sound good, its really something that shouldn't be in Windows. With the prevalence of malware, ransomware attacks and phishing scams in the world today, the average person doesn't need a complete log with images of what they have been doing on their computer. Its the holy grail for scammers and bad actors to target and Microsoft has basically handed it to them on a silver platter.
"WPFTweaksRecallOff": {
    "Content": "Disable Recall",
    "Description": "Turn Recall off",
    "category": "Essential Tweaks",
    "panel": "1",
    "Order": "a011_",
    "registry": [
      {

        "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsAI",
        "Name": "DisableAIDataAnalysis",
        "Type": "DWord",
        "Value": "1",
        "OriginalValue": "0"
      }
    ],
    "InvokeScript": [
      "
      Write-Host \"Disable Recall\"
      DISM /Online /Disable-Feature /FeatureName:Recall
      "
    ],
    "UndoScript": [
      "
      Write-Host \"Enable Recall\"
      DISM /Online /Enable-Feature /FeatureName:Recall
      "
    ],

WPFTweaksDisableBGapps is used to disable background apps from running. Another simple script that automates something that could be done from Windows 11 settings. However Microsoft has made it a royal pain in the butt to do. I highly recommend using Chris Tech Tips Windows Utility for this task as it takes mere seconds to complete.
{
  "Content": "Disable Background Apps",
  "Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11",
  "category": "z__Advanced Tweaks - CAUTION",
  "panel": "1",
  "Order": "a024_",
  "registry": [
    {
      "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\BackgroundAccessApplications",
      "Name": "GlobalUserDisabled",
      "Value": "1",
      "OriginalValue": "0",
      "Type": "DWord"
    }
  ],

WPFFeaturesSandbox is used to enable Windows Sandbox, which is a virtual machine environment where you can run software in isolation from the main operating system. Its typically used for testing, debugging and exploring unknown or experimental software or files. I am not sure why this script is run in Talon. It really is outside the scope of what Talon is trying to achieve and the type of individual that would make use of Talon probably doesn't use Windows Sandbox or even knows what it is. This may be something the developers included because they make use of it and they want to use their own tool to debloat Windows 11, but also would like Windows Sandbox enabled. Regardless of the reason, there is no harm in having this enabled inside Windows.   
},
  "WPFFeaturesSandbox": {
    "Content": "Windows Sandbox",
    "category": "Features",
    "panel": "1",
    "Order": "a021_",
    "Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.",

WPFFeatureshyperv is used to to enable Hyper-V a virtualization product by Microsoft that is used to create and manage virtual machines. This feature is only available on Windows 11 Pro and higher. It allows the running of virtual machines within Windows without the need of third party software. Again this is probably part of Talon because the developers make use of it. The average person using Talon likely doesn't use or know what this is and as I stated above, there is no harm in enabling these features in Windows.   

},
  "WPFFeatureshyperv": {
    "Content": "HyperV Virtualization",
    "Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.",
    "category": "Features",
    "panel": "1",
    "Order": "a011_",
    "feature": [
      "HypervisorPlatform",
      "Microsoft-Hyper-V-All",
      "Microsoft-Hyper-V",
      "Microsoft-Hyper-V-Tools-All",
      "Microsoft-Hyper-V-Management-PowerShell",
      "Microsoft-Hyper-V-Hypervisor",
      "Microsoft-Hyper-V-Services",
      "Microsoft-Hyper-V-Management-Clients"
    ],
    "InvokeScript": [
      "Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /set hypervisorschedulertype classic' -Wait"
    ],

tzirf

CONCLUSION:

That concludes the scrips that Talon uses. After doing a deep dive into these scripts my final conclusion on Talon is as follows:

Unfortunately the current version of this Tool I would not recommend using. The current version runs a script that can cause issues with network performance & connectivity for IPv6 users.

I do believe this tool can be useful for many users out there because it doesn't require much knowledge at all to run. As the developer states, its a couple clicks to de-bloat Windows 11 and that much is true. I want to be clear, the developer has done a great job creating this tool and with some refinements it can become a reliable tool that millions of people could end up using in the years to come. In order to make that happen though a few things need to change.

1. The developer should provide the executable download for Talon on the Github page. Their website has a known problem loading (which I showcase in my video). According to the developer
QuoteThis is due to your ISP and/or DNS provider blocking our code subdomain. You can try changing your DNS provider in your router, whitelisting our website in your router, contacting your ISP and requesting the website be unblocked, or use a VPN. Unfortunately it is something outside of our control.
While this might be true, regardless of the reason for the problem, if users cannot get to the website to download Talon they are not going to use it. With that said, something that is in their control is providing the download on Github; where this problem wouldn't exist.

NOTE: About this problem with loading their subdomain. I have done extensive testing on this and I don't believe this is only a potential DNS problem. While testing I have noticed that sometimes the website will load and other times it will not using the same DNS Provider. I have tested the following providers: Google, OpenDNS, Level3 DNS, Comodo Secure DNS, DNSWATCH, Quad9 and Cloudflare. I even setup a recursive DNS service to test this and all the DNS Providers above respond to the DNS request and provide the correct IP to their website. After the initial response the recursive DNS Service caches this information and doesn't request it from an authoritative DNS provider each time you try to go to their website. The reason this is important is because it takes the DNS Providers out of the equation and even after validating the IP of ravendevteam.org the results of loading the webpage were mixed; sometimes it would load and other times it wouldn't. 

Also during my testing of Talon I ran into the problem where sometimes the scripts hosted on their website fail to download and Talon is unable to run them, again this can be seen in my initial video and while I originally blamed my own internet for it, that doesn't appear to be the reason for the problem after further testing. Furthermore I also noticed that ravendevteam has somehow landed themselves on block lists for popular antivirus software as well as pop-up blockers, adblockers and other security based addons that millions of people use in Edge, Chrome or Firefox. So if any of these are installed the browser is going to throw an error when trying to load their website or you will give a notification that the website is being blocked because of riskware. I do not know why this has happened. Regardless it poses a major problem for those who want to use Talon if they are unable to get to their website to download it and for these reasons I think it would benefit everyone to provide the downloads from github
 


2. Probably the most important: The script WPFTweaksIPv46 should be removed from Talon. As I stated above this script comes from Chris Titus Tech Windows Utility and edits the registry to force Windows 11 to prefer IPv4 over IPv6. This is a problem for anyone that is using IPv6, which is nearly 50% of the world as of 2025. This is a major oversight because Talon doesn't check or ask the user if they are using IPv6. This can effect users who rely on IPv6 and cause performance and connection problems with their network. Even if the developer were to make it so it asks the user to choose I think it would be a poor design choice. There is no reason this script needs to be run. It has no benefit or advantage even for those who only use IPv4. It would be better for everyone using Talon to not have this script part of Talon.

3. The changes to Windows Theme/Wallpaper should be removed. The reason for this is the vast majority of people that will likely make use of a tool like this are going to be individuals that are the go to people in their family or friends circle for tech related problems. They will be the one running Talon to de-bloat Windows 11 for family or friends and I am willing to bet 99% of the people will ask that the theme be changed back to a default Windows 11 theme and the wallpaper be changed. Its an unnecessary addition to a tool that is supposed to be de-bloating Windows 11.

4. Talon needs better documentation published in order to be more transparent. Even if the primary user base are non-tech savvy individuals, they will often look for advice from those in their life that are tech savvy and not everyone is going to take the time to deep dive into this like I did. In fact I suspect with the lack of transparency & documentation most tech savvy people are going to assume Talon is bad and pass on using it.

5. Talon should mention on the github page that this tool makes many changes that will only apply to Windows 11 Pro. Some of the registry tweaks made do not work in Windows 11 Home, which isn't a problem with Talon (its an issue with Windows 11 Home and how Microsoft has removed features/settings) but making mention of it so that users are aware would be nice. 

For those who wish to de-bloat Windows 11, currently I would recommend Chris Titus Techs Windows Utility. It can achieve almost all of what Talon is going for but gives the user full control over what changes are made. In using this utility you can choose to not use the script that makes changes to IPv6. I understand that this isn't a solution for all as it requires more technical knowledge to run than Talon, however I hope that my breakdown of the individual scripts from Chris Titus Techs Windows Utility will allows more users to make use of his utility. As I have stated before, I am not here to tell you what to do, so if you want to use Talon you are certain free to do so.