Verify dist/control-ui is
Available Now
Upgrade to v2026.3.22
Security
Largest security patch in project history
ClawHub
New default plugin registry
Rebrand Complete
MoltBot era ends β OPENCLAW_* everywhere
terminal
$ npm i -g openclaw@latest
Stability & Polish Patch
13 targeted fixes β no breaking changes
β Browser/Chrome MCP attach timing
β Gateway pricing recursion fix
β ClawHub macOS auth paths
β Mistral max-token defaults
β Plugin message schema fix
β Security hardening (exec + canvas)
Browser
Browser Fixes
Chrome MCP attach timing & CDP loopback reuse
Before
Chrome MCP treated initial handshake as ready immediately → user-profile timeouts & repeated consent churn on macOS attach flows.
CDP loopback miss → immediate relaunch detection → second-run browser regressions on slower headless Linux.
→
After
Wait for usable state after attach before signalling ready → no more consent churn or timeouts. #52930
Reuse running loopback after short reachability miss → second-run start/open works reliably. #53004
ClawHub
macOS Auth Path Fixes
Skill browsing now stays authenticated on macOS
macOS App Support
→
XDG Config Path
→
Auth Token Resolved
→
Authenticated Browse
Fix 1 — #53034
Honor macOS auth config & XDG auth paths for saved ClawHub credentials so openclaw skills stays signed in.
Fix 2 — #52949
Read local ClawHub login from Application Support path & still honor XDG on macOS for both default and XDG setups.
Fix 3 — #52949
Resolve local auth token for gateway skill browsing & switch browse-all to search — stops 429s & empty lists.
Plugins
Message Tool Schema Fix
Discord components & Slack blocks are optional again — #52970 / #52962
Broken schema (required)
message({
action: 'send',
channel: 'discord',
// components REQUIRED →
// pin/react fails schema!
components: { ... }
})
pin, unpin, react flows all failed validation. Feishu media attachments silently dropped.
→
Fixed schema (optional)
message({
action: 'pin',
channel: 'discord',
// components optional →
// all flows pass schema ✓
})
// Feishu media → outbound path ✓
Discord components & Slack blocks optional. Feishu file/image sends routed correctly.
Gateway
Pricing Infinite Recursion Fix
openrouter/auto bootstrap no longer recurses indefinitely — #53035
Root Cause
openrouter/auto pricing refresh called itself recursively during gateway bootstrap, causing a stack overflow before cached pricing could populate.
→
Impact
OpenRouter auto routes can now populate cached pricing correctly and usage.cost is reported accurately again.
Affected Users
Anyone using openrouter/auto as their routing model saw $0.00 cost on all requests and potential gateway hangs at startup.
Models
Mistral Fix & Doctor Migration
Deterministic 422 errors eliminated — #52599
Problem
Bundled Mistral max-token defaults were set to context-window size — the full context limit.
Persisted provider configs from older installs carried these inflated values, causing Mistral 422 rejects on every request.
→
Fix
Lowered bundled Mistral max-token defaults to safe output budgets.
openclaw doctor --fix now repairs old persisted configs automatically — no manual edits required.
Also Fixed
web_search now uses the active runtime provider instead of stale/default selection. #53020
Agent turns consistently hit the provider you actually configured.
Security
Security Hardening
Exec approvals • Gateway auth • Canvas routes
Exec Approvals
Shell-wrapper positional-argv allowlist now rejects single-quoted $0/$n tokens, disallows newline-separated exec, and still accepts exec -- carrier forms.
Gateway Auth
Canvas routes now require authentication. Agent session reset requires admin scope. Anonymous canvas access and non-admin reset requests fail closed.
Defense in Depth
Three independent hardening points closing different attack surfaces: CLI injection, API auth bypass, and admin privilege escalation.
Gateway
Gateway Stability
Probe false-negatives • Supervision lock crash-loop
Probe False-Negative — #52927
Before: Successful gateway handshakes timed out as unreachable while post-connect detail RPCs were still loading on slow devices.
After: Slow devices report a reachable RPC failure instead of a false-negative dead gateway.
Supervision Lock — #52922
Before: Lock conflicts under launchd/systemd caused duplicate processes to exit as failures, crash-looping the supervisor.
After: Duplicate process enters a retry wait while the healthy gateway owns the lock — no more crash-loops.
Matrix & Release
Matrix & Install Fixes
Startup crash eliminated • Bundled plugins preserved
Matrix Crash — #52909 / #52891
Root cause: Duplicate resolveMatrixAccountStringValues runtime-API exports under Jiti caused a Cannot redefine property crash at startup.
Fix: Deduplicated exports — bundled Matrix installs start cleanly.
Release / npm Install
Before: Previously released bundled plugins and Control UI assets were stripped from npm publishes.
After: Bundled plugins & UI assets are preserved in npm publishes. Release checks now fail if shipped artifacts are missing.
v2026.3.23 Summary
Pure stability patch — safe to upgrade immediately
Browser Attach
ClawHub Auth
Plugin Schema
Gateway Pricing
Mistral Tokens
Security
Gateway Stability
Matrix Crash
npm Install
npm update -g openclaw
Then run: openclaw doctor --fix