OpenClaw v2026.5.10-beta.5 Release Summary
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.
Sources
- Releasev2026.5.10-beta.5 — openclaw 2026.5.10-beta.5
- PRfix(slack): forward agent identity to draft stream initial message
- PRfeat(slack): add allowBots "mentions" mode (parity with Discord)
- PRfix(skills): normalize backslashes in compacted skill paths on Windows
- PRfeat(session): raise maxPingPongTurns ceiling from 5 to 20 (#52382)
- PRfix(microsoft-foundry): replace unsafe non-null assertion in subscription lookup
- PRfeat(slack): add replyBroadcast parameter for thread reply channel broadcast
- PRfix(gateway): resolve inflight deduplication race for send and poll
- PRfix(infra): keep retryAsync delays above server-supplied Retry-After
- PRfix(auto-reply): guard FOLLOWUP_QUEUES delete against late drain finally
- PRfix(gateway): clear nodeWakeById on no-registration early-return
- PRfix(feishu): accept nested schema 2 card identity
- PRfix(memory): preserve session corpus labels
- PRfix(agents): restore compaction gateway logs
- PRfix(memory-search): label session hits with sessions corpus
- PR[plugin sdk] Consolidate workflow seams and fixtures
- PR[AI-assisted] fix(providers): use llama.cpp runtime context cap
- PRfix(memory-core): cap MEMORY.md size during dreaming promotions to pr…
- PRfix(bonjour): cap advertiser restarts in a sliding window (#74209)
- PR[Feat] Add upload archive install RPC
- PRfix(doctor): don't flag the live compatibility agent dir as orphan
- PRfix(bonjour): avoid probing watchdog repair loops
- PRfix(ui): prevent webchat sends into isolated heartbeat sessions
- PR[plugin sdk] Add session action gateway protocol
- PRfix(memory): skip cron warnings without gateway context
- PRfix(tasks): route group acp completions through parent
- PRfix: preserve gateway install env sources
- PRfix(doctor): surface GH_CONFIG_DIR hint when gh auth lives at a different HOME
- PRfix(cron): mark active-jobs on manual-run path to suppress transient lost marker
- PRfix(doctor): consolidate Gateway service config panels into a single note (#80287)
- PRRedact persisted secret-shaped payloads [AI]
- PRfix(matrix): gate name-based allowlist resolution [AI]
- PREnable realtime Talk instructions config
- PRfix(agents): preserve active exec references across compaction
- PRbuild(pnpm): upgrade workspace to pnpm 11
- PR[Fix] Scope session resolve store loads
- PRfix(yuanbao) support sourceReplyDeliveryMode: "automatic" for group chat
- PRAdd /context map treemap
- PR[codex] Fix Codex app-server OAuth harness auth
- PRfix(runtime): detect Fly Machines as containers
- PRfix(codex): mark native tools active for diagnostics
- PRfix(browser): add pageReady to Chrome MCP existing-session status
- PR[Fix] Share streaming event envelopes
- PR[Fix] Block memory extra path symlink traversal
- PR[Fix] Cache selected channel registry lookups
- PRFix Telegram thinking status defaults
- PRExpose native tool completions to plugin hooks
- PRfix(telegram): honor force document for videos
- PR[codex] fix update v-prefixed version verify
- PRFix Telegram legacy message cache recovery
- PRchore(pnpm): align pnpm 11 follow-up surfaces
- PRfix(slack): retain channel history when requireMention is false
- PRfix(doctor): case-insensitive safe-bin trusted dir matching on macOS/Windows
- PRCron: honor server_error retries
- PRfix(slack): fetch fresh download URL via files.info for DM file attachments
- PRfix(slack): add mrkdwn formatting hints to messageToolHints
- PRfix(delivery): track and log silent delivery failures
- PRfix(slack): include API error details in log messages
- PRfix(agents): replace blank tool names with sentinel to prevent dispatch loops
- PRfeat(delivery): surface deliveryStatus in --json output
- PRfix(acpx): add windowsHide to MCP proxy spawn on Windows
- PRfix(gateway): restore runtime-postbuild sync in watch mode
- PRfix(gateway): reject malformed session kill paths
- PRfix(telegram): show full provider/model label for nested OpenRouter ids
- PRfix(infra): dedupe system events by (text, contextKey)
- PRfix(slack): respect dmScope when updating main session route for DMs
- PRfix(slack): honor configured ACP bindings
- PRfix(slack): make download-file fileId requirement self-evident to LLMs
- PRfix(moonshot): accept moonshotai/<model> as direct-API alias
- PRfix(slack): harden thread continuation gating
- PRfix(gateway): redact fast-path console logs
- PRfix(exec-approvals): lazy-load command explainer
- PRfix(whatsapp): downgrade recovered watchdog disconnects
- PRfix(feishu): keep group_topic message-tool replies inside the topic
- PRfix(browser): extend existing-session status probe
- PRfix(telegram): keep no-response DM turns quiet (no silent-reply rewrite)
- PR[Fix] Remove reverted plugin allow entries
- PRFix agent model override gateway scope
- PR[AI-assisted] fix(whatsapp): delta repeated tool preambles
- PRfix(whatsapp): pass routing ctx to transcribeFirstAudio so echoTranscript can deliver (#79778)
- PRfix: handle Telegram select callbacks safely
- PRfix(slack): wake interactive reply sessions
- PRfix(imessage): wire reply attachments through send-rich --file (with feature gate)
- PRtest: sandbox audit-exec-surface under HOME tempdir
- PRfix(onboard): custom provider context window vs compaction floor (#79428)
- PR[codex] Map ACP thinking to advertised effort key
- PRfix(agents): surface exec failures after claimed success
- PRfix(imessage): WARN-log when private API bridge is unavailable
- PRfix(telegram): preserve debounce for partial draft fragments
- PRFix Copilot token integration identity
- PRfix(config): persist explicit default values
- PRfix(cli): return null for unknown non-plugin commands instead of suggesting plugins.allow
- PRfix(doctor): invalidate persisted plugin registry when a diagnostic source path no longer exists
- PRfix(codex): normalize thread id/sessionId cross-fill before schema validation
- PR[Fix] Wait for Pi abort settle before cleanup
- PRSupport Kimi Anthropic thinking streams