Chrome 137 removed --load-extension, and the documented way round it is gone too
Branded Chrome accepts --load-extension, loads nothing, and says so only in its own log. Measured on Chrome 151, where the old escape hatch is dead.
4 min readDivyansh Singh
Every profile manager in this category offers per-profile extensions. Assign an ad blocker to one profile, a cookie editor to another, a password manager to a third. The mechanism underneath is nearly always the same one flag: --load-extension, pointed at an unpacked extension directory when the browser starts.
On branded Google Chrome, that flag has done nothing since version 137. It is still accepted. The browser still starts. No error dialog appears, no exit code changes, and the profile opens looking exactly the way it should. The extension is simply not there.
What was measured
Two launches from the same code path, one binary apart.
| Browser | Flag passed | Extension loaded | Where the failure appears |
|---|---|---|---|
| Google Chrome 151.0.7922.76 | Yes | No | One line in Chrome's own debug log |
| Microsoft Edge 151.0.4129.59 | Yes | Yes | Nowhere; it worked |
Both were headed launches against a clean profile directory with no other instance of that browser running. The extension was a small unpacked fixture with a distinctive name in its manifest. Loading was verified over the DevTools Protocol by enumerating targets and reading each extension's own manifest name back, rather than by looking at the toolbar - a toolbar icon is a rendering question and this is not.
Chrome's log line is the entire diagnostic:
--load-extension is not allowed in Google Chrome, ignoringThat file is not open by default. Nothing surfaces the line to the person who just launched the browser. If you are building on top of Chrome and you check for the extension the way most people check - by looking - you will conclude it worked on a machine where it did not.
The workaround that no longer works
The removal in Chrome 137 shipped with a feature flag that turned the old behaviour back on, and that flag is still what search results, forum answers and half the automation libraries in this category will tell you to pass: --disable-features=DisableLoadExtensionCommandLineSwitch.
It was measured on the same Chrome 151 build, on the same fixture, in the same launch path. It changes nothing. The extension does not load, the log line still appears, and the flag is accepted in the same silent way the first one was.
This is worth saying plainly because the advice is everywhere and it is now wrong. An escape hatch that has been closed behaves identically to an escape hatch you spelled correctly and are using properly. There is no signal that distinguishes them.
Why an unrecognised flag is still passed
Ward passes --load-extension to every Chromium engine, including branded Chrome, and then tells the operator that Chrome will ignore it. That looks like a contradiction and is not.
An unrecognised switch on a Chromium command line costs nothing: it is parsed, it matches nothing, and the browser carries on. Special-casing the flag out for Chrome would mean the launcher had to know which builds honour it, which changes with every release and cannot be tested from inside the application. Passing it and being honest about the outcome is a smaller thing to get wrong than maintaining a table of which browser versions still work.
What the operator sees instead is a sentence next to the extension picker saying that branded Chrome will not load these and naming the engines that will. That sentence is a constant in the source, it sits beside the control it qualifies, and it is asserted by a test - the same test that would tell us if Chrome ever started honouring the flag again.
What this means if you manage profiles
Three practical consequences, in the order they will bite.
- If per-profile extensions matter to your work, branded Chrome is not the engine. Edge 151 honours the flag, and that is the half measured here. The removal is specific to Google's own branded builds rather than to the Chromium codebase, which is why Ward's own caveat names Chromium, Edge and Brave as the engines to reach for - but only the Edge half of that sentence has been watched happen on this machine, and the rest of this post is about how little a flag being accepted proves. Check the build you actually intend to use.
- Verify by reading the extension back, not by looking at the browser. Enumerate targets over the DevTools Protocol and check the manifest name. A toolbar that looks right on the machine you tested on proves nothing about the machine you shipped to.
- Distrust any tool that reports extension assignment as successful. Unless it tells you which browser build it was talking to, a success message here means the flag was written onto a command line, not that anything was loaded.
The general shape of this is the one worth carrying away. Browsers are moving switches that used to be for developers behind enterprise policy or removing them outright, and the removals are quiet by design: an error dialog would be a support burden for Google and an invitation to the exact automation the removal was meant to discourage. Silence is cheaper for the vendor and more expensive for everybody building on top.
The only defence is to check the thing itself rather than the flag you passed, and to write down the version number you checked it on.
How this post was checked
- Data source
- Google Chrome 151.0.7922.76 and Microsoft Edge 151.0.4129.59 on Windows 11, clean profile directories, launched from Ward
- Measured with
- The Ward launcher, Chrome's own debug log, and the Chrome DevTools Protocol reading the loaded extensions back
- The claim
- The disable-features escape hatch published everywhere no longer restores the flag on branded Chrome, and the failure is silent everywhere except the log.
Divyansh Singh
Builds Ward at Digital Heroes
Divyansh Singh builds Ward, a Windows manager for many isolated browser profiles, at Digital Heroes. Most of his week is spent in the Chromium command line, the DevTools Protocol and Windows process behaviour. Every measurement quoted in these posts was taken on the machine Ward is built and tested on, with the browser or tool version written down beside the result, and the ones that contradicted what the documentation said are the ones that became posts.
Last reviewed . Corrections and bug reports: support@digitalheroes.co.in.
Ward is the desktop application these measurements came out of
Many browser profiles on one PC, each with its own proxy and its own device identity. Free plan, free account, nothing to buy today.