OpenClaw v2026.5.10-beta.5 Release Summary
Key Changes
Plugin SDK & Workflow Enhancements
OpenClaw has significantly expanded its Plugin SDK to support complex agent workflows. The new infrastructure introduces host-mediated workflow seams, allowing plugins to define typed session actions, send session-bound attachments, and schedule future session turns through the existing cron-compatible scheduler. Additionally, a new finalize-retry mechanism allows plugins to request bounded retries before a reply is finalized, enabling a "review concierge" pattern where a plugin can ask an agent to repair a response before it reaches the user.
Memory & Context Management
To prevent unbounded growth of the MEMORY.md file during dreaming promotion sweeps, a new bounded compaction step has been introduced. The system now drops the oldest auto-promoted sections by date to keep the file size under a default budget (10,000 characters), while unconditionally preserving user-authored notes.
Other context improvements include:
- Context Treemaps: A new
/context mapcommand provides a visual treemap image of current session context contributors. - Execution Persistence: Background
execprocess references are now preserved across embedded compaction, ensuring subagents don't lose track of running processes when their context window is pruned.
Integration Updates
- Slack: Significant hardening of thread continuation and DM scoping. The bot now respects
session.dmScopeto prevent DM interactions from contaminating the global main-session route. Formatting hints for Slack'smrkdwnhave also been added to the system prompt to ensure agents use correct bold/italic syntax. - Telegram: Native
/statusand/thinkmenus now correctly resolve and display model thinking defaults and explicit session overrides. Additionally, the bot now honors the--force-documentflag for video files, routing them throughsendDocumentto avoid compression. - Codex: The app-server now emits diagnostic events for native tool completions (e.g.,
bash,web), preventing the watchdog from aborting long-running native tools as "stale embedded runs."
Infrastructure & Build
- pnpm 11 Upgrade: The workspace has been upgraded to pnpm 11, with project settings moved to
pnpm-workspace.yamlfor better stability across Docker and release workflows. - Security Hardening: Added structured payload redaction for persisted secret-shaped values in logs, trajectory events, and session transcripts. Matrix allowlists now require an explicit opt-in (
dangerouslyAllowNameMatching) to resolve mutable display names.
Impact
Fixed Issues
- Memory Leaks & Crashes: Fixed an OOM crash in
loadCombinedSessionStoreForGatewayby implementing scoped store loads, and resolved a memory leak in the Gateway's node-wake state for unregistered node IDs. - Reliability: Resolved a race condition in gateway inflight deduplication for
sendandpollrequests, and fixed a bug where manual cron runs were transiently marked aslostbefore recovery. - UX/UI: Fixed a bug in the Control UI where isolated heartbeat sessions were selectable as chat targets, and resolved a Telegram issue where nested OpenRouter model IDs were displayed without their provider prefix.
- Diagnostics:
openclaw doctornow provides aGH_CONFIG_DIRhint when GitHub CLI authentication is found in a different HOME directory than the agent process.
Performance
- Streaming Efficiency: Gateway streaming fan-out now shares serialized event envelopes across recipients, reducing redundant JSON serialization on the hot path.
- Registry Lookups: Channel registry lookups are now cached by the selected registry snapshot, improving routing performance for native commands.
Upgrade Guide
Breaking Changes & Migration
- Matrix Allowlists: If your Matrix configuration relies on display names (rather than full MXIDs) in
allowFromorgroupAllowFrom, these will be ignored by default. To restore this behavior, addchannels.matrix.dangerouslyAllowNameMatching: trueto your configuration. - pnpm Workspace: Users performing git source installs will find that build allowlists are now managed via
pnpm-workspace.yaml#allowBuildsinstead of the older package-level configuration.