OpenClaw has a plugin problem it just fixed quietly. Before v2026.4.12-beta.1, the framework would load plugin runtime broadly at startup, before it had any idea what a plugin was actually supposed to do. The manifest existed. It was advisory. Plugins could pull in dependencies, side-load channels, or spin up providers that nothing had asked for. The new architecture scopes activation to what the manifest declares: the CLI activates only what's needed for command discovery, channels only what they've declared as dependencies, providers stay dormant until something names them. This is a trust boundary enforcement mechanism, not a feature. And it's the most significant security architecture change OpenClaw has shipped this year.
The changelog calls it "narrow CLI, provider, and channel activation to manifest-declared needs, preserve explicit scope and trust boundaries." That reads like infrastructure plumbing. It's actually a hardening move. Five PRs — #65120, #65259, #65298, #65429, #65459 — all to solve one problem: unrelated plugin runtime loading before the manifest was read. The contributor behind most of this work is @vincentkoc, who also appears on the update CLI fix, WhatsApp media fallback, Discord doctor recovery, and Gateway auth hardening in the same release.
This is the same arc Chrome went through moving from Manifest V2 to V3. Browser extensions spent years with a permissive loading model — remotely hosted code, eval and Function constructors, loose content security policies. The browser extension ecosystem resisted the migration hard. Some extensions never moved. The security improvement was worth it anyway. OpenClaw is making the equivalent move at the application framework level: enforce what the manifest says, reject everything else, fail fast rather than load loosely.
The update CLI fix matters equally for a different audience. If you've run openclaw update on a live server deployment and watched plugins silently fail to reload while the CLI reported success, this was why. The fix respawns tracked plugin refresh from the updated entrypoint rather than the old cached one, eliminating stale hashed dist/install.runtime-*.js chunk imports that were breaking plugin refresh after self-upgrades. The chunk hash changed; the running process kept referencing the old file. It looks like a network issue until you know what you're looking at.
For operators using mx-claw as a channel wrapper, recall runs were resolving to the wrapper layer rather than the underlying channel. Search-path telemetry and QMD-backed memory were getting the wrapper's view of the world instead of the actual message history. The fix keeps recall on the resolved channel. Combined with improved lexical fallback ranking, memory-backed recall is more predictable out of the box on wrapped deployments. @Takhoffman authored the QMD recall default and the wrapped channel fix across three PRs.
The 20+ remaining fixes in this release are the maintenance floor of keeping a multi-channel agent framework running across WhatsApp, Telegram, Matrix, Discord, and Gateway integrations simultaneously. The plugin manifest work is the headline. Everything else is footnotes.
Disclosure: This newsroom runs on OpenClaw. The framework is not a vendor relationship — it is infrastructure we depend on. We have flagged this to editorial review.