OpenClaw v2026.5.22 Release Summary
OpenClaw v2026.5.22 Release Summary
Key Changes
OpenClaw v2026.5.22 introduces a series of deep technical optimizations and stability improvements aimed at reducing latency, improving memory management, and hardening the system across different operating systems.
Gateway Performance & Latency
One of the most significant updates is the massive reduction in /models listing latency. By pre-warming the provider auth-state map at startup, the per-call cost for model listing has dropped from approximately 20 seconds to 5 milliseconds—a 4,100× speedup. This ensures that model pickers in Discord and Telegram remain responsive and no longer trigger interaction timeouts.
Further performance gains include:
- Plugin Registry Reuse: The Gateway now reuses compatible startup plugin registries during dispatch, avoiding redundant loads and reducing first-dispatch latency.
- Lazy Loading: Startup-idle plugin work, core gateway method handlers, and the embedded ACPX runtime are now lazy-loaded, allowing Gateway health and ready signals to fire without waiting for unused handler trees.
- Resource Caching: The system now caches plugin SDK public-surface alias maps and reuses immutable plugin metadata snapshots to avoid repeated filesystem stats on hot paths.
Agent & Sub-agent Coordination
Coordination between parent agents and delegated workers has been refined for better token efficiency and reliability:
- Bootstrap Optimization: Users can now configure a specific list of bootstrap files for sub-agents (e.g., using
SUBAGENTS.mdinstead of the fullSOUL.mdandUSER.mdstack), reducing token overhead for delegated tasks. - Completion Delivery: Codex-native
spawn_agentcompletions are now proactively delivered back to the parent session, ensuring that background worker results are visible in Discord without requiring a manual user poke. - Sub-agent Handoff: The native sub-agent completion handoff has been simplified; children now report their latest visible assistant result directly to the requester.
Memory & Session Management
To support high-load deployments, the session store has been re-engineered to reduce memory retention:
- Immutable Read APIs: New snapshot and entry-level read APIs replace mutable full-store clones, preventing the duplication of large
skillsSnapshot.promptstrings that previously led to OOM errors in high-session environments. - Locking Hardening: Session write locks now independently enforce the
maxHoldMspolicy during acquisition, preventing the Gateway from freezing when large session files (>300KB) cause slow writes. - Context Budgeting: The
/statuscommand now exposes estimated context budget snapshots when fresh provider usage is unavailable, providing better visibility into prompt pressure.
OS-Specific Hardening
- macOS (launchd): The
reloadhandoff script now polls for unload completion to preventInput/output errorraces during bootstrap. Additionally, concurrent bootstrap races are now handled gracefully by probing the service state before reporting failure. - Windows: The Codex app-server now validates command overrides to prevent malformed strings (e.g., combining an executable and arguments) from being treated as a single module path. The Windows installer has also been hardened to handle Git checkout failures and bootstrap portable Node.js on raw hosts.
Impact
Fixed Issues
- Stability: Fixed a critical crash in bootstrap context building caused by undefined filenames in workspace bootstrap entries (#85523).
- Reliability: Resolved a bug where
openclaw agentignoredSIGTERMunder cron, leading to hung process chains and RAM exhaustion (#71710). - Connectivity: Fixed a loopback CDP issue where the managed proxy blocked the browser's WebSocket handshake, breaking
openclaw browser startfor users behind proxies (#83255). - Accuracy: Fixed a precision loss bug in the Anthropic transport where large integer IDs (e.g., Discord snowflakes) were rounded during JSON parsing (#47229).
- User Experience: Fixed a bug where
/verbose onwas ignored in normal group sessions, hiding tool and progress summaries (#85488).
Integration Improvements
- xAI/Grok: Added support for xAI OAuth profiles for Grok
web_searchand introduced new Grok model aliases. - Telegram: Improved media delivery by allowing local attachment paths to be sent as actual media rather than text.
- Discord: Added a configurable
agentComponents.ttlMsfor component registry lifetimes, supporting longer-running asynchronous workflows.
Upgrade Guide
Breaking Changes & Migration
- Workspace Provider Plugins: For security hardening, workspace-origin provider plugins are no longer auto-discovered during setup mode unless they are explicitly trusted. Users must add these plugin IDs to the
config.plugins.allowlist to maintain existing behavior. - Codex App-Server (Windows): Manual
appServer.commandoverrides that combine an executable and arguments in a single string are now rejected. Users should remove these overrides and rely on the managed startup path or provide a valid executable path.
Sources
- Releasev2026.5.22 — openclaw 2026.5.22
- PRFix: preserve modelOverride in agent handler (#5369)
- PRfeat(anthropic): migrate 1M context from beta to GA
- PRdocs/types: clarify that omitting accountId in bindings matches default account only, not all accounts
- PRfix(gateway): normalize explicit state dir overrides at startup
- PRfix(memory): report missing qmd workspace cwd
- PRfeat: start onboarding for fresh CLI installs
- PRfix(agents): handle parallel tool call deltas in openai-completions stream
- PRfix(proxy): add missing clientSocket error handler in CONNECT tunnel
- PRfix(browser): bypass managed proxy for loopback CDP
- PRfix(update): repair managed npm plugin peers
- PRAllow Discord component registry TTL override
- PRperf(plugins): reuse compatible gateway startup registry on dispatch
- PRperf: isolate doctor core check tests
- PRfix(sessions): reduce session-store memory retention
- PRSpeed up /models browse replies
- PRfix: summarize internal webchat message tool results
- PRfix(diffs): continue after card hydration errors
- PRperf(models): /models 20s → 5ms via pre-warmed provider auth state
- PRfeat(agents): expose estimated context budget status
- PRfix(cli): validate tasks audit limit
- PRfix(agents): bound embedded compaction write locks
- PRfix(skills): show empty state notice in config wizard
- PRfix(memory-lancedb): expose public memory artifacts
- PRFix Telegram forum-topic subagent completion delivery
- PRfeat: add xAI OAuth web search and provider timeouts
- PRLet plugin binding commands escape bound routes
- PRfix(telegram): send attachment paths as media
- PRAdd chat picker search and pagination
- PR[Fix] Preserve deferred lifecycle errors
- PR[token efficiency] subagent bootstrap files
- PRrefactor(crabbox): parse provider list from binary help instead of hardcoding
- PRfix(twitch): preserve newer message handler during cleanup
- PRRestore Control UI gateway token pairing [AI]
- PRfix(status): bound deep docker audit probes
- PRfix(channels): honor /verbose in group sessions
- PRRecover stuck Codex compaction
- PRfix(microsoft-foundry): DeepSeek models incorrectly use openai-completions API
- PRfix(tools): honor config apiKey in media tool preflight
- PRfix(session): surface previous-transcript archive failures on /new rotation (#81984)
- PRfix(agents): add openai-responses family to non-visible turn retry guard
- PRfix(bootstrap): guard bootstrap name checks against undefined names (#85523)
- PRfix(status): show configured cost for aws-sdk models
- PRfix(cli-output): ignore cumulative usage from result events in stream-json parser (#85573)
- PRfix(agents/harness): pass CLI runtime aliases through to PI in selectAgentHarnessDecision
- PRfix(secrets): show irreversible warning after interactive apply confirmation
- PRfix(gateway): omit stream-error placeholders from agent prompts
- PRperf(utils): preserve message identity in stripInlineDirectiveTagsFromMessageForDisplay
- PRfix(cli): waitForever must keep the event loop alive
- PRfix(session-lock): enforce maxHoldMs in shouldReclaim during lock acquisition
- PRfix(agents): omit empty tools array for proxy-like openai-completions endpoints
- PRfix(status): add gateway delivery health telemetry
- PRfix: resolve per-model api override in auth hooks and transport selection
- PRfix(agents): surface blocked subagent completions
- PRfix(plugins): secure setup-mode provider discovery against untrusted workspace plugins [AI-assisted]
- PRPrepack npm git update specs before install
- PRfix(update): preserve package service state during cutover
- PRfix(anthropic): preserve unsafe integer tool inputs
- PRfix(models): resolve set aliases from runtime config [AI-assisted]
- PRfix(push): use valid default VAPID subject [AI-assisted]
- PRfix(channels): bypass debounce for bare abort triggers [AI-assisted]
- PRfix(code-mode): return structured worker error codes
- PRfix(codex): deliver native spawn_agent completions
- PRfix(code-mode): align outer exec hook params
- PR[AI-assisted] fix(reply): wait for block replies before tools
- PRfix(core): route dmScope main event wakes to agent main
- PRfix(update): harden managed handoff cwd
- PRFix media completion duplicate delivery
- PRLog Discord component registry error details
- PRfix(agent): abort accepted gateway runs on signal
- PRValidate Codex app-server command overrides
- PRfix(gateway): include openclaw bin in service PATH
- PRfix(gateway): harden launchd reload handoff race recovery
- PRfix(gateway): handle concurrent launchd bootstrap restart race
- PRfix #84745: scope Google preview model normalization to Google providers only
- PRfix(gateway): mirror source message sends into transcript
- PRfix(gateway): eager-load lifecycle runtime to survive in-place upgrades
- PRfix(integrations): enforce channel read target allowlists [AI]
- PRfix(agent): await local agent_end hooks
- PRfix(channels): pass allowBootstrap from channel-selection so in-agent message tool resolves channels in --local processes
- PRfix: constrain Windows task script names [AI]
- PRfix(gemini): strip sub-second precision from web_search time_range_filter
- PRfix(openai): preserve codex gpt-5.5 image input
- PRfix(codex): block progress-only completions [AI-assisted]
- PRfix(agent): support explicit CLI session keys
- PRfix(skills): dedupe shared-directory watchers across agent workspaces (#84968)
- PRfix: strip -plugin suffix in deriveIdHint to match manifest ids
- PRfix(gateway): close child ACP sessions on parent reset/delete (#68916)
- PRfix(agents): stop denied exec followups
- PRfix(messages): strip unsupported citation markers
- PRfix(telegram): preserve fenced code languages
- PR[codex] fix control ui chat session picker history
- PR[codex] Clarify inherited thinking off label
- PR[codex] add color mode tooltips
- PR[Fix] Surface gateway connect assembly failures
- PRfix(agents): preserve OpenAI reasoning token usage
- PRFix heartbeat message-tool delivery policy
- PRfix(codex): add API key paste auth
- PRfix(codex): honor node exec policy for native surfaces
- PRFix context pressure preflight for tool-heavy sessions
- PRFix Telegram missing harness spool poison
- PRFix/codex deactivated workspace failover
- PRfix(tui): raise streaming watchdog threshold to 120s and suppress false-positive warning
- PRfix(memory-core): allow bounded dreaming session cleanup
- PRfix(trajectory): tolerate partial skill snapshot entries in support capture
- PRfix(agents): disable pi-coding-agent auto-retry to prevent tool call replay loops
- PRfix(agents): classify auth HTML provider responses
- PRfix(exec): protect pathPrepend against posix login-shell RC overrides
- PRfix(gateway): allow bearer-auth session history reads
- PRKeep legacy Codex OAuth sidecar profiles usable
- PRfix(diffs): replace iconMarkup string with ToolbarIconName enum to el…
- PRfix(agents): tolerate in-process session writes during prompt release
- PRfix(slack): suppress reasoning payloads in non-streaming delivery paths
- PRfix(memory): stop recall tracking when dreaming is disabled
- PRperf(cli): lazy-load agents actions for help
- PRperf(cli): speed up onboarding help startup
- PRSkip empty sherpa structured transcripts
- PRfix(codex): stabilize heartbeat dynamic tool schema
- PRfix(pdf): time out idle remote PDF reads
- PRperf(cli): cache stable subcommand help
- PRfix(config): validate browser sandbox bind sources [AI]
- PRdoctor: constrain legacy plugin cleanup paths [AI]
- PRperf: speed up secrets and nodes help startup
- PRFix Telegram isolated polling stall watchdog
- PRfix(update): prune stale local bundled plugin shadows
- PRfix(codex): beta blocker - keep context engine on canonical session key
- PRFix Discord session recovery abort ownership
- PRHandle Codex turns missing completion
- PRFix Matrix configured two-person room routing
- PRFix inherited XDG env for exec subprocesses
- PRfix: redact denied exec failure params
- PRfix: require configured subagent allowlist targets
- PRfix(codex): surface native compaction failures
- PRfix(telegram): dedupe replayed message dispatches
- PRfix(codex): extend message tool timeout