tag:github.com,2008:https://github.com/openclaw/openclaw/releases
Release notes from openclaw
2026-03-14T04:56:16Z
tag:github.com,2008:Repository/1103012935/v2026.3.13-beta.1
2026-03-14T05:17:10Z
openclaw 2026.3.13-beta.1
<p>Pre-release for npm beta tag <code>v2026.3.13-beta.1</code>.</p>
<p>macOS assets are built with stable app version <code>2026.3.13</code> so they can be reused for the later non-beta release. <code>appcast.xml</code> is intentionally unchanged in this pre-release.</p>
<h3>Changes</h3>
<ul>
<li>Android/chat settings: redesign the chat settings sheet with grouped device and media sections, refresh the Connect and Voice tabs, and tighten the chat composer/session header for a denser mobile layout. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069833598" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44894" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44894/hovercard" href="https://github.com/openclaw/openclaw/pull/44894">#44894</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>iOS/onboarding: add a first-run welcome pager before gateway setup, stop auto-opening the QR scanner, and show <code>/pair qr</code> instructions on the connect step. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070610237" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45054" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45054/hovercard" href="https://github.com/openclaw/openclaw/pull/45054">#45054</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Browser/existing-session: add an official Chrome DevTools MCP attach mode for signed-in live Chrome sessions, with docs for <code>chrome://inspect/#remote-debugging</code> enablement and direct backlinks to Chrome’s own setup guides.</li>
<li>Browser/agents: add built-in <code>profile="user"</code> for the logged-in host browser and <code>profile="chrome-relay"</code> for the extension relay, so agent browser calls can prefer the real signed-in browser without the extra <code>browserSession</code> selector.</li>
<li>Browser/act automation: add batched actions, selector targeting, and delayed clicks for browser act requests with normalized batch dispatch. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Docker/timezone override: add <code>OPENCLAW_TZ</code> so <code>docker-setup.sh</code> can pin gateway and CLI containers to a chosen IANA timezone instead of inheriting the daemon default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020565376" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34119" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34119/hovercard" href="https://github.com/openclaw/openclaw/pull/34119">#34119</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a>.</li>
<li>Dependencies/pi: bump <code>@mariozechner/pi-agent-core</code>, <code>@mariozechner/pi-ai</code>, <code>@mariozechner/pi-coding-agent</code>, and <code>@mariozechner/pi-tui</code> to <code>0.58.0</code>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Dashboard/chat UI: stop reloading full chat history on every live tool result in dashboard v2 so tool-heavy runs no longer trigger UI freeze/re-render storms while the final event still refreshes persisted history. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073962665" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45541" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45541/hovercard" href="https://github.com/openclaw/openclaw/pull/45541">#45541</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a>.</li>
<li>Ollama/reasoning visibility: stop promoting native <code>thinking</code> and <code>reasoning</code> fields into final assistant text so local reasoning models no longer leak internal thoughts in normal replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4072426421" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45330" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45330/hovercard" href="https://github.com/openclaw/openclaw/pull/45330">#45330</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xi7ang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xi7ang">@xi7ang</a>.</li>
<li>Android/onboarding QR scan: switch setup QR scanning to Google Code Scanner so onboarding uses a more reliable scanner instead of the legacy embedded ZXing flow. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070391049" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45021" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45021/hovercard" href="https://github.com/openclaw/openclaw/pull/45021">#45021</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Browser/existing-session: harden driver validation and session lifecycle so transport errors trigger reconnects while tool-level errors preserve the session, and extract shared ARIA role sets to deduplicate Playwright and Chrome MCP snapshot paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074477646" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45682" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45682/hovercard" href="https://github.com/openclaw/openclaw/pull/45682">#45682</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/odysseus0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/odysseus0">@odysseus0</a>.</li>
<li>Browser/existing-session: accept text-only <code>list_pages</code> and <code>new_page</code> responses from Chrome DevTools MCP so live-session tab discovery and new-tab open flows keep working when the server omits structured page metadata.</li>
<li>Control UI/insecure auth: preserve explicit shared token and password auth on plain-HTTP Control UI connects so LAN and reverse-proxy sessions no longer drop shared auth before the first WebSocket handshake. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070926422" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45088" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45088/hovercard" href="https://github.com/openclaw/openclaw/pull/45088">#45088</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velvet-shark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velvet-shark">@velvet-shark</a>.</li>
<li>Gateway/session reset: preserve <code>lastAccountId</code> and <code>lastThreadId</code> across gateway session resets so replies keep routing back to the same account and thread after <code>/reset</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069301815" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44773" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44773/hovercard" href="https://github.com/openclaw/openclaw/pull/44773">#44773</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a>.</li>
<li>macOS/onboarding: avoid self-restarting freshly bootstrapped launchd gateways and give new daemon installs longer to become healthy, so <code>openclaw onboard --install-daemon</code> no longer false-fails on slower Macs and fresh VM snapshots.</li>
<li>Gateway/status: add <code>openclaw gateway status --require-rpc</code> and clearer Linux non-interactive daemon-install failure reporting so automation can fail hard on probe misses instead of treating a printed RPC error as green.</li>
<li>macOS/exec approvals: respect per-agent exec approval settings in the gateway prompter, including allowlist fallback when the native prompt cannot be shown, so gateway-triggered <code>system.run</code> requests follow configured policy instead of always prompting or denying unexpectedly. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3923896417" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13707" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/13707/hovercard" href="https://github.com/openclaw/openclaw/pull/13707">#13707</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sliekens/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sliekens">@sliekens</a>.</li>
<li>Telegram/media downloads: thread the same direct or proxy transport policy into SSRF-guarded file fetches so inbound attachments keep working when Telegram falls back between env-proxy and direct networking. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4068686180" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44639" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44639/hovercard" href="https://github.com/openclaw/openclaw/pull/44639">#44639</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/inbound media IPv4 fallback: retry SSRF-guarded Telegram file downloads once with the same IPv4 fallback policy as Bot API calls so fresh installs on IPv6-broken hosts no longer fail to download inbound images.</li>
<li>Windows/gateway install: bound <code>schtasks</code> calls and fall back to the Startup-folder login item when task creation hangs, so native <code>openclaw gateway install</code> fails fast instead of wedging forever on broken Scheduled Task setups.</li>
<li>Windows/gateway stop: resolve Startup-folder fallback listeners from the installed <code>gateway.cmd</code> port, so <code>openclaw gateway stop</code> now actually kills fallback-launched gateway processes before restart.</li>
<li>Windows/gateway status: reuse the installed service command environment when reading runtime status, so startup-fallback gateways keep reporting the configured port and running state in <code>gateway status --json</code> instead of falling back to <code>gateway port unknown</code>.</li>
<li>Windows/gateway auth: stop attaching device identity on local loopback shared-token and password gateway calls, so native Windows agent replies no longer log stale <code>device signature expired</code> fallback noise before succeeding.</li>
<li>Discord/gateway startup: treat plain-text and transient <code>/gateway/bot</code> metadata fetch failures as transient startup errors so Discord gateway boot no longer crashes on unhandled rejections. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067404921" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44397" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44397/hovercard" href="https://github.com/openclaw/openclaw/pull/44397">#44397</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Slack/probe: keep <code>auth.test()</code> bot and team metadata mapping stable while simplifying the probe result path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069306435" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44775" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44775/hovercard" href="https://github.com/openclaw/openclaw/pull/44775">#44775</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cafexss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cafexss">@Cafexss</a>.</li>
<li>Dashboard/chat UI: render oversized plain-text replies as normal paragraphs instead of capped gray code blocks, so long desktop chat responses stay readable without tab-switching refreshes.</li>
<li>Dashboard/chat UI: restore the <code>chat-new-messages</code> class on the New messages scroll pill so the button uses its existing compact styling instead of rendering as a full-screen SVG overlay. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069611844" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44856" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44856/hovercard" href="https://github.com/openclaw/openclaw/pull/44856">#44856</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Astro-Han/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Astro-Han">@Astro-Han</a>.</li>
<li>Gateway/Control UI: restore the operator-only device-auth bypass and classify browser connect failures so origin and device-identity problems no longer show up as auth errors in the Control UI and web chat. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073753421" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45512" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45512/hovercard" href="https://github.com/openclaw/openclaw/pull/45512">#45512</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a>.</li>
<li>macOS/voice wake: stop crashing wake-word command extraction when speech segment ranges come from a different transcript instance.</li>
<li>Discord/allowlists: honor raw <code>guild_id</code> when hydrated guild objects are missing so allowlisted channels and threads like <code>#maintainers</code> no longer get false-dropped before channel allowlist checks.</li>
<li>macOS/runtime locator: require Node >=22.16.0 during macOS runtime discovery so the app no longer accepts Node versions that the main runtime guard rejects later. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sumleo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sumleo">@sumleo</a>.</li>
<li>Agents/custom providers: preserve blank API keys for loopback OpenAI-compatible custom providers by clearing the synthetic Authorization header at runtime, while keeping explicit apiKey and oauth/token config from silently downgrading into fake bearer auth. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074327232" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45631" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45631/hovercard" href="https://github.com/openclaw/openclaw/pull/45631">#45631</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>Models/google-vertex Gemini flash-lite normalization: apply existing bare-ID preview normalization to <code>google-vertex</code> model refs and provider configs so <code>google-vertex/gemini-3.1-flash-lite</code> resolves as <code>gemini-3.1-flash-lite-preview</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053465814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42435" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42435/hovercard" href="https://github.com/openclaw/openclaw/pull/42435">#42435</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>iMessage/remote attachments: reject unsafe remote attachment paths before spawning SCP, so sender-controlled filenames can no longer inject shell metacharacters into remote media staging. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lintsinghua/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lintsinghua">@lintsinghua</a>.</li>
<li>Telegram/webhook auth: validate the Telegram webhook secret before reading or parsing request bodies, so unauthenticated requests are rejected immediately instead of consuming up to 1 MB first. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/space08/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/space08">@space08</a>.</li>
<li>Security/device pairing: make bootstrap setup codes single-use so pending device pairing requests cannot be silently replayed and widened to admin before approval. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
<li>Security/external content: strip zero-width and soft-hyphen marker-splitting characters during boundary sanitization so spoofed <code>EXTERNAL_UNTRUSTED_CONTENT</code> markers fall back to the existing hardening path instead of bypassing marker normalization.</li>
<li>Security/exec approvals: unwrap more <code>pnpm</code> runtime forms during approval binding, including <code>pnpm --reporter ... exec</code> and direct <code>pnpm node</code> file runs, with matching regression coverage and docs updates.</li>
<li>Security/exec approvals: fail closed for Perl <code>-M</code> and <code>-I</code> approval flows so preload and load-path module resolution stays outside approval-backed runtime execution unless the operator uses a broader explicit trust path.</li>
<li>Security/exec approvals: recognize PowerShell <code>-File</code> and <code>-f</code> wrapper forms during inline-command extraction so approval and command-analysis paths treat file-based PowerShell launches like the existing <code>-Command</code> variants.</li>
<li>Security/exec approvals: unwrap <code>env</code> dispatch wrappers inside shell-segment allowlist resolution on macOS so <code>env FOO=bar /path/to/bin</code> resolves against the effective executable instead of the wrapper token.</li>
<li>Security/exec approvals: treat backslash-newline as shell line continuation during macOS shell-chain parsing so line-continued <code>$(</code> substitutions fail closed instead of slipping past command-substitution checks.</li>
<li>Security/exec approvals: bind macOS skill auto-allow trust to both executable name and resolved path so same-basename binaries no longer inherit trust from unrelated skill bins.</li>
<li>Build/plugin-sdk bundling: bundle plugin-sdk subpath entries in one shared build pass so published packages stop duplicating shared chunks and avoid the recent plugin-sdk memory blow-up. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073121553" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45426" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45426/hovercard" href="https://github.com/openclaw/openclaw/pull/45426">#45426</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TarasShyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TarasShyn">@TarasShyn</a>.</li>
<li>Cron/isolated sessions: route nested cron-triggered embedded runner work onto the nested lane so isolated cron jobs no longer deadlock when compaction or other queued inner work runs. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/OpenAI-compatible compat overrides: respect explicit user <code>models[].compat</code> opt-ins for non-native <code>openai-completions</code> endpoints so usage-in-streaming capability overrides no longer get forced off when the endpoint actually supports them. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067806903" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44432" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44432/hovercard" href="https://github.com/openclaw/openclaw/pull/44432">#44432</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cheapestinference/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cheapestinference">@cheapestinference</a>.</li>
<li>Agents/Azure OpenAI startup prompts: rephrase the built-in <code>/new</code>, <code>/reset</code>, and post-compaction startup instruction so Azure OpenAI deployments no longer hit HTTP 400 false positives from the content filter. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4059875094" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43403" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43403/hovercard" href="https://github.com/openclaw/openclaw/pull/43403">#43403</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xingsy97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xingsy97">@xingsy97</a>.</li>
<li>Agents/memory bootstrap: load only one root memory file, preferring <code>MEMORY.md</code> and using <code>memory.md</code> as a fallback, so case-insensitive Docker mounts no longer inject duplicate memory context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3986957215" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26054" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26054/hovercard" href="https://github.com/openclaw/openclaw/pull/26054">#26054</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a>.</li>
<li>Agents/compaction: compare post-compaction token sanity checks against full-session pre-compaction totals and skip the check when token estimation fails, so sessions with large bootstrap context keep real token counts instead of falling back to unknown. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999199596" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28347" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28347/hovercard" href="https://github.com/openclaw/openclaw/pull/28347">#28347</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/efe-arv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/efe-arv">@efe-arv</a>.</li>
<li>Agents/compaction: preserve safeguard compaction summary language continuity via default and configurable custom instructions so persona drift is reduced after auto-compaction. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3907081362" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/10456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/10456/hovercard" href="https://github.com/openclaw/openclaw/pull/10456">#10456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/keepitmello/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/keepitmello">@keepitmello</a>.</li>
<li>Agents/tool warnings: distinguish gated core tools like <code>apply_patch</code> from plugin-only unknown entries in <code>tools.profile</code> warnings, so unavailable core tools now report current runtime/provider/model/config gating instead of suggesting a missing plugin.</li>
<li>Config/validation: accept documented <code>agents.list[].params</code> per-agent overrides in strict config validation so <code>openclaw config validate</code> no longer rejects runtime-supported <code>cacheRetention</code>, <code>temperature</code>, and <code>maxTokens</code> settings. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046189840" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41171" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41171/hovercard" href="https://github.com/openclaw/openclaw/pull/41171">#41171</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/atian8179/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/atian8179">@atian8179</a>.</li>
<li>Config/web fetch: restore runtime validation for documented <code>tools.web.fetch.readability</code> and <code>tools.web.fetch.firecrawl</code> settings so valid web fetch configs no longer fail with unrecognized-key errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054903753" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42583" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42583/hovercard" href="https://github.com/openclaw/openclaw/pull/42583">#42583</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stim64045-spec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stim64045-spec">@stim64045-spec</a>.</li>
<li>Signal/config validation: add <code>channels.signal.groups</code> schema support so per-group <code>requireMention</code>, <code>tools</code>, and <code>toolsBySender</code> overrides no longer get rejected during config validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3993307537" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27199" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27199/hovercard" href="https://github.com/openclaw/openclaw/pull/27199">#27199</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unisone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unisone">@unisone</a>.</li>
<li>Config/discovery: accept <code>discovery.wideArea.domain</code> in strict config validation so unicast DNS-SD gateway configs no longer fail with an unrecognized-key error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026235526" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35615" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35615/hovercard" href="https://github.com/openclaw/openclaw/pull/35615">#35615</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Telegram/media errors: redact Telegram file URLs before building media fetch errors so failed inbound downloads do not leak bot tokens into logs. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/space08/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/space08">@space08</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.13-1
2026-03-14T18:05:53Z
openclaw 2026.3.13
<p>This recovery release uses <code>v2026.3.13-1</code> because GitHub immutable releases do not allow reusing <code>v2026.3.13</code> after publication.</p>
<p>Important:</p>
<ul>
<li>This release exists to recover the broken <code>v2026.3.13</code> tag/release path.</li>
<li>The corresponding npm version is still <code>2026.3.13</code>, not <code>2026.3.13-1</code>.</li>
<li>The <code>-1</code> suffix is for the Git tag and GitHub Release only.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(compaction): use full-session token count for post-compaction sanity check by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/efe-arv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/efe-arv">@efe-arv</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999199596" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28347" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28347/hovercard" href="https://github.com/openclaw/openclaw/pull/28347">#28347</a></li>
<li>fix(telegram): thread media transport policy into SSRF by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4068686180" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44639" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44639/hovercard" href="https://github.com/openclaw/openclaw/pull/44639">#44639</a></li>
<li>fix: handle Discord gateway metadata fetch failures by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067404921" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44397" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44397/hovercard" href="https://github.com/openclaw/openclaw/pull/44397">#44397</a></li>
<li>docs: move post-release changelog entries to Unreleased by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069046751" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44691" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44691/hovercard" href="https://github.com/openclaw/openclaw/pull/44691">#44691</a></li>
<li>fix(session): preserve <code>lastAccountId </code> and <code>lastThreadId</code> on session reset by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069301815" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44773" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44773/hovercard" href="https://github.com/openclaw/openclaw/pull/44773">#44773</a></li>
<li>Updated default model from openai-codex/gpt-5.3-codex to openai-codex/gpt-5.4 in tests. by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jrrcdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jrrcdev">@jrrcdev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067059074" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44367" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44367/hovercard" href="https://github.com/openclaw/openclaw/pull/44367">#44367</a></li>
<li>fix: address delivery dedupe review follow-ups by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4068817081" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44666" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44666/hovercard" href="https://github.com/openclaw/openclaw/pull/44666">#44666</a></li>
<li>CLI: align xhigh thinking help text by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069449766" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44819" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44819/hovercard" href="https://github.com/openclaw/openclaw/pull/44819">#44819</a></li>
<li>docs: fix changelog credit for xhigh help by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069745041" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44874" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44874/hovercard" href="https://github.com/openclaw/openclaw/pull/44874">#44874</a></li>
<li>fix(agents): drop Anthropic thinking blocks on replay by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069526883" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44843" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44843/hovercard" href="https://github.com/openclaw/openclaw/pull/44843">#44843</a></li>
<li>docs: fix session key :dm: → :direct: by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3989431996" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26506" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26506/hovercard" href="https://github.com/openclaw/openclaw/pull/26506">#26506</a></li>
<li>feat(android): redesign chat settings UI by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069833598" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44894" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44894/hovercard" href="https://github.com/openclaw/openclaw/pull/44894">#44894</a></li>
<li>fix(agents): avoid injecting memory file twice on case-insensitive mounts by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3986957215" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26054" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26054/hovercard" href="https://github.com/openclaw/openclaw/pull/26054">#26054</a></li>
<li>Docker: add OPENCLAW_TZ timezone support by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020565376" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34119" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34119/hovercard" href="https://github.com/openclaw/openclaw/pull/34119">#34119</a></li>
<li>Android: fix HttpURLConnection leak in TalkModeVoiceResolver by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kaneki-x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kaneki-x">@Kaneki-x</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062672693" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43780" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43780/hovercard" href="https://github.com/openclaw/openclaw/pull/43780">#43780</a></li>
<li>fix(agents): respect explicit user compat overrides for non-native openai-completions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cheapestinference/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cheapestinference">@cheapestinference</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067806903" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44432" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44432/hovercard" href="https://github.com/openclaw/openclaw/pull/44432">#44432</a></li>
<li>test(config): cover requiresOpenAiAnthropicToolPayload in compat schema fixture by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xingsy97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xingsy97">@xingsy97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4060356290" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43438" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43438/hovercard" href="https://github.com/openclaw/openclaw/pull/43438">#43438</a></li>
<li>fix(agents): rephrase session reset prompt to avoid Azure content filter by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xingsy97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xingsy97">@xingsy97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4059875094" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43403" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43403/hovercard" href="https://github.com/openclaw/openclaw/pull/43403">#43403</a></li>
<li>fix(config): add missing params field to agents.list[] validation schema by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/atian8179/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/atian8179">@atian8179</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046189840" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41171" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41171/hovercard" href="https://github.com/openclaw/openclaw/pull/41171">#41171</a></li>
<li>fix(android): use Google Code Scanner for onboarding QR by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070391049" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45021" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45021/hovercard" href="https://github.com/openclaw/openclaw/pull/45021">#45021</a></li>
<li>fix: restore web fetch firecrawl config in runtime zod schema by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stim64045-spec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stim64045-spec">@stim64045-spec</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054903753" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42583" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42583/hovercard" href="https://github.com/openclaw/openclaw/pull/42583">#42583</a></li>
<li>fix(signal): add groups config to Signal channel schema by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unisone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unisone">@unisone</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3993307537" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27199" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27199/hovercard" href="https://github.com/openclaw/openclaw/pull/27199">#27199</a></li>
<li>feat(ios): add onboarding welcome pager by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070610237" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45054" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45054/hovercard" href="https://github.com/openclaw/openclaw/pull/45054">#45054</a></li>
<li>small addition to .gitignore by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sovtoshi-SC/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sovtoshi-SC">@Sovtoshi-SC</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056138559" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42879" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42879/hovercard" href="https://github.com/openclaw/openclaw/pull/42879">#42879</a></li>
<li>fix(discovery): add missing domain to wideArea Zod config schema by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026235526" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35615" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35615/hovercard" href="https://github.com/openclaw/openclaw/pull/35615">#35615</a></li>
<li>fix(ui): keep shared auth on insecure control-ui connects by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velvet-shark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velvet-shark">@velvet-shark</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070926422" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45088" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45088/hovercard" href="https://github.com/openclaw/openclaw/pull/45088">#45088</a></li>
<li>fix: preserve persona and language continuity in compaction summaries by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/keepitmello/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/keepitmello">@keepitmello</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3907081362" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/10456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/10456/hovercard" href="https://github.com/openclaw/openclaw/pull/10456">#10456</a></li>
<li>ui: mobile navigation drawer & theme variant refinements by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4071026978" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45107" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45107/hovercard" href="https://github.com/openclaw/openclaw/pull/45107">#45107</a></li>
<li>fix: resolve target agent workspace for cross-agent subagent spawns by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/moshehbenavraham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/moshehbenavraham">@moshehbenavraham</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041951406" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40176" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40176/hovercard" href="https://github.com/openclaw/openclaw/pull/40176">#40176</a></li>
<li>fix(ollama): hide native reasoning-only output by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4072426421" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45330" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45330/hovercard" href="https://github.com/openclaw/openclaw/pull/45330">#45330</a></li>
<li>test: annotate chat abort helper exports by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4072555687" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45346" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45346/hovercard" href="https://github.com/openclaw/openclaw/pull/45346">#45346</a></li>
<li>Fix incorrect rendering of brave costs in docs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/keelanfh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/keelanfh">@keelanfh</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070216029" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44989" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44989/hovercard" href="https://github.com/openclaw/openclaw/pull/44989">#44989</a></li>
<li>security(docker): prevent gateway token leak in Docker build context by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xingsy97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xingsy97">@xingsy97</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070094157" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44956" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44956/hovercard" href="https://github.com/openclaw/openclaw/pull/44956">#44956</a></li>
<li>refactor: remove redundant ?? undefined in Slack probe by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cafexss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cafexss">@Cafexss</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069306435" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44775" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44775/hovercard" href="https://github.com/openclaw/openclaw/pull/44775">#44775</a></li>
<li>fix(ui): restore chat-new-messages class on scroll pill button by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Astro-Han/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Astro-Han">@Astro-Han</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069611844" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44856" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44856/hovercard" href="https://github.com/openclaw/openclaw/pull/44856">#44856</a></li>
<li>fix(windows): suppress visible console windows during restart and process cleanup by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MoerAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MoerAI">@MoerAI</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069520860" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44842" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44842/hovercard" href="https://github.com/openclaw/openclaw/pull/44842">#44842</a></li>
<li>Slack: add opt-in interactive reply directives by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4068596898" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44607" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44607/hovercard" href="https://github.com/openclaw/openclaw/pull/44607">#44607</a></li>
<li>Docs: describe Slack interactive replies by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073435986" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45463" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45463/hovercard" href="https://github.com/openclaw/openclaw/pull/45463">#45463</a></li>
<li>fix(cron): prevent isolated cron nested lane deadlocks by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073411607" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45459" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45459/hovercard" href="https://github.com/openclaw/openclaw/pull/45459">#45459</a></li>
<li>Fix updater refresh cwd for service reinstall by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073374987" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45452" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45452/hovercard" href="https://github.com/openclaw/openclaw/pull/45452">#45452</a></li>
<li>[codex] Polish sidebar status, agent skills, and chat rendering by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073361815" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45451" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45451/hovercard" href="https://github.com/openclaw/openclaw/pull/45451">#45451</a></li>
<li>perf(build): deduplicate plugin-sdk chunks to fix ~2x memory regression by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TarasShyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TarasShyn">@TarasShyn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073121553" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45426" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45426/hovercard" href="https://github.com/openclaw/openclaw/pull/45426">#45426</a></li>
<li>Guard updater service refresh against missing invocation cwd by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073615214" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45486" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45486/hovercard" href="https://github.com/openclaw/openclaw/pull/45486">#45486</a></li>
<li>fix(browser): normalize batch act dispatch for selector and batch support by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073403860" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45457" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45457/hovercard" href="https://github.com/openclaw/openclaw/pull/45457">#45457</a></li>
<li>docs(android): note that app is not publicly released yet by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eengad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eengad">@eengad</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3973074990" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23051" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23051/hovercard" href="https://github.com/openclaw/openclaw/pull/23051">#23051</a></li>
<li>fix(browser): follow up batch failure and limit handling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073718220" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45506" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45506/hovercard" href="https://github.com/openclaw/openclaw/pull/45506">#45506</a></li>
<li>docker: add apt-get upgrade to all Dockerfiles by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jacobtomlinson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jacobtomlinson">@jacobtomlinson</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4072816853" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45384" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45384/hovercard" href="https://github.com/openclaw/openclaw/pull/45384">#45384</a></li>
<li>fix(config): avoid Anthropic startup crash by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073819775" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45520" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45520/hovercard" href="https://github.com/openclaw/openclaw/pull/45520">#45520</a></li>
<li>test: preserve wrapper behavior for targeted runs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073811983" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45518" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45518/hovercard" href="https://github.com/openclaw/openclaw/pull/45518">#45518</a></li>
<li>UI: fix chat context notice icon sizing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073911134" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45533" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45533/hovercard" href="https://github.com/openclaw/openclaw/pull/45533">#45533</a></li>
<li>fix(ui): stop dashboard chat history reload storm by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073962665" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45541" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45541/hovercard" href="https://github.com/openclaw/openclaw/pull/45541">#45541</a></li>
<li>fix: retry Telegram inbound media downloads over IPv4 fallback by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4072404023" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45327" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45327/hovercard" href="https://github.com/openclaw/openclaw/pull/45327">#45327</a></li>
<li>fix(feishu): preserve non-ASCII filenames in file uploads (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019937983" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33912" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33912/hovercard" href="https://github.com/openclaw/openclaw/issues/33912">#33912</a>) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fabiaodemianyang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fabiaodemianyang">@fabiaodemianyang</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021093683" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34262" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34262/hovercard" href="https://github.com/openclaw/openclaw/pull/34262">#34262</a></li>
<li>macOS: respect exec-approvals.json settings in gateway prompter by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sliekens/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sliekens">@sliekens</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3923896417" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13707" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/13707/hovercard" href="https://github.com/openclaw/openclaw/pull/13707">#13707</a></li>
<li>fix(ui): keep oversized chat replies readable by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074084975" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45559" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45559/hovercard" href="https://github.com/openclaw/openclaw/pull/45559">#45559</a></li>
<li>fix(gateway/ui): restore control-ui auth bypass and classify connect failures by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4073753421" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45512" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45512/hovercard" href="https://github.com/openclaw/openclaw/pull/45512">#45512</a></li>
<li>fix(macos): prevent PortGuard from killing Docker Desktop in remote mode by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teslamint/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teslamint">@teslamint</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3924348886" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13798" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/13798/hovercard" href="https://github.com/openclaw/openclaw/pull/13798">#13798</a></li>
<li>fix(sessions): create transcript file on chat.inject when missing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2233admin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2233admin">@2233admin</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030253707" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36645" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36645/hovercard" href="https://github.com/openclaw/openclaw/pull/36645">#36645</a></li>
<li>Plugins: fail fast on channel and binding collisions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074322521" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45628" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45628/hovercard" href="https://github.com/openclaw/openclaw/pull/45628">#45628</a></li>
<li>fix(macos): align minimum Node.js version with runtime guard (22.16.0) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ImLukeF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ImLukeF">@ImLukeF</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074355276" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45640" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45640/hovercard" href="https://github.com/openclaw/openclaw/pull/45640">#45640</a></li>
<li>fix(agents): preserve blank local custom-provider API keys after onboarding by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074327232" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45631" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45631/hovercard" href="https://github.com/openclaw/openclaw/pull/45631">#45631</a></li>
<li>fix(browser): harden existing-session driver validation and session lifecycle by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/odysseus0/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/odysseus0">@odysseus0</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074477646" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45682" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45682/hovercard" href="https://github.com/openclaw/openclaw/pull/45682">#45682</a></li>
<li>fix(feishu): add early event-level dedup to prevent duplicate replies by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yunweibang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yunweibang">@yunweibang</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062552061" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43762" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43762/hovercard" href="https://github.com/openclaw/openclaw/pull/43762">#43762</a></li>
<li>fix(models): apply Gemini model-id normalization to google-vertex provider by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053465814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42435" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42435/hovercard" href="https://github.com/openclaw/openclaw/pull/42435">#42435</a></li>
<li>Gateway: treat scope-limited probe RPC as degraded reachability by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074304201" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45622" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45622/hovercard" href="https://github.com/openclaw/openclaw/pull/45622">#45622</a></li>
<li>fix(gateway): bound unanswered client requests by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4074500677" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45689" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45689/hovercard" href="https://github.com/openclaw/openclaw/pull/45689">#45689</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jrrcdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jrrcdev">@jrrcdev</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067059074" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44367" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44367/hovercard" href="https://github.com/openclaw/openclaw/pull/44367">#44367</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kaneki-x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kaneki-x">@Kaneki-x</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062672693" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43780" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43780/hovercard" href="https://github.com/openclaw/openclaw/pull/43780">#43780</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cheapestinference/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cheapestinference">@cheapestinference</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067806903" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44432" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44432/hovercard" href="https://github.com/openclaw/openclaw/pull/44432">#44432</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xingsy97/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xingsy97">@xingsy97</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4060356290" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43438" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43438/hovercard" href="https://github.com/openclaw/openclaw/pull/43438">#43438</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/atian8179/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/atian8179">@atian8179</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046189840" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41171" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41171/hovercard" href="https://github.com/openclaw/openclaw/pull/41171">#41171</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stim64045-spec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stim64045-spec">@stim64045-spec</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054903753" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42583" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42583/hovercard" href="https://github.com/openclaw/openclaw/pull/42583">#42583</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sovtoshi-SC/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sovtoshi-SC">@Sovtoshi-SC</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056138559" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42879" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42879/hovercard" href="https://github.com/openclaw/openclaw/pull/42879">#42879</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/keepitmello/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/keepitmello">@keepitmello</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3907081362" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/10456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/10456/hovercard" href="https://github.com/openclaw/openclaw/pull/10456">#10456</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/moshehbenavraham/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/moshehbenavraham">@moshehbenavraham</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041951406" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40176" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40176/hovercard" href="https://github.com/openclaw/openclaw/pull/40176">#40176</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/keelanfh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/keelanfh">@keelanfh</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4070216029" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44989" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44989/hovercard" href="https://github.com/openclaw/openclaw/pull/44989">#44989</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cafexss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cafexss">@Cafexss</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069306435" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44775" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44775/hovercard" href="https://github.com/openclaw/openclaw/pull/44775">#44775</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Astro-Han/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Astro-Han">@Astro-Han</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4069611844" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44856" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44856/hovercard" href="https://github.com/openclaw/openclaw/pull/44856">#44856</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/eengad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/eengad">@eengad</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3973074990" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23051" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23051/hovercard" href="https://github.com/openclaw/openclaw/pull/23051">#23051</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jacobtomlinson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jacobtomlinson">@jacobtomlinson</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4072816853" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/45384" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/45384/hovercard" href="https://github.com/openclaw/openclaw/pull/45384">#45384</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fabiaodemianyang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fabiaodemianyang">@fabiaodemianyang</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021093683" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34262" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34262/hovercard" href="https://github.com/openclaw/openclaw/pull/34262">#34262</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sliekens/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sliekens">@sliekens</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3923896417" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13707" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/13707/hovercard" href="https://github.com/openclaw/openclaw/pull/13707">#13707</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teslamint/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teslamint">@teslamint</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3924348886" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13798" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/13798/hovercard" href="https://github.com/openclaw/openclaw/pull/13798">#13798</a></li>
<li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yunweibang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yunweibang">@yunweibang</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062552061" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43762" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43762/hovercard" href="https://github.com/openclaw/openclaw/pull/43762">#43762</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/openclaw/openclaw/compare/v2026.3.12...v2026.3.13-1"><tt>v2026.3.12...v2026.3.13-1</tt></a></p>
onutc
tag:github.com,2008:Repository/1103012935/v2026.3.12
2026-03-13T04:26:47Z
openclaw 2026.3.12
<h3>Changes</h3>
<ul>
<li>Control UI/dashboard-v2: refresh the gateway dashboard with modular overview, chat, config, agent, and session views, plus a command palette, mobile bottom tabs, and richer chat tools like slash commands, search, export, and pinned messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048352101" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41503" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41503/hovercard" href="https://github.com/openclaw/openclaw/pull/41503">#41503</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a>.</li>
<li>OpenAI/GPT-5.4 fast mode: add configurable session-level fast toggles across <code>/fast</code>, TUI, Control UI, and ACP, with per-model config defaults and OpenAI/Codex request shaping.</li>
<li>Anthropic/Claude fast mode: map the shared <code>/fast</code> toggle and <code>params.fastMode</code> to direct Anthropic API-key <code>service_tier</code> requests, with live verification for both Anthropic and OpenAI fast-mode tiers.</li>
<li>Models/plugins: move Ollama, vLLM, and SGLang onto the provider-plugin architecture, with provider-owned onboarding, discovery, model-picker setup, and post-selection hooks so core provider wiring is more modular.</li>
<li>Docs/Kubernetes: Add a starter K8s install path with raw manifests, Kind setup, and deployment docs. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dzianisv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dzianisv">@dzianisv</a> <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/egkristi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/egkristi">@egkristi</a></li>
<li>Agents/subagents: add <code>sessions_yield</code> so orchestrators can end the current turn immediately, skip queued tool work, and carry a hidden follow-up payload into the next session turn. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029785377" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36537" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36537/hovercard" href="https://github.com/openclaw/openclaw/pull/36537">#36537</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jriff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jriff">@jriff</a></li>
<li>Slack/agent replies: support <code>channelData.slack.blocks</code> in the shared reply delivery path so agents can send Block Kit messages through standard Slack outbound delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4068550167" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44592" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44592/hovercard" href="https://github.com/openclaw/openclaw/pull/44592">#44592</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Security/device pairing: switch <code>/pair</code> and <code>openclaw qr</code> setup codes to short-lived bootstrap tokens so the next release no longer embeds shared gateway credentials in chat or QR pairing payloads. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lintsinghua/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lintsinghua">@lintsinghua</a>.</li>
<li>Security/plugins: disable implicit workspace plugin auto-load so cloned repositories cannot execute workspace plugin code without an explicit trust decision. (<code>GHSA-99qw-6mr3-36qr</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065508050" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44174" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44174/hovercard" href="https://github.com/openclaw/openclaw/pull/44174">#44174</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lintsinghua/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lintsinghua">@lintsinghua</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Models/Kimi Coding: send <code>anthropic-messages</code> tools in native Anthropic format again so <code>kimi-coding</code> stops degrading tool calls into XML/plain-text pseudo invocations instead of real <code>tool_use</code> blocks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037757647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38669" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38669/hovercard" href="https://github.com/openclaw/openclaw/issues/38669">#38669</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041350469" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39907" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39907/hovercard" href="https://github.com/openclaw/openclaw/issues/39907">#39907</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043169727" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40552" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40552/hovercard" href="https://github.com/openclaw/openclaw/issues/40552">#40552</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/opriz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/opriz">@opriz</a>.</li>
<li>TUI/chat log: reuse the active assistant message component for the same streaming run so <code>openclaw tui</code> no longer renders duplicate assistant replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025521944" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35364" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35364/hovercard" href="https://github.com/openclaw/openclaw/pull/35364">#35364</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lisitan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lisitan">@lisitan</a>.</li>
<li>Telegram/model picker: make inline model button selections persist the chosen session model correctly, clear overrides when selecting the configured default, and include effective fallback models in <code>/models</code> button validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041745940" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40105" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40105/hovercard" href="https://github.com/openclaw/openclaw/pull/40105">#40105</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/avirweb/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/avirweb">@avirweb</a>.</li>
<li>Cron/proactive delivery: keep isolated direct cron sends out of the write-ahead resend queue so transient-send retries do not replay duplicate proactive messages after restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043489659" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40646" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40646/hovercard" href="https://github.com/openclaw/openclaw/pull/40646">#40646</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/openperf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/openperf">@openperf</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Models/Kimi Coding: send the built-in <code>User-Agent: claude-code/0.1.0</code> header by default for <code>kimi-coding</code> while still allowing explicit provider headers to override it, so Kimi Code subscription auth can work without a local header-injection proxy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005512862" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30099" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/30099/hovercard" href="https://github.com/openclaw/openclaw/issues/30099">#30099</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Amineelfarssi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Amineelfarssi">@Amineelfarssi</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Models/OpenAI Codex Spark: keep <code>gpt-5.3-codex-spark</code> working on the <code>openai-codex/*</code> path via resolver fallbacks and clearer Codex-only handling, while continuing to suppress the stale direct <code>openai/*</code> Spark row that OpenAI rejects live.</li>
<li>Ollama/Kimi Cloud: apply the Moonshot Kimi payload compatibility wrapper to Ollama-hosted Kimi models like <code>kimi-k2.5:cloud</code>, so tool routing no longer breaks when thinking is enabled. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048433261" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41519" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/41519/hovercard" href="https://github.com/openclaw/openclaw/issues/41519">#41519</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Moonshot CN API: respect explicit <code>baseUrl</code> (api.moonshot.cn) in implicit provider resolution so platform.moonshot.cn API keys authenticate correctly instead of returning HTTP 401. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019282918" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33637" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33637/hovercard" href="https://github.com/openclaw/openclaw/issues/33637">#33637</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Kimi Coding/provider config: respect explicit <code>models.providers["kimi-coding"].baseUrl</code> when resolving the implicit provider so custom Kimi Coding endpoints no longer get overwritten by the built-in default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028969810" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36353" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36353/hovercard" href="https://github.com/openclaw/openclaw/issues/36353">#36353</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2233admin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2233admin">@2233admin</a>.</li>
<li>Gateway/main-session routing: keep TUI and other <code>mode:UI</code> main-session sends on the internal surface when <code>deliver</code> is enabled, so replies no longer inherit the session's persisted Telegram/WhatsApp route. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4063490665" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43918" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43918/hovercard" href="https://github.com/openclaw/openclaw/pull/43918">#43918</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>BlueBubbles/self-chat echo dedupe: drop reflected duplicate webhook copies only when a matching <code>fromMe</code> event was just seen for the same chat, body, and timestamp, preventing self-chat loops without broad webhook suppression. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013279046" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32166" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/32166/hovercard" href="https://github.com/openclaw/openclaw/issues/32166">#32166</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036854999" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38442" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38442/hovercard" href="https://github.com/openclaw/openclaw/pull/38442">#38442</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>iMessage/self-chat echo dedupe: drop reflected duplicate copies only when a matching <code>is_from_me</code> event was just seen for the same chat, text, and <code>created_at</code>, preventing self-chat loops without broad text-only suppression. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013279046" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32166" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/32166/hovercard" href="https://github.com/openclaw/openclaw/issues/32166">#32166</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036852230" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38440" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38440/hovercard" href="https://github.com/openclaw/openclaw/pull/38440">#38440</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Subagents/completion announce retries: raise the default announce timeout to 90 seconds and stop retrying gateway-timeout failures for externally delivered completion announces, preventing duplicate user-facing completion messages after slow gateway responses. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046534871" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41235" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/41235/hovercard" href="https://github.com/openclaw/openclaw/issues/41235">#41235</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vasujain00/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vasujain00">@vasujain00</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Mattermost/block streaming: fix duplicate message delivery (one threaded, one top-level) when block streaming is active by excluding <code>replyToId</code> from the block reply dedup key and adding an explicit <code>threading</code> dock to the Mattermost plugin. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047291053" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41362" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41362/hovercard" href="https://github.com/openclaw/openclaw/pull/41362">#41362</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mathiasnagler/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mathiasnagler">@mathiasnagler</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Mattermost/reply media delivery: pass agent-scoped <code>mediaLocalRoots</code> through shared reply delivery so allowed local files upload correctly from button, slash-command, and model-picker replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064262171" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44021" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44021/hovercard" href="https://github.com/openclaw/openclaw/pull/44021">#44021</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LyleLiu666/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LyleLiu666">@LyleLiu666</a>.</li>
<li>macOS/Reminders: add the missing <code>NSRemindersUsageDescription</code> to the bundled app so <code>apple-reminders</code> can trigger the system permission prompt from OpenClaw.app. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3894621561" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/8559" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/8559/hovercard" href="https://github.com/openclaw/openclaw/pull/8559">#8559</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinakars777/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinakars777">@dinakars777</a>.</li>
<li>Gateway/session discovery: discover disk-only and retired ACP session stores under custom templated <code>session.store</code> roots so ACP reconciliation, session-id/session-label targeting, and run-id fallback keep working after restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065510113" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44176" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44176/hovercard" href="https://github.com/openclaw/openclaw/pull/44176">#44176</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Plugins/env-scoped roots: fix plugin discovery/load caches and provenance tracking so same-process <code>HOME</code>/<code>OPENCLAW_HOME</code> changes no longer reuse stale plugin state or misreport <code>~/...</code> plugins as untracked. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064425297" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44046" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44046/hovercard" href="https://github.com/openclaw/openclaw/pull/44046">#44046</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Models/OpenRouter native ids: canonicalize native OpenRouter model keys across config writes, runtime lookups, fallback management, and <code>models list --plain</code>, and migrate legacy duplicated <code>openrouter/openrouter/...</code> config entries forward on write.</li>
<li>Windows/native update: make package installs use the npm update path instead of the git path, carry portable Git into native Windows updates, and mirror the installer's Windows npm env so <code>openclaw update</code> no longer dies early on missing <code>git</code> or <code>node-llama-cpp</code> download setup.</li>
<li>Sandbox/write: preserve pinned mutation-helper payload stdin so sandboxed <code>write</code> no longer reports success while creating empty files. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4063191518" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43876" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43876/hovercard" href="https://github.com/openclaw/openclaw/pull/43876">#43876</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/glitch418x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/glitch418x">@glitch418x</a>.</li>
<li>Security/exec approvals: escape invisible Unicode format characters in approval prompts so zero-width command text renders as visible <code>\u{...}</code> escapes instead of spoofing the reviewed command. (<code>GHSA-pcqg-f7rg-xfvv</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062165931" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43687" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43687/hovercard" href="https://github.com/openclaw/openclaw/pull/43687">#43687</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/EkiXu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/EkiXu">@EkiXu</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Hooks/loader: fail closed when workspace hook paths cannot be resolved with <code>realpath</code>, so unreadable or broken internal hook paths are skipped instead of falling back to unresolved imports. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067826677" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44437" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44437/hovercard" href="https://github.com/openclaw/openclaw/pull/44437">#44437</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Hooks/agent deliveries: dedupe repeated hook requests by optional idempotency key so webhook retries can reuse the first run instead of launching duplicate agent executions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4067826680" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44438" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44438/hovercard" href="https://github.com/openclaw/openclaw/pull/44438">#44438</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/exec detection: normalize compatibility Unicode and strip invisible formatting code points before obfuscation checks so zero-width and fullwidth command tricks no longer suppress heuristic detection. (<code>GHSA-9r3v-37xh-2cf6</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064850012" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44091" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44091/hovercard" href="https://github.com/openclaw/openclaw/pull/44091">#44091</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/wooluo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/wooluo">@wooluo</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/exec allowlist: preserve POSIX case sensitivity and keep <code>?</code> within a single path segment so exact-looking allowlist patterns no longer overmatch executables across case or directory boundaries. (<code>GHSA-f8r2-vg7x-gh8m</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062762122" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43798" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43798/hovercard" href="https://github.com/openclaw/openclaw/pull/43798">#43798</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/commands: require sender ownership for <code>/config</code> and <code>/debug</code> so authorized non-owner senders can no longer reach owner-only config and runtime debug surfaces. (<code>GHSA-r7vr-gr74-94p8</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4066432608" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44305" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44305/hovercard" href="https://github.com/openclaw/openclaw/pull/44305">#44305</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/gateway auth: clear unbound client-declared scopes on shared-token WebSocket connects so device-less shared-token operators cannot self-declare elevated scopes. (<code>GHSA-rqpp-rjj8-7wv8</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4066432646" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44306" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44306/hovercard" href="https://github.com/openclaw/openclaw/pull/44306">#44306</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LUOYEcode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LUOYEcode">@LUOYEcode</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/browser.request: block persistent browser profile create/delete routes from write-scoped <code>browser.request</code> so callers can no longer persist admin-only browser profile changes through the browser control surface. (<code>GHSA-vmhq-cqm9-6p7q</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062764757" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43800" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43800/hovercard" href="https://github.com/openclaw/openclaw/pull/43800">#43800</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/agent: reject public spawned-run lineage fields and keep workspace inheritance on the internal spawned-session path so external <code>agent</code> callers can no longer override the gateway workspace boundary. (<code>GHSA-2rqg-gjgv-84jm</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062767869" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43801" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43801/hovercard" href="https://github.com/openclaw/openclaw/pull/43801">#43801</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/session_status: enforce sandbox session-tree visibility and shared agent-to-agent access guards before reading or mutating target session state, so sandboxed subagents can no longer inspect parent session metadata or write parent model overrides via <code>session_status</code>. (<code>GHSA-wcxr-59v9-rxr8</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062516490" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43754" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43754/hovercard" href="https://github.com/openclaw/openclaw/pull/43754">#43754</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/agent tools: mark <code>nodes</code> as explicitly owner-only and document/test that <code>canvas</code> remains a shared trusted-operator surface unless a real boundary bypass exists.</li>
<li>Security/exec approvals: fail closed for Ruby approval flows that use <code>-r</code>, <code>--require</code>, or <code>-I</code> so approval-backed commands no longer bind only the main script while extra local code-loading flags remain outside the reviewed file snapshot.</li>
<li>Security/device pairing: cap issued and verified device-token scopes to each paired device's approved scope baseline so stale or overbroad tokens cannot exceed approved access. (<code>GHSA-2pwv-x786-56f8</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062157759" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43686" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43686/hovercard" href="https://github.com/openclaw/openclaw/pull/43686">#43686</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Docs/onboarding: align the legacy wizard reference and <code>openclaw onboard</code> command docs with the Ollama onboarding flow so all onboarding reference paths now document <code>--auth-choice ollama</code>, Cloud + Local mode, and non-interactive usage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4060695946" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43473" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43473/hovercard" href="https://github.com/openclaw/openclaw/pull/43473">#43473</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BruceMacD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BruceMacD">@BruceMacD</a>.</li>
<li>Models/secrets: enforce source-managed SecretRef markers in generated <code>models.json</code> so runtime-resolved provider secrets are not persisted when runtime projection is skipped. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062537839" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43759" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43759/hovercard" href="https://github.com/openclaw/openclaw/pull/43759">#43759</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Security/WebSocket preauth: shorten unauthenticated handshake retention and reject oversized pre-auth frames before application-layer parsing to reduce pre-pairing exposure on unsupported public deployments. (<code>GHSA-jv4g-m82p-2j93</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064848919" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44089" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44089/hovercard" href="https://github.com/openclaw/openclaw/pull/44089">#44089</a>) (<code>GHSA-xwx2-ppv2-wx98</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064848919" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44089" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44089/hovercard" href="https://github.com/openclaw/openclaw/pull/44089">#44089</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ez-lbz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ez-lbz">@ez-lbz</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/proxy attachments: restore the shared media-store size cap for persisted browser proxy files so oversized payloads are rejected instead of overriding the intended 5 MB limit. (<code>GHSA-6rph-mmhp-h7h9</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062155257" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43684" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43684/hovercard" href="https://github.com/openclaw/openclaw/pull/43684">#43684</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/host env: block inherited <code>GIT_EXEC_PATH</code> from sanitized host exec environments so Git helper resolution cannot be steered by host environment state. (<code>GHSA-jf5v-pqgw-gm5m</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4062157748" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43685" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43685/hovercard" href="https://github.com/openclaw/openclaw/pull/43685">#43685</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/Feishu webhook: require <code>encryptKey</code> alongside <code>verificationToken</code> in webhook mode so unsigned forged events are rejected instead of being processed with token-only configuration. (<code>GHSA-g353-mgv3-8pcj</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064847533" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44087" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44087/hovercard" href="https://github.com/openclaw/openclaw/pull/44087">#44087</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lintsinghua/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lintsinghua">@lintsinghua</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/Feishu reactions: preserve looked-up group chat typing and fail closed on ambiguous reaction context so group authorization and mention gating cannot be bypassed through synthetic <code>p2p</code> reactions. (<code>GHSA-m69h-jm2f-2pv8</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064848419" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44088" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44088/hovercard" href="https://github.com/openclaw/openclaw/pull/44088">#44088</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/LINE webhook: require signatures for empty-event POST probes too so unsigned requests no longer confirm webhook reachability with a <code>200</code> response. (<code>GHSA-mhxh-9pjm-w7q5</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064849557" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44090" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44090/hovercard" href="https://github.com/openclaw/openclaw/pull/44090">#44090</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/TerminalsandCoffee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/TerminalsandCoffee">@TerminalsandCoffee</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/Zalo webhook: rate limit invalid secret guesses before auth so weak webhook secrets cannot be brute-forced through unauthenticated churned requests without pre-auth <code>429</code> responses. (<code>GHSA-5m9r-p9g7-679c</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065508045" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44173" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44173/hovercard" href="https://github.com/openclaw/openclaw/pull/44173">#44173</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/Zalouser groups: require stable group IDs for allowlist auth by default and gate mutable group-name matching behind <code>channels.zalouser.dangerouslyAllowNameMatching</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a>.</li>
<li>Security/Slack and Teams routing: require stable channel and team IDs for allowlist routing by default, with mutable name matching only via each channel's <code>dangerouslyAllowNameMatching</code> break-glass flag.</li>
<li>Security/exec approvals: fail closed for ambiguous inline loader and shell-payload script execution, bind the real script after POSIX shell value-taking flags, and unwrap <code>pnpm</code>/<code>npm exec</code>/<code>npx</code> script runners before approval binding. (<code>GHSA-57jw-9722-6rf2</code>)(<code>GHSA-jvqh-rfmh-jh27</code>)(<code>GHSA-x7pp-23xv-mmr4</code>)(<code>GHSA-jc5j-vg4r-j5jx</code>)(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4066010643" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44247" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44247/hovercard" href="https://github.com/openclaw/openclaw/pull/44247">#44247</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Doctor/gateway service audit: canonicalize service entrypoint paths before comparing them so symlink-vs-realpath installs no longer trigger false "entrypoint does not match the current install" repair prompts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4063237407" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43882" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43882/hovercard" href="https://github.com/openclaw/openclaw/pull/43882">#43882</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Doctor/gateway service audit: earlier groundwork for this fix landed in the superseded <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999172897" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28338/hovercard" href="https://github.com/openclaw/openclaw/pull/28338">#28338</a> branch. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/realriphub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/realriphub">@realriphub</a>.</li>
<li>Gateway/session stores: regenerate the Swift push-test protocol models and align Windows native session-store realpath handling so protocol checks and sync session discovery stop drifting on Windows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4066133470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44266" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44266/hovercard" href="https://github.com/openclaw/openclaw/pull/44266">#44266</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Context engine/session routing: forward optional <code>sessionKey</code> through context-engine lifecycle calls so plugins can see structured routing metadata during bootstrap, assembly, post-turn ingestion, and compaction. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065372241" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44157" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44157/hovercard" href="https://github.com/openclaw/openclaw/pull/44157">#44157</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Agents/failover: classify z.ai <code>network_error</code> stop reasons as retryable timeouts so provider connectivity failures trigger fallback instead of surfacing raw unhandled-stop-reason errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4063260208" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43884" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43884/hovercard" href="https://github.com/openclaw/openclaw/pull/43884">#43884</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hougangdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hougangdev">@hougangdev</a>.</li>
<li>Memory/session sync: add mode-aware post-compaction session reindexing with <code>agents.defaults.compaction.postIndexSync</code> plus <code>agents.defaults.memorySearch.sync.sessions.postCompactionForce</code>, so compacted session memory can refresh immediately without forcing every deployment into synchronous reindexing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984351246" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25561" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25561/hovercard" href="https://github.com/openclaw/openclaw/pull/25561">#25561</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>Telegram/model picker: make inline model button selections persist the chosen session model correctly, clear overrides when selecting the configured default, and include effective fallback models in <code>/models</code> button validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041745940" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40105" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40105/hovercard" href="https://github.com/openclaw/openclaw/pull/40105">#40105</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/avirweb/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/avirweb">@avirweb</a>.</li>
<li>Telegram/native command sync: suppress expected <code>BOT_COMMANDS_TOO_MUCH</code> retry error noise, add a final fallback summary log, and document the difference between command-menu overflow and real Telegram network failures.</li>
<li>Mattermost/reply media delivery: pass agent-scoped <code>mediaLocalRoots</code> through shared reply delivery so allowed local files upload correctly from button, slash-command, and model-picker replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064262171" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44021" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44021/hovercard" href="https://github.com/openclaw/openclaw/pull/44021">#44021</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LyleLiu666/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LyleLiu666">@LyleLiu666</a>.</li>
<li>Plugins/env-scoped roots: fix plugin discovery/load caches and provenance tracking so same-process <code>HOME</code>/<code>OPENCLAW_HOME</code> changes no longer reuse stale plugin state or misreport <code>~/...</code> plugins as untracked. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064425297" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44046" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44046/hovercard" href="https://github.com/openclaw/openclaw/pull/44046">#44046</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Gateway/session discovery: discover disk-only and retired ACP session stores under custom templated <code>session.store</code> roots so ACP reconciliation, session-id/session-label targeting, and run-id fallback keep working after restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4065510113" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44176" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44176/hovercard" href="https://github.com/openclaw/openclaw/pull/44176">#44176</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Models/OpenRouter native ids: canonicalize native OpenRouter model keys across config writes, runtime lookups, fallback management, and <code>models list --plain</code>, and migrate legacy duplicated <code>openrouter/openrouter/...</code> config entries forward on write.</li>
<li>Gateway/hooks: bucket hook auth failures by forwarded client IP behind trusted proxies and warn when <code>hooks.allowedAgentIds</code> leaves hook routing unrestricted.</li>
<li>Agents/compaction: skip the post-compaction <code>cache-ttl</code> marker write when a compaction completed in the same attempt, preventing the next turn from immediately triggering a second tiny compaction. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000119893" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28548" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28548/hovercard" href="https://github.com/openclaw/openclaw/pull/28548">#28548</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MoerAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MoerAI">@MoerAI</a>.</li>
<li>Native chat/macOS: add <code>/new</code>, <code>/reset</code>, and <code>/clear</code> reset triggers, keep shared main-session aliases aligned, and ignore stale model-selection completions so native chat state stays in sync across reset and fast model changes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3909401340" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/10898" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/10898/hovercard" href="https://github.com/openclaw/openclaw/pull/10898">#10898</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nachx639/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nachx639">@Nachx639</a>.</li>
<li>Agents/compaction safeguard: route missing-model and missing-API-key cancellation warnings through the shared subsystem logger so they land in structured and file logs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3904019296" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9974" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/9974/hovercard" href="https://github.com/openclaw/openclaw/pull/9974">#9974</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dinakars777/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dinakars777">@dinakars777</a>.</li>
<li>Cron/doctor: stop flagging canonical <code>agentTurn</code> and <code>systemEvent</code> payload kinds as legacy cron storage, while still normalizing whitespace-padded and non-canonical variants. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4064189472" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/44012" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/44012/hovercard" href="https://github.com/openclaw/openclaw/pull/44012">#44012</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuicici/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuicici">@shuicici</a>.</li>
<li>ACP/client final-message delivery: preserve terminal assistant text snapshots before resolving <code>end_turn</code>, so ACP clients no longer drop the last visible reply when the gateway sends the final message body on the terminal chat event. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945326836" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17615" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17615/hovercard" href="https://github.com/openclaw/openclaw/pull/17615">#17615</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pjeby/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pjeby">@pjeby</a>.</li>
<li>Telegram/Discord status reactions: show a temporary compacting reaction during auto-compaction pauses and restore thinking afterward so the bot no longer appears frozen while context is being compacted. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025777954" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35474" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35474/hovercard" href="https://github.com/openclaw/openclaw/pull/35474">#35474</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Cypherm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Cypherm">@Cypherm</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.11
2026-03-12T05:07:17Z
openclaw 2026.3.11
<h3>Security</h3>
<ul>
<li>Gateway/WebSocket: enforce browser origin validation for all browser-originated connections regardless of whether proxy headers are present, closing a cross-site WebSocket hijacking path in <code>trusted-proxy</code> mode that could grant untrusted origins <code>operator.admin</code> access. (<a title="GHSA-5wcw-8jjv-m286" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-5wcw-8jjv-m286/hovercard" href="https://github.com/advisories/GHSA-5wcw-8jjv-m286">GHSA-5wcw-8jjv-m286</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>OpenRouter/models: add temporary Hunter Alpha and Healer Alpha entries to the built-in catalog so OpenRouter users can try the new free stealth models during their roughly one-week availability window. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4061895163" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43642" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43642/hovercard" href="https://github.com/openclaw/openclaw/pull/43642">#43642</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ping-Toven/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ping-Toven">@ping-Toven</a>.</li>
<li>iOS/Home canvas: add a bundled welcome screen with a live agent overview that refreshes on connect, reconnect, and foreground return, and move the compact connection pill off the top-left canvas overlay. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053609004" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42456/hovercard" href="https://github.com/openclaw/openclaw/pull/42456">#42456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>iOS/Home canvas: replace floating controls with a docked toolbar, make the bundled home scaffold adapt to smaller phones, and open chat in the resolved main session instead of a synthetic <code>ios</code> session. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053609004" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42456/hovercard" href="https://github.com/openclaw/openclaw/pull/42456">#42456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>macOS/chat UI: add a chat model picker, persist explicit thinking-level selections across relaunch, and harden provider-aware session model sync for the shared chat composer. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052743402" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42314" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42314/hovercard" href="https://github.com/openclaw/openclaw/pull/42314">#42314</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ImLukeF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ImLukeF">@ImLukeF</a>.</li>
<li>Onboarding/Ollama: add first-class Ollama setup with Local or Cloud + Local modes, browser-based cloud sign-in, curated model suggestions, and cloud-model handling that skips unnecessary local pulls. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048484224" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41529" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41529/hovercard" href="https://github.com/openclaw/openclaw/pull/41529">#41529</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BruceMacD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BruceMacD">@BruceMacD</a>.</li>
<li>OpenCode/onboarding: add new OpenCode Go provider, treat Zen and Go as one OpenCode setup in the wizard/docs while keeping the runtime providers split, store one shared OpenCode key for both profiles, and stop overriding the built-in <code>opencode-go</code> catalog routing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052742662" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42313" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42313/hovercard" href="https://github.com/openclaw/openclaw/pull/42313">#42313</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ImLukeF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ImLukeF">@ImLukeF</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Memory: add opt-in multimodal image and audio indexing for <code>memorySearch.extraPaths</code> with Gemini <code>gemini-embedding-2-preview</code>, strict fallback gating, and scope-based reindexing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4060580881" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43460" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43460/hovercard" href="https://github.com/openclaw/openclaw/pull/43460">#43460</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Memory/Gemini: add <code>gemini-embedding-2-preview</code> memory-search support with configurable output dimensions and automatic reindexing when the configured dimensions change. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054187231" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42501" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42501/hovercard" href="https://github.com/openclaw/openclaw/pull/42501">#42501</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BillChirico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BillChirico">@BillChirico</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>macOS/onboarding: detect when remote gateways need a shared auth token, explain where to find it on the gateway host, and clarify when a successful check used paired-device auth instead. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057382005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43100" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43100/hovercard" href="https://github.com/openclaw/openclaw/pull/43100">#43100</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Discord/auto threads: add <code>autoArchiveDuration</code> channel config for auto-created threads so Discord thread archiving can stay at 1 hour, 1 day, 3 days, or 1 week instead of always using the 1-hour default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024729994" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35065" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35065/hovercard" href="https://github.com/openclaw/openclaw/pull/35065">#35065</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidguttman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidguttman">@davidguttman</a>.</li>
<li>iOS/TestFlight: add a local beta release flow with Fastlane prepare/archive/upload support, canonical beta bundle IDs, and watch-app archive fixes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056831504" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42991" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42991/hovercard" href="https://github.com/openclaw/openclaw/pull/42991">#42991</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>ACP/sessions_spawn: add optional <code>resumeSessionId</code> for <code>runtime: "acp"</code> so spawned ACP sessions can resume an existing ACPX/Codex conversation instead of always starting fresh. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049724550" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41847" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41847/hovercard" href="https://github.com/openclaw/openclaw/pull/41847">#41847</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pejmanjohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pejmanjohn">@pejmanjohn</a>.</li>
<li>Gateway/node pending work: add narrow in-memory pending-work queue primitives (<code>node.pending.enqueue</code> / <code>node.pending.drain</code>) and wake-helper reuse as a foundation for dormant-node work delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047723219" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41409" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41409/hovercard" href="https://github.com/openclaw/openclaw/pull/41409">#41409</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Git/runtime state: ignore the gateway-generated <code>.dev-state</code> file so local runtime state does not show up as untracked repo noise. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049744199" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41848" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41848/hovercard" href="https://github.com/openclaw/openclaw/pull/41848">#41848</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/smysle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/smysle">@smysle</a>.</li>
<li>Exec/child commands: mark child command environments with <code>OPENCLAW_CLI</code> so subprocesses can detect when they were launched from the OpenClaw CLI. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047739694" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41411" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41411/hovercard" href="https://github.com/openclaw/openclaw/pull/41411">#41411</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
</ul>
<h3>Breaking</h3>
<ul>
<li>Cron/doctor: tighten isolated cron delivery so cron jobs can no longer notify through ad hoc agent sends or fallback main-session summaries, and add <code>openclaw doctor --fix</code> migration for legacy cron storage and legacy notify/webhook delivery metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045422650" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40998" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40998/hovercard" href="https://github.com/openclaw/openclaw/pull/40998">#40998</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Agents/text sanitization: strip leaked model control tokens (<code><|...|></code> and full-width <code><|...|></code> variants) from user-facing assistant text, preventing GLM-5 and DeepSeek internal delimiters from reaching end users. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4051802175" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42173" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42173/hovercard" href="https://github.com/openclaw/openclaw/pull/42173">#42173</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/imwyvern/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/imwyvern">@imwyvern</a>.</li>
<li>iOS/gateway foreground recovery: reconnect immediately on foreground return after stale background sockets are torn down, so the app no longer stays disconnected until a later wake path happens. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047456647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41384" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41384/hovercard" href="https://github.com/openclaw/openclaw/pull/41384">#41384</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Gateway/Control UI: keep dashboard auth tokens in session-scoped browser storage so same-tab refreshes preserve remote token auth without restoring long-lived localStorage token persistence, while scoping tokens to the selected gateway URL and fragment-only bootstrap flow. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044879292" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40892" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40892/hovercard" href="https://github.com/openclaw/openclaw/pull/40892">#40892</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velvet-shark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velvet-shark">@velvet-shark</a>.</li>
<li>Gateway/macOS launchd restarts: keep the LaunchAgent registered during explicit restarts, hand off self-restarts through a detached launchd helper, and recover config/hot reload restart paths without unloading the service. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4059103321" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43311" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43311/hovercard" href="https://github.com/openclaw/openclaw/issues/43311">#43311</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4059920256" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43406" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43406/hovercard" href="https://github.com/openclaw/openclaw/issues/43406">#43406</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057012082" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43035" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43035/hovercard" href="https://github.com/openclaw/openclaw/issues/43035">#43035</a>, and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057071106" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43049" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43049/hovercard" href="https://github.com/openclaw/openclaw/issues/43049">#43049</a>.</li>
<li>macOS/LaunchAgent install: tighten LaunchAgent directory and plist permissions during install so launchd bootstrap does not fail when the target home path or generated plist inherited group/world-writable modes.</li>
<li>Discord/reply chunking: resolve the effective <code>maxLinesPerMessage</code> config across live reply paths and preserve <code>chunkMode</code> in the fast send path so long Discord replies no longer split unexpectedly at the default 17-line limit. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041825890" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40133" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40133/hovercard" href="https://github.com/openclaw/openclaw/pull/40133">#40133</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rbutera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rbutera">@rbutera</a>.</li>
<li>Feishu/local image auto-convert: pass <code>mediaLocalRoots</code> through the <code>sendText</code> local-image shim so allowed local image paths upload as Feishu images again instead of falling back to raw path text. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043406194" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40623" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40623/hovercard" href="https://github.com/openclaw/openclaw/pull/40623">#40623</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ayanesakura/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ayanesakura">@ayanesakura</a>.</li>
<li>Models/Kimi Coding: send <code>anthropic-messages</code> tools in native Anthropic format again so <code>kimi-coding</code> stops degrading tool calls into XML/plain-text pseudo invocations instead of real <code>tool_use</code> blocks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037757647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38669" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38669/hovercard" href="https://github.com/openclaw/openclaw/issues/38669">#38669</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041350469" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39907" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39907/hovercard" href="https://github.com/openclaw/openclaw/issues/39907">#39907</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043169727" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40552" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40552/hovercard" href="https://github.com/openclaw/openclaw/issues/40552">#40552</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/opriz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/opriz">@opriz</a>.</li>
<li>Telegram/outbound HTML sends: chunk long HTML-mode messages, preserve plain-text fallback and silent-delivery params across retries, and cut over to plain text when HTML chunk planning cannot safely preserve the full message. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052294154" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42240" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42240/hovercard" href="https://github.com/openclaw/openclaw/pull/42240">#42240</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/final preview delivery: split active preview lifecycle from cleanup retention so missing archived preview edits avoid duplicate fallback sends without clearing the live preview or blocking later in-place finalization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049048598" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41662" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41662/hovercard" href="https://github.com/openclaw/openclaw/pull/41662">#41662</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hougangdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hougangdev">@hougangdev</a>.</li>
<li>Telegram/final preview delivery followup: keep ambiguous missing-<code>message_id</code> finals only when a preview was already visible, while first-preview/no-id cases still fall back so Telegram users do not lose the final reply. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4050157796" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41932" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41932/hovercard" href="https://github.com/openclaw/openclaw/pull/41932">#41932</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hougangdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hougangdev">@hougangdev</a>.</li>
<li>Telegram/final preview cleanup follow-up: clear stale cleanup-retain state only for transient preview finals so archived-preview retains no longer leave a stale partial bubble beside a later fallback-sent final. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049409140" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41763" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41763/hovercard" href="https://github.com/openclaw/openclaw/pull/41763">#41763</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Gateway/auth: allow one trusted device-token retry on shared-token mismatch with recovery hints to prevent reconnect churn during token drift. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054312399" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42507" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42507/hovercard" href="https://github.com/openclaw/openclaw/pull/42507">#42507</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Gateway/config errors: surface up to three validation issues in top-level <code>config.set</code>, <code>config.patch</code>, and <code>config.apply</code> error messages while preserving structured issue details. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4055209895" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42664" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42664/hovercard" href="https://github.com/openclaw/openclaw/pull/42664">#42664</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huntharo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huntharo">@huntharo</a>.</li>
<li>Agents/Azure OpenAI Responses: include the <code>azure-openai</code> provider in the Responses API store override so Azure OpenAI multi-turn cron jobs and embedded agent runs no longer fail with HTTP 400 "store is set to false". (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056394800" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42934" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42934/hovercard" href="https://github.com/openclaw/openclaw/pull/42934">#42934</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4055797450" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42800" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/42800/hovercard" href="https://github.com/openclaw/openclaw/issues/42800">#42800</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Agents/error rendering: ignore stale assistant <code>errorMessage</code> fields on successful turns so background/tool-side failures no longer prepend synthetic billing errors over valid replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043382604" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40616" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40616/hovercard" href="https://github.com/openclaw/openclaw/pull/40616">#40616</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Agents/billing recovery: probe single-provider billing cooldowns on the existing throttle so topping up credits can recover without a manual gateway restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047812352" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41422" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41422/hovercard" href="https://github.com/openclaw/openclaw/pull/41422">#41422</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Agents/fallback: treat HTTP 499 responses as transient in both raw-text and structured failover paths so Anthropic-style client-closed overload responses trigger model fallback reliably. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048113376" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41468" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41468/hovercard" href="https://github.com/openclaw/openclaw/pull/41468">#41468</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zeroasterisk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zeroasterisk">@zeroasterisk</a>.</li>
<li>Agents/fallback: recognize Venice <code>402 Insufficient USD or Diem balance</code> billing errors so configured model fallbacks trigger instead of surfacing the raw provider error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4058212912" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43205" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43205/hovercard" href="https://github.com/openclaw/openclaw/pull/43205">#43205</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Squabble9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Squabble9">@Squabble9</a>.</li>
<li>Agents/fallback: recognize Poe <code>402 You've used up your points!</code> billing errors so configured model fallbacks trigger instead of surfacing the raw provider error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052514823" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42278" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42278/hovercard" href="https://github.com/openclaw/openclaw/pull/42278">#42278</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CryUshio/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CryUshio">@CryUshio</a>.</li>
<li>Agents/failover: treat Gemini <code>MALFORMED_RESPONSE</code> stop reasons as retryable timeouts so preview-model enum drift falls back cleanly instead of crashing the run, without also reclassifying malformed function-call errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052597931" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42292" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42292/hovercard" href="https://github.com/openclaw/openclaw/pull/42292">#42292</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnMetaCode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnMetaCode">@jnMetaCode</a>.</li>
<li>Agents/cooldowns: default cooldown windows with no recorded failure history to <code>unknown</code> instead of <code>rate_limit</code>, avoiding false API rate-limit warnings while preserving cooldown recovery probes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056274590" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42911" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42911/hovercard" href="https://github.com/openclaw/openclaw/pull/42911">#42911</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/VibhorGautam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/VibhorGautam">@VibhorGautam</a>.</li>
<li>Auth/cooldowns: reset expired auth-profile cooldown error counters before computing the next backoff so stale on-disk counters do not re-escalate into long cooldown loops after expiry. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045529500" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41028" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41028/hovercard" href="https://github.com/openclaw/openclaw/pull/41028">#41028</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zerone0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zerone0x">@zerone0x</a>.</li>
<li>Agents/memory flush: forward <code>memoryFlushWritePath</code> through <code>runEmbeddedPiAgent</code> so memory-triggered flush turns keep the append-only write guard without aborting before tool setup. Follows up on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037351932" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38574" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38574/hovercard" href="https://github.com/openclaw/openclaw/pull/38574">#38574</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049402223" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41761" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41761/hovercard" href="https://github.com/openclaw/openclaw/pull/41761">#41761</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a>.</li>
<li>Agents/context pruning: prune image-only tool results during soft-trim, align context-pruning coverage with the new tool-result contract, and extend historical image cleanup to the same screenshot-heavy session path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057048187" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43045" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43045/hovercard" href="https://github.com/openclaw/openclaw/pull/43045">#43045</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MoerAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MoerAI">@MoerAI</a>.</li>
<li>Sessions/reset model recompute: clear stale runtime model, context-token, and system-prompt metadata before session resets recompute the replacement session, so resets pick up current defaults and explicit overrides instead of reusing old runtime model state. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046208300" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41173" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41173/hovercard" href="https://github.com/openclaw/openclaw/pull/41173">#41173</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PonyX-lab/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PonyX-lab">@PonyX-lab</a>.</li>
<li>Channels/allowlists: remove stale matcher caching so same-array allowlist edits and wildcard replacements take effect immediately, with regression coverage for in-place mutation cases.</li>
<li>Discord/Telegram outbound runtime config: thread runtime-resolved config through Discord and Telegram send paths so SecretRef-based credentials stay resolved during message delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052917388" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42352" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42352/hovercard" href="https://github.com/openclaw/openclaw/pull/42352">#42352</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Tools/web search: treat Brave <code>llm-context</code> grounding snippets as plain strings so <code>web_search</code> no longer returns empty snippet arrays in LLM Context mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047506362" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41387" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41387/hovercard" href="https://github.com/openclaw/openclaw/pull/41387">#41387</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zheliu2/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zheliu2">@zheliu2</a>.</li>
<li>Tools/web search: recover OpenRouter Perplexity citation extraction from <code>message.annotations</code> when chat-completions responses omit top-level citations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044832144" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40881" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40881/hovercard" href="https://github.com/openclaw/openclaw/pull/40881">#40881</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/laurieluo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/laurieluo">@laurieluo</a>.</li>
<li>CLI/skills JSON: strip ANSI and C1 control bytes from <code>skills list --json</code>, <code>skills info --json</code>, and <code>skills check --json</code> so machine-readable output stays valid for terminals and skill metadata with embedded control characters. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995384233" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27530" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27530/hovercard" href="https://github.com/openclaw/openclaw/issues/27530">#27530</a>. Related <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995505163" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27557" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27557/hovercard" href="https://github.com/openclaw/openclaw/pull/27557">#27557</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jimmy-xuzimo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jimmy-xuzimo">@Jimmy-xuzimo</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>CLI/tables: default shared tables to ASCII borders on legacy Windows consoles while keeping Unicode borders on modern Windows terminals, so commands like <code>openclaw skills</code> stop rendering mojibake under GBK/936 consoles. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044689186" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40853" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40853/hovercard" href="https://github.com/openclaw/openclaw/issues/40853">#40853</a>. Related <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045504965" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41015" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41015/hovercard" href="https://github.com/openclaw/openclaw/pull/41015">#41015</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ApacheBin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ApacheBin">@ApacheBin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>CLI/memory teardown: close cached memory search/index managers in the one-shot CLI shutdown path so watcher-backed memory caches no longer keep completed CLI runs alive after output finishes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042591947" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40389" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40389/hovercard" href="https://github.com/openclaw/openclaw/pull/40389">#40389</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Julbarth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Julbarth">@Julbarth</a>.</li>
<li>Control UI/Sessions: restore single-column session table collapse on narrow viewport or container widths by moving the responsive table override next to the base grid rule and enabling inline-size container queries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3913803923" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/12175" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/12175/hovercard" href="https://github.com/openclaw/openclaw/pull/12175">#12175</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benjipeng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benjipeng">@benjipeng</a>.</li>
<li>Telegram/network env-proxy: apply configured transport policy to proxied HTTPS dispatchers as well as direct <code>NO_PROXY</code> bypasses, so resolver-scoped IPv4 fallback and network settings work consistently for env-proxied Telegram traffic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043904788" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40740" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40740/hovercard" href="https://github.com/openclaw/openclaw/pull/40740">#40740</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sircrumpet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sircrumpet">@sircrumpet</a>.</li>
<li>Mattermost/Markdown formatting: preserve first-line indentation when stripping bot mentions so nested list items and indented code blocks keep their structure, and render Mattermost tables natively by default instead of fenced-code fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3949950705" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18655" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/18655/hovercard" href="https://github.com/openclaw/openclaw/pull/18655">#18655</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/echo931/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/echo931">@echo931</a>.</li>
<li>Mattermost/plugin send actions: normalize direct <code>replyTo</code> fallback handling so threaded plugin sends trim blank IDs and reuse the correct reply target again. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046223805" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41176" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41176/hovercard" href="https://github.com/openclaw/openclaw/pull/41176">#41176</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hnykda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hnykda">@hnykda</a>.</li>
<li>MS Teams/allowlist resolution: use the General channel conversation ID as the resolved team key (with Graph GUID fallback) so Bot Framework runtime <code>channelData.team.id</code> matching works for team and team/channel allowlist entries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049692077" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41838" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41838/hovercard" href="https://github.com/openclaw/openclaw/pull/41838">#41838</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BradGroux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BradGroux">@BradGroux</a>.</li>
<li>Signal/config schema: accept <code>channels.signal.accountUuid</code> in strict config validation so loop-protection configs no longer fail with an unrecognized-key error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026138545" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35578" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35578/hovercard" href="https://github.com/openclaw/openclaw/pull/35578">#35578</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Telegram/config schema: accept <code>channels.telegram.actions.editMessage</code> and <code>createForumTopic</code> in strict config validation so existing Telegram action toggles no longer fail as unrecognized keys. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025851740" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35498" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35498/hovercard" href="https://github.com/openclaw/openclaw/pull/35498">#35498</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Telegram/docs: clarify that <code>channels.telegram.groups</code> allowlists chats while <code>groupAllowFrom</code> allowlists users inside those chats, and point invalid negative chat IDs at the right config key. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053552634" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42451" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42451/hovercard" href="https://github.com/openclaw/openclaw/pull/42451">#42451</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Discord/config typing: expose channel-level <code>autoThread</code> on the canonical guild-channel config type so strict config loading matches the existing Discord schema and runtime behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026218705" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35608" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35608/hovercard" href="https://github.com/openclaw/openclaw/pull/35608">#35608</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>fix(models): guard optional model.input capability checks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4051238866" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42096" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42096/hovercard" href="https://github.com/openclaw/openclaw/pull/42096">#42096</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andyliu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andyliu">@andyliu</a></li>
<li>Models/Alibaba Cloud Model Studio: wire <code>MODELSTUDIO_API_KEY</code> through shared env auth, implicit provider discovery, and shell-env fallback so onboarding works outside the wizard too. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043440709" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40634" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40634/hovercard" href="https://github.com/openclaw/openclaw/pull/40634">#40634</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pomelo-nwu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pomelo-nwu">@pomelo-nwu</a>.</li>
<li>Resolve web tool SecretRefs atomically at runtime. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048863245" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41599" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41599/hovercard" href="https://github.com/openclaw/openclaw/pull/41599">#41599</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Secret files: harden CLI and channel credential file reads against path-swap races by requiring direct regular files for <code>*File</code> secret inputs and rejecting symlink-backed secret files.</li>
<li>Archive extraction: harden TAR and external <code>tar.bz2</code> installs against destination symlink and pre-existing child-symlink escapes by extracting into staging first and merging into the canonical destination with safe file opens.</li>
<li>Secrets/SecretRef: reject exec SecretRef traversal ids across schema, runtime, and gateway. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053049670" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42370" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42370/hovercard" href="https://github.com/openclaw/openclaw/pull/42370">#42370</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Sandbox/fs bridge: pin staged writes to verified parent directories so temporary write files cannot materialize outside the allowed mount before atomic replace. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
<li>Gateway/auth: fail closed when local <code>gateway.auth.*</code> SecretRefs are configured but unavailable, instead of silently falling back to <code>gateway.remote.*</code> credentials in local mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4055243941" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42672" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42672/hovercard" href="https://github.com/openclaw/openclaw/pull/42672">#42672</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Commands/config writes: enforce <code>configWrites</code> against both the originating account and the targeted account scope for <code>/config</code> and config-backed <code>/allowlist</code> edits, blocking sibling-account mutations while preserving gateway <code>operator.admin</code> flows. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Security/system.run: fail closed for approval-backed interpreter/runtime commands when OpenClaw cannot bind exactly one concrete local file operand, while extending best-effort direct-file binding to additional runtime forms. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Gateway/session reset auth: split conversation <code>/new</code> and <code>/reset</code> handling away from the admin-only <code>sessions.reset</code> control-plane RPC so write-scoped gateway callers can no longer reach the privileged reset path through <code>agent</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Security/plugin runtime: stop unauthenticated plugin HTTP routes from inheriting synthetic admin gateway scopes when they call <code>runtime.subagent.*</code>, so admin-only methods like <code>sessions.delete</code> stay blocked without gateway auth.</li>
<li>Security/session_status: enforce sandbox session-tree visibility and shared agent-to-agent access guards before reading or mutating target session state, so sandboxed subagents can no longer inspect parent session metadata or write parent model overrides via <code>session_status</code>.</li>
<li>Security/nodes: treat the <code>nodes</code> agent tool as owner-only fallback policy so non-owner senders cannot reach paired-node approval or invoke paths through the shared tool set.</li>
<li>Security/external content: treat whitespace-delimited <code>EXTERNAL UNTRUSTED CONTENT</code> boundary markers like underscore-delimited variants so prompt wrappers cannot bypass marker sanitization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027570664" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35983" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35983/hovercard" href="https://github.com/openclaw/openclaw/pull/35983">#35983</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/urianpaul94/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/urianpaul94">@urianpaul94</a>.</li>
<li>Telegram/exec approvals: reject <code>/approve</code> commands aimed at other bots, keep deterministic approval prompts visible when tool-result delivery fails, and stop resolved exact IDs from matching other pending approvals by prefix. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032304891" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37233" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37233/hovercard" href="https://github.com/openclaw/openclaw/pull/37233">#37233</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huntharo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huntharo">@huntharo</a>.</li>
<li>Subagents/authority: persist leaf vs orchestrator control scope at spawn time and route tool plus slash-command control through shared ownership checks, so leaf sessions cannot regain orchestration privileges after restore or flat-key lookups. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
<li>ACP/ACPX plugin: bump the bundled <code>acpx</code> pin to <code>0.1.16</code> so plugin-local installs and strict version checks match the latest published CLI. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4050319055" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41975" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41975/hovercard" href="https://github.com/openclaw/openclaw/pull/41975">#41975</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>ACP/sessions.patch: allow <code>spawnedBy</code> and <code>spawnDepth</code> lineage fields on ACP session keys so <code>sessions_spawn</code> with <code>runtime: "acp"</code> no longer fails during child-session setup. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045319001" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40971" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40971/hovercard" href="https://github.com/openclaw/openclaw/issues/40971">#40971</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045419094" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40995" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40995/hovercard" href="https://github.com/openclaw/openclaw/pull/40995">#40995</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xaeon2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xaeon2026">@xaeon2026</a>.</li>
<li>ACP/stop reason mapping: resolve gateway chat <code>state: "error"</code> completions as ACP <code>end_turn</code> instead of <code>refusal</code> so transient backend failures are not surfaced as deliberate refusals. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046283238" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41187" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41187/hovercard" href="https://github.com/openclaw/openclaw/pull/41187">#41187</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pejmanjohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pejmanjohn">@pejmanjohn</a>.</li>
<li>ACP/setSessionMode: propagate gateway <code>sessions.patch</code> failures back to ACP clients so rejected mode changes no longer return silent success. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046280473" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41185/hovercard" href="https://github.com/openclaw/openclaw/pull/41185">#41185</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pejmanjohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pejmanjohn">@pejmanjohn</a>.</li>
<li>ACP/bridge mode: reject unsupported per-session MCP server setup and propagate rejected session-mode changes so IDE clients see explicit bridge limitations instead of silent success. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047825890" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41424" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41424/hovercard" href="https://github.com/openclaw/openclaw/pull/41424">#41424</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/session UX: replay stored user and assistant text on <code>loadSession</code>, expose Gateway-backed session controls and metadata, and emit approximate session usage updates so IDE clients restore context more faithfully. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047826695" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41425" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41425/hovercard" href="https://github.com/openclaw/openclaw/pull/41425">#41425</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/tool streaming: enrich <code>tool_call</code> and <code>tool_call_update</code> events with best-effort text content and file-location hints so IDE clients can follow bridge tool activity more naturally. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047962357" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41442" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41442/hovercard" href="https://github.com/openclaw/openclaw/pull/41442">#41442</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/runtime attachments: forward normalized inbound image attachments into ACP runtime turns so ACPX sessions can preserve image prompt content on the runtime path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047828669" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41427" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41427/hovercard" href="https://github.com/openclaw/openclaw/pull/41427">#41427</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/regressions: add gateway RPC coverage for ACP lineage patching, ACPX runtime coverage for image prompt serialization, and an operator smoke-test procedure for live ACP spawn verification. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048027892" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41456/hovercard" href="https://github.com/openclaw/openclaw/pull/41456">#41456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/follow-up hardening: make session restore and prompt completion degrade gracefully on transcript/update failures, enforce bounded tool-location traversal, and skip non-image ACPX turns the runtime cannot serialize. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048102474" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41464" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41464/hovercard" href="https://github.com/openclaw/openclaw/pull/41464">#41464</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/sessions_spawn: implicitly stream <code>mode="run"</code> ACP spawns to parent only for eligible subagent orchestrator sessions (heartbeat <code>target: "last"</code> with a usable session-local route), restoring parent progress relays without thread binding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053246098" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42404" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42404/hovercard" href="https://github.com/openclaw/openclaw/pull/42404">#42404</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidguttman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidguttman">@davidguttman</a>.</li>
<li>ACP/main session aliases: canonicalize <code>main</code> before ACP session lookup so restarted ACP main sessions rehydrate instead of failing closed with <code>Session is not ACP-enabled: main</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4058859438" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43285" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43285/hovercard" href="https://github.com/openclaw/openclaw/pull/43285">#43285</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3985212634" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25692" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/25692/hovercard" href="https://github.com/openclaw/openclaw/issues/25692">#25692</a>)</li>
<li>Plugins/context-engine model auth: expose <code>runtime.modelAuth</code> and plugin-sdk auth helpers so plugins can resolve provider/model API keys through the normal auth pipeline. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045774282" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41090" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41090/hovercard" href="https://github.com/openclaw/openclaw/pull/41090">#41090</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>Hooks/plugin context parity followup: pass <code>trigger</code> and <code>channelId</code> through embedded <code>llm_input</code>, <code>agent_end</code>, and <code>llm_output</code> hook contexts so plugins receive the same agent metadata across hook phases. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053011939" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42362" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42362/hovercard" href="https://github.com/openclaw/openclaw/pull/42362">#42362</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zhoulf1006/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zhoulf1006">@zhoulf1006</a>.</li>
<li>Plugins/global hook runner: harden singleton state handling so shared global hook runner reuse does not leak or corrupt runner state across executions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041984478" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40184" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40184/hovercard" href="https://github.com/openclaw/openclaw/pull/40184">#40184</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Context engine/tests: add bundled-registry regression coverage for cross-chunk resolution, plugin-sdk re-exports, and concurrent chunk registration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042912345" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40460" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40460/hovercard" href="https://github.com/openclaw/openclaw/pull/40460">#40460</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>.</li>
<li>Agents/embedded runner: bound compaction retry waiting and drain embedded runs during SIGUSR1 restart so session lanes recover instead of staying blocked behind compaction. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042353222" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40324" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40324/hovercard" href="https://github.com/openclaw/openclaw/pull/40324">#40324</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Agents/embedded logs: add structured, sanitized lifecycle and failover observation events so overload and provider failures are easier to tail and filter. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047108005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41336" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41336/hovercard" href="https://github.com/openclaw/openclaw/pull/41336">#41336</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Agents/embedded overload logs: include the failing model and provider in error-path console output, with lifecycle regression coverage for the rendered and sanitized <code>consoleMessage</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046541030" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41236" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41236/hovercard" href="https://github.com/openclaw/openclaw/pull/41236">#41236</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jiarung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jiarung">@jiarung</a>.</li>
<li>Agents/fallback observability: add structured, sanitized model-fallback decision and auth-profile failure-state events with correlated run IDs so cooldown probes and failover paths are easier to trace in logs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047108713" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41337/hovercard" href="https://github.com/openclaw/openclaw/pull/41337">#41337</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Logging/probe observations: suppress structured embedded and model-fallback probe warnings on the console without hiding error or fatal output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047109243" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41338/hovercard" href="https://github.com/openclaw/openclaw/pull/41338">#41338</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Agents/context-engine compaction: guard thrown engine-owned overflow compaction attempts and fire compaction hooks for <code>ownsCompaction</code> engines so overflow recovery no longer crashes and plugin subscribers still observe compact runs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047290995" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41361" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41361/hovercard" href="https://github.com/openclaw/openclaw/pull/41361">#41361</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrudduck/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrudduck">@davidrudduck</a>.</li>
<li>Gateway/node pending drain followup: keep <code>hasMore</code> true when the deferred baseline status item still needs delivery, and avoid allocating empty pending-work state for drain-only nodes with no queued work. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047832693" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41429" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41429/hovercard" href="https://github.com/openclaw/openclaw/pull/41429">#41429</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Protocol/Swift model sync: regenerate pending node work Swift bindings after the landed <code>node.pending.*</code> schema additions so generated protocol artifacts are consistent again. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048183529" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41477" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41477/hovercard" href="https://github.com/openclaw/openclaw/pull/41477">#41477</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Cron/subagent followup: do not misclassify empty or <code>NO_REPLY</code> cron responses as interim acknowledgements that need a rerun, so deliberately silent cron jobs are no longer retried. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047432637" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41383" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41383/hovercard" href="https://github.com/openclaw/openclaw/pull/41383">#41383</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jackal092927/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jackal092927">@jackal092927</a>.</li>
<li>Cron/state errors: record <code>lastErrorReason</code> in cron job state and keep the gateway schema aligned with the full failover-reason set, including regression coverage for protocol conformance. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3929418969" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14382" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/14382/hovercard" href="https://github.com/openclaw/openclaw/pull/14382">#14382</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/futuremind2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/futuremind2026">@futuremind2026</a>.</li>
<li>Browser/Browserbase 429 handling: surface stable no-retry rate-limit guidance without buffering discarded HTTP 429 response bodies from remote browser services. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043032848" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40491" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40491/hovercard" href="https://github.com/openclaw/openclaw/pull/40491">#40491</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>.</li>
<li>CI/CodeQL Swift toolchain: select Xcode 26.1 before installing Swift build tools so the CodeQL Swift job uses Swift tools 6.2 on <code>macos-latest</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049505022" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41787" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41787/hovercard" href="https://github.com/openclaw/openclaw/pull/41787">#41787</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a>.</li>
<li>Sandbox/subagents: pass the real configured workspace through <code>sessions_spawn</code> inheritance when a parent agent runs in a copied-workspace sandbox, so child <code>/agent</code> mounts point at the configured workspace instead of the parent sandbox copy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044010234" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40757" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40757/hovercard" href="https://github.com/openclaw/openclaw/pull/40757">#40757</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>.</li>
<li>Agents/fallback cooldown probing: cap cooldown-bypass probing to one attempt per provider per fallback run so multi-model same-provider cooldown chains can continue to cross-provider fallbacks instead of repeatedly stalling on duplicate cooldown probes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049231653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41711" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41711/hovercard" href="https://github.com/openclaw/openclaw/pull/41711">#41711</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Telegram/direct delivery: bridge direct delivery sends to internal <code>message:sent</code> hooks so internal hook listeners observe successful Telegram deliveries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041984483" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40185/hovercard" href="https://github.com/openclaw/openclaw/pull/40185">#40185</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Dependencies: refresh workspace dependencies except the pinned Carbon package, and harden ACP session-config writes against non-string SDK values so newer ACP clients fail fast instead of tripping type/runtime mismatches.</li>
<li>Telegram/polling restarts: clear bounded cleanup timeout handles after <code>runner.stop()</code> and <code>bot.stop()</code> settle so stall recovery no longer leaves stray 15-second timers behind on clean shutdown. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4058114824" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43188" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43188/hovercard" href="https://github.com/openclaw/openclaw/pull/43188">#43188</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kyohwang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kyohwang">@kyohwang</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.11-beta.1
2026-03-12T04:23:40Z
openclaw 2026.3.11-beta.1
<h3>Security</h3>
<ul>
<li>Gateway/WebSocket: enforce browser origin validation for all browser-originated connections regardless of whether proxy headers are present, closing a cross-site WebSocket hijacking path in <code>trusted-proxy</code> mode that could grant untrusted origins <code>operator.admin</code> access. (<a title="GHSA-5wcw-8jjv-m286" data-hovercard-type="advisory" data-hovercard-url="/advisories/GHSA-5wcw-8jjv-m286/hovercard" href="https://github.com/advisories/GHSA-5wcw-8jjv-m286">GHSA-5wcw-8jjv-m286</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>OpenRouter/models: add temporary Hunter Alpha and Healer Alpha entries to the built-in catalog so OpenRouter users can try the new free stealth models during their roughly one-week availability window. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4061895163" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43642" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43642/hovercard" href="https://github.com/openclaw/openclaw/pull/43642">#43642</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ping-Toven/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ping-Toven">@ping-Toven</a>.</li>
<li>iOS/Home canvas: add a bundled welcome screen with a live agent overview that refreshes on connect, reconnect, and foreground return, and move the compact connection pill off the top-left canvas overlay. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053609004" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42456/hovercard" href="https://github.com/openclaw/openclaw/pull/42456">#42456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>iOS/Home canvas: replace floating controls with a docked toolbar, make the bundled home scaffold adapt to smaller phones, and open chat in the resolved main session instead of a synthetic <code>ios</code> session. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053609004" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42456/hovercard" href="https://github.com/openclaw/openclaw/pull/42456">#42456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>macOS/chat UI: add a chat model picker, persist explicit thinking-level selections across relaunch, and harden provider-aware session model sync for the shared chat composer. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052743402" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42314" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42314/hovercard" href="https://github.com/openclaw/openclaw/pull/42314">#42314</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ImLukeF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ImLukeF">@ImLukeF</a>.</li>
<li>Onboarding/Ollama: add first-class Ollama setup with Local or Cloud + Local modes, browser-based cloud sign-in, curated model suggestions, and cloud-model handling that skips unnecessary local pulls. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048484224" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41529" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41529/hovercard" href="https://github.com/openclaw/openclaw/pull/41529">#41529</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BruceMacD/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BruceMacD">@BruceMacD</a>.</li>
<li>OpenCode/onboarding: add new OpenCode Go provider, treat Zen and Go as one OpenCode setup in the wizard/docs while keeping the runtime providers split, store one shared OpenCode key for both profiles, and stop overriding the built-in <code>opencode-go</code> catalog routing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052742662" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42313" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42313/hovercard" href="https://github.com/openclaw/openclaw/pull/42313">#42313</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ImLukeF/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ImLukeF">@ImLukeF</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Memory: add opt-in multimodal image and audio indexing for <code>memorySearch.extraPaths</code> with Gemini <code>gemini-embedding-2-preview</code>, strict fallback gating, and scope-based reindexing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4060580881" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43460" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43460/hovercard" href="https://github.com/openclaw/openclaw/pull/43460">#43460</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Memory/Gemini: add <code>gemini-embedding-2-preview</code> memory-search support with configurable output dimensions and automatic reindexing when the configured dimensions change. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054187231" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42501" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42501/hovercard" href="https://github.com/openclaw/openclaw/pull/42501">#42501</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BillChirico/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BillChirico">@BillChirico</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>macOS/onboarding: detect when remote gateways need a shared auth token, explain where to find it on the gateway host, and clarify when a successful check used paired-device auth instead. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057382005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43100" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43100/hovercard" href="https://github.com/openclaw/openclaw/pull/43100">#43100</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Discord/auto threads: add <code>autoArchiveDuration</code> channel config for auto-created threads so Discord thread archiving can stay at 1 hour, 1 day, 3 days, or 1 week instead of always using the 1-hour default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024729994" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35065" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35065/hovercard" href="https://github.com/openclaw/openclaw/pull/35065">#35065</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidguttman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidguttman">@davidguttman</a>.</li>
<li>iOS/TestFlight: add a local beta release flow with Fastlane prepare/archive/upload support, canonical beta bundle IDs, and watch-app archive fixes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056831504" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42991" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42991/hovercard" href="https://github.com/openclaw/openclaw/pull/42991">#42991</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>ACP/sessions_spawn: add optional <code>resumeSessionId</code> for <code>runtime: "acp"</code> so spawned ACP sessions can resume an existing ACPX/Codex conversation instead of always starting fresh. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049724550" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41847" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41847/hovercard" href="https://github.com/openclaw/openclaw/pull/41847">#41847</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pejmanjohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pejmanjohn">@pejmanjohn</a>.</li>
<li>Gateway/node pending work: add narrow in-memory pending-work queue primitives (<code>node.pending.enqueue</code> / <code>node.pending.drain</code>) and wake-helper reuse as a foundation for dormant-node work delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047723219" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41409" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41409/hovercard" href="https://github.com/openclaw/openclaw/pull/41409">#41409</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Git/runtime state: ignore the gateway-generated <code>.dev-state</code> file so local runtime state does not show up as untracked repo noise. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049744199" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41848" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41848/hovercard" href="https://github.com/openclaw/openclaw/pull/41848">#41848</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/smysle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/smysle">@smysle</a>.</li>
<li>Exec/child commands: mark child command environments with <code>OPENCLAW_CLI</code> so subprocesses can detect when they were launched from the OpenClaw CLI. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047739694" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41411" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41411/hovercard" href="https://github.com/openclaw/openclaw/pull/41411">#41411</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
</ul>
<h3>Breaking</h3>
<ul>
<li>Cron/doctor: tighten isolated cron delivery so cron jobs can no longer notify through ad hoc agent sends or fallback main-session summaries, and add <code>openclaw doctor --fix</code> migration for legacy cron storage and legacy notify/webhook delivery metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045422650" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40998" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40998/hovercard" href="https://github.com/openclaw/openclaw/pull/40998">#40998</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Agents/text sanitization: strip leaked model control tokens (<code><|...|></code> and full-width <code><|...|></code> variants) from user-facing assistant text, preventing GLM-5 and DeepSeek internal delimiters from reaching end users. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4051802175" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42173" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42173/hovercard" href="https://github.com/openclaw/openclaw/pull/42173">#42173</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/imwyvern/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/imwyvern">@imwyvern</a>.</li>
<li>iOS/gateway foreground recovery: reconnect immediately on foreground return after stale background sockets are torn down, so the app no longer stays disconnected until a later wake path happens. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047456647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41384" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41384/hovercard" href="https://github.com/openclaw/openclaw/pull/41384">#41384</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Gateway/Control UI: keep dashboard auth tokens in session-scoped browser storage so same-tab refreshes preserve remote token auth without restoring long-lived localStorage token persistence, while scoping tokens to the selected gateway URL and fragment-only bootstrap flow. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044879292" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40892" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40892/hovercard" href="https://github.com/openclaw/openclaw/pull/40892">#40892</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velvet-shark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velvet-shark">@velvet-shark</a>.</li>
<li>Gateway/macOS launchd restarts: keep the LaunchAgent registered during explicit restarts, hand off self-restarts through a detached launchd helper, and recover config/hot reload restart paths without unloading the service. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4059103321" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43311" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43311/hovercard" href="https://github.com/openclaw/openclaw/issues/43311">#43311</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4059920256" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43406" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43406/hovercard" href="https://github.com/openclaw/openclaw/issues/43406">#43406</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057012082" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43035" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43035/hovercard" href="https://github.com/openclaw/openclaw/issues/43035">#43035</a>, and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057071106" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43049" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/43049/hovercard" href="https://github.com/openclaw/openclaw/issues/43049">#43049</a>.</li>
<li>macOS/LaunchAgent install: tighten LaunchAgent directory and plist permissions during install so launchd bootstrap does not fail when the target home path or generated plist inherited group/world-writable modes.</li>
<li>Discord/reply chunking: resolve the effective <code>maxLinesPerMessage</code> config across live reply paths and preserve <code>chunkMode</code> in the fast send path so long Discord replies no longer split unexpectedly at the default 17-line limit. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041825890" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40133" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40133/hovercard" href="https://github.com/openclaw/openclaw/pull/40133">#40133</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rbutera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rbutera">@rbutera</a>.</li>
<li>Feishu/local image auto-convert: pass <code>mediaLocalRoots</code> through the <code>sendText</code> local-image shim so allowed local image paths upload as Feishu images again instead of falling back to raw path text. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043406194" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40623" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40623/hovercard" href="https://github.com/openclaw/openclaw/pull/40623">#40623</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ayanesakura/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ayanesakura">@ayanesakura</a>.</li>
<li>Models/Kimi Coding: send <code>anthropic-messages</code> tools in native Anthropic format again so <code>kimi-coding</code> stops degrading tool calls into XML/plain-text pseudo invocations instead of real <code>tool_use</code> blocks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037757647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38669" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38669/hovercard" href="https://github.com/openclaw/openclaw/issues/38669">#38669</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041350469" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39907" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39907/hovercard" href="https://github.com/openclaw/openclaw/issues/39907">#39907</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043169727" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40552" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40552/hovercard" href="https://github.com/openclaw/openclaw/issues/40552">#40552</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/opriz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/opriz">@opriz</a>.</li>
<li>Telegram/outbound HTML sends: chunk long HTML-mode messages, preserve plain-text fallback and silent-delivery params across retries, and cut over to plain text when HTML chunk planning cannot safely preserve the full message. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052294154" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42240" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42240/hovercard" href="https://github.com/openclaw/openclaw/pull/42240">#42240</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/final preview delivery: split active preview lifecycle from cleanup retention so missing archived preview edits avoid duplicate fallback sends without clearing the live preview or blocking later in-place finalization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049048598" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41662" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41662/hovercard" href="https://github.com/openclaw/openclaw/pull/41662">#41662</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hougangdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hougangdev">@hougangdev</a>.</li>
<li>Telegram/final preview delivery followup: keep ambiguous missing-<code>message_id</code> finals only when a preview was already visible, while first-preview/no-id cases still fall back so Telegram users do not lose the final reply. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4050157796" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41932" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41932/hovercard" href="https://github.com/openclaw/openclaw/pull/41932">#41932</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hougangdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hougangdev">@hougangdev</a>.</li>
<li>Telegram/final preview cleanup follow-up: clear stale cleanup-retain state only for transient preview finals so archived-preview retains no longer leave a stale partial bubble beside a later fallback-sent final. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049409140" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41763" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41763/hovercard" href="https://github.com/openclaw/openclaw/pull/41763">#41763</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Gateway/auth: allow one trusted device-token retry on shared-token mismatch with recovery hints to prevent reconnect churn during token drift. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4054312399" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42507" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42507/hovercard" href="https://github.com/openclaw/openclaw/pull/42507">#42507</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Gateway/config errors: surface up to three validation issues in top-level <code>config.set</code>, <code>config.patch</code>, and <code>config.apply</code> error messages while preserving structured issue details. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4055209895" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42664" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42664/hovercard" href="https://github.com/openclaw/openclaw/pull/42664">#42664</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huntharo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huntharo">@huntharo</a>.</li>
<li>Agents/Azure OpenAI Responses: include the <code>azure-openai</code> provider in the Responses API store override so Azure OpenAI multi-turn cron jobs and embedded agent runs no longer fail with HTTP 400 "store is set to false". (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056394800" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42934" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42934/hovercard" href="https://github.com/openclaw/openclaw/pull/42934">#42934</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4055797450" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42800" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/42800/hovercard" href="https://github.com/openclaw/openclaw/issues/42800">#42800</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Agents/error rendering: ignore stale assistant <code>errorMessage</code> fields on successful turns so background/tool-side failures no longer prepend synthetic billing errors over valid replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043382604" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40616" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40616/hovercard" href="https://github.com/openclaw/openclaw/pull/40616">#40616</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Agents/billing recovery: probe single-provider billing cooldowns on the existing throttle so topping up credits can recover without a manual gateway restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047812352" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41422" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41422/hovercard" href="https://github.com/openclaw/openclaw/pull/41422">#41422</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Agents/fallback: treat HTTP 499 responses as transient in both raw-text and structured failover paths so Anthropic-style client-closed overload responses trigger model fallback reliably. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048113376" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41468" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41468/hovercard" href="https://github.com/openclaw/openclaw/pull/41468">#41468</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zeroasterisk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zeroasterisk">@zeroasterisk</a>.</li>
<li>Agents/fallback: recognize Venice <code>402 Insufficient USD or Diem balance</code> billing errors so configured model fallbacks trigger instead of surfacing the raw provider error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4058212912" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43205" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43205/hovercard" href="https://github.com/openclaw/openclaw/pull/43205">#43205</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Squabble9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Squabble9">@Squabble9</a>.</li>
<li>Agents/fallback: recognize Poe <code>402 You've used up your points!</code> billing errors so configured model fallbacks trigger instead of surfacing the raw provider error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052514823" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42278" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42278/hovercard" href="https://github.com/openclaw/openclaw/pull/42278">#42278</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CryUshio/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CryUshio">@CryUshio</a>.</li>
<li>Agents/failover: treat Gemini <code>MALFORMED_RESPONSE</code> stop reasons as retryable timeouts so preview-model enum drift falls back cleanly instead of crashing the run, without also reclassifying malformed function-call errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052597931" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42292" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42292/hovercard" href="https://github.com/openclaw/openclaw/pull/42292">#42292</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnMetaCode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnMetaCode">@jnMetaCode</a>.</li>
<li>Agents/cooldowns: default cooldown windows with no recorded failure history to <code>unknown</code> instead of <code>rate_limit</code>, avoiding false API rate-limit warnings while preserving cooldown recovery probes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4056274590" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42911" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42911/hovercard" href="https://github.com/openclaw/openclaw/pull/42911">#42911</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/VibhorGautam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/VibhorGautam">@VibhorGautam</a>.</li>
<li>Auth/cooldowns: reset expired auth-profile cooldown error counters before computing the next backoff so stale on-disk counters do not re-escalate into long cooldown loops after expiry. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045529500" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41028" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41028/hovercard" href="https://github.com/openclaw/openclaw/pull/41028">#41028</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zerone0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zerone0x">@zerone0x</a>.</li>
<li>Agents/memory flush: forward <code>memoryFlushWritePath</code> through <code>runEmbeddedPiAgent</code> so memory-triggered flush turns keep the append-only write guard without aborting before tool setup. Follows up on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037351932" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38574" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38574/hovercard" href="https://github.com/openclaw/openclaw/pull/38574">#38574</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049402223" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41761" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41761/hovercard" href="https://github.com/openclaw/openclaw/pull/41761">#41761</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/frankekn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/frankekn">@frankekn</a>.</li>
<li>Agents/context pruning: prune image-only tool results during soft-trim, align context-pruning coverage with the new tool-result contract, and extend historical image cleanup to the same screenshot-heavy session path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4057048187" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43045" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43045/hovercard" href="https://github.com/openclaw/openclaw/pull/43045">#43045</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MoerAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MoerAI">@MoerAI</a>.</li>
<li>Sessions/reset model recompute: clear stale runtime model, context-token, and system-prompt metadata before session resets recompute the replacement session, so resets pick up current defaults and explicit overrides instead of reusing old runtime model state. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046208300" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41173" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41173/hovercard" href="https://github.com/openclaw/openclaw/pull/41173">#41173</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/PonyX-lab/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/PonyX-lab">@PonyX-lab</a>.</li>
<li>Channels/allowlists: remove stale matcher caching so same-array allowlist edits and wildcard replacements take effect immediately, with regression coverage for in-place mutation cases.</li>
<li>Discord/Telegram outbound runtime config: thread runtime-resolved config through Discord and Telegram send paths so SecretRef-based credentials stay resolved during message delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4052917388" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42352" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42352/hovercard" href="https://github.com/openclaw/openclaw/pull/42352">#42352</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Tools/web search: treat Brave <code>llm-context</code> grounding snippets as plain strings so <code>web_search</code> no longer returns empty snippet arrays in LLM Context mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047506362" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41387" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41387/hovercard" href="https://github.com/openclaw/openclaw/pull/41387">#41387</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zheliu2/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zheliu2">@zheliu2</a>.</li>
<li>Tools/web search: recover OpenRouter Perplexity citation extraction from <code>message.annotations</code> when chat-completions responses omit top-level citations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044832144" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40881" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40881/hovercard" href="https://github.com/openclaw/openclaw/pull/40881">#40881</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/laurieluo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/laurieluo">@laurieluo</a>.</li>
<li>CLI/skills JSON: strip ANSI and C1 control bytes from <code>skills list --json</code>, <code>skills info --json</code>, and <code>skills check --json</code> so machine-readable output stays valid for terminals and skill metadata with embedded control characters. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995384233" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27530" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27530/hovercard" href="https://github.com/openclaw/openclaw/issues/27530">#27530</a>. Related <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995505163" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27557" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27557/hovercard" href="https://github.com/openclaw/openclaw/pull/27557">#27557</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Jimmy-xuzimo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Jimmy-xuzimo">@Jimmy-xuzimo</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>CLI/tables: default shared tables to ASCII borders on legacy Windows consoles while keeping Unicode borders on modern Windows terminals, so commands like <code>openclaw skills</code> stop rendering mojibake under GBK/936 consoles. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044689186" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40853" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40853/hovercard" href="https://github.com/openclaw/openclaw/issues/40853">#40853</a>. Related <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045504965" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41015" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41015/hovercard" href="https://github.com/openclaw/openclaw/pull/41015">#41015</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ApacheBin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ApacheBin">@ApacheBin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>CLI/memory teardown: close cached memory search/index managers in the one-shot CLI shutdown path so watcher-backed memory caches no longer keep completed CLI runs alive after output finishes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042591947" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40389" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40389/hovercard" href="https://github.com/openclaw/openclaw/pull/40389">#40389</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Julbarth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Julbarth">@Julbarth</a>.</li>
<li>Control UI/Sessions: restore single-column session table collapse on narrow viewport or container widths by moving the responsive table override next to the base grid rule and enabling inline-size container queries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3913803923" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/12175" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/12175/hovercard" href="https://github.com/openclaw/openclaw/pull/12175">#12175</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benjipeng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benjipeng">@benjipeng</a>.</li>
<li>Telegram/network env-proxy: apply configured transport policy to proxied HTTPS dispatchers as well as direct <code>NO_PROXY</code> bypasses, so resolver-scoped IPv4 fallback and network settings work consistently for env-proxied Telegram traffic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043904788" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40740" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40740/hovercard" href="https://github.com/openclaw/openclaw/pull/40740">#40740</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sircrumpet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sircrumpet">@sircrumpet</a>.</li>
<li>Mattermost/Markdown formatting: preserve first-line indentation when stripping bot mentions so nested list items and indented code blocks keep their structure, and render Mattermost tables natively by default instead of fenced-code fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3949950705" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18655" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/18655/hovercard" href="https://github.com/openclaw/openclaw/pull/18655">#18655</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/echo931/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/echo931">@echo931</a>.</li>
<li>Mattermost/plugin send actions: normalize direct <code>replyTo</code> fallback handling so threaded plugin sends trim blank IDs and reuse the correct reply target again. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046223805" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41176" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41176/hovercard" href="https://github.com/openclaw/openclaw/pull/41176">#41176</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hnykda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hnykda">@hnykda</a>.</li>
<li>MS Teams/allowlist resolution: use the General channel conversation ID as the resolved team key (with Graph GUID fallback) so Bot Framework runtime <code>channelData.team.id</code> matching works for team and team/channel allowlist entries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049692077" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41838" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41838/hovercard" href="https://github.com/openclaw/openclaw/pull/41838">#41838</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BradGroux/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BradGroux">@BradGroux</a>.</li>
<li>Signal/config schema: accept <code>channels.signal.accountUuid</code> in strict config validation so loop-protection configs no longer fail with an unrecognized-key error. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026138545" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35578" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35578/hovercard" href="https://github.com/openclaw/openclaw/pull/35578">#35578</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Telegram/config schema: accept <code>channels.telegram.actions.editMessage</code> and <code>createForumTopic</code> in strict config validation so existing Telegram action toggles no longer fail as unrecognized keys. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025851740" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35498" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35498/hovercard" href="https://github.com/openclaw/openclaw/pull/35498">#35498</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>Telegram/docs: clarify that <code>channels.telegram.groups</code> allowlists chats while <code>groupAllowFrom</code> allowlists users inside those chats, and point invalid negative chat IDs at the right config key. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053552634" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42451" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42451/hovercard" href="https://github.com/openclaw/openclaw/pull/42451">#42451</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Discord/config typing: expose channel-level <code>autoThread</code> on the canonical guild-channel config type so strict config loading matches the existing Discord schema and runtime behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026218705" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35608" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35608/hovercard" href="https://github.com/openclaw/openclaw/pull/35608">#35608</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ingyukoh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ingyukoh">@ingyukoh</a>.</li>
<li>fix(models): guard optional model.input capability checks (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4051238866" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42096" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42096/hovercard" href="https://github.com/openclaw/openclaw/pull/42096">#42096</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/andyliu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/andyliu">@andyliu</a></li>
<li>Models/Alibaba Cloud Model Studio: wire <code>MODELSTUDIO_API_KEY</code> through shared env auth, implicit provider discovery, and shell-env fallback so onboarding works outside the wizard too. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043440709" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40634" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40634/hovercard" href="https://github.com/openclaw/openclaw/pull/40634">#40634</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pomelo-nwu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pomelo-nwu">@pomelo-nwu</a>.</li>
<li>Resolve web tool SecretRefs atomically at runtime. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048863245" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41599" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41599/hovercard" href="https://github.com/openclaw/openclaw/pull/41599">#41599</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Secret files: harden CLI and channel credential file reads against path-swap races by requiring direct regular files for <code>*File</code> secret inputs and rejecting symlink-backed secret files.</li>
<li>Archive extraction: harden TAR and external <code>tar.bz2</code> installs against destination symlink and pre-existing child-symlink escapes by extracting into staging first and merging into the canonical destination with safe file opens.</li>
<li>Secrets/SecretRef: reject exec SecretRef traversal ids across schema, runtime, and gateway. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053049670" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42370" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42370/hovercard" href="https://github.com/openclaw/openclaw/pull/42370">#42370</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Sandbox/fs bridge: pin staged writes to verified parent directories so temporary write files cannot materialize outside the allowed mount before atomic replace. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
<li>Gateway/auth: fail closed when local <code>gateway.auth.*</code> SecretRefs are configured but unavailable, instead of silently falling back to <code>gateway.remote.*</code> credentials in local mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4055243941" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42672" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42672/hovercard" href="https://github.com/openclaw/openclaw/pull/42672">#42672</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Commands/config writes: enforce <code>configWrites</code> against both the originating account and the targeted account scope for <code>/config</code> and config-backed <code>/allowlist</code> edits, blocking sibling-account mutations while preserving gateway <code>operator.admin</code> flows. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Security/system.run: fail closed for approval-backed interpreter/runtime commands when OpenClaw cannot bind exactly one concrete local file operand, while extending best-effort direct-file binding to additional runtime forms. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Gateway/session reset auth: split conversation <code>/new</code> and <code>/reset</code> handling away from the admin-only <code>sessions.reset</code> control-plane RPC so write-scoped gateway callers can no longer reach the privileged reset path through <code>agent</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Security/plugin runtime: stop unauthenticated plugin HTTP routes from inheriting synthetic admin gateway scopes when they call <code>runtime.subagent.*</code>, so admin-only methods like <code>sessions.delete</code> stay blocked without gateway auth.</li>
<li>Security/session_status: enforce sandbox session-tree visibility and shared agent-to-agent access guards before reading or mutating target session state, so sandboxed subagents can no longer inspect parent session metadata or write parent model overrides via <code>session_status</code>.</li>
<li>Security/nodes: treat the <code>nodes</code> agent tool as owner-only fallback policy so non-owner senders cannot reach paired-node approval or invoke paths through the shared tool set.</li>
<li>Security/external content: treat whitespace-delimited <code>EXTERNAL UNTRUSTED CONTENT</code> boundary markers like underscore-delimited variants so prompt wrappers cannot bypass marker sanitization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027570664" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35983" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35983/hovercard" href="https://github.com/openclaw/openclaw/pull/35983">#35983</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/urianpaul94/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/urianpaul94">@urianpaul94</a>.</li>
<li>Telegram/exec approvals: reject <code>/approve</code> commands aimed at other bots, keep deterministic approval prompts visible when tool-result delivery fails, and stop resolved exact IDs from matching other pending approvals by prefix. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032304891" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37233" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37233/hovercard" href="https://github.com/openclaw/openclaw/pull/37233">#37233</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huntharo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huntharo">@huntharo</a>.</li>
<li>Subagents/authority: persist leaf vs orchestrator control scope at spawn time and route tool plus slash-command control through shared ownership checks, so leaf sessions cannot regain orchestration privileges after restore or flat-key lookups. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
<li>ACP/ACPX plugin: bump the bundled <code>acpx</code> pin to <code>0.1.16</code> so plugin-local installs and strict version checks match the latest published CLI. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4050319055" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41975" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41975/hovercard" href="https://github.com/openclaw/openclaw/pull/41975">#41975</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>ACP/sessions.patch: allow <code>spawnedBy</code> and <code>spawnDepth</code> lineage fields on ACP session keys so <code>sessions_spawn</code> with <code>runtime: "acp"</code> no longer fails during child-session setup. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045319001" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40971" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40971/hovercard" href="https://github.com/openclaw/openclaw/issues/40971">#40971</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045419094" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40995" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40995/hovercard" href="https://github.com/openclaw/openclaw/pull/40995">#40995</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xaeon2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xaeon2026">@xaeon2026</a>.</li>
<li>ACP/stop reason mapping: resolve gateway chat <code>state: "error"</code> completions as ACP <code>end_turn</code> instead of <code>refusal</code> so transient backend failures are not surfaced as deliberate refusals. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046283238" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41187" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41187/hovercard" href="https://github.com/openclaw/openclaw/pull/41187">#41187</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pejmanjohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pejmanjohn">@pejmanjohn</a>.</li>
<li>ACP/setSessionMode: propagate gateway <code>sessions.patch</code> failures back to ACP clients so rejected mode changes no longer return silent success. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046280473" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41185/hovercard" href="https://github.com/openclaw/openclaw/pull/41185">#41185</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pejmanjohn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pejmanjohn">@pejmanjohn</a>.</li>
<li>ACP/bridge mode: reject unsupported per-session MCP server setup and propagate rejected session-mode changes so IDE clients see explicit bridge limitations instead of silent success. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047825890" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41424" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41424/hovercard" href="https://github.com/openclaw/openclaw/pull/41424">#41424</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/session UX: replay stored user and assistant text on <code>loadSession</code>, expose Gateway-backed session controls and metadata, and emit approximate session usage updates so IDE clients restore context more faithfully. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047826695" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41425" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41425/hovercard" href="https://github.com/openclaw/openclaw/pull/41425">#41425</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/tool streaming: enrich <code>tool_call</code> and <code>tool_call_update</code> events with best-effort text content and file-location hints so IDE clients can follow bridge tool activity more naturally. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047962357" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41442" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41442/hovercard" href="https://github.com/openclaw/openclaw/pull/41442">#41442</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/runtime attachments: forward normalized inbound image attachments into ACP runtime turns so ACPX sessions can preserve image prompt content on the runtime path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047828669" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41427" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41427/hovercard" href="https://github.com/openclaw/openclaw/pull/41427">#41427</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/regressions: add gateway RPC coverage for ACP lineage patching, ACPX runtime coverage for image prompt serialization, and an operator smoke-test procedure for live ACP spawn verification. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048027892" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41456" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41456/hovercard" href="https://github.com/openclaw/openclaw/pull/41456">#41456</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/follow-up hardening: make session restore and prompt completion degrade gracefully on transcript/update failures, enforce bounded tool-location traversal, and skip non-image ACPX turns the runtime cannot serialize. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048102474" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41464" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41464/hovercard" href="https://github.com/openclaw/openclaw/pull/41464">#41464</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>ACP/sessions_spawn: implicitly stream <code>mode="run"</code> ACP spawns to parent only for eligible subagent orchestrator sessions (heartbeat <code>target: "last"</code> with a usable session-local route), restoring parent progress relays without thread binding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053246098" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42404" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42404/hovercard" href="https://github.com/openclaw/openclaw/pull/42404">#42404</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidguttman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidguttman">@davidguttman</a>.</li>
<li>ACP/main session aliases: canonicalize <code>main</code> before ACP session lookup so restarted ACP main sessions rehydrate instead of failing closed with <code>Session is not ACP-enabled: main</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4058859438" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43285" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43285/hovercard" href="https://github.com/openclaw/openclaw/pull/43285">#43285</a>, fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3985212634" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25692" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/25692/hovercard" href="https://github.com/openclaw/openclaw/issues/25692">#25692</a>)</li>
<li>Plugins/context-engine model auth: expose <code>runtime.modelAuth</code> and plugin-sdk auth helpers so plugins can resolve provider/model API keys through the normal auth pipeline. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4045774282" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41090" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41090/hovercard" href="https://github.com/openclaw/openclaw/pull/41090">#41090</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>Hooks/plugin context parity followup: pass <code>trigger</code> and <code>channelId</code> through embedded <code>llm_input</code>, <code>agent_end</code>, and <code>llm_output</code> hook contexts so plugins receive the same agent metadata across hook phases. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4053011939" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/42362" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/42362/hovercard" href="https://github.com/openclaw/openclaw/pull/42362">#42362</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zhoulf1006/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zhoulf1006">@zhoulf1006</a>.</li>
<li>Plugins/global hook runner: harden singleton state handling so shared global hook runner reuse does not leak or corrupt runner state across executions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041984478" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40184" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40184/hovercard" href="https://github.com/openclaw/openclaw/pull/40184">#40184</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Context engine/tests: add bundled-registry regression coverage for cross-chunk resolution, plugin-sdk re-exports, and concurrent chunk registration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042912345" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40460" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40460/hovercard" href="https://github.com/openclaw/openclaw/pull/40460">#40460</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>.</li>
<li>Agents/embedded runner: bound compaction retry waiting and drain embedded runs during SIGUSR1 restart so session lanes recover instead of staying blocked behind compaction. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042353222" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40324" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40324/hovercard" href="https://github.com/openclaw/openclaw/pull/40324">#40324</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Agents/embedded logs: add structured, sanitized lifecycle and failover observation events so overload and provider failures are easier to tail and filter. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047108005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41336" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41336/hovercard" href="https://github.com/openclaw/openclaw/pull/41336">#41336</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Agents/embedded overload logs: include the failing model and provider in error-path console output, with lifecycle regression coverage for the rendered and sanitized <code>consoleMessage</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4046541030" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41236" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41236/hovercard" href="https://github.com/openclaw/openclaw/pull/41236">#41236</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jiarung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jiarung">@jiarung</a>.</li>
<li>Agents/fallback observability: add structured, sanitized model-fallback decision and auth-profile failure-state events with correlated run IDs so cooldown probes and failover paths are easier to trace in logs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047108713" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41337/hovercard" href="https://github.com/openclaw/openclaw/pull/41337">#41337</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Logging/probe observations: suppress structured embedded and model-fallback probe warnings on the console without hiding error or fatal output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047109243" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41338/hovercard" href="https://github.com/openclaw/openclaw/pull/41338">#41338</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a>.</li>
<li>Agents/context-engine compaction: guard thrown engine-owned overflow compaction attempts and fire compaction hooks for <code>ownsCompaction</code> engines so overflow recovery no longer crashes and plugin subscribers still observe compact runs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047290995" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41361" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41361/hovercard" href="https://github.com/openclaw/openclaw/pull/41361">#41361</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrudduck/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrudduck">@davidrudduck</a>.</li>
<li>Gateway/node pending drain followup: keep <code>hasMore</code> true when the deferred baseline status item still needs delivery, and avoid allocating empty pending-work state for drain-only nodes with no queued work. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047832693" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41429" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41429/hovercard" href="https://github.com/openclaw/openclaw/pull/41429">#41429</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Protocol/Swift model sync: regenerate pending node work Swift bindings after the landed <code>node.pending.*</code> schema additions so generated protocol artifacts are consistent again. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4048183529" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41477" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41477/hovercard" href="https://github.com/openclaw/openclaw/pull/41477">#41477</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Cron/subagent followup: do not misclassify empty or <code>NO_REPLY</code> cron responses as interim acknowledgements that need a rerun, so deliberately silent cron jobs are no longer retried. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4047432637" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41383" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41383/hovercard" href="https://github.com/openclaw/openclaw/pull/41383">#41383</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jackal092927/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jackal092927">@jackal092927</a>.</li>
<li>Cron/state errors: record <code>lastErrorReason</code> in cron job state and keep the gateway schema aligned with the full failover-reason set, including regression coverage for protocol conformance. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3929418969" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14382" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/14382/hovercard" href="https://github.com/openclaw/openclaw/pull/14382">#14382</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/futuremind2026/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/futuremind2026">@futuremind2026</a>.</li>
<li>Browser/Browserbase 429 handling: surface stable no-retry rate-limit guidance without buffering discarded HTTP 429 response bodies from remote browser services. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043032848" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40491" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40491/hovercard" href="https://github.com/openclaw/openclaw/pull/40491">#40491</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>.</li>
<li>CI/CodeQL Swift toolchain: select Xcode 26.1 before installing Swift build tools so the CodeQL Swift job uses Swift tools 6.2 on <code>macos-latest</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049505022" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41787" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41787/hovercard" href="https://github.com/openclaw/openclaw/pull/41787">#41787</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BunsDev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BunsDev">@BunsDev</a>.</li>
<li>Sandbox/subagents: pass the real configured workspace through <code>sessions_spawn</code> inheritance when a parent agent runs in a copied-workspace sandbox, so child <code>/agent</code> mounts point at the configured workspace instead of the parent sandbox copy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4044010234" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40757" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40757/hovercard" href="https://github.com/openclaw/openclaw/pull/40757">#40757</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>.</li>
<li>Agents/fallback cooldown probing: cap cooldown-bypass probing to one attempt per provider per fallback run so multi-model same-provider cooldown chains can continue to cross-provider fallbacks instead of repeatedly stalling on duplicate cooldown probes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4049231653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/41711" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/41711/hovercard" href="https://github.com/openclaw/openclaw/pull/41711">#41711</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Telegram/direct delivery: bridge direct delivery sends to internal <code>message:sent</code> hooks so internal hook listeners observe successful Telegram deliveries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041984483" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40185/hovercard" href="https://github.com/openclaw/openclaw/pull/40185">#40185</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Dependencies: refresh workspace dependencies except the pinned Carbon package, and harden ACP session-config writes against non-string SDK values so newer ACP clients fail fast instead of tripping type/runtime mismatches.</li>
<li>Telegram/polling restarts: clear bounded cleanup timeout handles after <code>runner.stop()</code> and <code>bot.stop()</code> settle so stall recovery no longer leaves stray 15-second timers behind on clean shutdown. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4058114824" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/43188" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/43188/hovercard" href="https://github.com/openclaw/openclaw/pull/43188">#43188</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kyohwang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kyohwang">@kyohwang</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.8
2026-03-09T07:49:27Z
openclaw 2026.3.8
<p>Mac assets on this release reuse the beta artifact line from v2026.3.8-beta.1.</p>
<h3>Changes</h3>
<ul>
<li>CLI/backup: add <code>openclaw backup create</code> and <code>openclaw backup verify</code> for local state archives, including <code>--only-config</code>, <code>--no-include-workspace</code>, manifest/payload validation, and backup guidance in destructive flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041919556" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40163" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40163/hovercard" href="https://github.com/openclaw/openclaw/pull/40163">#40163</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shichangs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shichangs">@shichangs</a>.</li>
<li>macOS/onboarding: add a remote gateway token field for remote mode, preserve existing non-plaintext <code>gateway.remote.token</code> config values until explicitly replaced, and warn when the loaded token shape cannot be used directly from the macOS app. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041985795" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40187" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40187/hovercard" href="https://github.com/openclaw/openclaw/pull/40187">#40187</a>, supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022614365" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34614" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34614/hovercard" href="https://github.com/openclaw/openclaw/pull/34614">#34614</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Talk mode: add top-level <code>talk.silenceTimeoutMs</code> config so Talk waits a configurable amount of silence before auto-sending the current transcript, while keeping each platform's existing default pause window when unset. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040784167" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39607" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39607/hovercard" href="https://github.com/openclaw/openclaw/pull/39607">#39607</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/danodoesdesign/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/danodoesdesign">@danodoesdesign</a>. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3944087174" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17147" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/17147/hovercard" href="https://github.com/openclaw/openclaw/issues/17147">#17147</a>.</li>
<li>TUI: infer the active agent from the current workspace when launched inside a configured agent workspace, while preserving explicit <code>agent:</code> session targets. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040750669" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39591" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39591/hovercard" href="https://github.com/openclaw/openclaw/pull/39591">#39591</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arceus77-7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arceus77-7">@arceus77-7</a>.</li>
<li>Tools/Brave web search: add opt-in <code>tools.web.search.brave.mode: "llm-context"</code> so <code>web_search</code> can call Brave's LLM Context endpoint and return extracted grounding snippets with source metadata, plus config/docs/test coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018215673" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33383" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33383/hovercard" href="https://github.com/openclaw/openclaw/pull/33383">#33383</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thirumaleshp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thirumaleshp">@thirumaleshp</a>.</li>
<li>CLI/install: include the short git commit hash in <code>openclaw --version</code> output when metadata is available, and keep installer version checks compatible with the decorated format. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041004228" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39712" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39712/hovercard" href="https://github.com/openclaw/openclaw/pull/39712">#39712</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sourman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sourman">@sourman</a>.</li>
<li>CLI/backup: improve archive naming for date sorting, add config-only backup mode, and harden backup planning, publication, and verification edge cases. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041919556" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40163" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40163/hovercard" href="https://github.com/openclaw/openclaw/pull/40163">#40163</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>ACP/Provenance: add optional ACP ingress provenance metadata and visible receipt injection (<code>openclaw acp --provenance off|meta|meta+receipt</code>) so OpenClaw agents can retain and report ACP-origin context with session trace IDs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042973566" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40473" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40473/hovercard" href="https://github.com/openclaw/openclaw/pull/40473">#40473</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Tools/web search: alphabetize provider ordering across runtime selection, onboarding/configure pickers, and config metadata, so provider lists stay neutral and multi-key auto-detect now prefers Grok before Kimi. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042177913" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40259" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40259/hovercard" href="https://github.com/openclaw/openclaw/pull/40259">#40259</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesku/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesku">@kesku</a>.</li>
<li>Docs/Web search: restore $5/month free-credit details, replace defunct "Data for Search"/"Data for AI" plan names with current "Search" plan, and note legacy subscription validity in Brave setup docs. Follows up on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991764005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26860" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26860/hovercard" href="https://github.com/openclaw/openclaw/pull/26860">#26860</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041751460" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40111" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40111/hovercard" href="https://github.com/openclaw/openclaw/pull/40111">#40111</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/remusao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/remusao">@remusao</a>.</li>
<li>Extensions/ACPX tests: move the shared runtime fixture helper from <code>src/runtime-internals/</code> to <code>src/test-utils/</code> so the test-only helper no longer looks like shipped runtime code.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Update/macOS launchd restart: re-enable disabled LaunchAgent services before updater bootstrap so <code>openclaw update</code> can recover from a disabled gateway service instead of leaving the restart step stuck.</li>
<li>macOS app/chat UI: route browser proxy through the local node browser service, preserve plain-text paste semantics, strip completed assistant trace/debug wrapper noise from transcripts, refresh permission state after returning from System Settings, and tolerate malformed cron rows in the macOS tab. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040563803" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39516" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39516/hovercard" href="https://github.com/openclaw/openclaw/pull/39516">#39516</a>) Thanks @Imhermes1.</li>
<li>Android/Play distribution: remove self-update, background location, <code>screen.record</code>, and background mic capture from the Android app, narrow the foreground service to <code>dataSync</code> only, and clean up the legacy <code>location.enabledMode=always</code> preference migration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040919593" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39660" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39660/hovercard" href="https://github.com/openclaw/openclaw/pull/39660">#39660</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/DM routing: dedupe inbound Telegram DMs per agent instead of per session key so the same DM cannot trigger duplicate replies when both <code>agent:main:main</code> and <code>agent:main:telegram:direct:<id></code> resolve for one agent. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041517903" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40005" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40005/hovercard" href="https://github.com/openclaw/openclaw/issues/40005">#40005</a>. Supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041771059" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40116" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40116/hovercard" href="https://github.com/openclaw/openclaw/pull/40116">#40116</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043117078" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40519" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40519/hovercard" href="https://github.com/openclaw/openclaw/pull/40519">#40519</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Cron/Telegram announce delivery: route text-only announce jobs through the real outbound adapters after finalizing descendant output so plain Telegram targets no longer report <code>delivered: true</code> when no message actually reached Telegram. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043248406" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40575" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40575/hovercard" href="https://github.com/openclaw/openclaw/pull/40575">#40575</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Matrix/DM routing: add safer fallback detection for broken <code>m.direct</code> homeservers, honor explicit room bindings over DM classification, and preserve room-bound agent selection for Matrix DM rooms. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3955830966" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19736" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19736/hovercard" href="https://github.com/openclaw/openclaw/pull/19736">#19736</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derbronko/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derbronko">@derbronko</a>.</li>
<li>Feishu/plugin onboarding: clear the short-lived plugin discovery cache before reloading the registry after installing a channel plugin, so onboarding no longer re-prompts to download Feishu immediately after a successful install. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040871653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39642" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39642/hovercard" href="https://github.com/openclaw/openclaw/issues/39642">#39642</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041076553" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39752" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39752/hovercard" href="https://github.com/openclaw/openclaw/pull/39752">#39752</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GazeKingNuWu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GazeKingNuWu">@GazeKingNuWu</a>.</li>
<li>Plugins/channel onboarding: prefer bundled channel plugins over duplicate npm-installed copies during onboarding and release-channel sync, preventing bundled plugins from being shadowed by npm installs with the same plugin ID. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041731969" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40092" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40092/hovercard" href="https://github.com/openclaw/openclaw/issues/40092">#40092</a>)</li>
<li>Config/runtime snapshots: keep secrets-runtime-resolved config and auth-profile snapshots intact after config writes so follow-up reads still see file-backed secret values while picking up the persisted config update. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032568730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37313" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37313/hovercard" href="https://github.com/openclaw/openclaw/pull/37313">#37313</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbblending/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbblending">@bbblending</a>.</li>
<li>Gateway/Control UI: resolve bundled dashboard assets through symlinked global wrappers and auto-detected package roots, while keeping configured and custom roots on the strict hardlink boundary. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042574650" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40385" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40385/hovercard" href="https://github.com/openclaw/openclaw/pull/40385">#40385</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LarytheLord/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LarytheLord">@LarytheLord</a>.</li>
<li>Browser/extension relay: add <code>browser.relayBindHost</code> so the Chrome relay can bind to an explicit non-loopback address for WSL2 and other cross-namespace setups, while preserving loopback-only defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040191391" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39364" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39364/hovercard" href="https://github.com/openclaw/openclaw/pull/39364">#39364</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>.</li>
<li>Browser/CDP: normalize loopback direct WebSocket CDP URLs back to HTTP(S) for <code>/json/*</code> tab operations so local <code>ws://</code> / <code>wss://</code> profiles can still list, focus, open, and close tabs after the new direct-WS support lands. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008630466" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31085" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31085/hovercard" href="https://github.com/openclaw/openclaw/pull/31085">#31085</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shrey150/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shrey150">@shrey150</a>.</li>
<li>Browser/CDP: rewrite wildcard <code>ws://0.0.0.0</code> and <code>ws://[::]</code> debugger URLs from remote <code>/json/version</code> responses back to the external CDP host/port, fixing Browserless-style container endpoints. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945897672" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17760" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17760/hovercard" href="https://github.com/openclaw/openclaw/pull/17760">#17760</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joeharouni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joeharouni">@joeharouni</a>.</li>
<li>Browser/extension relay: wait briefly for a previously attached Chrome tab to reappear after transient relay drops before failing with <code>tab not found</code>, reducing noisy reconnect flakes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014434434" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32461" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32461/hovercard" href="https://github.com/openclaw/openclaw/pull/32461">#32461</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AaronWander/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AaronWander">@AaronWander</a>.</li>
<li>macOS/Tailscale gateway discovery: keep Tailscale Serve probing alive when other remote gateways are already discovered, prefer direct transport for resolved <code>.ts.net</code> and Tailscale Serve gateways, and set <code>TERM=dumb</code> for GUI-launched Tailscale CLI discovery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041934421" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40167" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40167/hovercard" href="https://github.com/openclaw/openclaw/pull/40167">#40167</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>TUI/theme: detect light terminal backgrounds via <code>COLORFGBG</code> and pick a WCAG AA-compliant light palette, with <code>OPENCLAW_THEME=light|dark</code> override for terminals without auto-detection. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037588390" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38636" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38636/hovercard" href="https://github.com/openclaw/openclaw/pull/38636">#38636</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/openai-codex: normalize <code>gpt-5.4</code> fallback transport back to <code>openai-codex-responses</code> on <code>chatgpt.com/backend-api</code> when config drifts to the generic OpenAI responses endpoint. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038083526" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38736" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38736/hovercard" href="https://github.com/openclaw/openclaw/pull/38736">#38736</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xsline/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xsline">@0xsline</a>.</li>
<li>Models/openai-codex GPT-5.4 forward-compat: use the GPT-5.4 1,050,000-token context window and 128,000 max tokens for <code>openai-codex/gpt-5.4</code> instead of inheriting stale legacy Codex limits in resolver fallbacks and model listing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034355214" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37876" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37876/hovercard" href="https://github.com/openclaw/openclaw/pull/37876">#37876</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>.</li>
<li>Tools/web search: restore Perplexity OpenRouter/Sonar compatibility for legacy <code>OPENROUTER_API_KEY</code>, <code>sk-or-...</code>, and explicit <code>perplexity.baseUrl</code> / <code>model</code> setups while keeping direct Perplexity keys on the native Search API path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041392704" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39937" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39937/hovercard" href="https://github.com/openclaw/openclaw/pull/39937">#39937</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Agents/failover: detect Amazon Bedrock <code>Too many tokens per day</code> quota errors as rate limits across fallback, cron retry, and memory embeddings while keeping context-window <code>too many tokens per request</code> errors out of the rate-limit lane. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040211635" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39377" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39377/hovercard" href="https://github.com/openclaw/openclaw/pull/39377">#39377</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>.</li>
<li>Mattermost replies: keep <code>root_id</code> pinned to the existing thread root when an agent replies inside a thread, while still using reply-target threading for top-level posts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996543059" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27744" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27744/hovercard" href="https://github.com/openclaw/openclaw/pull/27744">#27744</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hnykda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hnykda">@hnykda</a>.</li>
<li>Telegram/DM partial streaming: keep DM preview lanes on real message edits instead of native draft materialization so final replies no longer flash a second duplicate copy before collapsing back to one.</li>
<li>macOS overlays: fix VoiceWake, Talk, and Notify overlay exclusivity crashes by removing shared <code>inout</code> visibility mutation from <code>OverlayPanelFactory.present</code>, and add a repeated Talk overlay smoke test. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039953511" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39275" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39275/hovercard" href="https://github.com/openclaw/openclaw/issues/39275">#39275</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040074034" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39321" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39321/hovercard" href="https://github.com/openclaw/openclaw/pull/39321">#39321</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fellanH/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fellanH">@fellanH</a>.</li>
<li>macOS Talk Mode: set the speech recognition request <code>taskHint</code> to <code>.dictation</code> for mic capture, and add regression coverage for the request defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036865794" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38445" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38445/hovercard" href="https://github.com/openclaw/openclaw/pull/38445">#38445</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dmiv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dmiv">@dmiv</a>.</li>
<li>macOS release packaging: default <code>scripts/package-mac-app.sh</code> to universal binaries for <code>BUILD_CONFIG=release</code>, and clarify that <code>scripts/package-mac-dist.sh</code> already produces the release zip + DMG. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019904908" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33891" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33891/hovercard" href="https://github.com/openclaw/openclaw/pull/33891">#33891</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Hooks/session-memory: keep <code>/new</code> and <code>/reset</code> memory artifacts in the bound agent workspace and align saved reset session keys with that workspace when stale main-agent keys leak into the hook path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041309555" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39875" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39875/hovercard" href="https://github.com/openclaw/openclaw/pull/39875">#39875</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rbutera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rbutera">@rbutera</a>.</li>
<li>Sessions/model switch: clear stale cached <code>contextTokens</code> when a session changes models so status and runtime paths recompute against the active model window. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034831193" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38044" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38044/hovercard" href="https://github.com/openclaw/openclaw/pull/38044">#38044</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>.</li>
<li>ACP/session history: persist transcripts for successful ACP child runs, preserve exact transcript text, record ACP spawned-session lineage, and keep spawn-time transcript-path persistence best-effort so history storage failures do not block execution. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041849142" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40137" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40137/hovercard" href="https://github.com/openclaw/openclaw/pull/40137">#40137</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Docs/browser: add a layered WSL2 + Windows remote Chrome CDP troubleshooting guide, including Control UI origin pitfalls and extension-relay bind-address guidance. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040281845" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39407" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39407/hovercard" href="https://github.com/openclaw/openclaw/pull/39407">#39407</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Owlock/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Owlock">@Owlock</a>.</li>
<li>Context engine registry/bundled builds: share the registry state through a <code>globalThis</code> singleton so duplicated bundled module copies can resolve engines registered by each other at runtime, with regression coverage for duplicate-module imports. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041769128" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40115" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40115/hovercard" href="https://github.com/openclaw/openclaw/pull/40115">#40115</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Podman/setup: fix <code>cannot chdir: Permission denied</code> in <code>run_as_user</code> when <code>setup-podman.sh</code> is invoked from a directory the target user cannot access, by wrapping user-switch calls in a subshell that cd's to <code>/tmp</code> with <code>/</code> fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040385736" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39435" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39435/hovercard" href="https://github.com/openclaw/openclaw/pull/39435">#39435</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/langdon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/langdon">@langdon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jlcbk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jlcbk">@jlcbk</a>.</li>
<li>Podman/SELinux: auto-detect SELinux enforcing/permissive mode and add <code>:Z</code> relabel to bind mounts in <code>run-openclaw-podman.sh</code> and the Quadlet template, fixing <code>EACCES</code> on Fedora/RHEL hosts. Supports <code>OPENCLAW_BIND_MOUNT_OPTIONS</code> override. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040443588" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39449" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39449/hovercard" href="https://github.com/openclaw/openclaw/pull/39449">#39449</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/langdon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/langdon">@langdon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/githubbzxs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/githubbzxs">@githubbzxs</a>.</li>
<li>Agents/context-engine plugins: bootstrap runtime plugins once at embedded-run, compaction, and subagent boundaries so plugin-provided context engines and hooks load from the active workspace before runtime resolution. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042085681" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40232" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40232/hovercard" href="https://github.com/openclaw/openclaw/issues/40232">#40232</a>)</li>
<li>Docs/Changelog: correct the contributor credit for the bundled Control UI global-install fix to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LarytheLord/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LarytheLord">@LarytheLord</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042749285" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40420" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40420/hovercard" href="https://github.com/openclaw/openclaw/pull/40420">#40420</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velvet-shark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velvet-shark">@velvet-shark</a>.</li>
<li>Telegram/media downloads: time out only stalled body reads so polling recovers from hung file downloads without aborting slow downloads that are still streaming data. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041735977" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40098" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40098/hovercard" href="https://github.com/openclaw/openclaw/pull/40098">#40098</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tysoncung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tysoncung">@tysoncung</a>.</li>
<li>Docker/runtime image: prune dev dependencies, strip build-only dist metadata for smaller Docker images. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042301548" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40307" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40307/hovercard" href="https://github.com/openclaw/openclaw/pull/40307">#40307</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/restart timeout recovery: exit non-zero when restart-triggered shutdown drains time out so launchd/systemd restart the gateway instead of treating the failed restart as a clean stop. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042556217" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40380" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40380/hovercard" href="https://github.com/openclaw/openclaw/pull/40380">#40380</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>.</li>
<li>Gateway/config restart guard: validate config before service start/restart and keep post-SIGUSR1 startup failures from crashing the gateway process, reducing invalid-config restart loops and macOS permission loss. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037921697" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38699" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38699/hovercard" href="https://github.com/openclaw/openclaw/pull/38699">#38699</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lml2468/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lml2468">@lml2468</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lml2468/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lml2468">@lml2468</a>.</li>
<li>Gateway/launchd respawn detection: treat <code>XPC_SERVICE_NAME</code> as a launchd supervision hint so macOS restarts exit cleanly under launchd instead of attempting detached self-respawn. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3960726063" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20555" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/20555/hovercard" href="https://github.com/openclaw/openclaw/pull/20555">#20555</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dimat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dimat">@dimat</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dimat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dimat">@dimat</a>.</li>
<li>Telegram/poll restart cleanup: abort the in-flight Telegram API fetch when shutdown or forced polling restarts stop a runner, preventing stale <code>getUpdates</code> long polls from colliding with the replacement runner. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3975547722" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23950" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23950/hovercard" href="https://github.com/openclaw/openclaw/pull/23950">#23950</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gkinthecodeland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gkinthecodeland">@Gkinthecodeland</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gkinthecodeland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gkinthecodeland">@Gkinthecodeland</a>.</li>
<li>Cron/restart catch-up staggering: limit immediate missed-job replay on startup and reschedule the deferred remainder from the post-catchup clock so restart bursts do not starve the gateway or silently skip overdue recurring jobs. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3950944138" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18925" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/18925/hovercard" href="https://github.com/openclaw/openclaw/pull/18925">#18925</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rexlunae/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rexlunae">@rexlunae</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rexlunae/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rexlunae">@rexlunae</a>.</li>
<li>Cron/owner-only tools: pass trusted isolated cron runs into the embedded agent with owner context so <code>cron</code>/<code>gateway</code> tooling remains available after the owner-auth hardening narrowed direct-message ownership inference.</li>
<li>Browser/SSRF: block private-network intermediate redirect hops in strict browser navigation flows and fail closed when remote tab-open paths cannot inspect redirect chains. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a>.</li>
<li>MS Teams/authz: keep <code>groupPolicy: "allowlist"</code> enforcing sender allowlists even when a team/channel route allowlist is configured, so route matches no longer widen group access to every sender in that route. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a>.</li>
<li>Security/system.run: bind approved <code>bun</code> and <code>deno run</code> script operands to on-disk file snapshots so post-approval script rewrites are denied before execution.</li>
<li>Skills/download installs: pin the validated per-skill tools root before writing downloaded archives, so rebinding the lexical tools path cannot redirect download writes outside the intended tools directory. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.8-beta.1
2026-03-09T07:19:53Z
openclaw 2026.3.8-beta.1
<h3>Changes</h3>
<ul>
<li>CLI/backup: add <code>openclaw backup create</code> and <code>openclaw backup verify</code> for local state archives, including <code>--only-config</code>, <code>--no-include-workspace</code>, manifest/payload validation, and backup guidance in destructive flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041919556" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40163" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40163/hovercard" href="https://github.com/openclaw/openclaw/pull/40163">#40163</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shichangs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shichangs">@shichangs</a>.</li>
<li>macOS/onboarding: add a remote gateway token field for remote mode, preserve existing non-plaintext <code>gateway.remote.token</code> config values until explicitly replaced, and warn when the loaded token shape cannot be used directly from the macOS app. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041985795" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40187" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40187/hovercard" href="https://github.com/openclaw/openclaw/pull/40187">#40187</a>, supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022614365" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34614" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34614/hovercard" href="https://github.com/openclaw/openclaw/pull/34614">#34614</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Talk mode: add top-level <code>talk.silenceTimeoutMs</code> config so Talk waits a configurable amount of silence before auto-sending the current transcript, while keeping each platform's existing default pause window when unset. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040784167" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39607" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39607/hovercard" href="https://github.com/openclaw/openclaw/pull/39607">#39607</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/danodoesdesign/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/danodoesdesign">@danodoesdesign</a>. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3944087174" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17147" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/17147/hovercard" href="https://github.com/openclaw/openclaw/issues/17147">#17147</a>.</li>
<li>TUI: infer the active agent from the current workspace when launched inside a configured agent workspace, while preserving explicit <code>agent:</code> session targets. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040750669" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39591" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39591/hovercard" href="https://github.com/openclaw/openclaw/pull/39591">#39591</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arceus77-7/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arceus77-7">@arceus77-7</a>.</li>
<li>Tools/Brave web search: add opt-in <code>tools.web.search.brave.mode: "llm-context"</code> so <code>web_search</code> can call Brave's LLM Context endpoint and return extracted grounding snippets with source metadata, plus config/docs/test coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018215673" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33383" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33383/hovercard" href="https://github.com/openclaw/openclaw/pull/33383">#33383</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thirumaleshp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thirumaleshp">@thirumaleshp</a>.</li>
<li>CLI/install: include the short git commit hash in <code>openclaw --version</code> output when metadata is available, and keep installer version checks compatible with the decorated format. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041004228" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39712" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39712/hovercard" href="https://github.com/openclaw/openclaw/pull/39712">#39712</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sourman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sourman">@sourman</a>.</li>
<li>CLI/backup: improve archive naming for date sorting, add config-only backup mode, and harden backup planning, publication, and verification edge cases. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041919556" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40163" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40163/hovercard" href="https://github.com/openclaw/openclaw/pull/40163">#40163</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>ACP/Provenance: add optional ACP ingress provenance metadata and visible receipt injection (<code>openclaw acp --provenance off|meta|meta+receipt</code>) so OpenClaw agents can retain and report ACP-origin context with session trace IDs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042973566" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40473" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40473/hovercard" href="https://github.com/openclaw/openclaw/pull/40473">#40473</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Tools/web search: alphabetize provider ordering across runtime selection, onboarding/configure pickers, and config metadata, so provider lists stay neutral and multi-key auto-detect now prefers Grok before Kimi. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042177913" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40259" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40259/hovercard" href="https://github.com/openclaw/openclaw/pull/40259">#40259</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesku/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesku">@kesku</a>.</li>
<li>Docs/Web search: restore $5/month free-credit details, replace defunct "Data for Search"/"Data for AI" plan names with current "Search" plan, and note legacy subscription validity in Brave setup docs. Follows up on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991764005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26860" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26860/hovercard" href="https://github.com/openclaw/openclaw/pull/26860">#26860</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041751460" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40111" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40111/hovercard" href="https://github.com/openclaw/openclaw/pull/40111">#40111</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/remusao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/remusao">@remusao</a>.</li>
<li>Extensions/ACPX tests: move the shared runtime fixture helper from <code>src/runtime-internals/</code> to <code>src/test-utils/</code> so the test-only helper no longer looks like shipped runtime code.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>macOS app/chat UI: route browser proxy through the local node browser service, preserve plain-text paste semantics, strip completed assistant trace/debug wrapper noise from transcripts, refresh permission state after returning from System Settings, and tolerate malformed cron rows in the macOS tab. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040563803" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39516" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39516/hovercard" href="https://github.com/openclaw/openclaw/pull/39516">#39516</a>) Thanks @Imhermes1.</li>
<li>Android/Play distribution: remove self-update, background location, <code>screen.record</code>, and background mic capture from the Android app, narrow the foreground service to <code>dataSync</code> only, and clean up the legacy <code>location.enabledMode=always</code> preference migration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040919593" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39660" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39660/hovercard" href="https://github.com/openclaw/openclaw/pull/39660">#39660</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/DM routing: dedupe inbound Telegram DMs per agent instead of per session key so the same DM cannot trigger duplicate replies when both <code>agent:main:main</code> and <code>agent:main:telegram:direct:<id></code> resolve for one agent. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041517903" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40005" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40005/hovercard" href="https://github.com/openclaw/openclaw/issues/40005">#40005</a>. Supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041771059" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40116" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40116/hovercard" href="https://github.com/openclaw/openclaw/pull/40116">#40116</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043117078" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40519" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40519/hovercard" href="https://github.com/openclaw/openclaw/pull/40519">#40519</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Cron/Telegram announce delivery: route text-only announce jobs through the real outbound adapters after finalizing descendant output so plain Telegram targets no longer report <code>delivered: true</code> when no message actually reached Telegram. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4043248406" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40575" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40575/hovercard" href="https://github.com/openclaw/openclaw/pull/40575">#40575</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Matrix/DM routing: add safer fallback detection for broken <code>m.direct</code> homeservers, honor explicit room bindings over DM classification, and preserve room-bound agent selection for Matrix DM rooms. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3955830966" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19736" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19736/hovercard" href="https://github.com/openclaw/openclaw/pull/19736">#19736</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/derbronko/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/derbronko">@derbronko</a>.</li>
<li>Feishu/plugin onboarding: clear the short-lived plugin discovery cache before reloading the registry after installing a channel plugin, so onboarding no longer re-prompts to download Feishu immediately after a successful install. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040871653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39642" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39642/hovercard" href="https://github.com/openclaw/openclaw/issues/39642">#39642</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041076553" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39752" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39752/hovercard" href="https://github.com/openclaw/openclaw/pull/39752">#39752</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GazeKingNuWu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GazeKingNuWu">@GazeKingNuWu</a>.</li>
<li>Plugins/channel onboarding: prefer bundled channel plugins over duplicate npm-installed copies during onboarding and release-channel sync, preventing bundled plugins from being shadowed by npm installs with the same plugin ID. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041731969" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40092" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40092/hovercard" href="https://github.com/openclaw/openclaw/issues/40092">#40092</a>)</li>
<li>Config/runtime snapshots: keep secrets-runtime-resolved config and auth-profile snapshots intact after config writes so follow-up reads still see file-backed secret values while picking up the persisted config update. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032568730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37313" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37313/hovercard" href="https://github.com/openclaw/openclaw/pull/37313">#37313</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bbblending/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bbblending">@bbblending</a>.</li>
<li>Gateway/Control UI: resolve bundled dashboard assets through symlinked global wrappers and auto-detected package roots, while keeping configured and custom roots on the strict hardlink boundary. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042574650" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40385" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40385/hovercard" href="https://github.com/openclaw/openclaw/pull/40385">#40385</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LarytheLord/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LarytheLord">@LarytheLord</a>.</li>
<li>Browser/extension relay: add <code>browser.relayBindHost</code> so the Chrome relay can bind to an explicit non-loopback address for WSL2 and other cross-namespace setups, while preserving loopback-only defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040191391" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39364" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39364/hovercard" href="https://github.com/openclaw/openclaw/pull/39364">#39364</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>.</li>
<li>Browser/CDP: normalize loopback direct WebSocket CDP URLs back to HTTP(S) for <code>/json/*</code> tab operations so local <code>ws://</code> / <code>wss://</code> profiles can still list, focus, open, and close tabs after the new direct-WS support lands. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008630466" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31085" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31085/hovercard" href="https://github.com/openclaw/openclaw/pull/31085">#31085</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shrey150/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shrey150">@shrey150</a>.</li>
<li>Browser/CDP: rewrite wildcard <code>ws://0.0.0.0</code> and <code>ws://[::]</code> debugger URLs from remote <code>/json/version</code> responses back to the external CDP host/port, fixing Browserless-style container endpoints. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945897672" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17760" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17760/hovercard" href="https://github.com/openclaw/openclaw/pull/17760">#17760</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joeharouni/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joeharouni">@joeharouni</a>.</li>
<li>Browser/extension relay: wait briefly for a previously attached Chrome tab to reappear after transient relay drops before failing with <code>tab not found</code>, reducing noisy reconnect flakes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014434434" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32461" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32461/hovercard" href="https://github.com/openclaw/openclaw/pull/32461">#32461</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AaronWander/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AaronWander">@AaronWander</a>.</li>
<li>macOS/Tailscale gateway discovery: keep Tailscale Serve probing alive when other remote gateways are already discovered, prefer direct transport for resolved <code>.ts.net</code> and Tailscale Serve gateways, and set <code>TERM=dumb</code> for GUI-launched Tailscale CLI discovery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041934421" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40167" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40167/hovercard" href="https://github.com/openclaw/openclaw/pull/40167">#40167</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>TUI/theme: detect light terminal backgrounds via <code>COLORFGBG</code> and pick a WCAG AA-compliant light palette, with <code>OPENCLAW_THEME=light|dark</code> override for terminals without auto-detection. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037588390" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38636" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38636/hovercard" href="https://github.com/openclaw/openclaw/pull/38636">#38636</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/openai-codex: normalize <code>gpt-5.4</code> fallback transport back to <code>openai-codex-responses</code> on <code>chatgpt.com/backend-api</code> when config drifts to the generic OpenAI responses endpoint. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038083526" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38736" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38736/hovercard" href="https://github.com/openclaw/openclaw/pull/38736">#38736</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xsline/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xsline">@0xsline</a>.</li>
<li>Models/openai-codex GPT-5.4 forward-compat: use the GPT-5.4 1,050,000-token context window and 128,000 max tokens for <code>openai-codex/gpt-5.4</code> instead of inheriting stale legacy Codex limits in resolver fallbacks and model listing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034355214" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37876" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37876/hovercard" href="https://github.com/openclaw/openclaw/pull/37876">#37876</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>.</li>
<li>Tools/web search: restore Perplexity OpenRouter/Sonar compatibility for legacy <code>OPENROUTER_API_KEY</code>, <code>sk-or-...</code>, and explicit <code>perplexity.baseUrl</code> / <code>model</code> setups while keeping direct Perplexity keys on the native Search API path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041392704" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39937" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39937/hovercard" href="https://github.com/openclaw/openclaw/pull/39937">#39937</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Agents/failover: detect Amazon Bedrock <code>Too many tokens per day</code> quota errors as rate limits across fallback, cron retry, and memory embeddings while keeping context-window <code>too many tokens per request</code> errors out of the rate-limit lane. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040211635" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39377" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39377/hovercard" href="https://github.com/openclaw/openclaw/pull/39377">#39377</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>.</li>
<li>Mattermost replies: keep <code>root_id</code> pinned to the existing thread root when an agent replies inside a thread, while still using reply-target threading for top-level posts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996543059" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27744" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27744/hovercard" href="https://github.com/openclaw/openclaw/pull/27744">#27744</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hnykda/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hnykda">@hnykda</a>.</li>
<li>Telegram/DM partial streaming: keep DM preview lanes on real message edits instead of native draft materialization so final replies no longer flash a second duplicate copy before collapsing back to one.</li>
<li>macOS overlays: fix VoiceWake, Talk, and Notify overlay exclusivity crashes by removing shared <code>inout</code> visibility mutation from <code>OverlayPanelFactory.present</code>, and add a repeated Talk overlay smoke test. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039953511" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39275" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/39275/hovercard" href="https://github.com/openclaw/openclaw/issues/39275">#39275</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040074034" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39321" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39321/hovercard" href="https://github.com/openclaw/openclaw/pull/39321">#39321</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fellanH/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fellanH">@fellanH</a>.</li>
<li>macOS Talk Mode: set the speech recognition request <code>taskHint</code> to <code>.dictation</code> for mic capture, and add regression coverage for the request defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036865794" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38445" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38445/hovercard" href="https://github.com/openclaw/openclaw/pull/38445">#38445</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dmiv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dmiv">@dmiv</a>.</li>
<li>macOS release packaging: default <code>scripts/package-mac-app.sh</code> to universal binaries for <code>BUILD_CONFIG=release</code>, and clarify that <code>scripts/package-mac-dist.sh</code> already produces the release zip + DMG. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019904908" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33891" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33891/hovercard" href="https://github.com/openclaw/openclaw/pull/33891">#33891</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Hooks/session-memory: keep <code>/new</code> and <code>/reset</code> memory artifacts in the bound agent workspace and align saved reset session keys with that workspace when stale main-agent keys leak into the hook path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041309555" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39875" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39875/hovercard" href="https://github.com/openclaw/openclaw/pull/39875">#39875</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rbutera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rbutera">@rbutera</a>.</li>
<li>Sessions/model switch: clear stale cached <code>contextTokens</code> when a session changes models so status and runtime paths recompute against the active model window. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034831193" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38044" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38044/hovercard" href="https://github.com/openclaw/openclaw/pull/38044">#38044</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>.</li>
<li>ACP/session history: persist transcripts for successful ACP child runs, preserve exact transcript text, record ACP spawned-session lineage, and keep spawn-time transcript-path persistence best-effort so history storage failures do not block execution. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041849142" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40137" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40137/hovercard" href="https://github.com/openclaw/openclaw/pull/40137">#40137</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Docs/browser: add a layered WSL2 + Windows remote Chrome CDP troubleshooting guide, including Control UI origin pitfalls and extension-relay bind-address guidance. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040281845" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39407" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39407/hovercard" href="https://github.com/openclaw/openclaw/pull/39407">#39407</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Owlock/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Owlock">@Owlock</a>.</li>
<li>Context engine registry/bundled builds: share the registry state through a <code>globalThis</code> singleton so duplicated bundled module copies can resolve engines registered by each other at runtime, with regression coverage for duplicate-module imports. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041769128" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40115" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40115/hovercard" href="https://github.com/openclaw/openclaw/pull/40115">#40115</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Podman/setup: fix <code>cannot chdir: Permission denied</code> in <code>run_as_user</code> when <code>setup-podman.sh</code> is invoked from a directory the target user cannot access, by wrapping user-switch calls in a subshell that cd's to <code>/tmp</code> with <code>/</code> fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040385736" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39435" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39435/hovercard" href="https://github.com/openclaw/openclaw/pull/39435">#39435</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/langdon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/langdon">@langdon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jlcbk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jlcbk">@jlcbk</a>.</li>
<li>Podman/SELinux: auto-detect SELinux enforcing/permissive mode and add <code>:Z</code> relabel to bind mounts in <code>run-openclaw-podman.sh</code> and the Quadlet template, fixing <code>EACCES</code> on Fedora/RHEL hosts. Supports <code>OPENCLAW_BIND_MOUNT_OPTIONS</code> override. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040443588" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39449" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39449/hovercard" href="https://github.com/openclaw/openclaw/pull/39449">#39449</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/langdon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/langdon">@langdon</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/githubbzxs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/githubbzxs">@githubbzxs</a>.</li>
<li>Agents/context-engine plugins: bootstrap runtime plugins once at embedded-run, compaction, and subagent boundaries so plugin-provided context engines and hooks load from the active workspace before runtime resolution. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042085681" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40232" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/40232/hovercard" href="https://github.com/openclaw/openclaw/issues/40232">#40232</a>)</li>
<li>Docs/Changelog: correct the contributor credit for the bundled Control UI global-install fix to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LarytheLord/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LarytheLord">@LarytheLord</a>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042749285" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40420" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40420/hovercard" href="https://github.com/openclaw/openclaw/pull/40420">#40420</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velvet-shark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velvet-shark">@velvet-shark</a>.</li>
<li>Telegram/media downloads: time out only stalled body reads so polling recovers from hung file downloads without aborting slow downloads that are still streaming data. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4041735977" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40098" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40098/hovercard" href="https://github.com/openclaw/openclaw/pull/40098">#40098</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tysoncung/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tysoncung">@tysoncung</a>.</li>
<li>Docker/runtime image: prune dev dependencies, strip build-only dist metadata for smaller Docker images. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042301548" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40307" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40307/hovercard" href="https://github.com/openclaw/openclaw/pull/40307">#40307</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/restart timeout recovery: exit non-zero when restart-triggered shutdown drains time out so launchd/systemd restart the gateway instead of treating the failed restart as a clean stop. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4042556217" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/40380" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/40380/hovercard" href="https://github.com/openclaw/openclaw/pull/40380">#40380</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>.</li>
<li>Gateway/config restart guard: validate config before service start/restart and keep post-SIGUSR1 startup failures from crashing the gateway process, reducing invalid-config restart loops and macOS permission loss. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037921697" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38699" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38699/hovercard" href="https://github.com/openclaw/openclaw/pull/38699">#38699</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lml2468/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lml2468">@lml2468</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lml2468/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lml2468">@lml2468</a>.</li>
<li>Gateway/launchd respawn detection: treat <code>XPC_SERVICE_NAME</code> as a launchd supervision hint so macOS restarts exit cleanly under launchd instead of attempting detached self-respawn. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3960726063" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20555" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/20555/hovercard" href="https://github.com/openclaw/openclaw/pull/20555">#20555</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dimat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dimat">@dimat</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dimat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dimat">@dimat</a>.</li>
<li>Telegram/poll restart cleanup: abort the in-flight Telegram API fetch when shutdown or forced polling restarts stop a runner, preventing stale <code>getUpdates</code> long polls from colliding with the replacement runner. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3975547722" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23950" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23950/hovercard" href="https://github.com/openclaw/openclaw/pull/23950">#23950</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gkinthecodeland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gkinthecodeland">@Gkinthecodeland</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gkinthecodeland/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gkinthecodeland">@Gkinthecodeland</a>.</li>
<li>Cron/restart catch-up staggering: limit immediate missed-job replay on startup and reschedule the deferred remainder from the post-catchup clock so restart bursts do not starve the gateway or silently skip overdue recurring jobs. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3950944138" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18925" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/18925/hovercard" href="https://github.com/openclaw/openclaw/pull/18925">#18925</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rexlunae/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rexlunae">@rexlunae</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rexlunae/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rexlunae">@rexlunae</a>.</li>
<li>Cron/owner-only tools: pass trusted isolated cron runs into the embedded agent with owner context so <code>cron</code>/<code>gateway</code> tooling remains available after the owner-auth hardening narrowed direct-message ownership inference.</li>
<li>Browser/SSRF: block private-network intermediate redirect hops in strict browser navigation flows and fail closed when remote tab-open paths cannot inspect redirect chains. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a>.</li>
<li>MS Teams/authz: keep <code>groupPolicy: "allowlist"</code> enforcing sender allowlists even when a team/channel route allowlist is configured, so route matches no longer widen group access to every sender in that route. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a>.</li>
<li>Security/system.run: bind approved <code>bun</code> and <code>deno run</code> script operands to on-disk file snapshots so post-approval script rewrites are denied before execution.</li>
<li>Skills/download installs: pin the validated per-skill tools root before writing downloaded archives, so rebinding the lexical tools path cannot redirect download writes outside the intended tools directory. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.7
2026-03-08T05:52:41Z
openclaw 2026.3.7
<h3>Changes</h3>
<ul>
<li>Agents/context engine plugin interface: add <code>ContextEngine</code> plugin slot with full lifecycle hooks (<code>bootstrap</code>, <code>ingest</code>, <code>assemble</code>, <code>compact</code>, <code>afterTurn</code>, <code>prepareSubagentSpawn</code>, <code>onSubagentEnded</code>), slot-based registry with config-driven resolution, <code>LegacyContextEngine</code> wrapper preserving existing compaction behavior, scoped subagent runtime for plugin runtimes via <code>AsyncLocalStorage</code>, and <code>sessions.get</code> gateway method. Enables plugins like <code>lossless-claw</code> to provide alternative context management strategies without modifying core compaction logic. Zero behavior change when no context engine plugin is configured. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3970497878" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/22201" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/22201/hovercard" href="https://github.com/openclaw/openclaw/pull/22201">#22201</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>ACP/persistent channel bindings: add durable Discord channel and Telegram topic binding storage, routing resolution, and CLI/docs support so ACP thread targets survive restarts and can be managed consistently. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023558978" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34873" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34873/hovercard" href="https://github.com/openclaw/openclaw/pull/34873">#34873</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>Telegram/ACP topic bindings: accept Telegram Mac Unicode dash option prefixes in <code>/acp spawn</code>, support Telegram topic thread binding (<code>--thread here|auto</code>), route bound-topic follow-ups to ACP sessions, add actionable Telegram approval buttons with prefixed approval-id resolution, and pin successful bind confirmations in-topic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030499817" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36683" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36683/hovercard" href="https://github.com/openclaw/openclaw/pull/36683">#36683</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huntharo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huntharo">@huntharo</a>.</li>
<li>Telegram/topic agent routing: support per-topic <code>agentId</code> overrides in forum groups and DM topics so topics can route to dedicated agents with isolated sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019308625" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33647" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33647/hovercard" href="https://github.com/openclaw/openclaw/pull/33647">#33647</a>; based on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010127003" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31513" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31513/hovercard" href="https://github.com/openclaw/openclaw/pull/31513">#31513</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesor">@kesor</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Web UI/i18n: add Spanish (<code>es</code>) locale support in the Control UI, including locale detection, lazy loading, and language picker labels across supported locales. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024643356" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35038" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35038/hovercard" href="https://github.com/openclaw/openclaw/pull/35038">#35038</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DaoPromociones/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DaoPromociones">@DaoPromociones</a>.</li>
<li>Onboarding/web search: add provider selection step and full provider list in configure wizard, with SecretRef ref-mode support during onboarding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020228190" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34009" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34009/hovercard" href="https://github.com/openclaw/openclaw/pull/34009">#34009</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesku/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesku">@kesku</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Tools/Web search: switch Perplexity provider to Search API with structured results plus new language/region/time filters. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019733266" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33822" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33822/hovercard" href="https://github.com/openclaw/openclaw/pull/33822">#33822</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesku/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesku">@kesku</a>.</li>
<li>Gateway: add SecretRef support for gateway.auth.token with auth-mode guardrails. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024904470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35094" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35094/hovercard" href="https://github.com/openclaw/openclaw/pull/35094">#35094</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Docker/Podman extension dependency baking: add <code>OPENCLAW_EXTENSIONS</code> so container builds can preinstall selected bundled extension npm dependencies into the image for faster and more reproducible startup in container deployments. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013580715" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32223" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32223/hovercard" href="https://github.com/openclaw/openclaw/pull/32223">#32223</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a>.</li>
<li>Plugins/before_prompt_build system-context fields: add <code>prependSystemContext</code> and <code>appendSystemContext</code> so static plugin guidance can be placed in system prompt space for provider caching and lower repeated prompt token cost. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025118425" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35177" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35177/hovercard" href="https://github.com/openclaw/openclaw/pull/35177">#35177</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/maweibin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/maweibin">@maweibin</a>.</li>
<li>Plugins/hook policy: add <code>plugins.entries.<id>.hooks.allowPromptInjection</code>, validate unknown typed hook names at runtime, and preserve legacy <code>before_agent_start</code> model/provider overrides while stripping prompt-mutating fields when prompt injection is disabled. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029898443" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36567" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36567/hovercard" href="https://github.com/openclaw/openclaw/pull/36567">#36567</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Hooks/Compaction lifecycle: emit <code>session:compact:before</code> and <code>session:compact:after</code> internal events plus plugin compaction callbacks with session/count metadata, so automations can react to compaction runs consistently. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3943038943" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/16788" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/16788/hovercard" href="https://github.com/openclaw/openclaw/pull/16788">#16788</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/compaction post-context configurability: add <code>agents.defaults.compaction.postCompactionSections</code> so deployments can choose which <code>AGENTS.md</code> sections are re-injected after compaction, while preserving legacy fallback behavior when the documented default pair is configured in any order. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022385188" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34556" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34556/hovercard" href="https://github.com/openclaw/openclaw/pull/34556">#34556</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/efe-arv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/efe-arv">@efe-arv</a>.</li>
<li>TTS/OpenAI-compatible endpoints: add <code>messages.tts.openai.baseUrl</code> config support with config-over-env precedence, endpoint-aware directive validation, and OpenAI TTS request routing to the resolved base URL. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021331443" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34321" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34321/hovercard" href="https://github.com/openclaw/openclaw/pull/34321">#34321</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RealKai42/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/RealKai42">@RealKai42</a>.</li>
<li>Slack/DM typing feedback: add <code>channels.slack.typingReaction</code> so Socket Mode DMs can show reaction-based processing status even when Slack native assistant typing is unavailable. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3956178808" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19816" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19816/hovercard" href="https://github.com/openclaw/openclaw/pull/19816">#19816</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dalefrieswthat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dalefrieswthat">@dalefrieswthat</a>.</li>
<li>Discord/allowBots mention gating: add <code>allowBots: "mentions"</code> to only accept bot-authored messages that mention the bot. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Agents/tool-result truncation: preserve important tail diagnostics by using head+tail truncation for oversized tool results while keeping configurable truncation options. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3957960099" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20076" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/20076/hovercard" href="https://github.com/openclaw/openclaw/pull/20076">#20076</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jlwestsr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jlwestsr">@jlwestsr</a>.</li>
<li>Cron/job snapshot persistence: skip backup during normalization persistence in <code>ensureLoaded</code> so <code>jobs.json.bak</code> keeps the pre-edit snapshot for recovery, while preserving backup creation on explicit user-driven writes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025265372" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35234" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35234/hovercard" href="https://github.com/openclaw/openclaw/pull/35234">#35234</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xsline/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xsline">@0xsline</a>.</li>
<li>CLI: make read-only SecretRef status flows degrade safely (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031793543" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37023" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37023/hovercard" href="https://github.com/openclaw/openclaw/pull/37023">#37023</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Tools/Diffs guidance: restore a short system-prompt hint for enabled diffs while keeping the detailed instructions in the companion skill, so diffs usage guidance stays out of user-prompt space. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031424694" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36904" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36904/hovercard" href="https://github.com/openclaw/openclaw/pull/36904">#36904</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Tools/Diffs guidance loading: move diffs usage guidance from unconditional prompt-hook injection to the plugin companion skill path, reducing unrelated-turn prompt noise while keeping diffs tool behavior unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014908579" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32630/hovercard" href="https://github.com/openclaw/openclaw/pull/32630">#32630</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sircrumpet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sircrumpet">@sircrumpet</a>.</li>
<li>Docs/Web search: remove outdated Brave free-tier wording and replace prescriptive AI ToS guidance with neutral compliance language in Brave setup docs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991764005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26860" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26860/hovercard" href="https://github.com/openclaw/openclaw/pull/26860">#26860</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HenryLoenwind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HenryLoenwind">@HenryLoenwind</a>.</li>
<li>Config/Compaction safeguard tuning: expose <code>agents.defaults.compaction.recentTurnsPreserve</code> and quality-guard retry knobs through the validated config surface and embedded-runner wiring, with regression coverage for real config loading and schema metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984348161" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25557" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25557/hovercard" href="https://github.com/openclaw/openclaw/pull/25557">#25557</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>iOS/App Store Connect release prep: align iOS bundle identifiers under <code>ai.openclaw.client</code>, refresh Watch app icons, add Fastlane metadata/screenshot automation, and support Keychain-backed ASC auth for uploads. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038640563" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38936" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38936/hovercard" href="https://github.com/openclaw/openclaw/pull/38936">#38936</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Mattermost/model picker: add Telegram-style interactive provider/model browsing for <code>/oc_model</code> and <code>/oc_models</code>, fix picker callback updates, and emit a normal confirmation reply when a model is selected. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038164909" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38767" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38767/hovercard" href="https://github.com/openclaw/openclaw/pull/38767">#38767</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mukhtharcm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mukhtharcm">@mukhtharcm</a>.</li>
<li>Docker/multi-stage build: restructure Dockerfile as a multi-stage build to produce a minimal runtime image without build tools, source code, or Bun; add <code>OPENCLAW_VARIANT=slim</code> build arg for a bookworm-slim variant. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037029901" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38479" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38479/hovercard" href="https://github.com/openclaw/openclaw/pull/38479">#38479</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a>.</li>
<li>Google/Gemini 3.1 Flash-Lite: add first-class <code>google/gemini-3.1-flash-lite-preview</code> support across model-id normalization, default aliases, media-understanding image lookups, Google Gemini CLI forward-compat fallback, and docs.</li>
</ul>
<h3>Breaking</h3>
<ul>
<li><strong>BREAKING:</strong> Gateway auth now requires explicit <code>gateway.auth.mode</code> when both <code>gateway.auth.token</code> and <code>gateway.auth.password</code> are configured (including SecretRefs). Set <code>gateway.auth.mode</code> to <code>token</code> or <code>password</code> before upgrade to avoid startup/pairing/TUI failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024904470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35094" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35094/hovercard" href="https://github.com/openclaw/openclaw/pull/35094">#35094</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Models/MiniMax: stop advertising removed <code>MiniMax-M2.5-Lightning</code> in built-in provider catalogs, onboarding metadata, and docs; keep the supported fast-tier model as <code>MiniMax-M2.5-highspeed</code>.</li>
<li>Security/Config: fail closed when <code>loadConfig()</code> hits validation or read errors so invalid configs cannot silently fall back to permissive runtime defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3898169913" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9040" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/9040/hovercard" href="https://github.com/openclaw/openclaw/pull/9040">#9040</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joetomasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joetomasone">@joetomasone</a>.</li>
<li>Memory/Hybrid search: preserve negative FTS5 BM25 relevance ordering in <code>bm25RankToScore()</code> so stronger keyword matches rank above weaker ones instead of collapsing or reversing scores. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019606216" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33757" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33757/hovercard" href="https://github.com/openclaw/openclaw/pull/33757">#33757</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lsdcc01/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lsdcc01">@lsdcc01</a>.</li>
<li>LINE/<code>requireMention</code> group gating: align inbound and reply-stage LINE group policy resolution across raw, <code>group:</code>, and <code>room:</code> keys (including account-scoped group config), preserve plugin-backed reply-stage fallback behavior, and add regression coverage for prefixed-only group/room config plus reply-stage policy resolution. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027016129" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35847" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35847/hovercard" href="https://github.com/openclaw/openclaw/pull/35847">#35847</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kirisame-wang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kirisame-wang">@kirisame-wang</a>.</li>
<li>Onboarding/local setup: default unset local <code>tools.profile</code> to <code>coding</code> instead of <code>messaging</code>, restoring file/runtime tools for fresh local installs while preserving explicit user-set profiles. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035418730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38241/hovercard" href="https://github.com/openclaw/openclaw/pull/38241">#38241</a>, overlap with <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023928736" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34958" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34958/hovercard" href="https://github.com/openclaw/openclaw/pull/34958">#34958</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Gateway/Telegram stale-socket restart guard: only apply stale-socket restarts to channels that publish event-liveness timestamps, preventing Telegram providers from being misclassified as stale solely due to long uptime and avoiding restart/pairing storms after upgrade. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036988279" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38464" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38464/hovercard" href="https://github.com/openclaw/openclaw/issues/38464">#38464</a>)</li>
<li>Onboarding/headless Linux daemon probe hardening: treat <code>systemctl --user is-enabled</code> probe failures as non-fatal during daemon install flow so onboarding no longer crashes on SSH/headless VPS environments before showing install guidance. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032530190" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37297" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37297/hovercard" href="https://github.com/openclaw/openclaw/issues/37297">#37297</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/acarbajal-web/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/acarbajal-web">@acarbajal-web</a>.</li>
<li>Memory/QMD mcporter Windows spawn hardening: when <code>mcporter.cmd</code> launch fails with <code>spawn EINVAL</code>, retry via bare <code>mcporter</code> shell resolution so QMD recall can continue instead of falling back to builtin memory search. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3994494668" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27402" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27402/hovercard" href="https://github.com/openclaw/openclaw/issues/27402">#27402</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/i0ivi0i/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/i0ivi0i">@i0ivi0i</a>.</li>
<li>Tools/web_search Brave language-code validation: align <code>search_lang</code> handling with Brave-supported codes (including <code>zh-hans</code>, <code>zh-hant</code>, <code>en-gb</code>, and <code>pt-br</code>), map common alias inputs (<code>zh</code>, <code>ja</code>) to valid Brave values, and reject unsupported codes before upstream requests to prevent 422 failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032435963" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37260" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37260/hovercard" href="https://github.com/openclaw/openclaw/issues/37260">#37260</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/heyanming/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/heyanming">@heyanming</a>.</li>
<li>Models/openai-completions streaming compatibility: force <code>compat.supportsUsageInStreaming=false</code> for non-native OpenAI-compatible endpoints during model normalization, preventing usage-only stream chunks from triggering <code>choices[0]</code> parser crashes in provider streams. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3895550931" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/8714" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/8714/hovercard" href="https://github.com/openclaw/openclaw/issues/8714">#8714</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nonanon1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nonanon1">@nonanon1</a>.</li>
<li>Tools/xAI native web-search collision guard: drop OpenClaw <code>web_search</code> from tool registration when routing to xAI/Grok model providers (including OpenRouter <code>x-ai/*</code>) to avoid duplicate tool-name request failures against provider-native <code>web_search</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3932545677" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14749" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/14749/hovercard" href="https://github.com/openclaw/openclaw/issues/14749">#14749</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/realsamrat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/realsamrat">@realsamrat</a>.</li>
<li>TUI/token copy-safety rendering: treat long credential-like mixed alphanumeric tokens (including quoted forms) as copy-sensitive in render sanitization so formatter hard-wrap guards no longer inject visible spaces into auth-style values before display. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990601245" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26710" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/26710/hovercard" href="https://github.com/openclaw/openclaw/issues/26710">#26710</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonthane/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonthane">@jasonthane</a>.</li>
<li>WhatsApp/self-chat response prefix fallback: stop forcing <code>"[openclaw]"</code> as the implicit outbound response prefix when no identity name or response prefix is configured, so blank/default prefix settings no longer inject branding text unexpectedly in self-chat flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998036953" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27962" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27962/hovercard" href="https://github.com/openclaw/openclaw/issues/27962">#27962</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ecanmor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ecanmor">@ecanmor</a>.</li>
<li>Memory/QMD search result decoding: accept <code>qmd search</code> hits that only include <code>file</code> URIs (for example <code>qmd://collection/path.md</code>) without <code>docid</code>, resolve them through managed collection roots, and keep multi-collection results keyed by file fallback so valid QMD hits no longer collapse to empty <code>memory_search</code> output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998758823" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28181" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28181/hovercard" href="https://github.com/openclaw/openclaw/issues/28181">#28181</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0x76696265/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0x76696265">@0x76696265</a>.</li>
<li>Memory/QMD collection-name conflict recovery: when <code>qmd collection add</code> fails because another collection already occupies the same <code>path + pattern</code>, detect the conflicting collection from <code>collection list</code>, remove it, and retry add so agent-scoped managed collections are created deterministically instead of being silently skipped; also add warning-only fallback when qmd metadata is unavailable to avoid destructive guesses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984009553" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25496" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/25496/hovercard" href="https://github.com/openclaw/openclaw/issues/25496">#25496</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ramsbaby/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ramsbaby">@Ramsbaby</a>.</li>
<li>Slack/app_mention race dedupe: when <code>app_mention</code> dispatch wins while same-<code>ts</code> <code>message</code> prepare is still in-flight, suppress the later message dispatch so near-simultaneous Slack deliveries do not produce duplicate replies; keep single-retry behavior and add regression coverage for both dropped and successful message-prepare outcomes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031846861" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37033" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37033/hovercard" href="https://github.com/openclaw/openclaw/pull/37033">#37033</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Gateway/chat streaming tool-boundary text retention: merge assistant delta segments into per-run chat buffers so pre-tool text is preserved in live chat deltas/finals when providers emit post-tool assistant segments as non-prefix snapshots. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031575812" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36957" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36957/hovercard" href="https://github.com/openclaw/openclaw/issues/36957">#36957</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Datyedyeguy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Datyedyeguy">@Datyedyeguy</a>.</li>
<li>TUI/model indicator freshness: prevent stale session snapshots from overwriting freshly patched model selection (and reset per-session freshness when switching session keys) so <code>/model</code> updates reflect immediately instead of lagging by one or more commands. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3965087810" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/21255" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/21255/hovercard" href="https://github.com/openclaw/openclaw/issues/21255">#21255</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kowza/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kowza">@kowza</a>.</li>
<li>TUI/final-error rendering fallback: when a chat <code>final</code> event has no renderable assistant content but includes envelope <code>errorMessage</code>, render the formatted error text instead of collapsing to <code>"(no output)"</code>, preserving actionable failure context in-session. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3932012955" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14687" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/14687/hovercard" href="https://github.com/openclaw/openclaw/issues/14687">#14687</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mquarmoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mquarmoc">@Mquarmoc</a>.</li>
<li>TUI/session-key alias event matching: treat chat events whose session keys are canonical aliases (for example <code>agent:<id>:main</code> vs <code>main</code>) as the same session while preserving cross-agent isolation, so assistant replies no longer disappear or surface in another terminal window due to strict key-form mismatch. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019988243" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33937" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33937/hovercard" href="https://github.com/openclaw/openclaw/issues/33937">#33937</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yjh1412/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yjh1412">@yjh1412</a>.</li>
<li>OpenAI Codex OAuth/login parity: keep <code>openclaw models auth login --provider openai-codex</code> on the built-in path even without provider plugins, preserve Pi-generated authorize URLs without local scope rewriting, and stop validating successful Codex sign-ins against the public OpenAI Responses API after callback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033203418" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37558" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37558/hovercard" href="https://github.com/openclaw/openclaw/pull/37558">#37558</a>; follow-up to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030353957" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36660" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36660/hovercard" href="https://github.com/openclaw/openclaw/issues/36660">#36660</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3979646167" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24720" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/24720/hovercard" href="https://github.com/openclaw/openclaw/issues/24720">#24720</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/driesvints/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/driesvints">@driesvints</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Skippy-Gunboat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Skippy-Gunboat">@Skippy-Gunboat</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Agents/config schema lookup: add <code>gateway</code> tool action <code>config.schema.lookup</code> so agents can inspect one config path at a time before edits without loading the full schema into prompt context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032440218" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37266" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37266/hovercard" href="https://github.com/openclaw/openclaw/pull/37266">#37266</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Onboarding/API key input hardening: strip non-Latin1 Unicode artifacts from normalized secret input (while preserving Latin-1 content and internal spaces) so malformed copied API keys cannot trigger HTTP header <code>ByteString</code> construction crashes; adds regression coverage for shared normalization and MiniMax auth header usage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3978129315" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24496" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/24496/hovercard" href="https://github.com/openclaw/openclaw/issues/24496">#24496</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fa6maalassaf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fa6maalassaf">@fa6maalassaf</a>.</li>
<li>Kimi Coding/Anthropic tools compatibility: normalize <code>anthropic-messages</code> tool payloads to OpenAI-style <code>tools[].function</code> + compatible <code>tool_choice</code> when targeting Kimi Coding endpoints, restoring tool-call workflows that regressed after v2026.3.2. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031858555" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37038" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37038/hovercard" href="https://github.com/openclaw/openclaw/issues/37038">#37038</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mochimochimochi-hub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mochimochimochi-hub">@mochimochimochi-hub</a>.</li>
<li>Heartbeat/workspace-path guardrails: append explicit workspace <code>HEARTBEAT.md</code> path guidance (and <code>docs/heartbeat.md</code> avoidance) to heartbeat prompts so heartbeat runs target workspace checklists reliably across packaged install layouts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031854549" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37037" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37037/hovercard" href="https://github.com/openclaw/openclaw/issues/37037">#37037</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stofancy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stofancy">@stofancy</a>.</li>
<li>Subagents/kill-complete announce race: when a late <code>subagent-complete</code> lifecycle event arrives after an earlier kill marker, clear stale kill suppression/cleanup flags and re-run announce cleanup so finished runs no longer get silently swallowed. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031794531" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37024" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37024/hovercard" href="https://github.com/openclaw/openclaw/issues/37024">#37024</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmfinlan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmfinlan">@cmfinlan</a>.</li>
<li>Agents/tool-result cleanup timeout hardening: on embedded runner teardown idle timeouts, clear pending tool-call state without persisting synthetic <code>missing tool result</code> entries, preventing timeout cleanups from poisoning follow-up turns; adds regression coverage for timeout clear-vs-flush behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031939597" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37081" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37081/hovercard" href="https://github.com/openclaw/openclaw/issues/37081">#37081</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Coyote-Den/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Coyote-Den">@Coyote-Den</a>.</li>
<li>Agents/openai-completions stream timeout hardening: ensure runtime undici global dispatchers use extended streaming body/header timeouts (including env-proxy dispatcher mode) before embedded runs, reducing forced mid-stream <code>terminated</code> failures on long generations; adds regression coverage for dispatcher selection and idempotent reconfiguration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3902267136" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9708" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/9708/hovercard" href="https://github.com/openclaw/openclaw/issues/9708">#9708</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scottchguard/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scottchguard">@scottchguard</a>.</li>
<li>Agents/fallback cooldown probe execution: thread explicit rate-limit cooldown probe intent from model fallback into embedded runner auth-profile selection so same-provider fallback attempts can actually run when all profiles are cooldowned for <code>rate_limit</code> (instead of failing pre-run as <code>No available auth profile</code>), while preserving default cooldown skip behavior and adding regression tests at both fallback and runner layers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3923135499" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13623" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/13623/hovercard" href="https://github.com/openclaw/openclaw/issues/13623">#13623</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asfura/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asfura">@asfura</a>.</li>
<li>Cron/OpenAI Codex OAuth refresh hardening: when <code>openai-codex</code> token refresh fails specifically on account-id extraction, reuse the cached access token instead of failing the run immediately, with regression coverage to keep non-Codex and unrelated refresh failures unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030096599" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36604" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36604/hovercard" href="https://github.com/openclaw/openclaw/issues/36604">#36604</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/laulopezreal/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/laulopezreal">@laulopezreal</a>.</li>
<li>TUI/session isolation for <code>/new</code>: make <code>/new</code> allocate a unique <code>tui-<uuid></code> session key instead of resetting the shared agent session, so multiple TUI clients on the same agent stop receiving each other’s replies; also sanitize <code>/new</code> and <code>/reset</code> failure text before rendering in-terminal. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039731267" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39238" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39238/hovercard" href="https://github.com/openclaw/openclaw/pull/39238">#39238</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>.</li>
<li>Synology Chat/rate-limit env parsing: honor <code>SYNOLOGY_RATE_LIMIT=0</code> as an explicit value while still falling back to the default limit for malformed env values instead of partially parsing them. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039569654" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39197" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39197/hovercard" href="https://github.com/openclaw/openclaw/pull/39197">#39197</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Voice-call/OpenAI Realtime STT config defaults: honor explicit <code>vadThreshold: 0</code> and <code>silenceDurationMs: 0</code> instead of silently replacing them with defaults. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039563423" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39196" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39196/hovercard" href="https://github.com/openclaw/openclaw/pull/39196">#39196</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Voice-call/OpenAI TTS speed config: honor explicit <code>speed: 0</code> instead of silently replacing it with the default speed. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040068961" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39318" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39318/hovercard" href="https://github.com/openclaw/openclaw/pull/39318">#39318</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a>.</li>
<li>launchd/runtime PID parsing: reject <code>pid <= 0</code> from <code>launchctl print</code> so the daemon state parser no longer treats kernel/non-running sentinel values as real process IDs. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039965227" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39281" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39281/hovercard" href="https://github.com/openclaw/openclaw/pull/39281">#39281</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>.</li>
<li>Cron/file permission hardening: enforce owner-only (<code>0600</code>) cron store/backup/run-log files and harden cron store + run-log directories to <code>0700</code>, including pre-existing directories from older installs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027883017" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36078" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36078/hovercard" href="https://github.com/openclaw/openclaw/pull/36078">#36078</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aerelune/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aerelune">@aerelune</a>.</li>
<li>Gateway/remote WS break-glass hostname support: honor <code>OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1</code> for <code>ws://</code> hostname URLs (not only private IP literals) across onboarding validation and runtime gateway connection checks, while still rejecting public IP literals and non-unicast IPv6 endpoints. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031509238" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36930" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36930/hovercard" href="https://github.com/openclaw/openclaw/issues/36930">#36930</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/manju-rn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/manju-rn">@manju-rn</a>.</li>
<li>Routing/binding lookup scalability: pre-index route bindings by channel/account and avoid full binding-list rescans on channel-account cache rollover, preventing multi-second <code>resolveAgentRoute</code> stalls in large binding configurations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031458282" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36915" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36915/hovercard" href="https://github.com/openclaw/openclaw/issues/36915">#36915</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/songchenghao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/songchenghao">@songchenghao</a>.</li>
<li>Browser/session cleanup: track browser tabs opened by session-scoped browser tool runs and close tracked tabs during <code>sessions.reset</code>/<code>sessions.delete</code> runtime cleanup, preventing orphaned tabs and unbounded browser memory growth after session teardown. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030389970" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36666" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36666/hovercard" href="https://github.com/openclaw/openclaw/issues/36666">#36666</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Harnoor6693/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Harnoor6693">@Harnoor6693</a>.</li>
<li>Plugin/hook install rollback hardening: stage installs under the canonical install base, validate and run dependency installs before publish, and restore updates by rename instead of deleting the target path, reducing partial-replace and symlink-rebind risk during install failures.</li>
<li>Slack/local file upload allowlist parity: propagate <code>mediaLocalRoots</code> through the Slack send action pipeline so workspace-rooted attachments pass <code>assertLocalMediaAllowed</code> checks while non-allowlisted paths remain blocked. (synthesis: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030315558" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36656" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36656/hovercard" href="https://github.com/openclaw/openclaw/pull/36656">#36656</a>; overlap considered from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029691274" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36516" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36516/hovercard" href="https://github.com/openclaw/openclaw/pull/36516">#36516</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029602942" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36496" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36496/hovercard" href="https://github.com/openclaw/openclaw/pull/36496">#36496</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029576121" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36493" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36493/hovercard" href="https://github.com/openclaw/openclaw/pull/36493">#36493</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029542836" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36484" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36484/hovercard" href="https://github.com/openclaw/openclaw/pull/36484">#36484</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014971501" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32648" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32648/hovercard" href="https://github.com/openclaw/openclaw/pull/32648">#32648</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4007985843" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30888" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30888/hovercard" href="https://github.com/openclaw/openclaw/pull/30888">#30888</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2233admin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2233admin">@2233admin</a>.</li>
<li>Agents/compaction safeguard pre-check: skip embedded compaction before entering the Pi SDK when a session has no real conversation messages, avoiding unnecessary LLM API calls on idle sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029395251" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36451" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36451/hovercard" href="https://github.com/openclaw/openclaw/pull/36451">#36451</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Config/schema cache key stability: build merged schema cache keys with incremental hashing to avoid large single-string serialization and prevent <code>RangeError: Invalid string length</code> on high-cardinality plugin/channel metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030084320" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36603" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36603/hovercard" href="https://github.com/openclaw/openclaw/pull/36603">#36603</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/powermaster888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/powermaster888">@powermaster888</a>.</li>
<li>iMessage/cron completion announces: strip leaked inline reply tags (for example <code>[[reply_to:6100]]</code>) from user-visible completion text so announcement deliveries do not expose threading metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3978865795" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24600" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/24600/hovercard" href="https://github.com/openclaw/openclaw/issues/24600">#24600</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Control UI/iMessage duplicate reply routing: keep internal webchat turns on dispatcher delivery (instead of origin-channel reroute) so Control UI chats do not duplicate replies into iMessage, while preserving webchat-provider relayed routing for external surfaces. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018632520" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33483" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33483/hovercard" href="https://github.com/openclaw/openclaw/issues/33483">#33483</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alicexmolt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alicexmolt">@alicexmolt</a>.</li>
<li>Sessions/daily reset transcript archival: archive prior transcript files during stale-session scheduled/daily resets by capturing the previous session entry before rollover, preventing orphaned transcript files on disk. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025823371" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35493" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35493/hovercard" href="https://github.com/openclaw/openclaw/pull/35493">#35493</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/byungsker/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/byungsker">@byungsker</a>.</li>
<li>Feishu/group slash command detection: normalize group mention wrappers before command-authorization probing so mention-prefixed commands (for example <code>@Bot/model</code> and <code>@Bot /reset</code>) are recognized as gateway commands instead of being forwarded to the agent. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027596989" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35994" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/35994/hovercard" href="https://github.com/openclaw/openclaw/issues/35994">#35994</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Control UI/auth token separation: keep the shared gateway token in browser auth validation while reserving cached device tokens for signed device payloads, preventing false <code>device token mismatch</code> disconnects after restart/rotation. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032692837" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37382" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37382/hovercard" href="https://github.com/openclaw/openclaw/pull/37382">#37382</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FradSer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FradSer">@FradSer</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FradSer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FradSer">@FradSer</a>.</li>
<li>Gateway/browser auth reconnect hardening: stop counting missing token/password submissions as auth rate-limit failures, and stop auto-reconnecting Control UI clients on non-recoverable auth errors so misconfigured browser tabs no longer lock out healthy sessions. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038068989" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38725" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38725/hovercard" href="https://github.com/openclaw/openclaw/pull/38725">#38725</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Gateway/service token drift repair: stop persisting shared auth tokens into installed gateway service units, flag stale embedded service tokens for reinstall, and treat tokenless service env as canonical so token rotation/reboot flows stay aligned with config/env resolution. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999555909" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28428" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28428/hovercard" href="https://github.com/openclaw/openclaw/pull/28428">#28428</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/l0cka/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/l0cka">@l0cka</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/l0cka/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/l0cka">@l0cka</a>.</li>
<li>Control UI/agents-page selection: keep the edited agent selected after saving agent config changes and reloading the agents list, so <code>/agents</code> no longer snaps back to the default agent. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040026646" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39301" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39301/hovercard" href="https://github.com/openclaw/openclaw/pull/39301">#39301</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/auth follow-up hardening: preserve systemd <code>EnvironmentFile=</code> precedence/source provenance in daemon audits and doctor repairs, block shared-password override flows from piggybacking cached device tokens, and fail closed when config-first gateway SecretRefs cannot resolve. Follow-up to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039739948" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39241/hovercard" href="https://github.com/openclaw/openclaw/pull/39241">#39241</a>.</li>
<li>Agents/context pruning: guard assistant thinking/text char estimation against malformed blocks (missing <code>thinking</code>/<code>text</code> strings or null entries) so pruning no longer crashes with malformed provider content. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025061925" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35146" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35146/hovercard" href="https://github.com/openclaw/openclaw/pull/35146">#35146</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/transcript policy: set <code>preserveSignatures</code> to Anthropic-only handling in <code>resolveTranscriptPolicy</code> so Anthropic thinking signatures are preserved while non-Anthropic providers remain unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015492620" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32813" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32813/hovercard" href="https://github.com/openclaw/openclaw/pull/32813">#32813</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/schema cleaning: detect Venice + Grok model IDs as xAI-proxied targets so unsupported JSON Schema keywords are stripped before requests, preventing Venice/Grok <code>Invalid arguments</code> failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025497712" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35355" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35355/hovercard" href="https://github.com/openclaw/openclaw/pull/35355">#35355</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Skills/native command deduplication: centralize skill command dedupe by canonical <code>skillName</code> in <code>listSkillCommandsForAgents</code> so duplicate suffixed variants (for example <code>_2</code>) are no longer surfaced across interfaces outside Discord. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995325120" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27521" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27521/hovercard" href="https://github.com/openclaw/openclaw/pull/27521">#27521</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shivama205/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shivama205">@shivama205</a>.</li>
<li>Agents/xAI tool-call argument decoding: decode HTML-entity encoded xAI/Grok tool-call argument values (<code>&amp;</code>, <code>&quot;</code>, <code>&lt;</code>, <code>&gt;</code>, numeric entities) before tool execution so commands with shell operators and quotes no longer fail with parse errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025358796" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35276" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35276/hovercard" href="https://github.com/openclaw/openclaw/pull/35276">#35276</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Linux/WSL2 daemon install hardening: add regression coverage for WSL environment detection, WSL-specific systemd guidance, and <code>systemctl --user is-enabled</code> failure paths so WSL2/headless onboarding keeps treating bus-unavailable probes as non-fatal while preserving real permission errors. Related: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029600877" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36495" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36495/hovercard" href="https://github.com/openclaw/openclaw/issues/36495">#36495</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Linux/systemd status and degraded-session handling: treat degraded-but-reachable <code>systemctl --user status</code> results as available, preserve early errors for truly unavailable user-bus cases, and report externally managed running services as running instead of <code>not installed</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/thinking-tag promotion hardening: guard <code>promoteThinkingTagsToBlocks</code> against malformed assistant content entries (<code>null</code>/<code>undefined</code>) before <code>block.type</code> reads so malformed provider payloads no longer crash session processing while preserving pass-through behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025054148" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35143" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35143/hovercard" href="https://github.com/openclaw/openclaw/pull/35143">#35143</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Gateway/Control UI version reporting: align runtime and browser client version metadata to avoid <code>dev</code> placeholders, wait for bootstrap version before first UI websocket connect, and only forward bootstrap <code>serverVersion</code> to same-origin gateway targets to prevent cross-target version leakage. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025252741" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35230" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35230/hovercard" href="https://github.com/openclaw/openclaw/pull/35230">#35230</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008118441" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30928" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30928/hovercard" href="https://github.com/openclaw/openclaw/pull/30928">#30928</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019971325" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33928" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33928/hovercard" href="https://github.com/openclaw/openclaw/pull/33928">#33928</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joelnishanth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joelnishanth">@joelnishanth</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MoerAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MoerAI">@MoerAI</a>.</li>
<li>Control UI/markdown parser crash fallback: catch <code>marked.parse()</code> failures and fall back to escaped plain-text <code><pre></code> rendering so malformed recursive markdown no longer crashes Control UI session rendering on load. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029374534" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36445" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36445/hovercard" href="https://github.com/openclaw/openclaw/pull/36445">#36445</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BinHPdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BinHPdev">@BinHPdev</a>.</li>
<li>Control UI/markdown fallback regression coverage: add explicit regression assertions for parser-error fallback behavior so malformed markdown no longer risks reintroducing hard-crash rendering paths in future markdown/parser upgrades. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029374534" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36445" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36445/hovercard" href="https://github.com/openclaw/openclaw/pull/36445">#36445</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BinHPdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BinHPdev">@BinHPdev</a>.</li>
<li>Web UI/config form: treat <code>additionalProperties: true</code> object schemas as editable map entries instead of unsupported fields so Accounts-style maps stay editable in form mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025551328" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35380" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35380/hovercard" href="https://github.com/openclaw/openclaw/pull/35380">#35380</a>, supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012842878" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32072" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32072/hovercard" href="https://github.com/openclaw/openclaw/pull/32072">#32072</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Feishu/streaming card delivery synthesis: unify snapshot and delta streaming merge semantics, apply overlap-aware final merge, suppress duplicate final text delivery (including text+media final packets), prefer topic-thread <code>message.reply</code> routing when a reply target exists, and tune card print cadence to avoid duplicate incremental rendering. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017550560" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33245" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33245/hovercard" href="https://github.com/openclaw/openclaw/pull/33245">#33245</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015930946" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32896" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32896/hovercard" href="https://github.com/openclaw/openclaw/pull/32896">#32896</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019791597" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33840" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33840/hovercard" href="https://github.com/openclaw/openclaw/pull/33840">#33840</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rexl2018/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rexl2018">@rexl2018</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kcinzgg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kcinzgg">@kcinzgg</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aerelune/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aerelune">@aerelune</a>.</li>
<li>Feishu/group mention detection: carry startup-probed bot display names through monitor dispatch so <code>requireMention</code> checks compare against current bot identity instead of stale config names, fixing missed <code>@bot</code> handling in groups while preserving multi-bot false-positive guards. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028836237" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36317" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36317/hovercard" href="https://github.com/openclaw/openclaw/issues/36317">#36317</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021111936" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34271" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/34271/hovercard" href="https://github.com/openclaw/openclaw/issues/34271">#34271</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Security/dependency audit: patch transitive Hono vulnerabilities by pinning <code>hono</code> to <code>4.12.5</code> and <code>@hono/node-server</code> to <code>1.19.10</code> in production resolution paths. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shakkernerd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shakkernerd">@shakkernerd</a>.</li>
<li>Security/dependency audit: bump <code>tar</code> to <code>7.5.10</code> (from <code>7.5.9</code>) to address the high-severity hardlink path traversal advisory (<code>GHSA-qffp-2rhf-9h96</code>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shakkernerd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shakkernerd">@shakkernerd</a>.</li>
<li>Cron/announce delivery robustness: bypass pending-descendant announce guards for cron completion sends, ensure named-agent announce routes have outbound session entries, and fall back to direct delivery only when an announce send was actually attempted and failed. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025137128" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35185/hovercard" href="https://github.com/openclaw/openclaw/pull/35185">#35185</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014378867" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32443" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32443/hovercard" href="https://github.com/openclaw/openclaw/pull/32443">#32443</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024188297" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34987" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34987/hovercard" href="https://github.com/openclaw/openclaw/pull/34987">#34987</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Cron/announce best-effort fallback: run direct outbound fallback after attempted announce failures even when delivery is configured as best-effort, so Telegram cron sends are not left as attempted-but-undelivered after <code>cron announce delivery failed</code> warnings.</li>
<li>Auto-reply/system events: restore runtime system events to the message timeline (<code>System:</code> lines), preserve think-hint parsing with prepended events, and carry events into deferred followup/collect/steer-backlog prompts to keep cache behavior stable without dropping queued metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023311368" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34794" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34794/hovercard" href="https://github.com/openclaw/openclaw/pull/34794">#34794</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anisoptera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anisoptera">@anisoptera</a>.</li>
<li>Security/audit account handling: avoid prototype-chain account IDs in audit validation by using own-property checks for <code>accounts</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024115607" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34982" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34982/hovercard" href="https://github.com/openclaw/openclaw/pull/34982">#34982</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HOYALIM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HOYALIM">@HOYALIM</a>.</li>
<li>Cron/restart catch-up semantics: replay interrupted recurring jobs and missed immediate cron slots on startup without replaying interrupted one-shot jobs, with guarded missed-slot probing to avoid malformed-schedule startup aborts and duplicate-trigger drift after restart. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021997493" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34466" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34466/hovercard" href="https://github.com/openclaw/openclaw/pull/34466">#34466</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023628470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34896" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34896/hovercard" href="https://github.com/openclaw/openclaw/pull/34896">#34896</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022654501" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34625" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34625/hovercard" href="https://github.com/openclaw/openclaw/pull/34625">#34625</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017424073" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33206" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33206/hovercard" href="https://github.com/openclaw/openclaw/pull/33206">#33206</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Octane0411/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Octane0411">@Octane0411</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Venice/provider onboarding hardening: align per-model Venice completion-token limits with discovery metadata, clamp untrusted discovery values to safe bounds, sync the static Venice fallback catalog with current live model metadata, and disable tool wiring for Venice models that do not support function calling so default Venice setups no longer fail with <code>max_completion_tokens</code> or unsupported-tools 400s. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035167179" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38168" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38168/hovercard" href="https://github.com/openclaw/openclaw/issues/38168">#38168</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/powermaster888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/powermaster888">@powermaster888</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/session usage tracking: preserve accumulated usage metadata on embedded Pi runner error exits so failed turns still update session <code>totalTokens</code> from real usage instead of stale prior values. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021123135" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34275" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34275/hovercard" href="https://github.com/openclaw/openclaw/pull/34275">#34275</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RealKai42/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/RealKai42">@RealKai42</a>.</li>
<li>Slack/reaction thread context routing: carry Slack native DM channel IDs through inbound context and threading tool resolution so reaction targets resolve consistently for DM <code>To=user:*</code> sessions (including <code>toolContext.currentChannelId</code> fallback behavior). (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023390440" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34831" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34831/hovercard" href="https://github.com/openclaw/openclaw/pull/34831">#34831</a>; overlaps <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021870066" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34440" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34440/hovercard" href="https://github.com/openclaw/openclaw/pull/34440">#34440</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022135887" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34502" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34502/hovercard" href="https://github.com/openclaw/openclaw/pull/34502">#34502</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022070764" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34483" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34483/hovercard" href="https://github.com/openclaw/openclaw/pull/34483">#34483</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015323116" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32754" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32754/hovercard" href="https://github.com/openclaw/openclaw/pull/32754">#32754</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>.</li>
<li>Subagents/announce completion scoping: scope nested direct-child completion aggregation to the current requester run window, harden frozen completion capture for deterministic descendant synthesis, and route completion announce delivery through parent-agent announce turns with provenance-aware internal events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024850889" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35080" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35080/hovercard" href="https://github.com/openclaw/openclaw/pull/35080">#35080</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyler6204/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyler6204">@tyler6204</a>.</li>
<li>Nodes/system.run approval hardening: use explicit argv-mutation signaling when regenerating prepared <code>rawCommand</code>, and cover the <code>system.run.prepare -> system.run</code> handoff so direct PATH-based <code>nodes.run</code> commands no longer fail with <code>rawCommand does not match command</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017163036" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33137" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33137/hovercard" href="https://github.com/openclaw/openclaw/pull/33137">#33137</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Models/custom provider headers: propagate <code>models.providers.<name>.headers</code> across inline, fallback, and registry-found model resolution so header-authenticated proxies consistently receive configured request headers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995086343" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27490" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27490/hovercard" href="https://github.com/openclaw/openclaw/pull/27490">#27490</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Ollama/remote provider auth fallback: synthesize a local runtime auth key for explicitly configured <code>models.providers.ollama</code> entries that omit <code>apiKey</code>, so remote Ollama endpoints run without requiring manual dummy-key setup while preserving env/profile/config key precedence and missing-config failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3910750828" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/11283" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/11283/hovercard" href="https://github.com/openclaw/openclaw/issues/11283">#11283</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cpreecs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cpreecs">@cpreecs</a>.</li>
<li>Ollama/custom provider headers: forward resolved model headers into native Ollama stream requests so header-authenticated Ollama proxies receive configured request headers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3977052950" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/24337/hovercard" href="https://github.com/openclaw/openclaw/pull/24337">#24337</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/echoVic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/echoVic">@echoVic</a>.</li>
<li>Ollama/compaction and summarization: register custom <code>api: "ollama"</code> handling for compaction, branch-style internal summarization, and TTS text summarization on current <code>main</code>, so native Ollama models no longer fail with <code>No API provider registered for api: ollama</code> outside the main run loop. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JaviLib/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JaviLib">@JaviLib</a>.</li>
<li>Daemon/systemd install robustness: treat <code>systemctl --user is-enabled</code> exit-code-4 <code>not-found</code> responses as not-enabled by combining stderr/stdout detail parsing, so Ubuntu fresh installs no longer fail with <code>systemctl is-enabled unavailable</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019276589" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33634" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33634/hovercard" href="https://github.com/openclaw/openclaw/pull/33634">#33634</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Yuandiaodiaodiao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Yuandiaodiaodiao">@Yuandiaodiaodiao</a>.</li>
<li>Slack/system-event session routing: resolve reaction/member/pin/interaction system-event session keys through channel/account bindings (with sender-aware DM routing) so inbound Slack events target the correct agent session in multi-account setups instead of defaulting to <code>agent:main</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020308598" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34045" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34045/hovercard" href="https://github.com/openclaw/openclaw/pull/34045">#34045</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paulomcg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paulomcg">@paulomcg</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/daht-mad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/daht-mad">@daht-mad</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Slack/native streaming markdown conversion: stop pre-normalizing text passed to Slack native <code>markdown_text</code> in streaming start/append/stop paths to prevent Markdown style corruption from double conversion. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023791419" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34931" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34931/hovercard" href="https://github.com/openclaw/openclaw/pull/34931">#34931</a>)</li>
<li>Gateway/HTTP tools invoke media compatibility: preserve raw media payload access for direct <code>/tools/invoke</code> clients by allowing media <code>nodes</code> invoke commands only in HTTP tool context, while keeping agent-context media invoke blocking to prevent base64 prompt bloat. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021536787" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34365" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34365/hovercard" href="https://github.com/openclaw/openclaw/pull/34365">#34365</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Security/archive ZIP hardening: extract ZIP entries via same-directory temp files plus atomic rename, then re-open and reject post-rename hardlink alias races outside the destination root.</li>
<li>Agents/Nodes media outputs: add dedicated <code>photos_latest</code> action handling, block media-returning <code>nodes invoke</code> commands, keep metadata-only <code>camera.list</code> invoke allowed, and normalize empty <code>photos_latest</code> results to a consistent response shape to prevent base64 context bloat. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021385666" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34332" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34332/hovercard" href="https://github.com/openclaw/openclaw/pull/34332">#34332</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>TUI/session-key canonicalization: normalize <code>openclaw tui --session</code> values to lowercase so uppercase session names no longer drop real-time streaming updates due to gateway/TUI key mismatches. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019856186" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33866" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33866/hovercard" href="https://github.com/openclaw/openclaw/issues/33866">#33866</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020243097" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34013" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34013/hovercard" href="https://github.com/openclaw/openclaw/pull/34013">#34013</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lynnzc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lynnzc">@lynnzc</a>.</li>
<li>iMessage/echo loop hardening: strip leaked assistant-internal scaffolding from outbound iMessage replies, drop reflected assistant-content messages before they re-enter inbound processing, extend echo-cache text retention for delayed reflections, and suppress repeated loop traffic before it amplifies into queue overflow. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017765046" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33295" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33295/hovercard" href="https://github.com/openclaw/openclaw/pull/33295">#33295</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joelnishanth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joelnishanth">@joelnishanth</a>.</li>
<li>Skills/workspace boundary hardening: reject workspace and extra-dir skill roots or <code>SKILL.md</code> files whose realpath escapes the configured source root, and skip syncing those escaped skills into sandbox workspaces.</li>
<li>Outbound/send config threading: pass resolved SecretRef config through outbound adapters and helper send paths so send flows do not reload unresolved runtime config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020153706" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33987" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33987/hovercard" href="https://github.com/openclaw/openclaw/pull/33987">#33987</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>gateway: harden shared auth resolution across systemd, discord, and node host (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039739948" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39241/hovercard" href="https://github.com/openclaw/openclaw/pull/39241">#39241</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Secrets/models.json persistence hardening: keep SecretRef-managed api keys + headers from persisting in generated models.json, expand audit/apply coverage, and harden marker handling/serialization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038699562" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38955" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38955/hovercard" href="https://github.com/openclaw/openclaw/pull/38955">#38955</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Sessions/subagent attachments: remove <code>attachments[].content.maxLength</code> from <code>sessions_spawn</code> schema to avoid llama.cpp GBNF repetition overflow, and preflight UTF-8 byte size before buffer allocation while keeping runtime file-size enforcement unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019311194" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33648" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33648/hovercard" href="https://github.com/openclaw/openclaw/pull/33648">#33648</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anisoptera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anisoptera">@anisoptera</a>.</li>
<li>Runtime/tool-state stability: recover from dangling Anthropic <code>tool_use</code> after compaction, serialize long-running Discord handler runs without blocking new inbound events, and prevent stale busy snapshots from suppressing stuck-channel recovery. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019251568" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33630/hovercard" href="https://github.com/openclaw/openclaw/pull/33630">#33630</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019088183" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33583" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33583/hovercard" href="https://github.com/openclaw/openclaw/pull/33583">#33583</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinWangSheng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinWangSheng">@kevinWangSheng</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/theotarr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/theotarr">@theotarr</a>.</li>
<li>ACP/Discord startup hardening: clean up stuck ACP worker children on gateway restart, unbind stale ACP thread bindings during Discord startup reconciliation, and add per-thread listener watchdog timeouts so wedged turns cannot block later messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019470850" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33699" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33699/hovercard" href="https://github.com/openclaw/openclaw/pull/33699">#33699</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>Extensions/media local-root propagation: consistently forward <code>mediaLocalRoots</code> through extension <code>sendMedia</code> adapters (Google Chat, Slack, iMessage, Signal, WhatsApp), preserving non-local media behavior while restoring local attachment resolution from configured roots. Synthesis of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019086647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33581" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33581/hovercard" href="https://github.com/openclaw/openclaw/pull/33581">#33581</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018984148" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33545" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33545/hovercard" href="https://github.com/openclaw/openclaw/pull/33545">#33545</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018974981" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33540" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33540/hovercard" href="https://github.com/openclaw/openclaw/pull/33540">#33540</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018964929" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33536" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33536/hovercard" href="https://github.com/openclaw/openclaw/pull/33536">#33536</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018937294" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33528" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33528/hovercard" href="https://github.com/openclaw/openclaw/pull/33528">#33528</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Gateway/plugin HTTP auth hardening: require gateway auth when any overlapping matched route needs it, block mixed-auth fallthrough at dispatch, and reject mixed-auth exact/prefix route overlaps during plugin registration.</li>
<li>Feishu/video media send contract: keep mp4-like outbound payloads on <code>msg_type: "media"</code> (including reply and reply-in-thread paths) so videos render as media instead of degrading to file-link behavior, while preserving existing non-video file subtype handling. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019505587" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33720" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33720/hovercard" href="https://github.com/openclaw/openclaw/pull/33720">#33720</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019719481" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33808" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33808/hovercard" href="https://github.com/openclaw/openclaw/pull/33808">#33808</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019389385" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33678" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33678/hovercard" href="https://github.com/openclaw/openclaw/pull/33678">#33678</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/polooooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/polooooo">@polooooo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dingjianrui/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dingjianrui">@dingjianrui</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinWangSheng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinWangSheng">@kevinWangSheng</a>.</li>
<li>Gateway/security default response headers: add <code>Permissions-Policy: camera=(), microphone=(), geolocation=()</code> to baseline gateway HTTP security headers for all responses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005858552" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30186" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30186/hovercard" href="https://github.com/openclaw/openclaw/pull/30186">#30186</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/habakan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/habakan">@habakan</a>.</li>
<li>Plugins/startup loading: lazily initialize plugin runtime, split startup-critical plugin SDK imports into <code>openclaw/plugin-sdk/core</code> and <code>openclaw/plugin-sdk/telegram</code>, and preserve <code>api.runtime</code> reflection semantics for plugin compatibility. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000493376" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28620" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28620/hovercard" href="https://github.com/openclaw/openclaw/pull/28620">#28620</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hmemcpy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hmemcpy">@hmemcpy</a>.</li>
<li>Plugins/startup performance: reduce bursty plugin discovery/manifest overhead with short in-process caches, skip importing bundled memory plugins that are disabled by slot selection, and speed legacy root <code>openclaw/plugin-sdk</code> compatibility via runtime root-alias routing while preserving backward compatibility. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Build/lazy runtime boundaries: replace ineffective dynamic import sites with dedicated lazy runtime boundaries across Slack slash handling, Telegram audit, CLI send deps, memory fallback, and outbound delivery paths while preserving behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019418279" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33690" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33690/hovercard" href="https://github.com/openclaw/openclaw/pull/33690">#33690</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Gateway/password CLI hardening: add <code>openclaw gateway run --password-file</code>, warn when inline <code>--password</code> is used because it can leak via process listings, and document env/file-backed password input as the preferred startup path. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997891470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27948" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27948/hovercard" href="https://github.com/openclaw/openclaw/issues/27948">#27948</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vibewrk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vibewrk">@vibewrk</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Config/heartbeat legacy-path handling: auto-migrate top-level <code>heartbeat</code> into <code>agents.defaults.heartbeat</code> (with merge semantics that preserve explicit defaults), and keep startup failures on non-migratable legacy entries in the detailed invalid-config path instead of generic migration-failed errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015194071" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32706" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32706/hovercard" href="https://github.com/openclaw/openclaw/pull/32706">#32706</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xiwan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xiwan">@xiwan</a>.</li>
<li>Plugins/SDK subpath parity: expand plugin SDK subpaths across bundled channels/extensions (Discord, Slack, Signal, iMessage, WhatsApp, LINE, and bundled companion plugins), with build/export/type/runtime wiring so scoped imports resolve consistently in source and dist while preserving compatibility. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019555828" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33737" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33737/hovercard" href="https://github.com/openclaw/openclaw/pull/33737">#33737</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Google/Gemini Flash model selection: switch built-in <code>gemini-flash</code> defaults and docs/examples from the nonexistent <code>google/gemini-3.1-flash-preview</code> ID to the working <code>google/gemini-3-flash-preview</code>, while normalizing legacy OpenClaw config that still uses the old Flash 3.1 alias.</li>
<li>Plugins/bundled scoped-import migration: migrate bundled plugins from monolithic <code>openclaw/plugin-sdk</code> imports to scoped subpaths (or <code>openclaw/plugin-sdk/core</code>) across registration and startup-sensitive runtime files, add CI/release guardrails to prevent regressions, and keep root <code>openclaw/plugin-sdk</code> support for external/community plugins. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Routing/session duplicate suppression synthesis: align shared session delivery-context inheritance, channel-paired route-field merges, and reply-surface target matching so dmScope=main turns avoid cross-surface duplicate replies while thread-aware forwarding keeps intended routing semantics. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019248841" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33629" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33629/hovercard" href="https://github.com/openclaw/openclaw/pull/33629">#33629</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992008730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26889" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26889/hovercard" href="https://github.com/openclaw/openclaw/pull/26889">#26889</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3944516926" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17337/hovercard" href="https://github.com/openclaw/openclaw/pull/17337">#17337</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017573265" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33250" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33250/hovercard" href="https://github.com/openclaw/openclaw/pull/33250">#33250</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Yuandiaodiaodiao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Yuandiaodiaodiao">@Yuandiaodiaodiao</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinwildenradt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinwildenradt">@kevinwildenradt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Routing/legacy session route inheritance: preserve external route metadata inheritance for legacy channel session keys (<code>agent:<agent>:<channel>:<peer></code> and <code>...:thread:<id></code>) so <code>chat.send</code> does not incorrectly fall back to webchat when valid delivery context exists. Follow-up to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019674027" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33786" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33786/hovercard" href="https://github.com/openclaw/openclaw/pull/33786">#33786</a>.</li>
<li>Routing/legacy route guard tightening: require legacy session-key channel hints to match the saved delivery channel before inheriting external routing metadata, preventing custom namespaced keys like <code>agent:<agent>:work:<ticket></code> from inheriting stale non-webchat routes.</li>
<li>Gateway/internal client routing continuity: prevent webchat/TUI/UI turns from inheriting stale external reply routes by requiring explicit <code>deliver: true</code> for external delivery, keeping main-session external inheritance scoped to non-Webchat/UI clients, and honoring configured <code>session.mainKey</code> when identifying main-session continuity. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025440908" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35321" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35321/hovercard" href="https://github.com/openclaw/openclaw/pull/35321">#35321</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022703535" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34635" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34635/hovercard" href="https://github.com/openclaw/openclaw/pull/34635">#34635</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025498457" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35356" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35356/hovercard" href="https://github.com/openclaw/openclaw/pull/35356">#35356</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alexyyyander/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alexyyyander">@alexyyyander</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Octane0411/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Octane0411">@Octane0411</a>.</li>
<li>Security/auth labels: remove token and API-key snippets from user-facing auth status labels so <code>/status</code> and <code>/models</code> do not expose credential fragments. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017639745" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33262" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33262/hovercard" href="https://github.com/openclaw/openclaw/pull/33262">#33262</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cu1ch3n/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cu1ch3n">@cu1ch3n</a>.</li>
<li>Models/MiniMax portal vision routing: add <code>MiniMax-VL-01</code> to the <code>minimax-portal</code> provider, route portal image understanding through the MiniMax VLM endpoint, and align media auto-selection plus Telegram sticker description with the shared portal image provider path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020060518" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33953" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33953/hovercard" href="https://github.com/openclaw/openclaw/pull/33953">#33953</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tars90percent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tars90percent">@tars90percent</a>.</li>
<li>Auth/credential semantics: align profile eligibility + probe diagnostics with SecretRef/expiry rules and harden browser download atomic writes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019552839" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33733" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33733/hovercard" href="https://github.com/openclaw/openclaw/pull/33733">#33733</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Security/audit denyCommands guidance: suggest likely exact node command IDs for unknown <code>gateway.nodes.denyCommands</code> entries so ineffective denylist entries are easier to correct. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004508544" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29713" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29713/hovercard" href="https://github.com/openclaw/openclaw/pull/29713">#29713</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liquidhorizon88-bot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liquidhorizon88-bot">@liquidhorizon88-bot</a>.</li>
<li>Agents/overload failover handling: classify overloaded provider failures separately from rate limits/status timeouts, add short overload backoff before retry/failover, record overloaded prompt/assistant failures as transient auth-profile cooldowns (with probeable same-provider fallback) instead of treating them like persistent auth/billing failures, and keep one-shot cron retry classification aligned so overloaded fallback summaries still count as transient retries.</li>
<li>Docs/security hardening guidance: document Docker <code>DOCKER-USER</code> + UFW policy and add cross-linking from Docker install docs for VPS/public-host setups. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995802242" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27613" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27613/hovercard" href="https://github.com/openclaw/openclaw/pull/27613">#27613</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dorukardahan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dorukardahan">@dorukardahan</a>.</li>
<li>Docs/security threat-model links: replace relative <code>.md</code> links with Mintlify-compatible root-relative routes in security docs to prevent broken internal navigation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996286802" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27698" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27698/hovercard" href="https://github.com/openclaw/openclaw/pull/27698">#27698</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/clawdoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/clawdoo">@clawdoo</a>.</li>
<li>Plugins/Update integrity drift: avoid false integrity drift prompts when updating npm-installed plugins from unpinned specs, while keeping drift checks for exact pinned versions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032164519" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37179" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37179/hovercard" href="https://github.com/openclaw/openclaw/pull/37179">#37179</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>iOS/Voice timing safety: guard system speech start/finish callbacks to the active utterance to avoid misattributed start events during rapid stop/restart cycles. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017813987" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33304" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33304/hovercard" href="https://github.com/openclaw/openclaw/pull/33304">#33304</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>; original implementation direction by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Gateway/chat.send command scopes: require <code>operator.admin</code> for persistent <code>/config set|unset</code> writes routed through gateway chat clients while keeping <code>/config show</code> available to normal write-scoped operator clients, preserving messaging-channel config command behavior without widening RPC write scope into admin config mutation. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>iOS/Talk incremental speech pacing: allow long punctuation-free assistant chunks to start speaking at safe whitespace boundaries so voice responses begin sooner instead of waiting for terminal punctuation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017815354" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33305" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33305/hovercard" href="https://github.com/openclaw/openclaw/pull/33305">#33305</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>; original implementation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>iOS/Watch reply reliability: make watch session activation waiters robust under concurrent requests so status/send calls no longer hang intermittently, and align delegate callbacks with Swift 6 actor safety. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017816307" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33306" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33306/hovercard" href="https://github.com/openclaw/openclaw/pull/33306">#33306</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>; original implementation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Rocuts/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Rocuts">@Rocuts</a>.</li>
<li>Docs/tool-loop detection config keys: align <code>docs/tools/loop-detection.md</code> examples and field names with the current <code>tools.loopDetection</code> schema to prevent copy-paste validation failures from outdated keys. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017319797" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33182" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33182/hovercard" href="https://github.com/openclaw/openclaw/pull/33182">#33182</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mylszd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mylszd">@Mylszd</a>.</li>
<li>Gateway/session agent discovery: include disk-scanned agent IDs in <code>listConfiguredAgentIds</code> even when <code>agents.list</code> is configured, so disk-only/ACP agent sessions remain visible in gateway session aggregation and listings. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015558496" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32831" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32831/hovercard" href="https://github.com/openclaw/openclaw/pull/32831">#32831</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Discord/inbound debouncer: skip bot-own MESSAGE_CREATE events before they reach the debounce queue to avoid self-triggered slowdowns in busy servers. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/Agent-scoped media roots: pass <code>mediaLocalRoots</code> through Discord monitor reply delivery (message + component interaction paths) so local media attachments honor per-agent workspace roots instead of falling back to default global roots. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/slash command handling: intercept text-based slash commands in channels, register plugin commands as native, and send fallback acknowledgments for empty slash runs so interactions do not hang. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/thread session lifecycle: reset thread-scoped sessions when a thread is archived so reopening a thread starts fresh without deleting transcript history. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/presence defaults: send an online presence update on ready when no custom presence is configured so bots no longer appear offline by default. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/typing cleanup: stop typing indicators after silent/NO_REPLY runs by marking the run complete before dispatch idle cleanup. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>ACP/sandbox spawn parity: block <code>/acp spawn</code> from sandboxed requester sessions with the same host-runtime guard already enforced for <code>sessions_spawn({ runtime: "acp" })</code>, preserving non-sandbox ACP flows while closing the command-path policy gap. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/patte/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/patte">@patte</a>.</li>
<li>Discord/config SecretRef typing: align Discord account token config typing with SecretInput so SecretRef tokens typecheck. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014507276" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32490" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32490/hovercard" href="https://github.com/openclaw/openclaw/pull/32490">#32490</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Discord/voice messages: request upload slots with JSON fetch calls so voice message uploads no longer fail with content-type errors. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/voice decoder fallback: drop the native Opus dependency and use opusscript for voice decoding to avoid native-opus installs. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/auto presence health signal: add runtime availability-driven presence updates plus connected-state reporting to improve health monitoring and operator visibility. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017687201" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33277" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33277/hovercard" href="https://github.com/openclaw/openclaw/pull/33277">#33277</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>HEIC image inputs: accept HEIC/HEIF <code>input_image</code> sources in Gateway HTTP APIs, normalize them to JPEG before provider delivery, and document the expanded default MIME allowlist. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/HEIC input follow-up: keep non-HEIC <code>input_image</code> MIME handling unchanged, make HEIC tests hermetic, and enforce chat-completions <code>maxTotalImageBytes</code> against post-normalization image payload size. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/draft-stream boundary stability: materialize DM draft previews at assistant-message/tool boundaries, serialize lane-boundary callbacks before final delivery, and scope preview cleanup to the active preview so multi-step Telegram streams no longer lose, overwrite, or leave stale preview bubbles. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019797532" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33842" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33842/hovercard" href="https://github.com/openclaw/openclaw/pull/33842">#33842</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Telegram/DM draft finalization reliability: require verified final-text draft emission before treating preview finalization as delivered, and fall back to normal payload send when final draft delivery is not confirmed (preventing missing final responses and preserving media/button delivery). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013038836" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32118" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32118/hovercard" href="https://github.com/openclaw/openclaw/pull/32118">#32118</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OpenCils/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OpenCils">@OpenCils</a>.</li>
<li>Telegram/DM draft final delivery: materialize text-only <code>sendMessageDraft</code> previews into one permanent final message and skip duplicate final payload sends, while preserving fallback behavior when materialization fails. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021324721" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34318" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34318/hovercard" href="https://github.com/openclaw/openclaw/pull/34318">#34318</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Brotherinlaw-13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Brotherinlaw-13">@Brotherinlaw-13</a>.</li>
<li>Telegram/DM draft duplicate display: clear stale DM draft previews after materializing the real final message, including threadless fallback when DM topic lookup fails, so partial streaming no longer briefly shows duplicate replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030753777" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36746" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36746/hovercard" href="https://github.com/openclaw/openclaw/pull/36746">#36746</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joelnishanth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joelnishanth">@joelnishanth</a>.</li>
<li>Telegram/draft preview boundary + silent-token reliability: stabilize answer-lane message boundaries across late-partial/message-start races, preserve/reset finalized preview state at the correct boundaries, and suppress <code>NO_REPLY</code> lead-fragment leaks without broad heartbeat-prefix false positives. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017266196" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33169" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33169/hovercard" href="https://github.com/openclaw/openclaw/pull/33169">#33169</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/native commands <code>commands.allowFrom</code> precedence: make native Telegram commands honor <code>commands.allowFrom</code> as the command-specific authorization source, including group chats, instead of falling back to channel sender allowlists. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998816001" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28216" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28216/hovercard" href="https://github.com/openclaw/openclaw/issues/28216">#28216</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/toolsbybuddy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/toolsbybuddy">@toolsbybuddy</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/<code>groupAllowFrom</code> sender-ID validation: restore sender-only runtime validation so negative chat/group IDs remain invalid entries instead of appearing accepted while still being unable to authorize group access. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032069489" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37134" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37134/hovercard" href="https://github.com/openclaw/openclaw/pull/37134">#37134</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/qiuyuemartin-max/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/qiuyuemartin-max">@qiuyuemartin-max</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/native group command auth: authorize native commands in groups and forum topics against <code>groupAllowFrom</code> and per-group/topic sender overrides, while keeping auth rejection replies in the originating topic thread. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039895144" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39267" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39267/hovercard" href="https://github.com/openclaw/openclaw/pull/39267">#39267</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/edwluo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/edwluo">@edwluo</a>.</li>
<li>Telegram/named-account DMs: restore non-default-account DM routing when a named Telegram account falls back to the default agent by keeping groups fail-closed but deriving a per-account session key for DMs, including identity-link canonicalization and regression coverage for account isolation. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014310519" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32426" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32426/hovercard" href="https://github.com/openclaw/openclaw/pull/32426">#32426</a>; fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014061031" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32351" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/32351/hovercard" href="https://github.com/openclaw/openclaw/issues/32351">#32351</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Discord/audit wildcard warnings: ignore "*" wildcard keys when counting unresolved guild channels so doctor/status no longer warns on allow-all configs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017122180" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33125" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33125/hovercard" href="https://github.com/openclaw/openclaw/pull/33125">#33125</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/channel resolution: default bare numeric recipients to channels, harden allowlist numeric ID handling with safe fallbacks, and avoid inbound WS heartbeat stalls. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017170163" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33142" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33142/hovercard" href="https://github.com/openclaw/openclaw/pull/33142">#33142</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/chunk delivery reliability: preserve chunk ordering when using a REST client and retry chunk sends on 429/5xx using account retry settings. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017482382" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33226" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33226/hovercard" href="https://github.com/openclaw/openclaw/pull/33226">#33226</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/mention handling: add id-based mention formatting + cached rewrites, resolve inbound mentions to display names, and add optional ignoreOtherMentions gating (excluding @everyone/<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/here/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/here">@here</a>). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017480663" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33224" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33224/hovercard" href="https://github.com/openclaw/openclaw/pull/33224">#33224</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/media SSRF allowlist: allow Discord CDN hostnames (including wildcard domains) in inbound media SSRF policy to prevent proxy/VPN fake-ip blocks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017685198" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33275" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33275/hovercard" href="https://github.com/openclaw/openclaw/pull/33275">#33275</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Telegram/device pairing notifications: auto-arm one-shot notify on <code>/pair qr</code>, auto-ping on new pairing requests, and add manual fallback via <code>/pair approve latest</code> if the ping does not arrive. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017778099" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33299" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33299/hovercard" href="https://github.com/openclaw/openclaw/pull/33299">#33299</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Exec heartbeat routing: scope exec-triggered heartbeat wakes to agent session keys so unrelated agents are no longer awakened by exec events, while preserving legacy unscoped behavior for non-canonical session keys. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015223349" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32724" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32724/hovercard" href="https://github.com/openclaw/openclaw/pull/32724">#32724</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a></li>
<li>macOS/Tailscale remote gateway discovery: add a Tailscale Serve fallback peer probe path (<code>wss://<peer>.ts.net</code>) when Bonjour and wide-area DNS-SD discovery return no gateways, and refresh both discovery paths from macOS onboarding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015702286" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32860" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32860/hovercard" href="https://github.com/openclaw/openclaw/pull/32860">#32860</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>iOS/Gateway keychain hardening: move gateway metadata and TLS fingerprints to device keychain storage with safer migration behavior and rollback-safe writes to reduce credential loss risk during upgrades. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016598270" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33029" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33029/hovercard" href="https://github.com/openclaw/openclaw/pull/33029">#33029</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>iOS/Concurrency stability: replace risky shared-state access in camera and gateway connection paths with lock-protected access patterns to reduce crash risk under load. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017534769" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33241/hovercard" href="https://github.com/openclaw/openclaw/pull/33241">#33241</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>iOS/Security guardrails: limit production API-key sourcing to app config and make deep-link confirmation prompts safer by coalescing queued requests instead of silently dropping them. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016598707" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33031" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33031/hovercard" href="https://github.com/openclaw/openclaw/pull/33031">#33031</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>iOS/TTS playback fallback: keep voice playback resilient by switching from PCM to MP3 when provider format support is unavailable, while avoiding sticky fallback on generic local playback errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016598918" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33032" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33032/hovercard" href="https://github.com/openclaw/openclaw/pull/33032">#33032</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Plugin outbound/text-only adapter compatibility: allow direct-delivery channel plugins that only implement <code>sendText</code> (without <code>sendMedia</code>) to remain outbound-capable, gracefully fall back to text delivery for media payloads when <code>sendMedia</code> is absent, and fail explicitly for media-only payloads with no text fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015424839" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32788" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32788/hovercard" href="https://github.com/openclaw/openclaw/pull/32788">#32788</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Telegram/multi-account default routing clarity: warn only for ambiguous (2+) account setups without an explicit default, add <code>openclaw doctor</code> warnings for missing/invalid multi-account defaults across channels, and document explicit-default guidance for channel routing and Telegram config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014667643" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32544" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32544/hovercard" href="https://github.com/openclaw/openclaw/pull/32544">#32544</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Telegram/plugin outbound hook parity: run <code>message_sending</code> + <code>message_sent</code> in Telegram reply delivery, include reply-path hook metadata (<code>mediaUrls</code>, <code>threadId</code>), and report <code>message_sent.success=false</code> when hooks blank text and no outbound message is delivered. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014971754" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32649" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32649/hovercard" href="https://github.com/openclaw/openclaw/pull/32649">#32649</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KimGLee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KimGLee">@KimGLee</a>.</li>
<li>CLI/Coding-agent reliability: switch default <code>claude-cli</code> non-interactive args to <code>--permission-mode bypassPermissions</code>, auto-normalize legacy <code>--dangerously-skip-permissions</code> backend overrides to the modern permission-mode form, align coding-agent + live-test docs with the non-PTY Claude path, and emit session system-event heartbeat notices when CLI watchdog no-output timeouts terminate runs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000413702" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28610" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28610/hovercard" href="https://github.com/openclaw/openclaw/pull/28610">#28610</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008824106" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31149" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31149/hovercard" href="https://github.com/openclaw/openclaw/pull/31149">#31149</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020357755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34055/hovercard" href="https://github.com/openclaw/openclaw/pull/34055">#34055</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/niceysam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/niceysam">@niceysam</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cryptomaltese/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cryptomaltese">@cryptomaltese</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/OpenAI chat completions: parse active-turn <code>image_url</code> content parts (including parameterized data URIs and guarded URL sources), forward them as multimodal <code>images</code>, accept image-only user turns, enforce per-request image-part/byte budgets, default URL-based image fetches to disabled unless explicitly enabled by config, and redact image base64 data in cache-trace/provider payload diagnostics. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945610483" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17685" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/17685/hovercard" href="https://github.com/openclaw/openclaw/issues/17685">#17685</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a></li>
<li>ACP/ACPX session bootstrap: retry with <code>sessions new</code> when <code>sessions ensure</code> returns no session identifiers so ACP spawns avoid <code>NO_SESSION</code>/<code>ACP_TURN_FAILED</code> failures on affected agents. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001302335" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28786" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28786/hovercard" href="https://github.com/openclaw/openclaw/issues/28786">#28786</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009442200" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31338/hovercard" href="https://github.com/openclaw/openclaw/pull/31338">#31338</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020357755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34055/hovercard" href="https://github.com/openclaw/openclaw/pull/34055">#34055</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>ACP/sessions_spawn parent stream visibility: add <code>streamTo: "parent"</code> for <code>runtime: "acp"</code> to forward initial child-run progress/no-output/completion updates back into the requester session as system events (instead of direct child delivery), and emit a tail-able session-scoped relay log (<code><sessionId>.acp-stream.jsonl</code>, returned as <code>streamLogPath</code> when available), improving orchestrator visibility for blocked or long-running harness turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021253879" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34310" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34310/hovercard" href="https://github.com/openclaw/openclaw/pull/34310">#34310</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004945759" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29909" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/29909/hovercard" href="https://github.com/openclaw/openclaw/issues/29909">#29909</a>; reopened from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020357755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34055/hovercard" href="https://github.com/openclaw/openclaw/pull/34055">#34055</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/bootstrap truncation warning handling: unify bootstrap budget/truncation analysis across embedded + CLI runtime, <code>/context</code>, and <code>openclaw doctor</code>; add <code>agents.defaults.bootstrapPromptTruncationWarning</code> (<code>off|once|always</code>, default <code>once</code>) and persist warning-signature metadata so truncation warnings are consistent and deduped across turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015370814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32769" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32769/hovercard" href="https://github.com/openclaw/openclaw/pull/32769">#32769</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Agents/Skills runtime loading: propagate run config into embedded attempt and compaction skill-entry loading so explicitly enabled bundled companion skills are discovered consistently when skill snapshots do not already provide resolved entries. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Agents/Session startup date grounding: substitute <code>YYYY-MM-DD</code> placeholders in startup/post-compaction AGENTS context and append runtime current-time lines for <code>/new</code> and <code>/reset</code> prompts so daily-memory references resolve correctly. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014171156" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32381" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32381/hovercard" href="https://github.com/openclaw/openclaw/pull/32381">#32381</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Agents/Compaction template heading alignment: update AGENTS template section names to <code>Session Startup</code>/<code>Red Lines</code> and keep legacy <code>Every Session</code>/<code>Safety</code> fallback extraction so post-compaction context remains intact across template versions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3981665169" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25098" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25098/hovercard" href="https://github.com/openclaw/openclaw/pull/25098">#25098</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/echoVic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/echoVic">@echoVic</a>.</li>
<li>Agents/Compaction continuity: expand staged-summary merge instructions to preserve active task status, batch progress, latest user request, and follow-up commitments so compaction handoffs retain in-flight work context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3897148356" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/8903" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/8903/hovercard" href="https://github.com/openclaw/openclaw/pull/8903">#8903</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joetomasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joetomasone">@joetomasone</a>.</li>
<li>Agents/Compaction safeguard structure hardening: require exact fallback summary headings, sanitize untrusted compaction instruction text before prompt embedding, and keep structured sections when preserving all turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984346091" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25555" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25555/hovercard" href="https://github.com/openclaw/openclaw/pull/25555">#25555</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>Gateway/status self version reporting: make Gateway self version in <code>openclaw status</code> prefer runtime <code>VERSION</code> (while preserving explicit <code>OPENCLAW_VERSION</code> override), preventing stale post-upgrade app version output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015014609" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32655" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32655/hovercard" href="https://github.com/openclaw/openclaw/pull/32655">#32655</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Memory/QMD index isolation: set <code>QMD_CONFIG_DIR</code> alongside <code>XDG_CONFIG_HOME</code> so QMD config state stays per-agent despite upstream XDG handling bugs, preventing cross-agent collection indexing and excess disk/CPU usage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992797716" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27028" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27028/hovercard" href="https://github.com/openclaw/openclaw/pull/27028">#27028</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HenryLoenwind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HenryLoenwind">@HenryLoenwind</a>.</li>
<li>Memory/QMD collection safety: stop destructive collection rebinds when QMD <code>collection list</code> only reports names without path metadata, preventing <code>memory search</code> from dropping existing collections if re-add fails. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031248229" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36870" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36870/hovercard" href="https://github.com/openclaw/openclaw/issues/36870">#36870</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adnannnnnnna/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adnannnnnnna">@Adnannnnnnna</a>.</li>
<li>Memory/QMD duplicate-document recovery: detect <code>UNIQUE constraint failed: documents.collection, documents.path</code> update failures, rebuild managed collections once, and retry update so periodic QMD syncs recover instead of failing every run; includes regression coverage to avoid over-matching unrelated unique constraints. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996034983" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27649" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27649/hovercard" href="https://github.com/openclaw/openclaw/issues/27649">#27649</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MiscMich/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MiscMich">@MiscMich</a>.</li>
<li>Memory/local embedding initialization hardening: add regression coverage for transient initialization retry and mixed <code>embedQuery</code> + <code>embedBatch</code> concurrent startup to lock single-flight initialization behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3938322623" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/15639" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/15639/hovercard" href="https://github.com/openclaw/openclaw/pull/15639">#15639</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SubtleSpark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SubtleSpark">@SubtleSpark</a>.</li>
<li>CLI/Coding-agent reliability: switch default <code>claude-cli</code> non-interactive args to <code>--permission-mode bypassPermissions</code>, auto-normalize legacy <code>--dangerously-skip-permissions</code> backend overrides to the modern permission-mode form, align coding-agent + live-test docs with the non-PTY Claude path, and emit session system-event heartbeat notices when CLI watchdog no-output timeouts terminate runs. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998937806" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28261" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28261/hovercard" href="https://github.com/openclaw/openclaw/issues/28261">#28261</a>. Landed from contributor PRs <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000413702" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28610" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28610/hovercard" href="https://github.com/openclaw/openclaw/pull/28610">#28610</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008824106" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31149" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31149/hovercard" href="https://github.com/openclaw/openclaw/pull/31149">#31149</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/niceysam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/niceysam">@niceysam</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cryptomaltese/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cryptomaltese">@cryptomaltese</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>ACP/ACPX session bootstrap: retry with <code>sessions new</code> when <code>sessions ensure</code> returns no session identifiers so ACP spawns avoid <code>NO_SESSION</code>/<code>ACP_TURN_FAILED</code> failures on affected agents. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001302335" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28786" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28786/hovercard" href="https://github.com/openclaw/openclaw/issues/28786">#28786</a>. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009442200" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31338/hovercard" href="https://github.com/openclaw/openclaw/pull/31338">#31338</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>LINE/auth boundary hardening synthesis: enforce strict LINE webhook authn/z boundary semantics across pairing-store account scoping, DM/group allowlist separation, fail-closed webhook auth/runtime behavior, and replay/duplication controls (including in-flight replay reservation and post-success dedupe marking). (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990541787" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26701" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26701/hovercard" href="https://github.com/openclaw/openclaw/pull/26701">#26701</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990480531" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26683" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26683/hovercard" href="https://github.com/openclaw/openclaw/pull/26683">#26683</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3986746602" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25978" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25978/hovercard" href="https://github.com/openclaw/openclaw/pull/25978">#25978</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945208518" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17593" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17593/hovercard" href="https://github.com/openclaw/openclaw/pull/17593">#17593</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3942582492" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/16619" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/16619/hovercard" href="https://github.com/openclaw/openclaw/pull/16619">#16619</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012520149" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31990" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31990/hovercard" href="https://github.com/openclaw/openclaw/pull/31990">#31990</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3986947645" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26047" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26047/hovercard" href="https://github.com/openclaw/openclaw/pull/26047">#26047</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4006955874" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30584" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30584/hovercard" href="https://github.com/openclaw/openclaw/pull/30584">#30584</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3950365508" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18777" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/18777/hovercard" href="https://github.com/openclaw/openclaw/pull/18777">#18777</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidahmann/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidahmann">@davidahmann</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harshang03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harshang03">@harshang03</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haosenwang1018/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haosenwang1018">@haosenwang1018</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/coygeek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/coygeek">@coygeek</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>LINE/media download synthesis: fix file-media download handling and M4A audio classification across overlapping LINE regressions. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3988580357" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26386" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26386/hovercard" href="https://github.com/openclaw/openclaw/pull/26386">#26386</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996632204" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27761" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27761/hovercard" href="https://github.com/openclaw/openclaw/pull/27761">#27761</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996791096" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27787" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27787/hovercard" href="https://github.com/openclaw/openclaw/pull/27787">#27787</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004035753" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29509" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29509/hovercard" href="https://github.com/openclaw/openclaw/pull/29509">#29509</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004616868" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29755" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29755/hovercard" href="https://github.com/openclaw/openclaw/pull/29755">#29755</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004669859" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29776" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29776/hovercard" href="https://github.com/openclaw/openclaw/pull/29776">#29776</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004696355" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29785" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29785/hovercard" href="https://github.com/openclaw/openclaw/pull/29785">#29785</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013630590" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32240" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32240/hovercard" href="https://github.com/openclaw/openclaw/pull/32240">#32240</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinWangSheng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinWangSheng">@kevinWangSheng</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/loiie45e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/loiie45e">@loiie45e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/carrotRakko/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/carrotRakko">@carrotRakko</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/codeafridi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/codeafridi">@codeafridi</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>LINE/context and routing synthesis: fix group/room peer routing and command-authorization context propagation, and keep processing later events in mixed-success webhook batches. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3969108600" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/21955" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/21955/hovercard" href="https://github.com/openclaw/openclaw/pull/21955">#21955</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3977953127" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24475" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/24475/hovercard" href="https://github.com/openclaw/openclaw/pull/24475">#24475</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992817695" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27035" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27035/hovercard" href="https://github.com/openclaw/openclaw/pull/27035">#27035</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999011840" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28286" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28286/hovercard" href="https://github.com/openclaw/openclaw/pull/28286">#28286</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lailoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lailoo">@lailoo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcaxtr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcaxtr">@mcaxtr</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jervyclaw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jervyclaw">@jervyclaw</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>LINE/status/config/webhook synthesis: fix status false positives from snapshot/config state and accept LINE webhook HEAD probes for compatibility. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3907283059" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/10487" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/10487/hovercard" href="https://github.com/openclaw/openclaw/pull/10487">#10487</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3985415955" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25726" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25726/hovercard" href="https://github.com/openclaw/openclaw/pull/25726">#25726</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995438440" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27537" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27537/hovercard" href="https://github.com/openclaw/openclaw/pull/27537">#27537</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997653631" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27908" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27908/hovercard" href="https://github.com/openclaw/openclaw/pull/27908">#27908</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009636722" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31387" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31387/hovercard" href="https://github.com/openclaw/openclaw/pull/31387">#31387</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlueBirdBack/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlueBirdBack">@BlueBirdBack</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/loiie45e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/loiie45e">@loiie45e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/puritysb/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/puritysb">@puritysb</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcaxtr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcaxtr">@mcaxtr</a>.</li>
<li>LINE cleanup/test follow-ups: fold cleanup/test learnings into the synthesis review path while keeping runtime changes focused on regression fixes. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945410663" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17630/hovercard" href="https://github.com/openclaw/openclaw/pull/17630">#17630</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3944389153" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17289" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17289/hovercard" href="https://github.com/openclaw/openclaw/pull/17289">#17289</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Clawborn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Clawborn">@Clawborn</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidahmann/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidahmann">@davidahmann</a>.</li>
<li>Mattermost/interactive buttons: add interactive button send/callback support with directory-based channel/user target resolution, and harden callbacks via account-scoped HMAC verification plus sender-scoped DM routing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3957129217" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19957" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19957/hovercard" href="https://github.com/openclaw/openclaw/pull/19957">#19957</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tonydehnke/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tonydehnke">@tonydehnke</a>.</li>
<li>Feishu/groupPolicy legacy alias compatibility: treat legacy <code>groupPolicy: "allowall"</code> as <code>open</code> in both schema parsing and runtime policy checks so intended open-group configs no longer silently drop group messages when <code>groupAllowFrom</code> is empty. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028978002" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36358" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36358/hovercard" href="https://github.com/openclaw/openclaw/pull/36358">#36358</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Mattermost/plugin SDK import policy: replace remaining monolithic <code>openclaw/plugin-sdk</code> imports in Mattermost mention-gating paths/tests with scoped subpaths (<code>openclaw/plugin-sdk/compat</code> and <code>openclaw/plugin-sdk/mattermost</code>) so <code>pnpm check</code> passes <code>lint:plugins:no-monolithic-plugin-sdk-entry-imports</code> on baseline. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029514878" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36480" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36480/hovercard" href="https://github.com/openclaw/openclaw/pull/36480">#36480</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Telegram/polls: add Telegram poll action support to channel action discovery and tool/CLI poll flows, with multi-account discoverability gated to accounts that can actually execute polls (<code>sendMessage</code> + <code>poll</code>). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029809681" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36547" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36547/hovercard" href="https://github.com/openclaw/openclaw/pull/36547">#36547</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Agents/failover cooldown classification: stop treating generic <code>cooling down</code> text as provider <code>rate_limit</code> so healthy models no longer show false global cooldown/rate-limit warnings while explicit <code>model_cooldown</code> markers still trigger failover. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016336205" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32972" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32972/hovercard" href="https://github.com/openclaw/openclaw/pull/32972">#32972</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Agents/failover service-unavailable handling: stop treating bare proxy/CDN <code>service unavailable</code> errors as provider overload while keeping them retryable via the timeout/failover path, so transient outages no longer show false rate-limit warnings or block fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030259117" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36646" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36646/hovercard" href="https://github.com/openclaw/openclaw/pull/36646">#36646</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnMetaCode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnMetaCode">@jnMetaCode</a>.</li>
<li>Plugins/HTTP route migration diagnostics: rewrite legacy <code>api.registerHttpHandler(...)</code> loader failures into actionable migration guidance so doctor/plugin diagnostics point operators to <code>api.registerHttpRoute(...)</code> or <code>registerPluginHttpRoute(...)</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030962720" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36794" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36794/hovercard" href="https://github.com/openclaw/openclaw/pull/36794">#36794</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a></li>
<li>Doctor/Heartbeat upgrade diagnostics: warn when heartbeat delivery is configured with an implicit <code>directPolicy</code> so upgrades pin direct/DM behavior explicitly instead of relying on the current default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030950312" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36789" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36789/hovercard" href="https://github.com/openclaw/openclaw/pull/36789">#36789</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/current-time UTC anchor: append a machine-readable UTC suffix alongside local <code>Current time:</code> lines in shared cron-style prompt contexts so agents can compare UTC-stamped workspace timestamps without doing timezone math. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014292607" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32423" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32423/hovercard" href="https://github.com/openclaw/openclaw/pull/32423">#32423</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jriff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jriff">@jriff</a>.</li>
<li>Ollama/local model handling: preserve explicit lower <code>contextWindow</code> / <code>maxTokens</code> overrides during merge refresh, and keep native Ollama streamed replies from surfacing fallback <code>thinking</code> / <code>reasoning</code> text once real content starts streaming. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040000491" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39292" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39292/hovercard" href="https://github.com/openclaw/openclaw/pull/39292">#39292</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>TUI/webchat command-owner scope alignment: treat internal-channel gateway sessions with <code>operator.admin</code> as owner-authorized in command auth, restoring cron/gateway/connector tool access for affected TUI/webchat sessions while keeping external channels on identity-based owner checks. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026391636" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35666" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35666/hovercard" href="https://github.com/openclaw/openclaw/pull/35666">#35666</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026412700" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35673" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35673/hovercard" href="https://github.com/openclaw/openclaw/pull/35673">#35673</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026468995" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35704" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35704/hovercard" href="https://github.com/openclaw/openclaw/pull/35704">#35704</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Naylenv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Naylenv">@Naylenv</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Octane0411/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Octane0411">@Octane0411</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Discord/inbound timeout isolation: separate inbound worker timeout tracking from listener timeout budgets so queued Discord replies are no longer dropped when listener watchdog windows expire mid-run. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030065827" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36602" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36602/hovercard" href="https://github.com/openclaw/openclaw/pull/36602">#36602</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>Memory/doctor SecretRef handling: treat SecretRef-backed memory-search API keys as configured, and fail embedding setup with explicit unresolved-secret errors instead of crashing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031159097" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36835" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36835/hovercard" href="https://github.com/openclaw/openclaw/pull/36835">#36835</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Memory/flush default prompt: ban timestamped variant filenames during default memory flush runs so durable notes stay in the canonical daily <code>memory/YYYY-MM-DD.md</code> file. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023901290" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34951" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34951/hovercard" href="https://github.com/openclaw/openclaw/pull/34951">#34951</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zerone0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zerone0x">@zerone0x</a>.</li>
<li>Agents/reply delivery timing: flush embedded Pi block replies before waiting on compaction retries so already-generated assistant replies reach channels before compaction wait completes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025813822" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35489" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35489/hovercard" href="https://github.com/openclaw/openclaw/pull/35489">#35489</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/gateway config guidance: stop exposing <code>config.schema</code> through the agent <code>gateway</code> tool, remove prompt/docs guidance that told agents to call it, and keep agents on <code>config.get</code> plus <code>config.patch</code>/<code>config.apply</code> for config changes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3887534352" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/7382" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/7382/hovercard" href="https://github.com/openclaw/openclaw/pull/7382">#7382</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kakuteki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kakuteki">@kakuteki</a>.</li>
<li>Provider/KiloCode: Keep duplicate models after malformed discovery rows, and strip legacy <code>reasoning_effort</code> when proxy reasoning injection is skipped. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014061331" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32352" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32352/hovercard" href="https://github.com/openclaw/openclaw/pull/32352">#32352</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandemicsyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandemicsyn">@pandemicsyn</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/failover: classify periodic provider limit exhaustion text (for example <code>Weekly/Monthly Limit Exhausted</code>) as <code>rate_limit</code> while keeping explicit <code>402 Payment Required</code> variants in billing, so failover continues without misclassifying billing-wrapped quota errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019723196" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33813" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33813/hovercard" href="https://github.com/openclaw/openclaw/pull/33813">#33813</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zhouhe-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zhouhe-xydt">@zhouhe-xydt</a>.</li>
<li>Mattermost/interactive button callbacks: allow external callback base URLs and stop requiring loopback-origin requests so button clicks work when Mattermost reaches the gateway over Tailscale, LAN, or a reverse proxy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033122360" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37543" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37543/hovercard" href="https://github.com/openclaw/openclaw/pull/37543">#37543</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mukhtharcm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mukhtharcm">@mukhtharcm</a>.</li>
<li>Gateway/chat.send route inheritance: keep explicit external delivery for channel-scoped sessions while preventing shared-main and other channel-agnostic webchat sessions from inheriting stale external routes, so Control UI replies stay on webchat without breaking selected channel-target sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022869637" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34669" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34669/hovercard" href="https://github.com/openclaw/openclaw/pull/34669">#34669</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/Discord media upload caps: make outbound uploads honor channel <code>mediaMaxMb</code> config, raise Telegram's default media cap to 100MB, and remove MIME fallback limits that kept some Telegram uploads at 16MB. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Skills/nano-banana-pro resolution override: respect explicit <code>--resolution</code> values during image editing and only auto-detect output size from input images when the flag is omitted. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031318390" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36880" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36880/hovercard" href="https://github.com/openclaw/openclaw/pull/36880">#36880</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuofengzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuofengzhang">@shuofengzhang</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Skills/openai-image-gen CLI validation: validate <code>--background</code> and <code>--style</code> inputs early, normalize supported values, and warn when those flags are ignored for incompatible models. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030852226" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36762" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36762/hovercard" href="https://github.com/openclaw/openclaw/pull/36762">#36762</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuofengzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuofengzhang">@shuofengzhang</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Skills/openai-image-gen output formats: validate <code>--output-format</code> values early, normalize aliases like <code>jpg -> jpeg</code>, and warn when the flag is ignored for incompatible models. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030269062" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36648" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36648/hovercard" href="https://github.com/openclaw/openclaw/pull/36648">#36648</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuofengzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuofengzhang">@shuofengzhang</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>ACP/skill env isolation: strip skill-injected API keys from ACP harness child-process environments so tools like Codex CLI keep their own auth flow instead of inheriting billed provider keys from active skills. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028834045" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36316" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36316/hovercard" href="https://github.com/openclaw/openclaw/pull/36316">#36316</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/taw0002/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/taw0002">@taw0002</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>WhatsApp media upload caps: make outbound media sends and auto-replies honor <code>channels.whatsapp.mediaMaxMb</code> with per-account overrides so inbound and outbound limits use the same channel config. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Windows/Plugin install: when OpenClaw runs on Windows via Bun and <code>npm-cli.js</code> is not colocated with the runtime binary, fall back to <code>npm.cmd</code>/<code>npx.cmd</code> through the existing <code>cmd.exe</code> wrapper so <code>openclaw plugins install</code> no longer fails with <code>spawn EINVAL</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034864437" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38056" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38056/hovercard" href="https://github.com/openclaw/openclaw/pull/38056">#38056</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xlin2023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xlin2023">@0xlin2023</a>.</li>
<li>Telegram/send retry classification: retry grammY <code>Network request ... failed after N attempts</code> envelopes in send flows without reclassifying plain <code>Network request ... failed!</code> wrappers as transient, restoring the intended retry path while keeping broad send-context message matching tight. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034864437" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38056" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38056/hovercard" href="https://github.com/openclaw/openclaw/pull/38056">#38056</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xlin2023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xlin2023">@0xlin2023</a>.</li>
<li>Gateway/probes: keep <code>/health</code>, <code>/healthz</code>, <code>/ready</code>, and <code>/readyz</code> reachable when the Control UI is mounted at <code>/</code>, preserve plugin-owned route precedence on those paths, and make <code>/ready</code> and <code>/readyz</code> report channel-backed readiness with startup grace plus <code>503</code> on disconnected managed channels, while <code>/health</code> and <code>/healthz</code> stay shallow liveness probes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3949006570" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18446" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/18446/hovercard" href="https://github.com/openclaw/openclaw/issues/18446">#18446</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vibecodooor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vibecodooor">@vibecodooor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mahsumaktas/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mahsumaktas">@mahsumaktas</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Feishu/media downloads: drop invalid timeout fields from SDK method calls now that client-level <code>httpTimeoutMs</code> applies to requests. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035615814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38267" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38267/hovercard" href="https://github.com/openclaw/openclaw/pull/38267">#38267</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ant1eicher/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ant1eicher">@ant1eicher</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>PI embedded runner/Feishu docs: propagate sender identity into embedded attempts so Feishu doc auto-grant restores requester access for embedded-runner executions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015979769" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32915" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32915/hovercard" href="https://github.com/openclaw/openclaw/pull/32915">#32915</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cszhouwei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cszhouwei">@cszhouwei</a>.</li>
<li>Agents/usage normalization: normalize missing or partial assistant usage snapshots before compaction accounting so <code>openclaw agent --json</code> no longer crashes when provider payloads omit <code>totalTokens</code> or related usage fields. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024095818" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34977" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34977/hovercard" href="https://github.com/openclaw/openclaw/pull/34977">#34977</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sp-hk2ldn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sp-hk2ldn">@sp-hk2ldn</a>.</li>
<li>Venice/default model refresh: switch the built-in Venice default to <code>kimi-k2-5</code>, update onboarding aliasing, and refresh Venice provider docs/recommendations to match the current private and anonymized catalog. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3918771089" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/12964" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/12964/hovercard" href="https://github.com/openclaw/openclaw/pull/12964">#12964</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3958575648" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20156" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/20156/hovercard" href="https://github.com/openclaw/openclaw/issues/20156">#20156</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sabrinaaquino/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sabrinaaquino">@sabrinaaquino</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/skill API write pacing: add a global prompt guardrail that treats skill-driven external API writes as rate-limited by default, so runners prefer batched writes, avoid tight request loops, and respect <code>429</code>/<code>Retry-After</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Google Chat/multi-account webhook auth fallback: when <code>channels.googlechat.accounts.default</code> carries shared webhook audience/path settings (for example after config normalization), inherit those defaults for named accounts while preserving top-level and per-account overrides, so inbound webhook verification no longer fails silently for named accounts missing duplicated audience fields. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036438684" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38369" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38369/hovercard" href="https://github.com/openclaw/openclaw/issues/38369">#38369</a>.</li>
<li>Models/tool probing: raise the tool-capability probe budget from 32 to 256 tokens so reasoning models that spend tokens on thinking before returning a required tool call are less likely to be misclassified as not supporting tools. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3888024351" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/7521" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/7521/hovercard" href="https://github.com/openclaw/openclaw/pull/7521">#7521</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jakobdylanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jakobdylanc">@jakobdylanc</a>.</li>
<li>Gateway/transient network classification: treat wrapped <code>...: fetch failed</code> transport messages as transient while avoiding broad matches like <code>Web fetch failed (404): ...</code>, preventing Discord reconnect wrappers from crashing the gateway without suppressing non-network tool failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037182813" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38530" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38530/hovercard" href="https://github.com/openclaw/openclaw/pull/38530">#38530</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>ACP/console silent reply suppression: filter ACP <code>NO_REPLY</code> lead fragments and silent-only finals before <code>openclaw agent</code> logging/delivery so console-backed ACP sessions no longer leak <code>NO</code>/<code>NO_REPLY</code> placeholders. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036842547" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38436" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38436/hovercard" href="https://github.com/openclaw/openclaw/pull/38436">#38436</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a>.</li>
<li>Feishu/reply delivery reliability: disable block streaming in Feishu reply options so plain-text auto-render replies are no longer silently dropped before final delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035530221" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38258" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38258/hovercard" href="https://github.com/openclaw/openclaw/issues/38258">#38258</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>Agents/reply MEDIA delivery: normalize local assistant <code>MEDIA:</code> paths before block/final delivery, keep media dedupe aligned with message-tool sends, and contain malformed media normalization failures so generated files send reliably instead of falling back to empty responses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037343001" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38572" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38572/hovercard" href="https://github.com/openclaw/openclaw/pull/38572">#38572</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Sessions/bootstrap cache rollover invalidation: clear cached workspace bootstrap snapshots whenever an existing <code>sessionKey</code> rolls to a new <code>sessionId</code> across auto-reply, command, and isolated cron session resolvers, so <code>AGENTS.md</code>/<code>MEMORY.md</code>/<code>USER.md</code> updates are reloaded after daily, idle, or forced session resets instead of staying stale until gateway restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037067338" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38494" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38494/hovercard" href="https://github.com/openclaw/openclaw/issues/38494">#38494</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LivingInDrm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LivingInDrm">@LivingInDrm</a>.</li>
<li>Gateway/Telegram polling health monitor: skip stale-socket restarts for Telegram long-polling channels and thread channel identity through shared health evaluation so polling connections are not restarted on the WebSocket stale-socket heuristic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036613084" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38395" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38395/hovercard" href="https://github.com/openclaw/openclaw/issues/38395">#38395</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Daemon/systemd fresh-install probe: check for OpenClaw's managed user unit before running <code>systemctl --user is-enabled</code>, so first-time Linux installs no longer fail on generic missing-unit probe errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038290251" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38819" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38819/hovercard" href="https://github.com/openclaw/openclaw/pull/38819">#38819</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adaHubble/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adaHubble">@adaHubble</a>.</li>
<li>Gateway/container lifecycle: allow <code>openclaw gateway stop</code> to SIGTERM unmanaged gateway listeners and <code>openclaw gateway restart</code> to SIGUSR1 a single unmanaged listener when no service manager is installed, so container and supervisor-based deployments are no longer blocked by <code>service disabled</code> no-op responses. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028045098" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36137" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36137/hovercard" href="https://github.com/openclaw/openclaw/issues/36137">#36137</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/Windows restart supervision: relaunch task-managed gateways through Scheduled Task with quoted helper-script command paths, distinguish restart-capable supervisors per platform, and stop orphaned Windows gateway children during self-restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038313614" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38825" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38825/hovercard" href="https://github.com/openclaw/openclaw/pull/38825">#38825</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/native topic command routing: resolve forum-topic native commands through the same conversation route as inbound messages so topic <code>agentId</code> overrides and bound topic sessions target the active session instead of the default topic-parent session. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038453123" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38871" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38871/hovercard" href="https://github.com/openclaw/openclaw/pull/38871">#38871</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Markdown/assistant image hardening: flatten remote markdown images to plain text across the Control UI, exported HTML, and shared Swift chat while keeping inline <code>data:image/...</code> markdown renderable, so model output no longer triggers automatic remote image fetches. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038522802" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38895" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38895/hovercard" href="https://github.com/openclaw/openclaw/pull/38895">#38895</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Config/compaction safeguard settings: regression-test <code>agents.defaults.compaction.recentTurnsPreserve</code> through <code>loadConfig()</code> and cover the new help metadata entry so the exposed preserve knob stays wired through schema validation and config UX. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984348161" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25557" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25557/hovercard" href="https://github.com/openclaw/openclaw/pull/25557">#25557</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>iOS/Quick Setup presentation: skip automatic Quick Setup when a gateway is already configured (active connect config, last-known connection, preferred gateway, or manual host), so reconnecting installs no longer get prompted to connect again. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038729259" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38964" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38964/hovercard" href="https://github.com/openclaw/openclaw/pull/38964">#38964</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>CLI/Docs memory help accuracy: clarify <code>openclaw memory status --deep</code> behavior and align memory command examples/docs with the current search options. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011715299" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31803" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31803/hovercard" href="https://github.com/openclaw/openclaw/pull/31803">#31803</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JasonOA888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JasonOA888">@JasonOA888</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Avi974/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Avi974">@Avi974</a>.</li>
<li>Auto-reply/allowlist store account scoping: keep <code>/allowlist ... --store</code> writes scoped to the selected account and clear legacy unscoped entries when removing default-account store access, preventing cross-account default allowlist bleed-through from legacy pairing-store reads. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> for the fix.</li>
<li>Security/Nostr: harden profile mutation/import loopback guards by failing closed on non-loopback forwarded client headers (<code>x-forwarded-for</code> / <code>x-real-ip</code>) and rejecting <code>sec-fetch-site: cross-site</code>; adds regression coverage for proxy-forwarded and browser cross-site mutation attempts.</li>
<li>CLI/bootstrap Node version hint maintenance: replace hardcoded nvm <code>22</code> instructions in <code>openclaw.mjs</code> with <code>MIN_NODE_MAJOR</code> interpolation so future minimum-Node bumps keep startup guidance in sync automatically. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039028689" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39056" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39056/hovercard" href="https://github.com/openclaw/openclaw/pull/39056">#39056</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/onstash/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/onstash">@onstash</a>.</li>
<li>Discord/native slash command auth: honor <code>commands.allowFrom.discord</code> (and <code>commands.allowFrom["*"]</code>) in guild slash-command pre-dispatch authorization so allowlisted senders are no longer incorrectly rejected as unauthorized. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038252848" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38794" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38794/hovercard" href="https://github.com/openclaw/openclaw/pull/38794">#38794</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jskoiz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jskoiz">@jskoiz</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Outbound/message target normalization: ignore empty legacy <code>to</code>/<code>channelId</code> fields when explicit <code>target</code> is provided so valid target-based sends no longer fail legacy-param validation; includes regression coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038672978" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38944" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38944/hovercard" href="https://github.com/openclaw/openclaw/pull/38944">#38944</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Narcooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Narcooo">@Narcooo</a>.</li>
<li>Models/auth token prompts: guard cancelled manual token prompts so <code>Symbol(clack:cancel)</code> values cannot be persisted into auth profiles; adds regression coverage for cancelled <code>models auth paste-token</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038684616" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38951" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38951/hovercard" href="https://github.com/openclaw/openclaw/pull/38951">#38951</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/loopback announce URLs: treat <code>http://</code> and <code>https://</code> aliases with the same loopback/private-network policy as websocket URLs so loopback cron announce delivery no longer fails secure URL validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039042356" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39064" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39064/hovercard" href="https://github.com/openclaw/openclaw/pull/39064">#39064</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Narcooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Narcooo">@Narcooo</a>.</li>
<li>Models/default provider fallback: when the hardcoded default provider is removed from <code>models.providers</code>, resolve defaults from configured providers instead of reporting stale removed-provider defaults in status output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038675958" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38947" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38947/hovercard" href="https://github.com/openclaw/openclaw/pull/38947">#38947</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidemanuelDEV/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidemanuelDEV">@davidemanuelDEV</a>.</li>
<li>Agents/cache-trace stability: guard stable stringify against circular references in trace payloads so near-limit payloads no longer crash with <code>Maximum call stack size exceeded</code>; adds regression coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038638432" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38935" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38935/hovercard" href="https://github.com/openclaw/openclaw/pull/38935">#38935</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Extensions/diffs CI stability: add <code>headers</code> to the <code>localReq</code> test helper in <code>extensions/diffs/index.test.ts</code> so forwarding-hint checks no longer crash with <code>req.headers</code> undefined. (supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039037094" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39063" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39063/hovercard" href="https://github.com/openclaw/openclaw/pull/39063">#39063</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Shennng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Shennng">@Shennng</a>.</li>
<li>Agents/compaction thresholding: apply <code>agents.defaults.contextTokens</code> cap to the model passed into embedded run and <code>/compact</code> session creation so auto-compaction thresholds use the effective context window, not native model max context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039169594" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39099" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39099/hovercard" href="https://github.com/openclaw/openclaw/pull/39099">#39099</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Models/merge mode provider precedence: when <code>models.mode: "merge"</code> is active and config explicitly sets a provider <code>baseUrl</code>, keep config as source of truth instead of preserving stale runtime <code>models.json</code> <code>baseUrl</code> values; includes normalized provider-key coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039178714" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39103" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39103/hovercard" href="https://github.com/openclaw/openclaw/pull/39103">#39103</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BigUncle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BigUncle">@BigUncle</a>.</li>
<li>UI/Control chat tool streaming: render tool events live in webchat without requiring refresh by enabling <code>tool-events</code> capability, fixing stream/event correlation, and resetting/reloading stream state around tool results and terminal events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039181803" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39104" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39104/hovercard" href="https://github.com/openclaw/openclaw/pull/39104">#39104</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jakepresent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jakepresent">@jakepresent</a>.</li>
<li>Models/provider apiKey persistence hardening: when a provider <code>apiKey</code> value equals a known provider env var value, persist the canonical env var name into <code>models.json</code> instead of resolved plaintext secrets. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038502353" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38889" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38889/hovercard" href="https://github.com/openclaw/openclaw/pull/38889">#38889</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>.</li>
<li>Discord/model picker persistence check: add a short post-dispatch settle delay before reading back session model state so picker confirmations stop reporting false mismatch warnings after successful model switches. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039195923" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39105" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39105/hovercard" href="https://github.com/openclaw/openclaw/pull/39105">#39105</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akropp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akropp">@akropp</a>.</li>
<li>Agents/OpenAI WS compat store flag: omit <code>store</code> from <code>response.create</code> payloads when model compat sets <code>supportsStore: false</code>, preventing strict OpenAI-compatible providers from rejecting websocket requests with unknown-field errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039239190" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39113" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39113/hovercard" href="https://github.com/openclaw/openclaw/pull/39113">#39113</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Config/validation log sanitization: sanitize config-validation issue paths/messages before logging so control characters and ANSI escape sequences cannot inject misleading terminal output from crafted config content. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039243293" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39116" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39116/hovercard" href="https://github.com/openclaw/openclaw/pull/39116">#39116</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/powermaster888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/powermaster888">@powermaster888</a>.</li>
<li>Agents/compaction counter accuracy: count successful overflow-triggered auto-compactions (<code>willRetry=true</code>) in the compaction counter while still excluding aborted/no-result events, so <code>/status</code> reflects actual safeguard compaction activity. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039262241" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39123" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39123/hovercard" href="https://github.com/openclaw/openclaw/pull/39123">#39123</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/chat delta ordering: flush buffered assistant deltas before emitting tool <code>start</code> events so pre-tool text is delivered to Control UI before tool cards, avoiding transient text/tool ordering artifacts in streaming. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039266011" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39128" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39128/hovercard" href="https://github.com/openclaw/openclaw/pull/39128">#39128</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xtangping/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xtangping">@0xtangping</a>.</li>
<li>Voice-call plugin schema parity: add missing manifest <code>configSchema</code> fields (<code>webhookSecurity</code>, <code>streaming.preStartTimeoutMs|maxPendingConnections|maxPendingConnectionsPerIp|maxConnections</code>, <code>staleCallReaperSeconds</code>) so gateway AJV validation accepts already-supported runtime config instead of failing with <code>additionalProperties</code> errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038516798" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38892" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38892/hovercard" href="https://github.com/openclaw/openclaw/pull/38892">#38892</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giumex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giumex">@giumex</a>.</li>
<li>Agents/OpenAI WS reconnect retry accounting: avoid double retry scheduling when reconnect failures emit both <code>error</code> and <code>close</code>, so retry budgets track actual reconnect attempts instead of exhausting early. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039293695" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39133" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39133/hovercard" href="https://github.com/openclaw/openclaw/pull/39133">#39133</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Daemon/Windows schtasks runtime detection: use locale-invariant <code>Last Run Result</code> running codes (<code>0x41301</code>/<code>267009</code>) as the primary running signal so <code>openclaw node status</code> no longer misreports active tasks as stopped on non-English Windows locales. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039080904" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39076" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39076/hovercard" href="https://github.com/openclaw/openclaw/pull/39076">#39076</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Usage/token count formatting: round near-million token counts to millions (<code>1.0m</code>) instead of <code>1000k</code>, with explicit boundary coverage for <code>999_499</code> and <code>999_500</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039266571" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39129" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39129/hovercard" href="https://github.com/openclaw/openclaw/pull/39129">#39129</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CurryMessi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CurryMessi">@CurryMessi</a>.</li>
<li>Gateway/session bootstrap cache invalidation ordering: clear bootstrap snapshots only after active embedded-run shutdown wait completes, preventing dying runs from repopulating stale cache between <code>/new</code>/<code>sessions.reset</code> turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038456110" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38873" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38873/hovercard" href="https://github.com/openclaw/openclaw/pull/38873">#38873</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Browser/dispatcher error clarity: preserve dispatcher-side failure context in browser fetch errors while still appending operator guidance and explicit no-retry model hints, preventing misleading <code>"Can't reach service"</code> wrapping and avoiding LLM retry loops. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039132316" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39090" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39090/hovercard" href="https://github.com/openclaw/openclaw/pull/39090">#39090</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/NewdlDewdl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/NewdlDewdl">@NewdlDewdl</a>.</li>
<li>Telegram/polling offset safety: confirm persisted offsets before polling startup while validating stored <code>lastUpdateId</code> values as non-negative safe integers (with overflow guards) so malformed offset state cannot cause update skipping/dropping. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039237463" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39111" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39111/hovercard" href="https://github.com/openclaw/openclaw/pull/39111">#39111</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Telegram/status SecretRef read-only resolution: resolve env-backed bot-token SecretRefs in config-only/status inspection while respecting provider source/defaults and env allowlists, so status no longer crashes or reports false-ready tokens for disallowed providers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039279100" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39130" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39130/hovercard" href="https://github.com/openclaw/openclaw/pull/39130">#39130</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/neocody/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/neocody">@neocody</a>.</li>
<li>Agents/OpenAI WS max-token zero forwarding: treat <code>maxTokens: 0</code> as an explicit value in websocket <code>response.create</code> payloads (instead of dropping it as falsy), with regression coverage for zero-token forwarding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039337038" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39148" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39148/hovercard" href="https://github.com/openclaw/openclaw/pull/39148">#39148</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Podman/.env gateway bind precedence: evaluate <code>OPENCLAW_GATEWAY_BIND</code> after sourcing <code>.env</code> in <code>run-openclaw-podman.sh</code> so env-file overrides are honored. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038235561" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38785" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38785/hovercard" href="https://github.com/openclaw/openclaw/pull/38785">#38785</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/majinyu666/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/majinyu666">@majinyu666</a>.</li>
<li>Models/default alias refresh: bump <code>gpt</code> to <code>openai/gpt-5.4</code> and Gemini defaults to <code>gemini-3.1</code> preview aliases (including normalization/default wiring) to track current model IDs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037592618" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38638" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38638/hovercard" href="https://github.com/openclaw/openclaw/pull/38638">#38638</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Config/env substitution degraded mode: convert missing <code>${VAR}</code> resolution in config reads from hard-fail to warning-backed degraded behavior, while preventing unresolved placeholders from being accepted as gateway credentials. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039020940" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39050" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39050/hovercard" href="https://github.com/openclaw/openclaw/pull/39050">#39050</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akz142857/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akz142857">@akz142857</a>.</li>
<li>Discord inbound listener non-blocking dispatch: make <code>MESSAGE_CREATE</code> listener handoff asynchronous (no per-listener queue blocking), so long runs no longer stall unrelated incoming events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039357115" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39154" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39154/hovercard" href="https://github.com/openclaw/openclaw/pull/39154">#39154</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yaseenkadlemakki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yaseenkadlemakki">@yaseenkadlemakki</a>.</li>
<li>Daemon/Windows PATH freeze fix: stop persisting install-time <code>PATH</code> snapshots into Scheduled Task scripts so runtime tool lookup follows current host PATH updates; also refresh local TUI history on silent local finals. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039312930" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39139" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39139/hovercard" href="https://github.com/openclaw/openclaw/pull/39139">#39139</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Narcooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Narcooo">@Narcooo</a>.</li>
<li>Gateway/systemd service restart hardening: clear stale gateway listeners by explicit run-port before service bind, add restart stale-pid port-override support, tune systemd start/stop/exit handling, and disable detached child mode only in service-managed runtime so cgroup stop semantics clean up descendants reliably. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036979563" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38463" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38463/hovercard" href="https://github.com/openclaw/openclaw/pull/38463">#38463</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/spirittechie/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/spirittechie">@spirittechie</a>.</li>
<li>Discord/plugin native command aliases: let plugins declare provider-specific slash names so native Discord registration can avoid built-in command collisions; the bundled Talk voice plugin now uses <code>/talkvoice</code> natively on Discord while keeping text <code>/voice</code>.</li>
<li>Daemon/Windows schtasks status normalization: derive runtime state from locale-neutral numeric <code>Last Run Result</code> codes only (without language string matching) and surface unknown when numeric result data is unavailable, preventing locale-specific misclassification drift. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039354363" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39153" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39153/hovercard" href="https://github.com/openclaw/openclaw/pull/39153">#39153</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Telegram/polling conflict recovery: reset the polling <code>webhookCleared</code> latch on <code>getUpdates</code> 409 conflicts so webhook cleanup re-runs on restart cycles and polling avoids infinite conflict loops. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039595690" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39205" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39205/hovercard" href="https://github.com/openclaw/openclaw/pull/39205">#39205</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amittell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amittell">@amittell</a>.</li>
<li>Heartbeat/requests-in-flight scheduling: stop advancing <code>nextDueMs</code> and avoid immediate <code>scheduleNext()</code> timer overrides on requests-in-flight skips, so wake-layer retry cooldowns are honored and heartbeat cadence no longer drifts under sustained contention. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039531005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39182" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39182/hovercard" href="https://github.com/openclaw/openclaw/pull/39182">#39182</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Memory/SQLite contention resilience: re-apply <code>PRAGMA busy_timeout</code> on every sync-store and QMD connection open so process restarts/reopens no longer revert to immediate <code>SQLITE_BUSY</code> failures under lock contention. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039539050" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39183" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39183/hovercard" href="https://github.com/openclaw/openclaw/pull/39183">#39183</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/webchat route safety: block webchat/control-ui clients from inheriting stored external delivery routes on channel-scoped sessions (while preserving route inheritance for UI/TUI clients), preventing cross-channel leakage from scoped chats. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039465250" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39175" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39175/hovercard" href="https://github.com/openclaw/openclaw/pull/39175">#39175</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>.</li>
<li>Telegram error-surface resilience: return a user-visible fallback reply when dispatch/debounce processing fails instead of going silent, while preserving draft-stream cleanup and best-effort thread-scoped fallback delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039599479" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39209" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39209/hovercard" href="https://github.com/openclaw/openclaw/pull/39209">#39209</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/riftzen-bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/riftzen-bit">@riftzen-bit</a>.</li>
<li>Gateway/password auth startup diagnostics: detect unresolved provider-reference objects in <code>gateway.auth.password</code> and fail with a specific bootstrap-secrets error message instead of generic misconfiguration output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039684520" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39230" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39230/hovercard" href="https://github.com/openclaw/openclaw/pull/39230">#39230</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Agents/OpenAI-responses compatibility: strip unsupported <code>store</code> payload fields when <code>supportsStore=false</code> (including OpenAI-compatible non-OpenAI providers) while preserving server-compaction payload behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039635207" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39219" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39219/hovercard" href="https://github.com/openclaw/openclaw/pull/39219">#39219</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Agents/model fallback visibility: warn when configured model IDs cannot be resolved and fallback is applied, with log-safe sanitization of model text to prevent control-sequence injection in warning output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039613650" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39215" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39215/hovercard" href="https://github.com/openclaw/openclaw/pull/39215">#39215</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Outbound delivery replay safety: use two-phase delivery ACK markers (<code>.json</code> -> <code>.delivered</code> -> unlink) and startup marker cleanup so crash windows between send and cleanup do not replay already-delivered messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037753653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38668" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38668/hovercard" href="https://github.com/openclaw/openclaw/pull/38668">#38668</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gundam98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gundam98">@Gundam98</a>.</li>
<li>Nodes/system.run approval binding: carry prepared approval plans through gateway forwarding and bind interpreter-style script operands across approval to execution, so post-approval script rewrites are denied while unchanged approved script runs keep working. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Nodes/system.run PowerShell wrapper parsing: treat <code>pwsh</code>/<code>powershell</code> <code>-EncodedCommand</code> forms as shell-wrapper payloads so allowlist mode still requires approval instead of falling back to plain argv analysis. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Control UI/auth error reporting: map generic browser <code>Fetch failed</code> websocket close errors back to actionable gateway auth messages (<code>gateway token mismatch</code>, <code>authentication failed</code>, <code>retry later</code>) so dashboard disconnects stop hiding credential problems. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000403207" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28608" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28608/hovercard" href="https://github.com/openclaw/openclaw/pull/28608">#28608</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KimGLee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KimGLee">@KimGLee</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KimGLee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KimGLee">@KimGLee</a>.</li>
<li>Media/mime unknown-kind handling: return <code>undefined</code> (not <code>"unknown"</code>) for missing/unrecognized MIME kinds and use document-size fallback caps for unknown remote media, preventing phantom <code><media:unknown></code> Signal events from being treated as real messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039575246" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39199" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39199/hovercard" href="https://github.com/openclaw/openclaw/pull/39199">#39199</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nicolasgrasset/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nicolasgrasset">@nicolasgrasset</a>.</li>
<li>Nodes/system.run allow-always persistence: honor shell comment semantics during allowlist analysis so <code>#</code>-tailed payloads that never execute are not persisted as trusted follow-up commands. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Signal/inbound attachment fan-in: forward all successfully fetched inbound attachments through <code>MediaPaths</code>/<code>MediaUrls</code>/<code>MediaTypes</code> (instead of only the first), and improve multi-attachment placeholder summaries in mention-gated pending history. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039604548" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39212" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39212/hovercard" href="https://github.com/openclaw/openclaw/pull/39212">#39212</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joeykrug/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joeykrug">@joeykrug</a>.</li>
<li>Nodes/system.run dispatch-wrapper boundary: keep shell-wrapper approval classification active at the depth boundary so <code>env</code> wrapper stacks cannot reach <code>/bin/sh -c</code> execution without the expected approval gate. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Docker/token persistence on reconfigure: reuse the existing <code>.env</code> gateway token during <code>docker-setup.sh</code> reruns and align compose token env defaults, so Docker installs stop silently rotating tokens and breaking existing dashboard sessions. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016944012" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33097" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33097/hovercard" href="https://github.com/openclaw/openclaw/pull/33097">#33097</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Agents/strict OpenAI turn ordering: apply assistant-first transcript bootstrap sanitization to strict OpenAI-compatible providers (for example vLLM/Gemma via <code>openai-completions</code>) without adding Google-specific session markers, preventing assistant-first history rejections. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039794578" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39252" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39252/hovercard" href="https://github.com/openclaw/openclaw/pull/39252">#39252</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Discord/exec approvals gateway auth: pass resolved shared gateway credentials into the Discord exec-approvals gateway client so token-auth installs stop failing approvals with <code>gateway token mismatch</code>. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035212437" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38179" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38179/hovercard" href="https://github.com/openclaw/openclaw/issues/38179">#38179</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0riginal-claw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0riginal-claw">@0riginal-claw</a> for the adjacent PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025064084" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35147" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35147/hovercard" href="https://github.com/openclaw/openclaw/pull/35147">#35147</a> investigation.</li>
<li>Subagents/workspace inheritance: propagate parent workspace directory to spawned subagent runs so child sessions reliably inherit workspace-scoped instructions (<code>AGENTS.md</code>, <code>SOUL.md</code>, etc.) without exposing workspace override through tool-call arguments. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039779809" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39247" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39247/hovercard" href="https://github.com/openclaw/openclaw/pull/39247">#39247</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonQin6/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonQin6">@jasonQin6</a>.</li>
<li>Exec approvals/gateway-node policy: honor explicit <code>ask=off</code> from <code>exec-approvals.json</code> even when runtime defaults are stricter, so trusted full/off setups stop re-prompting on gateway and node exec paths. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991135031" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26789" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26789/hovercard" href="https://github.com/openclaw/openclaw/pull/26789">#26789</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandego/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandego">@pandego</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandego/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandego">@pandego</a>.</li>
<li>Exec approvals/config fallback: inherit <code>ask</code> from <code>exec-approvals.json</code> when <code>tools.exec.ask</code> is unset, so local full/off defaults no longer fall back to <code>on-miss</code> for exec tool and <code>nodes run</code>. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4003187396" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29187" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29187/hovercard" href="https://github.com/openclaw/openclaw/pull/29187">#29187</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>.</li>
<li>Exec approvals/allow-always shell scripts: persist and match script paths for wrapper invocations like <code>bash scripts/foo.sh</code> while still blocking <code>-c</code>/<code>-s</code> wrapper bypasses. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025040146" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35137" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35137/hovercard" href="https://github.com/openclaw/openclaw/pull/35137">#35137</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>.</li>
<li>Queue/followup dedupe across drain restarts: dedupe queued redelivery <code>message_id</code> values after queue recreation so busy-session followups no longer duplicate on replayed inbound events. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017265987" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33168" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33168/hovercard" href="https://github.com/openclaw/openclaw/pull/33168">#33168</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rylena/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rylena">@rylena</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rylena/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rylena">@rylena</a>.</li>
<li>Telegram/preview-final edit idempotence: treat <code>message is not modified</code> errors during preview finalization as delivered so partial-stream final replies do not fall back to duplicate sends. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024115730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34983" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34983/hovercard" href="https://github.com/openclaw/openclaw/pull/34983">#34983</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HOYALIM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HOYALIM">@HOYALIM</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HOYALIM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HOYALIM">@HOYALIM</a>.</li>
<li>Telegram/DM streaming transport parity: use message preview transport for all DM streaming lanes so final delivery can edit the active preview instead of sending duplicate finals. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038538127" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38906" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38906/hovercard" href="https://github.com/openclaw/openclaw/pull/38906">#38906</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>.</li>
<li>Telegram/DM draft streaming restoration: restore native <code>sendMessageDraft</code> preview transport for DM answer streaming while keeping reasoning on message transport, with regression coverage to keep draft finalization from sending duplicate finals. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040264375" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39398" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39398/hovercard" href="https://github.com/openclaw/openclaw/pull/39398">#39398</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/send retry safety: retry non-idempotent send paths only for pre-connect failures and make custom retry predicates strict, preventing ambiguous reconnect retries from sending duplicate messages. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021000492" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34238" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34238/hovercard" href="https://github.com/openclaw/openclaw/pull/34238">#34238</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hal-crackbot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hal-crackbot">@hal-crackbot</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hal-crackbot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hal-crackbot">@hal-crackbot</a>.</li>
<li>ACP/run spawn delivery bootstrap: stop reusing requester inline delivery targets for one-shot <code>mode: "run"</code> ACP spawns, so fresh run-mode workers bootstrap in isolation instead of inheriting thread-bound session delivery behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038896592" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39014" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39014/hovercard" href="https://github.com/openclaw/openclaw/pull/39014">#39014</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lidamao633/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lidamao633">@lidamao633</a>.</li>
<li>Discord/DM session-key normalization: rewrite legacy <code>discord:dm:*</code> and phantom direct-message <code>discord:channel:<user></code> session keys to <code>discord:direct:*</code> when the sender matches, so multi-agent Discord DMs stop falling into empty channel-shaped sessions and resume replying correctly.</li>
<li>Discord/native slash session fallback: treat empty configured bound-session keys as missing so <code>/status</code> and other native commands fall back to the routed slash session and routed channel session instead of blanking Discord session keys in normal channel bindings.</li>
<li>Agents/tool-call dispatch normalization: normalize provider-prefixed tool names before dispatch across <code>toolCall</code>, <code>toolUse</code>, and <code>functionCall</code> blocks, while preserving multi-segment tool suffixes when stripping provider wrappers so malformed-but-recoverable tool names no longer fail with <code>Tool not found</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040084397" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39328" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39328/hovercard" href="https://github.com/openclaw/openclaw/pull/39328">#39328</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/parallel tool-call compatibility: honor <code>parallel_tool_calls</code> / <code>parallelToolCalls</code> extra params only for <code>openai-completions</code> and <code>openai-responses</code> payloads, preserve higher-precedence alias overrides across config and runtime layers, and ignore invalid non-boolean values so single-tool-call providers like NVIDIA-hosted Kimi stop failing on forced parallel tool-call payloads. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031894719" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37048" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37048/hovercard" href="https://github.com/openclaw/openclaw/issues/37048">#37048</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Config/invalid-load fail-closed: stop converting <code>INVALID_CONFIG</code> into an empty runtime config, keep valid settings available only through explicit best-effort diagnostic reads, and route read-only CLI diagnostics through that path so unknown keys no longer silently drop security-sensitive config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998637289" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28140" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28140/hovercard" href="https://github.com/openclaw/openclaw/issues/28140">#28140</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bobsahur-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bobsahur-robot">@bobsahur-robot</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/codex-cli sandbox defaults: switch the built-in Codex backend from <code>read-only</code> to <code>workspace-write</code> so spawned coding runs can edit files out of the box. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040104302" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39336" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39336/hovercard" href="https://github.com/openclaw/openclaw/pull/39336">#39336</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xtangping/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xtangping">@0xtangping</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xtangping/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xtangping">@0xtangping</a>.</li>
<li>Gateway/health-monitor restart reason labeling: report <code>disconnected</code> instead of <code>stuck</code> for clean channel disconnect restarts, so operator logs distinguish socket drops from genuinely stuck channels. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029327289" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36436" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36436/hovercard" href="https://github.com/openclaw/openclaw/pull/36436">#36436</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Control UI/agents-page overrides: auto-create minimal per-agent config entries when editing inherited agents, so model/tool/skill changes enable Save and inherited model fallbacks can be cleared by writing a primary-only override. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040082679" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39326" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39326/hovercard" href="https://github.com/openclaw/openclaw/pull/39326">#39326</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>.</li>
<li>Gateway/Telegram webhook-mode recovery: add <code>webhookCertPath</code> to re-upload self-signed certificates during webhook registration and skip stale-socket detection for webhook-mode channels, so Telegram webhook setups survive health-monitor restarts. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040061907" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39313" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39313/hovercard" href="https://github.com/openclaw/openclaw/pull/39313">#39313</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fellanH/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fellanH">@fellanH</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fellanH/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fellanH">@fellanH</a>.</li>
<li>Discord/config schema parity: add <code>channels.discord.agentComponents</code> to the strict Zod config schema so valid <code>agentComponents.enabled</code> settings (root and account-scoped) no longer fail with unrecognized-key validation errors. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040212280" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39378" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39378/hovercard" href="https://github.com/openclaw/openclaw/pull/39378">#39378</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>ACPX/MCP session bootstrap: inject configured MCP servers into ACP <code>session/new</code> and <code>session/load</code> for acpx-backed sessions, restoring Canva and other external MCP tools. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040106640" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39337/hovercard" href="https://github.com/openclaw/openclaw/pull/39337">#39337</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/goodspeed-apps/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/goodspeed-apps">@goodspeed-apps</a>.</li>
<li>Control UI/Telegram sender labels: preserve inbound sender labels in sanitized chat history so dashboard user-message groups split correctly and show real group-member names instead of <code>You</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040312761" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39414" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39414/hovercard" href="https://github.com/openclaw/openclaw/pull/39414">#39414</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.7-beta.1
2026-03-08T04:54:11Z
openclaw 2026.3.7-beta.1
<h3>Changes</h3>
<ul>
<li>Agents/context engine plugin interface: add <code>ContextEngine</code> plugin slot with full lifecycle hooks (<code>bootstrap</code>, <code>ingest</code>, <code>assemble</code>, <code>compact</code>, <code>afterTurn</code>, <code>prepareSubagentSpawn</code>, <code>onSubagentEnded</code>), slot-based registry with config-driven resolution, <code>LegacyContextEngine</code> wrapper preserving existing compaction behavior, scoped subagent runtime for plugin runtimes via <code>AsyncLocalStorage</code>, and <code>sessions.get</code> gateway method. Enables plugins like <code>lossless-claw</code> to provide alternative context management strategies without modifying core compaction logic. Zero behavior change when no context engine plugin is configured. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3970497878" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/22201" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/22201/hovercard" href="https://github.com/openclaw/openclaw/pull/22201">#22201</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>ACP/persistent channel bindings: add durable Discord channel and Telegram topic binding storage, routing resolution, and CLI/docs support so ACP thread targets survive restarts and can be managed consistently. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023558978" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34873" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34873/hovercard" href="https://github.com/openclaw/openclaw/pull/34873">#34873</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>Telegram/ACP topic bindings: accept Telegram Mac Unicode dash option prefixes in <code>/acp spawn</code>, support Telegram topic thread binding (<code>--thread here|auto</code>), route bound-topic follow-ups to ACP sessions, add actionable Telegram approval buttons with prefixed approval-id resolution, and pin successful bind confirmations in-topic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030499817" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36683" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36683/hovercard" href="https://github.com/openclaw/openclaw/pull/36683">#36683</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/huntharo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/huntharo">@huntharo</a>.</li>
<li>Telegram/topic agent routing: support per-topic <code>agentId</code> overrides in forum groups and DM topics so topics can route to dedicated agents with isolated sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019308625" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33647" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33647/hovercard" href="https://github.com/openclaw/openclaw/pull/33647">#33647</a>; based on <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010127003" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31513" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31513/hovercard" href="https://github.com/openclaw/openclaw/pull/31513">#31513</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesor">@kesor</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Web UI/i18n: add Spanish (<code>es</code>) locale support in the Control UI, including locale detection, lazy loading, and language picker labels across supported locales. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024643356" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35038" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35038/hovercard" href="https://github.com/openclaw/openclaw/pull/35038">#35038</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/DaoPromociones/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/DaoPromociones">@DaoPromociones</a>.</li>
<li>Onboarding/web search: add provider selection step and full provider list in configure wizard, with SecretRef ref-mode support during onboarding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020228190" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34009" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34009/hovercard" href="https://github.com/openclaw/openclaw/pull/34009">#34009</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesku/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesku">@kesku</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Tools/Web search: switch Perplexity provider to Search API with structured results plus new language/region/time filters. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019733266" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33822" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33822/hovercard" href="https://github.com/openclaw/openclaw/pull/33822">#33822</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kesku/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kesku">@kesku</a>.</li>
<li>Gateway: add SecretRef support for gateway.auth.token with auth-mode guardrails. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024904470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35094" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35094/hovercard" href="https://github.com/openclaw/openclaw/pull/35094">#35094</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Docker/Podman extension dependency baking: add <code>OPENCLAW_EXTENSIONS</code> so container builds can preinstall selected bundled extension npm dependencies into the image for faster and more reproducible startup in container deployments. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013580715" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32223" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32223/hovercard" href="https://github.com/openclaw/openclaw/pull/32223">#32223</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a>.</li>
<li>Plugins/before_prompt_build system-context fields: add <code>prependSystemContext</code> and <code>appendSystemContext</code> so static plugin guidance can be placed in system prompt space for provider caching and lower repeated prompt token cost. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025118425" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35177" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35177/hovercard" href="https://github.com/openclaw/openclaw/pull/35177">#35177</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/maweibin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/maweibin">@maweibin</a>.</li>
<li>Plugins/hook policy: add <code>plugins.entries.<id>.hooks.allowPromptInjection</code>, validate unknown typed hook names at runtime, and preserve legacy <code>before_agent_start</code> model/provider overrides while stripping prompt-mutating fields when prompt injection is disabled. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029898443" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36567" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36567/hovercard" href="https://github.com/openclaw/openclaw/pull/36567">#36567</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Hooks/Compaction lifecycle: emit <code>session:compact:before</code> and <code>session:compact:after</code> internal events plus plugin compaction callbacks with session/count metadata, so automations can react to compaction runs consistently. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3943038943" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/16788" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/16788/hovercard" href="https://github.com/openclaw/openclaw/pull/16788">#16788</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/compaction post-context configurability: add <code>agents.defaults.compaction.postCompactionSections</code> so deployments can choose which <code>AGENTS.md</code> sections are re-injected after compaction, while preserving legacy fallback behavior when the documented default pair is configured in any order. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022385188" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34556" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34556/hovercard" href="https://github.com/openclaw/openclaw/pull/34556">#34556</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/efe-arv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/efe-arv">@efe-arv</a>.</li>
<li>TTS/OpenAI-compatible endpoints: add <code>messages.tts.openai.baseUrl</code> config support with config-over-env precedence, endpoint-aware directive validation, and OpenAI TTS request routing to the resolved base URL. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021331443" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34321" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34321/hovercard" href="https://github.com/openclaw/openclaw/pull/34321">#34321</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RealKai42/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/RealKai42">@RealKai42</a>.</li>
<li>Slack/DM typing feedback: add <code>channels.slack.typingReaction</code> so Socket Mode DMs can show reaction-based processing status even when Slack native assistant typing is unavailable. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3956178808" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19816" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19816/hovercard" href="https://github.com/openclaw/openclaw/pull/19816">#19816</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dalefrieswthat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dalefrieswthat">@dalefrieswthat</a>.</li>
<li>Discord/allowBots mention gating: add <code>allowBots: "mentions"</code> to only accept bot-authored messages that mention the bot. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Agents/tool-result truncation: preserve important tail diagnostics by using head+tail truncation for oversized tool results while keeping configurable truncation options. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3957960099" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20076" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/20076/hovercard" href="https://github.com/openclaw/openclaw/pull/20076">#20076</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jlwestsr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jlwestsr">@jlwestsr</a>.</li>
<li>Cron/job snapshot persistence: skip backup during normalization persistence in <code>ensureLoaded</code> so <code>jobs.json.bak</code> keeps the pre-edit snapshot for recovery, while preserving backup creation on explicit user-driven writes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025265372" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35234" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35234/hovercard" href="https://github.com/openclaw/openclaw/pull/35234">#35234</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xsline/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xsline">@0xsline</a>.</li>
<li>CLI: make read-only SecretRef status flows degrade safely (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031793543" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37023" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37023/hovercard" href="https://github.com/openclaw/openclaw/pull/37023">#37023</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Tools/Diffs guidance: restore a short system-prompt hint for enabled diffs while keeping the detailed instructions in the companion skill, so diffs usage guidance stays out of user-prompt space. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031424694" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36904" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36904/hovercard" href="https://github.com/openclaw/openclaw/pull/36904">#36904</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Tools/Diffs guidance loading: move diffs usage guidance from unconditional prompt-hook injection to the plugin companion skill path, reducing unrelated-turn prompt noise while keeping diffs tool behavior unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014908579" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32630/hovercard" href="https://github.com/openclaw/openclaw/pull/32630">#32630</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sircrumpet/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sircrumpet">@sircrumpet</a>.</li>
<li>Docs/Web search: remove outdated Brave free-tier wording and replace prescriptive AI ToS guidance with neutral compliance language in Brave setup docs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991764005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26860" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26860/hovercard" href="https://github.com/openclaw/openclaw/pull/26860">#26860</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HenryLoenwind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HenryLoenwind">@HenryLoenwind</a>.</li>
<li>Config/Compaction safeguard tuning: expose <code>agents.defaults.compaction.recentTurnsPreserve</code> and quality-guard retry knobs through the validated config surface and embedded-runner wiring, with regression coverage for real config loading and schema metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984348161" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25557" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25557/hovercard" href="https://github.com/openclaw/openclaw/pull/25557">#25557</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>iOS/App Store Connect release prep: align iOS bundle identifiers under <code>ai.openclaw.client</code>, refresh Watch app icons, add Fastlane metadata/screenshot automation, and support Keychain-backed ASC auth for uploads. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038640563" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38936" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38936/hovercard" href="https://github.com/openclaw/openclaw/pull/38936">#38936</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Mattermost/model picker: add Telegram-style interactive provider/model browsing for <code>/oc_model</code> and <code>/oc_models</code>, fix picker callback updates, and emit a normal confirmation reply when a model is selected. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038164909" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38767" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38767/hovercard" href="https://github.com/openclaw/openclaw/pull/38767">#38767</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mukhtharcm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mukhtharcm">@mukhtharcm</a>.</li>
<li>Docker/multi-stage build: restructure Dockerfile as a multi-stage build to produce a minimal runtime image without build tools, source code, or Bun; add <code>OPENCLAW_VARIANT=slim</code> build arg for a bookworm-slim variant. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037029901" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38479" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38479/hovercard" href="https://github.com/openclaw/openclaw/pull/38479">#38479</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sallyom/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sallyom">@sallyom</a>.</li>
</ul>
<h3>Breaking</h3>
<ul>
<li><strong>BREAKING:</strong> Gateway auth now requires explicit <code>gateway.auth.mode</code> when both <code>gateway.auth.token</code> and <code>gateway.auth.password</code> are configured (including SecretRefs). Set <code>gateway.auth.mode</code> to <code>token</code> or <code>password</code> before upgrade to avoid startup/pairing/TUI failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024904470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35094" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35094/hovercard" href="https://github.com/openclaw/openclaw/pull/35094">#35094</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Models/MiniMax: stop advertising removed <code>MiniMax-M2.5-Lightning</code> in built-in provider catalogs, onboarding metadata, and docs; keep the supported fast-tier model as <code>MiniMax-M2.5-highspeed</code>.</li>
<li>Security/Config: fail closed when <code>loadConfig()</code> hits validation or read errors so invalid configs cannot silently fall back to permissive runtime defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3898169913" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9040" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/9040/hovercard" href="https://github.com/openclaw/openclaw/pull/9040">#9040</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joetomasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joetomasone">@joetomasone</a>.</li>
<li>Memory/Hybrid search: preserve negative FTS5 BM25 relevance ordering in <code>bm25RankToScore()</code> so stronger keyword matches rank above weaker ones instead of collapsing or reversing scores. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019606216" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33757" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33757/hovercard" href="https://github.com/openclaw/openclaw/pull/33757">#33757</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lsdcc01/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lsdcc01">@lsdcc01</a>.</li>
<li>LINE/<code>requireMention</code> group gating: align inbound and reply-stage LINE group policy resolution across raw, <code>group:</code>, and <code>room:</code> keys (including account-scoped group config), preserve plugin-backed reply-stage fallback behavior, and add regression coverage for prefixed-only group/room config plus reply-stage policy resolution. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027016129" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35847" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35847/hovercard" href="https://github.com/openclaw/openclaw/pull/35847">#35847</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kirisame-wang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kirisame-wang">@kirisame-wang</a>.</li>
<li>Onboarding/local setup: default unset local <code>tools.profile</code> to <code>coding</code> instead of <code>messaging</code>, restoring file/runtime tools for fresh local installs while preserving explicit user-set profiles. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035418730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38241/hovercard" href="https://github.com/openclaw/openclaw/pull/38241">#38241</a>, overlap with <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023928736" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34958" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34958/hovercard" href="https://github.com/openclaw/openclaw/pull/34958">#34958</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cgdusek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cgdusek">@cgdusek</a>.</li>
<li>Gateway/Telegram stale-socket restart guard: only apply stale-socket restarts to channels that publish event-liveness timestamps, preventing Telegram providers from being misclassified as stale solely due to long uptime and avoiding restart/pairing storms after upgrade. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036988279" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38464" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38464/hovercard" href="https://github.com/openclaw/openclaw/issues/38464">#38464</a>)</li>
<li>Onboarding/headless Linux daemon probe hardening: treat <code>systemctl --user is-enabled</code> probe failures as non-fatal during daemon install flow so onboarding no longer crashes on SSH/headless VPS environments before showing install guidance. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032530190" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37297" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37297/hovercard" href="https://github.com/openclaw/openclaw/issues/37297">#37297</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/acarbajal-web/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/acarbajal-web">@acarbajal-web</a>.</li>
<li>Memory/QMD mcporter Windows spawn hardening: when <code>mcporter.cmd</code> launch fails with <code>spawn EINVAL</code>, retry via bare <code>mcporter</code> shell resolution so QMD recall can continue instead of falling back to builtin memory search. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3994494668" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27402" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27402/hovercard" href="https://github.com/openclaw/openclaw/issues/27402">#27402</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/i0ivi0i/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/i0ivi0i">@i0ivi0i</a>.</li>
<li>Tools/web_search Brave language-code validation: align <code>search_lang</code> handling with Brave-supported codes (including <code>zh-hans</code>, <code>zh-hant</code>, <code>en-gb</code>, and <code>pt-br</code>), map common alias inputs (<code>zh</code>, <code>ja</code>) to valid Brave values, and reject unsupported codes before upstream requests to prevent 422 failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032435963" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37260" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37260/hovercard" href="https://github.com/openclaw/openclaw/issues/37260">#37260</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/heyanming/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/heyanming">@heyanming</a>.</li>
<li>Models/openai-completions streaming compatibility: force <code>compat.supportsUsageInStreaming=false</code> for non-native OpenAI-compatible endpoints during model normalization, preventing usage-only stream chunks from triggering <code>choices[0]</code> parser crashes in provider streams. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3895550931" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/8714" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/8714/hovercard" href="https://github.com/openclaw/openclaw/issues/8714">#8714</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nonanon1/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nonanon1">@nonanon1</a>.</li>
<li>Tools/xAI native web-search collision guard: drop OpenClaw <code>web_search</code> from tool registration when routing to xAI/Grok model providers (including OpenRouter <code>x-ai/*</code>) to avoid duplicate tool-name request failures against provider-native <code>web_search</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3932545677" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14749" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/14749/hovercard" href="https://github.com/openclaw/openclaw/issues/14749">#14749</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/realsamrat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/realsamrat">@realsamrat</a>.</li>
<li>TUI/token copy-safety rendering: treat long credential-like mixed alphanumeric tokens (including quoted forms) as copy-sensitive in render sanitization so formatter hard-wrap guards no longer inject visible spaces into auth-style values before display. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990601245" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26710" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/26710/hovercard" href="https://github.com/openclaw/openclaw/issues/26710">#26710</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonthane/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonthane">@jasonthane</a>.</li>
<li>WhatsApp/self-chat response prefix fallback: stop forcing <code>"[openclaw]"</code> as the implicit outbound response prefix when no identity name or response prefix is configured, so blank/default prefix settings no longer inject branding text unexpectedly in self-chat flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998036953" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27962" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27962/hovercard" href="https://github.com/openclaw/openclaw/issues/27962">#27962</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ecanmor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ecanmor">@ecanmor</a>.</li>
<li>Memory/QMD search result decoding: accept <code>qmd search</code> hits that only include <code>file</code> URIs (for example <code>qmd://collection/path.md</code>) without <code>docid</code>, resolve them through managed collection roots, and keep multi-collection results keyed by file fallback so valid QMD hits no longer collapse to empty <code>memory_search</code> output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998758823" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28181" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28181/hovercard" href="https://github.com/openclaw/openclaw/issues/28181">#28181</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0x76696265/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0x76696265">@0x76696265</a>.</li>
<li>Memory/QMD collection-name conflict recovery: when <code>qmd collection add</code> fails because another collection already occupies the same <code>path + pattern</code>, detect the conflicting collection from <code>collection list</code>, remove it, and retry add so agent-scoped managed collections are created deterministically instead of being silently skipped; also add warning-only fallback when qmd metadata is unavailable to avoid destructive guesses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984009553" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25496" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/25496/hovercard" href="https://github.com/openclaw/openclaw/issues/25496">#25496</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Ramsbaby/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Ramsbaby">@Ramsbaby</a>.</li>
<li>Slack/app_mention race dedupe: when <code>app_mention</code> dispatch wins while same-<code>ts</code> <code>message</code> prepare is still in-flight, suppress the later message dispatch so near-simultaneous Slack deliveries do not produce duplicate replies; keep single-retry behavior and add regression coverage for both dropped and successful message-prepare outcomes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031846861" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37033" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37033/hovercard" href="https://github.com/openclaw/openclaw/pull/37033">#37033</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Gateway/chat streaming tool-boundary text retention: merge assistant delta segments into per-run chat buffers so pre-tool text is preserved in live chat deltas/finals when providers emit post-tool assistant segments as non-prefix snapshots. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031575812" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36957" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36957/hovercard" href="https://github.com/openclaw/openclaw/issues/36957">#36957</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Datyedyeguy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Datyedyeguy">@Datyedyeguy</a>.</li>
<li>TUI/model indicator freshness: prevent stale session snapshots from overwriting freshly patched model selection (and reset per-session freshness when switching session keys) so <code>/model</code> updates reflect immediately instead of lagging by one or more commands. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3965087810" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/21255" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/21255/hovercard" href="https://github.com/openclaw/openclaw/issues/21255">#21255</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kowza/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kowza">@kowza</a>.</li>
<li>TUI/final-error rendering fallback: when a chat <code>final</code> event has no renderable assistant content but includes envelope <code>errorMessage</code>, render the formatted error text instead of collapsing to <code>"(no output)"</code>, preserving actionable failure context in-session. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3932012955" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14687" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/14687/hovercard" href="https://github.com/openclaw/openclaw/issues/14687">#14687</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mquarmoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mquarmoc">@Mquarmoc</a>.</li>
<li>TUI/session-key alias event matching: treat chat events whose session keys are canonical aliases (for example <code>agent:<id>:main</code> vs <code>main</code>) as the same session while preserving cross-agent isolation, so assistant replies no longer disappear or surface in another terminal window due to strict key-form mismatch. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019988243" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33937" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33937/hovercard" href="https://github.com/openclaw/openclaw/issues/33937">#33937</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yjh1412/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yjh1412">@yjh1412</a>.</li>
<li>OpenAI Codex OAuth/login parity: keep <code>openclaw models auth login --provider openai-codex</code> on the built-in path even without provider plugins, preserve Pi-generated authorize URLs without local scope rewriting, and stop validating successful Codex sign-ins against the public OpenAI Responses API after callback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033203418" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37558" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37558/hovercard" href="https://github.com/openclaw/openclaw/pull/37558">#37558</a>; follow-up to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030353957" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36660" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36660/hovercard" href="https://github.com/openclaw/openclaw/issues/36660">#36660</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3979646167" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24720" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/24720/hovercard" href="https://github.com/openclaw/openclaw/issues/24720">#24720</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/driesvints/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/driesvints">@driesvints</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Skippy-Gunboat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Skippy-Gunboat">@Skippy-Gunboat</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Agents/config schema lookup: add <code>gateway</code> tool action <code>config.schema.lookup</code> so agents can inspect one config path at a time before edits without loading the full schema into prompt context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032440218" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37266" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37266/hovercard" href="https://github.com/openclaw/openclaw/pull/37266">#37266</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Onboarding/API key input hardening: strip non-Latin1 Unicode artifacts from normalized secret input (while preserving Latin-1 content and internal spaces) so malformed copied API keys cannot trigger HTTP header <code>ByteString</code> construction crashes; adds regression coverage for shared normalization and MiniMax auth header usage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3978129315" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24496" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/24496/hovercard" href="https://github.com/openclaw/openclaw/issues/24496">#24496</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fa6maalassaf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fa6maalassaf">@fa6maalassaf</a>.</li>
<li>Kimi Coding/Anthropic tools compatibility: normalize <code>anthropic-messages</code> tool payloads to OpenAI-style <code>tools[].function</code> + compatible <code>tool_choice</code> when targeting Kimi Coding endpoints, restoring tool-call workflows that regressed after v2026.3.2. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031858555" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37038" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37038/hovercard" href="https://github.com/openclaw/openclaw/issues/37038">#37038</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mochimochimochi-hub/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mochimochimochi-hub">@mochimochimochi-hub</a>.</li>
<li>Heartbeat/workspace-path guardrails: append explicit workspace <code>HEARTBEAT.md</code> path guidance (and <code>docs/heartbeat.md</code> avoidance) to heartbeat prompts so heartbeat runs target workspace checklists reliably across packaged install layouts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031854549" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37037" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37037/hovercard" href="https://github.com/openclaw/openclaw/issues/37037">#37037</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stofancy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stofancy">@stofancy</a>.</li>
<li>Subagents/kill-complete announce race: when a late <code>subagent-complete</code> lifecycle event arrives after an earlier kill marker, clear stale kill suppression/cleanup flags and re-run announce cleanup so finished runs no longer get silently swallowed. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031794531" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37024" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37024/hovercard" href="https://github.com/openclaw/openclaw/issues/37024">#37024</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cmfinlan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cmfinlan">@cmfinlan</a>.</li>
<li>Agents/tool-result cleanup timeout hardening: on embedded runner teardown idle timeouts, clear pending tool-call state without persisting synthetic <code>missing tool result</code> entries, preventing timeout cleanups from poisoning follow-up turns; adds regression coverage for timeout clear-vs-flush behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031939597" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37081" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37081/hovercard" href="https://github.com/openclaw/openclaw/issues/37081">#37081</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Coyote-Den/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Coyote-Den">@Coyote-Den</a>.</li>
<li>Agents/openai-completions stream timeout hardening: ensure runtime undici global dispatchers use extended streaming body/header timeouts (including env-proxy dispatcher mode) before embedded runs, reducing forced mid-stream <code>terminated</code> failures on long generations; adds regression coverage for dispatcher selection and idempotent reconfiguration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3902267136" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9708" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/9708/hovercard" href="https://github.com/openclaw/openclaw/issues/9708">#9708</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scottchguard/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scottchguard">@scottchguard</a>.</li>
<li>Agents/fallback cooldown probe execution: thread explicit rate-limit cooldown probe intent from model fallback into embedded runner auth-profile selection so same-provider fallback attempts can actually run when all profiles are cooldowned for <code>rate_limit</code> (instead of failing pre-run as <code>No available auth profile</code>), while preserving default cooldown skip behavior and adding regression tests at both fallback and runner layers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3923135499" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/13623" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/13623/hovercard" href="https://github.com/openclaw/openclaw/issues/13623">#13623</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/asfura/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/asfura">@asfura</a>.</li>
<li>Cron/OpenAI Codex OAuth refresh hardening: when <code>openai-codex</code> token refresh fails specifically on account-id extraction, reuse the cached access token instead of failing the run immediately, with regression coverage to keep non-Codex and unrelated refresh failures unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030096599" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36604" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36604/hovercard" href="https://github.com/openclaw/openclaw/issues/36604">#36604</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/laulopezreal/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/laulopezreal">@laulopezreal</a>.</li>
<li>TUI/session isolation for <code>/new</code>: make <code>/new</code> allocate a unique <code>tui-<uuid></code> session key instead of resetting the shared agent session, so multiple TUI clients on the same agent stop receiving each other’s replies; also sanitize <code>/new</code> and <code>/reset</code> failure text before rendering in-terminal. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039731267" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39238" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39238/hovercard" href="https://github.com/openclaw/openclaw/pull/39238">#39238</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>.</li>
<li>Synology Chat/rate-limit env parsing: honor <code>SYNOLOGY_RATE_LIMIT=0</code> as an explicit value while still falling back to the default limit for malformed env values instead of partially parsing them. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039569654" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39197" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39197/hovercard" href="https://github.com/openclaw/openclaw/pull/39197">#39197</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Voice-call/OpenAI Realtime STT config defaults: honor explicit <code>vadThreshold: 0</code> and <code>silenceDurationMs: 0</code> instead of silently replacing them with defaults. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039563423" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39196" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39196/hovercard" href="https://github.com/openclaw/openclaw/pull/39196">#39196</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Voice-call/OpenAI TTS speed config: honor explicit <code>speed: 0</code> instead of silently replacing it with the default speed. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040068961" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39318" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39318/hovercard" href="https://github.com/openclaw/openclaw/pull/39318">#39318</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a>.</li>
<li>launchd/runtime PID parsing: reject <code>pid <= 0</code> from <code>launchctl print</code> so the daemon state parser no longer treats kernel/non-running sentinel values as real process IDs. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039965227" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39281" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39281/hovercard" href="https://github.com/openclaw/openclaw/pull/39281">#39281</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mvanhorn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mvanhorn">@mvanhorn</a>.</li>
<li>Cron/file permission hardening: enforce owner-only (<code>0600</code>) cron store/backup/run-log files and harden cron store + run-log directories to <code>0700</code>, including pre-existing directories from older installs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027883017" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36078" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36078/hovercard" href="https://github.com/openclaw/openclaw/pull/36078">#36078</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aerelune/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aerelune">@aerelune</a>.</li>
<li>Gateway/remote WS break-glass hostname support: honor <code>OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1</code> for <code>ws://</code> hostname URLs (not only private IP literals) across onboarding validation and runtime gateway connection checks, while still rejecting public IP literals and non-unicast IPv6 endpoints. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031509238" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36930" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36930/hovercard" href="https://github.com/openclaw/openclaw/issues/36930">#36930</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/manju-rn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/manju-rn">@manju-rn</a>.</li>
<li>Routing/binding lookup scalability: pre-index route bindings by channel/account and avoid full binding-list rescans on channel-account cache rollover, preventing multi-second <code>resolveAgentRoute</code> stalls in large binding configurations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031458282" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36915" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36915/hovercard" href="https://github.com/openclaw/openclaw/issues/36915">#36915</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/songchenghao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/songchenghao">@songchenghao</a>.</li>
<li>Browser/session cleanup: track browser tabs opened by session-scoped browser tool runs and close tracked tabs during <code>sessions.reset</code>/<code>sessions.delete</code> runtime cleanup, preventing orphaned tabs and unbounded browser memory growth after session teardown. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030389970" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36666" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36666/hovercard" href="https://github.com/openclaw/openclaw/issues/36666">#36666</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Harnoor6693/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Harnoor6693">@Harnoor6693</a>.</li>
<li>Plugin/hook install rollback hardening: stage installs under the canonical install base, validate and run dependency installs before publish, and restore updates by rename instead of deleting the target path, reducing partial-replace and symlink-rebind risk during install failures.</li>
<li>Slack/local file upload allowlist parity: propagate <code>mediaLocalRoots</code> through the Slack send action pipeline so workspace-rooted attachments pass <code>assertLocalMediaAllowed</code> checks while non-allowlisted paths remain blocked. (synthesis: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030315558" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36656" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36656/hovercard" href="https://github.com/openclaw/openclaw/pull/36656">#36656</a>; overlap considered from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029691274" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36516" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36516/hovercard" href="https://github.com/openclaw/openclaw/pull/36516">#36516</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029602942" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36496" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36496/hovercard" href="https://github.com/openclaw/openclaw/pull/36496">#36496</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029576121" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36493" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36493/hovercard" href="https://github.com/openclaw/openclaw/pull/36493">#36493</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029542836" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36484" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36484/hovercard" href="https://github.com/openclaw/openclaw/pull/36484">#36484</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014971501" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32648" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32648/hovercard" href="https://github.com/openclaw/openclaw/pull/32648">#32648</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4007985843" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30888" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30888/hovercard" href="https://github.com/openclaw/openclaw/pull/30888">#30888</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/2233admin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/2233admin">@2233admin</a>.</li>
<li>Agents/compaction safeguard pre-check: skip embedded compaction before entering the Pi SDK when a session has no real conversation messages, avoiding unnecessary LLM API calls on idle sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029395251" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36451" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36451/hovercard" href="https://github.com/openclaw/openclaw/pull/36451">#36451</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Config/schema cache key stability: build merged schema cache keys with incremental hashing to avoid large single-string serialization and prevent <code>RangeError: Invalid string length</code> on high-cardinality plugin/channel metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030084320" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36603" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36603/hovercard" href="https://github.com/openclaw/openclaw/pull/36603">#36603</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/powermaster888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/powermaster888">@powermaster888</a>.</li>
<li>iMessage/cron completion announces: strip leaked inline reply tags (for example <code>[[reply_to:6100]]</code>) from user-visible completion text so announcement deliveries do not expose threading metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3978865795" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24600" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/24600/hovercard" href="https://github.com/openclaw/openclaw/issues/24600">#24600</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Control UI/iMessage duplicate reply routing: keep internal webchat turns on dispatcher delivery (instead of origin-channel reroute) so Control UI chats do not duplicate replies into iMessage, while preserving webchat-provider relayed routing for external surfaces. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018632520" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33483" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33483/hovercard" href="https://github.com/openclaw/openclaw/issues/33483">#33483</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alicexmolt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alicexmolt">@alicexmolt</a>.</li>
<li>Sessions/daily reset transcript archival: archive prior transcript files during stale-session scheduled/daily resets by capturing the previous session entry before rollover, preventing orphaned transcript files on disk. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025823371" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35493" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35493/hovercard" href="https://github.com/openclaw/openclaw/pull/35493">#35493</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/byungsker/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/byungsker">@byungsker</a>.</li>
<li>Feishu/group slash command detection: normalize group mention wrappers before command-authorization probing so mention-prefixed commands (for example <code>@Bot/model</code> and <code>@Bot /reset</code>) are recognized as gateway commands instead of being forwarded to the agent. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4027596989" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35994" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/35994/hovercard" href="https://github.com/openclaw/openclaw/issues/35994">#35994</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Control UI/auth token separation: keep the shared gateway token in browser auth validation while reserving cached device tokens for signed device payloads, preventing false <code>device token mismatch</code> disconnects after restart/rotation. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032692837" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37382" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37382/hovercard" href="https://github.com/openclaw/openclaw/pull/37382">#37382</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FradSer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FradSer">@FradSer</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/FradSer/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/FradSer">@FradSer</a>.</li>
<li>Gateway/browser auth reconnect hardening: stop counting missing token/password submissions as auth rate-limit failures, and stop auto-reconnecting Control UI clients on non-recoverable auth errors so misconfigured browser tabs no longer lock out healthy sessions. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038068989" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38725" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38725/hovercard" href="https://github.com/openclaw/openclaw/pull/38725">#38725</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Gateway/service token drift repair: stop persisting shared auth tokens into installed gateway service units, flag stale embedded service tokens for reinstall, and treat tokenless service env as canonical so token rotation/reboot flows stay aligned with config/env resolution. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999555909" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28428" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28428/hovercard" href="https://github.com/openclaw/openclaw/pull/28428">#28428</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/l0cka/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/l0cka">@l0cka</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/l0cka/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/l0cka">@l0cka</a>.</li>
<li>Control UI/agents-page selection: keep the edited agent selected after saving agent config changes and reloading the agents list, so <code>/agents</code> no longer snaps back to the default agent. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040026646" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39301" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39301/hovercard" href="https://github.com/openclaw/openclaw/pull/39301">#39301</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/auth follow-up hardening: preserve systemd <code>EnvironmentFile=</code> precedence/source provenance in daemon audits and doctor repairs, block shared-password override flows from piggybacking cached device tokens, and fail closed when config-first gateway SecretRefs cannot resolve. Follow-up to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039739948" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39241/hovercard" href="https://github.com/openclaw/openclaw/pull/39241">#39241</a>.</li>
<li>Agents/context pruning: guard assistant thinking/text char estimation against malformed blocks (missing <code>thinking</code>/<code>text</code> strings or null entries) so pruning no longer crashes with malformed provider content. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025061925" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35146" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35146/hovercard" href="https://github.com/openclaw/openclaw/pull/35146">#35146</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/transcript policy: set <code>preserveSignatures</code> to Anthropic-only handling in <code>resolveTranscriptPolicy</code> so Anthropic thinking signatures are preserved while non-Anthropic providers remain unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015492620" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32813" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32813/hovercard" href="https://github.com/openclaw/openclaw/pull/32813">#32813</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/schema cleaning: detect Venice + Grok model IDs as xAI-proxied targets so unsupported JSON Schema keywords are stripped before requests, preventing Venice/Grok <code>Invalid arguments</code> failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025497712" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35355" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35355/hovercard" href="https://github.com/openclaw/openclaw/pull/35355">#35355</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Skills/native command deduplication: centralize skill command dedupe by canonical <code>skillName</code> in <code>listSkillCommandsForAgents</code> so duplicate suffixed variants (for example <code>_2</code>) are no longer surfaced across interfaces outside Discord. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995325120" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27521" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27521/hovercard" href="https://github.com/openclaw/openclaw/pull/27521">#27521</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shivama205/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shivama205">@shivama205</a>.</li>
<li>Agents/xAI tool-call argument decoding: decode HTML-entity encoded xAI/Grok tool-call argument values (<code>&amp;</code>, <code>&quot;</code>, <code>&lt;</code>, <code>&gt;</code>, numeric entities) before tool execution so commands with shell operators and quotes no longer fail with parse errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025358796" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35276" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35276/hovercard" href="https://github.com/openclaw/openclaw/pull/35276">#35276</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Linux/WSL2 daemon install hardening: add regression coverage for WSL environment detection, WSL-specific systemd guidance, and <code>systemctl --user is-enabled</code> failure paths so WSL2/headless onboarding keeps treating bus-unavailable probes as non-fatal while preserving real permission errors. Related: <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029600877" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36495" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36495/hovercard" href="https://github.com/openclaw/openclaw/issues/36495">#36495</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Linux/systemd status and degraded-session handling: treat degraded-but-reachable <code>systemctl --user status</code> results as available, preserve early errors for truly unavailable user-bus cases, and report externally managed running services as running instead of <code>not installed</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/thinking-tag promotion hardening: guard <code>promoteThinkingTagsToBlocks</code> against malformed assistant content entries (<code>null</code>/<code>undefined</code>) before <code>block.type</code> reads so malformed provider payloads no longer crash session processing while preserving pass-through behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025054148" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35143" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35143/hovercard" href="https://github.com/openclaw/openclaw/pull/35143">#35143</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Gateway/Control UI version reporting: align runtime and browser client version metadata to avoid <code>dev</code> placeholders, wait for bootstrap version before first UI websocket connect, and only forward bootstrap <code>serverVersion</code> to same-origin gateway targets to prevent cross-target version leakage. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025252741" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35230" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35230/hovercard" href="https://github.com/openclaw/openclaw/pull/35230">#35230</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008118441" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30928" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30928/hovercard" href="https://github.com/openclaw/openclaw/pull/30928">#30928</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019971325" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33928" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33928/hovercard" href="https://github.com/openclaw/openclaw/pull/33928">#33928</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joelnishanth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joelnishanth">@joelnishanth</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MoerAI/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MoerAI">@MoerAI</a>.</li>
<li>Control UI/markdown parser crash fallback: catch <code>marked.parse()</code> failures and fall back to escaped plain-text <code><pre></code> rendering so malformed recursive markdown no longer crashes Control UI session rendering on load. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029374534" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36445" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36445/hovercard" href="https://github.com/openclaw/openclaw/pull/36445">#36445</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BinHPdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BinHPdev">@BinHPdev</a>.</li>
<li>Control UI/markdown fallback regression coverage: add explicit regression assertions for parser-error fallback behavior so malformed markdown no longer risks reintroducing hard-crash rendering paths in future markdown/parser upgrades. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029374534" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36445" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36445/hovercard" href="https://github.com/openclaw/openclaw/pull/36445">#36445</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BinHPdev/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BinHPdev">@BinHPdev</a>.</li>
<li>Web UI/config form: treat <code>additionalProperties: true</code> object schemas as editable map entries instead of unsupported fields so Accounts-style maps stay editable in form mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025551328" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35380" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35380/hovercard" href="https://github.com/openclaw/openclaw/pull/35380">#35380</a>, supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012842878" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32072" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32072/hovercard" href="https://github.com/openclaw/openclaw/pull/32072">#32072</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Feishu/streaming card delivery synthesis: unify snapshot and delta streaming merge semantics, apply overlap-aware final merge, suppress duplicate final text delivery (including text+media final packets), prefer topic-thread <code>message.reply</code> routing when a reply target exists, and tune card print cadence to avoid duplicate incremental rendering. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017550560" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33245" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33245/hovercard" href="https://github.com/openclaw/openclaw/pull/33245">#33245</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015930946" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32896" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32896/hovercard" href="https://github.com/openclaw/openclaw/pull/32896">#32896</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019791597" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33840" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33840/hovercard" href="https://github.com/openclaw/openclaw/pull/33840">#33840</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rexl2018/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rexl2018">@rexl2018</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kcinzgg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kcinzgg">@kcinzgg</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/aerelune/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/aerelune">@aerelune</a>.</li>
<li>Feishu/group mention detection: carry startup-probed bot display names through monitor dispatch so <code>requireMention</code> checks compare against current bot identity instead of stale config names, fixing missed <code>@bot</code> handling in groups while preserving multi-bot false-positive guards. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028836237" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36317" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36317/hovercard" href="https://github.com/openclaw/openclaw/issues/36317">#36317</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021111936" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34271" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/34271/hovercard" href="https://github.com/openclaw/openclaw/issues/34271">#34271</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Security/dependency audit: patch transitive Hono vulnerabilities by pinning <code>hono</code> to <code>4.12.5</code> and <code>@hono/node-server</code> to <code>1.19.10</code> in production resolution paths. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shakkernerd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shakkernerd">@shakkernerd</a>.</li>
<li>Security/dependency audit: bump <code>tar</code> to <code>7.5.10</code> (from <code>7.5.9</code>) to address the high-severity hardlink path traversal advisory (<code>GHSA-qffp-2rhf-9h96</code>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shakkernerd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shakkernerd">@shakkernerd</a>.</li>
<li>Cron/announce delivery robustness: bypass pending-descendant announce guards for cron completion sends, ensure named-agent announce routes have outbound session entries, and fall back to direct delivery only when an announce send was actually attempted and failed. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025137128" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35185/hovercard" href="https://github.com/openclaw/openclaw/pull/35185">#35185</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014378867" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32443" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32443/hovercard" href="https://github.com/openclaw/openclaw/pull/32443">#32443</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024188297" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34987" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34987/hovercard" href="https://github.com/openclaw/openclaw/pull/34987">#34987</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Cron/announce best-effort fallback: run direct outbound fallback after attempted announce failures even when delivery is configured as best-effort, so Telegram cron sends are not left as attempted-but-undelivered after <code>cron announce delivery failed</code> warnings.</li>
<li>Auto-reply/system events: restore runtime system events to the message timeline (<code>System:</code> lines), preserve think-hint parsing with prepended events, and carry events into deferred followup/collect/steer-backlog prompts to keep cache behavior stable without dropping queued metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023311368" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34794" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34794/hovercard" href="https://github.com/openclaw/openclaw/pull/34794">#34794</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anisoptera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anisoptera">@anisoptera</a>.</li>
<li>Security/audit account handling: avoid prototype-chain account IDs in audit validation by using own-property checks for <code>accounts</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024115607" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34982" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34982/hovercard" href="https://github.com/openclaw/openclaw/pull/34982">#34982</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HOYALIM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HOYALIM">@HOYALIM</a>.</li>
<li>Cron/restart catch-up semantics: replay interrupted recurring jobs and missed immediate cron slots on startup without replaying interrupted one-shot jobs, with guarded missed-slot probing to avoid malformed-schedule startup aborts and duplicate-trigger drift after restart. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021997493" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34466" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34466/hovercard" href="https://github.com/openclaw/openclaw/pull/34466">#34466</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023628470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34896" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34896/hovercard" href="https://github.com/openclaw/openclaw/pull/34896">#34896</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022654501" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34625" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34625/hovercard" href="https://github.com/openclaw/openclaw/pull/34625">#34625</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017424073" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33206" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33206/hovercard" href="https://github.com/openclaw/openclaw/pull/33206">#33206</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dsantoreis/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dsantoreis">@dsantoreis</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Octane0411/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Octane0411">@Octane0411</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Venice/provider onboarding hardening: align per-model Venice completion-token limits with discovery metadata, clamp untrusted discovery values to safe bounds, sync the static Venice fallback catalog with current live model metadata, and disable tool wiring for Venice models that do not support function calling so default Venice setups no longer fail with <code>max_completion_tokens</code> or unsupported-tools 400s. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035167179" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38168" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38168/hovercard" href="https://github.com/openclaw/openclaw/issues/38168">#38168</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/powermaster888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/powermaster888">@powermaster888</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/session usage tracking: preserve accumulated usage metadata on embedded Pi runner error exits so failed turns still update session <code>totalTokens</code> from real usage instead of stale prior values. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021123135" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34275" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34275/hovercard" href="https://github.com/openclaw/openclaw/pull/34275">#34275</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/RealKai42/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/RealKai42">@RealKai42</a>.</li>
<li>Slack/reaction thread context routing: carry Slack native DM channel IDs through inbound context and threading tool resolution so reaction targets resolve consistently for DM <code>To=user:*</code> sessions (including <code>toolContext.currentChannelId</code> fallback behavior). (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023390440" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34831" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34831/hovercard" href="https://github.com/openclaw/openclaw/pull/34831">#34831</a>; overlaps <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021870066" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34440" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34440/hovercard" href="https://github.com/openclaw/openclaw/pull/34440">#34440</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022135887" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34502" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34502/hovercard" href="https://github.com/openclaw/openclaw/pull/34502">#34502</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022070764" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34483" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34483/hovercard" href="https://github.com/openclaw/openclaw/pull/34483">#34483</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015323116" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32754" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32754/hovercard" href="https://github.com/openclaw/openclaw/pull/32754">#32754</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>.</li>
<li>Subagents/announce completion scoping: scope nested direct-child completion aggregation to the current requester run window, harden frozen completion capture for deterministic descendant synthesis, and route completion announce delivery through parent-agent announce turns with provenance-aware internal events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024850889" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35080" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35080/hovercard" href="https://github.com/openclaw/openclaw/pull/35080">#35080</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyler6204/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyler6204">@tyler6204</a>.</li>
<li>Nodes/system.run approval hardening: use explicit argv-mutation signaling when regenerating prepared <code>rawCommand</code>, and cover the <code>system.run.prepare -> system.run</code> handoff so direct PATH-based <code>nodes.run</code> commands no longer fail with <code>rawCommand does not match command</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017163036" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33137" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33137/hovercard" href="https://github.com/openclaw/openclaw/pull/33137">#33137</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Models/custom provider headers: propagate <code>models.providers.<name>.headers</code> across inline, fallback, and registry-found model resolution so header-authenticated proxies consistently receive configured request headers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995086343" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27490" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27490/hovercard" href="https://github.com/openclaw/openclaw/pull/27490">#27490</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Ollama/remote provider auth fallback: synthesize a local runtime auth key for explicitly configured <code>models.providers.ollama</code> entries that omit <code>apiKey</code>, so remote Ollama endpoints run without requiring manual dummy-key setup while preserving env/profile/config key precedence and missing-config failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3910750828" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/11283" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/11283/hovercard" href="https://github.com/openclaw/openclaw/issues/11283">#11283</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cpreecs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cpreecs">@cpreecs</a>.</li>
<li>Ollama/custom provider headers: forward resolved model headers into native Ollama stream requests so header-authenticated Ollama proxies receive configured request headers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3977052950" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/24337/hovercard" href="https://github.com/openclaw/openclaw/pull/24337">#24337</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/echoVic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/echoVic">@echoVic</a>.</li>
<li>Ollama/compaction and summarization: register custom <code>api: "ollama"</code> handling for compaction, branch-style internal summarization, and TTS text summarization on current <code>main</code>, so native Ollama models no longer fail with <code>No API provider registered for api: ollama</code> outside the main run loop. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JaviLib/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JaviLib">@JaviLib</a>.</li>
<li>Daemon/systemd install robustness: treat <code>systemctl --user is-enabled</code> exit-code-4 <code>not-found</code> responses as not-enabled by combining stderr/stdout detail parsing, so Ubuntu fresh installs no longer fail with <code>systemctl is-enabled unavailable</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019276589" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33634" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33634/hovercard" href="https://github.com/openclaw/openclaw/pull/33634">#33634</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Yuandiaodiaodiao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Yuandiaodiaodiao">@Yuandiaodiaodiao</a>.</li>
<li>Slack/system-event session routing: resolve reaction/member/pin/interaction system-event session keys through channel/account bindings (with sender-aware DM routing) so inbound Slack events target the correct agent session in multi-account setups instead of defaulting to <code>agent:main</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020308598" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34045" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34045/hovercard" href="https://github.com/openclaw/openclaw/pull/34045">#34045</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/paulomcg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/paulomcg">@paulomcg</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/daht-mad/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/daht-mad">@daht-mad</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Slack/native streaming markdown conversion: stop pre-normalizing text passed to Slack native <code>markdown_text</code> in streaming start/append/stop paths to prevent Markdown style corruption from double conversion. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023791419" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34931" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34931/hovercard" href="https://github.com/openclaw/openclaw/pull/34931">#34931</a>)</li>
<li>Gateway/HTTP tools invoke media compatibility: preserve raw media payload access for direct <code>/tools/invoke</code> clients by allowing media <code>nodes</code> invoke commands only in HTTP tool context, while keeping agent-context media invoke blocking to prevent base64 prompt bloat. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021536787" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34365" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34365/hovercard" href="https://github.com/openclaw/openclaw/pull/34365">#34365</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Security/archive ZIP hardening: extract ZIP entries via same-directory temp files plus atomic rename, then re-open and reject post-rename hardlink alias races outside the destination root.</li>
<li>Agents/Nodes media outputs: add dedicated <code>photos_latest</code> action handling, block media-returning <code>nodes invoke</code> commands, keep metadata-only <code>camera.list</code> invoke allowed, and normalize empty <code>photos_latest</code> results to a consistent response shape to prevent base64 context bloat. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021385666" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34332" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34332/hovercard" href="https://github.com/openclaw/openclaw/pull/34332">#34332</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>TUI/session-key canonicalization: normalize <code>openclaw tui --session</code> values to lowercase so uppercase session names no longer drop real-time streaming updates due to gateway/TUI key mismatches. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019856186" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33866" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/33866/hovercard" href="https://github.com/openclaw/openclaw/issues/33866">#33866</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020243097" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34013" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34013/hovercard" href="https://github.com/openclaw/openclaw/pull/34013">#34013</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lynnzc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lynnzc">@lynnzc</a>.</li>
<li>iMessage/echo loop hardening: strip leaked assistant-internal scaffolding from outbound iMessage replies, drop reflected assistant-content messages before they re-enter inbound processing, extend echo-cache text retention for delayed reflections, and suppress repeated loop traffic before it amplifies into queue overflow. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017765046" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33295" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33295/hovercard" href="https://github.com/openclaw/openclaw/pull/33295">#33295</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joelnishanth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joelnishanth">@joelnishanth</a>.</li>
<li>Skills/workspace boundary hardening: reject workspace and extra-dir skill roots or <code>SKILL.md</code> files whose realpath escapes the configured source root, and skip syncing those escaped skills into sandbox workspaces.</li>
<li>Outbound/send config threading: pass resolved SecretRef config through outbound adapters and helper send paths so send flows do not reload unresolved runtime config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020153706" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33987" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33987/hovercard" href="https://github.com/openclaw/openclaw/pull/33987">#33987</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>gateway: harden shared auth resolution across systemd, discord, and node host (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039739948" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39241/hovercard" href="https://github.com/openclaw/openclaw/pull/39241">#39241</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Secrets/models.json persistence hardening: keep SecretRef-managed api keys + headers from persisting in generated models.json, expand audit/apply coverage, and harden marker handling/serialization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038699562" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38955" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38955/hovercard" href="https://github.com/openclaw/openclaw/pull/38955">#38955</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Sessions/subagent attachments: remove <code>attachments[].content.maxLength</code> from <code>sessions_spawn</code> schema to avoid llama.cpp GBNF repetition overflow, and preflight UTF-8 byte size before buffer allocation while keeping runtime file-size enforcement unchanged. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019311194" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33648" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33648/hovercard" href="https://github.com/openclaw/openclaw/pull/33648">#33648</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/anisoptera/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/anisoptera">@anisoptera</a>.</li>
<li>Runtime/tool-state stability: recover from dangling Anthropic <code>tool_use</code> after compaction, serialize long-running Discord handler runs without blocking new inbound events, and prevent stale busy snapshots from suppressing stuck-channel recovery. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019251568" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33630/hovercard" href="https://github.com/openclaw/openclaw/pull/33630">#33630</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019088183" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33583" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33583/hovercard" href="https://github.com/openclaw/openclaw/pull/33583">#33583</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinWangSheng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinWangSheng">@kevinWangSheng</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/theotarr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/theotarr">@theotarr</a>.</li>
<li>ACP/Discord startup hardening: clean up stuck ACP worker children on gateway restart, unbind stale ACP thread bindings during Discord startup reconciliation, and add per-thread listener watchdog timeouts so wedged turns cannot block later messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019470850" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33699" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33699/hovercard" href="https://github.com/openclaw/openclaw/pull/33699">#33699</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>Extensions/media local-root propagation: consistently forward <code>mediaLocalRoots</code> through extension <code>sendMedia</code> adapters (Google Chat, Slack, iMessage, Signal, WhatsApp), preserving non-local media behavior while restoring local attachment resolution from configured roots. Synthesis of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019086647" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33581" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33581/hovercard" href="https://github.com/openclaw/openclaw/pull/33581">#33581</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018984148" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33545" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33545/hovercard" href="https://github.com/openclaw/openclaw/pull/33545">#33545</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018974981" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33540" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33540/hovercard" href="https://github.com/openclaw/openclaw/pull/33540">#33540</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018964929" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33536" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33536/hovercard" href="https://github.com/openclaw/openclaw/pull/33536">#33536</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4018937294" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33528" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33528/hovercard" href="https://github.com/openclaw/openclaw/pull/33528">#33528</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Gateway/plugin HTTP auth hardening: require gateway auth when any overlapping matched route needs it, block mixed-auth fallthrough at dispatch, and reject mixed-auth exact/prefix route overlaps during plugin registration.</li>
<li>Feishu/video media send contract: keep mp4-like outbound payloads on <code>msg_type: "media"</code> (including reply and reply-in-thread paths) so videos render as media instead of degrading to file-link behavior, while preserving existing non-video file subtype handling. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019505587" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33720" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33720/hovercard" href="https://github.com/openclaw/openclaw/pull/33720">#33720</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019719481" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33808" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33808/hovercard" href="https://github.com/openclaw/openclaw/pull/33808">#33808</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019389385" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33678" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33678/hovercard" href="https://github.com/openclaw/openclaw/pull/33678">#33678</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/polooooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/polooooo">@polooooo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dingjianrui/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dingjianrui">@dingjianrui</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinWangSheng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinWangSheng">@kevinWangSheng</a>.</li>
<li>Gateway/security default response headers: add <code>Permissions-Policy: camera=(), microphone=(), geolocation=()</code> to baseline gateway HTTP security headers for all responses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005858552" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30186" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30186/hovercard" href="https://github.com/openclaw/openclaw/pull/30186">#30186</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/habakan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/habakan">@habakan</a>.</li>
<li>Plugins/startup loading: lazily initialize plugin runtime, split startup-critical plugin SDK imports into <code>openclaw/plugin-sdk/core</code> and <code>openclaw/plugin-sdk/telegram</code>, and preserve <code>api.runtime</code> reflection semantics for plugin compatibility. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000493376" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28620" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28620/hovercard" href="https://github.com/openclaw/openclaw/pull/28620">#28620</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hmemcpy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hmemcpy">@hmemcpy</a>.</li>
<li>Plugins/startup performance: reduce bursty plugin discovery/manifest overhead with short in-process caches, skip importing bundled memory plugins that are disabled by slot selection, and speed legacy root <code>openclaw/plugin-sdk</code> compatibility via runtime root-alias routing while preserving backward compatibility. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Build/lazy runtime boundaries: replace ineffective dynamic import sites with dedicated lazy runtime boundaries across Slack slash handling, Telegram audit, CLI send deps, memory fallback, and outbound delivery paths while preserving behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019418279" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33690" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33690/hovercard" href="https://github.com/openclaw/openclaw/pull/33690">#33690</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Gateway/password CLI hardening: add <code>openclaw gateway run --password-file</code>, warn when inline <code>--password</code> is used because it can leak via process listings, and document env/file-backed password input as the preferred startup path. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997891470" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27948" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27948/hovercard" href="https://github.com/openclaw/openclaw/issues/27948">#27948</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vibewrk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vibewrk">@vibewrk</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Config/heartbeat legacy-path handling: auto-migrate top-level <code>heartbeat</code> into <code>agents.defaults.heartbeat</code> (with merge semantics that preserve explicit defaults), and keep startup failures on non-migratable legacy entries in the detailed invalid-config path instead of generic migration-failed errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015194071" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32706" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32706/hovercard" href="https://github.com/openclaw/openclaw/pull/32706">#32706</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xiwan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xiwan">@xiwan</a>.</li>
<li>Plugins/SDK subpath parity: expand plugin SDK subpaths across bundled channels/extensions (Discord, Slack, Signal, iMessage, WhatsApp, LINE, and bundled companion plugins), with build/export/type/runtime wiring so scoped imports resolve consistently in source and dist while preserving compatibility. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019555828" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33737" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33737/hovercard" href="https://github.com/openclaw/openclaw/pull/33737">#33737</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Google/Gemini Flash model selection: switch built-in <code>gemini-flash</code> defaults and docs/examples from the nonexistent <code>google/gemini-3.1-flash-preview</code> ID to the working <code>google/gemini-3-flash-preview</code>, while normalizing legacy OpenClaw config that still uses the old Flash 3.1 alias.</li>
<li>Plugins/bundled scoped-import migration: migrate bundled plugins from monolithic <code>openclaw/plugin-sdk</code> imports to scoped subpaths (or <code>openclaw/plugin-sdk/core</code>) across registration and startup-sensitive runtime files, add CI/release guardrails to prevent regressions, and keep root <code>openclaw/plugin-sdk</code> support for external/community plugins. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Routing/session duplicate suppression synthesis: align shared session delivery-context inheritance, channel-paired route-field merges, and reply-surface target matching so dmScope=main turns avoid cross-surface duplicate replies while thread-aware forwarding keeps intended routing semantics. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019248841" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33629" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33629/hovercard" href="https://github.com/openclaw/openclaw/pull/33629">#33629</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992008730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26889" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26889/hovercard" href="https://github.com/openclaw/openclaw/pull/26889">#26889</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3944516926" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17337/hovercard" href="https://github.com/openclaw/openclaw/pull/17337">#17337</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017573265" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33250" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33250/hovercard" href="https://github.com/openclaw/openclaw/pull/33250">#33250</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Yuandiaodiaodiao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Yuandiaodiaodiao">@Yuandiaodiaodiao</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinwildenradt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinwildenradt">@kevinwildenradt</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Routing/legacy session route inheritance: preserve external route metadata inheritance for legacy channel session keys (<code>agent:<agent>:<channel>:<peer></code> and <code>...:thread:<id></code>) so <code>chat.send</code> does not incorrectly fall back to webchat when valid delivery context exists. Follow-up to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019674027" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33786" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33786/hovercard" href="https://github.com/openclaw/openclaw/pull/33786">#33786</a>.</li>
<li>Routing/legacy route guard tightening: require legacy session-key channel hints to match the saved delivery channel before inheriting external routing metadata, preventing custom namespaced keys like <code>agent:<agent>:work:<ticket></code> from inheriting stale non-webchat routes.</li>
<li>Gateway/internal client routing continuity: prevent webchat/TUI/UI turns from inheriting stale external reply routes by requiring explicit <code>deliver: true</code> for external delivery, keeping main-session external inheritance scoped to non-Webchat/UI clients, and honoring configured <code>session.mainKey</code> when identifying main-session continuity. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025440908" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35321" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35321/hovercard" href="https://github.com/openclaw/openclaw/pull/35321">#35321</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022703535" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34635" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34635/hovercard" href="https://github.com/openclaw/openclaw/pull/34635">#34635</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025498457" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35356" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35356/hovercard" href="https://github.com/openclaw/openclaw/pull/35356">#35356</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alexyyyander/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alexyyyander">@alexyyyander</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Octane0411/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Octane0411">@Octane0411</a>.</li>
<li>Security/auth labels: remove token and API-key snippets from user-facing auth status labels so <code>/status</code> and <code>/models</code> do not expose credential fragments. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017639745" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33262" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33262/hovercard" href="https://github.com/openclaw/openclaw/pull/33262">#33262</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cu1ch3n/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cu1ch3n">@cu1ch3n</a>.</li>
<li>Models/MiniMax portal vision routing: add <code>MiniMax-VL-01</code> to the <code>minimax-portal</code> provider, route portal image understanding through the MiniMax VLM endpoint, and align media auto-selection plus Telegram sticker description with the shared portal image provider path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020060518" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33953" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33953/hovercard" href="https://github.com/openclaw/openclaw/pull/33953">#33953</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tars90percent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tars90percent">@tars90percent</a>.</li>
<li>Auth/credential semantics: align profile eligibility + probe diagnostics with SecretRef/expiry rules and harden browser download atomic writes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019552839" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33733" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33733/hovercard" href="https://github.com/openclaw/openclaw/pull/33733">#33733</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Security/audit denyCommands guidance: suggest likely exact node command IDs for unknown <code>gateway.nodes.denyCommands</code> entries so ineffective denylist entries are easier to correct. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004508544" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29713" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29713/hovercard" href="https://github.com/openclaw/openclaw/pull/29713">#29713</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liquidhorizon88-bot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liquidhorizon88-bot">@liquidhorizon88-bot</a>.</li>
<li>Agents/overload failover handling: classify overloaded provider failures separately from rate limits/status timeouts, add short overload backoff before retry/failover, record overloaded prompt/assistant failures as transient auth-profile cooldowns (with probeable same-provider fallback) instead of treating them like persistent auth/billing failures, and keep one-shot cron retry classification aligned so overloaded fallback summaries still count as transient retries.</li>
<li>Docs/security hardening guidance: document Docker <code>DOCKER-USER</code> + UFW policy and add cross-linking from Docker install docs for VPS/public-host setups. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995802242" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27613" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27613/hovercard" href="https://github.com/openclaw/openclaw/pull/27613">#27613</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dorukardahan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dorukardahan">@dorukardahan</a>.</li>
<li>Docs/security threat-model links: replace relative <code>.md</code> links with Mintlify-compatible root-relative routes in security docs to prevent broken internal navigation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996286802" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27698" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27698/hovercard" href="https://github.com/openclaw/openclaw/pull/27698">#27698</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/clawdoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/clawdoo">@clawdoo</a>.</li>
<li>Plugins/Update integrity drift: avoid false integrity drift prompts when updating npm-installed plugins from unpinned specs, while keeping drift checks for exact pinned versions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032164519" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37179" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37179/hovercard" href="https://github.com/openclaw/openclaw/pull/37179">#37179</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>iOS/Voice timing safety: guard system speech start/finish callbacks to the active utterance to avoid misattributed start events during rapid stop/restart cycles. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017813987" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33304" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33304/hovercard" href="https://github.com/openclaw/openclaw/pull/33304">#33304</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>; original implementation direction by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Gateway/chat.send command scopes: require <code>operator.admin</code> for persistent <code>/config set|unset</code> writes routed through gateway chat clients while keeping <code>/config show</code> available to normal write-scoped operator clients, preserving messaging-channel config command behavior without widening RPC write scope into admin config mutation. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>iOS/Talk incremental speech pacing: allow long punctuation-free assistant chunks to start speaking at safe whitespace boundaries so voice responses begin sooner instead of waiting for terminal punctuation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017815354" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33305" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33305/hovercard" href="https://github.com/openclaw/openclaw/pull/33305">#33305</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>; original implementation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>iOS/Watch reply reliability: make watch session activation waiters robust under concurrent requests so status/send calls no longer hang intermittently, and align delegate callbacks with Swift 6 actor safety. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017816307" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33306" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33306/hovercard" href="https://github.com/openclaw/openclaw/pull/33306">#33306</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>; original implementation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Rocuts/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Rocuts">@Rocuts</a>.</li>
<li>Docs/tool-loop detection config keys: align <code>docs/tools/loop-detection.md</code> examples and field names with the current <code>tools.loopDetection</code> schema to prevent copy-paste validation failures from outdated keys. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017319797" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33182" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33182/hovercard" href="https://github.com/openclaw/openclaw/pull/33182">#33182</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Mylszd/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Mylszd">@Mylszd</a>.</li>
<li>Gateway/session agent discovery: include disk-scanned agent IDs in <code>listConfiguredAgentIds</code> even when <code>agents.list</code> is configured, so disk-only/ACP agent sessions remain visible in gateway session aggregation and listings. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015558496" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32831" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32831/hovercard" href="https://github.com/openclaw/openclaw/pull/32831">#32831</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Discord/inbound debouncer: skip bot-own MESSAGE_CREATE events before they reach the debounce queue to avoid self-triggered slowdowns in busy servers. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/Agent-scoped media roots: pass <code>mediaLocalRoots</code> through Discord monitor reply delivery (message + component interaction paths) so local media attachments honor per-agent workspace roots instead of falling back to default global roots. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/slash command handling: intercept text-based slash commands in channels, register plugin commands as native, and send fallback acknowledgments for empty slash runs so interactions do not hang. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/thread session lifecycle: reset thread-scoped sessions when a thread is archived so reopening a thread starts fresh without deleting transcript history. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/presence defaults: send an online presence update on ready when no custom presence is configured so bots no longer appear offline by default. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/typing cleanup: stop typing indicators after silent/NO_REPLY runs by marking the run complete before dispatch idle cleanup. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>ACP/sandbox spawn parity: block <code>/acp spawn</code> from sandboxed requester sessions with the same host-runtime guard already enforced for <code>sessions_spawn({ runtime: "acp" })</code>, preserving non-sandbox ACP flows while closing the command-path policy gap. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/patte/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/patte">@patte</a>.</li>
<li>Discord/config SecretRef typing: align Discord account token config typing with SecretInput so SecretRef tokens typecheck. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014507276" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32490" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32490/hovercard" href="https://github.com/openclaw/openclaw/pull/32490">#32490</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Discord/voice messages: request upload slots with JSON fetch calls so voice message uploads no longer fail with content-type errors. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/voice decoder fallback: drop the native Opus dependency and use opusscript for voice decoding to avoid native-opus installs. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/auto presence health signal: add runtime availability-driven presence updates plus connected-state reporting to improve health monitoring and operator visibility. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017687201" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33277" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33277/hovercard" href="https://github.com/openclaw/openclaw/pull/33277">#33277</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>HEIC image inputs: accept HEIC/HEIF <code>input_image</code> sources in Gateway HTTP APIs, normalize them to JPEG before provider delivery, and document the expanded default MIME allowlist. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/HEIC input follow-up: keep non-HEIC <code>input_image</code> MIME handling unchanged, make HEIC tests hermetic, and enforce chat-completions <code>maxTotalImageBytes</code> against post-normalization image payload size. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/draft-stream boundary stability: materialize DM draft previews at assistant-message/tool boundaries, serialize lane-boundary callbacks before final delivery, and scope preview cleanup to the active preview so multi-step Telegram streams no longer lose, overwrite, or leave stale preview bubbles. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019797532" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33842" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33842/hovercard" href="https://github.com/openclaw/openclaw/pull/33842">#33842</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>Telegram/DM draft finalization reliability: require verified final-text draft emission before treating preview finalization as delivered, and fall back to normal payload send when final draft delivery is not confirmed (preventing missing final responses and preserving media/button delivery). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013038836" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32118" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32118/hovercard" href="https://github.com/openclaw/openclaw/pull/32118">#32118</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/OpenCils/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/OpenCils">@OpenCils</a>.</li>
<li>Telegram/DM draft final delivery: materialize text-only <code>sendMessageDraft</code> previews into one permanent final message and skip duplicate final payload sends, while preserving fallback behavior when materialization fails. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021324721" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34318" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34318/hovercard" href="https://github.com/openclaw/openclaw/pull/34318">#34318</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Brotherinlaw-13/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Brotherinlaw-13">@Brotherinlaw-13</a>.</li>
<li>Telegram/DM draft duplicate display: clear stale DM draft previews after materializing the real final message, including threadless fallback when DM topic lookup fails, so partial streaming no longer briefly shows duplicate replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030753777" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36746" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36746/hovercard" href="https://github.com/openclaw/openclaw/pull/36746">#36746</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joelnishanth/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joelnishanth">@joelnishanth</a>.</li>
<li>Telegram/draft preview boundary + silent-token reliability: stabilize answer-lane message boundaries across late-partial/message-start races, preserve/reset finalized preview state at the correct boundaries, and suppress <code>NO_REPLY</code> lead-fragment leaks without broad heartbeat-prefix false positives. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017266196" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33169" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33169/hovercard" href="https://github.com/openclaw/openclaw/pull/33169">#33169</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/native commands <code>commands.allowFrom</code> precedence: make native Telegram commands honor <code>commands.allowFrom</code> as the command-specific authorization source, including group chats, instead of falling back to channel sender allowlists. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998816001" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28216" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28216/hovercard" href="https://github.com/openclaw/openclaw/issues/28216">#28216</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/toolsbybuddy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/toolsbybuddy">@toolsbybuddy</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/<code>groupAllowFrom</code> sender-ID validation: restore sender-only runtime validation so negative chat/group IDs remain invalid entries instead of appearing accepted while still being unable to authorize group access. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4032069489" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37134" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37134/hovercard" href="https://github.com/openclaw/openclaw/pull/37134">#37134</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/qiuyuemartin-max/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/qiuyuemartin-max">@qiuyuemartin-max</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/native group command auth: authorize native commands in groups and forum topics against <code>groupAllowFrom</code> and per-group/topic sender overrides, while keeping auth rejection replies in the originating topic thread. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039895144" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39267" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39267/hovercard" href="https://github.com/openclaw/openclaw/pull/39267">#39267</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/edwluo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/edwluo">@edwluo</a>.</li>
<li>Telegram/named-account DMs: restore non-default-account DM routing when a named Telegram account falls back to the default agent by keeping groups fail-closed but deriving a per-account session key for DMs, including identity-link canonicalization and regression coverage for account isolation. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014310519" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32426" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32426/hovercard" href="https://github.com/openclaw/openclaw/pull/32426">#32426</a>; fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014061031" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32351" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/32351/hovercard" href="https://github.com/openclaw/openclaw/issues/32351">#32351</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Discord/audit wildcard warnings: ignore "*" wildcard keys when counting unresolved guild channels so doctor/status no longer warns on allow-all configs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017122180" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33125" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33125/hovercard" href="https://github.com/openclaw/openclaw/pull/33125">#33125</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/channel resolution: default bare numeric recipients to channels, harden allowlist numeric ID handling with safe fallbacks, and avoid inbound WS heartbeat stalls. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017170163" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33142" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33142/hovercard" href="https://github.com/openclaw/openclaw/pull/33142">#33142</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/chunk delivery reliability: preserve chunk ordering when using a REST client and retry chunk sends on 429/5xx using account retry settings. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017482382" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33226" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33226/hovercard" href="https://github.com/openclaw/openclaw/pull/33226">#33226</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/mention handling: add id-based mention formatting + cached rewrites, resolve inbound mentions to display names, and add optional ignoreOtherMentions gating (excluding @everyone/<a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/here/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/here">@here</a>). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017480663" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33224" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33224/hovercard" href="https://github.com/openclaw/openclaw/pull/33224">#33224</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Discord/media SSRF allowlist: allow Discord CDN hostnames (including wildcard domains) in inbound media SSRF policy to prevent proxy/VPN fake-ip blocks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017685198" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33275" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33275/hovercard" href="https://github.com/openclaw/openclaw/pull/33275">#33275</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Telegram/device pairing notifications: auto-arm one-shot notify on <code>/pair qr</code>, auto-ping on new pairing requests, and add manual fallback via <code>/pair approve latest</code> if the ping does not arrive. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017778099" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33299" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33299/hovercard" href="https://github.com/openclaw/openclaw/pull/33299">#33299</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Exec heartbeat routing: scope exec-triggered heartbeat wakes to agent session keys so unrelated agents are no longer awakened by exec events, while preserving legacy unscoped behavior for non-canonical session keys. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015223349" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32724" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32724/hovercard" href="https://github.com/openclaw/openclaw/pull/32724">#32724</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/altaywtf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/altaywtf">@altaywtf</a></li>
<li>macOS/Tailscale remote gateway discovery: add a Tailscale Serve fallback peer probe path (<code>wss://<peer>.ts.net</code>) when Bonjour and wide-area DNS-SD discovery return no gateways, and refresh both discovery paths from macOS onboarding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015702286" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32860" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32860/hovercard" href="https://github.com/openclaw/openclaw/pull/32860">#32860</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>iOS/Gateway keychain hardening: move gateway metadata and TLS fingerprints to device keychain storage with safer migration behavior and rollback-safe writes to reduce credential loss risk during upgrades. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016598270" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33029" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33029/hovercard" href="https://github.com/openclaw/openclaw/pull/33029">#33029</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>iOS/Concurrency stability: replace risky shared-state access in camera and gateway connection paths with lock-protected access patterns to reduce crash risk under load. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017534769" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33241" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33241/hovercard" href="https://github.com/openclaw/openclaw/pull/33241">#33241</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>iOS/Security guardrails: limit production API-key sourcing to app config and make deep-link confirmation prompts safer by coalescing queued requests instead of silently dropping them. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016598707" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33031" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33031/hovercard" href="https://github.com/openclaw/openclaw/pull/33031">#33031</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>iOS/TTS playback fallback: keep voice playback resilient by switching from PCM to MP3 when provider format support is unavailable, while avoiding sticky fallback on generic local playback errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016598918" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33032" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33032/hovercard" href="https://github.com/openclaw/openclaw/pull/33032">#33032</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mbelinky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mbelinky">@mbelinky</a>.</li>
<li>Plugin outbound/text-only adapter compatibility: allow direct-delivery channel plugins that only implement <code>sendText</code> (without <code>sendMedia</code>) to remain outbound-capable, gracefully fall back to text delivery for media payloads when <code>sendMedia</code> is absent, and fail explicitly for media-only payloads with no text fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015424839" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32788" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32788/hovercard" href="https://github.com/openclaw/openclaw/pull/32788">#32788</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Telegram/multi-account default routing clarity: warn only for ambiguous (2+) account setups without an explicit default, add <code>openclaw doctor</code> warnings for missing/invalid multi-account defaults across channels, and document explicit-default guidance for channel routing and Telegram config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014667643" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32544" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32544/hovercard" href="https://github.com/openclaw/openclaw/pull/32544">#32544</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Telegram/plugin outbound hook parity: run <code>message_sending</code> + <code>message_sent</code> in Telegram reply delivery, include reply-path hook metadata (<code>mediaUrls</code>, <code>threadId</code>), and report <code>message_sent.success=false</code> when hooks blank text and no outbound message is delivered. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014971754" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32649" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32649/hovercard" href="https://github.com/openclaw/openclaw/pull/32649">#32649</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KimGLee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KimGLee">@KimGLee</a>.</li>
<li>CLI/Coding-agent reliability: switch default <code>claude-cli</code> non-interactive args to <code>--permission-mode bypassPermissions</code>, auto-normalize legacy <code>--dangerously-skip-permissions</code> backend overrides to the modern permission-mode form, align coding-agent + live-test docs with the non-PTY Claude path, and emit session system-event heartbeat notices when CLI watchdog no-output timeouts terminate runs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000413702" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28610" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28610/hovercard" href="https://github.com/openclaw/openclaw/pull/28610">#28610</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008824106" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31149" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31149/hovercard" href="https://github.com/openclaw/openclaw/pull/31149">#31149</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020357755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34055/hovercard" href="https://github.com/openclaw/openclaw/pull/34055">#34055</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/niceysam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/niceysam">@niceysam</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cryptomaltese/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cryptomaltese">@cryptomaltese</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/OpenAI chat completions: parse active-turn <code>image_url</code> content parts (including parameterized data URIs and guarded URL sources), forward them as multimodal <code>images</code>, accept image-only user turns, enforce per-request image-part/byte budgets, default URL-based image fetches to disabled unless explicitly enabled by config, and redact image base64 data in cache-trace/provider payload diagnostics. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945610483" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17685" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/17685/hovercard" href="https://github.com/openclaw/openclaw/issues/17685">#17685</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a></li>
<li>ACP/ACPX session bootstrap: retry with <code>sessions new</code> when <code>sessions ensure</code> returns no session identifiers so ACP spawns avoid <code>NO_SESSION</code>/<code>ACP_TURN_FAILED</code> failures on affected agents. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001302335" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28786" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28786/hovercard" href="https://github.com/openclaw/openclaw/issues/28786">#28786</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009442200" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31338/hovercard" href="https://github.com/openclaw/openclaw/pull/31338">#31338</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020357755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34055/hovercard" href="https://github.com/openclaw/openclaw/pull/34055">#34055</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>ACP/sessions_spawn parent stream visibility: add <code>streamTo: "parent"</code> for <code>runtime: "acp"</code> to forward initial child-run progress/no-output/completion updates back into the requester session as system events (instead of direct child delivery), and emit a tail-able session-scoped relay log (<code><sessionId>.acp-stream.jsonl</code>, returned as <code>streamLogPath</code> when available), improving orchestrator visibility for blocked or long-running harness turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021253879" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34310" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34310/hovercard" href="https://github.com/openclaw/openclaw/pull/34310">#34310</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004945759" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29909" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/29909/hovercard" href="https://github.com/openclaw/openclaw/issues/29909">#29909</a>; reopened from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4020357755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34055/hovercard" href="https://github.com/openclaw/openclaw/pull/34055">#34055</a>). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/bootstrap truncation warning handling: unify bootstrap budget/truncation analysis across embedded + CLI runtime, <code>/context</code>, and <code>openclaw doctor</code>; add <code>agents.defaults.bootstrapPromptTruncationWarning</code> (<code>off|once|always</code>, default <code>once</code>) and persist warning-signature metadata so truncation warnings are consistent and deduped across turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015370814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32769" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32769/hovercard" href="https://github.com/openclaw/openclaw/pull/32769">#32769</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Agents/Skills runtime loading: propagate run config into embedded attempt and compaction skill-entry loading so explicitly enabled bundled companion skills are discovered consistently when skill snapshots do not already provide resolved entries. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Agents/Session startup date grounding: substitute <code>YYYY-MM-DD</code> placeholders in startup/post-compaction AGENTS context and append runtime current-time lines for <code>/new</code> and <code>/reset</code> prompts so daily-memory references resolve correctly. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014171156" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32381" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32381/hovercard" href="https://github.com/openclaw/openclaw/pull/32381">#32381</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Agents/Compaction template heading alignment: update AGENTS template section names to <code>Session Startup</code>/<code>Red Lines</code> and keep legacy <code>Every Session</code>/<code>Safety</code> fallback extraction so post-compaction context remains intact across template versions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3981665169" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25098" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25098/hovercard" href="https://github.com/openclaw/openclaw/pull/25098">#25098</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/echoVic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/echoVic">@echoVic</a>.</li>
<li>Agents/Compaction continuity: expand staged-summary merge instructions to preserve active task status, batch progress, latest user request, and follow-up commitments so compaction handoffs retain in-flight work context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3897148356" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/8903" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/8903/hovercard" href="https://github.com/openclaw/openclaw/pull/8903">#8903</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joetomasone/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joetomasone">@joetomasone</a>.</li>
<li>Agents/Compaction safeguard structure hardening: require exact fallback summary headings, sanitize untrusted compaction instruction text before prompt embedding, and keep structured sections when preserving all turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984346091" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25555" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25555/hovercard" href="https://github.com/openclaw/openclaw/pull/25555">#25555</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>Gateway/status self version reporting: make Gateway self version in <code>openclaw status</code> prefer runtime <code>VERSION</code> (while preserving explicit <code>OPENCLAW_VERSION</code> override), preventing stale post-upgrade app version output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015014609" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32655" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32655/hovercard" href="https://github.com/openclaw/openclaw/pull/32655">#32655</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Memory/QMD index isolation: set <code>QMD_CONFIG_DIR</code> alongside <code>XDG_CONFIG_HOME</code> so QMD config state stays per-agent despite upstream XDG handling bugs, preventing cross-agent collection indexing and excess disk/CPU usage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992797716" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27028" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27028/hovercard" href="https://github.com/openclaw/openclaw/pull/27028">#27028</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HenryLoenwind/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HenryLoenwind">@HenryLoenwind</a>.</li>
<li>Memory/QMD collection safety: stop destructive collection rebinds when QMD <code>collection list</code> only reports names without path metadata, preventing <code>memory search</code> from dropping existing collections if re-add fails. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031248229" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36870" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36870/hovercard" href="https://github.com/openclaw/openclaw/issues/36870">#36870</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Adnannnnnnna/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Adnannnnnnna">@Adnannnnnnna</a>.</li>
<li>Memory/QMD duplicate-document recovery: detect <code>UNIQUE constraint failed: documents.collection, documents.path</code> update failures, rebuild managed collections once, and retry update so periodic QMD syncs recover instead of failing every run; includes regression coverage to avoid over-matching unrelated unique constraints. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996034983" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27649" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27649/hovercard" href="https://github.com/openclaw/openclaw/issues/27649">#27649</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MiscMich/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MiscMich">@MiscMich</a>.</li>
<li>Memory/local embedding initialization hardening: add regression coverage for transient initialization retry and mixed <code>embedQuery</code> + <code>embedBatch</code> concurrent startup to lock single-flight initialization behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3938322623" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/15639" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/15639/hovercard" href="https://github.com/openclaw/openclaw/pull/15639">#15639</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/SubtleSpark/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/SubtleSpark">@SubtleSpark</a>.</li>
<li>CLI/Coding-agent reliability: switch default <code>claude-cli</code> non-interactive args to <code>--permission-mode bypassPermissions</code>, auto-normalize legacy <code>--dangerously-skip-permissions</code> backend overrides to the modern permission-mode form, align coding-agent + live-test docs with the non-PTY Claude path, and emit session system-event heartbeat notices when CLI watchdog no-output timeouts terminate runs. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998937806" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28261" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28261/hovercard" href="https://github.com/openclaw/openclaw/issues/28261">#28261</a>. Landed from contributor PRs <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000413702" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28610" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28610/hovercard" href="https://github.com/openclaw/openclaw/pull/28610">#28610</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008824106" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31149" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31149/hovercard" href="https://github.com/openclaw/openclaw/pull/31149">#31149</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/niceysam/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/niceysam">@niceysam</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cryptomaltese/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cryptomaltese">@cryptomaltese</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>ACP/ACPX session bootstrap: retry with <code>sessions new</code> when <code>sessions ensure</code> returns no session identifiers so ACP spawns avoid <code>NO_SESSION</code>/<code>ACP_TURN_FAILED</code> failures on affected agents. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001302335" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28786" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28786/hovercard" href="https://github.com/openclaw/openclaw/issues/28786">#28786</a>. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009442200" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31338" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31338/hovercard" href="https://github.com/openclaw/openclaw/pull/31338">#31338</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>LINE/auth boundary hardening synthesis: enforce strict LINE webhook authn/z boundary semantics across pairing-store account scoping, DM/group allowlist separation, fail-closed webhook auth/runtime behavior, and replay/duplication controls (including in-flight replay reservation and post-success dedupe marking). (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990541787" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26701" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26701/hovercard" href="https://github.com/openclaw/openclaw/pull/26701">#26701</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990480531" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26683" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26683/hovercard" href="https://github.com/openclaw/openclaw/pull/26683">#26683</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3986746602" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25978" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25978/hovercard" href="https://github.com/openclaw/openclaw/pull/25978">#25978</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945208518" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17593" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17593/hovercard" href="https://github.com/openclaw/openclaw/pull/17593">#17593</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3942582492" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/16619" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/16619/hovercard" href="https://github.com/openclaw/openclaw/pull/16619">#16619</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012520149" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31990" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31990/hovercard" href="https://github.com/openclaw/openclaw/pull/31990">#31990</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3986947645" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26047" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26047/hovercard" href="https://github.com/openclaw/openclaw/pull/26047">#26047</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4006955874" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30584" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30584/hovercard" href="https://github.com/openclaw/openclaw/pull/30584">#30584</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3950365508" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18777" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/18777/hovercard" href="https://github.com/openclaw/openclaw/pull/18777">#18777</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidahmann/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidahmann">@davidahmann</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/harshang03/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/harshang03">@harshang03</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haosenwang1018/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haosenwang1018">@haosenwang1018</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/coygeek/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/coygeek">@coygeek</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>LINE/media download synthesis: fix file-media download handling and M4A audio classification across overlapping LINE regressions. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3988580357" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26386" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26386/hovercard" href="https://github.com/openclaw/openclaw/pull/26386">#26386</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996632204" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27761" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27761/hovercard" href="https://github.com/openclaw/openclaw/pull/27761">#27761</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3996791096" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27787" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27787/hovercard" href="https://github.com/openclaw/openclaw/pull/27787">#27787</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004035753" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29509" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29509/hovercard" href="https://github.com/openclaw/openclaw/pull/29509">#29509</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004616868" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29755" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29755/hovercard" href="https://github.com/openclaw/openclaw/pull/29755">#29755</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004669859" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29776" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29776/hovercard" href="https://github.com/openclaw/openclaw/pull/29776">#29776</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004696355" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29785" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29785/hovercard" href="https://github.com/openclaw/openclaw/pull/29785">#29785</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013630590" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32240" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32240/hovercard" href="https://github.com/openclaw/openclaw/pull/32240">#32240</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kevinWangSheng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kevinWangSheng">@kevinWangSheng</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/loiie45e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/loiie45e">@loiie45e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/carrotRakko/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/carrotRakko">@carrotRakko</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/codeafridi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/codeafridi">@codeafridi</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>LINE/context and routing synthesis: fix group/room peer routing and command-authorization context propagation, and keep processing later events in mixed-success webhook batches. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3969108600" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/21955" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/21955/hovercard" href="https://github.com/openclaw/openclaw/pull/21955">#21955</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3977953127" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/24475" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/24475/hovercard" href="https://github.com/openclaw/openclaw/pull/24475">#24475</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3992817695" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27035" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27035/hovercard" href="https://github.com/openclaw/openclaw/pull/27035">#27035</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999011840" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28286" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28286/hovercard" href="https://github.com/openclaw/openclaw/pull/28286">#28286</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lailoo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lailoo">@lailoo</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcaxtr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcaxtr">@mcaxtr</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jervyclaw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jervyclaw">@jervyclaw</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>LINE/status/config/webhook synthesis: fix status false positives from snapshot/config state and accept LINE webhook HEAD probes for compatibility. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3907283059" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/10487" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/10487/hovercard" href="https://github.com/openclaw/openclaw/pull/10487">#10487</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3985415955" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25726" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25726/hovercard" href="https://github.com/openclaw/openclaw/pull/25726">#25726</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995438440" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27537" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27537/hovercard" href="https://github.com/openclaw/openclaw/pull/27537">#27537</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3997653631" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27908" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27908/hovercard" href="https://github.com/openclaw/openclaw/pull/27908">#27908</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009636722" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31387" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31387/hovercard" href="https://github.com/openclaw/openclaw/pull/31387">#31387</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlueBirdBack/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlueBirdBack">@BlueBirdBack</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/loiie45e/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/loiie45e">@loiie45e</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/puritysb/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/puritysb">@puritysb</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcaxtr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcaxtr">@mcaxtr</a>.</li>
<li>LINE cleanup/test follow-ups: fold cleanup/test learnings into the synthesis review path while keeping runtime changes focused on regression fixes. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3945410663" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17630/hovercard" href="https://github.com/openclaw/openclaw/pull/17630">#17630</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3944389153" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/17289" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/17289/hovercard" href="https://github.com/openclaw/openclaw/pull/17289">#17289</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Clawborn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Clawborn">@Clawborn</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidahmann/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidahmann">@davidahmann</a>.</li>
<li>Mattermost/interactive buttons: add interactive button send/callback support with directory-based channel/user target resolution, and harden callbacks via account-scoped HMAC verification plus sender-scoped DM routing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3957129217" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19957" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19957/hovercard" href="https://github.com/openclaw/openclaw/pull/19957">#19957</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tonydehnke/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tonydehnke">@tonydehnke</a>.</li>
<li>Feishu/groupPolicy legacy alias compatibility: treat legacy <code>groupPolicy: "allowall"</code> as <code>open</code> in both schema parsing and runtime policy checks so intended open-group configs no longer silently drop group messages when <code>groupAllowFrom</code> is empty. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028978002" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36358" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36358/hovercard" href="https://github.com/openclaw/openclaw/pull/36358">#36358</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Mattermost/plugin SDK import policy: replace remaining monolithic <code>openclaw/plugin-sdk</code> imports in Mattermost mention-gating paths/tests with scoped subpaths (<code>openclaw/plugin-sdk/compat</code> and <code>openclaw/plugin-sdk/mattermost</code>) so <code>pnpm check</code> passes <code>lint:plugins:no-monolithic-plugin-sdk-entry-imports</code> on baseline. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029514878" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36480" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36480/hovercard" href="https://github.com/openclaw/openclaw/pull/36480">#36480</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Telegram/polls: add Telegram poll action support to channel action discovery and tool/CLI poll flows, with multi-account discoverability gated to accounts that can actually execute polls (<code>sendMessage</code> + <code>poll</code>). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029809681" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36547" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36547/hovercard" href="https://github.com/openclaw/openclaw/pull/36547">#36547</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Agents/failover cooldown classification: stop treating generic <code>cooling down</code> text as provider <code>rate_limit</code> so healthy models no longer show false global cooldown/rate-limit warnings while explicit <code>model_cooldown</code> markers still trigger failover. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016336205" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32972" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32972/hovercard" href="https://github.com/openclaw/openclaw/pull/32972">#32972</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Agents/failover service-unavailable handling: stop treating bare proxy/CDN <code>service unavailable</code> errors as provider overload while keeping them retryable via the timeout/failover path, so transient outages no longer show false rate-limit warnings or block fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030259117" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36646" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36646/hovercard" href="https://github.com/openclaw/openclaw/pull/36646">#36646</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnMetaCode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnMetaCode">@jnMetaCode</a>.</li>
<li>Plugins/HTTP route migration diagnostics: rewrite legacy <code>api.registerHttpHandler(...)</code> loader failures into actionable migration guidance so doctor/plugin diagnostics point operators to <code>api.registerHttpRoute(...)</code> or <code>registerPluginHttpRoute(...)</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030962720" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36794" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36794/hovercard" href="https://github.com/openclaw/openclaw/pull/36794">#36794</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a></li>
<li>Doctor/Heartbeat upgrade diagnostics: warn when heartbeat delivery is configured with an implicit <code>directPolicy</code> so upgrades pin direct/DM behavior explicitly instead of relying on the current default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030950312" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36789" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36789/hovercard" href="https://github.com/openclaw/openclaw/pull/36789">#36789</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/current-time UTC anchor: append a machine-readable UTC suffix alongside local <code>Current time:</code> lines in shared cron-style prompt contexts so agents can compare UTC-stamped workspace timestamps without doing timezone math. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014292607" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32423" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32423/hovercard" href="https://github.com/openclaw/openclaw/pull/32423">#32423</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jriff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jriff">@jriff</a>.</li>
<li>Ollama/local model handling: preserve explicit lower <code>contextWindow</code> / <code>maxTokens</code> overrides during merge refresh, and keep native Ollama streamed replies from surfacing fallback <code>thinking</code> / <code>reasoning</code> text once real content starts streaming. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040000491" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39292" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39292/hovercard" href="https://github.com/openclaw/openclaw/pull/39292">#39292</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>TUI/webchat command-owner scope alignment: treat internal-channel gateway sessions with <code>operator.admin</code> as owner-authorized in command auth, restoring cron/gateway/connector tool access for affected TUI/webchat sessions while keeping external channels on identity-based owner checks. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026391636" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35666" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35666/hovercard" href="https://github.com/openclaw/openclaw/pull/35666">#35666</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026412700" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35673" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35673/hovercard" href="https://github.com/openclaw/openclaw/pull/35673">#35673</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4026468995" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35704" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35704/hovercard" href="https://github.com/openclaw/openclaw/pull/35704">#35704</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Naylenv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Naylenv">@Naylenv</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Octane0411/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Octane0411">@Octane0411</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Discord/inbound timeout isolation: separate inbound worker timeout tracking from listener timeout budgets so queued Discord replies are no longer dropped when listener watchdog windows expire mid-run. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030065827" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36602" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36602/hovercard" href="https://github.com/openclaw/openclaw/pull/36602">#36602</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a>.</li>
<li>Memory/doctor SecretRef handling: treat SecretRef-backed memory-search API keys as configured, and fail embedding setup with explicit unresolved-secret errors instead of crashing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031159097" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36835" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36835/hovercard" href="https://github.com/openclaw/openclaw/pull/36835">#36835</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Memory/flush default prompt: ban timestamped variant filenames during default memory flush runs so durable notes stay in the canonical daily <code>memory/YYYY-MM-DD.md</code> file. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4023901290" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34951" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34951/hovercard" href="https://github.com/openclaw/openclaw/pull/34951">#34951</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zerone0x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zerone0x">@zerone0x</a>.</li>
<li>Agents/reply delivery timing: flush embedded Pi block replies before waiting on compaction retries so already-generated assistant replies reach channels before compaction wait completes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025813822" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35489" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35489/hovercard" href="https://github.com/openclaw/openclaw/pull/35489">#35489</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/gateway config guidance: stop exposing <code>config.schema</code> through the agent <code>gateway</code> tool, remove prompt/docs guidance that told agents to call it, and keep agents on <code>config.get</code> plus <code>config.patch</code>/<code>config.apply</code> for config changes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3887534352" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/7382" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/7382/hovercard" href="https://github.com/openclaw/openclaw/pull/7382">#7382</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/kakuteki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/kakuteki">@kakuteki</a>.</li>
<li>Provider/KiloCode: Keep duplicate models after malformed discovery rows, and strip legacy <code>reasoning_effort</code> when proxy reasoning injection is skipped. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014061331" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32352" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32352/hovercard" href="https://github.com/openclaw/openclaw/pull/32352">#32352</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandemicsyn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandemicsyn">@pandemicsyn</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/failover: classify periodic provider limit exhaustion text (for example <code>Weekly/Monthly Limit Exhausted</code>) as <code>rate_limit</code> while keeping explicit <code>402 Payment Required</code> variants in billing, so failover continues without misclassifying billing-wrapped quota errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4019723196" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33813" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33813/hovercard" href="https://github.com/openclaw/openclaw/pull/33813">#33813</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zhouhe-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zhouhe-xydt">@zhouhe-xydt</a>.</li>
<li>Mattermost/interactive button callbacks: allow external callback base URLs and stop requiring loopback-origin requests so button clicks work when Mattermost reaches the gateway over Tailscale, LAN, or a reverse proxy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4033122360" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37543" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/37543/hovercard" href="https://github.com/openclaw/openclaw/pull/37543">#37543</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mukhtharcm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mukhtharcm">@mukhtharcm</a>.</li>
<li>Gateway/chat.send route inheritance: keep explicit external delivery for channel-scoped sessions while preventing shared-main and other channel-agnostic webchat sessions from inheriting stale external routes, so Control UI replies stay on webchat without breaking selected channel-target sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4022869637" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34669" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34669/hovercard" href="https://github.com/openclaw/openclaw/pull/34669">#34669</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Telegram/Discord media upload caps: make outbound uploads honor channel <code>mediaMaxMb</code> config, raise Telegram's default media cap to 100MB, and remove MIME fallback limits that kept some Telegram uploads at 16MB. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Skills/nano-banana-pro resolution override: respect explicit <code>--resolution</code> values during image editing and only auto-detect output size from input images when the flag is omitted. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031318390" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36880" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36880/hovercard" href="https://github.com/openclaw/openclaw/pull/36880">#36880</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuofengzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuofengzhang">@shuofengzhang</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Skills/openai-image-gen CLI validation: validate <code>--background</code> and <code>--style</code> inputs early, normalize supported values, and warn when those flags are ignored for incompatible models. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030852226" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36762" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36762/hovercard" href="https://github.com/openclaw/openclaw/pull/36762">#36762</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuofengzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuofengzhang">@shuofengzhang</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Skills/openai-image-gen output formats: validate <code>--output-format</code> values early, normalize aliases like <code>jpg -> jpeg</code>, and warn when the flag is ignored for incompatible models. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4030269062" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36648" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36648/hovercard" href="https://github.com/openclaw/openclaw/pull/36648">#36648</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/shuofengzhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/shuofengzhang">@shuofengzhang</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>ACP/skill env isolation: strip skill-injected API keys from ACP harness child-process environments so tools like Codex CLI keep their own auth flow instead of inheriting billed provider keys from active skills. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028834045" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36316" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36316/hovercard" href="https://github.com/openclaw/openclaw/pull/36316">#36316</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/taw0002/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/taw0002">@taw0002</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>WhatsApp media upload caps: make outbound media sends and auto-replies honor <code>channels.whatsapp.mediaMaxMb</code> with per-account overrides so inbound and outbound limits use the same channel config. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Windows/Plugin install: when OpenClaw runs on Windows via Bun and <code>npm-cli.js</code> is not colocated with the runtime binary, fall back to <code>npm.cmd</code>/<code>npx.cmd</code> through the existing <code>cmd.exe</code> wrapper so <code>openclaw plugins install</code> no longer fails with <code>spawn EINVAL</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034864437" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38056" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38056/hovercard" href="https://github.com/openclaw/openclaw/pull/38056">#38056</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xlin2023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xlin2023">@0xlin2023</a>.</li>
<li>Telegram/send retry classification: retry grammY <code>Network request ... failed after N attempts</code> envelopes in send flows without reclassifying plain <code>Network request ... failed!</code> wrappers as transient, restoring the intended retry path while keeping broad send-context message matching tight. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4034864437" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38056" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38056/hovercard" href="https://github.com/openclaw/openclaw/pull/38056">#38056</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xlin2023/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xlin2023">@0xlin2023</a>.</li>
<li>Gateway/probes: keep <code>/health</code>, <code>/healthz</code>, <code>/ready</code>, and <code>/readyz</code> reachable when the Control UI is mounted at <code>/</code>, preserve plugin-owned route precedence on those paths, and make <code>/ready</code> and <code>/readyz</code> report channel-backed readiness with startup grace plus <code>503</code> on disconnected managed channels, while <code>/health</code> and <code>/healthz</code> stay shallow liveness probes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3949006570" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/18446" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/18446/hovercard" href="https://github.com/openclaw/openclaw/issues/18446">#18446</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vibecodooor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vibecodooor">@vibecodooor</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mahsumaktas/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mahsumaktas">@mahsumaktas</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Feishu/media downloads: drop invalid timeout fields from SDK method calls now that client-level <code>httpTimeoutMs</code> applies to requests. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035615814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38267" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38267/hovercard" href="https://github.com/openclaw/openclaw/pull/38267">#38267</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ant1eicher/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ant1eicher">@ant1eicher</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>PI embedded runner/Feishu docs: propagate sender identity into embedded attempts so Feishu doc auto-grant restores requester access for embedded-runner executions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4015979769" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32915" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32915/hovercard" href="https://github.com/openclaw/openclaw/pull/32915">#32915</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cszhouwei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cszhouwei">@cszhouwei</a>.</li>
<li>Agents/usage normalization: normalize missing or partial assistant usage snapshots before compaction accounting so <code>openclaw agent --json</code> no longer crashes when provider payloads omit <code>totalTokens</code> or related usage fields. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024095818" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34977" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34977/hovercard" href="https://github.com/openclaw/openclaw/pull/34977">#34977</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sp-hk2ldn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sp-hk2ldn">@sp-hk2ldn</a>.</li>
<li>Venice/default model refresh: switch the built-in Venice default to <code>kimi-k2-5</code>, update onboarding aliasing, and refresh Venice provider docs/recommendations to match the current private and anonymized catalog. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3918771089" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/12964" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/12964/hovercard" href="https://github.com/openclaw/openclaw/pull/12964">#12964</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3958575648" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20156" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/20156/hovercard" href="https://github.com/openclaw/openclaw/issues/20156">#20156</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sabrinaaquino/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sabrinaaquino">@sabrinaaquino</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/skill API write pacing: add a global prompt guardrail that treats skill-driven external API writes as rate-limited by default, so runners prefer batched writes, avoid tight request loops, and respect <code>429</code>/<code>Retry-After</code>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Google Chat/multi-account webhook auth fallback: when <code>channels.googlechat.accounts.default</code> carries shared webhook audience/path settings (for example after config normalization), inherit those defaults for named accounts while preserving top-level and per-account overrides, so inbound webhook verification no longer fails silently for named accounts missing duplicated audience fields. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036438684" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38369" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38369/hovercard" href="https://github.com/openclaw/openclaw/issues/38369">#38369</a>.</li>
<li>Models/tool probing: raise the tool-capability probe budget from 32 to 256 tokens so reasoning models that spend tokens on thinking before returning a required tool call are less likely to be misclassified as not supporting tools. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3888024351" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/7521" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/7521/hovercard" href="https://github.com/openclaw/openclaw/pull/7521">#7521</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jakobdylanc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jakobdylanc">@jakobdylanc</a>.</li>
<li>Gateway/transient network classification: treat wrapped <code>...: fetch failed</code> transport messages as transient while avoiding broad matches like <code>Web fetch failed (404): ...</code>, preventing Discord reconnect wrappers from crashing the gateway without suppressing non-network tool failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037182813" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38530" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38530/hovercard" href="https://github.com/openclaw/openclaw/pull/38530">#38530</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>ACP/console silent reply suppression: filter ACP <code>NO_REPLY</code> lead fragments and silent-only finals before <code>openclaw agent</code> logging/delivery so console-backed ACP sessions no longer leak <code>NO</code>/<code>NO_REPLY</code> placeholders. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036842547" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38436" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38436/hovercard" href="https://github.com/openclaw/openclaw/pull/38436">#38436</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a>.</li>
<li>Feishu/reply delivery reliability: disable block streaming in Feishu reply options so plain-text auto-render replies are no longer silently dropped before final delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035530221" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38258" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38258/hovercard" href="https://github.com/openclaw/openclaw/issues/38258">#38258</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>Agents/reply MEDIA delivery: normalize local assistant <code>MEDIA:</code> paths before block/final delivery, keep media dedupe aligned with message-tool sends, and contain malformed media normalization failures so generated files send reliably instead of falling back to empty responses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037343001" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38572" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38572/hovercard" href="https://github.com/openclaw/openclaw/pull/38572">#38572</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Sessions/bootstrap cache rollover invalidation: clear cached workspace bootstrap snapshots whenever an existing <code>sessionKey</code> rolls to a new <code>sessionId</code> across auto-reply, command, and isolated cron session resolvers, so <code>AGENTS.md</code>/<code>MEMORY.md</code>/<code>USER.md</code> updates are reloaded after daily, idle, or forced session resets instead of staying stale until gateway restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037067338" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38494" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38494/hovercard" href="https://github.com/openclaw/openclaw/issues/38494">#38494</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/LivingInDrm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/LivingInDrm">@LivingInDrm</a>.</li>
<li>Gateway/Telegram polling health monitor: skip stale-socket restarts for Telegram long-polling channels and thread channel identity through shared health evaluation so polling connections are not restarted on the WebSocket stale-socket heuristic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036613084" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38395" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38395/hovercard" href="https://github.com/openclaw/openclaw/issues/38395">#38395</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ql-wade/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ql-wade">@ql-wade</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Daemon/systemd fresh-install probe: check for OpenClaw's managed user unit before running <code>systemctl --user is-enabled</code>, so first-time Linux installs no longer fail on generic missing-unit probe errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038290251" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38819" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38819/hovercard" href="https://github.com/openclaw/openclaw/pull/38819">#38819</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adaHubble/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adaHubble">@adaHubble</a>.</li>
<li>Gateway/container lifecycle: allow <code>openclaw gateway stop</code> to SIGTERM unmanaged gateway listeners and <code>openclaw gateway restart</code> to SIGUSR1 a single unmanaged listener when no service manager is installed, so container and supervisor-based deployments are no longer blocked by <code>service disabled</code> no-op responses. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4028045098" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36137" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/36137/hovercard" href="https://github.com/openclaw/openclaw/issues/36137">#36137</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/Windows restart supervision: relaunch task-managed gateways through Scheduled Task with quoted helper-script command paths, distinguish restart-capable supervisors per platform, and stop orphaned Windows gateway children during self-restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038313614" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38825" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38825/hovercard" href="https://github.com/openclaw/openclaw/pull/38825">#38825</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/native topic command routing: resolve forum-topic native commands through the same conversation route as inbound messages so topic <code>agentId</code> overrides and bound topic sessions target the active session instead of the default topic-parent session. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038453123" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38871" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38871/hovercard" href="https://github.com/openclaw/openclaw/pull/38871">#38871</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Markdown/assistant image hardening: flatten remote markdown images to plain text across the Control UI, exported HTML, and shared Swift chat while keeping inline <code>data:image/...</code> markdown renderable, so model output no longer triggers automatic remote image fetches. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038522802" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38895" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38895/hovercard" href="https://github.com/openclaw/openclaw/pull/38895">#38895</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Config/compaction safeguard settings: regression-test <code>agents.defaults.compaction.recentTurnsPreserve</code> through <code>loadConfig()</code> and cover the new help metadata entry so the exposed preserve knob stays wired through schema validation and config UX. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3984348161" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25557" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25557/hovercard" href="https://github.com/openclaw/openclaw/pull/25557">#25557</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rodrigouroz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rodrigouroz">@rodrigouroz</a>.</li>
<li>iOS/Quick Setup presentation: skip automatic Quick Setup when a gateway is already configured (active connect config, last-known connection, preferred gateway, or manual host), so reconnecting installs no longer get prompted to connect again. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038729259" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38964" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38964/hovercard" href="https://github.com/openclaw/openclaw/pull/38964">#38964</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ngutman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ngutman">@ngutman</a>.</li>
<li>CLI/Docs memory help accuracy: clarify <code>openclaw memory status --deep</code> behavior and align memory command examples/docs with the current search options. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011715299" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31803" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31803/hovercard" href="https://github.com/openclaw/openclaw/pull/31803">#31803</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/JasonOA888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/JasonOA888">@JasonOA888</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Avi974/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Avi974">@Avi974</a>.</li>
<li>Auto-reply/allowlist store account scoping: keep <code>/allowlist ... --store</code> writes scoped to the selected account and clear legacy unscoped entries when removing default-account store access, preventing cross-account default allowlist bleed-through from legacy pairing-store reads. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a> for the fix.</li>
<li>Security/Nostr: harden profile mutation/import loopback guards by failing closed on non-loopback forwarded client headers (<code>x-forwarded-for</code> / <code>x-real-ip</code>) and rejecting <code>sec-fetch-site: cross-site</code>; adds regression coverage for proxy-forwarded and browser cross-site mutation attempts.</li>
<li>CLI/bootstrap Node version hint maintenance: replace hardcoded nvm <code>22</code> instructions in <code>openclaw.mjs</code> with <code>MIN_NODE_MAJOR</code> interpolation so future minimum-Node bumps keep startup guidance in sync automatically. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039028689" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39056" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39056/hovercard" href="https://github.com/openclaw/openclaw/pull/39056">#39056</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/onstash/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/onstash">@onstash</a>.</li>
<li>Discord/native slash command auth: honor <code>commands.allowFrom.discord</code> (and <code>commands.allowFrom["*"]</code>) in guild slash-command pre-dispatch authorization so allowlisted senders are no longer incorrectly rejected as unauthorized. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038252848" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38794" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38794/hovercard" href="https://github.com/openclaw/openclaw/pull/38794">#38794</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jskoiz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jskoiz">@jskoiz</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>Outbound/message target normalization: ignore empty legacy <code>to</code>/<code>channelId</code> fields when explicit <code>target</code> is provided so valid target-based sends no longer fail legacy-param validation; includes regression coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038672978" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38944" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38944/hovercard" href="https://github.com/openclaw/openclaw/pull/38944">#38944</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Narcooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Narcooo">@Narcooo</a>.</li>
<li>Models/auth token prompts: guard cancelled manual token prompts so <code>Symbol(clack:cancel)</code> values cannot be persisted into auth profiles; adds regression coverage for cancelled <code>models auth paste-token</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038684616" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38951" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38951/hovercard" href="https://github.com/openclaw/openclaw/pull/38951">#38951</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/loopback announce URLs: treat <code>http://</code> and <code>https://</code> aliases with the same loopback/private-network policy as websocket URLs so loopback cron announce delivery no longer fails secure URL validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039042356" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39064" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39064/hovercard" href="https://github.com/openclaw/openclaw/pull/39064">#39064</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Narcooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Narcooo">@Narcooo</a>.</li>
<li>Models/default provider fallback: when the hardcoded default provider is removed from <code>models.providers</code>, resolve defaults from configured providers instead of reporting stale removed-provider defaults in status output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038675958" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38947" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38947/hovercard" href="https://github.com/openclaw/openclaw/pull/38947">#38947</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidemanuelDEV/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidemanuelDEV">@davidemanuelDEV</a>.</li>
<li>Agents/cache-trace stability: guard stable stringify against circular references in trace payloads so near-limit payloads no longer crash with <code>Maximum call stack size exceeded</code>; adds regression coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038638432" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38935" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38935/hovercard" href="https://github.com/openclaw/openclaw/pull/38935">#38935</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Extensions/diffs CI stability: add <code>headers</code> to the <code>localReq</code> test helper in <code>extensions/diffs/index.test.ts</code> so forwarding-hint checks no longer crash with <code>req.headers</code> undefined. (supersedes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039037094" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39063" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39063/hovercard" href="https://github.com/openclaw/openclaw/pull/39063">#39063</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Shennng/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Shennng">@Shennng</a>.</li>
<li>Agents/compaction thresholding: apply <code>agents.defaults.contextTokens</code> cap to the model passed into embedded run and <code>/compact</code> session creation so auto-compaction thresholds use the effective context window, not native model max context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039169594" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39099" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39099/hovercard" href="https://github.com/openclaw/openclaw/pull/39099">#39099</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Models/merge mode provider precedence: when <code>models.mode: "merge"</code> is active and config explicitly sets a provider <code>baseUrl</code>, keep config as source of truth instead of preserving stale runtime <code>models.json</code> <code>baseUrl</code> values; includes normalized provider-key coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039178714" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39103" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39103/hovercard" href="https://github.com/openclaw/openclaw/pull/39103">#39103</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BigUncle/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BigUncle">@BigUncle</a>.</li>
<li>UI/Control chat tool streaming: render tool events live in webchat without requiring refresh by enabling <code>tool-events</code> capability, fixing stream/event correlation, and resetting/reloading stream state around tool results and terminal events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039181803" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39104" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39104/hovercard" href="https://github.com/openclaw/openclaw/pull/39104">#39104</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jakepresent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jakepresent">@jakepresent</a>.</li>
<li>Models/provider apiKey persistence hardening: when a provider <code>apiKey</code> value equals a known provider env var value, persist the canonical env var name into <code>models.json</code> instead of resolved plaintext secrets. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038502353" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38889" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38889/hovercard" href="https://github.com/openclaw/openclaw/pull/38889">#38889</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>.</li>
<li>Discord/model picker persistence check: add a short post-dispatch settle delay before reading back session model state so picker confirmations stop reporting false mismatch warnings after successful model switches. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039195923" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39105" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39105/hovercard" href="https://github.com/openclaw/openclaw/pull/39105">#39105</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akropp/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akropp">@akropp</a>.</li>
<li>Agents/OpenAI WS compat store flag: omit <code>store</code> from <code>response.create</code> payloads when model compat sets <code>supportsStore: false</code>, preventing strict OpenAI-compatible providers from rejecting websocket requests with unknown-field errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039239190" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39113" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39113/hovercard" href="https://github.com/openclaw/openclaw/pull/39113">#39113</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Config/validation log sanitization: sanitize config-validation issue paths/messages before logging so control characters and ANSI escape sequences cannot inject misleading terminal output from crafted config content. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039243293" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39116" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39116/hovercard" href="https://github.com/openclaw/openclaw/pull/39116">#39116</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/powermaster888/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/powermaster888">@powermaster888</a>.</li>
<li>Agents/compaction counter accuracy: count successful overflow-triggered auto-compactions (<code>willRetry=true</code>) in the compaction counter while still excluding aborted/no-result events, so <code>/status</code> reflects actual safeguard compaction activity. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039262241" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39123" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39123/hovercard" href="https://github.com/openclaw/openclaw/pull/39123">#39123</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/chat delta ordering: flush buffered assistant deltas before emitting tool <code>start</code> events so pre-tool text is delivered to Control UI before tool cards, avoiding transient text/tool ordering artifacts in streaming. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039266011" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39128" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39128/hovercard" href="https://github.com/openclaw/openclaw/pull/39128">#39128</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xtangping/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xtangping">@0xtangping</a>.</li>
<li>Voice-call plugin schema parity: add missing manifest <code>configSchema</code> fields (<code>webhookSecurity</code>, <code>streaming.preStartTimeoutMs|maxPendingConnections|maxPendingConnectionsPerIp|maxConnections</code>, <code>staleCallReaperSeconds</code>) so gateway AJV validation accepts already-supported runtime config instead of failing with <code>additionalProperties</code> errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038516798" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38892" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38892/hovercard" href="https://github.com/openclaw/openclaw/pull/38892">#38892</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/giumex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/giumex">@giumex</a>.</li>
<li>Agents/OpenAI WS reconnect retry accounting: avoid double retry scheduling when reconnect failures emit both <code>error</code> and <code>close</code>, so retry budgets track actual reconnect attempts instead of exhausting early. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039293695" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39133" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39133/hovercard" href="https://github.com/openclaw/openclaw/pull/39133">#39133</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Daemon/Windows schtasks runtime detection: use locale-invariant <code>Last Run Result</code> running codes (<code>0x41301</code>/<code>267009</code>) as the primary running signal so <code>openclaw node status</code> no longer misreports active tasks as stopped on non-English Windows locales. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039080904" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39076" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39076/hovercard" href="https://github.com/openclaw/openclaw/pull/39076">#39076</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Usage/token count formatting: round near-million token counts to millions (<code>1.0m</code>) instead of <code>1000k</code>, with explicit boundary coverage for <code>999_499</code> and <code>999_500</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039266571" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39129" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39129/hovercard" href="https://github.com/openclaw/openclaw/pull/39129">#39129</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/CurryMessi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/CurryMessi">@CurryMessi</a>.</li>
<li>Gateway/session bootstrap cache invalidation ordering: clear bootstrap snapshots only after active embedded-run shutdown wait completes, preventing dying runs from repopulating stale cache between <code>/new</code>/<code>sessions.reset</code> turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038456110" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38873" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38873/hovercard" href="https://github.com/openclaw/openclaw/pull/38873">#38873</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Browser/dispatcher error clarity: preserve dispatcher-side failure context in browser fetch errors while still appending operator guidance and explicit no-retry model hints, preventing misleading <code>"Can't reach service"</code> wrapping and avoiding LLM retry loops. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039132316" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39090" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39090/hovercard" href="https://github.com/openclaw/openclaw/pull/39090">#39090</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/NewdlDewdl/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/NewdlDewdl">@NewdlDewdl</a>.</li>
<li>Telegram/polling offset safety: confirm persisted offsets before polling startup while validating stored <code>lastUpdateId</code> values as non-negative safe integers (with overflow guards) so malformed offset state cannot cause update skipping/dropping. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039237463" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39111" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39111/hovercard" href="https://github.com/openclaw/openclaw/pull/39111">#39111</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Telegram/status SecretRef read-only resolution: resolve env-backed bot-token SecretRefs in config-only/status inspection while respecting provider source/defaults and env allowlists, so status no longer crashes or reports false-ready tokens for disallowed providers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039279100" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39130" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39130/hovercard" href="https://github.com/openclaw/openclaw/pull/39130">#39130</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/neocody/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/neocody">@neocody</a>.</li>
<li>Agents/OpenAI WS max-token zero forwarding: treat <code>maxTokens: 0</code> as an explicit value in websocket <code>response.create</code> payloads (instead of dropping it as falsy), with regression coverage for zero-token forwarding. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039337038" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39148" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39148/hovercard" href="https://github.com/openclaw/openclaw/pull/39148">#39148</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Podman/.env gateway bind precedence: evaluate <code>OPENCLAW_GATEWAY_BIND</code> after sourcing <code>.env</code> in <code>run-openclaw-podman.sh</code> so env-file overrides are honored. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038235561" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38785" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38785/hovercard" href="https://github.com/openclaw/openclaw/pull/38785">#38785</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/majinyu666/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/majinyu666">@majinyu666</a>.</li>
<li>Models/default alias refresh: bump <code>gpt</code> to <code>openai/gpt-5.4</code> and Gemini defaults to <code>gemini-3.1</code> preview aliases (including normalization/default wiring) to track current model IDs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037592618" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38638" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38638/hovercard" href="https://github.com/openclaw/openclaw/pull/38638">#38638</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Config/env substitution degraded mode: convert missing <code>${VAR}</code> resolution in config reads from hard-fail to warning-backed degraded behavior, while preventing unresolved placeholders from being accepted as gateway credentials. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039020940" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39050" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39050/hovercard" href="https://github.com/openclaw/openclaw/pull/39050">#39050</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akz142857/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akz142857">@akz142857</a>.</li>
<li>Discord inbound listener non-blocking dispatch: make <code>MESSAGE_CREATE</code> listener handoff asynchronous (no per-listener queue blocking), so long runs no longer stall unrelated incoming events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039357115" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39154" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39154/hovercard" href="https://github.com/openclaw/openclaw/pull/39154">#39154</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yaseenkadlemakki/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yaseenkadlemakki">@yaseenkadlemakki</a>.</li>
<li>Daemon/Windows PATH freeze fix: stop persisting install-time <code>PATH</code> snapshots into Scheduled Task scripts so runtime tool lookup follows current host PATH updates; also refresh local TUI history on silent local finals. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039312930" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39139" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39139/hovercard" href="https://github.com/openclaw/openclaw/pull/39139">#39139</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Narcooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Narcooo">@Narcooo</a>.</li>
<li>Gateway/systemd service restart hardening: clear stale gateway listeners by explicit run-port before service bind, add restart stale-pid port-override support, tune systemd start/stop/exit handling, and disable detached child mode only in service-managed runtime so cgroup stop semantics clean up descendants reliably. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4036979563" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38463" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38463/hovercard" href="https://github.com/openclaw/openclaw/pull/38463">#38463</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/spirittechie/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/spirittechie">@spirittechie</a>.</li>
<li>Discord/plugin native command aliases: let plugins declare provider-specific slash names so native Discord registration can avoid built-in command collisions; the bundled Talk voice plugin now uses <code>/talkvoice</code> natively on Discord while keeping text <code>/voice</code>.</li>
<li>Daemon/Windows schtasks status normalization: derive runtime state from locale-neutral numeric <code>Last Run Result</code> codes only (without language string matching) and surface unknown when numeric result data is unavailable, preventing locale-specific misclassification drift. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039354363" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39153" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39153/hovercard" href="https://github.com/openclaw/openclaw/pull/39153">#39153</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Telegram/polling conflict recovery: reset the polling <code>webhookCleared</code> latch on <code>getUpdates</code> 409 conflicts so webhook cleanup re-runs on restart cycles and polling avoids infinite conflict loops. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039595690" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39205" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39205/hovercard" href="https://github.com/openclaw/openclaw/pull/39205">#39205</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/amittell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/amittell">@amittell</a>.</li>
<li>Heartbeat/requests-in-flight scheduling: stop advancing <code>nextDueMs</code> and avoid immediate <code>scheduleNext()</code> timer overrides on requests-in-flight skips, so wake-layer retry cooldowns are honored and heartbeat cadence no longer drifts under sustained contention. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039531005" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39182" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39182/hovercard" href="https://github.com/openclaw/openclaw/pull/39182">#39182</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Memory/SQLite contention resilience: re-apply <code>PRAGMA busy_timeout</code> on every sync-store and QMD connection open so process restarts/reopens no longer revert to immediate <code>SQLITE_BUSY</code> failures under lock contention. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039539050" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39183" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39183/hovercard" href="https://github.com/openclaw/openclaw/pull/39183">#39183</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MumuTW/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MumuTW">@MumuTW</a>.</li>
<li>Gateway/webchat route safety: block webchat/control-ui clients from inheriting stored external delivery routes on channel-scoped sessions (while preserving route inheritance for UI/TUI clients), preventing cross-channel leakage from scoped chats. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039465250" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39175" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39175/hovercard" href="https://github.com/openclaw/openclaw/pull/39175">#39175</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>.</li>
<li>Telegram error-surface resilience: return a user-visible fallback reply when dispatch/debounce processing fails instead of going silent, while preserving draft-stream cleanup and best-effort thread-scoped fallback delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039599479" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39209" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39209/hovercard" href="https://github.com/openclaw/openclaw/pull/39209">#39209</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/riftzen-bit/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/riftzen-bit">@riftzen-bit</a>.</li>
<li>Gateway/password auth startup diagnostics: detect unresolved provider-reference objects in <code>gateway.auth.password</code> and fail with a specific bootstrap-secrets error message instead of generic misconfiguration output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039684520" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39230" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39230/hovercard" href="https://github.com/openclaw/openclaw/pull/39230">#39230</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Agents/OpenAI-responses compatibility: strip unsupported <code>store</code> payload fields when <code>supportsStore=false</code> (including OpenAI-compatible non-OpenAI providers) while preserving server-compaction payload behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039635207" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39219" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39219/hovercard" href="https://github.com/openclaw/openclaw/pull/39219">#39219</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Agents/model fallback visibility: warn when configured model IDs cannot be resolved and fallback is applied, with log-safe sanitization of model text to prevent control-sequence injection in warning output. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039613650" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39215" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39215/hovercard" href="https://github.com/openclaw/openclaw/pull/39215">#39215</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Outbound delivery replay safety: use two-phase delivery ACK markers (<code>.json</code> -> <code>.delivered</code> -> unlink) and startup marker cleanup so crash windows between send and cleanup do not replay already-delivered messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4037753653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38668" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38668/hovercard" href="https://github.com/openclaw/openclaw/pull/38668">#38668</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Gundam98/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Gundam98">@Gundam98</a>.</li>
<li>Nodes/system.run approval binding: carry prepared approval plans through gateway forwarding and bind interpreter-style script operands across approval to execution, so post-approval script rewrites are denied while unchanged approved script runs keep working. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Nodes/system.run PowerShell wrapper parsing: treat <code>pwsh</code>/<code>powershell</code> <code>-EncodedCommand</code> forms as shell-wrapper payloads so allowlist mode still requires approval instead of falling back to plain argv analysis. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Control UI/auth error reporting: map generic browser <code>Fetch failed</code> websocket close errors back to actionable gateway auth messages (<code>gateway token mismatch</code>, <code>authentication failed</code>, <code>retry later</code>) so dashboard disconnects stop hiding credential problems. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000403207" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28608" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28608/hovercard" href="https://github.com/openclaw/openclaw/pull/28608">#28608</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KimGLee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KimGLee">@KimGLee</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/KimGLee/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/KimGLee">@KimGLee</a>.</li>
<li>Media/mime unknown-kind handling: return <code>undefined</code> (not <code>"unknown"</code>) for missing/unrecognized MIME kinds and use document-size fallback caps for unknown remote media, preventing phantom <code><media:unknown></code> Signal events from being treated as real messages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039575246" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39199" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39199/hovercard" href="https://github.com/openclaw/openclaw/pull/39199">#39199</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nicolasgrasset/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nicolasgrasset">@nicolasgrasset</a>.</li>
<li>Nodes/system.run allow-always persistence: honor shell comment semantics during allowlist analysis so <code>#</code>-tailed payloads that never execute are not persisted as trusted follow-up commands. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Signal/inbound attachment fan-in: forward all successfully fetched inbound attachments through <code>MediaPaths</code>/<code>MediaUrls</code>/<code>MediaTypes</code> (instead of only the first), and improve multi-attachment placeholder summaries in mention-gated pending history. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039604548" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39212" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39212/hovercard" href="https://github.com/openclaw/openclaw/pull/39212">#39212</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joeykrug/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joeykrug">@joeykrug</a>.</li>
<li>Nodes/system.run dispatch-wrapper boundary: keep shell-wrapper approval classification active at the depth boundary so <code>env</code> wrapper stacks cannot reach <code>/bin/sh -c</code> execution without the expected approval gate. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Docker/token persistence on reconfigure: reuse the existing <code>.env</code> gateway token during <code>docker-setup.sh</code> reruns and align compose token env defaults, so Docker installs stop silently rotating tokens and breaking existing dashboard sessions. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4016944012" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33097" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33097/hovercard" href="https://github.com/openclaw/openclaw/pull/33097">#33097</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/chengzhichao-xydt/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/chengzhichao-xydt">@chengzhichao-xydt</a>.</li>
<li>Agents/strict OpenAI turn ordering: apply assistant-first transcript bootstrap sanitization to strict OpenAI-compatible providers (for example vLLM/Gemma via <code>openai-completions</code>) without adding Google-specific session markers, preventing assistant-first history rejections. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039794578" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39252" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39252/hovercard" href="https://github.com/openclaw/openclaw/pull/39252">#39252</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Discord/exec approvals gateway auth: pass resolved shared gateway credentials into the Discord exec-approvals gateway client so token-auth installs stop failing approvals with <code>gateway token mismatch</code>. Related to <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4035212437" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38179" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/38179/hovercard" href="https://github.com/openclaw/openclaw/issues/38179">#38179</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0riginal-claw/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0riginal-claw">@0riginal-claw</a> for the adjacent PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025064084" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35147" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35147/hovercard" href="https://github.com/openclaw/openclaw/pull/35147">#35147</a> investigation.</li>
<li>Subagents/workspace inheritance: propagate parent workspace directory to spawned subagent runs so child sessions reliably inherit workspace-scoped instructions (<code>AGENTS.md</code>, <code>SOUL.md</code>, etc.) without exposing workspace override through tool-call arguments. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4039779809" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39247" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39247/hovercard" href="https://github.com/openclaw/openclaw/pull/39247">#39247</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonQin6/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonQin6">@jasonQin6</a>.</li>
<li>Exec approvals/gateway-node policy: honor explicit <code>ask=off</code> from <code>exec-approvals.json</code> even when runtime defaults are stricter, so trusted full/off setups stop re-prompting on gateway and node exec paths. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3991135031" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26789" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26789/hovercard" href="https://github.com/openclaw/openclaw/pull/26789">#26789</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandego/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandego">@pandego</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandego/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandego">@pandego</a>.</li>
<li>Exec approvals/config fallback: inherit <code>ask</code> from <code>exec-approvals.json</code> when <code>tools.exec.ask</code> is unset, so local full/off defaults no longer fall back to <code>on-miss</code> for exec tool and <code>nodes run</code>. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4003187396" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29187" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29187/hovercard" href="https://github.com/openclaw/openclaw/pull/29187">#29187</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bartok9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bartok9">@Bartok9</a>.</li>
<li>Exec approvals/allow-always shell scripts: persist and match script paths for wrapper invocations like <code>bash scripts/foo.sh</code> while still blocking <code>-c</code>/<code>-s</code> wrapper bypasses. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4025040146" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/35137" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/35137/hovercard" href="https://github.com/openclaw/openclaw/pull/35137">#35137</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yuweuii/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yuweuii">@yuweuii</a>.</li>
<li>Queue/followup dedupe across drain restarts: dedupe queued redelivery <code>message_id</code> values after queue recreation so busy-session followups no longer duplicate on replayed inbound events. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4017265987" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/33168" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/33168/hovercard" href="https://github.com/openclaw/openclaw/pull/33168">#33168</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rylena/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rylena">@rylena</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/rylena/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/rylena">@rylena</a>.</li>
<li>Telegram/preview-final edit idempotence: treat <code>message is not modified</code> errors during preview finalization as delivered so partial-stream final replies do not fall back to duplicate sends. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4024115730" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34983" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34983/hovercard" href="https://github.com/openclaw/openclaw/pull/34983">#34983</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HOYALIM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HOYALIM">@HOYALIM</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HOYALIM/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HOYALIM">@HOYALIM</a>.</li>
<li>Telegram/DM streaming transport parity: use message preview transport for all DM streaming lanes so final delivery can edit the active preview instead of sending duplicate finals. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038538127" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/38906" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/38906/hovercard" href="https://github.com/openclaw/openclaw/pull/38906">#38906</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>.</li>
<li>Telegram/DM draft streaming restoration: restore native <code>sendMessageDraft</code> preview transport for DM answer streaming while keeping reasoning on message transport, with regression coverage to keep draft finalization from sending duplicate finals. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040264375" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39398" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39398/hovercard" href="https://github.com/openclaw/openclaw/pull/39398">#39398</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/send retry safety: retry non-idempotent send paths only for pre-connect failures and make custom retry predicates strict, preventing ambiguous reconnect retries from sending duplicate messages. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4021000492" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/34238" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/34238/hovercard" href="https://github.com/openclaw/openclaw/pull/34238">#34238</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hal-crackbot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hal-crackbot">@hal-crackbot</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hal-crackbot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hal-crackbot">@hal-crackbot</a>.</li>
<li>ACP/run spawn delivery bootstrap: stop reusing requester inline delivery targets for one-shot <code>mode: "run"</code> ACP spawns, so fresh run-mode workers bootstrap in isolation instead of inheriting thread-bound session delivery behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4038896592" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39014" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39014/hovercard" href="https://github.com/openclaw/openclaw/pull/39014">#39014</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lidamao633/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lidamao633">@lidamao633</a>.</li>
<li>Discord/DM session-key normalization: rewrite legacy <code>discord:dm:*</code> and phantom direct-message <code>discord:channel:<user></code> session keys to <code>discord:direct:*</code> when the sender matches, so multi-agent Discord DMs stop falling into empty channel-shaped sessions and resume replying correctly.</li>
<li>Discord/native slash session fallback: treat empty configured bound-session keys as missing so <code>/status</code> and other native commands fall back to the routed slash session and routed channel session instead of blanking Discord session keys in normal channel bindings.</li>
<li>Agents/tool-call dispatch normalization: normalize provider-prefixed tool names before dispatch across <code>toolCall</code>, <code>toolUse</code>, and <code>functionCall</code> blocks, while preserving multi-segment tool suffixes when stripping provider wrappers so malformed-but-recoverable tool names no longer fail with <code>Tool not found</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040084397" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39328" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39328/hovercard" href="https://github.com/openclaw/openclaw/pull/39328">#39328</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/parallel tool-call compatibility: honor <code>parallel_tool_calls</code> / <code>parallelToolCalls</code> extra params only for <code>openai-completions</code> and <code>openai-responses</code> payloads, preserve higher-precedence alias overrides across config and runtime layers, and ignore invalid non-boolean values so single-tool-call providers like NVIDIA-hosted Kimi stop failing on forced parallel tool-call payloads. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4031894719" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/37048" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/37048/hovercard" href="https://github.com/openclaw/openclaw/issues/37048">#37048</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Config/invalid-load fail-closed: stop converting <code>INVALID_CONFIG</code> into an empty runtime config, keep valid settings available only through explicit best-effort diagnostic reads, and route read-only CLI diagnostics through that path so unknown keys no longer silently drop security-sensitive config. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998637289" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28140" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28140/hovercard" href="https://github.com/openclaw/openclaw/issues/28140">#28140</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bobsahur-robot/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bobsahur-robot">@bobsahur-robot</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Agents/codex-cli sandbox defaults: switch the built-in Codex backend from <code>read-only</code> to <code>workspace-write</code> so spawned coding runs can edit files out of the box. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040104302" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39336" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39336/hovercard" href="https://github.com/openclaw/openclaw/pull/39336">#39336</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xtangping/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xtangping">@0xtangping</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/0xtangping/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/0xtangping">@0xtangping</a>.</li>
<li>Gateway/health-monitor restart reason labeling: report <code>disconnected</code> instead of <code>stuck</code> for clean channel disconnect restarts, so operator logs distinguish socket drops from genuinely stuck channels. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4029327289" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/36436" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/36436/hovercard" href="https://github.com/openclaw/openclaw/pull/36436">#36436</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Control UI/agents-page overrides: auto-create minimal per-agent config entries when editing inherited agents, so model/tool/skill changes enable Save and inherited model fallbacks can be cleared by writing a primary-only override. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040082679" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39326" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39326/hovercard" href="https://github.com/openclaw/openclaw/pull/39326">#39326</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>.</li>
<li>Gateway/Telegram webhook-mode recovery: add <code>webhookCertPath</code> to re-upload self-signed certificates during webhook registration and skip stale-socket detection for webhook-mode channels, so Telegram webhook setups survive health-monitor restarts. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040061907" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39313" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39313/hovercard" href="https://github.com/openclaw/openclaw/pull/39313">#39313</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fellanH/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fellanH">@fellanH</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fellanH/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fellanH">@fellanH</a>.</li>
<li>Discord/config schema parity: add <code>channels.discord.agentComponents</code> to the strict Zod config schema so valid <code>agentComponents.enabled</code> settings (root and account-scoped) no longer fail with unrecognized-key validation errors. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040212280" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39378" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39378/hovercard" href="https://github.com/openclaw/openclaw/pull/39378">#39378</a> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gambletan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gambletan">@gambletan</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/thewilloftheshadow/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/thewilloftheshadow">@thewilloftheshadow</a>.</li>
<li>ACPX/MCP session bootstrap: inject configured MCP servers into ACP <code>session/new</code> and <code>session/load</code> for acpx-backed sessions, restoring Canva and other external MCP tools. Landed from contributor PR <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040106640" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39337" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39337/hovercard" href="https://github.com/openclaw/openclaw/pull/39337">#39337</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/goodspeed-apps/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/goodspeed-apps">@goodspeed-apps</a>.</li>
<li>Control UI/Telegram sender labels: preserve inbound sender labels in sanitized chat history so dashboard user-message groups split correctly and show real group-member names instead of <code>You</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4040312761" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/39414" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/39414/hovercard" href="https://github.com/openclaw/openclaw/pull/39414">#39414</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
</ul>
steipete
tag:github.com,2008:Repository/1103012935/v2026.3.2
2026-03-03T04:43:08Z
openclaw 2026.3.2
<h3>Changes</h3>
<ul>
<li>Secrets/SecretRef coverage: expand SecretRef support across the full supported user-supplied credential surface (64 targets total), including runtime collectors, <code>openclaw secrets</code> planning/apply/audit flows, onboarding SecretInput UX, and related docs; unresolved refs now fail fast on active surfaces while inactive surfaces report non-blocking diagnostics. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004175657" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29580" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29580/hovercard" href="https://github.com/openclaw/openclaw/pull/29580">#29580</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/joshavant/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/joshavant">@joshavant</a>.</li>
<li>Tools/PDF analysis: add a first-class <code>pdf</code> tool with native Anthropic and Google PDF provider support, extraction fallback for non-native models, configurable defaults (<code>agents.defaults.pdfModel</code>, <code>pdfMaxBytesMb</code>, <code>pdfMaxPages</code>), and docs/tests covering routing, validation, and registration. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009372875" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31319" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31319/hovercard" href="https://github.com/openclaw/openclaw/pull/31319">#31319</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyler6204/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyler6204">@tyler6204</a>.</li>
<li>Outbound adapters/plugins: add shared <code>sendPayload</code> support across direct-text-media, Discord, Slack, WhatsApp, Zalo, and Zalouser with multi-media iteration and chunk-aware text fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005716066" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30144" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30144/hovercard" href="https://github.com/openclaw/openclaw/pull/30144">#30144</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nohat/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nohat">@nohat</a>.</li>
<li>Models/MiniMax: add first-class <code>MiniMax-M2.5-highspeed</code> support across built-in provider catalogs, onboarding flows, and MiniMax OAuth plugin defaults, while keeping legacy <code>MiniMax-M2.5-Lightning</code> compatibility for existing configs.</li>
<li>Sessions/Attachments: add inline file attachment support for <code>sessions_spawn</code> (subagent runtime only) with base64/utf8 encoding, transcript content redaction, lifecycle cleanup, and configurable limits via <code>tools.sessions_spawn.attachments</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3942919131" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/16761" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/16761/hovercard" href="https://github.com/openclaw/openclaw/pull/16761">#16761</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/napetrov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/napetrov">@napetrov</a>.</li>
<li>Telegram/Streaming defaults: default <code>channels.telegram.streaming</code> to <code>partial</code> (from <code>off</code>) so new Telegram setups get live preview streaming out of the box, with runtime fallback to message-edit preview when native drafts are unavailable.</li>
<li>Telegram/DM streaming: use <code>sendMessageDraft</code> for private preview streaming, keep reasoning/answer preview lanes separated in DM reasoning-stream mode. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011789412" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31824" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31824/hovercard" href="https://github.com/openclaw/openclaw/pull/31824">#31824</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/obviyus/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/obviyus">@obviyus</a>.</li>
<li>Telegram/voice mention gating: add optional <code>disableAudioPreflight</code> on group/topic config to skip mention-detection preflight transcription for inbound voice notes where operators want text-only mention checks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3973120805" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23067" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23067/hovercard" href="https://github.com/openclaw/openclaw/pull/23067">#23067</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/yangnim21029/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/yangnim21029">@yangnim21029</a>.</li>
<li>CLI/Config validation: add <code>openclaw config validate</code> (with <code>--json</code>) to validate config files before gateway startup, and include detailed invalid-key paths in startup invalid-config errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009032103" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31220" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31220/hovercard" href="https://github.com/openclaw/openclaw/pull/31220">#31220</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Tools/Diffs: add PDF file output support and rendering quality customization controls (<code>fileQuality</code>, <code>fileScale</code>, <code>fileMaxWidth</code>) for generated diff artifacts, and document PDF as the preferred option when messaging channels compress images. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009454392" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31342" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31342/hovercard" href="https://github.com/openclaw/openclaw/pull/31342">#31342</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Memory/Ollama embeddings: add <code>memorySearch.provider = "ollama"</code> and <code>memorySearch.fallback = "ollama"</code> support, honor <code>models.providers.ollama</code> settings for memory embedding requests, and document Ollama embedding usage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3988270218" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26349" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26349/hovercard" href="https://github.com/openclaw/openclaw/pull/26349">#26349</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/nico-hoff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/nico-hoff">@nico-hoff</a>.</li>
<li>Zalo Personal plugin (<code>@openclaw/zalouser</code>): rebuilt channel runtime to use native <code>zca-js</code> integration in-process, removing external CLI transport usage and keeping QR/login + send/listen flows fully inside OpenClaw.</li>
<li>Plugin SDK/channel extensibility: expose <code>channelRuntime</code> on <code>ChannelGatewayContext</code> so external channel plugins can access shared runtime helpers (reply/routing/session/text/media/commands) without internal imports. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3983852322" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25462" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25462/hovercard" href="https://github.com/openclaw/openclaw/pull/25462">#25462</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/guxiaobo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/guxiaobo">@guxiaobo</a>.</li>
<li>Plugin runtime/STT: add <code>api.runtime.stt.transcribeAudioFile(...)</code> so extensions can transcribe local audio files through OpenClaw's configured media-understanding audio providers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3971247351" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/22402" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/22402/hovercard" href="https://github.com/openclaw/openclaw/pull/22402">#22402</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/benthecarman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/benthecarman">@benthecarman</a>.</li>
<li>Plugin hooks/session lifecycle: include <code>sessionKey</code> in <code>session_start</code>/<code>session_end</code> hook events and contexts so plugins can correlate lifecycle callbacks with routing identity. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3988617057" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26394" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26394/hovercard" href="https://github.com/openclaw/openclaw/pull/26394">#26394</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tempeste/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tempeste">@tempeste</a>.</li>
<li>Hooks/message lifecycle: add internal hook events <code>message:transcribed</code> and <code>message:preprocessed</code>, plus richer outbound <code>message:sent</code> context (<code>isGroup</code>, <code>groupId</code>) for group-conversation correlation and post-transcription automations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3903219738" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9859" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/9859/hovercard" href="https://github.com/openclaw/openclaw/pull/9859">#9859</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drickon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drickon">@Drickon</a>.</li>
<li>Media understanding/audio echo: add optional <code>tools.media.audio.echoTranscript</code> + <code>echoFormat</code> to send a pre-agent transcript confirmation message to the originating chat, with echo disabled by default. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013183809" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32150" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32150/hovercard" href="https://github.com/openclaw/openclaw/pull/32150">#32150</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AytuncYildizli/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AytuncYildizli">@AytuncYildizli</a>.</li>
<li>Plugin runtime/system: expose <code>runtime.system.requestHeartbeatNow(...)</code> so extensions can wake targeted sessions immediately after enqueueing system events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3954612500" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/19464" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/19464/hovercard" href="https://github.com/openclaw/openclaw/pull/19464">#19464</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AustinEral/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AustinEral">@AustinEral</a>.</li>
<li>Plugin runtime/events: expose <code>runtime.events.onAgentEvent</code> and <code>runtime.events.onSessionTranscriptUpdate</code> for extension-side subscriptions, and isolate transcript-listener failures so one faulty listener cannot break the entire update fanout. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3940598327" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/16044" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/16044/hovercard" href="https://github.com/openclaw/openclaw/pull/16044">#16044</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scifantastic/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scifantastic">@scifantastic</a>.</li>
<li>CLI/Banner taglines: add <code>cli.banner.taglineMode</code> (<code>random</code> | <code>default</code> | <code>off</code>) to control funny tagline behavior in startup output, with docs + FAQ guidance and regression tests for config override behavior.</li>
</ul>
<h3>Breaking</h3>
<ul>
<li><strong>BREAKING:</strong> Onboarding now defaults <code>tools.profile</code> to <code>messaging</code> for new local installs (interactive + non-interactive). New setups no longer start with broad coding/system tools unless explicitly configured.</li>
<li><strong>BREAKING:</strong> ACP dispatch now defaults to enabled unless explicitly disabled (<code>acp.dispatch.enabled=false</code>). If you need to pause ACP turn routing while keeping <code>/acp</code> controls, set <code>acp.dispatch.enabled=false</code>. Docs: <a href="https://docs.openclaw.ai/tools/acp-agents" rel="nofollow">https://docs.openclaw.ai/tools/acp-agents</a></li>
<li><strong>BREAKING:</strong> Plugin SDK removed <code>api.registerHttpHandler(...)</code>. Plugins must register explicit HTTP routes via <code>api.registerHttpRoute({ path, auth, match, handler })</code>, and dynamic webhook lifecycles should use <code>registerPluginHttpRoute(...)</code>.</li>
<li><strong>BREAKING:</strong> Zalo Personal plugin (<code>@openclaw/zalouser</code>) no longer depends on external <code>zca</code>-compatible CLI binaries (<code>openzca</code>, <code>zca-cli</code>) for runtime send/listen/login; operators should use <code>openclaw channels login --channel zalouser</code> after upgrade to refresh sessions in the new JS-native path.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Plugin command/runtime hardening: validate and normalize plugin command name/description at registration boundaries, and guard Telegram native menu normalization paths so malformed plugin command specs cannot crash startup (<code>trim</code> on undefined). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012537709" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31997" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31997/hovercard" href="https://github.com/openclaw/openclaw/pull/31997">#31997</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012308398" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31944" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31944/hovercard" href="https://github.com/openclaw/openclaw/issues/31944">#31944</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Telegram: guard duplicate-token checks and gateway startup token normalization when account tokens are missing, preventing <code>token.trim()</code> crashes during status/start flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012442366" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31973" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31973/hovercard" href="https://github.com/openclaw/openclaw/pull/31973">#31973</a>) Thanks @ningding97.</li>
<li>Discord/lifecycle startup status: push an immediate <code>connected</code> status snapshot when the gateway is already connected before lifecycle debug listeners attach, with abort-guarding to avoid contradictory status flips during pre-aborted startup. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014027446" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32336" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32336/hovercard" href="https://github.com/openclaw/openclaw/pull/32336">#32336</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mitchmcalister/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mitchmcalister">@mitchmcalister</a>.</li>
<li>Feishu/multi-app mention routing: guard mention detection in multi-bot groups by validating mention display name alongside bot <code>open_id</code>, preventing false-positive self-mentions from Feishu WebSocket remapping so only the actually mentioned bot responds under <code>requireMention</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4006264510" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30315" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30315/hovercard" href="https://github.com/openclaw/openclaw/pull/30315">#30315</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/teaguexiao/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/teaguexiao">@teaguexiao</a>.</li>
<li>Feishu/session-memory hook parity: trigger the shared <code>before_reset</code> session-memory hook path when Feishu <code>/new</code> and <code>/reset</code> commands execute so reset flows preserve memory behavior consistent with other channels. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009822009" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31437" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31437/hovercard" href="https://github.com/openclaw/openclaw/pull/31437">#31437</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Linux2010/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Linux2010">@Linux2010</a>.</li>
<li>Feishu/LINE group system prompts: forward per-group <code>systemPrompt</code> config into inbound context <code>GroupSystemPrompt</code> for Feishu and LINE group/room events so configured group-specific behavior actually applies at dispatch time. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011271027" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31713" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31713/hovercard" href="https://github.com/openclaw/openclaw/pull/31713">#31713</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/whiskyboy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/whiskyboy">@whiskyboy</a>.</li>
<li>Mentions/Slack formatting hardening: add null-safe guards for runtime text normalization paths so malformed/undefined text payloads do not crash mention stripping or mrkdwn conversion. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012018309" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31865" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31865/hovercard" href="https://github.com/openclaw/openclaw/pull/31865">#31865</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stone-jin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stone-jin">@stone-jin</a>.</li>
<li>Feishu/Plugin sdk compatibility: add safe webhook default fallbacks when loading Feishu monitor state so mixed-version installs no longer crash if older <code>openclaw/plugin-sdk</code> builds omit webhook default constants. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010665126" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31606" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31606/hovercard" href="https://github.com/openclaw/openclaw/issues/31606">#31606</a>)</li>
<li>Feishu/group broadcast dispatch: add configurable multi-agent group broadcast dispatch with observer-session isolation, cross-account dedupe safeguards, and non-mention history buffering rules that avoid duplicate replay in broadcast/topic workflows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004156177" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29575" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29575/hovercard" href="https://github.com/openclaw/openclaw/pull/29575">#29575</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ohmyskyhigh/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ohmyskyhigh">@ohmyskyhigh</a>.</li>
<li>Gateway/Subagent TLS pairing: allow authenticated local <code>gateway-client</code> backend self-connections to skip device pairing while still requiring pairing for non-local/direct-host paths, restoring <code>sessions_spawn</code> with <code>gateway.tls.enabled=true</code> in Docker/LAN setups. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4007469159" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30740" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/30740/hovercard" href="https://github.com/openclaw/openclaw/issues/30740">#30740</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Browser/CDP startup diagnostics: include Chrome stderr output and a Linux no-sandbox hint in startup timeout errors so failed launches are easier to diagnose. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4003618486" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29312" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/29312/hovercard" href="https://github.com/openclaw/openclaw/issues/29312">#29312</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/veast/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/veast">@veast</a>.</li>
<li>Synology Chat/webhook ingress hardening: enforce bounded body reads (size + timeout) via shared request-body guards to prevent unauthenticated slow-body hangs before token validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3985963917" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25831" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25831/hovercard" href="https://github.com/openclaw/openclaw/pull/25831">#25831</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Feishu/Dedup restart resilience: warm persistent dedup state into memory on monitor startup so retry events after gateway restart stay suppressed without requiring initial on-disk probe misses. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010663639" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31605" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31605/hovercard" href="https://github.com/openclaw/openclaw/pull/31605">#31605</a>)</li>
<li>Voice-call/runtime lifecycle: prevent <code>EADDRINUSE</code> loops by resetting failed runtime promises, making webhook <code>start()</code> idempotent with the actual bound port, and fully cleaning up webhook/tunnel/tailscale resources after startup failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014229248" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32395" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32395/hovercard" href="https://github.com/openclaw/openclaw/pull/32395">#32395</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Gateway/Security hardening: tie loopback-origin dev allowance to actual local socket clients (not Host header claims), add explicit warnings/metrics when <code>gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback</code> accepts websocket origins, harden safe-regex detection for quantified ambiguous alternation patterns (for example <code>(a|aa)+</code>), and bound large regex-evaluation inputs for session-filter and log-redaction paths.</li>
<li>Gateway/Plugin HTTP hardening: require explicit <code>auth</code> for plugin route registration, add route ownership guards for duplicate <code>path+match</code> registrations, centralize plugin path matching/auth logic into dedicated modules, and share webhook target-route lifecycle wiring across channel monitors to avoid stale or conflicting registrations. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Browser/Profile defaults: prefer <code>openclaw</code> profile over <code>chrome</code> in headless/no-sandbox environments unless an explicit <code>defaultProfile</code> is configured. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3933785313" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/14944" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/14944/hovercard" href="https://github.com/openclaw/openclaw/pull/14944">#14944</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BenediktSchackenberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BenediktSchackenberg">@BenediktSchackenberg</a>.</li>
<li>Gateway/WS security: keep plaintext <code>ws://</code> loopback-only by default, with explicit break-glass private-network opt-in via <code>OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1</code>; align onboarding/client/call validation and tests to this strict-default policy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000794802" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28670" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28670/hovercard" href="https://github.com/openclaw/openclaw/pull/28670">#28670</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dashed/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dashed">@dashed</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>OpenAI Codex OAuth/TLS prerequisites: add an OAuth TLS cert-chain preflight with actionable remediation for cert trust failures, and gate doctor TLS prerequisite probing to OpenAI Codex OAuth-configured installs (or explicit <code>doctor --deep</code>) to avoid unconditional outbound probe latency. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012757659" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32051" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32051/hovercard" href="https://github.com/openclaw/openclaw/pull/32051">#32051</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/alexfilatov/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/alexfilatov">@alexfilatov</a>.</li>
<li>Security/Webhook request hardening: enforce auth-before-body parsing for BlueBubbles and Google Chat webhook handlers, add strict pre-auth body/time budgets for webhook auth paths (including LINE signature verification), and add shared in-flight/request guardrails plus regression tests/lint checks to prevent reintroducing unauthenticated slow-body DoS patterns. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GCXWLP/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GCXWLP">@GCXWLP</a> for reporting.</li>
<li>CLI/Config validation and routing hardening: dedupe <code>openclaw config validate</code> failures to a single authoritative report, expose allowed-values metadata/hints across core Zod and plugin AJV validation (including <code>--json</code> fields), sanitize terminal-rendered validation text, and make command-path parsing root-option-aware across preaction/route/lazy registration (including routed <code>config get/unset</code> with split root options). Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/gumadeiras/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/gumadeiras">@gumadeiras</a>.</li>
<li>Browser/Extension relay reconnect tolerance: keep <code>/json/version</code> and <code>/cdp</code> reachable during short MV3 worker disconnects when attached targets still exist, and retain clients across reconnect grace windows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4006020304" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30232" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30232/hovercard" href="https://github.com/openclaw/openclaw/pull/30232">#30232</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>CLI/Browser start timeout: honor <code>openclaw browser --timeout <ms> start</code> and stop by removing the fixed 15000ms override so slower Chrome startups can use caller-provided timeouts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3971274065" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/22412" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/22412/hovercard" href="https://github.com/openclaw/openclaw/issues/22412">#22412</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3974043369" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23427" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/23427/hovercard" href="https://github.com/openclaw/openclaw/issues/23427">#23427</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Synology Chat/gateway lifecycle: keep <code>startAccount</code> pending until abort for inactive and active account paths to prevent webhook route restart loops under gateway supervision. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3973134917" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23074" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23074/hovercard" href="https://github.com/openclaw/openclaw/pull/23074">#23074</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/druide67/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/druide67">@druide67</a>.</li>
<li>Exec approvals/allowlist matching: escape regex metacharacters in path-pattern literals (while preserving glob wildcards), preventing crashes on allowlisted executables like <code>/usr/bin/g++</code> and correctly matching mixed wildcard/literal token paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013241287" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32162" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32162/hovercard" href="https://github.com/openclaw/openclaw/pull/32162">#32162</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Synology Chat/webhook compatibility: accept JSON and alias payload fields, allow token resolution from body/query/header sources, and ACK webhook requests with <code>204</code> to avoid persistent <code>Processing...</code> states in Synology Chat clients. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990197497" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26635" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26635/hovercard" href="https://github.com/openclaw/openclaw/pull/26635">#26635</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/memphislee09-source/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/memphislee09-source">@memphislee09-source</a>.</li>
<li>Voice-call/Twilio signature verification: retry signature validation across deterministic URL port variants (with/without port) to handle mixed Twilio signing behavior behind reverse proxies and non-standard ports. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3981803125" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/25140" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/25140/hovercard" href="https://github.com/openclaw/openclaw/pull/25140">#25140</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/drvoss/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/drvoss">@drvoss</a>.</li>
<li>Slack/Bolt startup compatibility: remove invalid <code>message.channels</code> and <code>message.groups</code> event registrations so Slack providers no longer crash on startup with Bolt 4.6+; channel/group traffic continues through the unified <code>message</code> handler (<code>channel_type</code>). (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012653594" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32033" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32033/hovercard" href="https://github.com/openclaw/openclaw/pull/32033">#32033</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mahopan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mahopan">@mahopan</a>.</li>
<li>Slack/socket auth failure handling: fail fast on non-recoverable auth errors (<code>account_inactive</code>, <code>invalid_auth</code>, etc.) during startup and reconnect instead of retry-looping indefinitely, including <code>unable_to_socket_mode_start</code> error payload propagation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014147926" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32377" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32377/hovercard" href="https://github.com/openclaw/openclaw/pull/32377">#32377</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Gateway/macOS LaunchAgent hardening: write <code>Umask=077</code> in generated gateway LaunchAgent plists so npm upgrades preserve owner-only default file permissions for gateway-created state files. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012223358" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31919" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31919/hovercard" href="https://github.com/openclaw/openclaw/pull/31919">#31919</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012170493" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31905" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31905/hovercard" href="https://github.com/openclaw/openclaw/issues/31905">#31905</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>macOS/LaunchAgent security defaults: write <code>Umask=63</code> (octal <code>077</code>) into generated gateway launchd plists so post-update service reinstalls keep owner-only file permissions by default instead of falling back to system <code>022</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012617828" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32022" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32022/hovercard" href="https://github.com/openclaw/openclaw/pull/32022">#32022</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012170493" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31905" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31905/hovercard" href="https://github.com/openclaw/openclaw/issues/31905">#31905</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Media understanding/provider HTTP proxy routing: pass a proxy-aware fetch function from <code>HTTPS_PROXY</code>/<code>HTTP_PROXY</code> env vars into audio/video provider calls (with graceful malformed-proxy fallback) so transcription/video requests honor configured outbound proxies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3993003918" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27093" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27093/hovercard" href="https://github.com/openclaw/openclaw/pull/27093">#27093</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mcaxtr/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mcaxtr">@mcaxtr</a>.</li>
<li>Sandbox/workspace mount permissions: make primary <code>/workspace</code> bind mounts read-only whenever <code>workspaceAccess</code> is not <code>rw</code> (including <code>none</code>) across both core sandbox container and sandbox browser create flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013605136" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32227" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32227/hovercard" href="https://github.com/openclaw/openclaw/pull/32227">#32227</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/guanyu-zhang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/guanyu-zhang">@guanyu-zhang</a>.</li>
<li>Tools/fsPolicy propagation: honor <code>tools.fs.workspaceOnly</code> for image/pdf local-root allowlists so non-sandbox media paths outside workspace are rejected when workspace-only mode is enabled. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012096871" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31882" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31882/hovercard" href="https://github.com/openclaw/openclaw/pull/31882">#31882</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/justinhuangcode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/justinhuangcode">@justinhuangcode</a>.</li>
<li>Daemon/Homebrew runtime pinning: resolve Homebrew Cellar Node paths to stable Homebrew-managed symlinks (including versioned formulas like <code>node@22</code>) so gateway installs keep the intended runtime across brew upgrades. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013375906" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32185" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32185/hovercard" href="https://github.com/openclaw/openclaw/pull/32185">#32185</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Browser/Security output boundary hardening: replace check-then-rename output commits with root-bound fd-verified writes, unify install/skills canonical path-boundary checks, and add regression coverage for symlink-rebind race paths across browser output and shared fs-safe write flows. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Gateway/Security canonicalization hardening: decode plugin route path variants to canonical fixpoint (with bounded depth), fail closed on canonicalization anomalies, and enforce gateway auth for deeply encoded <code>/api/channels/*</code> variants to prevent alternate-path auth bypass through plugin handlers. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Browser/Gateway hardening: preserve env credentials for <code>OPENCLAW_GATEWAY_URL</code> / <code>CLAWDBOT_GATEWAY_URL</code> while treating explicit <code>--url</code> as override-only auth, and make container browser hardening flags optional with safer defaults for Docker/LXC stability. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010106178" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31504" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31504/hovercard" href="https://github.com/openclaw/openclaw/pull/31504">#31504</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/Control UI basePath webhook passthrough: let non-read methods under configured <code>controlUiBasePath</code> fall through to plugin routes (instead of returning Control UI 405), restoring webhook handlers behind basePath mounts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013932361" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32311" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32311/hovercard" href="https://github.com/openclaw/openclaw/pull/32311">#32311</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>.</li>
<li>Control UI/Legacy browser compatibility: replace <code>toSorted</code>-dependent cron suggestion sorting in <code>app-render</code> with a compatibility helper so older browsers without <code>Array.prototype.toSorted</code> no longer white-screen. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011583391" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31775" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31775/hovercard" href="https://github.com/openclaw/openclaw/pull/31775">#31775</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>macOS/PeekabooBridge: add compatibility socket symlinks for legacy <code>clawdbot</code>, <code>clawdis</code>, and <code>moltbot</code> Application Support socket paths so pre-rename clients can still connect. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3881363433" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/6033" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/6033/hovercard" href="https://github.com/openclaw/openclaw/pull/6033">#6033</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/lumpinif/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/lumpinif">@lumpinif</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/message tool reliability: avoid false <code>Unknown channel</code> failures when <code>message.*</code> actions receive platform-specific channel ids by falling back to <code>toolContext.currentChannelProvider</code>, and prevent health-monitor restart thrash for channels that just (re)started by adding a per-channel startup-connect grace window. (from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014097389" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32367" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32367/hovercard" href="https://github.com/openclaw/openclaw/pull/32367">#32367</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/MunemHashmi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/MunemHashmi">@MunemHashmi</a>.</li>
<li>Windows/Spawn canonicalization: unify non-core Windows spawn handling across ACP client, QMD/mcporter memory paths, and sandbox Docker execution using the shared wrapper-resolution policy, with targeted regression coverage for <code>.cmd</code> shim unwrapping and shell fallback behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011456716" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31750" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31750/hovercard" href="https://github.com/openclaw/openclaw/pull/31750">#31750</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Takhoffman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Takhoffman">@Takhoffman</a>.</li>
<li>Security/ACP sandbox inheritance: enforce fail-closed runtime guardrails for <code>sessions_spawn</code> with <code>runtime="acp"</code> by rejecting ACP spawns from sandboxed requester sessions and rejecting <code>sandbox="require"</code> for ACP runtime, preventing sandbox-boundary bypass via host-side ACP initialization. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013666757" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32254" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32254/hovercard" href="https://github.com/openclaw/openclaw/pull/32254">#32254</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dutifulbob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dutifulbob">@dutifulbob</a> for the fix.</li>
<li>Security/Web tools SSRF guard: keep DNS pinning for untrusted <code>web_fetch</code> and citation-redirect URL checks when proxy env vars are set, and require explicit dangerous opt-in before env-proxy routing can bypass pinned dispatch for trusted/operator-controlled endpoints. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Gemini schema sanitization: coerce malformed JSON Schema <code>properties</code> values (<code>null</code>, arrays, primitives) to <code>{}</code> before provider validation, preventing downstream strict-validator crashes on invalid plugin/tool schemas. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014008451" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32332" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32332/hovercard" href="https://github.com/openclaw/openclaw/pull/32332">#32332</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/webdevtodayjason/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/webdevtodayjason">@webdevtodayjason</a>.</li>
<li>Media understanding/malformed attachment guards: harden attachment selection and decision summary formatting against non-array or malformed attachment payloads to prevent runtime crashes on invalid inbound metadata shapes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998264623" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28024" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28024/hovercard" href="https://github.com/openclaw/openclaw/pull/28024">#28024</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/claw9267/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/claw9267">@claw9267</a>.</li>
<li>Browser/Extension navigation reattach: preserve debugger re-attachment when relay is temporarily disconnected by deferring relay attach events until reconnect/re-announce, reducing post-navigation tab loss. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000998323" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28725" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28725/hovercard" href="https://github.com/openclaw/openclaw/pull/28725">#28725</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stone-jin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stone-jin">@stone-jin</a>.</li>
<li>Browser/Extension relay stale tabs: evict stale cached targets from <code>/json/list</code> when extension targets are destroyed/crashed or commands fail with missing target/session errors. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3881802289" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/6175" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/6175/hovercard" href="https://github.com/openclaw/openclaw/issues/6175">#6175</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Browser/CDP startup readiness: wait for CDP websocket readiness after launching Chrome and cleanly stop/reset when readiness never arrives, reducing follow-up <code>PortInUseError</code> races after <code>browser start</code>/<code>open</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004095884" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29538" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29538/hovercard" href="https://github.com/openclaw/openclaw/pull/29538">#29538</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/AaronWander/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/AaronWander">@AaronWander</a>.</li>
<li>OpenAI/Responses WebSocket tool-call id hygiene: normalize blank/whitespace streamed tool-call ids before persistence, and block empty <code>function_call_output.call_id</code> payloads in the WS conversion path to avoid OpenAI 400 errors (<code>Invalid 'input[n].call_id': empty string</code>), with regression coverage for both inbound stream normalization and outbound payload guards.</li>
<li>Security/Nodes camera URL downloads: bind node <code>camera.snap</code>/<code>camera.clip</code> URL payload downloads to the resolved node host, enforce fail-closed behavior when node <code>remoteIp</code> is unavailable, and use SSRF-guarded fetch with redirect host/protocol checks to prevent off-node fetch pivots. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Config/backups hardening: enforce owner-only (<code>0600</code>) permissions on rotated config backups and clean orphan <code>.bak.*</code> files outside the managed backup ring, reducing credential leakage risk from stale or permissive backup artifacts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011295734" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31718" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31718/hovercard" href="https://github.com/openclaw/openclaw/pull/31718">#31718</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/YUJIE2002/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/YUJIE2002">@YUJIE2002</a>.</li>
<li>Telegram/inbound media filenames: preserve original <code>file_name</code> metadata for document/audio/video/animation downloads (with fetch/path fallbacks), so saved inbound attachments keep sender-provided names instead of opaque Telegram file paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011839955" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31837" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31837/hovercard" href="https://github.com/openclaw/openclaw/pull/31837">#31837</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kay-051/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kay-051">@Kay-051</a>.</li>
<li>Gateway/OpenAI chat completions: honor <code>x-openclaw-message-channel</code> when building <code>agentCommand</code> input for <code>/v1/chat/completions</code>, preserving caller channel identity instead of forcing <code>webchat</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4006650859" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30462" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30462/hovercard" href="https://github.com/openclaw/openclaw/pull/30462">#30462</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Plugin SDK/runtime hardening: add package export verification in CI/release checks to catch missing runtime exports before publish-time regressions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000248927" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28575" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28575/hovercard" href="https://github.com/openclaw/openclaw/pull/28575">#28575</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>.</li>
<li>Media/MIME normalization: normalize parameterized/case-variant MIME strings in <code>kindFromMime</code> (for example <code>Audio/Ogg; codecs=opus</code>) so WhatsApp voice notes are classified as audio and routed through transcription correctly. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013769929" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32280" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32280/hovercard" href="https://github.com/openclaw/openclaw/pull/32280">#32280</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lucenx9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lucenx9">@Lucenx9</a>.</li>
<li>Discord/audio preflight mentions: detect audio attachments via Discord <code>content_type</code> and gate preflight transcription on typed text (not media placeholders), so guild voice-note mentions are transcribed and matched correctly. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013133778" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32136" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32136/hovercard" href="https://github.com/openclaw/openclaw/pull/32136">#32136</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnMetaCode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnMetaCode">@jnMetaCode</a>.</li>
<li>Feishu/topic session routing: use <code>thread_id</code> as topic session scope fallback when <code>root_id</code> is absent, keep first-turn topic keys stable across thread creation, and force thread replies when inbound events already carry topic/thread context. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004698380" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29788" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29788/hovercard" href="https://github.com/openclaw/openclaw/pull/29788">#29788</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/songyaolun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/songyaolun">@songyaolun</a>.</li>
<li>Gateway/Webchat NO_REPLY streaming: suppress assistant lead-fragment deltas that are prefixes of <code>NO_REPLY</code> and keep final-message buffering in sync, preventing partial <code>NO</code> leaks on silent-response runs while preserving legitimate short replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012844989" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32073" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/32073/hovercard" href="https://github.com/openclaw/openclaw/issues/32073">#32073</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Telegram/models picker callbacks: keep long model buttons selectable by falling back to compact callback payloads and resolving provider ids on selection (with provider re-prompt on ambiguity), avoiding Telegram 64-byte callback truncation failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011960492" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31857" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31857/hovercard" href="https://github.com/openclaw/openclaw/pull/31857">#31857</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Context-window metadata warmup: add exponential config-load retry backoff (1s -> 2s -> 4s, capped at 60s) so transient startup failures recover automatically without hot-loop retries.</li>
<li>Voice-call/Twilio external outbound: auto-register webhook-first <code>outbound-api</code> calls (initiated outside OpenClaw) so media streams are accepted and call direction metadata stays accurate. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008916219" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31181" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31181/hovercard" href="https://github.com/openclaw/openclaw/pull/31181">#31181</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Feishu/topic root replies: prefer <code>root_id</code> as outbound <code>replyTargetMessageId</code> when present, and parse millisecond <code>message_create_time</code> values correctly so topic replies anchor to the root message in grouped thread flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005074434" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29968" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29968/hovercard" href="https://github.com/openclaw/openclaw/pull/29968">#29968</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Feishu/DM pairing reply target: send pairing challenge replies to <code>chat:<chat_id></code> instead of <code>user:<sender_open_id></code> so Lark/Feishu private chats with user-id-only sender payloads receive pairing messages reliably. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009691779" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31403" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31403/hovercard" href="https://github.com/openclaw/openclaw/pull/31403">#31403</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Feishu/Lark private DM routing: treat inbound <code>chat_type: "private"</code> as direct-message context for pairing/mention-forward/reaction synthetic handling so Lark private chats behave like Feishu p2p DMs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009678671" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31400" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31400/hovercard" href="https://github.com/openclaw/openclaw/pull/31400">#31400</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Signal/message actions: allow <code>react</code> to fall back to <code>toolContext.currentMessageId</code> when <code>messageId</code> is omitted, matching Telegram behavior and unblocking agent-initiated reactions on inbound turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013551995" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32217" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32217/hovercard" href="https://github.com/openclaw/openclaw/pull/32217">#32217</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/dunamismax/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/dunamismax">@dunamismax</a>.</li>
<li>Discord/message actions: allow <code>react</code> to fall back to <code>toolContext.currentMessageId</code> when <code>messageId</code> is omitted, matching Telegram/Signal reaction ergonomics in inbound turns.</li>
<li>Synology Chat/reply delivery: resolve webhook usernames to Chat API <code>user_id</code> values for outbound chatbot replies, avoiding mismatches between webhook user IDs and <code>method=chatbot</code> recipient IDs in multi-account setups. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3974951369" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23709" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23709/hovercard" href="https://github.com/openclaw/openclaw/pull/23709">#23709</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/druide67/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/druide67">@druide67</a>.</li>
<li>Slack/thread context payloads: only inject thread starter/history text on first thread turn for new sessions while preserving thread metadata, reducing repeated context-token bloat on long-lived thread sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013107363" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32133" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32133/hovercard" href="https://github.com/openclaw/openclaw/pull/32133">#32133</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sourman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sourman">@sourman</a>.</li>
<li>Slack/session routing: keep top-level channel messages in one shared session when <code>replyToMode=off</code>, while preserving thread-scoped keys for true thread replies and non-off modes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013422900" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32193" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32193/hovercard" href="https://github.com/openclaw/openclaw/pull/32193">#32193</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Voice-call/webhook routing: require exact webhook path matches (instead of prefix matches) so lookalike paths cannot reach provider verification/dispatch logic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012249779" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31930" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31930/hovercard" href="https://github.com/openclaw/openclaw/pull/31930">#31930</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/afurm/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/afurm">@afurm</a>.</li>
<li>Zalo/Pairing auth tests: add webhook regression coverage asserting DM pairing-store reads/writes remain account-scoped, preventing cross-account authorization bleed in multi-account setups. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3987175287" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26121" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26121/hovercard" href="https://github.com/openclaw/openclaw/pull/26121">#26121</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Zalouser/Pairing auth tests: add account-scoped DM pairing-store regression coverage (<code>monitor.account-scope.test.ts</code>) to prevent cross-account allowlist bleed in multi-account setups. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3990414588" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26672" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26672/hovercard" href="https://github.com/openclaw/openclaw/pull/26672">#26672</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Feishu/Send target prefixes: normalize explicit <code>group:</code>/<code>dm:</code> send targets and preserve explicit receive-id routing hints when resolving outbound Feishu targets. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010580995" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31594" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31594/hovercard" href="https://github.com/openclaw/openclaw/pull/31594">#31594</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Webchat/Feishu session continuation: preserve routable <code>OriginatingChannel</code>/<code>OriginatingTo</code> metadata from session delivery context in <code>chat.send</code>, and prefer provider-normalized channel when deciding cross-channel route dispatch so Webchat replies continue on the selected Feishu session instead of falling back to main/internal session routing. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010413222" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31573" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31573/hovercard" href="https://github.com/openclaw/openclaw/issues/31573">#31573</a>)</li>
<li>Telegram/implicit mention forum handling: exclude Telegram forum system service messages (<code>forum_topic_*</code>, <code>general_forum_topic_*</code>) from reply-chain implicit mention detection so <code>requireMention</code> does not get bypassed inside bot-created topic lifecycle events. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013715549" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32262" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32262/hovercard" href="https://github.com/openclaw/openclaw/pull/32262">#32262</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Slack/inbound debounce routing: isolate top-level non-DM message debounce keys by message timestamp to avoid cross-thread collisions, preserve DM batching, and flush pending top-level buffers before immediate non-debounce follow-ups to keep ordering stable. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012340763" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31951" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31951/hovercard" href="https://github.com/openclaw/openclaw/pull/31951">#31951</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Feishu/Duplicate replies: suppress same-target reply dispatch when message-tool sends use generic provider metadata (<code>provider: "message"</code>) and normalize <code>lark</code>/<code>feishu</code> provider aliases during duplicate-target checks, preventing double-delivery in Feishu sessions. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010171574" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31526" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31526/hovercard" href="https://github.com/openclaw/openclaw/issues/31526">#31526</a>)</li>
<li>Webchat/silent token leak: filter assistant <code>NO_REPLY</code>-only transcript entries from <code>chat.history</code> responses and add client-side defense-in-depth guards in the chat controller so internal silent tokens never render as visible chat bubbles. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012582465" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32015" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/32015/hovercard" href="https://github.com/openclaw/openclaw/issues/32015">#32015</a>) Consolidates overlap from <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013365410" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32183" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32183/hovercard" href="https://github.com/openclaw/openclaw/pull/32183">#32183</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012882596" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32082" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32082/hovercard" href="https://github.com/openclaw/openclaw/pull/32082">#32082</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012733219" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32045" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32045/hovercard" href="https://github.com/openclaw/openclaw/pull/32045">#32045</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012758380" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32052" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32052/hovercard" href="https://github.com/openclaw/openclaw/pull/32052">#32052</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013318404" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32172" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32172/hovercard" href="https://github.com/openclaw/openclaw/pull/32172">#32172</a>, and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013001477" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32112" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32112/hovercard" href="https://github.com/openclaw/openclaw/pull/32112">#32112</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/ademczuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/ademczuk">@ademczuk</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>, @ningding97, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>, and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/x4v13r1120/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/x4v13r1120">@x4v13r1120</a>.</li>
<li>Doctor/local memory provider checks: stop false-positive local-provider warnings when <code>provider=local</code> and no explicit <code>modelPath</code> is set by honoring default local model fallback while still warning when gateway probe reports local embeddings not ready. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012573623" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32014" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32014/hovercard" href="https://github.com/openclaw/openclaw/pull/32014">#32014</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012542612" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31998" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31998/hovercard" href="https://github.com/openclaw/openclaw/issues/31998">#31998</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adhishthite/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adhishthite">@adhishthite</a>.</li>
<li>Media understanding/parakeet CLI output parsing: read <code>parakeet-mlx</code> transcripts from <code>--output-dir/<media-basename>.txt</code> when txt output is requested (or default), with stdout fallback for non-txt formats. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3898931716" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/9177" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/9177/hovercard" href="https://github.com/openclaw/openclaw/pull/9177">#9177</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mac-110/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mac-110">@mac-110</a>.</li>
<li>Media understanding/audio transcription guard: skip tiny/empty audio files (<1024 bytes) before provider/CLI transcription to avoid noisy invalid-audio failures and preserve clean fallback behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3893872359" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/8388" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/8388/hovercard" href="https://github.com/openclaw/openclaw/pull/8388">#8388</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>.</li>
<li>Gateway/Plugin HTTP route precedence: run explicit plugin HTTP routes before the Control UI SPA catch-all so registered plugin webhook/custom paths remain reachable, while unmatched paths still fall through to Control UI handling. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012118050" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31885" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31885/hovercard" href="https://github.com/openclaw/openclaw/pull/31885">#31885</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Gateway/Node browser proxy routing: honor <code>profile</code> from <code>browser.request</code> JSON body when query params omit it, while preserving query-profile precedence when both are present. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001525568" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28852" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28852/hovercard" href="https://github.com/openclaw/openclaw/pull/28852">#28852</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Gateway/Control UI basePath POST handling: return 405 for <code>POST</code> on exact basePath routes (for example <code>/openclaw</code>) instead of redirecting, and add end-to-end regression coverage that root-mounted webhook POST paths still pass through to plugin handlers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009492033" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31349" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31349/hovercard" href="https://github.com/openclaw/openclaw/pull/31349">#31349</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Browser/default profile selection: default <code>browser.defaultProfile</code> behavior now prefers <code>openclaw</code> (managed standalone CDP) when no explicit default is configured, while still auto-provisioning the <code>chrome</code> relay profile for explicit opt-in use. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012650434" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32031" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32031/hovercard" href="https://github.com/openclaw/openclaw/pull/32031">#32031</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012178074" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31907" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31907/hovercard" href="https://github.com/openclaw/openclaw/issues/31907">#31907</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Sandbox/mkdirp boundary checks: allow existing in-boundary directories to pass mkdirp boundary validation when directory open probes return platform-specific I/O errors, with regression coverage for directory-safe fallback behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010285373" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31547" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31547/hovercard" href="https://github.com/openclaw/openclaw/pull/31547">#31547</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Models/config env propagation: apply <code>config.env.vars</code> before implicit provider discovery in models bootstrap so config-scoped credentials are visible to implicit provider resolution paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013880877" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32295" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32295/hovercard" href="https://github.com/openclaw/openclaw/pull/32295">#32295</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hsiaoa/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hsiaoa">@hsiaoa</a>.</li>
<li>Models/Codex usage labels: infer weekly secondary usage windows from reset cadence when API window seconds are ambiguously reported as 24h, so <code>openclaw models status</code> no longer mislabels weekly limits as daily. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012269112" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31938" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31938/hovercard" href="https://github.com/openclaw/openclaw/pull/31938">#31938</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Gateway/Heartbeat model reload: treat <code>models.*</code> and <code>agents.defaults.model</code> config updates as heartbeat hot-reload triggers so heartbeat picks up model changes without a full gateway restart. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012734734" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32046" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32046/hovercard" href="https://github.com/openclaw/openclaw/pull/32046">#32046</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stakeswky/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stakeswky">@stakeswky</a>.</li>
<li>Memory/LanceDB embeddings: forward configured <code>embedding.dimensions</code> into OpenAI embeddings requests so vector size and API output dimensions stay aligned when dimensions are explicitly configured. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012673796" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32036" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32036/hovercard" href="https://github.com/openclaw/openclaw/pull/32036">#32036</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scotthuang/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scotthuang">@scotthuang</a>.</li>
<li>Gateway/Control UI method guard: allow POST requests to non-UI routes to fall through when no base path is configured, and add POST regression coverage for fallthrough and base-path 405 behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3975593058" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23970" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23970/hovercard" href="https://github.com/openclaw/openclaw/pull/23970">#23970</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyler6204/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyler6204">@tyler6204</a>.</li>
<li>Browser/CDP status accuracy: require a successful <code>Browser.getVersion</code> response over the CDP websocket (not just socket-open) before reporting <code>cdpReady</code>, so stale idle command channels are surfaced as unhealthy. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3974043369" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23427" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/23427/hovercard" href="https://github.com/openclaw/openclaw/issues/23427">#23427</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Daemon/systemd checks in containers: treat missing <code>systemctl</code> invocations (including <code>spawn systemctl ENOENT</code>/<code>EACCES</code>) as unavailable service state during <code>is-enabled</code> checks, preventing container flows from failing with <code>Gateway service check failed</code> before install/status handling can continue. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3987080597" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26089" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/26089/hovercard" href="https://github.com/openclaw/openclaw/issues/26089">#26089</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/sahilsatralkar/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/sahilsatralkar">@sahilsatralkar</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Security/Node exec approvals: revalidate approval-bound <code>cwd</code> identity immediately before execution/forwarding and fail closed with an explicit denial when <code>cwd</code> drifts after approval hardening.</li>
<li>Security audit/skills workspace hardening: add <code>skills.workspace.symlink_escape</code> warning in <code>openclaw security audit</code> when workspace <code>skills/**/SKILL.md</code> resolves outside the workspace root (for example symlink-chain drift), plus docs coverage in the security glossary.</li>
<li>Security/Node exec approvals: preserve shell/dispatch-wrapper argv semantics during approval hardening so approved wrapper commands (for example <code>env sh -c ...</code>) cannot drift into a different runtime command shape, and add regression coverage for both approval-plan generation and approved runtime execution paths. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Security/fs-safe write hardening: make <code>writeFileWithinRoot</code> use same-directory temp writes plus atomic rename, add post-write inode/hardlink revalidation with security warnings on boundary drift, and avoid truncating existing targets when final rename fails.</li>
<li>Security/Skills archive extraction: unify tar extraction safety checks across tar.gz and tar.bz2 install flows, enforce tar compressed-size limits, and fail closed if tar.bz2 archives change between preflight and extraction to prevent bypasses of entry-type/size guardrails. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/GCXWLP/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/GCXWLP">@GCXWLP</a> for reporting.</li>
<li>Security/Prompt spoofing hardening: stop injecting queued runtime events into user-role prompt text, route them through trusted system-prompt context, and neutralize inbound spoof markers like <code>[System Message]</code> and line-leading <code>System:</code> in untrusted message content. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4006640033" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30448" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/30448/hovercard" href="https://github.com/openclaw/openclaw/issues/30448">#30448</a>)</li>
<li>Sandbox/Docker setup command parsing: accept <code>agents.*.sandbox.docker.setupCommand</code> as either a string or a string array, and normalize arrays to newline-delimited shell scripts so multi-step setup commands no longer concatenate without separators. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012343733" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31953" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31953/hovercard" href="https://github.com/openclaw/openclaw/pull/31953">#31953</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Sandbox/Bootstrap context boundary hardening: reject symlink/hardlink alias bootstrap seed files that resolve outside the source workspace and switch post-compaction <code>AGENTS.md</code> context reads to boundary-verified file opens, preventing host file content from being injected via workspace aliasing. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tdjackey/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tdjackey">@tdjackey</a> for reporting.</li>
<li>Agents/Sandbox workdir mapping: map container workdir paths (for example <code>/workspace</code>) back to the host workspace before sandbox path validation so exec requests keep the intended directory in containerized runs instead of falling back to an unavailable host path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011858653" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31841" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31841/hovercard" href="https://github.com/openclaw/openclaw/pull/31841">#31841</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Docker/Sandbox bootstrap hardening: make <code>OPENCLAW_SANDBOX</code> opt-in parsing explicit (<code>1|true|yes|on</code>), support custom Docker socket paths via <code>OPENCLAW_DOCKER_SOCKET</code>, defer docker.sock exposure until sandbox prerequisites pass, and reset/roll back persisted sandbox mode to <code>off</code> when setup is skipped or partially fails to avoid stale broken sandbox state. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005083585" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29974" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29974/hovercard" href="https://github.com/openclaw/openclaw/pull/29974">#29974</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jamtujest/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jamtujest">@jamtujest</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Hooks/webhook ACK compatibility: return <code>200</code> (instead of <code>202</code>) for successful <code>/hooks/agent</code> requests so providers that require <code>200</code> (for example Forward Email) accept dispatched agent hook deliveries. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998794162" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28204" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28204/hovercard" href="https://github.com/openclaw/openclaw/pull/28204">#28204</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Glucksberg/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Glucksberg">@Glucksberg</a>.</li>
<li>Feishu/Run channel fallback: prefer <code>Provider</code> over <code>Surface</code> when inferring queued run <code>messageProvider</code> fallback (when <code>OriginatingChannel</code> is missing), preventing Feishu turns from being mislabeled as <code>webchat</code> in mixed relay metadata contexts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012076187" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31880" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31880/hovercard" href="https://github.com/openclaw/openclaw/pull/31880">#31880</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011971206" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31859" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31859/hovercard" href="https://github.com/openclaw/openclaw/issues/31859">#31859</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Skills/sherpa-onnx-tts: run the <code>sherpa-onnx-tts</code> bin under ESM (replace CommonJS <code>require</code> imports) and add regression coverage to prevent <code>require is not defined in ES module scope</code> startup crashes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012401814" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31965" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31965/hovercard" href="https://github.com/openclaw/openclaw/pull/31965">#31965</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Inbound metadata/direct relay context: restore direct-channel conversation metadata blocks for external channels (for example WhatsApp) while preserving webchat-direct suppression, so relay agents recover sender/message identifiers without reintroducing internal webchat metadata noise. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012416152" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31969" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31969/hovercard" href="https://github.com/openclaw/openclaw/pull/31969">#31969</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005082278" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29972" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/29972/hovercard" href="https://github.com/openclaw/openclaw/issues/29972">#29972</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lucenx9/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lucenx9">@Lucenx9</a>.</li>
<li>Slack/Channel message subscriptions: register explicit <code>message.channels</code> and <code>message.groups</code> monitor handlers (alongside generic <code>message</code>) so channel/group event subscriptions are consumed even when Slack dispatches typed message event names. Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010996781" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31674" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31674/hovercard" href="https://github.com/openclaw/openclaw/issues/31674">#31674</a>.</li>
<li>Hooks/session-scoped memory context: expose ephemeral <code>sessionId</code> in embedded plugin tool contexts and <code>before_tool_call</code>/<code>after_tool_call</code> hook contexts (including compaction and client-tool wiring) so plugins can isolate per-conversation state across <code>/new</code> and <code>/reset</code>. Related <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009134639" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31253" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31253/hovercard" href="https://github.com/openclaw/openclaw/issues/31253">#31253</a> and <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009319727" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31304" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31304/hovercard" href="https://github.com/openclaw/openclaw/pull/31304">#31304</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Servo-AIpex/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Servo-AIpex">@Servo-AIpex</a>.</li>
<li>Voice-call/Twilio inbound greeting: run answered-call initial notify greeting for Twilio instead of skipping the manager speak path, with regression coverage for both Twilio and Plivo notify flows. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4002771062" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29121" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29121/hovercard" href="https://github.com/openclaw/openclaw/pull/29121">#29121</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/xinhuagu/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/xinhuagu">@xinhuagu</a>.</li>
<li>Voice-call/stale call hydration: verify active calls with the provider before loading persisted in-progress calls so stale locally persisted records do not block or misroute new call handling after restarts. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3873561328" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/4325" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/4325/hovercard" href="https://github.com/openclaw/openclaw/pull/4325">#4325</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/garnetlyx/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/garnetlyx">@garnetlyx</a>.</li>
<li>Feishu/File upload filenames: percent-encode non-ASCII/special-character <code>file_name</code> values in Feishu multipart uploads so Chinese/symbol-heavy filenames are sent as proper attachments instead of plain text links. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4008910510" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31179" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31179/hovercard" href="https://github.com/openclaw/openclaw/issues/31179">#31179</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Kay-051/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Kay-051">@Kay-051</a>.</li>
<li>Media/MIME channel parity: route Telegram/Signal/iMessage media-kind checks through normalized <code>kindFromMime</code> so mixed-case/parameterized MIME values classify consistently across message channels.</li>
<li>WhatsApp/inbound self-message context: propagate inbound <code>fromMe</code> through the web inbox pipeline and annotate direct self messages as <code>(self)</code> in envelopes so agents can distinguish owner-authored turns from contact turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013280426" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32167" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32167/hovercard" href="https://github.com/openclaw/openclaw/pull/32167">#32167</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Webchat/stream finalization: persist streamed assistant text when final events omit <code>message</code>, while keeping final payload precedence and skipping empty stream buffers to prevent disappearing replies after tool turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012223385" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31920" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31920/hovercard" href="https://github.com/openclaw/openclaw/pull/31920">#31920</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Feishu/Inbound ordering: serialize message handling per chat while preserving cross-chat concurrency to avoid same-chat race drops under bursty inbound traffic. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011721277" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31807" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31807/hovercard" href="https://github.com/openclaw/openclaw/pull/31807">#31807</a>)</li>
<li>Feishu/Typing notification suppression: skip typing keepalive reaction re-adds when the indicator is already active, preventing duplicate notification pings from repeated identical emoji adds. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010464496" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31580" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31580/hovercard" href="https://github.com/openclaw/openclaw/pull/31580">#31580</a>)</li>
<li>Feishu/Probe failure backoff: cache API and timeout probe failures for one minute per account key while preserving abort-aware probe timeouts, reducing repeated health-check retries during transient credential/network outages. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005080238" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29970" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29970/hovercard" href="https://github.com/openclaw/openclaw/pull/29970">#29970</a>)</li>
<li>Feishu/Streaming block fallback: preserve markdown block stream text as final streaming-card content when final payload text is missing, while still suppressing non-card internal block chunk delivery. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4007160731" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/30663" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/30663/hovercard" href="https://github.com/openclaw/openclaw/pull/30663">#30663</a>)</li>
<li>Feishu/Bitable API errors: unify Feishu Bitable tool error handling with structured <code>LarkApiError</code> responses and consistent API/context attribution across wiki/base metadata, field, and record operations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009857487" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31450" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31450/hovercard" href="https://github.com/openclaw/openclaw/pull/31450">#31450</a>)</li>
<li>Feishu/Missing-scope grant URL fix: rewrite known invalid scope aliases (<code>contact:contact.base:readonly</code>) to valid scope names in permission grant links, so remediation URLs open with correct Feishu consent scopes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012302189" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31943" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31943/hovercard" href="https://github.com/openclaw/openclaw/pull/31943">#31943</a>)</li>
<li>BlueBubbles/Message metadata: harden send response ID extraction, include sender identity in DM context, and normalize inbound <code>message_id</code> selection to avoid duplicate ID metadata. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3975593058" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23970" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23970/hovercard" href="https://github.com/openclaw/openclaw/pull/23970">#23970</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyler6204/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyler6204">@tyler6204</a>.</li>
<li>WebChat/markdown tables: ensure GitHub-flavored markdown table parsing is explicitly enabled at render time and add horizontal overflow handling for wide tables, with regression coverage for table-only and mixed text+table content. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014090283" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32365" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32365/hovercard" href="https://github.com/openclaw/openclaw/pull/32365">#32365</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/BlueBirdBack/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/BlueBirdBack">@BlueBirdBack</a>.</li>
<li>Feishu/default account resolution: always honor explicit <code>channels.feishu.defaultAccount</code> during outbound account selection (including top-level-credential setups where the preferred id is not present in <code>accounts</code>), instead of silently falling back to another account id. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013662185" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32253" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32253/hovercard" href="https://github.com/openclaw/openclaw/pull/32253">#32253</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Feishu/Sender lookup permissions: suppress user-facing grant prompts for stale non-existent scope errors (<code>contact:contact.base:readonly</code>) during best-effort sender-name resolution so inbound messages continue without repeated false permission notices. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011517372" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31761" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31761/hovercard" href="https://github.com/openclaw/openclaw/issues/31761">#31761</a>)</li>
<li>Discord/dispatch + Slack formatting: restore parallel outbound dispatch across Discord channels with per-channel queues while preserving in-channel ordering, and run Slack preview/stream update text through mrkdwn normalization for consistent formatting. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012242052" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31927" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31927/hovercard" href="https://github.com/openclaw/openclaw/pull/31927">#31927</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Feishu/Inbound debounce: debounce rapid same-chat sender bursts into one ordered dispatch turn, skip already-processed retries when composing merged text, and preserve bot-mention intent across merged entries to reduce duplicate or late inbound handling. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4010286982" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31548" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31548/hovercard" href="https://github.com/openclaw/openclaw/pull/31548">#31548</a>)</li>
<li>Tests/Sandbox + archive portability: use junction-compatible directory-link setup on Windows and explicit file-symlink platform guards in symlink escape tests where unprivileged file symlinks are unavailable, reducing false Windows CI failures while preserving traversal checks on supported paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001095721" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28747" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28747/hovercard" href="https://github.com/openclaw/openclaw/pull/28747">#28747</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/arosstale/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/arosstale">@arosstale</a>.</li>
<li>Browser/Extension re-announce reliability: keep relay state in <code>connecting</code> when re-announce forwarding fails and extend debugger re-attach retries after navigation to reduce false attached states and post-nav disconnect loops. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3995923153" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27630" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/27630/hovercard" href="https://github.com/openclaw/openclaw/pull/27630">#27630</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/markmusson/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/markmusson">@markmusson</a>.</li>
<li>Browser/Act request compatibility: accept legacy flattened <code>action="act"</code> params (<code>kind/ref/text/...</code>) in addition to <code>request={...}</code> so browser act calls no longer fail with <code>request required</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3934962083" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/15120" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/15120/hovercard" href="https://github.com/openclaw/openclaw/issues/15120">#15120</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>OpenRouter/x-ai compatibility: skip <code>reasoning.effort</code> injection for <code>x-ai/*</code> models (for example Grok) so OpenRouter requests no longer fail with invalid-arguments errors on unsupported reasoning params. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012769013" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32054" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32054/hovercard" href="https://github.com/openclaw/openclaw/pull/32054">#32054</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Models/openai-completions developer-role compatibility: force <code>supportsDeveloperRole=false</code> for non-native endpoints, treat unparseable <code>baseUrl</code> values as non-native, and add regression coverage for empty/malformed baseUrl plus explicit-true override behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4003960531" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29479" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29479/hovercard" href="https://github.com/openclaw/openclaw/pull/29479">#29479</a>) thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/akramcodez/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/akramcodez">@akramcodez</a>.</li>
<li>Browser/Profile attach-only override: support <code>browser.profiles.<name>.attachOnly</code> (fallback to global <code>browser.attachOnly</code>) so loopback proxy profiles can skip local launch/port-ownership checks without forcing attach-only mode for every profile. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3960861278" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/20595" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/20595/hovercard" href="https://github.com/openclaw/openclaw/issues/20595">#20595</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unblockedgamesstudio/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unblockedgamesstudio">@unblockedgamesstudio</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Sessions/Lock recovery: detect recycled Linux PIDs by comparing lock-file <code>starttime</code> with <code>/proc/<pid>/stat</code> starttime, so stale <code>.jsonl.lock</code> files are reclaimed immediately in containerized PID-reuse scenarios while preserving compatibility for older lock files. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3989036848" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/26443" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/26443/hovercard" href="https://github.com/openclaw/openclaw/pull/26443">#26443</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3993548068" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/27252" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/27252/hovercard" href="https://github.com/openclaw/openclaw/issues/27252">#27252</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/HirokiKobayashi-R/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/HirokiKobayashi-R">@HirokiKobayashi-R</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Cron/isolated delivery target fallback: remove early unresolved-target return so cron delivery can flow through shared outbound target resolution (including per-channel <code>resolveDefaultTo</code> fallback) when <code>delivery.to</code> is omitted. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014090268" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32364" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32364/hovercard" href="https://github.com/openclaw/openclaw/pull/32364">#32364</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hclsys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hclsys">@hclsys</a>.</li>
<li>OpenAI media capabilities: include <code>audio</code> in the OpenAI provider capability list so audio transcription models are eligible in media-understanding provider selection. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3916788206" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/12717" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/12717/hovercard" href="https://github.com/openclaw/openclaw/pull/12717">#12717</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/openjay/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/openjay">@openjay</a>.</li>
<li>Browser/Managed tab cap: limit loopback managed <code>openclaw</code> page tabs to 8 via best-effort cleanup after tab opens to reduce long-running renderer buildup while preserving attach-only and remote profile behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4004525965" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29724" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/29724/hovercard" href="https://github.com/openclaw/openclaw/pull/29724">#29724</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pandego/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pandego">@pandego</a>.</li>
<li>Docker/Image health checks: add Dockerfile <code>HEALTHCHECK</code> that probes gateway <code>GET /healthz</code> so container runtimes can mark unhealthy instances without requiring auth credentials in the probe command. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3911321755" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/11478" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/11478/hovercard" href="https://github.com/openclaw/openclaw/pull/11478">#11478</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/U-C4N/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/U-C4N">@U-C4N</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Gateway/Node dangerous-command parity: include <code>sms.send</code> in default onboarding node <code>denyCommands</code>, share onboarding deny defaults with the gateway dangerous-command source of truth, and include <code>sms.send</code> in phone-control <code>/phone arm writes</code> handling so SMS follows the same break-glass flow as other dangerous node commands. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zpbrent/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zpbrent">@zpbrent</a>.</li>
<li>Pairing/AllowFrom account fallback: handle omitted <code>accountId</code> values in <code>readChannelAllowFromStore</code> and <code>readChannelAllowFromStoreSync</code> as <code>default</code>, while preserving legacy unscoped allowFrom merges for default-account flows. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Browser/Remote CDP ownership checks: skip local-process ownership errors for non-loopback remote CDP profiles when HTTP is reachable but the websocket handshake fails, and surface the remote websocket attach/retry path instead. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3938079324" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/15582" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/15582/hovercard" href="https://github.com/openclaw/openclaw/issues/15582">#15582</a>) Landed from contributor (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4001260590" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28780" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28780/hovercard" href="https://github.com/openclaw/openclaw/pull/28780">#28780</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/stubbi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/stubbi">@stubbi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bsormagec/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bsormagec">@bsormagec</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/unblockedgamesstudio/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/unblockedgamesstudio">@unblockedgamesstudio</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Browser/CDP proxy bypass: force direct loopback agent paths and scoped <code>NO_PROXY</code> expansion for localhost CDP HTTP/WS connections when proxy env vars are set, so browser relay/control still works behind global proxy settings. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009917980" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31469" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31469/hovercard" href="https://github.com/openclaw/openclaw/pull/31469">#31469</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/widingmarcus-cyber/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/widingmarcus-cyber">@widingmarcus-cyber</a>.</li>
<li>Sessions/idle reset correctness: preserve existing <code>updatedAt</code> during inbound metadata-only writes so idle-reset boundaries are not unintentionally refreshed before actual user turns. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014157983" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32379" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32379/hovercard" href="https://github.com/openclaw/openclaw/pull/32379">#32379</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/romeodiaz/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/romeodiaz">@romeodiaz</a>.</li>
<li>Sessions/lock recovery: reclaim orphan legacy same-PID lock files missing <code>starttime</code> when no in-process lock ownership exists, avoiding false lock timeouts after PID reuse while preserving active lock safety checks. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012876659" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32081" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32081/hovercard" href="https://github.com/openclaw/openclaw/pull/32081">#32081</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Sessions/store cache invalidation: reload cached session stores when file size changes within the same mtime tick by keying cache validation on a single file-stat snapshot (<code>mtimeMs</code> + <code>sizeBytes</code>), with regression coverage for same-tick rewrites. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013407719" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32191" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32191/hovercard" href="https://github.com/openclaw/openclaw/pull/32191">#32191</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Agents/Subagents <code>sessions_spawn</code>: reject malformed <code>agentId</code> inputs before normalization (for example error-message/path-like strings) to prevent unintended synthetic agent IDs and ghost workspace/session paths; includes strict validation regression coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009600718" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31381" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31381/hovercard" href="https://github.com/openclaw/openclaw/pull/31381">#31381</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/openperf/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/openperf">@openperf</a>.</li>
<li>CLI/installer Node preflight: enforce Node.js <code>v22.12+</code> consistently in both <code>openclaw.mjs</code> runtime bootstrap and installer active-shell checks, with actionable nvm recovery guidance for mismatched shell PATH/defaults. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014065409" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32356" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32356/hovercard" href="https://github.com/openclaw/openclaw/pull/32356">#32356</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jasonhargrove/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jasonhargrove">@jasonhargrove</a>.</li>
<li>Web UI/config form: support SecretInput string-or-secret-ref unions in map <code>additionalProperties</code>, so provider API key fields stay editable instead of being marked unsupported. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012018833" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31866" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31866/hovercard" href="https://github.com/openclaw/openclaw/pull/31866">#31866</a>) Thanks @ningding97.</li>
<li>Auto-reply/inline command cleanup: preserve newline structure when stripping inline <code>/status</code> and extracting inline slash commands by collapsing only horizontal whitespace, preventing paragraph flattening in multi-line replies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013589446" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32224" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32224/hovercard" href="https://github.com/openclaw/openclaw/pull/32224">#32224</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Config/raw redaction safety: preserve non-sensitive literals during raw redaction round-trips, scope SecretRef redaction to secret IDs (not structural fields like <code>source</code>/<code>provider</code>), and fall back to structured raw redaction when text replacement cannot restore the original config shape. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013329232" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32174" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32174/hovercard" href="https://github.com/openclaw/openclaw/pull/32174">#32174</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Hooks/runtime stability: keep the internal hook handler registry on a <code>globalThis</code> singleton so hook registration/dispatch remains consistent when bundling emits duplicate module copies. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013853707" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32292" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32292/hovercard" href="https://github.com/openclaw/openclaw/pull/32292">#32292</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Drickon/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Drickon">@Drickon</a>.</li>
<li>Hooks/after_tool_call: include embedded session context (<code>sessionKey</code>, <code>agentId</code>) and fire the hook exactly once per tool execution by removing duplicate adapter-path dispatch in embedded runs. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013472003" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32201" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32201/hovercard" href="https://github.com/openclaw/openclaw/pull/32201">#32201</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jbeno/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jbeno">@jbeno</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Hooks/tool-call correlation: include <code>runId</code> and <code>toolCallId</code> in plugin tool hook payloads/context and scope tool start/adjusted-param tracking by run to prevent cross-run collisions in <code>before_tool_call</code> and <code>after_tool_call</code>. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014072942" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32360" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32360/hovercard" href="https://github.com/openclaw/openclaw/pull/32360">#32360</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Plugins/install diagnostics: reject legacy plugin package shapes without <code>openclaw.extensions</code> and return an explicit upgrade hint with troubleshooting docs for repackaging. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012771492" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32055" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32055/hovercard" href="https://github.com/openclaw/openclaw/pull/32055">#32055</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuxiaopai-ai/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuxiaopai-ai">@liuxiaopai-ai</a>.</li>
<li>Hooks/plugin context parity: ensure <code>llm_input</code> hooks in embedded attempts receive the same <code>trigger</code> and <code>channelId</code>-aware <code>hookCtx</code> used by the other hook phases, preserving channel/trigger-scoped plugin behavior. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4000505216" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28623" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28623/hovercard" href="https://github.com/openclaw/openclaw/pull/28623">#28623</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/davidrudduck/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/davidrudduck">@davidrudduck</a> and <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/vincentkoc/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/vincentkoc">@vincentkoc</a>.</li>
<li>Plugins/hardlink install compatibility: allow bundled plugin manifests and entry files to load when installed via hardlink-based package managers (<code>pnpm</code>, <code>bun</code>) while keeping hardlink rejection enabled for non-bundled plugin sources. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013039064" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32119" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32119/hovercard" href="https://github.com/openclaw/openclaw/pull/32119">#32119</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3998743121" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28175" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28175/hovercard" href="https://github.com/openclaw/openclaw/issues/28175">#28175</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999427429" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28404" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/28404/hovercard" href="https://github.com/openclaw/openclaw/issues/28404">#28404</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4003909050" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/29455" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/29455/hovercard" href="https://github.com/openclaw/openclaw/issues/29455">#29455</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/markfietje/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/markfietje">@markfietje</a>.</li>
<li>Cron/session reaper reliability: move cron session reaper sweeps into <code>onTimer</code> <code>finally</code> and keep pruning active even when timer ticks fail early (for example cron store parse failures), preventing stale isolated run sessions from accumulating indefinitely. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012536902" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31996" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31996/hovercard" href="https://github.com/openclaw/openclaw/pull/31996">#31996</a>) Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012312899" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31946" data-hovercard-type="issue" data-hovercard-url="/openclaw/openclaw/issues/31946/hovercard" href="https://github.com/openclaw/openclaw/issues/31946">#31946</a>. Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Cron/HEARTBEAT_OK summary leak: suppress fallback main-session enqueue for heartbeat/internal ack summaries in isolated announce mode so <code>HEARTBEAT_OK</code> noise never appears in user chat while real summaries still forward. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012903756" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32093" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32093/hovercard" href="https://github.com/openclaw/openclaw/pull/32093">#32093</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Authentication: classify <code>permission_error</code> as <code>auth_permanent</code> for profile fallback. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009400589" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31324" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31324/hovercard" href="https://github.com/openclaw/openclaw/pull/31324">#31324</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Sid-Qin/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Sid-Qin">@Sid-Qin</a>.</li>
<li>Agents/host edit reliability: treat host edit-tool throws as success only when on-disk post-check confirms replacement likely happened (<code>newText</code> present and <code>oldText</code> absent), preventing false failure reports while avoiding pre-write false positives. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014181080" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32383" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32383/hovercard" href="https://github.com/openclaw/openclaw/pull/32383">#32383</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/polooooo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/polooooo">@polooooo</a>.</li>
<li>Plugins/install fallback safety: resolve bare install specs to bundled plugin ids before npm lookup (for example <code>diffs</code> -> bundled <code>@openclaw/diffs</code>), keep npm fallback limited to true package-not-found errors, and continue rejecting non-plugin npm packages that fail manifest validation. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012930962" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32096" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32096/hovercard" href="https://github.com/openclaw/openclaw/pull/32096">#32096</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Web UI/inline code copy fidelity: disable forced mid-token wraps on inline <code><code></code> spans so copied UUID/hash/token strings preserve exact content instead of inserting line-break spaces. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4014057880" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32346" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32346/hovercard" href="https://github.com/openclaw/openclaw/pull/32346">#32346</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/hclsys/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/hclsys">@hclsys</a>.</li>
<li>Restart sentinel formatting: avoid duplicate <code>Reason:</code> lines when restart message text already matches <code>stats.reason</code>, keeping restart notifications concise for users and downstream parsers. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012884060" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32083" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32083/hovercard" href="https://github.com/openclaw/openclaw/pull/32083">#32083</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/velamints2/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/velamints2">@velamints2</a>.</li>
<li>Auto-reply/followup queue: avoid stale callback reuse across idle-window restarts by caching the followup runner only when a drain actually starts, preserving enqueue ordering after empty-finalize paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012160910" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31902" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31902/hovercard" href="https://github.com/openclaw/openclaw/pull/31902">#31902</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Lanfei/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Lanfei">@Lanfei</a>.</li>
<li>Agents/tool-result guard: always clear pending tool-call state on interruptions even when synthetic tool results are disabled, preventing orphaned tool-use transcripts that cause follow-up provider request failures. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013042913" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32120" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32120/hovercard" href="https://github.com/openclaw/openclaw/pull/32120">#32120</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jnMetaCode/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jnMetaCode">@jnMetaCode</a>.</li>
<li>Failover/error classification: treat HTTP <code>529</code> (provider overloaded, common with Anthropic-compatible APIs) as <code>rate_limit</code> so model failover can engage instead of misclassifying the error path. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4011951531" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31854" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31854/hovercard" href="https://github.com/openclaw/openclaw/pull/31854">#31854</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bugkill3r/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bugkill3r">@bugkill3r</a>.</li>
<li>Logging: use local time for logged timestamps instead of UTC, aligning log output with documented local timezone behavior and avoiding confusion during local diagnostics. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3999573336" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/28434" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/28434/hovercard" href="https://github.com/openclaw/openclaw/pull/28434">#28434</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/liuy/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/liuy">@liuy</a>.</li>
<li>Agents/Subagent announce cleanup: keep completion-message runs pending while descendants settle, add a 30 minute hard-expiry backstop to avoid indefinite pending state, and keep retry bookkeeping resumable across deferred wakes. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3975593058" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/23970" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/23970/hovercard" href="https://github.com/openclaw/openclaw/pull/23970">#23970</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/tyler6204/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/tyler6204">@tyler6204</a>.</li>
<li>Secrets/exec resolver timeout defaults: use provider <code>timeoutMs</code> as the default inactivity (<code>noOutputTimeoutMs</code>) watchdog for exec secret providers, preventing premature no-output kills for resolvers that start producing output after 2s. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013629168" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32235" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32235/hovercard" href="https://github.com/openclaw/openclaw/pull/32235">#32235</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Auto-reply/reminder guard note suppression: when a turn makes reminder-like commitments but schedules no new cron jobs, suppress the unscheduled-reminder warning note only if an enabled cron already exists for the same session; keep warnings for unrelated sessions, disabled jobs, or unreadable cron store paths. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013671410" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32255" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32255/hovercard" href="https://github.com/openclaw/openclaw/pull/32255">#32255</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/scoootscooob/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/scoootscooob">@scoootscooob</a>.</li>
<li>Cron/isolated announce heartbeat suppression: treat multi-payload runs as skippable when any payload is a heartbeat ack token and no payload has media, preventing internal narration + trailing <code>HEARTBEAT_OK</code> from being delivered to users. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013102763" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32131" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32131/hovercard" href="https://github.com/openclaw/openclaw/pull/32131">#32131</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/adhishthite/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/adhishthite">@adhishthite</a>.</li>
<li>Cron/store migration: normalize legacy cron jobs with string <code>schedule</code> and top-level <code>command</code>/<code>timeout</code> fields into canonical schedule/payload/session-target shape on load, preventing schedule-error loops on old persisted stores. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4012237449" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31926" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31926/hovercard" href="https://github.com/openclaw/openclaw/pull/31926">#31926</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/bmendonca3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/bmendonca3">@bmendonca3</a>.</li>
<li>Tests/Windows backup rotation: skip chmod-only backup permission assertions on Windows while retaining compose/rotation/prune coverage across platforms to avoid false CI failures from Windows non-POSIX mode semantics. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4013806686" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/32286" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/32286/hovercard" href="https://github.com/openclaw/openclaw/pull/32286">#32286</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jalehman/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jalehman">@jalehman</a>.</li>
<li>Tests/Subagent announce: set <code>OPENCLAW_TEST_FAST=1</code> before importing <code>subagent-announce</code> format suites so module-level fast-mode constants are captured deterministically on Windows CI, preventing timeout flakes in nested completion announce coverage. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="4009569885" data-permission-text="Title is private" data-url="https://github.com/openclaw/openclaw/issues/31370" data-hovercard-type="pull_request" data-hovercard-url="/openclaw/openclaw/pull/31370/hovercard" href="https://github.com/openclaw/openclaw/pull/31370">#31370</a>) Thanks <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/zwffff/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/zwffff">@zwffff</a>.</li>
</ul>
steipete