Windows Package Manager 1.29.290 Patches Elevation of Privilege Flaws in August Servicing Release
The new build locks down user-vs-machine uninstall boundaries while keeping v1.29's automation and AI-agent tooling alive.
Windows Package Manager hit version 1.29.290 on August 24, 2026, and if you're scanning the changelog, you'll notice something less glamorous than the usual feature drops. Microsoft shipped a servicing release that mostly doubles down on two security patches related to privilege escalation, while keeping the broader v1.29 feature set intact.
It's a modest build. Only two pull requests merged between v1.29.280 and this one. Both target the exact same underlying vulnerability: an elevated process sneaking past user-scoped package boundaries during uninstall.
The first fix blocks administrators from quietly wiping software installed under a standard user account. If you've ever managed a lab where IT needed to keep user installs strictly user-owned, you know this space gets messy fast. The uninstall workflow now checks whether a package belongs to HKCU and refuses to run it cross-scope.
The second patch closes the back door for admins who disabled UAC. Without it, a full-token admin could bypass the scope check entirely. WinGet now uses a TOKEN_ELEVATION_TYPE helper to verify the token's elevation semantics before allowing the uninstall to proceed. Both fixes came from Microsoft engineer JohnMcPMS and internal security reviewers, which tells you this emerged from active threat modeling rather than a community bug report.
What Carries Over From v1.29
The v1.29.290 build doesn't add new features. It just stabilizes them. The v1.29 line shipped back in July with a heavier loadout, and this release keeps all of it.
Source Priority remains the headline capability. You can now rank custom package feeds above Microsoft's defaults using numerical values. Search results sort by match quality, matched field, and finally source order. If your private feed only returns one match for a high-priority package, WinGet skips the "multiple packages found" prompt entirely.
There's also a new --no-progress flag that disables both progress bars and spinners across all commands. It ignores the visual.progressBar setting and exists purely for CI/CD pipelines where terminal clutter breaks parse scripts.
AI integration deepened as well. The WinGet MCP server now understands upgradeable=true and upgradeOnly=true parameters, letting agents answer "what can I update" and push bulk upgrades without manual inventory pulls.
On the automation front, winget list now respects --sort flags and outputs clean tables when stdout is redirected. Log file naming got a new logging.fileNameStrategy setting if you need GUIDs or timestamps instead of manifest names.
Other Housekeeping
The build also addresses a handful of quirks. winget export finally handles hidden destination paths. DSC v3 Microsoft.WinGet/Package schema correctly emits boolean false for useLatest instead of a string. Admin settings now export properly through DSC. Quoted paths for signtool and makeappx prevent failures in directories with spaces. And the source reset command actually resets default sources instead of nuking them.
The version bump from 280 to 290 reflects the patch-only nature of the release. Code changes touched 15 files. The roughly seven week gap between the final commit on July 27 and the August 24 release points to a standard stabilization cycle before Microsoft pushes this out through Windows Update or the Microsoft Store.
You can grab WinGet 1.29.290 from the Microsoft Store under App Installer, or pull the .msixbundle directly from GitHub. It requires Windows 10 1809 or later.
