OpenClaw v2026.5.9-beta.1 Release Summary
OpenClaw v2026.5.9-beta.1 Release Summary
Key Changes
Plugin SDK & Developer Experience
OpenClaw has significantly expanded its Plugin SDK to support more complex agentic workflows. A new api.runtime.llm.complete helper allows plugins and context engines to perform single-shot LLM inference using the agent's existing credentials and model configuration. Additionally, the SDK now supports "workflow seams," enabling plugins to register typed session actions, schedule future session turns via the host scheduler, and request bounded agent-finalize retries.
For developers, VS Code debugging is now supported out-of-the-box with new .vscode/launch.json configurations and an optional OUTPUT_SOURCE_MAPS build path for precise TypeScript breakpoints.
Model & Provider Enhancements
- OpenAI Realtime: The default model has been updated to
gpt-realtime-2, and the backend WebSocket bridge has been migrated to the GA session shape. - Google Gemini: Capability detection has been hardened to ensure multimodal models (like Gemini 3 Flash) correctly report image support even when registry lookups fail. Additionally, retired Gemini 3 Pro IDs are now automatically normalized to
google/gemini-3.1-pro-preview. - Amazon Bedrock: Support for the
serviceTierparameter (default,flex,priority,reserved) is now available, allowing users to optimize for cost or latency. - Qwen Support: OpenAI-compatible Qwen models now support
qwenandqwen-chat-templatethinking formats, enabling dynamic control of reasoning via/thinklevels. - Mistral: Added
mistral-medium-3-5to the bundled catalog with reasoning support.
Channel & Integration Updates
- iMessage: Introduced an opt-in "inbound catchup" feature that replays messages received while the gateway was offline. Per-group
systemPromptsupport has also been added to bring iMessage to parity with other group-capable channels. - Telegram: Streaming delivery has been simplified to prevent duplicate final bubbles. The transport layer now includes a recovery probe to return to the primary transport after transient network failures, and the
/thinkpicker now displays the current active thinking level. - Slack: Fixed a session-splitting bug in implicit-conversation channels; root turns and subsequent thread replies now share a single session key.
- Discord: Expanded voice capabilities with new
/vcmodes (STT/TTS, realtime talk buffer, and bidi realtime sessions).
Core Runtime & Performance
- Performance: Significant optimizations have been made to the session list and model resolution paths, reducing response times for large session stores from seconds to milliseconds.
- Stability: The Gateway now avoids false event-loop health degradation during rapid probes.
- Security: HTTP client secrets and auth headers are now redacted in shared logs and formatted error outputs. Config backup restores now force
0600permissions onopenclaw.jsonto protect credentials.
Impact
Fixed Issues
- Windows Stability: Fixed a terminal hang occurring after
openclaw updateon Windows by piping post-core child stdio. ResolvedEPERMerrors during plugin-skill registration by using directory junctions instead of symlinks. - Codex Reliability: Fixed a bug where long-running Codex turns would lose shell/apply_patch permissions due to relay TTL expiration.
- Memory & Dreaming: Resolved a regression where dreaming promotion was blocked because daily notes were skipped if unchanged on disk across calendar days.
- Auth Profiles: Fixed a critical issue where a single session-specific format rejection (e.g., a prefill-strict 400 error) would trigger a provider-wide cooldown, blocking healthy sessions on the same profile.
Breaking Changes
- iMessage: The bundled BlueBubbles channel surface has been removed. Users must migrate to the
channels.imessageconfiguration usingimsgon a signed-in Mac or an SSH wrapper.
Upgrade Guide
Migration Steps
- iMessage Users: If you were using the BlueBubbles integration, you must migrate your configuration to the native iMessage plugin. Refer to the updated
docs/channels/imessage-from-bluebubbles.mdfor specific mapping guidance. - Node.js Version: The supported Node.js floor has been raised to
22.16+to support thenode:sqlitestatement metadata API. It is recommended to use Node 24. - Nix Users: If running in
OPENCLAW_NIX_MODE=1, be aware that mutating commands (e.g.,plugins install,openclaw update) are now refused to maintain the immutability of the Nix store. Configuration changes should be made in the Nix source.
Sources
- Releasev2026.5.9-beta.1 — openclaw 2026.5.9-beta.1
- PRfeat(DX): Add Out-of-the-Box Support for Debugging in VSCode-Based IDEs
- PRfeat(plugin-sdk): add LLM completion API to plugin
- PRfeat(amazon-bedrock): support service_tier parameter for Bedrock models
- PRfeat(ui): add SPA-side support for WebView2 native bridge
- PRfix(agents): ignore ACP-only streamTo and treat default model as unset
- PRfix(backup): retry on tar EOF race and skip known volatile files
- PRfix(memory): warn on unverified qmd path conflicts
- PRfix(qqbot): route gateway websocket through ambient proxy agent
- PRfeat(matrix): expose MessagePresentation metadata in Matrix events
- PR[plugin sdk] Consolidate workflow seams and fixtures
- PRfeat(ui): show persistent chat context usage
- PRfix(gateway): align dedupe eviction with entry timestamp
- PRfix(telegram): chain over-limit stream previews
- PRfix(logging): redact http client secrets
- PRfeat: add user input blocking lifecycle gates
- PR[plugin sdk] Derive tool target paths for hooks
- PR[plugin sdk] Project session extension slots
- PRfix: narrow Gateway proxy bypass target
- PRfix(gateway): avoid false event-loop health degradation
- PRHighlight exec command risks in Web approvals
- PRfix(telegram): recover sticky fetch fallback after transient failures
- PRfix(plugins): forward install records to channel catalog registry
- PRfix(codex): keep native hook relay alive for long turns
- PRfeat: improve Codex skill migration selection
- PRfix(gateway): fast-path qualified session-list model refs
- PRfix(skills): use junction symlinks on Windows to avoid EPERM without Developer Mode (#77958)
- PRconfig: stop automatic writes and guard Nix mutators
- PRfix(msteams): surface network errors blocking bot JWT validation and outbound replies (#77674)
- PRfix(shell-env): hide Windows login shell probe
- PRShow current thinking level in Telegram picker
- PRfix(update): pipe post-core child stdio on Windows to prevent terminal hang (#78445)
- PRfix(slack): seed thread routing for implicit-conversation channels (#78505)
- PRrefactor(telegram): simplify provider delivery and auth
- PRrefactor: stage external output writes through fs-safe
- PRfix(plugins): avoid managed npm prefix on Windows
- PRAdd native sqlite Kysely dialect
- PRfix(openai): use GA realtime bridge for gpt-realtime-2
- PRImprove progress draft labels and tool details
- PRfeat(imessage): per-group systemPrompt (parity with other channels)
- PRUnify thinking and fast run controls
- PRfeat(imessage): inbound catchup (cursor + replay loop + monitor wiring)
- PRdocs: update stale sub-agent context injection details
- PRfeat(yuanbao) update yuanbao channel plugin npm version
- PRfix(models): use effective auth health for status
- PRfix(agents): classify stream_read_error as transient
- PRfix: annotate message-tool-only replies in Codex tool spec
- PRfix(failover): classify assistant-prefill rejection as format error (#79688)
- PRfix(model): restore image input for google multimodal fallback models (#79750)
- PRfix(image-gen): propagate ssrfPolicy into provider HTTP calls (#79716)
- PRfeat(config): support Qwen thinkingFormat values
- PRfix(cli): handle closed plugin uninstall prompt
- PRfix: disable Pi auto-compaction when safeguard mode is active
- PRfix(agents): enforce exact skill path from <available_skills> [AI-assisted]
- PRUpdate QA lab parity gate for GPT-5.5 vs Opus 4.7
- PRfix(windows): resolve gcloud/gog/tailscale PATHEXT shims before spawn
- PRfix(exec): enforce allowlist argument patterns
- PRfix(memory-core): dreaming daily ingestion across calendar days
- PRfix(postinstall): skip EACCES/EPERM compile cache prune warnings
- PRfix(agent-reply): surface CLI subprocess timeout copy (fixes #77007)
- PRfix(codex/app-server): stable mirror idempotency to prevent transcript loss
- PRlint: classify raw socket callsites
- PRfix(auth-profiles): exclude format rejections from profile cooldown
- PRfix(replay-history): drop trailing stream-error placeholder before pr…
- PRfix(session-file-repair): drop null-role message entries instead of p…
- PRfix(doctor): discover load-path plugin contracts
- PRHarden config backup restore permissions
- PRfix: expose ollama thinking profile before activation
- PRfix(sessions): avoid per-row model resolution when selected model metadata is persisted
- PRfix(doctor): avoid impossible device token rotation advice
- PRfix(plugins): repair peer links after npm updates
- PRfix(agents): persist embedded session JSONL transcripts (#77823)
- PRfix(embed): arm lastBlockReplyText only after block reply emission
- PRfix(update): stop dev updates after fetch failure
- PRSimplify Telegram stream final delivery
- PRfix(agents): suppress DeepSeek DSML stream artifacts
- PR[Fix] Preserve node reconnect state
- PRFix Telegram embedded final transcript gap-fill
- PRfix(skill-workshop): honor pending approval for tool suggestions [AI]
- PRHarden macOS shell wrapper allowlist parsing [AI]
- PRfeishu: honor config write policy for dynamic agents [AI]
- PRfix(telegram): fail DM topic sends without threadless retry
- PRfix(discord): prompt agents to suppress link embeds
- PRfix(discord): keep agents quiet when others are addressed
- PRfix(deps): bump basic-ftp
- PRfix(agents): bound live exec output events
- PRfix: surface hook model rejection diagnostics
- PRfix(cli/completion): guard shell profile source line with file-exists check
- PRCompute plugin callback authorization dynamically [AI]
- PRfix(cli): canonicalize infer model refs safely
- PRfix(discord): gate user allowlist name resolution [AI]
- PRfix(msteams): gate startup user allowlist resolution [AI]
- PRfix(whatsapp): ignore outbound echoes for inbound activity
- PRfix(runtime): preserve reviewed routing and transcript behavior
- PRfix(imessage): surface silent group-allowlist drops at default log level
- PRfix: hide subagent announce handoff prompts
- PRfix(gateway): preserve trusted-proxy Control UI scopes
- PRfix(nextcloud-talk): detect missing bot response feature
- PRfix(codex): ignore account updates for turn liveness
- PRfix(google): retry stalled Gemini first response
- PRfix: preserve Cloudflare gateway auth transport
- PRfix: separate Current time from Reference UTC
- PRfix(failover): defer profile cooldown marking to unblock rate-limit rotation
- PRfix(scripts): avoid DEP0190 when spawning .cmd files on Windows (Node.js v24)
- PRfix(gateway): reset webchat /new in place when dmScope is main (#77434)
- PRperf(agents): skip idle wait on abort to release session lock synchronously
- PRrefactor(agents): preserve raw reasoning stream and push formatting to edge
- PRHarden browser download output writes
- PR[Fix] Bound CLI runner supervisor output
- PRfix(telegram): guard DM bindings from being parsed as topics