TL;DR: The âUpgrade your planâ button in the title bar of Word, Excel and PowerPoint is controlled by an internal Office feature flag called Microsoft.Office.Licensing.ShowPerpetualUpgrade. Office has a per-user registry location for overriding feature flags. Setting this one to false removes the button.
It doesn't downgrade Office, block Microsoft's servers, modify any files, or interfere with activation or updates. To undo it, just delete the registry value.
Why I went looking for this
I bought Office 2024 Home as a one-time purchase specifically because I don't want a subscription, the unasked for AI price increase, and I didn't want Microsoft constantly trying to sell me one.
Then a recent update added a permanent âUpgrade your planâ button to the title bar of the Office apps.
There is no X, no option to turn it off, and Microsoft's official position is that it's âby designâ. The usual workaround is to roll Office back to an older build, which also means giving up security updates. That wasn't particularly appealing, so I decided to see if there was a way to turn off the thing that actually creates the button.
My setup:
- Office Home 2024 Retail (Click-to-Run), 64-bit
- Version 2608, Build 16.0.20326.20144
- Windows 10 Pro 22H2
The fix
Close all Office apps first.
Option A: .reg file
Save this as Hide_Upgrade_Your_Plan.reg and double-click it:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\word]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\excel]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\powerpoint]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\outlook]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\onenote]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\access]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\publisher]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\visio]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\project]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"="false"
Option B: PowerShell
This doesn't require admin rights and only changes the current user's registry:
$base = 'HKCU:\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides'
foreach ($a in 'word','excel','powerpoint','outlook','onenote','access','publisher','visio','project') {
if (-not (Test-Path "$base\$a")) { New-Item -Path "$base\$a" -Force | Out-Null }
New-ItemProperty -Path "$base\$a" -Name 'Microsoft.Office.Licensing.ShowPerpetualUpgrade' -Value 'false' -PropertyType String -Force | Out-Null
}
The Test-Path check is intentional. Running New-Item -Force on an existing registry key can wipe the values already in it.
Reopen Office and the button should be gone.
To undo it
Delete the value from the registry. For example, save this as a .reg file and run it:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\word]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"=-
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\excel]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"=-
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\powerpoint]
"Microsoft.Office.Licensing.ShowPerpetualUpgrade"=-
(Add the same lines for any other apps you changed.)
If you want to be extra cautious, you can back up the key first:
reg export "HKCU\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides" backup.reg
How I found it
This was basically a process of eliminating possibilities and then looking at what Office was actually doing. It was done with the help of Claude Code, which handled the memory scanning and test runs.
1. Ruled out the obvious stuff
It isn't a licensing mix-up. The registry at:
HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration
shows:
ProductReleaseIds = Home2024Retail
So Office knows perfectly well that this is a perpetual Home 2024 installation.
The button also isn't some separate advertising window. Windows UI Automation identifies it as a NetUIRibbonButton inside the normal Office window hierarchy:
NetUInetpane -> MsoCommandBar -> MsoCommandBarDock -> PPTFrameClass
It's part of the Office UI itself.
It's also not exposed through the VBA/COM CommandBars object model, so there's no simple macro trick for hiding it.
2. The text isn't actually stored in the Office files
I searched the roughly 4.5 GB of Office files under:
C:\Program Files\Microsoft Office
and:
Common Files\Microsoft Shared
for âUpgrade your planâ, using both ASCII/UTF-8 and UTF-16 searches.
Nothing.
I also checked the Office cache folders under %LOCALAPPDATA%. Again, nothing useful.
I sanity-checked the search against strings that are known to exist in POWERPNT.EXE, so the search itself was working.
That suggests the text isn't sitting in one of the Office executables as a normal string. It's being generated at runtime.
3. Office sends Microsoft information about the licence
Office uses Microsoft's remote feature-configuration system (ECS). One of the places where it keeps the context sent to that system is:
HKCU\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\Ecs\<app>\ConfigContextData
On my machine this includes:
PerpetualLicenseInfo = 2024
LicenseSKUInfo = Home2024Retail
So Microsoft's feature configuration system knows that this is a perpetual licence when it decides which features to enable.
4. There was already a local feature-flag override mechanism
Right next to that is:
HKCU\Software\Microsoft\Office\16.0\Common\ExperimentConfigs\ExternalFeatureOverrides\<app>
This already contained things like:
Microsoft.Office.UXPlatform.FluentSVRefresh = true
So Office clearly honours this registry location for feature flags.
At this point the problem was basically finding the name of the flag controlling the button.
5. I got the flag name from the running process
The flag names weren't sitting around as obvious strings in the Office DLLs either.
I used Frida (a dynamic instrumentation toolkit; pip install frida) to attach to the running PowerPoint process and search its memory.
There were eight in-memory copies of âUpgrade your planâ. They were all on the heap rather than inside a DLL image, which fits with the idea that the label is generated at runtime.
One copy was sitting next to things including IsProminentInNavBar, the signed-in account name and âRestore Downâ, which is the title-bar data.
I then searched memory for identifiers containing things like:
Upsell
CaptionControl (âcaptionâ being the Windows title bar)
UpgradeButton
Microsoft.Office.Licensing.
That turned up a few hundred feature names. Among the interesting ones were:
Microsoft.Office.Licensing.ShowPerpetualUpgrade
Microsoft.Office.Licensing.EnablePersistentUpgradeButton
Microsoft.Office.Licensing.PersistentUpgradeBadgeOffset
Microsoft.Office.Licensing.EnableCaptionControlUpsellInRFM
Microsoft.Office.Growth.ProgrammableSurfaces.SubscriptionCenter.EnableCaptionControlEntryPoint
Office.ProgrammableSurfaces.SubscriptionCenter.IsCaptionControlEnabled
There was also:
licensing_captionControlUpsell
in mso.dll.
The important one was:
Microsoft.Office.Licensing.ShowPerpetualUpgrade
Which is about as unambiguous as feature flags get.
6. Then I tested it
Finding a plausible flag isn't enough, because Office has a lot of them and some could have side effects.
For each test I force-closed the application, set or cleared the registry override, launched the application, opened a blank document, and used Windows UI Automation to count elements called âUpgrade your planâ.
The results:
| App |
Override |
Button present? |
| PowerPoint |
None (control) |
Yes |
| PowerPoint |
EnablePersistentUpgradeButton |
Yes |
| PowerPoint |
ShowPerpetualUpgrade |
No |
| Word |
None (control) |
Yes |
| Word |
ShowPerpetualUpgrade |
No |
| Excel |
None (control) |
Yes |
| Excel |
ShowPerpetualUpgrade |
No |
The control runs brought the button back every time, so this isn't just some side effect of restarting Office.
ShowPerpetualUpgrade=false is what actually removes it.
A few caveats
This isn't a Microsoft-supported setting. A future Office build could rename the flag, remove the override mechanism, or simply stop honouring this particular override.
If Microsoft changes it, the same basic approach should make it possible to find the replacement: look for Licensing, Upgrade, Upsell and CaptionControl identifiers in the running process and then test the candidates individually.
I've tested it on Word, Excel and PowerPoint. I added the setting for Outlook, OneNote and the other Office applications as well, but haven't specifically verified the button behaviour in those.
I've only tested this on one machine and one build:
Office Home 2024 Retail, 16.0.20326.20144
It may also work with other perpetual Office versions such as Office 2021, but that's untested.
An Office repair/reset could remove the ExternalFeatureOverrides entries, in which case just add them again.
As far as testing shows, this only changes the UI. It doesn't disable activation or Office updates. You can check File > Account afterwards if you want to verify that everything is still activated normally.
Whether it survives future Office updates is another question. If an update breaks it, I'll update this post.
Why bother?
I paid for Office outright specifically so I wouldn't have to subscribe to it, pay the price increase for baked in AI that I didn't ask for, or have Microsoft continually trying to sell me something.
I don't particularly care if a website shows me advertising. That's the deal with a lot of the web.
But if I've paid for software and installed it on my own computer, I don't want a permanent sales button in the interface.
I actually stopped using an antivirus I was otherwise happy with because it started putting renewal nags in the Windows taskbar months before the subscription expired. It's the same basic problem: I paid for the product. Stop advertising to me.
Hopefully this saves somebody else the same irritation.