chore(deps): update ghcr.io/openclaw/openclaw docker tag to v2026.4.26 #25

Merged
notarock-s-renovate[bot] merged 1 commit from renovate/docker-images into main 2026-04-29 02:51:37 +00:00
notarock-s-renovate[bot] commented 2026-04-27 13:04:52 +00:00 (Migrated from github.com)

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
ghcr.io/openclaw/openclaw (source) final patch 2026.4.242026.4.26

Release Notes

openclaw/openclaw (ghcr.io/openclaw/openclaw)

v2026.4.26

Compare Source

Changes
  • Control UI/Talk: add a generic browser realtime transport contract, Google Live browser Talk sessions with constrained ephemeral tokens, and a Gateway relay for backend-only realtime voice plugins. Thanks @​VACInc.
  • CLI/models: route provider-filtered model listing through an explicit source plan so user config, installed manifest rows, Provider Index previews, and scoped runtime fallbacks keep a stable authority order without adding another catalog cache. Thanks @​shakkernerd.
  • Plugins/cron: add a typed cron_changed hook for observing gateway-owned cron lifecycle updates without depending on internal cron events. Thanks @​amknight.
  • Providers: add Cerebras as a bundled plugin with onboarding, static model catalog, docs, and manifest-owned endpoint metadata.
  • Memory/OpenAI-compatible: add optional memorySearch.inputType, queryInputType, and documentInputType config for asymmetric embedding endpoints, including direct query embeddings and provider batch indexing. Carries forward #​63313 and #​60727. Thanks @​HOYALIM and @​prospect1314521.
  • Ollama/memory: add model-specific retrieval query prefixes for nomic-embed-text, qwen3-embedding, and mxbai-embed-large memory-search queries while leaving document batches unchanged. Carries forward #​45013. Thanks @​laolin5564.
  • Plugins/providers: move pre-runtime model-id normalization, provider endpoint host metadata, and OpenAI-compatible request-family hints into plugin manifests so core no longer carries bundled-provider routing tables.
  • Plugins/config: deprecate direct plugin config load/write helpers in favor of passed runtime snapshots plus transactional mutation helpers with explicit restart follow-up policy, scanner guardrails, runtime warnings, and revision-based cache invalidation.
  • Plugins/install: allow OPENCLAW_PLUGIN_STAGE_DIR to contain layered runtime-dependency roots, resolving read-only preinstalled deps before installing missing deps into the final writable root. Fixes #​72396. Thanks @​liorb-mountapps.
  • Control UI: add a raw config pending-changes diff panel that parses JSON5, redacts sensitive values until reveal, and avoids fake raw-edit callbacks when opening the panel. Refs #​39831; supersedes #​48621 and #​46654. Thanks @​JiajunBernoulli and @​BunsDev.
  • Control UI: polish the quick settings dashboard grid so common cards align across desktop, tablet, and mobile layouts without wasting horizontal space. Thanks @​BunsDev.
  • Matrix/E2EE: add openclaw matrix encryption setup to enable Matrix encryption, bootstrap recovery, and print verification status from one setup flow. Thanks @​gumadeiras.
  • Agents/compaction: add an opt-in agents.defaults.compaction.maxActiveTranscriptBytes preflight trigger that runs normal local compaction when the active JSONL grows too large, requiring transcript rotation so successful compaction moves future turns onto a smaller successor file instead of raw byte-splitting history. Thanks @​vincentkoc.
  • CLI/migration: add a bundled Claude importer that previews and applies Claude Code and Claude Desktop instructions, MCP servers, skills, command prompts, and safe archive/manual-review state. Thanks @​vincentkoc.
  • CLI/migration: add openclaw migrate with plan, dry-run, JSON, pre-migration backup, onboarding detection, archive-only report copies, and a bundled Hermes importer for configuration, memory/plugin hints, model providers, MCP servers, skills, and supported credentials. Thanks @​NousResearch.
