OpenClaw v2026.5.12-beta.5 Release Summary
OpenClaw v2026.5.12-beta.5 Release Summary
Key Changes
This release focuses on hardening the security posture of the Gateway, expanding the capabilities of the Plugin SDK, and resolving several high-impact stability regressions in agent coordination and memory management.
Security & Authorization Hardening
- Device Pairing & Access: The Gateway now requires explicit pairing approval for setup-code bootstrap and browser-origin sessions. Pending Nodes no longer leak capabilities or permissions until approved, and node-role device token management is now restricted to admin-scoped sessions.
- Trusted Proxy Validation: Source validation for trusted proxies has been hardened to reject non-loopback peers that are local interface addresses, preventing host-local interface addresses from being treated as distinct proxy trust boundaries.
- Tool Authority: Hook-authenticated agent turns routed through CLI backends now use non-owner tool authority, preventing external hook ingress from granting privileged loopback access.
- Browser Control: Navigation checks are now enforced for all
/actinteractions (select, fill, type, evaluate), ensuring that page scripts cannot move a tab to a policy-denied URL between calls.
Plugin SDK & Workflow Enhancements
- Workflow Seams: The Plugin SDK now supports typed session actions, host-mediated outbound attachments, and scheduled session turns via the existing cron-compatible scheduler. Plugins can also request bounded agent-finalize retries.
- Install-Time Scanning: Plugin package installation now includes a comprehensive scan of the installed runtime tree (including
node_modules) to detect blocked code patterns before a plugin is published. - Dependency Management: The workspace has been upgraded to pnpm 11, aligning Docker, install, and update workflows with the new workspace config surface.
Agent & Provider Stability
- Failover Logic: A critical fix resolves a regression where agents would silently freeze during LLM idle timeouts. The system now correctly escalates idle timeouts to model fallback or profile rotation.
- Subagent Coordination: Spurious heartbeat wake-ups on parent sessions triggered by subagent background exec completions have been eliminated, reducing unnecessary LLM invocations.
- OpenAI Compatibility: Tool schemas are now normalized to recursively add
items: {}to array parameters, preventing validation rejections from OpenAI-compatible providers. - Llama.cpp Integration: Self-hosted providers now opportunistically discover the actual loaded runtime context window via the
/propsendpoint, ensuring session budgeting reflects real server limits rather than training ceilings.
Channel & UI Improvements
- Telegram: Fixed a critical bug where bot token rotation caused the bot to go "deaf" due to stale update offsets. The system now fingerprints tokens to detect rotation and reset offsets automatically. Additionally, supported HTML tags are now preserved in replies.
- iMessage: Added support for routing inbound tapbacks as reaction system events and fixed a bug where pasted URLs were treated as media due to Apple's rich-link preview blobs.
- Control UI: Subagent sessions are now visually nested under their parent sessions in the picker using a
└─prefix, and isolated heartbeat sessions are hidden to prevent users from accidentally routing chat input into background sessions.
Impact
Fixed Issues
- #76877: Resolved the "silent freeze" where agents stopped responding mid-work during idle timeouts.
- #80653: Fixed Telegram message loss following bot token rotation.
- #73691: Prevented Gateway freezes caused by unbounded growth of
MEMORY.mdduring dreaming promotions by implementing a bounded compaction budget. - #80381: Fixed
EACCESpermission errors during Docker setup on Windows/WSL by pinning container environment paths. - #66748: Eliminated unnecessary parent-session wake-ups caused by subagent exec completions.
Performance & Reliability
- Memory Efficiency: Session transcript reads now use streaming helpers instead of loading full files into memory, significantly reducing RSS delta for large transcripts (e.g., 200 MiB transcripts now see a peak RSS delta of ~27 MiB instead of ~252 MiB).
- Config Reliability: Concurrent config mutations are now serialized through central transform/write helpers, preventing
ConfigMutationConflictErrorand data loss during simultaneousagents addcalls.
Upgrade Guide
Breaking Changes
- iMessage Allowlists:
allowFromentries for iMessage now strictly require sender handles. Conversation IDs or chat GUIDs are no longer accepted as proof of sender identity (though they remain valid for group admission and message targeting). Users should update theirallowFromconfigurations to use specific sender handles. - Trusted Proxy Config: Deployments that listed the gateway host's own non-loopback interface address in
gateway.trustedProxieswill no longer authenticate direct requests from that address. Use a distinct proxy peer address or the loopback trusted-proxy path.
Migration Steps
- Update pnpm: Ensure you are using pnpm 11 for local development and source installs.
- Review iMessage Config: Check your
allowFromsettings for iMessage to ensure they use sender handles rather than chat IDs.
Sources
- Releasev2026.5.12-beta.5 — openclaw 2026.5.12-beta.5
- PRHandle generic provider internal errors
- PRfeat(session): raise maxPingPongTurns ceiling from 5 to 20 (#52382)
- PRfeat(slack): add replyBroadcast parameter for thread reply channel broadcast
- PRfix(exec): skip heartbeat wake for subagent sessions
- PRfeat(tools): per-sender tool capability tiers via toolsBySender
- PR[Feat] expose session lineage metadata
- PRfix(security): add session transcript redaction guards at bare appendMessage call sites
- PR[Feat] Add single-job cron get path
- PRdocs(subagents): document announce timeout
- PRfix(config): serialize concurrent config mutations
- PRControl UI/sessions: nest subagent sessions under parent with visual prefix
- PRfix(imessage): keep pasted links, ignore Apple preview blobs
- PRbuild(pnpm): upgrade workspace to pnpm 11
- PRfix(security): inline redact into appendSessionTranscriptMessage
- PRAdd /context map treemap
- PRfix(runtime): detect Fly Machines as containers
- PR[AI-assisted] fix(channel): refresh WeCom onboarding install
- PR[security] redact persisted tool result details
- PRfix(agents): escalate LLM idle timeout to model fallback after profile rotation
- PRchore(pnpm): align pnpm 11 follow-up surfaces
- PRfix(telegram): detect same-bot token rotation via fingerprinted offset state
- PRDocs: announce BlueBubbles to iMessage migration
- PR[Fix] Add incremental chat delta payloads
- PRGate node surfaces on pairing approval
- PRfix(acp): drop unsupported timeout config option for claude-agent-acp
- PRfix(memory-wiki): require admin scope for ingest [AI]
- PRRestrict chat sender allowlist matching [AI]
- PRmemory-wiki: require write scope for Obsidian search [AI]
- PRfix: surface silent model fallback failures
- PRfix: skip metadata for build-excluded bundled plugins
- PRfix(azure):Drain split provider stream frames
- PRfix(anthropic): enable Claude CLI session-expired history reseed
- PRfix(telegram): render supported HTML replies
- PRInherit tool restrictions for delegated sessions [AI]
- PRfix: scan plugin runtime entries during install [AI]
- PRLimit hook CLI tool authority [AI]
- PRfix(plugins): scan installed dependency runtime code [AI]
- PRRequire admin scope for node device token management [AI]
- PRbrowser: enforce navigation checks for act interactions [AI]
- PRValidate node exec event provenance [AI]
- PR[AI-assisted] fix(docker): pin setup-time container paths
- PRfix(commitments): write json output to stdout
- PR[AI-assisted] fix(agents): normalize array tool schemas
- PRfix(whatsapp): drain debounced inbound before close
- PRRequire Control UI pairing before proxy-scoped access [AI]
- PRRequire explicit browser device pairing [AI]
- PRHarden trusted-proxy source validation [AI]
- PRRequire approval for setup-code device pairing [AI]
- PRAllow pnpm source updates to build OpenClaw
- PRgateway: pass Talk session scope to resolver [AI]
- PRfeat(imessage): add tapback reaction support as inbound agent events
- PRfix(skills): normalize backslashes in compacted skill paths on Windows
- PRfix(microsoft-foundry): replace unsafe non-null assertion in subscription lookup
- 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(bonjour): avoid probing watchdog repair loops
- PRfix(ui): prevent webchat sends into isolated heartbeat sessions
- PRFix TUI exit after gateway disconnect
- PRfix(agents): use run workspace for post-compaction context
- PRfix(agents): recover read offsets beyond EOF
- PR[plugin sdk] Add session action gateway protocol
- PRfix(memory): skip cron warnings without gateway context
- PRfix(doctor): repair managed plugin openclaw peer links
- 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
- PRbuild: clean up Node.js 26 deprecation warnings
- 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
- PRMake exec command highlighting optional
- PR[Fix] Scope session resolve store loads
- PRMirror Codex native subagents into task registry
- PRfix(yuanbao) support sourceReplyDeliveryMode: "automatic" for group chat
- PR[codex] Fix Codex app-server OAuth harness auth
- 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
- PRfix(telegram): honor force document for videos
- PR[codex] fix update v-prefixed version verify
- PRFix Telegram legacy message cache recovery
- PRfix: stabilize code-mode follow-up tool display and replay
- PRfix: honor configured media generation timeouts
- PRTelegram: keep topic context after reset boundary
- PRfix(matrix): default markdown tables to bullets across Matrix clients
- PRfix(slack): forward agent identity to draft stream initial message
- PRfix(slack): retain channel history when requireMention is false
- PRfix(doctor): case-insensitive safe-bin trusted dir matching on macOS/Windows
- PRfeat(slack): add allowBots "mentions" mode (parity with Discord)
- 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(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(doctor): don't flag the live compatibility agent dir as orphan
- 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(feishu): keep group_topic message-tool replies inside the topic
- PRfix(tasks): route group acp completions through parent
- 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
- PRfix(codex): mark native tools active for diagnostics
- PR[Fix] Wait for Pi abort settle before cleanup
- PRExpose native tool completions to plugin hooks
- PRSupport Kimi Anthropic thinking streams
- PRfix(plugins): retry npm alias override installs
- PRfix(acpx): add windowsHide to MCP proxy spawn on Windows
- PRfix(whatsapp): downgrade recovered watchdog disconnects
- PRTelegram: keep verbose tool results separate from final answers
- PRDisable non-POSIX command approval highlights
- PRfix: abort generic no-progress tool loops
- PRfix: enable native require fast path on Windows for plugin-sdk root alias