Fixes
  • Gateway/device tokens: stop echoing rotated bearer tokens from shared/admin device.token.rotate responses while preserving the same-device token handoff needed by token-only clients before reconnect. (#​66773) Thanks @​MoerAI.

  • Agents/sessions_spawn: resolve configured bare model aliases for spawn model overrides using the target agent runtime default provider, carrying forward the alias-specific #​69029 review fixes from #​59681 without the unrelated active-session pruning path. Fixes #​59681. Thanks @​HowdyDooToYou.

  • Control UI/Talk: keep Google Live browser sessions on the WebSocket transport instead of falling back to WebRTC, validate browser Google Live WebSocket endpoints, cap Gateway relay sessions per browser connection, and remove stale browser-native voice buttons that did not use the configured Talk/TTS provider. Thanks @​BunsDev.

  • Gateway/startup: reuse config snapshot plugin manifests for startup auto-enable before plugin bootstrap plans plugin loading. Thanks @​shakkernerd.

  • Agents/subagents: enforce subagents.allowAgents for explicit same-agent sessions_spawn(agentId=...) calls instead of auto-allowing requester self-targets. Fixes #​72827. Thanks @​oiGaDio.

  • ACP/sessions_spawn: let explicit sessions_spawn(runtime="acp") bootstrap turns run while acp.dispatch.enabled=false still blocks automatic ACP thread dispatch. Fixes #​63591. Thanks @​moeedahmed.

  • CLI/update: install npm global updates into a verified temporary prefix before swapping the package tree into place, preventing mixed old/new installs and stale packaged files from breaking openclaw update verification. Thanks @​shakkernerd.

  • Gateway: skip CLI startup self-respawn for foreground gateway runs so low-memory Linux/Node 24 hosts start through the same path as direct dist/index.js without hanging before logs. Fixes #​72720. Thanks @​sign-2025.

  • Google Meet: grant Meet media permissions through browser control and pin local Chrome audio defaults to BlackHole 2ch, so joined agents no longer show Permission needed or use macOS default audio devices. Thanks @​DougButdorf.

  • Gateway: treat uncaught broken-pipe stream errors like EPIPE as non-fatal so Discord delivery or closed pipes no longer crash the Gateway after a reply is ready.

  • Google Meet: route local Chrome joins through OpenClaw browser control instead of raw default Chrome, so agents use the configured OpenClaw browser profile when opening Meet. Thanks @​oromeis.

  • Plugins/discovery: follow symlinked plugin directories in global and workspace plugin roots while keeping broken links ignored and existing package safety checks in place. Fixes #​36754; carries forward #​72695 and #​63206. Thanks @​Quackstro, @​ming1523, and @​xsfX20.

  • Plugins/install: skip test files and directories during install security scans while still force-scanning declared runtime entrypoints, so packaged test mocks no longer block plugin installs. Fixes #​66840; carries forward #​67050. Thanks @​saurabhjain1592 and @​Magicray1217.

  • Plugins/install: allow exact package-manager peer links back to the trusted OpenClaw host package during install security scans while continuing to block spoofed or nested escaping node_modules symlinks. Carries forward #​70819. Thanks @​fgabelmannjr.

  • Plugins/install: resolve plugin install destinations from the active profile state dir across CLI, ClawHub, marketplace, local path, and channel setup installs, so openclaw --profile <name> plugins install ... no longer writes into the default profile. Fixes #​69960; carries forward #​69971. Thanks @​FrancisLyman and @​Sanjays2402.

  • Plugins/registry: suppress duplicate-plugin startup warnings when a tracked npm-installed plugin intentionally overrides the bundled plugin with the same id. Carries forward #​48673. Thanks @​abdushsk.

  • Plugins/startup: reuse canonical realpath lookups throughout each plugin discovery pass, including package and manifest boundary checks, so Windows npm-global startups no longer repeat expensive path resolution for the same plugin roots. Fixes #​65733. Thanks @​welfo-beo.

  • Gateway/proxy: pass ALL_PROXY / all_proxy into the global Undici env-proxy dispatcher and provider proxy-fetch helper while keeping SSRF trusted-proxy auto-upgrade on HTTP_PROXY / HTTPS_PROXY only, so gateway/provider calls honor all-proxy setups without weakening guarded fetches. Fixes #​43821; carries forward #​43919. Thanks @​RickyTong1.

  • Providers/LiteLLM: honor --custom-base-url during non-interactive API-key onboarding without adding proxy discovery side effects, so scripted remote LiteLLM setup keeps the requested endpoint instead of falling back to localhost. Carries forward #​66160. Thanks @​dongs0104.

  • Reply/link understanding: keep media and link preprocessing on stable runtime entrypoints and continue with raw message content if optional enrichment fails, so URL-bearing messages are no longer dropped after stale runtime chunk upgrades. Fixes #​68466. Thanks @​songshikang0111.

  • Discord: persist routed model-picker overrides when the hidden /model dispatch succeeds but the bound thread session store is still stale, including LM Studio suffixed model ids. Carries forward #​61473. Thanks @​Nanako0129.

  • Nodes/CLI: add openclaw nodes remove --node <id|name|ip> and node.pair.remove so stale gateway-owned node pairing records can be cleaned without hand-editing state files.

  • Gateway: include the connecting client and fresh presence version in the initial hello-ok snapshot, so clients no longer need a follow-up event before seeing themselves online.

  • Docker: install the CA certificate bundle in the slim runtime image so HTTPS calls from containerized gateways no longer fail TLS setup after the bookworm-slim base switch. Fixes #​72787. Thanks @​ryuhaneul.

  • Providers/OpenRouter: remove retired Hunter Alpha and Healer Alpha static catalog rows and disable proxy reasoning injection for stale Hunter Alpha configs, so replies are not hidden when OpenRouter returns answer text in reasoning fields. Fixes #​43942. Thanks @​EvanDataForge.

  • Providers/reasoning: let Groq and LM Studio declare provider-native reasoning effort values, so Qwen thinking models receive none/default or off/on instead of OpenAI-only low/medium values. Fixes #​32638. Thanks @​Aqu1bp, @​mgoulart, @​Norpps, and @​BSTail.

  • Local models: default custom providers with only baseUrl to the Chat Completions adapter and trust loopback model requests automatically, so local OpenAI-compatible proxies receive /v1/chat/completions without timing out. Fixes #​40024. Thanks @​parachuteshe.

  • Channels/message tool: surface Discord, Slack, and Mattermost user:/channel: target syntax in the shared message target schema and Discord ambiguity errors, so DM sends by numeric id stop burning retries before finding user:<id>. Fixes #​72401. Thanks @​garyd9, @​hclsys, and @​praveen9354.

  • Agents/tools: scope tool-loop detection history to the active run when available, so scheduled heartbeat cycles no longer inherit stale repeated-call counts from previous runs. Fixes #​40144. Thanks @​mattbrown319.

  • Agents/subagents: preserve requester delivery for completion announces when a child agent is bound to a different channel account while keeping same-channel thread completions routed to the child thread. Thanks @​sfuminya.

  • Agents/subagents: fail closed instead of selecting a single child thread binding when completion delivery lacks requester conversation signal. Thanks @​suyua9.

  • Agents/status: persist the post-compaction token estimate from auto-compaction when providers omit usage metadata, so /status and session lists keep showing fresh context usage after compaction. Fixes #​67667; carries forward #​72822. Thanks @​Jimmy-xuzimo and @​skylight-9.

  • Control UI: show loading, reload, and retry states when a lazy dashboard panel cannot load after an upgrade, so the Logs tab no longer appears blank on stale browser bundles. Fixes #​72450. Thanks @​sobergou.

  • Gateway/plugins: start the Gateway in degraded mode when a single plugin entry has invalid schema config, and let openclaw doctor --fix quarantine that plugin config instead of crash-looping every channel. Fixes #​62976 and #​70371. Thanks @​Doraemon-Claw and @​pksidekyk.

  • Agents/plugins: skip malformed plugin tools with missing schema objects and report plugin diagnostics, so one broken tool no longer crashes Anthropic agent runs. Fixes #​69423. Thanks @​jmnickels.

  • Agents/reasoning: recover fully wrapped unclosed <think> replies that would otherwise sanitize to empty text while keeping strict stripping for closed reasoning blocks and unclosed tails after visible text. Fixes #​37696; supersedes #​51915. Thanks @​druide67 and @​okuyam2y.

  • Control UI/Gateway: bind WebChat handshakes to their active socket and reject post-close server registrations, so aborted connects no longer leave zombie clients or misleading duplicate WebSocket connection logs. Fixes #​72753. Thanks @​LumenFromTheFuture.

  • Agents/fallback: split ambiguous provider failures into empty_response, no_error_details, and unclassified, and add flat fallback-step fields to structured fallback logs so primary-model failures stay visible when later fallbacks also fail. Fixes #​71922; refs #​71744. Thanks @​andyk-ms and @​nikolaykazakovvs-ux.

  • Gateway/startup: reuse the plugin manifest registry inside config validation so restrictive plugin allowlists avoid a duplicate manifest pass during startup. Thanks @​shakkernerd.

  • Gateway/startup: run plugin auto-enable from authored source config and skip disabled setup probes, avoiding runtime-default plugin allowlist writes and a second config snapshot read during startup. Thanks @​shakkernerd.

  • Plugins/Windows: normalize Windows absolute paths before handing bundled plugin modules to Jiti, so Feishu/Lark message sending no longer fails with unsupported c: ESM loader URLs. Fixes #​72783. Thanks @​jackychen-png.

  • CLI/doctor: run bundled plugin runtime-dependency repairs through the async npm installer with spinner/line progress and heartbeat updates, so long openclaw doctor --fix installs no longer look hung in TTY or piped output. Fixes #​72775. Thanks @​dfpalhano.

  • Feishu/Windows: normalize bundled channel sidecar loads before Jiti evaluates them, so Feishu outbound sends no longer fail with raw C: ESM loader errors on Windows. Fixes #​72783. Thanks @​jackychen-png.

  • Agents/tools: ignore volatile exec runtime metadata when comparing tool-loop outcomes, so enabled loop detection can stop repeated identical shell-command results instead of resetting on duration, PID, session, or cwd changes. Fixes #​34574; supersedes #​41502. Thanks @​gucasbrg and @​Zcg2021.

  • Agents/fallback: classify internal live-session model switch conflicts as unknown fallback failures instead of provider overloads, preventing local vLLM endpoints from receiving misleading overloaded cooldowns. Refs #​63229. Thanks @​clawdia-lobster.

  • Discord: let thread sessions inherit the parent channel's session-level /model override as a model-only fallback without enabling parent transcript inheritance. Fixes #​72755. Thanks @​solavrc.

  • Gateway/plugins: skip stale configured channels whose matching plugin is no longer discoverable, point cleanup at openclaw doctor --fix, and keep unrelated channel typos fatal so one missing channel plugin no longer crash-loops the Gateway. Fixes #​53311. Thanks @​futhgar.

  • Control UI: keep session-specific assistant identity loads authoritative after WebSocket connect, so non-main agent chat sessions do not show the main agent name in the header after bootstrap refreshes. Fixes #​72776. Thanks @​rockytian-top.

  • Agents/Qwen: preserve exact custom modelstudio provider configs with foreign api owners so explicit OpenAI-compatible Model Studio endpoints no longer get normalized into the bundled Qwen plugin path. Fixes #​64483. Thanks @​FiredMosquito831.

  • MCP/bundle-mcp: normalize CLI-native type: "http" MCP server entries to OpenClaw transport: "streamable-http" on save, repair existing configs with doctor, and keep embedded Pi from falling back to legacy SSE GET-first startup for those servers. Fixes #​72757. Thanks @​Studioscale.

  • OpenCode: expose Anthropic Opus/Sonnet 4.x thinking levels for proxied Claude models, so /think xhigh, /think adaptive, and /think max validate consistently with the direct Anthropic provider. Fixes #​72729. Thanks @​haishmg and @​aaajiao.

  • Media-understanding/audio: migrate deprecated {input} placeholders in legacy audio.transcription.command configs to {{MediaPath}}, so custom audio transcribers no longer receive the literal placeholder after doctor repair. Fixes #​72760. Thanks @​krisfanue3-hash.

  • Ollama/WSL2: warn when GPU-backed WSL2 installs combine CUDA visibility with an autostarting ollama.service using Restart=always, and document the systemd, .wslconfig, and keep-alive mitigation for crash loops. Carries forward #​61022; fixes #​61185. Thanks @​yhyatt.

  • Ollama/onboarding: de-dupe suggested bare local models against installed :latest tags and skip redundant pulls, so setup shows the installed model once and no longer says it is downloading an already available model. Fixes #​68952. Thanks @​tleyden.

  • Memory-core/doctor: keep doctor.memory.status on the cached path by default and only run live embedding pings for explicit deep probes, preventing slow local embedding backends from blocking Gateway status checks. Fixes #​71568. Thanks @​apex-system.

  • Memory/QMD: group same-source collections into one QMD search invocation when the installed QMD supports multiple -c filters, while keeping older QMD builds on the per-collection fallback. Fixes #​72484; supersedes #​72485 and #​69583. Thanks @​BsnizND and @​zeroaltitude.

  • Memory/QMD: accept QMD status vector-count variants such as Vectors = 42, Vectors:42, and Vectors: 42 embedded, so memory status --deep no longer reports embeddings unavailable for healthy QMD wrappers. Fixes #​63652; carries forward #​63678. Thanks @​apoapostolov and @​WarrenJones.

  • Memory/QMD: skip QMD vector status probes and embedding maintenance in lexical searchMode: "search", so BM25-only QMD setups on ARM do not trigger llama.cpp/Vulkan builds during status checks or embed cycles. Fixes #​59234 and #​67113. Thanks @​PrinceOfEgypt, @​Vksh07, @​Snipe76, @​NomLom, @​t4r3e2q1-commits, and @​dmak.

  • Memory/QMD: report the live watcher dirty state in memory status, so changed QMD-backed memory files show as dirty until the queued sync finishes. Fixes #​60244. Thanks @​xinzf.

  • Compaction: skip oversized pre-compaction checkpoint snapshots and prune duplicate long user turns from compaction input and rotated successor transcripts, preventing retry storms from being preserved across checkpoint cycles. Fixes #​72780. Thanks @​SweetSophia.

  • Control UI/Cron: render cron job prompts and run summaries as sanitized markdown in the dashboard, with full-width block content, safer link clicks, and no duplicate error text when a failed run has no summary. Supersedes #​48504. Thanks @​garethdaine.

  • Control UI/Gateway: preserve WebChat client version labels across localhost, 127.0.0.1, and IPv6 loopback aliases on the same port, avoiding misleading vcontrol-ui connection logs while investigating duplicate-message reports. Refs #​72753 and #​72742. Thanks @​LumenFromTheFuture and @​allesgutefy.

  • Agents/reasoning: treat orphan closing reasoning tags with following answer text as a privacy boundary across delivery, history, streaming, and Control UI sanitizers so malformed local-model output cannot leak chain-of-thought text. Fixes #​67092. Thanks @​AnildoSilva.

  • Memory-core: run one-shot memory CLI commands through transient builtin and QMD managers so memory index, memory status --index, and memory search no longer start long-lived file watchers that can hit macOS EMFILE limits. Fixes #​59101; carries forward #​49851. Thanks @​mbear469210-coder and @​maoyuanxue.

  • Agents/ACP: ship the Claude ACP adapter with OpenClaw and require Claude result messages before idle can complete a prompt, preventing parent agents from waking early on long-running sessions_spawn(runtime: "acp", agentId: "claude") children. Fixes #​72080. Thanks @​siavash-saki and @​iannwu.

  • CLI/tasks: route tasks --json, tasks list --json, and tasks audit --json through a lean JSON path so read-only task inspection no longer loads unrelated plugin/runtime command graphs. Fixes #​66238. Thanks @​ChuckChambers.

  • Memory-core: re-resolve the active runtime config whenever memory_search or memory_get executes, so provider changes made by config.patch stop leaving stale embedding backends behind in existing tool instances. Fixes #​61098. Thanks @​BradGroux and @​Linux2010.

  • WebChat: keep bare /new and /reset startup instructions out of visible chat history while preserving /reset <note> as user-visible transcript text. Fixes #​72369. Thanks @​collynes and @​haishmg.

  • Tasks/memory: checkpoint and truncate SQLite WAL sidecars on a timer and before close for task, Task Flow, proxy capture, and builtin memory databases, bounding long-running gateway *.sqlite-wal growth. Fixes #​72774. Thanks @​dfpalhano.

  • CLI/doctor: remove dangling channel config, heartbeat targets, and channel model overrides when stale plugin repair removes a missing channel plugin, preventing Gateway boot loops after failed plugin reinstalls. Fixes #​65293. Thanks @​yidecode.

  • Control UI/Gateway: cache, coalesce, stale-refresh, and invalidate effective tool inventory on channel registry changes while reusing the gateway-bound plugin registry and avoiding model/auth discovery, so chat runs no longer stall Control UI requests on repeated plugin/model setup. Fixes #​72365; supersedes #​72558. Thanks @​Gabiii2398 and @​1yihui.

  • Channels/setup: treat bundled channel plugins as already bundled during channels add and onboarding, enabling them without writing redundant plugins.load.paths entries or path install records. Fixes #​72740. Thanks @​iCodePoet.

  • WhatsApp: honor gateway HTTPS_PROXY / HTTP_PROXY env vars for QR-login WebSocket connections, while respecting NO_PROXY, so proxied networks no longer fall back to direct mmg.whatsapp.net connections that time out with 408. Fixes #​72547; supersedes #​72692. Thanks @​mebusw and @​SymbolStar.

  • Bonjour: default mDNS advertisements to the system hostname when it is DNS-safe, avoiding openclaw.local probing conflicts and Gateway restart loops on hosts such as Lobster or ubuntu. Fixes #​72355 and #​72689; supersedes #​72694. Thanks @​mscheuerlein-bot, @​gcusms, @​moyuwuhen601, @​pavan987, @​zml-0912, @​hhq365, and @​SymbolStar.

  • Agents/OpenAI-compatible: retry replay-safe empty stop turns once for openai-completions endpoints, so transient empty local backend responses no longer surface as “Agent couldn't generate a response” when a continuation succeeds, and restore openclaw agent --model for one-shot CLI runs. Fixes #​72751. Thanks @​moooV252.

  • Git hooks: skip ignored staged paths when formatting and restaging pre-commit files, so merge commits no longer abort when .gitignore newly ignores staged merged content. Fixes #​72744. Thanks @​100yenadmin.

  • Memory-core/dreaming: add a supported dreaming.model knob for Dream Diary narrative subagents, wired through phase config and the existing plugin subagent model-override trust gate. Refs #​65963. Thanks @​esqandil and @​mjamiv.

  • Agents/Anthropic: remove trailing assistant prefill payloads when extended thinking is enabled, so Opus 4.7/Sonnet 4.6 requests do not fail Anthropic's user-final-turn validation. Fixes #​72739. Thanks @​superandylin.

  • Agents/vLLM/Qwen: add plugin-owned Qwen thinking controls for vLLM chat-template kwargs and DashScope-style top-level enable_thinking flags, including preserved thinking for agent loops. Fixes #​72329. Thanks @​stavrostzagadouris.

  • Memory-core/dreaming: treat request-scoped narrative fallback as expected, skip session cleanup when no subagent run was created, and remove duplicate phase-level cleanup so fallback no longer emits warning noise. Fixes #​67152. Thanks @​jsompis.

  • Agents/exec: apply configured tools.exec.timeoutSec to background, yieldMs, and node system.run commands when no per-call timeout is set, preventing auto-backgrounded and remote node commands from running indefinitely. Fixes #​67600; supersedes #​67603. Thanks @​dlmpx and @​kagura-agent.

  • Config/doctor: stop masking unknown-key validation diagnostics such as agents.defaults.llm, and have openclaw doctor --fix remove the retired agents.defaults.llm timeout block. Thanks @​aidiffuser.

  • CLI/startup: keep the built pre-dispatch CLI graph free of package-level imports and extend packaged CLI smoke coverage to onboard and doctor help paths, preventing missing runtime dependencies such as tslog from killing onboarding before repair code can run. Fixes #​63024. Thanks @​hu19940121.

  • CLI/plugins: preserve unversioned ClawHub install specs so plugins update can follow newer ClawHub releases instead of pinning to the initially resolved version. Fixes #​63010; supersedes #​58426. Thanks @​kangsen1234 and @​robinspt.

  • Memory-core/subagents: tag plugin-created subagent sessions with their plugin owner so dreaming narrative cleanup can delete its own ephemeral sessions without granting broad admin session deletion. Fixes #​72712. Thanks @​BSG2000.

  • Gateway/models: move local-provider pricing opt-outs, OpenRouter/LiteLLM aliases, and proxy passthrough pricing lookup into plugin manifest metadata so core no longer carries extension-specific pricing tables.

  • CLI/update: honor OPENCLAW_NO_AUTO_UPDATE=1 as a gateway startup kill-switch for configured background package auto-updates, so operators can hold a deliberate downgrade during incident recovery without editing config first. Fixes #​72715. Thanks @​Xivi08.

  • Agents/Claude CLI: force live-session launches to include --output-format stream-json whenever OpenClaw adds --input-format stream-json, so new Claude CLI sessions no longer fail immediately while reusable sessions keep working. Fixes #​72206. Thanks @​kwangwonkoh and @​Xivi08.

  • CLI/plugins: accept ClawHub plugin API wildcard ranges such as * without rejecting compatible plugin installs, while still requiring a valid runtime API version. Fixes #​56446; supersedes #​56466. Thanks @​darconada and @​claygeo.

  • CLI/plugins: add an explicit npm:<package> install prefix that skips ClawHub lookup for known npm packages while keeping bare package specs ClawHub-first. Fixes #​55805; supersedes #​54377. Thanks @​Zeoy2020 and @​vagusX.

  • CLI/plugins: let config-gated bundled plugins install without persisting invalid placeholder config entries, so install/uninstall sweeps can cover plugins such as memory-lancedb before the user configures credentials. Thanks @​vincentkoc.

  • CLI/plugins: reject malformed ClawHub plugin specs with trailing @ before registry lookup, so empty-version typos report as invalid specs instead of package-not-found errors. Fixes #​56579; supersedes #​56582. Thanks @​Kansodata.

  • Agents/sessions: acquire the session write lock only after cold bootstrap, plugin, and tool setup so fallback runs are not blocked by stalled pre-model startup work.

  • Browser/plugins: auto-start the bundled browser plugin when root browser config is present, including restrictive plugin allowlists, and ignore stale persisted plugin registries whose package paths no longer exist.

  • Browser: circuit-break repeated managed Chrome launch failures per profile so browser requests stop spawning Chromium indefinitely when CDP cannot start. Fixes #​64271. Thanks @​TheophilusChinomona.

  • Gateway/models: skip external OpenRouter and LiteLLM pricing refreshes for local/self-hosted model endpoints so startup does not wait on remote pricing catalogs for local-only Ollama, vLLM, and compatible providers.

  • CLI/plugins: stop security-blocked plugin installs from retrying as hook packs, so normal plugin packages report the scanner failure without a misleading "not a valid hook pack" follow-up. Fixes #​61175; supersedes #​64102. Thanks @​KonsultDigital and @​ziyincody.

  • Agents/Anthropic: strip stale trailing assistant prefill turns from outbound replay so context-engine short circuits cannot send unsupported assistant-prefill payloads to provider APIs. Fixes #​72556. Thanks @​Veda-openclaw.

  • Agents/Google: strip stale trailing assistant/model prefill turns from Gemini outbound replay so Google Generative AI requests end with a user turn or function response. Follow-up to #​72556. Thanks @​Veda-openclaw.

  • Control UI/Dreaming: require explicit confirmation before applying restart-impacting Dreaming mode changes, with restart warning copy and loading feedback. Fixes #​63804. (#​63807) Thanks @​bbddbb1.

  • CLI/agent: mark Gateway-to-embedded fallback runs with meta.transport: "embedded" and meta.fallbackFrom: "gateway" in JSON output, and make the terminal diagnostic explicit so scripts and operators can distinguish fallback runs from Gateway runs. Fixes #​71416. Thanks @​amknight.

  • Agents/tools: normalize null or missing tool-call arguments to {} for parameterless object schemas before Pi validation, so empty-argument tools run instead of failing argument validation. Fixes #​72587. Thanks @​amknight.

  • Agents/subagents: clear active embedded-run state before terminal lifecycle events so post-completion cleanup no longer treats finished child runs as still active and skips archive or announcement bookkeeping. (#​70187) Thanks @​amknight.

  • CLI/update: keep the automatic post-update completion refresh on the core-command tree so it no longer stages bundled plugin runtime deps before the Gateway restart path, avoiding .24 update hangs and 1006 disconnect cascades. Fixes #​72665. Thanks @​sakalaboator and @​He-Pin.

  • Control UI: make explicit Reload Config actions discard stale local config edits while passive refreshes and failed-save recovery keep pending drafts intact. Fixes #​40352; carries forward #​40443. Thanks @​realmikechong-dotcom.

  • Agents/Bedrock: stop heartbeat runs from persisting blank user transcript turns and repair existing blank user text messages before replay, preventing AWS Bedrock ContentBlock blank-text validation failures. Fixes #​72640 and #​72622. Thanks @​goldzulu.

  • Agents/LM Studio: promote standalone bracketed local-model tool requests into registered tool calls and hide unsupported bracket blocks from visible replies, so MemPalace MCP lookups do not print raw [tool] JSON scaffolding in chat. Fixes #​66178. Thanks @​detroit357.

  • Local models: warn when an assistant reply looks like a tool call but the provider emitted plain text instead of a structured tool invocation, making fake/non-executed tool calls visible in logs. Fixes #​51332. Thanks @​emilclaw.

  • Local models: accept persisted non-secret local auth markers for private-LAN custom OpenAI-compatible providers, so LAN Ollama configs no longer fail with missing auth when ollama-local is saved as the key. Fixes #​49736. Thanks @​charles-zh.

  • TUI/local models: treat visible gateway client labels such as openclaw-tui as the current requester session for session-aware tools, so Ollama tool calls no longer fail by resolving the UI label as a session id. Fixes #​66391. Thanks @​kickingzebra.

  • Local models: route self-hosted OpenAI-compatible model discovery through the guarded fetch path pinned to the configured host, covering vLLM and SGLang setup without reopening local/LAN SSRF probes. Supersedes #​46359. Thanks @​cdxiaodong.

  • Local models: classify terminated, reset, closed, timeout, and aborted model-call failures and attach a process memory snapshot to the diagnostic event, making LM Studio/Ollama RAM-pressure failures easier to prove from stability bundles. Refs #​65551. Thanks @​BigWiLLi111.

  • Local models: pass configured provider request timeouts through OpenAI SDK transports and the model idle watchdog so long-running local or custom OpenAI-compatible streams use one timeout knob instead of hitting the SDK's 10-minute default or the 120s idle default. Fixes #​63663. Thanks @​aidiffuser.

  • LM Studio: trust configured LM Studio loopback, LAN, and tailnet endpoints for guarded model requests by default, preserving explicit private-network opt-outs. Refs #​60994. Thanks @​tnowakow.

  • Docker/setup: route Docker onboarding defaults for host-side LM Studio and Ollama through host.docker.internal and add the Linux host-gateway mapping to the bundled Compose file, so containerized gateways can reach local providers without using container loopback. Fixes #​68684; supersedes #​68702. Thanks @​safrano9999 and @​skolez.

  • Agents/LM Studio: strip prior-turn Gemma 4 reasoning from OpenAI-compatible replay while preserving active tool-call continuation reasoning. Fixes #​68704. Thanks @​chip-snomo and @​Kailigithub.

  • LM Studio: allow interactive onboarding to leave the API key blank for unauthenticated local servers, using local synthetic auth while clearing stale LM Studio auth profiles. Fixes #​66937. Thanks @​olamedia.

  • Plugins/startup: use a PluginLookUpTable during Gateway startup so channel ownership, deferred channel loading, and startup plugin IDs reuse the same installed manifest registry instead of rebuilding manifest metadata on the boot path. Thanks @​shakkernerd.

  • Plugins/startup: pass the Gateway PluginLookUpTable through plugin loading so auto-enable checks and startup-scope fallback reuse the same manifest registry instead of doing another manifest pass. Thanks @​shakkernerd.

  • Plugins/startup: carry the Gateway PluginLookUpTable into deferred channel full-runtime reloads so post-listen startup does not rebuild manifest metadata after the provisional setup-runtime load. Thanks @​shakkernerd.

  • Gateway/models: reuse Gateway plugin manifest metadata during the initial model-pricing refresh so pricing policies and configured plugin web-search models do not rebuild plugin lookups during startup. Thanks @​shakkernerd.

  • Gateway/startup: extend OPENCLAW_GATEWAY_STARTUP_TRACE=1 with per-phase event-loop delay plus plugin lookup-table timing and count metrics for installed-index, manifest, startup-plan, and owner-map work, and include the new timing fields in startup benchmark summaries. Thanks @​shakkernerd.

  • Plugins/channels: resolve read-only channel command defaults from one plugin index plus manifest pass instead of reloading plugin metadata while checking candidate plugin enablement. Thanks @​shakkernerd.

  • Plugins/capabilities: cache manifest-derived capability provider plugin IDs per config snapshot so repeated TTS, media, realtime, memory, image, video, and music provider resolution avoids redundant manifest scans. Thanks @​shakkernerd.

  • Plugins/contracts: resolve runtime manifest-contract plugin owners from one plugin index plus manifest pass instead of rebuilding manifest metadata separately for all owners and enabled owners. Thanks @​shakkernerd.

  • Plugins/extractors: reuse one manifest registry pass while resolving bundled document and web-content extractor plugins instead of rereading manifests for compatibility and enablement filtering. Thanks @​shakkernerd.

  • Plugins/providers: reuse one plugin registry snapshot and manifest registry while resolving provider discovery entries instead of rebuilding manifest metadata after provider owner discovery. Thanks @​shakkernerd.

  • Plugins/registry: resolve lookup-table owner maps for providers, CLI backends, setup providers, command aliases, model catalogs, channel configs, and manifest contracts while preserving setup-only CLI backend ownership. Thanks @​shakkernerd.

  • Plugins/registry: cache repeated installed-index manifest registry fallback rebuilds behind a bounded invalidating cache so cold provider-discovery paths avoid rereading unchanged manifests. Thanks @​mcaxtr.

  • Plugins/web: reuse manifest records already loaded for bundled web provider candidate discovery when falling back to public artifact provider loading. Thanks @​shakkernerd.

  • Mattermost: keep direct-message replies top-level by suppressing reply roots for DM delivery while preserving channel and group thread roots, and derive inbound chat kind from the trusted channel lookup instead of the websocket event channel type. Carries forward #​60115, #​55186, #​72305, and #​72659; refs #​59758, #​59981, #​59791, and #​57565. Thanks @​vincentkoc, @​jwchmodx, and @​hnykda.

  • Docker: pre-create /home/node/.openclaw with node ownership and private permissions so first-run Docker Compose named volumes no longer fail startup with EACCES. (#​48072, #​63959; fixes #​61279) Thanks @​timoxue and @​jeanibarz.

  • CLI/Gateway: treat local restart probe policy closes for connect, exact device required, pairing, and auth failures as Gateway reachability proof without accepting empty, broad standalone token/password/scope/role, or pair-substring 1008 close reasons. Fixes #​48771; carries forward #​48801; related #​63491. Thanks @​MarsDoge and @​genoooool.

  • Feishu: send outgoing interactive reply payloads as native cards with clickable buttons while preserving text, media, and document-comment fallbacks. Fixes #​13175 and #​58298; carries forward [#​47891](https://redire


Configuration

📅 Schedule: Branch creation - Every minute ( * * * * * ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

> ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://redirect.github.com/openclaw/openclaw)) | final | patch | `2026.4.24` → `2026.4.26` | --- ### Release Notes <details> <summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary> ### [`v2026.4.26`](https://redirect.github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#2026426) [Compare Source](https://redirect.github.com/openclaw/openclaw/compare/v2026.4.25...v2026.4.26) ##### Changes - Control UI/Talk: add a generic browser realtime transport contract, Google Live browser Talk sessions with constrained ephemeral tokens, and a Gateway relay for backend-only realtime voice plugins. Thanks [@&#8203;VACInc](https://redirect.github.com/VACInc). - CLI/models: route provider-filtered model listing through an explicit source plan so user config, installed manifest rows, Provider Index previews, and scoped runtime fallbacks keep a stable authority order without adding another catalog cache. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/cron: add a typed `cron_changed` hook for observing gateway-owned cron lifecycle updates without depending on internal cron events. Thanks [@&#8203;amknight](https://redirect.github.com/amknight). - Providers: add Cerebras as a bundled plugin with onboarding, static model catalog, docs, and manifest-owned endpoint metadata. - Memory/OpenAI-compatible: add optional `memorySearch.inputType`, `queryInputType`, and `documentInputType` config for asymmetric embedding endpoints, including direct query embeddings and provider batch indexing. Carries forward [#&#8203;63313](https://redirect.github.com/openclaw/openclaw/issues/63313) and [#&#8203;60727](https://redirect.github.com/openclaw/openclaw/issues/60727). Thanks [@&#8203;HOYALIM](https://redirect.github.com/HOYALIM) and [@&#8203;prospect1314521](https://redirect.github.com/prospect1314521). - Ollama/memory: add model-specific retrieval query prefixes for `nomic-embed-text`, `qwen3-embedding`, and `mxbai-embed-large` memory-search queries while leaving document batches unchanged. Carries forward [#&#8203;45013](https://redirect.github.com/openclaw/openclaw/issues/45013). Thanks [@&#8203;laolin5564](https://redirect.github.com/laolin5564). - Plugins/providers: move pre-runtime model-id normalization, provider endpoint host metadata, and OpenAI-compatible request-family hints into plugin manifests so core no longer carries bundled-provider routing tables. - Plugins/config: deprecate direct plugin config load/write helpers in favor of passed runtime snapshots plus transactional mutation helpers with explicit restart follow-up policy, scanner guardrails, runtime warnings, and revision-based cache invalidation. - Plugins/install: allow `OPENCLAW_PLUGIN_STAGE_DIR` to contain layered runtime-dependency roots, resolving read-only preinstalled deps before installing missing deps into the final writable root. Fixes [#&#8203;72396](https://redirect.github.com/openclaw/openclaw/issues/72396). Thanks [@&#8203;liorb-mountapps](https://redirect.github.com/liorb-mountapps). - Control UI: add a raw config pending-changes diff panel that parses JSON5, redacts sensitive values until reveal, and avoids fake raw-edit callbacks when opening the panel. Refs [#&#8203;39831](https://redirect.github.com/openclaw/openclaw/issues/39831); supersedes [#&#8203;48621](https://redirect.github.com/openclaw/openclaw/issues/48621) and [#&#8203;46654](https://redirect.github.com/openclaw/openclaw/issues/46654). Thanks [@&#8203;JiajunBernoulli](https://redirect.github.com/JiajunBernoulli) and [@&#8203;BunsDev](https://redirect.github.com/BunsDev). - Control UI: polish the quick settings dashboard grid so common cards align across desktop, tablet, and mobile layouts without wasting horizontal space. Thanks [@&#8203;BunsDev](https://redirect.github.com/BunsDev). - Matrix/E2EE: add `openclaw matrix encryption setup` to enable Matrix encryption, bootstrap recovery, and print verification status from one setup flow. Thanks [@&#8203;gumadeiras](https://redirect.github.com/gumadeiras). - Agents/compaction: add an opt-in `agents.defaults.compaction.maxActiveTranscriptBytes` preflight trigger that runs normal local compaction when the active JSONL grows too large, requiring transcript rotation so successful compaction moves future turns onto a smaller successor file instead of raw byte-splitting history. Thanks [@&#8203;vincentkoc](https://redirect.github.com/vincentkoc). - CLI/migration: add a bundled Claude importer that previews and applies Claude Code and Claude Desktop instructions, MCP servers, skills, command prompts, and safe archive/manual-review state. Thanks [@&#8203;vincentkoc](https://redirect.github.com/vincentkoc). - CLI/migration: add `openclaw migrate` with plan, dry-run, JSON, pre-migration backup, onboarding detection, archive-only report copies, and a bundled Hermes importer for configuration, memory/plugin hints, model providers, MCP servers, skills, and supported credentials. Thanks [@&#8203;NousResearch](https://redirect.github.com/NousResearch). ##### Fixes - Gateway/device tokens: stop echoing rotated bearer tokens from shared/admin `device.token.rotate` responses while preserving the same-device token handoff needed by token-only clients before reconnect. ([#&#8203;66773](https://redirect.github.com/openclaw/openclaw/issues/66773)) Thanks [@&#8203;MoerAI](https://redirect.github.com/MoerAI). - Agents/sessions\_spawn: resolve configured bare model aliases for spawn model overrides using the target agent runtime default provider, carrying forward the alias-specific [#&#8203;69029](https://redirect.github.com/openclaw/openclaw/issues/69029) review fixes from [#&#8203;59681](https://redirect.github.com/openclaw/openclaw/issues/59681) without the unrelated active-session pruning path. Fixes [#&#8203;59681](https://redirect.github.com/openclaw/openclaw/issues/59681). Thanks [@&#8203;HowdyDooToYou](https://redirect.github.com/HowdyDooToYou). - Control UI/Talk: keep Google Live browser sessions on the WebSocket transport instead of falling back to WebRTC, validate browser Google Live WebSocket endpoints, cap Gateway relay sessions per browser connection, and remove stale browser-native voice buttons that did not use the configured Talk/TTS provider. Thanks [@&#8203;BunsDev](https://redirect.github.com/BunsDev). - Gateway/startup: reuse config snapshot plugin manifests for startup auto-enable before plugin bootstrap plans plugin loading. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Agents/subagents: enforce `subagents.allowAgents` for explicit same-agent `sessions_spawn(agentId=...)` calls instead of auto-allowing requester self-targets. Fixes [#&#8203;72827](https://redirect.github.com/openclaw/openclaw/issues/72827). Thanks [@&#8203;oiGaDio](https://redirect.github.com/oiGaDio). - ACP/sessions\_spawn: let explicit `sessions_spawn(runtime="acp")` bootstrap turns run while `acp.dispatch.enabled=false` still blocks automatic ACP thread dispatch. Fixes [#&#8203;63591](https://redirect.github.com/openclaw/openclaw/issues/63591). Thanks [@&#8203;moeedahmed](https://redirect.github.com/moeedahmed). - CLI/update: install npm global updates into a verified temporary prefix before swapping the package tree into place, preventing mixed old/new installs and stale packaged files from breaking `openclaw update` verification. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Gateway: skip CLI startup self-respawn for foreground gateway runs so low-memory Linux/Node 24 hosts start through the same path as direct `dist/index.js` without hanging before logs. Fixes [#&#8203;72720](https://redirect.github.com/openclaw/openclaw/issues/72720). Thanks [@&#8203;sign-2025](https://redirect.github.com/sign-2025). - Google Meet: grant Meet media permissions through browser control and pin local Chrome audio defaults to `BlackHole 2ch`, so joined agents no longer show `Permission needed` or use macOS default audio devices. Thanks [@&#8203;DougButdorf](https://redirect.github.com/DougButdorf). - Gateway: treat uncaught broken-pipe stream errors like `EPIPE` as non-fatal so Discord delivery or closed pipes no longer crash the Gateway after a reply is ready. - Google Meet: route local Chrome joins through OpenClaw browser control instead of raw default Chrome, so agents use the configured OpenClaw browser profile when opening Meet. Thanks [@&#8203;oromeis](https://redirect.github.com/oromeis). - Plugins/discovery: follow symlinked plugin directories in global and workspace plugin roots while keeping broken links ignored and existing package safety checks in place. Fixes [#&#8203;36754](https://redirect.github.com/openclaw/openclaw/issues/36754); carries forward [#&#8203;72695](https://redirect.github.com/openclaw/openclaw/issues/72695) and [#&#8203;63206](https://redirect.github.com/openclaw/openclaw/issues/63206). Thanks [@&#8203;Quackstro](https://redirect.github.com/Quackstro), [@&#8203;ming1523](https://redirect.github.com/ming1523), and [@&#8203;xsfX20](https://redirect.github.com/xsfX20). - Plugins/install: skip test files and directories during install security scans while still force-scanning declared runtime entrypoints, so packaged test mocks no longer block plugin installs. Fixes [#&#8203;66840](https://redirect.github.com/openclaw/openclaw/issues/66840); carries forward [#&#8203;67050](https://redirect.github.com/openclaw/openclaw/issues/67050). Thanks [@&#8203;saurabhjain1592](https://redirect.github.com/saurabhjain1592) and [@&#8203;Magicray1217](https://redirect.github.com/Magicray1217). - Plugins/install: allow exact package-manager peer links back to the trusted OpenClaw host package during install security scans while continuing to block spoofed or nested escaping `node_modules` symlinks. Carries forward [#&#8203;70819](https://redirect.github.com/openclaw/openclaw/issues/70819). Thanks [@&#8203;fgabelmannjr](https://redirect.github.com/fgabelmannjr). - Plugins/install: resolve plugin install destinations from the active profile state dir across CLI, ClawHub, marketplace, local path, and channel setup installs, so `openclaw --profile <name> plugins install ...` no longer writes into the default profile. Fixes [#&#8203;69960](https://redirect.github.com/openclaw/openclaw/issues/69960); carries forward [#&#8203;69971](https://redirect.github.com/openclaw/openclaw/issues/69971). Thanks [@&#8203;FrancisLyman](https://redirect.github.com/FrancisLyman) and [@&#8203;Sanjays2402](https://redirect.github.com/Sanjays2402). - Plugins/registry: suppress duplicate-plugin startup warnings when a tracked npm-installed plugin intentionally overrides the bundled plugin with the same id. Carries forward [#&#8203;48673](https://redirect.github.com/openclaw/openclaw/issues/48673). Thanks [@&#8203;abdushsk](https://redirect.github.com/abdushsk). - Plugins/startup: reuse canonical realpath lookups throughout each plugin discovery pass, including package and manifest boundary checks, so Windows npm-global startups no longer repeat expensive path resolution for the same plugin roots. Fixes [#&#8203;65733](https://redirect.github.com/openclaw/openclaw/issues/65733). Thanks [@&#8203;welfo-beo](https://redirect.github.com/welfo-beo). - Gateway/proxy: pass `ALL_PROXY` / `all_proxy` into the global Undici env-proxy dispatcher and provider proxy-fetch helper while keeping SSRF trusted-proxy auto-upgrade on `HTTP_PROXY` / `HTTPS_PROXY` only, so gateway/provider calls honor all-proxy setups without weakening guarded fetches. Fixes [#&#8203;43821](https://redirect.github.com/openclaw/openclaw/issues/43821); carries forward [#&#8203;43919](https://redirect.github.com/openclaw/openclaw/issues/43919). Thanks [@&#8203;RickyTong1](https://redirect.github.com/RickyTong1). - Providers/LiteLLM: honor `--custom-base-url` during non-interactive API-key onboarding without adding proxy discovery side effects, so scripted remote LiteLLM setup keeps the requested endpoint instead of falling back to localhost. Carries forward [#&#8203;66160](https://redirect.github.com/openclaw/openclaw/issues/66160). Thanks [@&#8203;dongs0104](https://redirect.github.com/dongs0104). - Reply/link understanding: keep media and link preprocessing on stable runtime entrypoints and continue with raw message content if optional enrichment fails, so URL-bearing messages are no longer dropped after stale runtime chunk upgrades. Fixes [#&#8203;68466](https://redirect.github.com/openclaw/openclaw/issues/68466). Thanks [@&#8203;songshikang0111](https://redirect.github.com/songshikang0111). - Discord: persist routed model-picker overrides when the hidden `/model` dispatch succeeds but the bound thread session store is still stale, including LM Studio suffixed model ids. Carries forward [#&#8203;61473](https://redirect.github.com/openclaw/openclaw/issues/61473). Thanks [@&#8203;Nanako0129](https://redirect.github.com/Nanako0129). - Nodes/CLI: add `openclaw nodes remove --node <id|name|ip>` and `node.pair.remove` so stale gateway-owned node pairing records can be cleaned without hand-editing state files. - Gateway: include the connecting client and fresh presence version in the initial `hello-ok` snapshot, so clients no longer need a follow-up event before seeing themselves online. - Docker: install the CA certificate bundle in the slim runtime image so HTTPS calls from containerized gateways no longer fail TLS setup after the `bookworm-slim` base switch. Fixes [#&#8203;72787](https://redirect.github.com/openclaw/openclaw/issues/72787). Thanks [@&#8203;ryuhaneul](https://redirect.github.com/ryuhaneul). - Providers/OpenRouter: remove retired Hunter Alpha and Healer Alpha static catalog rows and disable proxy reasoning injection for stale Hunter Alpha configs, so replies are not hidden when OpenRouter returns answer text in reasoning fields. Fixes [#&#8203;43942](https://redirect.github.com/openclaw/openclaw/issues/43942). Thanks [@&#8203;EvanDataForge](https://redirect.github.com/EvanDataForge). - Providers/reasoning: let Groq and LM Studio declare provider-native reasoning effort values, so Qwen thinking models receive `none`/`default` or `off`/`on` instead of OpenAI-only `low`/`medium` values. Fixes [#&#8203;32638](https://redirect.github.com/openclaw/openclaw/issues/32638). Thanks [@&#8203;Aqu1bp](https://redirect.github.com/Aqu1bp), [@&#8203;mgoulart](https://redirect.github.com/mgoulart), [@&#8203;Norpps](https://redirect.github.com/Norpps), and [@&#8203;BSTail](https://redirect.github.com/BSTail). - Local models: default custom providers with only `baseUrl` to the Chat Completions adapter and trust loopback model requests automatically, so local OpenAI-compatible proxies receive `/v1/chat/completions` without timing out. Fixes [#&#8203;40024](https://redirect.github.com/openclaw/openclaw/issues/40024). Thanks [@&#8203;parachuteshe](https://redirect.github.com/parachuteshe). - Channels/message tool: surface Discord, Slack, and Mattermost `user:`/`channel:` target syntax in the shared message target schema and Discord ambiguity errors, so DM sends by numeric id stop burning retries before finding `user:<id>`. Fixes [#&#8203;72401](https://redirect.github.com/openclaw/openclaw/issues/72401). Thanks [@&#8203;garyd9](https://redirect.github.com/garyd9), [@&#8203;hclsys](https://redirect.github.com/hclsys), and [@&#8203;praveen9354](https://redirect.github.com/praveen9354). - Agents/tools: scope tool-loop detection history to the active run when available, so scheduled heartbeat cycles no longer inherit stale repeated-call counts from previous runs. Fixes [#&#8203;40144](https://redirect.github.com/openclaw/openclaw/issues/40144). Thanks [@&#8203;mattbrown319](https://redirect.github.com/mattbrown319). - Agents/subagents: preserve requester delivery for completion announces when a child agent is bound to a different channel account while keeping same-channel thread completions routed to the child thread. Thanks [@&#8203;sfuminya](https://redirect.github.com/sfuminya). - Agents/subagents: fail closed instead of selecting a single child thread binding when completion delivery lacks requester conversation signal. Thanks [@&#8203;suyua9](https://redirect.github.com/suyua9). - Agents/status: persist the post-compaction token estimate from auto-compaction when providers omit usage metadata, so `/status` and session lists keep showing fresh context usage after compaction. Fixes [#&#8203;67667](https://redirect.github.com/openclaw/openclaw/issues/67667); carries forward [#&#8203;72822](https://redirect.github.com/openclaw/openclaw/issues/72822). Thanks [@&#8203;Jimmy-xuzimo](https://redirect.github.com/Jimmy-xuzimo) and [@&#8203;skylight-9](https://redirect.github.com/skylight-9). - Control UI: show loading, reload, and retry states when a lazy dashboard panel cannot load after an upgrade, so the Logs tab no longer appears blank on stale browser bundles. Fixes [#&#8203;72450](https://redirect.github.com/openclaw/openclaw/issues/72450). Thanks [@&#8203;sobergou](https://redirect.github.com/sobergou). - Gateway/plugins: start the Gateway in degraded mode when a single plugin entry has invalid schema config, and let `openclaw doctor --fix` quarantine that plugin config instead of crash-looping every channel. Fixes [#&#8203;62976](https://redirect.github.com/openclaw/openclaw/issues/62976) and [#&#8203;70371](https://redirect.github.com/openclaw/openclaw/issues/70371). Thanks [@&#8203;Doraemon-Claw](https://redirect.github.com/Doraemon-Claw) and [@&#8203;pksidekyk](https://redirect.github.com/pksidekyk). - Agents/plugins: skip malformed plugin tools with missing schema objects and report plugin diagnostics, so one broken tool no longer crashes Anthropic agent runs. Fixes [#&#8203;69423](https://redirect.github.com/openclaw/openclaw/issues/69423). Thanks [@&#8203;jmnickels](https://redirect.github.com/jmnickels). - Agents/reasoning: recover fully wrapped unclosed `<think>` replies that would otherwise sanitize to empty text while keeping strict stripping for closed reasoning blocks and unclosed tails after visible text. Fixes [#&#8203;37696](https://redirect.github.com/openclaw/openclaw/issues/37696); supersedes [#&#8203;51915](https://redirect.github.com/openclaw/openclaw/issues/51915). Thanks [@&#8203;druide67](https://redirect.github.com/druide67) and [@&#8203;okuyam2y](https://redirect.github.com/okuyam2y). - Control UI/Gateway: bind WebChat handshakes to their active socket and reject post-close server registrations, so aborted connects no longer leave zombie clients or misleading duplicate WebSocket connection logs. Fixes [#&#8203;72753](https://redirect.github.com/openclaw/openclaw/issues/72753). Thanks [@&#8203;LumenFromTheFuture](https://redirect.github.com/LumenFromTheFuture). - Agents/fallback: split ambiguous provider failures into `empty_response`, `no_error_details`, and `unclassified`, and add flat fallback-step fields to structured fallback logs so primary-model failures stay visible when later fallbacks also fail. Fixes [#&#8203;71922](https://redirect.github.com/openclaw/openclaw/issues/71922); refs [#&#8203;71744](https://redirect.github.com/openclaw/openclaw/issues/71744). Thanks [@&#8203;andyk-ms](https://redirect.github.com/andyk-ms) and [@&#8203;nikolaykazakovvs-ux](https://redirect.github.com/nikolaykazakovvs-ux). - Gateway/startup: reuse the plugin manifest registry inside config validation so restrictive plugin allowlists avoid a duplicate manifest pass during startup. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Gateway/startup: run plugin auto-enable from authored source config and skip disabled setup probes, avoiding runtime-default plugin allowlist writes and a second config snapshot read during startup. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/Windows: normalize Windows absolute paths before handing bundled plugin modules to Jiti, so Feishu/Lark message sending no longer fails with unsupported `c:` ESM loader URLs. Fixes [#&#8203;72783](https://redirect.github.com/openclaw/openclaw/issues/72783). Thanks [@&#8203;jackychen-png](https://redirect.github.com/jackychen-png). - CLI/doctor: run bundled plugin runtime-dependency repairs through the async npm installer with spinner/line progress and heartbeat updates, so long `openclaw doctor --fix` installs no longer look hung in TTY or piped output. Fixes [#&#8203;72775](https://redirect.github.com/openclaw/openclaw/issues/72775). Thanks [@&#8203;dfpalhano](https://redirect.github.com/dfpalhano). - Feishu/Windows: normalize bundled channel sidecar loads before Jiti evaluates them, so Feishu outbound sends no longer fail with raw `C:` ESM loader errors on Windows. Fixes [#&#8203;72783](https://redirect.github.com/openclaw/openclaw/issues/72783). Thanks [@&#8203;jackychen-png](https://redirect.github.com/jackychen-png). - Agents/tools: ignore volatile `exec` runtime metadata when comparing tool-loop outcomes, so enabled loop detection can stop repeated identical shell-command results instead of resetting on duration, PID, session, or cwd changes. Fixes [#&#8203;34574](https://redirect.github.com/openclaw/openclaw/issues/34574); supersedes [#&#8203;41502](https://redirect.github.com/openclaw/openclaw/issues/41502). Thanks [@&#8203;gucasbrg](https://redirect.github.com/gucasbrg) and [@&#8203;Zcg2021](https://redirect.github.com/Zcg2021). - Agents/fallback: classify internal live-session model switch conflicts as unknown fallback failures instead of provider overloads, preventing local vLLM endpoints from receiving misleading overloaded cooldowns. Refs [#&#8203;63229](https://redirect.github.com/openclaw/openclaw/issues/63229). Thanks [@&#8203;clawdia-lobster](https://redirect.github.com/clawdia-lobster). - Discord: let thread sessions inherit the parent channel's session-level `/model` override as a model-only fallback without enabling parent transcript inheritance. Fixes [#&#8203;72755](https://redirect.github.com/openclaw/openclaw/issues/72755). Thanks [@&#8203;solavrc](https://redirect.github.com/solavrc). - Gateway/plugins: skip stale configured channels whose matching plugin is no longer discoverable, point cleanup at `openclaw doctor --fix`, and keep unrelated channel typos fatal so one missing channel plugin no longer crash-loops the Gateway. Fixes [#&#8203;53311](https://redirect.github.com/openclaw/openclaw/issues/53311). Thanks [@&#8203;futhgar](https://redirect.github.com/futhgar). - Control UI: keep session-specific assistant identity loads authoritative after WebSocket connect, so non-main agent chat sessions do not show the main agent name in the header after bootstrap refreshes. Fixes [#&#8203;72776](https://redirect.github.com/openclaw/openclaw/issues/72776). Thanks [@&#8203;rockytian-top](https://redirect.github.com/rockytian-top). - Agents/Qwen: preserve exact custom `modelstudio` provider configs with foreign `api` owners so explicit OpenAI-compatible Model Studio endpoints no longer get normalized into the bundled Qwen plugin path. Fixes [#&#8203;64483](https://redirect.github.com/openclaw/openclaw/issues/64483). Thanks [@&#8203;FiredMosquito831](https://redirect.github.com/FiredMosquito831). - MCP/bundle-mcp: normalize CLI-native `type: "http"` MCP server entries to OpenClaw `transport: "streamable-http"` on save, repair existing configs with doctor, and keep embedded Pi from falling back to legacy SSE GET-first startup for those servers. Fixes [#&#8203;72757](https://redirect.github.com/openclaw/openclaw/issues/72757). Thanks [@&#8203;Studioscale](https://redirect.github.com/Studioscale). - OpenCode: expose Anthropic Opus/Sonnet 4.x thinking levels for proxied Claude models, so `/think xhigh`, `/think adaptive`, and `/think max` validate consistently with the direct Anthropic provider. Fixes [#&#8203;72729](https://redirect.github.com/openclaw/openclaw/issues/72729). Thanks [@&#8203;haishmg](https://redirect.github.com/haishmg) and [@&#8203;aaajiao](https://redirect.github.com/aaajiao). - Media-understanding/audio: migrate deprecated `{input}` placeholders in legacy `audio.transcription.command` configs to `{{MediaPath}}`, so custom audio transcribers no longer receive the literal placeholder after doctor repair. Fixes [#&#8203;72760](https://redirect.github.com/openclaw/openclaw/issues/72760). Thanks [@&#8203;krisfanue3-hash](https://redirect.github.com/krisfanue3-hash). - Ollama/WSL2: warn when GPU-backed WSL2 installs combine CUDA visibility with an autostarting `ollama.service` using `Restart=always`, and document the systemd, `.wslconfig`, and keep-alive mitigation for crash loops. Carries forward [#&#8203;61022](https://redirect.github.com/openclaw/openclaw/issues/61022); fixes [#&#8203;61185](https://redirect.github.com/openclaw/openclaw/issues/61185). Thanks [@&#8203;yhyatt](https://redirect.github.com/yhyatt). - Ollama/onboarding: de-dupe suggested bare local models against installed `:latest` tags and skip redundant pulls, so setup shows the installed model once and no longer says it is downloading an already available model. Fixes [#&#8203;68952](https://redirect.github.com/openclaw/openclaw/issues/68952). Thanks [@&#8203;tleyden](https://redirect.github.com/tleyden). - Memory-core/doctor: keep `doctor.memory.status` on the cached path by default and only run live embedding pings for explicit deep probes, preventing slow local embedding backends from blocking Gateway status checks. Fixes [#&#8203;71568](https://redirect.github.com/openclaw/openclaw/issues/71568). Thanks [@&#8203;apex-system](https://redirect.github.com/apex-system). - Memory/QMD: group same-source collections into one QMD search invocation when the installed QMD supports multiple `-c` filters, while keeping older QMD builds on the per-collection fallback. Fixes [#&#8203;72484](https://redirect.github.com/openclaw/openclaw/issues/72484); supersedes [#&#8203;72485](https://redirect.github.com/openclaw/openclaw/issues/72485) and [#&#8203;69583](https://redirect.github.com/openclaw/openclaw/issues/69583). Thanks [@&#8203;BsnizND](https://redirect.github.com/BsnizND) and [@&#8203;zeroaltitude](https://redirect.github.com/zeroaltitude). - Memory/QMD: accept QMD status vector-count variants such as `Vectors = 42`, `Vectors:42`, and `Vectors: 42 embedded`, so `memory status --deep` no longer reports embeddings unavailable for healthy QMD wrappers. Fixes [#&#8203;63652](https://redirect.github.com/openclaw/openclaw/issues/63652); carries forward [#&#8203;63678](https://redirect.github.com/openclaw/openclaw/issues/63678). Thanks [@&#8203;apoapostolov](https://redirect.github.com/apoapostolov) and [@&#8203;WarrenJones](https://redirect.github.com/WarrenJones). - Memory/QMD: skip QMD vector status probes and embedding maintenance in lexical `searchMode: "search"`, so BM25-only QMD setups on ARM do not trigger llama.cpp/Vulkan builds during status checks or embed cycles. Fixes [#&#8203;59234](https://redirect.github.com/openclaw/openclaw/issues/59234) and [#&#8203;67113](https://redirect.github.com/openclaw/openclaw/issues/67113). Thanks [@&#8203;PrinceOfEgypt](https://redirect.github.com/PrinceOfEgypt), [@&#8203;Vksh07](https://redirect.github.com/Vksh07), [@&#8203;Snipe76](https://redirect.github.com/Snipe76), [@&#8203;NomLom](https://redirect.github.com/NomLom), [@&#8203;t4r3e2q1-commits](https://redirect.github.com/t4r3e2q1-commits), and [@&#8203;dmak](https://redirect.github.com/dmak). - Memory/QMD: report the live watcher dirty state in memory status, so changed QMD-backed memory files show as dirty until the queued sync finishes. Fixes [#&#8203;60244](https://redirect.github.com/openclaw/openclaw/issues/60244). Thanks [@&#8203;xinzf](https://redirect.github.com/xinzf). - Compaction: skip oversized pre-compaction checkpoint snapshots and prune duplicate long user turns from compaction input and rotated successor transcripts, preventing retry storms from being preserved across checkpoint cycles. Fixes [#&#8203;72780](https://redirect.github.com/openclaw/openclaw/issues/72780). Thanks [@&#8203;SweetSophia](https://redirect.github.com/SweetSophia). - Control UI/Cron: render cron job prompts and run summaries as sanitized markdown in the dashboard, with full-width block content, safer link clicks, and no duplicate error text when a failed run has no summary. Supersedes [#&#8203;48504](https://redirect.github.com/openclaw/openclaw/issues/48504). Thanks [@&#8203;garethdaine](https://redirect.github.com/garethdaine). - Control UI/Gateway: preserve WebChat client version labels across localhost, 127.0.0.1, and IPv6 loopback aliases on the same port, avoiding misleading `vcontrol-ui` connection logs while investigating duplicate-message reports. Refs [#&#8203;72753](https://redirect.github.com/openclaw/openclaw/issues/72753) and [#&#8203;72742](https://redirect.github.com/openclaw/openclaw/issues/72742). Thanks [@&#8203;LumenFromTheFuture](https://redirect.github.com/LumenFromTheFuture) and [@&#8203;allesgutefy](https://redirect.github.com/allesgutefy). - Agents/reasoning: treat orphan closing reasoning tags with following answer text as a privacy boundary across delivery, history, streaming, and Control UI sanitizers so malformed local-model output cannot leak chain-of-thought text. Fixes [#&#8203;67092](https://redirect.github.com/openclaw/openclaw/issues/67092). Thanks [@&#8203;AnildoSilva](https://redirect.github.com/AnildoSilva). - Memory-core: run one-shot memory CLI commands through transient builtin and QMD managers so `memory index`, `memory status --index`, and `memory search` no longer start long-lived file watchers that can hit macOS `EMFILE` limits. Fixes [#&#8203;59101](https://redirect.github.com/openclaw/openclaw/issues/59101); carries forward [#&#8203;49851](https://redirect.github.com/openclaw/openclaw/issues/49851). Thanks [@&#8203;mbear469210-coder](https://redirect.github.com/mbear469210-coder) and [@&#8203;maoyuanxue](https://redirect.github.com/maoyuanxue). - Agents/ACP: ship the Claude ACP adapter with OpenClaw and require Claude result messages before idle can complete a prompt, preventing parent agents from waking early on long-running `sessions_spawn(runtime: "acp", agentId: "claude")` children. Fixes [#&#8203;72080](https://redirect.github.com/openclaw/openclaw/issues/72080). Thanks [@&#8203;siavash-saki](https://redirect.github.com/siavash-saki) and [@&#8203;iannwu](https://redirect.github.com/iannwu). - CLI/tasks: route `tasks --json`, `tasks list --json`, and `tasks audit --json` through a lean JSON path so read-only task inspection no longer loads unrelated plugin/runtime command graphs. Fixes [#&#8203;66238](https://redirect.github.com/openclaw/openclaw/issues/66238). Thanks [@&#8203;ChuckChambers](https://redirect.github.com/ChuckChambers). - Memory-core: re-resolve the active runtime config whenever `memory_search` or `memory_get` executes, so provider changes made by `config.patch` stop leaving stale embedding backends behind in existing tool instances. Fixes [#&#8203;61098](https://redirect.github.com/openclaw/openclaw/issues/61098). Thanks [@&#8203;BradGroux](https://redirect.github.com/BradGroux) and [@&#8203;Linux2010](https://redirect.github.com/Linux2010). - WebChat: keep bare `/new` and `/reset` startup instructions out of visible chat history while preserving `/reset <note>` as user-visible transcript text. Fixes [#&#8203;72369](https://redirect.github.com/openclaw/openclaw/issues/72369). Thanks [@&#8203;collynes](https://redirect.github.com/collynes) and [@&#8203;haishmg](https://redirect.github.com/haishmg). - Tasks/memory: checkpoint and truncate SQLite WAL sidecars on a timer and before close for task, Task Flow, proxy capture, and builtin memory databases, bounding long-running gateway `*.sqlite-wal` growth. Fixes [#&#8203;72774](https://redirect.github.com/openclaw/openclaw/issues/72774). Thanks [@&#8203;dfpalhano](https://redirect.github.com/dfpalhano). - CLI/doctor: remove dangling channel config, heartbeat targets, and channel model overrides when stale plugin repair removes a missing channel plugin, preventing Gateway boot loops after failed plugin reinstalls. Fixes [#&#8203;65293](https://redirect.github.com/openclaw/openclaw/issues/65293). Thanks [@&#8203;yidecode](https://redirect.github.com/yidecode). - Control UI/Gateway: cache, coalesce, stale-refresh, and invalidate effective tool inventory on channel registry changes while reusing the gateway-bound plugin registry and avoiding model/auth discovery, so chat runs no longer stall Control UI requests on repeated plugin/model setup. Fixes [#&#8203;72365](https://redirect.github.com/openclaw/openclaw/issues/72365); supersedes [#&#8203;72558](https://redirect.github.com/openclaw/openclaw/issues/72558). Thanks [@&#8203;Gabiii2398](https://redirect.github.com/Gabiii2398) and [@&#8203;1yihui](https://redirect.github.com/1yihui). - Channels/setup: treat bundled channel plugins as already bundled during `channels add` and onboarding, enabling them without writing redundant `plugins.load.paths` entries or path install records. Fixes [#&#8203;72740](https://redirect.github.com/openclaw/openclaw/issues/72740). Thanks [@&#8203;iCodePoet](https://redirect.github.com/iCodePoet). - WhatsApp: honor gateway `HTTPS_PROXY` / `HTTP_PROXY` env vars for QR-login WebSocket connections, while respecting `NO_PROXY`, so proxied networks no longer fall back to direct `mmg.whatsapp.net` connections that time out with 408. Fixes [#&#8203;72547](https://redirect.github.com/openclaw/openclaw/issues/72547); supersedes [#&#8203;72692](https://redirect.github.com/openclaw/openclaw/issues/72692). Thanks [@&#8203;mebusw](https://redirect.github.com/mebusw) and [@&#8203;SymbolStar](https://redirect.github.com/SymbolStar). - Bonjour: default mDNS advertisements to the system hostname when it is DNS-safe, avoiding `openclaw.local` probing conflicts and Gateway restart loops on hosts such as `Lobster` or `ubuntu`. Fixes [#&#8203;72355](https://redirect.github.com/openclaw/openclaw/issues/72355) and [#&#8203;72689](https://redirect.github.com/openclaw/openclaw/issues/72689); supersedes [#&#8203;72694](https://redirect.github.com/openclaw/openclaw/issues/72694). Thanks [@&#8203;mscheuerlein-bot](https://redirect.github.com/mscheuerlein-bot), [@&#8203;gcusms](https://redirect.github.com/gcusms), [@&#8203;moyuwuhen601](https://redirect.github.com/moyuwuhen601), [@&#8203;pavan987](https://redirect.github.com/pavan987), [@&#8203;zml-0912](https://redirect.github.com/zml-0912), [@&#8203;hhq365](https://redirect.github.com/hhq365), and [@&#8203;SymbolStar](https://redirect.github.com/SymbolStar). - Agents/OpenAI-compatible: retry replay-safe empty `stop` turns once for `openai-completions` endpoints, so transient empty local backend responses no longer surface as “Agent couldn't generate a response” when a continuation succeeds, and restore `openclaw agent --model` for one-shot CLI runs. Fixes [#&#8203;72751](https://redirect.github.com/openclaw/openclaw/issues/72751). Thanks [@&#8203;moooV252](https://redirect.github.com/moooV252). - Git hooks: skip ignored staged paths when formatting and restaging pre-commit files, so merge commits no longer abort when `.gitignore` newly ignores staged merged content. Fixes [#&#8203;72744](https://redirect.github.com/openclaw/openclaw/issues/72744). Thanks [@&#8203;100yenadmin](https://redirect.github.com/100yenadmin). - Memory-core/dreaming: add a supported `dreaming.model` knob for Dream Diary narrative subagents, wired through phase config and the existing plugin subagent model-override trust gate. Refs [#&#8203;65963](https://redirect.github.com/openclaw/openclaw/issues/65963). Thanks [@&#8203;esqandil](https://redirect.github.com/esqandil) and [@&#8203;mjamiv](https://redirect.github.com/mjamiv). - Agents/Anthropic: remove trailing assistant prefill payloads when extended thinking is enabled, so Opus 4.7/Sonnet 4.6 requests do not fail Anthropic's user-final-turn validation. Fixes [#&#8203;72739](https://redirect.github.com/openclaw/openclaw/issues/72739). Thanks [@&#8203;superandylin](https://redirect.github.com/superandylin). - Agents/vLLM/Qwen: add plugin-owned Qwen thinking controls for vLLM chat-template kwargs and DashScope-style top-level `enable_thinking` flags, including preserved thinking for agent loops. Fixes [#&#8203;72329](https://redirect.github.com/openclaw/openclaw/issues/72329). Thanks [@&#8203;stavrostzagadouris](https://redirect.github.com/stavrostzagadouris). - Memory-core/dreaming: treat request-scoped narrative fallback as expected, skip session cleanup when no subagent run was created, and remove duplicate phase-level cleanup so fallback no longer emits warning noise. Fixes [#&#8203;67152](https://redirect.github.com/openclaw/openclaw/issues/67152). Thanks [@&#8203;jsompis](https://redirect.github.com/jsompis). - Agents/exec: apply configured `tools.exec.timeoutSec` to background, `yieldMs`, and node `system.run` commands when no per-call timeout is set, preventing auto-backgrounded and remote node commands from running indefinitely. Fixes [#&#8203;67600](https://redirect.github.com/openclaw/openclaw/issues/67600); supersedes [#&#8203;67603](https://redirect.github.com/openclaw/openclaw/issues/67603). Thanks [@&#8203;dlmpx](https://redirect.github.com/dlmpx) and [@&#8203;kagura-agent](https://redirect.github.com/kagura-agent). - Config/doctor: stop masking unknown-key validation diagnostics such as `agents.defaults.llm`, and have `openclaw doctor --fix` remove the retired `agents.defaults.llm` timeout block. Thanks [@&#8203;aidiffuser](https://redirect.github.com/aidiffuser). - CLI/startup: keep the built pre-dispatch CLI graph free of package-level imports and extend packaged CLI smoke coverage to onboard and doctor help paths, preventing missing runtime dependencies such as tslog from killing onboarding before repair code can run. Fixes [#&#8203;63024](https://redirect.github.com/openclaw/openclaw/issues/63024). Thanks [@&#8203;hu19940121](https://redirect.github.com/hu19940121). - CLI/plugins: preserve unversioned ClawHub install specs so `plugins update` can follow newer ClawHub releases instead of pinning to the initially resolved version. Fixes [#&#8203;63010](https://redirect.github.com/openclaw/openclaw/issues/63010); supersedes [#&#8203;58426](https://redirect.github.com/openclaw/openclaw/issues/58426). Thanks [@&#8203;kangsen1234](https://redirect.github.com/kangsen1234) and [@&#8203;robinspt](https://redirect.github.com/robinspt). - Memory-core/subagents: tag plugin-created subagent sessions with their plugin owner so dreaming narrative cleanup can delete its own ephemeral sessions without granting broad admin session deletion. Fixes [#&#8203;72712](https://redirect.github.com/openclaw/openclaw/issues/72712). Thanks [@&#8203;BSG2000](https://redirect.github.com/BSG2000). - Gateway/models: move local-provider pricing opt-outs, OpenRouter/LiteLLM aliases, and proxy passthrough pricing lookup into plugin manifest metadata so core no longer carries extension-specific pricing tables. - CLI/update: honor `OPENCLAW_NO_AUTO_UPDATE=1` as a gateway startup kill-switch for configured background package auto-updates, so operators can hold a deliberate downgrade during incident recovery without editing config first. Fixes [#&#8203;72715](https://redirect.github.com/openclaw/openclaw/issues/72715). Thanks [@&#8203;Xivi08](https://redirect.github.com/Xivi08). - Agents/Claude CLI: force live-session launches to include `--output-format stream-json` whenever OpenClaw adds `--input-format stream-json`, so new Claude CLI sessions no longer fail immediately while reusable sessions keep working. Fixes [#&#8203;72206](https://redirect.github.com/openclaw/openclaw/issues/72206). Thanks [@&#8203;kwangwonkoh](https://redirect.github.com/kwangwonkoh) and [@&#8203;Xivi08](https://redirect.github.com/Xivi08). - CLI/plugins: accept ClawHub plugin API wildcard ranges such as `*` without rejecting compatible plugin installs, while still requiring a valid runtime API version. Fixes [#&#8203;56446](https://redirect.github.com/openclaw/openclaw/issues/56446); supersedes [#&#8203;56466](https://redirect.github.com/openclaw/openclaw/issues/56466). Thanks [@&#8203;darconada](https://redirect.github.com/darconada) and [@&#8203;claygeo](https://redirect.github.com/claygeo). - CLI/plugins: add an explicit `npm:<package>` install prefix that skips ClawHub lookup for known npm packages while keeping bare package specs ClawHub-first. Fixes [#&#8203;55805](https://redirect.github.com/openclaw/openclaw/issues/55805); supersedes [#&#8203;54377](https://redirect.github.com/openclaw/openclaw/issues/54377). Thanks [@&#8203;Zeoy2020](https://redirect.github.com/Zeoy2020) and [@&#8203;vagusX](https://redirect.github.com/vagusX). - CLI/plugins: let config-gated bundled plugins install without persisting invalid placeholder config entries, so install/uninstall sweeps can cover plugins such as memory-lancedb before the user configures credentials. Thanks [@&#8203;vincentkoc](https://redirect.github.com/vincentkoc). - CLI/plugins: reject malformed ClawHub plugin specs with trailing `@` before registry lookup, so empty-version typos report as invalid specs instead of package-not-found errors. Fixes [#&#8203;56579](https://redirect.github.com/openclaw/openclaw/issues/56579); supersedes [#&#8203;56582](https://redirect.github.com/openclaw/openclaw/issues/56582). Thanks [@&#8203;Kansodata](https://redirect.github.com/Kansodata). - Agents/sessions: acquire the session write lock only after cold bootstrap, plugin, and tool setup so fallback runs are not blocked by stalled pre-model startup work. - Browser/plugins: auto-start the bundled browser plugin when root `browser` config is present, including restrictive plugin allowlists, and ignore stale persisted plugin registries whose package paths no longer exist. - Browser: circuit-break repeated managed Chrome launch failures per profile so browser requests stop spawning Chromium indefinitely when CDP cannot start. Fixes [#&#8203;64271](https://redirect.github.com/openclaw/openclaw/issues/64271). Thanks [@&#8203;TheophilusChinomona](https://redirect.github.com/TheophilusChinomona). - Gateway/models: skip external OpenRouter and LiteLLM pricing refreshes for local/self-hosted model endpoints so startup does not wait on remote pricing catalogs for local-only Ollama, vLLM, and compatible providers. - CLI/plugins: stop security-blocked plugin installs from retrying as hook packs, so normal plugin packages report the scanner failure without a misleading "not a valid hook pack" follow-up. Fixes [#&#8203;61175](https://redirect.github.com/openclaw/openclaw/issues/61175); supersedes [#&#8203;64102](https://redirect.github.com/openclaw/openclaw/issues/64102). Thanks [@&#8203;KonsultDigital](https://redirect.github.com/KonsultDigital) and [@&#8203;ziyincody](https://redirect.github.com/ziyincody). - Agents/Anthropic: strip stale trailing assistant prefill turns from outbound replay so context-engine short circuits cannot send unsupported assistant-prefill payloads to provider APIs. Fixes [#&#8203;72556](https://redirect.github.com/openclaw/openclaw/issues/72556). Thanks [@&#8203;Veda-openclaw](https://redirect.github.com/Veda-openclaw). - Agents/Google: strip stale trailing assistant/model prefill turns from Gemini outbound replay so Google Generative AI requests end with a user turn or function response. Follow-up to [#&#8203;72556](https://redirect.github.com/openclaw/openclaw/issues/72556). Thanks [@&#8203;Veda-openclaw](https://redirect.github.com/Veda-openclaw). - Control UI/Dreaming: require explicit confirmation before applying restart-impacting Dreaming mode changes, with restart warning copy and loading feedback. Fixes [#&#8203;63804](https://redirect.github.com/openclaw/openclaw/issues/63804). ([#&#8203;63807](https://redirect.github.com/openclaw/openclaw/issues/63807)) Thanks [@&#8203;bbddbb1](https://redirect.github.com/bbddbb1). - CLI/agent: mark Gateway-to-embedded fallback runs with `meta.transport: "embedded"` and `meta.fallbackFrom: "gateway"` in JSON output, and make the terminal diagnostic explicit so scripts and operators can distinguish fallback runs from Gateway runs. Fixes [#&#8203;71416](https://redirect.github.com/openclaw/openclaw/issues/71416). Thanks [@&#8203;amknight](https://redirect.github.com/amknight). - Agents/tools: normalize `null` or missing tool-call arguments to `{}` for parameterless object schemas before Pi validation, so empty-argument tools run instead of failing argument validation. Fixes [#&#8203;72587](https://redirect.github.com/openclaw/openclaw/issues/72587). Thanks [@&#8203;amknight](https://redirect.github.com/amknight). - Agents/subagents: clear active embedded-run state before terminal lifecycle events so post-completion cleanup no longer treats finished child runs as still active and skips archive or announcement bookkeeping. ([#&#8203;70187](https://redirect.github.com/openclaw/openclaw/issues/70187)) Thanks [@&#8203;amknight](https://redirect.github.com/amknight). - CLI/update: keep the automatic post-update completion refresh on the core-command tree so it no longer stages bundled plugin runtime deps before the Gateway restart path, avoiding `.24` update hangs and 1006 disconnect cascades. Fixes [#&#8203;72665](https://redirect.github.com/openclaw/openclaw/issues/72665). Thanks [@&#8203;sakalaboator](https://redirect.github.com/sakalaboator) and [@&#8203;He-Pin](https://redirect.github.com/He-Pin). - Control UI: make explicit Reload Config actions discard stale local config edits while passive refreshes and failed-save recovery keep pending drafts intact. Fixes [#&#8203;40352](https://redirect.github.com/openclaw/openclaw/issues/40352); carries forward [#&#8203;40443](https://redirect.github.com/openclaw/openclaw/issues/40443). Thanks [@&#8203;realmikechong-dotcom](https://redirect.github.com/realmikechong-dotcom). - Agents/Bedrock: stop heartbeat runs from persisting blank user transcript turns and repair existing blank user text messages before replay, preventing AWS Bedrock `ContentBlock` blank-text validation failures. Fixes [#&#8203;72640](https://redirect.github.com/openclaw/openclaw/issues/72640) and [#&#8203;72622](https://redirect.github.com/openclaw/openclaw/issues/72622). Thanks [@&#8203;goldzulu](https://redirect.github.com/goldzulu). - Agents/LM Studio: promote standalone bracketed local-model tool requests into registered tool calls and hide unsupported bracket blocks from visible replies, so MemPalace MCP lookups do not print raw `[tool]` JSON scaffolding in chat. Fixes [#&#8203;66178](https://redirect.github.com/openclaw/openclaw/issues/66178). Thanks [@&#8203;detroit357](https://redirect.github.com/detroit357). - Local models: warn when an assistant reply looks like a tool call but the provider emitted plain text instead of a structured tool invocation, making fake/non-executed tool calls visible in logs. Fixes [#&#8203;51332](https://redirect.github.com/openclaw/openclaw/issues/51332). Thanks [@&#8203;emilclaw](https://redirect.github.com/emilclaw). - Local models: accept persisted non-secret local auth markers for private-LAN custom OpenAI-compatible providers, so LAN Ollama configs no longer fail with missing auth when `ollama-local` is saved as the key. Fixes [#&#8203;49736](https://redirect.github.com/openclaw/openclaw/issues/49736). Thanks [@&#8203;charles-zh](https://redirect.github.com/charles-zh). - TUI/local models: treat visible gateway client labels such as `openclaw-tui` as the current requester session for session-aware tools, so Ollama tool calls no longer fail by resolving the UI label as a session id. Fixes [#&#8203;66391](https://redirect.github.com/openclaw/openclaw/issues/66391). Thanks [@&#8203;kickingzebra](https://redirect.github.com/kickingzebra). - Local models: route self-hosted OpenAI-compatible model discovery through the guarded fetch path pinned to the configured host, covering vLLM and SGLang setup without reopening local/LAN SSRF probes. Supersedes [#&#8203;46359](https://redirect.github.com/openclaw/openclaw/issues/46359). Thanks [@&#8203;cdxiaodong](https://redirect.github.com/cdxiaodong). - Local models: classify terminated, reset, closed, timeout, and aborted model-call failures and attach a process memory snapshot to the diagnostic event, making LM Studio/Ollama RAM-pressure failures easier to prove from stability bundles. Refs [#&#8203;65551](https://redirect.github.com/openclaw/openclaw/issues/65551). Thanks [@&#8203;BigWiLLi111](https://redirect.github.com/BigWiLLi111). - Local models: pass configured provider request timeouts through OpenAI SDK transports and the model idle watchdog so long-running local or custom OpenAI-compatible streams use one timeout knob instead of hitting the SDK's 10-minute default or the 120s idle default. Fixes [#&#8203;63663](https://redirect.github.com/openclaw/openclaw/issues/63663). Thanks [@&#8203;aidiffuser](https://redirect.github.com/aidiffuser). - LM Studio: trust configured LM Studio loopback, LAN, and tailnet endpoints for guarded model requests by default, preserving explicit private-network opt-outs. Refs [#&#8203;60994](https://redirect.github.com/openclaw/openclaw/issues/60994). Thanks [@&#8203;tnowakow](https://redirect.github.com/tnowakow). - Docker/setup: route Docker onboarding defaults for host-side LM Studio and Ollama through `host.docker.internal` and add the Linux host-gateway mapping to the bundled Compose file, so containerized gateways can reach local providers without using container loopback. Fixes [#&#8203;68684](https://redirect.github.com/openclaw/openclaw/issues/68684); supersedes [#&#8203;68702](https://redirect.github.com/openclaw/openclaw/issues/68702). Thanks [@&#8203;safrano9999](https://redirect.github.com/safrano9999) and [@&#8203;skolez](https://redirect.github.com/skolez). - Agents/LM Studio: strip prior-turn Gemma 4 reasoning from OpenAI-compatible replay while preserving active tool-call continuation reasoning. Fixes [#&#8203;68704](https://redirect.github.com/openclaw/openclaw/issues/68704). Thanks [@&#8203;chip-snomo](https://redirect.github.com/chip-snomo) and [@&#8203;Kailigithub](https://redirect.github.com/Kailigithub). - LM Studio: allow interactive onboarding to leave the API key blank for unauthenticated local servers, using local synthetic auth while clearing stale LM Studio auth profiles. Fixes [#&#8203;66937](https://redirect.github.com/openclaw/openclaw/issues/66937). Thanks [@&#8203;olamedia](https://redirect.github.com/olamedia). - Plugins/startup: use a `PluginLookUpTable` during Gateway startup so channel ownership, deferred channel loading, and startup plugin IDs reuse the same installed manifest registry instead of rebuilding manifest metadata on the boot path. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/startup: pass the Gateway `PluginLookUpTable` through plugin loading so auto-enable checks and startup-scope fallback reuse the same manifest registry instead of doing another manifest pass. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/startup: carry the Gateway `PluginLookUpTable` into deferred channel full-runtime reloads so post-listen startup does not rebuild manifest metadata after the provisional setup-runtime load. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Gateway/models: reuse Gateway plugin manifest metadata during the initial model-pricing refresh so pricing policies and configured plugin web-search models do not rebuild plugin lookups during startup. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Gateway/startup: extend `OPENCLAW_GATEWAY_STARTUP_TRACE=1` with per-phase event-loop delay plus plugin lookup-table timing and count metrics for installed-index, manifest, startup-plan, and owner-map work, and include the new timing fields in startup benchmark summaries. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/channels: resolve read-only channel command defaults from one plugin index plus manifest pass instead of reloading plugin metadata while checking candidate plugin enablement. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/capabilities: cache manifest-derived capability provider plugin IDs per config snapshot so repeated TTS, media, realtime, memory, image, video, and music provider resolution avoids redundant manifest scans. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/contracts: resolve runtime manifest-contract plugin owners from one plugin index plus manifest pass instead of rebuilding manifest metadata separately for all owners and enabled owners. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/extractors: reuse one manifest registry pass while resolving bundled document and web-content extractor plugins instead of rereading manifests for compatibility and enablement filtering. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/providers: reuse one plugin registry snapshot and manifest registry while resolving provider discovery entries instead of rebuilding manifest metadata after provider owner discovery. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/registry: resolve lookup-table owner maps for providers, CLI backends, setup providers, command aliases, model catalogs, channel configs, and manifest contracts while preserving setup-only CLI backend ownership. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Plugins/registry: cache repeated installed-index manifest registry fallback rebuilds behind a bounded invalidating cache so cold provider-discovery paths avoid rereading unchanged manifests. Thanks [@&#8203;mcaxtr](https://redirect.github.com/mcaxtr). - Plugins/web: reuse manifest records already loaded for bundled web provider candidate discovery when falling back to public artifact provider loading. Thanks [@&#8203;shakkernerd](https://redirect.github.com/shakkernerd). - Mattermost: keep direct-message replies top-level by suppressing reply roots for DM delivery while preserving channel and group thread roots, and derive inbound chat kind from the trusted channel lookup instead of the websocket event channel type. Carries forward [#&#8203;60115](https://redirect.github.com/openclaw/openclaw/issues/60115), [#&#8203;55186](https://redirect.github.com/openclaw/openclaw/issues/55186), [#&#8203;72305](https://redirect.github.com/openclaw/openclaw/issues/72305), and [#&#8203;72659](https://redirect.github.com/openclaw/openclaw/issues/72659); refs [#&#8203;59758](https://redirect.github.com/openclaw/openclaw/issues/59758), [#&#8203;59981](https://redirect.github.com/openclaw/openclaw/issues/59981), [#&#8203;59791](https://redirect.github.com/openclaw/openclaw/issues/59791), and [#&#8203;57565](https://redirect.github.com/openclaw/openclaw/issues/57565). Thanks [@&#8203;vincentkoc](https://redirect.github.com/vincentkoc), [@&#8203;jwchmodx](https://redirect.github.com/jwchmodx), and [@&#8203;hnykda](https://redirect.github.com/hnykda). - Docker: pre-create `/home/node/.openclaw` with node ownership and private permissions so first-run Docker Compose named volumes no longer fail startup with EACCES. ([#&#8203;48072](https://redirect.github.com/openclaw/openclaw/issues/48072), [#&#8203;63959](https://redirect.github.com/openclaw/openclaw/issues/63959); fixes [#&#8203;61279](https://redirect.github.com/openclaw/openclaw/issues/61279)) Thanks [@&#8203;timoxue](https://redirect.github.com/timoxue) and [@&#8203;jeanibarz](https://redirect.github.com/jeanibarz). - CLI/Gateway: treat local restart probe policy closes for connect, exact `device required`, pairing, and auth failures as Gateway reachability proof without accepting empty, broad standalone token/password/scope/role, or pair-substring 1008 close reasons. Fixes [#&#8203;48771](https://redirect.github.com/openclaw/openclaw/issues/48771); carries forward [#&#8203;48801](https://redirect.github.com/openclaw/openclaw/issues/48801); related [#&#8203;63491](https://redirect.github.com/openclaw/openclaw/issues/63491). Thanks [@&#8203;MarsDoge](https://redirect.github.com/MarsDoge) and [@&#8203;genoooool](https://redirect.github.com/genoooool). - Feishu: send outgoing interactive reply payloads as native cards with clickable buttons while preserving text, media, and document-comment fallbacks. Fixes [#&#8203;13175](https://redirect.github.com/openclaw/openclaw/issues/13175) and [#&#8203;58298](https://redirect.github.com/openclaw/openclaw/issues/58298); carries forward [#&#8203;47891](https://redire </details> --- ### Configuration 📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My43Ni4yIiwidXBkYXRlZEluVmVyIjoiNDMuNzYuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
les_clankeurs/openclaw-image-2!25
No description provided.