---
title: "v2026.10.5"
summary: "A refreshed sidebar, Skill Workshop 2.0, and public conversation links."
description: "OpenClaw v2026.10.5 brings a refreshed sidebar, a redesigned Skill Workshop with version history and Undo, and public links for sharing conversations."
keywords:
  - OpenClaw
  - v2026.10.5
  - release notes
---

# v2026.10.5

AI agents and tools can read these release notes as [plain Markdown](https://raw.githubusercontent.com/openclaw/openclaw/main/CHANGELOG/2026.10.5.md).

OpenClaw 2026.10.5 refreshes the sidebar, adds saved versions and Undo to Skill Workshop, and lets people read published conversations at their normal chat links.

This release covers **2,250 pull requests, 411 direct commits, and 637 contributors.**

## Sidebar

The sidebar brings larger agent lists into readable rows, with search and pinning to keep the agents you use within reach. Subagents and Processes panels sit beside the parent conversation, so you can check delegated work, inspect recent command output, or stop a task without losing your place.

<details class="release-source-toggle">
<summary>Sidebar navigation, organization, and work panels</summary>

- Choose any named agent from either sidebar view while keeping main-chat status readable. [#150587](https://github.com/openclaw/openclaw/pull/150587) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski), [@steipete](https://github.com/steipete).
- Subagents and Processes panels let users inspect delegated work and recent command output beside the parent chat, with targeted Stop controls. [#164061](https://github.com/openclaw/openclaw/pull/164061) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · [Docs](https://docs.openclaw.ai/tools/subagents) · [Docs](https://docs.openclaw.ai/gateway/background-process) · Thanks [@shakkernerd](https://github.com/shakkernerd), [@steipete](https://github.com/steipete).
- Remove duplicate owner buttons from person-group headers; owner filters remain under Sessions → Filter & sort → Owners. [#164608](https://github.com/openclaw/openclaw/pull/164608) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Session browsing reuses verified row updates, downloads less list data and preserves loaded dashboard pages. [#164764](https://github.com/openclaw/openclaw/pull/164764) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-bootstrap-and-events) · Thanks [@steipete](https://github.com/steipete).
- Finished commands start collapsed in the Processes panel while running work remains visible. [#164776](https://github.com/openclaw/openclaw/pull/164776) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Person cards keep showing accessible recent-session links when the sidebar is filtered to a person, owner or status. [#165004](https://github.com/openclaw/openclaw/pull/165004) [Docs](https://docs.openclaw.ai/concepts/multi-user) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Pin, unpin, or confirm deletion of Workboard boards directly from the sidebar. [#165020](https://github.com/openclaw/openclaw/pull/165020) [Docs](https://docs.openclaw.ai/plugins/workboard) · Thanks [@steipete](https://github.com/steipete).
- Pinning and renaming sessions avoids waiting for transcript-history loading. [#165073](https://github.com/openclaw/openclaw/pull/165073) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-session-control) · Thanks [@steipete](https://github.com/steipete).
- Session-list refreshes avoid duplicate reads and decoding of fresh session details. [#165096](https://github.com/openclaw/openclaw/pull/165096) Thanks [@steipete](https://github.com/steipete).
- Equivalent session-list views share repeated work, and runner availability updates refresh affected sidebar rows without reloading the whole list. [#165150](https://github.com/openclaw/openclaw/pull/165150) Thanks [@steipete](https://github.com/steipete).
- Sidebar child-count badges exclude archived sessions after refresh and match the children users can expand. [#165160](https://github.com/openclaw/openclaw/pull/165160) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@obviyus](https://github.com/obviyus), [@tre1d](https://github.com/tre1d).
- Sidebar pin editing and reorder controls no longer overlap and stay aligned on desktop and mobile without shifting activity indicators. [#165199](https://github.com/openclaw/openclaw/pull/165199) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@steipete](https://github.com/steipete).
- The default workspace name stays readable in narrow all-agent sidebars while adjacent controls retain their touch targets. [#165272](https://github.com/openclaw/openclaw/pull/165272) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Enter opens the typed folder path; a missing starting workspace falls back cleanly to home. [#165446](https://github.com/openclaw/openclaw/pull/165446) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@steipete](https://github.com/steipete).
- Collapsing the Online sidebar hides its filter button and preserves filter selections for reopening. [#165449](https://github.com/openclaw/openclaw/pull/165449) Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Pin favorite agents from the sidebar's agent menu when at least four agents are available. [#165640](https://github.com/openclaw/openclaw/pull/165640) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Read longer agent lists in rows, distinguish repeated names by ID, and search names or IDs when more than six agents are available. [#165641](https://github.com/openclaw/openclaw/pull/165641) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Reading a parent conversation or Home clears unread dots from eligible hidden subagent runs. [#165792](https://github.com/openclaw/openclaw/pull/165792) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@holgergruenhagen](https://github.com/holgergruenhagen), [@obviyus](https://github.com/obviyus).
- Session lists reuse unchanged rows while unrelated subagents run, keeping current status and permissions live. [#165932](https://github.com/openclaw/openclaw/pull/165932) Thanks [@steipete](https://github.com/steipete).
- Deleting a child during refresh no longer leaves a false list error or hides remaining sessions behind Retry. [#166128](https://github.com/openclaw/openclaw/pull/166128) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Mobile sidebar reorder controls no longer crowd session icons and color markers. [#166287](https://github.com/openclaw/openclaw/pull/166287) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Session-list loading reuses roster selection as display rows arrive. [#166405](https://github.com/openclaw/openclaw/pull/166405) Thanks [@steipete](https://github.com/steipete).
- Keeps valid session previews through renames and pinning without rereading unchanged transcripts. [#166635](https://github.com/openclaw/openclaw/pull/166635) Thanks [@steipete](https://github.com/steipete).
- Keeps session previews readable when Markdown links contain nested brackets or parentheses, preserving the following text. [#166653](https://github.com/openclaw/openclaw/pull/166653) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@rudycelekli](https://github.com/rudycelekli), [@obviyus](https://github.com/obviyus).
- Duplicate session names stay in the rename dialog with an inline explanation so they can be corrected without retyping. [#168034](https://github.com/openclaw/openclaw/pull/168034) Thanks [@romneyda](https://github.com/romneyda), [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Delivered messages stop showing false sidebar and Inbox warnings when an earlier send remains unconfirmed. [#168090](https://github.com/openclaw/openclaw/pull/168090) [Docs](https://docs.openclaw.ai/web/control-ui/offline-and-reconnect) · Thanks [@steipete](https://github.com/steipete).

</details>

## Skill Workshop 2.0

Skill Workshop lets you review how a learned skill has changed and use Undo to restore an earlier version. Its library brings editing, version comparisons, and archive/restore into the same place, so you can inspect and revise the procedures your assistant learns.

Background learning sends conversation and tool content to your configured model provider and can add usage charges. Choose **Off** to stop background learning and unused-skill cleanup; you can still request learning with **`/learn`**.

<details class="release-source-toggle">
<summary>Workshop editing, learning controls, and saved versions</summary>

Existing Auto and unset automatic-learning settings are preserved. Legacy proposal modes move to Off, and a setting already changed to Off stays off until you change it. The library keeps up to ten saved versions; new sessions pick up skill edits. Supported unused-skill cleanup archives skills after 30 days and is disabled for Codex. Restoring pre-upgrade proposal history requires its matching backup; pending proposals are exported inactive.

- Skill Workshop saves learned procedures directly, with change history, saved versions and Undo. [#161057](https://github.com/openclaw/openclaw/pull/161057) [Docs](https://docs.openclaw.ai/tools/skill-workshop) · [Docs](https://docs.openclaw.ai/tools/self-learning) · [Docs](https://docs.openclaw.ai/tools/skills-config#workshop-skills-workshop) · [Docs](https://docs.openclaw.ai/cli/skills#skill-workshop) · [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · [Docs](https://docs.openclaw.ai/plugins/sdk-migration/removed-surfaces#skill-workshop-proposal-hooks) · Thanks [@obviyus](https://github.com/obviyus), [@steipete](https://github.com/steipete), [@RomneyDa](https://github.com/RomneyDa).
- Skill Workshop is guided to learn repeatable procedures and direct personal facts to memory and repository-specific knowledge to project docs. [#167404](https://github.com/openclaw/openclaw/pull/167404) Thanks [@obviyus](https://github.com/obviyus).
- Workshop brings learned skills, their files and change history together, with clear ways to undo changes, restore versions and manage archived skills. [#167440](https://github.com/openclaw/openclaw/pull/167440) [Docs](https://docs.openclaw.ai/tools/skill-workshop) · [Docs](https://docs.openclaw.ai/tools/self-learning) · Thanks [@obviyus](https://github.com/obviyus).
- Older saved skills with long names are visible and manageable again. [#167639](https://github.com/openclaw/openclaw/pull/167639) [Docs](https://docs.openclaw.ai/tools/skill-workshop) · Thanks [@obviyus](https://github.com/obviyus).
- The Workshop migration retires approval-first settings; its later correction preserves Auto while older proposal modes move to Off. [#167641](https://github.com/openclaw/openclaw/pull/167641) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · [Docs](https://docs.openclaw.ai/tools/skill-workshop) · Thanks [@obviyus](https://github.com/obviyus).
- Skill Workshop shows configuration-load errors with Retry while keeping the skill library available. [#167656](https://github.com/openclaw/openclaw/pull/167656) [Docs](https://docs.openclaw.ai/tools/skill-workshop) · Thanks [@steipete](https://github.com/steipete).
- Doctor preserves Auto and unset automatic learning settings; legacy proposal mode and settings already changed to Off remain off. [#167846](https://github.com/openclaw/openclaw/pull/167846) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@obviyus](https://github.com/obviyus).
- Saved Skill Workshop versions show their own descriptions and include metadata changes in comparisons. [#168001](https://github.com/openclaw/openclaw/pull/168001) Thanks [@steipete](https://github.com/steipete).

</details>

## Public conversation links

A published conversation now opens at its normal chat address. Anyone with the link can read the transcript without signing in; signed-in readers use the same link with their existing permissions.

Review the conversation before publishing. **The link exposes existing and future user messages and final replies to anyone who has it.** Redaction is best effort, and turning sharing off cannot recall saved copies.

<details class="release-source-toggle">
<summary>Conversation links, access, and public sharing</summary>

Deployments behind a login proxy need the [public-reader route setup](https://docs.openclaw.ai/web/urls#login-proxy-deployment), with private app and API routes kept protected.

- Long shared-conversation titles and messages avoid broken characters where shortening crosses an emoji boundary. [#141240](https://github.com/openclaw/openclaw/pull/141240) Thanks [@hugenshen](https://github.com/hugenshen), [@obviyus](https://github.com/obviyus), [@xialonglee](https://github.com/xialonglee).
- Opening session sharing no longer waits for unrelated session display refreshes after a model catalog change. [#165344](https://github.com/openclaw/openclaw/pull/165344) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · Thanks [@steipete](https://github.com/steipete).
- Published conversations use their normal chat address for anonymous read-only sharing, with optional publication of eligible X work sessions. [#166049](https://github.com/openclaw/openclaw/pull/166049) [Docs](https://docs.openclaw.ai/web/urls#public-session-transcripts) · [Docs](https://docs.openclaw.ai/web/urls#login-proxy-deployment) · [Docs](https://docs.openclaw.ai/concepts/multi-user#world-readable-session-links) · [Docs](https://docs.openclaw.ai/channels/x) · Thanks [@steipete](https://github.com/steipete).
- Signed-in token/password users can reload, bookmark and open chat links in new tabs without an extra login click, preserving drafts and presentation parameters. [#166783](https://github.com/openclaw/openclaw/pull/166783) [Docs](https://docs.openclaw.ai/web/urls) · [Docs](https://docs.openclaw.ai/web/control-ui/security-model) · Thanks [@steipete](https://github.com/steipete).
- Refreshing accessible conversation links shows loading while access is checked instead of briefly claiming the conversation is unavailable. [#167097](https://github.com/openclaw/openclaw/pull/167097) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Sharing requests recheck current permissions and conversation identity before returning a public link. [#167504](https://github.com/openclaw/openclaw/pull/167504) Thanks [@steipete](https://github.com/steipete).
- Session-link guidance explains which renames preserve bookmarks and when moving to another agent requires a new canonical link. [#167586](https://github.com/openclaw/openclaw/pull/167586) [Docs](https://docs.openclaw.ai/web/urls) · Thanks [@steipete](https://github.com/steipete).
- Public chat links reach normal session lookup and login handling after Gateway startup instead of a false temporarily-unavailable response. [#167604](https://github.com/openclaw/openclaw/pull/167604) Thanks [@steipete](https://github.com/steipete).
- Returning signed-in proxy users can open conversation links without a public-reader or login flash. [#168007](https://github.com/openclaw/openclaw/pull/168007) [Docs](https://docs.openclaw.ai/web/urls) · Thanks [@steipete](https://github.com/steipete).

</details>

## Conversations and workspaces

Recovery fixes help interrupted chats resume after restart and return delegated results to the parent conversation. Stop also reaches a request's running commands and queued follow-ups, while long chats need less repeated preparation before replies and searches.

Save work before lowering managed-worktree limits. Cleanup can remove local changes, including in nested checkouts, and recovery snapshots are best effort. Manual **`--max-lines`** trimming permanently deletes removed transcript text without a backup archive.

<details class="release-source-toggle">
<summary>Conversation recovery, follow-ups, history, and workspaces</summary>

- Streamed text avoids a tiny trailing message at an exact size boundary. [0427411](https://github.com/openclaw/openclaw/commit/04274119f651594b74d581ae452dc8ab36d30889).
- Supporting history integration keeps saved corrections from overwriting a newer edit or another message while preserving later additions. [1cd6492](https://github.com/openclaw/openclaw/commit/1cd64928a36671d63aea47d70faf441deef2a2a1)
- Conversation history avoids a read failure when replies start concurrently. [20ef748](https://github.com/openclaw/openclaw/commit/20ef7487dd5e1267101689eeca8ab04f0944fe9b)
- Transcript search can recover from failed cleanup without trusting checks from a database that has been replaced. [2839466](https://github.com/openclaw/openclaw/commit/2839466d883685ce924a2b3b14c0780c2c3fc360)
- Newly created databases remain ready through worker handoffs, and replacement checks retire obsolete copies reached through alternate paths. [400bab4](https://github.com/openclaw/openclaw/commit/400bab4a7937e6e12a742ef4bb7121d7f9b852eb).
- Long-running OpenClaw processes release memory held by completed database-opening requests, even when reusing database workers. [4db0224](https://github.com/openclaw/openclaw/commit/4db022470af693f9f78dafd2a39338d5cd7dadda).
- A closed database deleted from disk can be recreated through a directory alias. [58e1c3f](https://github.com/openclaw/openclaw/commit/58e1c3f789ad14c62dd09603dd1d3d8bd3841fd1).
- Avoid duplicate remote-worker answers and accept follow-ups after cancellation [5c231631](https://github.com/openclaw/openclaw/commit/5c231631d59eade7b489a902f5b49e79b55d9158)
- Rejected worker transcript saves stop with a visible error instead of repeatedly reconnecting without progress. [5dcf668](https://github.com/openclaw/openclaw/commit/5dcf668765dea9dfc8101e163804c77ca52bdb53) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/troubleshooting)
- Supporting conversation integration uses current saved history for replay and delivery and keeps meeting exports consistent during simultaneous edits. [66471ca](https://github.com/openclaw/openclaw/commit/66471cad80ee9fdef9dacff66319c008543026db)
- Finding saved conversations avoids an extra database hold that could interrupt recovery reads. [7294c69](https://github.com/openclaw/openclaw/commit/7294c691f2ce7a0a26191faff4a44cf32a3212bb)
- Keep transcript and trace storage in the intended Gateway location [737560a5](https://github.com/openclaw/openclaw/commit/737560a532d5eea1b4450c802696a6f716cfdd44)

  Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).

- Supporting worker recovery lets eligible interrupted agent work resume when its worker disappears. [740564a](https://github.com/openclaw/openclaw/commit/740564a40f86deaa42de279465216c9eb587adbf)
- Messages queued during worker setup can proceed when setup finishes or the preceding turn updates. [7ecc80a](https://github.com/openclaw/openclaw/commit/7ecc80a457366091dd61448bcc319cf1a82a5da9) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access)
- Register replacement subagents when their preparation overlaps Gateway startup [873b0a59](https://github.com/openclaw/openclaw/commit/873b0a5983733b4a6752c15d1df78090a75f6cf0)
- Transcript searches can recover after a shared SQLite worker fails without reusing its stale validation. [8a470f8](https://github.com/openclaw/openclaw/commit/8a470f80c73d0cb5fc368511363c73f834186863)
- Record reply cancellation before session deletion retires the reply, giving connected clients deletion as its stop reason. [9564061](https://github.com/openclaw/openclaw/commit/9564061ab79c433d2d0c9f3fc902e3ccd579a8cb).
- Supporting workspace integration keeps inspection and cleanup with the recorded owner and lets temporary transcript-save refusals be retried. [96ccec4](https://github.com/openclaw/openclaw/commit/96ccec4a1385f1554579d60dc058fb82419dbc79) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/agent) · [Docs](https://docs.openclaw.ai/gateway/cloud-workers/troubleshooting)
- Pending subagent completion checks stop cleanly when their original database closes during shutdown. [9c057a3](https://github.com/openclaw/openclaw/commit/9c057a3916bd584fb5eb8ff1d436533b67771575)
- Restore authorized Incognito message sending that could fail with `SESSION_MUTATION_AUTHORIZATION_CHANGED`, while retaining current permission checks. [a5a43a0](https://github.com/openclaw/openclaw/commit/a5a43a0362a23c123232367a75a8a34606bd4710)
- Keep eligible read-only history recovery available while writable startup is pending [a73ef55](https://github.com/openclaw/openclaw/commit/a73ef559b23a6325f0ea39cc90dac22eaf50a916).
- Restored subagents wait for saved conversations to become readable after restart before making their first request. [aa154c3](https://github.com/openclaw/openclaw/commit/aa154c3c7899fae22b0a86521d29a7e0e7f83b0f)
- Late subagent cleanup preserves unfinished delivery for restart recovery instead of using a database that has closed. [ab29c88](https://github.com/openclaw/openclaw/commit/ab29c88b792a54ee448cd047d342af5021adbdd8)
- Avoid false history-read failures when queued writes already finished before the read began [ab56112](https://github.com/openclaw/openclaw/commit/ab561129c2dcf0dcbea60037ed9f6d30d78eff90).
- Conversations can recover after a crash even when their database checks finish after startup. [c1b9f4e](https://github.com/openclaw/openclaw/commit/c1b9f4ec91e548fa5c03b6fad027ce1d0c053dd9)
- Recent sharing-membership updates no longer cause unnecessary shared-session lookup failures. [d511ab9](https://github.com/openclaw/openclaw/commit/d511ab92b63ae9709ff13eb87da9c4707060dbc4)
- API and plugin requests can continue after a completed Stop without a false session-work rejection. [df8b0cb](https://github.com/openclaw/openclaw/commit/df8b0cbd63b230690a7778385ff475d4d31efca6)
- Worker turns can recover from temporary transcript-save interruptions without duplicating messages after an uncertain save. [dfb2723](https://github.com/openclaw/openclaw/commit/dfb27239f2b6265dad3d2059926f9cc86c34f2f3)
- Authorized users can send messages and attachments in affected existing global sessions. [e6b93ae](https://github.com/openclaw/openclaw/commit/e6b93ae77b717e37c879833057ce38b52734d253)
- Missing images from older conversation history are described as unavailable context rather than a fresh image-input failure. [eb1b48c](https://github.com/openclaw/openclaw/commit/eb1b48c58b61dec3cc273587d44e4f9a7eaa29f9)
- Valid sharing access survives display-only updates when a waiting session request resumes. [f6e6805](https://github.com/openclaw/openclaw/commit/f6e6805b99b7a99b657d63ccd4e1f11ab96a8f0d)
- Resumed delegated work avoids duplicate completion announcements from an earlier pause notice. [f71437a](https://github.com/openclaw/openclaw/commit/f71437a98f53bb0b6d993a1f54b02360cf3b4611) [Docs](https://docs.openclaw.ai/concepts/subagent-yield-handoff)
- Worker turns can retry a temporary transcript-save conflict during database preparation. [fbac0be](https://github.com/openclaw/openclaw/commit/fbac0bec89805765cba15e2bc146be9f6c88217a) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/troubleshooting)
- Session tail timestamps show a Z so readers can identify UTC. [#148022](https://github.com/openclaw/openclaw/pull/148022) Thanks [@TUARAN](https://github.com/TUARAN), [@obviyus](https://github.com/obviyus), [@aniruddhaadak80](https://github.com/aniruddhaadak80).
- Replies keep useful text after internal tool blocks containing quoted closing markers. [#149775](https://github.com/openclaw/openclaw/pull/149775) Thanks [@bodapatisaikrishna](https://github.com/bodapatisaikrishna), [@steipete](https://github.com/steipete).
- Identity guidance explains which updates change agent configuration and which may update IDENTITY.md. [#149992](https://github.com/openclaw/openclaw/pull/149992) [Docs](https://docs.openclaw.ai/reference/templates/IDENTITY) · [Docs](https://docs.openclaw.ai/cli/agents) · Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@pusherofbrooms](https://github.com/pusherofbrooms), [@holny](https://github.com/holny), [@obviyus](https://github.com/obviyus).
- Final and streamed replies retain short corrections added after a message-tool send. [#151921](https://github.com/openclaw/openclaw/pull/151921) Thanks [@amittell](https://github.com/amittell), [@obviyus](https://github.com/obviyus).
- Interrupting or stopping a turn keeps canceled work out of restart recovery so the next message can proceed. [#154175](https://github.com/openclaw/openclaw/pull/154175) [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@Grynn](https://github.com/Grynn), [@steipete](https://github.com/steipete), [@hannesrudolph](https://github.com/hannesrudolph), [@VACInc](https://github.com/VACInc).
- Channel requests remain in conversation history when required compaction fails. [#160462](https://github.com/openclaw/openclaw/pull/160462) Thanks [@masatohoshino](https://github.com/masatohoshino), [@obviyus](https://github.com/obviyus), [@aacodex401](https://github.com/aacodex401).
- Background session summaries allow slower CLI-backed utility models up to 30 seconds to finish. [#162067](https://github.com/openclaw/openclaw/pull/162067) Thanks [@rogeriochaves](https://github.com/rogeriochaves), [@llmsommelier](https://github.com/llmsommelier), [@obviyus](https://github.com/obviyus).
- Replies continue after automatic dashboard session resets without title generation blocking them. [#162689](https://github.com/openclaw/openclaw/pull/162689) Thanks [@ericcaiwx-star](https://github.com/ericcaiwx-star), [@dimonnld](https://github.com/dimonnld), [@OmniScaleMatt](https://github.com/OmniScaleMatt), [@gloria0021](https://github.com/gloria0021), [@obviyus](https://github.com/obviyus).
- An agent turn can continue without a resend when its database worker exits before dispatch. [#163258](https://github.com/openclaw/openclaw/pull/163258) Thanks [@goutamadwant](https://github.com/goutamadwant), [@steipete](https://github.com/steipete), [@hawkit](https://github.com/hawkit).
- Malformed file-edit requests receive a clear JSON correction before edits run. [#163577](https://github.com/openclaw/openclaw/pull/163577) Thanks [@GoldArowana](https://github.com/GoldArowana), [@aniruddhaadak80](https://github.com/aniruddhaadak80), [@altaywtf](https://github.com/altaywtf).
- Multi-step agent work gets a bounded chance to continue after a later tool call is rejected as malformed. [#164274](https://github.com/openclaw/openclaw/pull/164274) Thanks [@fransqaas](https://github.com/fransqaas), [@obviyus](https://github.com/obviyus).
- Parent agents can finish work triggered by a subagent result without the delivery deadline cancelling work already started. [#164282](https://github.com/openclaw/openclaw/pull/164282) Thanks [@Oldrich333](https://github.com/Oldrich333), [@obviyus](https://github.com/obviyus).
- Session operations avoid repeating already validated database schema checks. [#164490](https://github.com/openclaw/openclaw/pull/164490) [Docs](https://docs.openclaw.ai/reference/database-schemas) · Thanks [@steipete](https://github.com/steipete).
- Quoted replies load their previews with chat history, and links to older originals keep navigating when rendering is delayed. [#164605](https://github.com/openclaw/openclaw/pull/164605) Thanks [@steipete](https://github.com/steipete).
- Covered failed worktree setup can clean its empty branch so the same session can retry, and delayed heartbeat wakeups avoid false failures. [#164615](https://github.com/openclaw/openclaw/pull/164615) Thanks [@steipete](https://github.com/steipete).
- A queued message can continue after the covered interrupted Control UI run, while unsafe ownership conflicts show understandable retry guidance. [#164656](https://github.com/openclaw/openclaw/pull/164656) Thanks [@RomneyDa](https://github.com/RomneyDa), [@LivenseAI](https://github.com/LivenseAI), [@lucascmg-vx](https://github.com/lucascmg-vx).
- Timed-out or killed child tasks keep their recorded status and return results from the right owner, even when agents reuse a session name. [#164674](https://github.com/openclaw/openclaw/pull/164674) Thanks [@steipete](https://github.com/steipete).
- Agents can send Ctrl+Space and modified F1–F12 correctly to interactive terminal programs. [#164688](https://github.com/openclaw/openclaw/pull/164688) Thanks [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- Agent patches match en quad and em quad spaces without changing preserved file text. [#164742](https://github.com/openclaw/openclaw/pull/164742) Thanks [@ooiuuii](https://github.com/ooiuuii), [@obviyus](https://github.com/obviyus).
- Durable conversation rewind and branch switching perform their main history mutation work in the database worker. [#164753](https://github.com/openclaw/openclaw/pull/164753) Thanks [@steipete](https://github.com/steipete).
- Managed worktree cleanup runs as a background job, with a configurable global checkout cap and eviction policy. [#164758](https://github.com/openclaw/openclaw/pull/164758) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees#capacity-and-eviction) · [Docs](https://docs.openclaw.ai/gateway/config-runtime#worktreemaxcount) · Thanks [@steipete](https://github.com/steipete).
- View-only subagent chats hide saved-draft recovery controls while parent drafts remain available. [#164766](https://github.com/openclaw/openclaw/pull/164766) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Commands containing NUL are rejected before helpers start or an existing scoped command is cancelled. [#164770](https://github.com/openclaw/openclaw/pull/164770) [Docs](https://docs.openclaw.ai/tools/exec) · Thanks [@shakkernerd](https://github.com/shakkernerd), [@IWhatsskill](https://github.com/IWhatsskill), [@chabal2020](https://github.com/chabal2020).
- Preparing and finishing conversations moves more saved-data reads into background workers. [#164779](https://github.com/openclaw/openclaw/pull/164779) Thanks [@steipete](https://github.com/steipete).
- At shutdown, OpenClaw waits for managed-worktree cleanup it has already accepted to finish before closing background workers. Saved cleanup data stays available for recovery if a write's outcome is uncertain. [#164824](https://github.com/openclaw/openclaw/pull/164824) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Reopening or reloading an active Claude CLI session preserves the original elapsed Working time, including preparation before handoff. [#164873](https://github.com/openclaw/openclaw/pull/164873) Thanks [@rogeriochaves](https://github.com/rogeriochaves), [@llmsommelier](https://github.com/llmsommelier), [@fuller-stack-dev](https://github.com/fuller-stack-dev).
- Session setup, deletion, and history changes move selected database work into the background. [#164922](https://github.com/openclaw/openclaw/pull/164922) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Managed-worktree sessions archive promptly while checkout cleanup continues in the background; unarchiving waits for any in-flight snapshot and restores saved work. [#164938](https://github.com/openclaw/openclaw/pull/164938) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Selected conversation-history checks run through the existing background database reader. [#164989](https://github.com/openclaw/openclaw/pull/164989) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy#reply-run-start-transcript-facts) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- First-use session preparation leaves the Gateway available while session data is read. [#165027](https://github.com/openclaw/openclaw/pull/165027) Thanks [@steipete](https://github.com/steipete).
- Session checks do less blocking Gateway work while replies use current session and transcript state. [#165028](https://github.com/openclaw/openclaw/pull/165028) Thanks [@steipete](https://github.com/steipete).
- Artifact downloads in long conversations can start sooner without checking unrelated messages first. [#165030](https://github.com/openclaw/openclaw/pull/165030) [Docs](https://docs.openclaw.ai/nodes/media-playback) · Thanks [@steipete](https://github.com/steipete).
- Progress-card updates avoid repeated database setup work. [#165081](https://github.com/openclaw/openclaw/pull/165081) Thanks [@steipete](https://github.com/steipete).
- Preparing model context avoids repeatedly decompressing the same history messages. [#165086](https://github.com/openclaw/openclaw/pull/165086) Thanks [@steipete](https://github.com/steipete).
- Recovering older results and checking duplicate messages avoids unrelated compressed history reads. [#165089](https://github.com/openclaw/openclaw/pull/165089) Thanks [@steipete](https://github.com/steipete).
- Less database overhead when registering or settling groups of subagents. [#165098](https://github.com/openclaw/openclaw/pull/165098) Thanks [@steipete](https://github.com/steipete).
- Restoring a saved chat position avoids unnecessary pane redraws while messages finish laying out. [#165101](https://github.com/openclaw/openclaw/pull/165101) Thanks [@steipete](https://github.com/steipete), [@Yuyorman](https://github.com/Yuyorman).
- Completed resumed chats clear stuck working timers and Stop buttons automatically while keeping unsent drafts. [#165108](https://github.com/openclaw/openclaw/pull/165108) Thanks [@shakkernerd](https://github.com/shakkernerd), [@obviyus](https://github.com/obviyus).
- A message arriving as the prior turn finishes avoids a spurious placement error and resend request. [#165166](https://github.com/openclaw/openclaw/pull/165166) Thanks [@steipete](https://github.com/steipete).
- Canceling one queued WebChat message no longer makes unrelated queued messages fail and retry. [#165168](https://github.com/openclaw/openclaw/pull/165168) Thanks [@steipete](https://github.com/steipete).
- Missing-summary recovery can return a useful task summary when automatic compaction previously caused it to reject its own result. [#165179](https://github.com/openclaw/openclaw/pull/165179) Thanks [@ericcurtin](https://github.com/ericcurtin), [@johan-eilertsen](https://github.com/johan-eilertsen), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Reply finalization and routine session checks avoid loading large saved prompts and diff data they do not need. [#165181](https://github.com/openclaw/openclaw/pull/165181) Thanks [@steipete](https://github.com/steipete).
- Routine session-start and completion saves run off the Gateway main thread while accepted writes settle during shutdown. [#165193](https://github.com/openclaw/openclaw/pull/165193) Thanks [@steipete](https://github.com/steipete).
- Queued messages from multiple clients route run timing, model information and live tool activity to the client that sent each message. [#165194](https://github.com/openclaw/openclaw/pull/165194) Thanks [@steipete](https://github.com/steipete).
- Chat turns no longer fail merely because unrelated sessions start or finish while maintenance runs. [#165196](https://github.com/openclaw/openclaw/pull/165196) Thanks [@steipete](https://github.com/steipete).
- Managed worktree cleanup uses incremental Git maintenance and suspends failing repositories so cleanup and other repositories can continue. [#165204](https://github.com/openclaw/openclaw/pull/165204) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Status, Side chat, and progress reads run in the background, discard superseded results, and finish accepted summary writes during shutdown. [#165205](https://github.com/openclaw/openclaw/pull/165205) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate) · Thanks [@steipete](https://github.com/steipete).
- Publish PR cards clear stale worktree-owner errors after cleanup and show compact status labels with expandable recovery details. [#165219](https://github.com/openclaw/openclaw/pull/165219) Thanks [@steipete](https://github.com/steipete).
- Large-history attachment cleanup and context reports use smaller reads, reducing per-request memory spikes and time holding the history worker. [#165221](https://github.com/openclaw/openclaw/pull/165221) Thanks [@steipete](https://github.com/steipete).
- Progress images and attachments from session-bound recovered or internally dispatched agent runs survive scratch-file cleanup and chat reload. [#165275](https://github.com/openclaw/openclaw/pull/165275) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Workboard opens its Board agent in a dedicated dock conversation without duplicating the ordinary session list or inflating people counts. [#165319](https://github.com/openclaw/openclaw/pull/165319) [Docs](https://docs.openclaw.ai/plugins/workboard) · [Docs](https://docs.openclaw.ai/plugins/feature-plugins) · [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-session-control) · Thanks [@steipete](https://github.com/steipete).
- Eligible Control UI turns interrupted by a Gateway restart resume after startup, with repair for sessions left stuck running by this specific cleanup race. [#165333](https://github.com/openclaw/openclaw/pull/165333) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Slack and Discord sessions no longer show header buttons that open their source conversation; sessions and transcripts remain readable. [#165334](https://github.com/openclaw/openclaw/pull/165334) [Docs](https://docs.openclaw.ai/plugins/feature-plugins) · [Docs](https://docs.openclaw.ai/plugins/sdk-channel-plugins) · Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Outdated subagent records no longer block current siblings and nested children from settling after a restart so their parent can continue. [#165335](https://github.com/openclaw/openclaw/pull/165335) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Completed chat steps stay counted when their only nested work is a hidden routine progress update. [#165358](https://github.com/openclaw/openclaw/pull/165358) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@obviyus](https://github.com/obviyus), [@shakkernerd](https://github.com/shakkernerd).
- Starting ordinary chats moves selected-session metadata rereads off the Gateway main thread while retaining current permissions and stale-read checks. [#165360](https://github.com/openclaw/openclaw/pull/165360) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Permission and skill checks run in the background while messages sent during active work keep their order and avoid duplicate submission after uncertain acceptance. [#165370](https://github.com/openclaw/openclaw/pull/165370) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate#await-reply-tool-authority) · [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy) · Thanks [@steipete](https://github.com/steipete).
- Chat keeps delegated-work waiting status beneath the reply, shows remaining subagents and preserves opened tool details through handoff refreshes. [#165378](https://github.com/openclaw/openclaw/pull/165378) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd), [@steipete](https://github.com/steipete).
- Active tools retain live progress after chat history refresh instead of being replaced by a misleading unknown outcome. [#165392](https://github.com/openclaw/openclaw/pull/165392) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Session setup and status recover missing start or completion times from saved history in the background without changing reset decisions. [#165401](https://github.com/openclaw/openclaw/pull/165401) [Docs](https://docs.openclaw.ai/plugins/sdk-migration#session-reset-freshness) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Named Windows-1252 text uploads preserve accented words in model context when the sender omits a specific content type. [#165405](https://github.com/openclaw/openclaw/pull/165405) Thanks [@Chessing234](https://github.com/Chessing234), [@obviyus](https://github.com/obviyus).
- Opening a session from an excluded agent store promptly reports not found instead of repeatedly asking clients to reload. [#165408](https://github.com/openclaw/openclaw/pull/165408) Thanks [@obviyus](https://github.com/obviyus), [@Oldrich333](https://github.com/Oldrich333).
- Chat activity outcome badges stay on one line while long command headlines truncate cleanly. [#165415](https://github.com/openclaw/openclaw/pull/165415) Thanks [@steipete](https://github.com/steipete).
- Completed chat steps keep their titles and open their details in one click. [#165426](https://github.com/openclaw/openclaw/pull/165426) Thanks [@shakkernerd](https://github.com/shakkernerd).
- A steer sent before a reply target exists can join the first turn after workspace setup. [#165462](https://github.com/openclaw/openclaw/pull/165462) [Docs](https://docs.openclaw.ai/concepts/queue-steering) · Thanks [@steipete](https://github.com/steipete).
- Busy session lists reuse unchanged rows during unrelated updates, reducing repeated allocation work. [#165464](https://github.com/openclaw/openclaw/pull/165464) Thanks [@steipete](https://github.com/steipete).
- The chat working line shows how many direct sub-agents remain running while the parent works. [#165477](https://github.com/openclaw/openclaw/pull/165477) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Reopening branch pickers in large worktree setups avoids repeated Git discovery; empty snapshot cleanup skips an unnecessary process. [#165480](https://github.com/openclaw/openclaw/pull/165480) Thanks [@steipete](https://github.com/steipete).
- Stopping a turn sends one cancelled completion without trailing lifecycle updates or duplicate finals. [#165483](https://github.com/openclaw/openclaw/pull/165483) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · Thanks [@steipete](https://github.com/steipete).
- Chats at the latest content keep following messages from other devices while readers who scroll up keep their place. [#165484](https://github.com/openclaw/openclaw/pull/165484) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · [Docs](https://docs.openclaw.ai/web/control-ui/feature-reference) · Thanks [@steipete](https://github.com/steipete).
- Large saved prompts cost less to validate, and eligible sub-agent starts avoid redundant parent-skill reads. [#165495](https://github.com/openclaw/openclaw/pull/165495) Thanks [@steipete](https://github.com/steipete).
- Parent conversations recover after restart without repeating the same child-completion continuation. [#165496](https://github.com/openclaw/openclaw/pull/165496) Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333).
- Pending child-agent results can recover after obsolete child records are retired on restart. [#165499](https://github.com/openclaw/openclaw/pull/165499) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · [Docs](https://docs.openclaw.ai/tools/subagents/operations) · Thanks [@steipete](https://github.com/steipete).
- Saved unanswered instructions remain actionable when sub-agent work resumes the conversation after recovery. [#165502](https://github.com/openclaw/openclaw/pull/165502) [Docs](https://docs.openclaw.ai/concepts/session) · Thanks [@steipete](https://github.com/steipete).
- Repeated base-branch suggestions return with less work in large repositories when refs are unchanged. [#165513](https://github.com/openclaw/openclaw/pull/165513) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Steered instructions stay visible in conversation order, including saved Codex history after refresh. [#165535](https://github.com/openclaw/openclaw/pull/165535) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Steer messages sent while a worktree or runtime is starting can guide that initial task once it is ready. [#165537](https://github.com/openclaw/openclaw/pull/165537) [Docs](https://docs.openclaw.ai/concepts/queue-steering) · Thanks [@steipete](https://github.com/steipete).
- Saved-reply and attachment corrections move database work off the Gateway request thread. [#165541](https://github.com/openclaw/openclaw/pull/165541) Thanks [@steipete](https://github.com/steipete).
- Answers resumed after subagent work stay together, with timing and known parent-run usage covering the whole request. [#165542](https://github.com/openclaw/openclaw/pull/165542) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Injected reports and alerts appear once as standalone notes without interrupting an ongoing reply; intentionally identical notes remain separate. [#165549](https://github.com/openclaw/openclaw/pull/165549) [Docs](https://docs.openclaw.ai/web/webchat) · Thanks [@obviyus](https://github.com/obviyus), [@legarconc](https://github.com/legarconc).
- System-agent history and resets finish saving through shutdown, and configuration notices avoid outdated audit records. [#165561](https://github.com/openclaw/openclaw/pull/165561) Thanks [@steipete](https://github.com/steipete).
- Session suggestions load with less repeated preparation, improving first and subsequent requests in a large-session benchmark. [#165570](https://github.com/openclaw/openclaw/pull/165570) Thanks [@steipete](https://github.com/steipete).
- Admitted chat messages are acknowledged while skill preparation continues, with preparation failures visible on the run. [#165608](https://github.com/openclaw/openclaw/pull/165608) [Docs](https://docs.openclaw.ai/web/webchat) · [Docs](https://docs.openclaw.ai/gateway/logging) · [Docs](https://docs.openclaw.ai/gateway/prometheus) · Thanks [@steipete](https://github.com/steipete).
- Parent agents retry completed child work after stale-result preparation or temporary worker-capacity failures instead of losing their continuation. [#165610](https://github.com/openclaw/openclaw/pull/165610) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Saved-chat model and account information prepares in background workers while preserving current visibility and selected-account checks. [#165614](https://github.com/openclaw/openclaw/pull/165614) Thanks [@steipete](https://github.com/steipete).
- Long chat status and model labels avoid broken emoji at the shortening boundary. [#165619](https://github.com/openclaw/openclaw/pull/165619) Thanks [@nocodet888-arch](https://github.com/nocodet888-arch), [@obviyus](https://github.com/obviyus).
- Required child-agent replies keep retrying through temporary cleanup failures within the existing delivery deadline. [#165634](https://github.com/openclaw/openclaw/pull/165634) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Unchanged Workboard Sessions boards load again with much less repeated work. [#165698](https://github.com/openclaw/openclaw/pull/165698) [Docs](https://docs.openclaw.ai/plugins/workboard) · Thanks [@steipete](https://github.com/steipete).
- Chat shows subagent names, current status, duration and direct session links, with separate subagent activity counts. [#165725](https://github.com/openclaw/openclaw/pull/165725) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Repeated branch suggestions in the managed-worktree picker can return faster for unchanged repositories. [#165750](https://github.com/openclaw/openclaw/pull/165750) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Downloaded attachment names preserve apostrophes at the start or end. [#165754](https://github.com/openclaw/openclaw/pull/165754) Thanks [@LinzeShi](https://github.com/LinzeShi), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Repeated file listings from an unchanged conversation reuse their summaries instead of decoding the transcript again. [#165759](https://github.com/openclaw/openclaw/pull/165759) Thanks [@steipete](https://github.com/steipete).
- Queued follow-up messages wait for the original reply to finish when only its source operation owns the queue. [#165788](https://github.com/openclaw/openclaw/pull/165788) Thanks [@steipete](https://github.com/steipete).
- Parents receive complete answers from new ACP and CLI fallback subagent runs, even after the child has moved on to another turn. [#165800](https://github.com/openclaw/openclaw/pull/165800) [Docs](https://docs.openclaw.ai/tools/subagents/announce) · Thanks [@yetval](https://github.com/yetval), [@steipete](https://github.com/steipete), [@holgergruenhagen](https://github.com/holgergruenhagen), [@potterdigital](https://github.com/potterdigital), [@Leli1024](https://github.com/Leli1024), [@zyz619963502zyz](https://github.com/zyz619963502zyz).
- Repeated searches and refreshes of large conversation lists reuse more prepared information, reducing processing in the measured workloads. [#165834](https://github.com/openclaw/openclaw/pull/165834) Thanks [@steipete](https://github.com/steipete).
- Shorthand GitHub references in chat open the matching repository linked in the same paragraph, with correct previews and hovercards; conflicting references stay unlinked. [#165849](https://github.com/openclaw/openclaw/pull/165849) Thanks [@jjjhenriksen](https://github.com/jjjhenriksen), [@obviyus](https://github.com/obviyus).
- Session diffs and pull-request statistics avoid repeated slow Git work in large managed repositories, while limiting competing content reads. [#165858](https://github.com/openclaw/openclaw/pull/165858) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Failed conversation setup can complete cleanup without a conflicting database permission read, including conversations with native plugin bindings. [#165859](https://github.com/openclaw/openclaw/pull/165859) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Shared-conversation browsing, search and pagination use background-refreshed listings instead of waiting on slow paired nodes for each request. [#165887](https://github.com/openclaw/openclaw/pull/165887) [Docs](https://docs.openclaw.ai/plugins/session-share) · [Docs](https://docs.openclaw.ai/nodes/session-catalogs) · Thanks [@steipete](https://github.com/steipete).
- Accepted conversation-history saves finish in order before the writer is released, so later writes and Gateway shutdown do not overtake them. [#165894](https://github.com/openclaw/openclaw/pull/165894) [Docs](https://docs.openclaw.ai/plugins/sdk-migration) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Sessions boards update changed conversation information without rebuilding the entire roster, keeping existing visibility and explicit stale-data warnings. [#165896](https://github.com/openclaw/openclaw/pull/165896) [Docs](https://docs.openclaw.ai/plugins/workboard) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/gateway-and-nodes) · Thanks [@steipete](https://github.com/steipete).
- Chat history downloads smaller ordinary pages, and repeated delivery checks avoid downloading unchanged history again while older messages remain available through pagination. [#165897](https://github.com/openclaw/openclaw/pull/165897) [Docs](https://docs.openclaw.ai/web/webchat) · [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-session-control) · Thanks [@steipete](https://github.com/steipete).
- Cancelling work still waiting for conversation admission releases its locks so reset, recovery and cleanup can proceed. [#165898](https://github.com/openclaw/openclaw/pull/165898) Thanks [@steipete](https://github.com/steipete).
- Sequential conversation saves receive their own commit confirmation, preventing a later save from appearing successful because an earlier save succeeded. [#165904](https://github.com/openclaw/openclaw/pull/165904) Thanks [@steipete](https://github.com/steipete).
- Repeated branch-list refreshes reuse validated summaries and background readers instead of rescanning long conversations after every small append. [#165909](https://github.com/openclaw/openclaw/pull/165909) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Confirming composed text preserves the New Session draft until deliberate submission. [#165919](https://github.com/openclaw/openclaw/pull/165919) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- New conversations inherit the parent agent in explicit multi-agent fleets unless a child target is selected. [#165929](https://github.com/openclaw/openclaw/pull/165929) Thanks [@alkor2000](https://github.com/alkor2000), [@steipete](https://github.com/steipete), [@markstones78](https://github.com/markstones78), [@aldiz1711](https://github.com/aldiz1711).
- New sessions avoid spurious worker-placement errors while other local conversations are active. [#165984](https://github.com/openclaw/openclaw/pull/165984) Thanks [@steipete](https://github.com/steipete).
- Completed delegated results reach the parent after the bounded wait for a stalled finished descendant expires. [#165987](https://github.com/openclaw/openclaw/pull/165987) Thanks [@Oldrich333](https://github.com/Oldrich333), [@obviyus](https://github.com/obviyus), [@LifeViwer](https://github.com/LifeViwer), [@vinsew](https://github.com/vinsew), [@VACInc](https://github.com/VACInc), [@mgr-nick](https://github.com/mgr-nick).
- New Session returns a retry message and preserves the draft when model-catalog loading stalls. [#165989](https://github.com/openclaw/openclaw/pull/165989) Thanks [@steipete](https://github.com/steipete), [@DonnieFi](https://github.com/DonnieFi), [@dprev](https://github.com/dprev).
- Switching among agents avoids repeated database startup delays by keeping recently used workers warm. [#165993](https://github.com/openclaw/openclaw/pull/165993) Thanks [@steipete](https://github.com/steipete).
- Queued messages stay pending until their replies finish, and clients track the result using the original returned ID. [#165996](https://github.com/openclaw/openclaw/pull/165996) [Docs](https://docs.openclaw.ai/concepts/queue-steering) · Thanks [@steipete](https://github.com/steipete).
- Simultaneous first requests for a new agent share database creation instead of failing with ownership errors. [#166003](https://github.com/openclaw/openclaw/pull/166003) Thanks [@steipete](https://github.com/steipete).
- Sending a message no longer fails solely because the previous turn or activity summary updates the same session simultaneously. [#166027](https://github.com/openclaw/openclaw/pull/166027) Thanks [@steipete](https://github.com/steipete).
- Accepted first messages survive a Gateway restart during local managed-worktree preparation instead of leaving an empty unanswered session. [#166042](https://github.com/openclaw/openclaw/pull/166042) [Docs](https://docs.openclaw.ai/concepts/session) · Thanks [@steipete](https://github.com/steipete).
- Creating and updating other sessions can continue while a model or native-runtime-consent change waits for preparation. [#166059](https://github.com/openclaw/openclaw/pull/166059) Thanks [@steipete](https://github.com/steipete).
- Several isolated session worktrees can prepare concurrently, with abandoned capacity recovered after a creator crash. [#166060](https://github.com/openclaw/openclaw/pull/166060) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Continuing a catalog conversation fails with a retryable message when model loading stalls, rather than waiting indefinitely. [#166089](https://github.com/openclaw/openclaw/pull/166089) Thanks [@ericcaiwx-star](https://github.com/ericcaiwx-star).
- Background commands that redirect output to a file can continue the conversation and report the result after finishing. [#166123](https://github.com/openclaw/openclaw/pull/166123) [Docs](https://docs.openclaw.ai/gateway/background-process) · Thanks [@obviyus](https://github.com/obviyus), [@gkoch02](https://github.com/gkoch02).
- Late completion receipts preserve a newer child answer, intentional silence, or empty reply. [#166139](https://github.com/openclaw/openclaw/pull/166139) [Docs](https://docs.openclaw.ai/tools/subagents/announce) · Thanks [@Yun-0000](https://github.com/Yun-0000), [@steipete](https://github.com/steipete), [@michaeljgood71](https://github.com/michaeljgood71).
- Follow-ups about earlier photos no longer receive missing-image instructions that undermine a previous answer. [#166165](https://github.com/openclaw/openclaw/pull/166165) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@steipete](https://github.com/steipete), [@nogikeyaksh](https://github.com/nogikeyaksh).
- Cancellation confirmed during preparation consistently tells clients that provider execution never started. [#166185](https://github.com/openclaw/openclaw/pull/166185) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Managed-workspace checks do less database work on the Gateway; cross-process listings report cleanup candidates without removing them. [#166236](https://github.com/openclaw/openclaw/pull/166236) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/agent) · Thanks [@steipete](https://github.com/steipete).
- Completed subagent results can reach healthy requester chats when empty recovery metadata previously blocked admission. [#166294](https://github.com/openclaw/openclaw/pull/166294) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@steipete](https://github.com/steipete), [@Jackten](https://github.com/Jackten).
- New dashboard conversation and Telegram DM-topic names focus on the supplied first message. [#166308](https://github.com/openclaw/openclaw/pull/166308) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@jjjhenriksen](https://github.com/jjjhenriksen), [@obviyus](https://github.com/obviyus).
- Agents stored in included roster files can be deleted while preserving the root include. [#166316](https://github.com/openclaw/openclaw/pull/166316) [Docs](https://docs.openclaw.ai/gateway/configuration/common-tasks) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@jaoa12or](https://github.com/jaoa12or), [@obviyus](https://github.com/obviyus).
- Browser chats avoid a repeated final answer after background commands resume and delegate private child work. [#166362](https://github.com/openclaw/openclaw/pull/166362) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Sending a message can be stored and acknowledged while unrelated history reads are busy. [#166365](https://github.com/openclaw/openclaw/pull/166365) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Unrelated session writes stop causing false worker workspace-recovery failures. [#166375](https://github.com/openclaw/openclaw/pull/166375) [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333).
- Session setting updates stop waiting indefinitely for a stalled model catalog and can be retried without a late change. [#166376](https://github.com/openclaw/openclaw/pull/166376) [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-session-control) · Thanks [@steipete](https://github.com/steipete), [@dprev](https://github.com/dprev).
- Restart recovery hands history and search index repair to its host owner. [#166395](https://github.com/openclaw/openclaw/pull/166395) [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete).
- Session CLI archive and delete preserve the chosen agent, and trajectory exports resolve a default or sole agent. [#166415](https://github.com/openclaw/openclaw/pull/166415) [Docs](https://docs.openclaw.ai/cli/sessions) · Thanks [@steipete](https://github.com/steipete).
- Agent binding commands honor configured defaults and account casing, and report incomplete noninteractive creation as failure. [#166426](https://github.com/openclaw/openclaw/pull/166426) [Docs](https://docs.openclaw.ai/cli/agents) · Thanks [@steipete](https://github.com/steipete).
- Linux worker hosts can recover container sessions owned by root and return useful sanitized failure details. [#166441](https://github.com/openclaw/openclaw/pull/166441) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/session-lifecycle) · [Docs](https://docs.openclaw.ai/gateway/cloud-workers/troubleshooting) · Thanks [@steipete](https://github.com/steipete).
- Stop can finish an already accepted abandoned Move, while model selection refuses a session that became locked or was replaced during preparation. [#166445](https://github.com/openclaw/openclaw/pull/166445) Thanks [@steipete](https://github.com/steipete).
- Recovered subagent failures and timeouts retain their recorded cause for the parent. [#166454](https://github.com/openclaw/openclaw/pull/166454) Thanks [@steipete](https://github.com/steipete).
- Equivalent macOS temporary paths no longer interrupt reply finalization and replay the same inbound message. [#166462](https://github.com/openclaw/openclaw/pull/166462) Thanks [@ericcaiwx-star](https://github.com/ericcaiwx-star).
- Subagents using plain session keys list correctly with metadata from their recorded owner. [#166550](https://github.com/openclaw/openclaw/pull/166550) Thanks [@steipete](https://github.com/steipete).
- Control UI conversations can resume authorized automation work after a Gateway restart while rechecking current permissions. [#166553](https://github.com/openclaw/openclaw/pull/166553) [Docs](https://docs.openclaw.ai/concepts/session) · Thanks [@romneyda](https://github.com/romneyda).
- Conversations can continue after a corrupt image instead of repeatedly failing, including after reopening. [#166564](https://github.com/openclaw/openclaw/pull/166564) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@steipete](https://github.com/steipete), [@mirasrael](https://github.com/mirasrael).
- Fitting emoji and combining accents stay together at hard cuts in streamed prose replies. [#166567](https://github.com/openclaw/openclaw/pull/166567) Thanks [@rudycelekli](https://github.com/rudycelekli), [@obviyus](https://github.com/obviyus).
- Claude CLI-bound sessions can retrieve and page around messages from before a reset again. [#166578](https://github.com/openclaw/openclaw/pull/166578) Thanks [@VACInc](https://github.com/VACInc).
- Lets follow-up instructions wait for an image completion and delivery instead of failing with a session-change error. [#166597](https://github.com/openclaw/openclaw/pull/166597) [Docs](https://docs.openclaw.ai/tools/image-generation) · Thanks [@steipete](https://github.com/steipete).
- Stops superseded worker setup while retaining session resources until unfinished cleanup settles. [#166609](https://github.com/openclaw/openclaw/pull/166609) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Prepares session-owned worker workspaces and preserves their recorded destination during eligible recovery. [#166616](https://github.com/openclaw/openclaw/pull/166616) Thanks [@RomneyDa](https://github.com/RomneyDa), [@shakkernerd](https://github.com/shakkernerd).
- WebChat keeps generated attachments and their reply text in the chat that requested them when sessions are shared with external channels. [#166710](https://github.com/openclaw/openclaw/pull/166710) [Docs](https://docs.openclaw.ai/tools/image-generation) · Thanks [@wsk19831112-web](https://github.com/wsk19831112-web), [@steipete](https://github.com/steipete), [@ing650423](https://github.com/ing650423).
- Browser Stop and /stop cancel their request's ordinary commands even after they return a process handle, retaining output and reporting uncertain cleanup. [#166753](https://github.com/openclaw/openclaw/pull/166753) [Docs](https://docs.openclaw.ai/tools/exec) · [Docs](https://docs.openclaw.ai/gateway/background-process) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Follow-up guidance no longer cancels running tools when its steering receipt is uncertain; input is retained without replay and uncertainty is reported. [#166754](https://github.com/openclaw/openclaw/pull/166754) [Docs](https://docs.openclaw.ai/concepts/queue-steering) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Channel /stop ends the selected request's ordinary commands and waits for cleanup while preserving later work and independent background services. [#166764](https://github.com/openclaw/openclaw/pull/166764) [Docs](https://docs.openclaw.ai/tools/slash-commands) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Stop retires an ordinary command's queued or running follow-up so it cannot send a pending late reply after cancellation. [#166775](https://github.com/openclaw/openclaw/pull/166775) [Docs](https://docs.openclaw.ai/gateway/background-process) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Automatic conversation naming no longer keeps finished chats busy, and history edits wait for completed replies to finish saving. [#166784](https://github.com/openclaw/openclaw/pull/166784) [Docs](https://docs.openclaw.ai/concepts/compaction) · Thanks [@steipete](https://github.com/steipete).
- Parent Stop reaches ordinary commands retained by completed native helpers and routed continuations, reporting cleanup failures while preserving completed results. [#166832](https://github.com/openclaw/openclaw/pull/166832) [Docs](https://docs.openclaw.ai/tools/subagents/operations) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Agents see command execution hosts permitted for their session, reducing failures from selecting an unavailable sandbox. [#166835](https://github.com/openclaw/openclaw/pull/166835) [Docs](https://docs.openclaw.ai/tools/exec) · Thanks [@steipete](https://github.com/steipete).
- Subagent recovery and cleanup use the recorded child owner so same-named sessions belonging to another agent are preserved. [#166845](https://github.com/openclaw/openclaw/pull/166845) Thanks [@steipete](https://github.com/steipete).
- Parents receive interrupted child-task outcomes during Gateway startup, and native-child follow-ups check uncertain effects before retrying. [#166846](https://github.com/openclaw/openclaw/pull/166846) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Compacting, forking or rewinding immediately after a completed reply waits for its remaining cleanup instead of requiring a retry. [#166981](https://github.com/openclaw/openclaw/pull/166981) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · Thanks [@steipete](https://github.com/steipete).
- Long-running agents count completed background tools as progress even when a later model response hits its output limit, avoiding false stalled-task cancellations. [#166997](https://github.com/openclaw/openclaw/pull/166997) [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@SunnyShu0925](https://github.com/SunnyShu0925), [@steipete](https://github.com/steipete), [@hannesrudolph](https://github.com/hannesrudolph), [@hippoley](https://github.com/hippoley).
- Cmd/Ctrl+Enter opens the new conversation; add Shift to start it in the background. [#167019](https://github.com/openclaw/openclaw/pull/167019) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Simultaneous conversation-history and model-context reads can wait less on hosts with spare CPU. [#167029](https://github.com/openclaw/openclaw/pull/167029) Thanks [@steipete](https://github.com/steipete).
- Large older-message pages avoid reading content that cannot fit, while pagination keeps older messages available. [#167032](https://github.com/openclaw/openclaw/pull/167032) Thanks [@steipete](https://github.com/steipete).
- Reloading or reconnecting to long active chats avoids repeated commentary paragraphs and keeps new text visible. [#167054](https://github.com/openclaw/openclaw/pull/167054) Thanks [@steipete](https://github.com/steipete), [@RomneyDa](https://github.com/RomneyDa).
- Independent prompt preparation and reads use bounded parallel work when CPU capacity is available. [#167060](https://github.com/openclaw/openclaw/pull/167060) Thanks [@steipete](https://github.com/steipete).
- Conversation searches can proceed alongside other searches while keeping indexing notices accurate. [#167163](https://github.com/openclaw/openclaw/pull/167163) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Complete conversation searches stop showing a false indexing notice in the command palette. [#167174](https://github.com/openclaw/openclaw/pull/167174) Thanks [@steipete](https://github.com/steipete).
- Chat turns reuse coherent conversation-history reads instead of repeatedly loading the same saved information. [#167238](https://github.com/openclaw/openclaw/pull/167238) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Concurrent session creation in a new shared store reaches normal creation and duplicate-label checks instead of an intermittent discovery error. [#167257](https://github.com/openclaw/openclaw/pull/167257) Thanks [@steipete](https://github.com/steipete).
- Chat preparation repeats less database setup, while accepted Memory indexing retains its executor through provider waits and cleanup. [#167263](https://github.com/openclaw/openclaw/pull/167263) Thanks [@steipete](https://github.com/steipete), [@shakkernerd](https://github.com/shakkernerd).
- Saving conversations and checking session maintenance require fewer repeated database calls. [#167291](https://github.com/openclaw/openclaw/pull/167291) Thanks [@steipete](https://github.com/steipete).
- Later turns in image-heavy conversations avoid repeatedly decoding and resizing unchanged stored images. [#167355](https://github.com/openclaw/openclaw/pull/167355) Thanks [@steipete](https://github.com/steipete).
- Accepted new conversations open while local draft and saved checkout-name cleanup finishes, so the first turn is visible sooner. [#167384](https://github.com/openclaw/openclaw/pull/167384) Thanks [@steipete](https://github.com/steipete).
- Conversation branch lists avoid reading superseded message bodies when refreshing after message bursts. [#167434](https://github.com/openclaw/openclaw/pull/167434) Thanks [@steipete](https://github.com/steipete).
- Saved conversations stay readable when transcript search is waiting on a stalled database writer. [#167446](https://github.com/openclaw/openclaw/pull/167446) [Docs](https://docs.openclaw.ai/plugins/sdk-overview/infrastructure) · Thanks [@steipete](https://github.com/steipete).
- Opening chats with personal model accounts no longer waits behind unrelated database writes just to display account information. [#167447](https://github.com/openclaw/openclaw/pull/167447) Thanks [@steipete](https://github.com/steipete).
- Long conversations can continue with recent whole turns when automatic byte-limit compaction cannot recover, while saved history stays intact. [#167505](https://github.com/openclaw/openclaw/pull/167505) [Docs](https://docs.openclaw.ai/concepts/compaction) · [Docs](https://docs.openclaw.ai/plugins/codex-harness-runtime/compaction) · Thanks [@steipete](https://github.com/steipete), [@jaikharbanda](https://github.com/jaikharbanda), [@jlapenna](https://github.com/jlapenna).
- Sent prompts and images stay cleared when a newly confirmed conversation tab is closed immediately. [#167507](https://github.com/openclaw/openclaw/pull/167507) Thanks [@steipete](https://github.com/steipete).
- Simultaneous first conversation requests avoid intermittent creation failures on fresh Gateways. [#167515](https://github.com/openclaw/openclaw/pull/167515) Thanks [@steipete](https://github.com/steipete).
- Account labels and shared-conversation attribution require less repeated database work on the Gateway. [#167520](https://github.com/openclaw/openclaw/pull/167520) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate) · Thanks [@steipete](https://github.com/steipete).
- Session reset, deletion, cleanup and branch listing repeat less database work; protected-history cleanup avoids a false refresh notice. [#167549](https://github.com/openclaw/openclaw/pull/167549) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Completed replies reach users instead of being replaced by a failure warning after a reasoning-only follow-up. [#167567](https://github.com/openclaw/openclaw/pull/167567) Thanks [@goutamadwant](https://github.com/goutamadwant), [@hannesrudolph](https://github.com/hannesrudolph), [@obviyus](https://github.com/obviyus).
- A saved session change stays successful when an ordinary change notification fails, and incomplete cached state is discarded. [#167570](https://github.com/openclaw/openclaw/pull/167570) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access#committed-facts-and-completeness) · Thanks [@steipete](https://github.com/steipete).
- Combined session repairs move database work into the background, keep Talk on the selected store, and retain saved-chat identity if display details cannot load. [#167578](https://github.com/openclaw/openclaw/pull/167578) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime) · Thanks [@steipete](https://github.com/steipete).
- Automatic session titles preserve quoted phrases and apostrophes, removing unmatched quote marks after truncation. [#167584](https://github.com/openclaw/openclaw/pull/167584) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@steipete](https://github.com/steipete).
- Gateway logs stop repeating warnings for old blocked context-engine turns on every later session run. [#167595](https://github.com/openclaw/openclaw/pull/167595) Thanks [@jalehman](https://github.com/jalehman), [@Clode2026](https://github.com/Clode2026), [@steipete](https://github.com/steipete).
- Turns stop with recovery guidance after three consecutive identical tool errors. [#167628](https://github.com/openclaw/openclaw/pull/167628) [Docs](https://docs.openclaw.ai/tools/loop-detection) · [Docs](https://docs.openclaw.ai/providers/ollama/troubleshooting) · Thanks [@steipete](https://github.com/steipete).
- Chat, history, and Board operations avoid deadlocks when database reads, writes, and usage refresh overlap. [#167662](https://github.com/openclaw/openclaw/pull/167662) Thanks [@steipete](https://github.com/steipete).
- Image bursts have more processing capacity, and dashboard asset reads avoid waiting behind unrelated compute work. [#167676](https://github.com/openclaw/openclaw/pull/167676) Thanks [@steipete](https://github.com/steipete).
- Preparing ordinary saved chat input avoids an unnecessary conversation-history read. [#167682](https://github.com/openclaw/openclaw/pull/167682) Thanks [@steipete](https://github.com/steipete).
- Finishing chat turns avoids repeated session-database preparation. [#167685](https://github.com/openclaw/openclaw/pull/167685) Thanks [@steipete](https://github.com/steipete).
- Ordinary chat preparation reuses current session facts to avoid repeated database lookups. [#167686](https://github.com/openclaw/openclaw/pull/167686) Thanks [@steipete](https://github.com/steipete).
- Saving ordinary chat turns avoids redundant database reads and nested savepoints. [#167690](https://github.com/openclaw/openclaw/pull/167690) Thanks [@steipete](https://github.com/steipete).
- Workspace publication and move recovery repeat fewer database reads while checking current ownership. [#167721](https://github.com/openclaw/openclaw/pull/167721) Thanks [@steipete](https://github.com/steipete).
- Diagnostic logging failures release queue slots so later turns can proceed and completed tasks retain their results. [#167733](https://github.com/openclaw/openclaw/pull/167733) [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@steipete](https://github.com/steipete).
- Timed-out history, usage, and storage requests cancel waiting host work so expired requests do not remain queued. [#167740](https://github.com/openclaw/openclaw/pull/167740) Thanks [@steipete](https://github.com/steipete).
- An interrupted task's accepted completion reply recovers before later conversation input takes over, preventing silent reply loss. [#167814](https://github.com/openclaw/openclaw/pull/167814) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@goutamadwant](https://github.com/goutamadwant), [@steipete](https://github.com/steipete), [@marknilsn](https://github.com/marknilsn).
- Typing /stop in a connected Control UI chat cancels the selected session's work and clears queued follow-ups, so they do not immediately restart it. [#167860](https://github.com/openclaw/openclaw/pull/167860) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@masatohoshino](https://github.com/masatohoshino), [@steipete](https://github.com/steipete).
- Session details and history reflect committed changes despite delayed or lost worker replies, while newer changes remain protected. [#167875](https://github.com/openclaw/openclaw/pull/167875) Thanks [@steipete](https://github.com/steipete).
- Tool-heavy chats download shorter output previews while keeping complete captured results available on demand. [#167896](https://github.com/openclaw/openclaw/pull/167896) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Chat preparation and reply inspection avoid a transcript-read deadlock that could leave them waiting indefinitely. [#167901](https://github.com/openclaw/openclaw/pull/167901) Thanks [@steipete](https://github.com/steipete).
- Concurrent session activity avoids repeatedly copying the same configuration when preparing database access. [#167915](https://github.com/openclaw/openclaw/pull/167915) Thanks [@steipete](https://github.com/steipete).
- Preparing agent instructions creates less temporary data, including after a conversation is restored. [#167922](https://github.com/openclaw/openclaw/pull/167922) Thanks [@steipete](https://github.com/steipete).
- Repository-backed chats spend less time preparing a cold Git worker before their first turn. [#167936](https://github.com/openclaw/openclaw/pull/167936) Thanks [@steipete](https://github.com/steipete).
- One conversation's first-turn preparation no longer unnecessarily holds up unrelated conversations on the same gateway. [#167959](https://github.com/openclaw/openclaw/pull/167959) [Docs](https://docs.openclaw.ai/concepts/session) · Thanks [@steipete](https://github.com/steipete).
- Required turns that exhaust retries without visible output show a saved try-again notice instead of ending silently. [#167972](https://github.com/openclaw/openclaw/pull/167972) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · Thanks [@steipete](https://github.com/steipete).
- Session cleanup holds the database writer for less time, reducing interference with creating and archiving conversations. [#168013](https://github.com/openclaw/openclaw/pull/168013) Thanks [@steipete](https://github.com/steipete).
- Worktree operations can recover a confirmed committed result when their worker reply is lost, avoiding a false failure. [#168025](https://github.com/openclaw/openclaw/pull/168025) Thanks [@steipete](https://github.com/steipete).
- Sending a follow-up while subagents work no longer prevents their accepted results from returning to the parent conversation. [#168068](https://github.com/openclaw/openclaw/pull/168068) [Docs](https://docs.openclaw.ai/concepts/subagent-yield-handoff) · Thanks [@steipete](https://github.com/steipete), [@stackingrockss](https://github.com/stackingrockss), [@adamamzalag](https://github.com/adamamzalag), [@klabir](https://github.com/klabir), [@a1fred-ai](https://github.com/a1fred-ai), [@oldrich333](https://github.com/oldrich333).
- Messages sent during a subagent or command announcement remain queued and run automatically after its cleanup finishes. [#168077](https://github.com/openclaw/openclaw/pull/168077) [Docs](https://docs.openclaw.ai/concepts/queue-steering) · Thanks [@steipete](https://github.com/steipete).
- Chats recover from confirmed rolled-back maintenance conflicts, and model fallback keeps the original request intact. [#168078](https://github.com/openclaw/openclaw/pull/168078) Thanks [@steipete](https://github.com/steipete), [@jacobtomlinson](https://github.com/jacobtomlinson).
- Messages that redirect an active agent stay before the later replies they prompt, including after reconnect or reload. [#168099](https://github.com/openclaw/openclaw/pull/168099) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Parent chats show each unfinished subagent's name and current activity, with a direct link to its details. [#168102](https://github.com/openclaw/openclaw/pull/168102) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Prevents stack-overflow errors when opening session stores for large agent fleets. [#168354](https://github.com/openclaw/openclaw/pull/168354) Thanks [@steipete](https://github.com/steipete), [@609NFT](https://github.com/609NFT).
- Keeps existing and new conversations working after restart when the state folder uses a symlink. [#168361](https://github.com/openclaw/openclaw/pull/168361) Thanks [@obviyus](https://github.com/obviyus).
- Resumes eligible interrupted replies once session initialization or workspace preparation finishes. [#168650](https://github.com/openclaw/openclaw/pull/168650) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Automatically resumes eligible interrupted main chats after restart even when shutdown missed their recovery marker. [#168651](https://github.com/openclaw/openclaw/pull/168651) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Frees node-worker capacity after a forced stop by cleaning up surviving owned child processes. [#168746](https://github.com/openclaw/openclaw/pull/168746) Thanks [@steipete](https://github.com/steipete), [@aniruddhaadak80](https://github.com/aniruddhaadak80), [@linhongyu510](https://github.com/linhongyu510).
- Waits for an agent to finish loading before starting its replies while ready agents continue serving. [#168826](https://github.com/openclaw/openclaw/pull/168826) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete), [@xiaozishan](https://github.com/xiaozishan).
- Cross-session messages retain their sender labels; the later stable-message repair supersedes the original prompt-prefix tradeoff. [#169130](https://github.com/openclaw/openclaw/pull/169130) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Restart-interrupted delegated work returns privately to its original parent with saved context, while cancelled work stays cancelled. [#169144](https://github.com/openclaw/openclaw/pull/169144) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Cancelling a waiting CLI-backed turn takes effect before earlier work finishes, without running the cancelled turn. [#169303](https://github.com/openclaw/openclaw/pull/169303) Thanks [@steipete](https://github.com/steipete), [@changeroa](https://github.com/changeroa).
- Session catalog loading times out and recovers when Unix login-shell startup hangs. [#169507](https://github.com/openclaw/openclaw/pull/169507) Thanks [@zhangguiping-xydt](https://github.com/zhangguiping-xydt), [@obviyus](https://github.com/obviyus).
- Visible subagents launched during an active parent turn can reach their configured model and fallback sequence. [#169984](https://github.com/openclaw/openclaw/pull/169984) Thanks [@steipete](https://github.com/steipete).
- Independently launched agent turns stop inheriting another conversation's transcript writer and failing before a reply. [#170077](https://github.com/openclaw/openclaw/pull/170077) Thanks [@steipete](https://github.com/steipete), [@mariorivas1](https://github.com/mariorivas1), [@ghbalf](https://github.com/ghbalf).
- Interrupted worker tasks recover before a continuation or queued follow-up starts after a Gateway restart. [#170161](https://github.com/openclaw/openclaw/pull/170161) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/session-lifecycle) · Thanks [@steipete](https://github.com/steipete).
- Reply text already received from an interrupted native worker can remain in conversation history with a clearer failure reason. [#170223](https://github.com/openclaw/openclaw/pull/170223) Thanks [@steipete](https://github.com/steipete).
- Human conversations receiving another session's steering update can resume after restart when their original sender authority survives. [#170252](https://github.com/openclaw/openclaw/pull/170252) Thanks [@steipete](https://github.com/steipete).
- A follow-up message preserves an interrupted request's opportunity to resume before taking over the conversation. [#170647](https://github.com/openclaw/openclaw/pull/170647) Thanks [@steipete](https://github.com/steipete).
- Gateway state can stay available after sleep or backward clock changes when its original locks are verified. [#170790](https://github.com/openclaw/openclaw/pull/170790) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete), [@jjjhenriksen](https://github.com/jjjhenriksen), [@AnvinaLI](https://github.com/AnvinaLI), [@sgh6688](https://github.com/sgh6688), [@waynegault](https://github.com/waynegault), [@andersgreg](https://github.com/andersgreg), [@shawnholt](https://github.com/shawnholt).
- Manual --max-lines trimming rebuilds retained search indexes before reporting success; removed transcript text is permanently deleted without an archive. [#171134](https://github.com/openclaw/openclaw/pull/171134) [Docs](https://docs.openclaw.ai/cli/sessions) · Thanks [@steipete](https://github.com/steipete).
- Long streamed answers that quote tool-call XML in code blocks avoid repeated processing that could delay replies and other sessions. [#171573](https://github.com/openclaw/openclaw/pull/171573) Thanks [@steipete](https://github.com/steipete), [@boeingchoco](https://github.com/boeingchoco).
- Manual compaction works with a small session token cap when the model has a larger native context window. [#172457](https://github.com/openclaw/openclaw/pull/172457) Thanks [@steipete](https://github.com/steipete).
- Long technical replies avoid repeated full-answer scans merely for mentioning tools or functions, reducing unnecessary streaming work. [#172631](https://github.com/openclaw/openclaw/pull/172631) Thanks [@JasonBuildAI](https://github.com/JasonBuildAI), [@steipete](https://github.com/steipete).
- Affected OpenAI live replies no longer repeat their opening because streamed snapshots share mutable text; intentional repetition is preserved. [#172653](https://github.com/openclaw/openclaw/pull/172653) Thanks [@Richard355168](https://github.com/Richard355168), [@steipete](https://github.com/steipete), [@Gavin-ifjc](https://github.com/Gavin-ifjc), [@Lamer217](https://github.com/Lamer217).
- After a restart interrupts a quiet subagent, an affected parent can get a turn to reconcile unfinished work; this does not automatically relaunch the child. [#175278](https://github.com/openclaw/openclaw/pull/175278) Thanks [@RomneyDa](https://github.com/RomneyDa).

</details>

## Memory and learning

Memory search recognizes more accented and Korean spellings and keeps keyword search available through more local embedding failures. Indexing also follows provider-setting changes and plugin reloads more consistently.

<details class="release-source-toggle">
<summary>Memory search, indexing, and embeddings</summary>

- Record memory-forget requests when a reused worker has stale database information [8f7e75a](https://github.com/openclaw/openclaw/commit/8f7e75a6929ee7d6cf6f80de7fd13db2164061e0).
- Agents retain readable memory and profile files when workspace directory listing fails. [#107921](https://github.com/openclaw/openclaw/pull/107921) [Docs](https://docs.openclaw.ai/concepts/agent-workspace) · Thanks [@tzy-17](https://github.com/tzy-17), [@altaywtf](https://github.com/altaywtf).
- Post-compaction context estimates include the normal prompt and tool definitions. [#141341](https://github.com/openclaw/openclaw/pull/141341) [Docs](https://docs.openclaw.ai/concepts/compaction) · Thanks [@ooiuuii](https://github.com/ooiuuii), [@obviyus](https://github.com/obviyus).
- Skill Workshop reviews and other hidden helpers skip unnecessary failed Active Memory lookups. [#143054](https://github.com/openclaw/openclaw/pull/143054) [Docs](https://docs.openclaw.ai/concepts/active-memory/how-it-works) · Thanks [@RileyJJY](https://github.com/RileyJJY), [@steipete](https://github.com/steipete), [@syfvb](https://github.com/syfvb), [@diegomarino](https://github.com/diegomarino).
- Session documentation clarifies that completed manual and automatic compactions share one counter. [#149719](https://github.com/openclaw/openclaw/pull/149719) [Docs](https://docs.openclaw.ai/reference/session-management-compaction/schema) · Thanks [@harjothkhara](https://github.com/harjothkhara), [@ingenuity2k](https://github.com/ingenuity2k), [@obviyus](https://github.com/obviyus).
- Memory search finds visually identical accented and Korean words across composed and decomposed spellings. [#150968](https://github.com/openclaw/openclaw/pull/150968) [Docs](https://docs.openclaw.ai/concepts/memory-search) · Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@steipete](https://github.com/steipete), [@Alix-007](https://github.com/Alix-007).
- Corrected embedding-provider settings refresh Memory Core search without restarting the Gateway or rebuilding indexes. [#151263](https://github.com/openclaw/openclaw/pull/151263) [Docs](https://docs.openclaw.ai/gateway/configuration/hot-reload) · Thanks [@ruel225](https://github.com/ruel225), [@steipete](https://github.com/steipete), [@Mirksen](https://github.com/Mirksen).
- Keyword memory search remains available during local embedding failures without falsely demanding an index rebuild. [#152210](https://github.com/openclaw/openclaw/pull/152210) [Docs](https://docs.openclaw.ai/concepts/memory-search) · Thanks [@synthalorian](https://github.com/synthalorian), [@steipete](https://github.com/steipete), [@clanksy-code](https://github.com/clanksy-code).
- Memory searches keep their search-time allowance while managed Ollama or LM Studio embeddings start. [#156483](https://github.com/openclaw/openclaw/pull/156483) [Docs](https://docs.openclaw.ai/gateway/local-model-services) · Thanks [@wangmiao0668000666](https://github.com/wangmiao0668000666), [@obviyus](https://github.com/obviyus).
- Memory searches through Tool Search accept their existing score and result-limit aliases. [#158632](https://github.com/openclaw/openclaw/pull/158632) Thanks [@masatohoshino](https://github.com/masatohoshino), [@obviyus](https://github.com/obviyus), [@he-yufeng](https://github.com/he-yufeng).
- Long conversations are summarized before helper-completion and approval-follow-up replies while preserving the selected model. [#163117](https://github.com/openclaw/openclaw/pull/163117) Thanks [@SunnyShu0925](https://github.com/SunnyShu0925), [@steipete](https://github.com/steipete), [@AXEG0](https://github.com/AXEG0), [@obviyus](https://github.com/obviyus).
- Long conversations can continue after an automatic summary timeout by keeping recent context and omitting older unsummarized details from active context. [#164246](https://github.com/openclaw/openclaw/pull/164246) [Docs](https://docs.openclaw.ai/concepts/compaction#auto-compaction) · Thanks [@obviyus](https://github.com/obviyus).
- Compaction summaries can continue while producing useful output instead of timing out solely for taking longer than one window. [#164263](https://github.com/openclaw/openclaw/pull/164263) [Docs](https://docs.openclaw.ai/gateway/config-agents/heartbeat-compaction-and-streaming) · Thanks [@obviyus](https://github.com/obviyus), [@elharonyclaw](https://github.com/elharonyclaw), [@liyangbing](https://github.com/liyangbing), [@VACInc](https://github.com/VACInc), [@wynxo](https://github.com/wynxo).
- Active Memory status separates the session toggle, trigger-recall configuration and cross-conversation memory, and logs missing-agent configuration. [#164409](https://github.com/openclaw/openclaw/pull/164409) [Docs](https://docs.openclaw.ai/concepts/active-memory/troubleshooting) · Thanks [@Ayushdevo](https://github.com/Ayushdevo), [@steipete](https://github.com/steipete), [@davideditelabs](https://github.com/davideditelabs).
- Large sessions on affected rollback-journal databases can finish memory indexing instead of repeatedly failing with database-lock errors. [#164624](https://github.com/openclaw/openclaw/pull/164624) Thanks [@triciah73](https://github.com/triciah73), [@steipete](https://github.com/steipete).
- Changing one agent memory limit preserves the other configured defaults, including the memory excerpt cap. [#164633](https://github.com/openclaw/openclaw/pull/164633) [Docs](https://docs.openclaw.ai/gateway/config-agents/workspace-and-bootstrap) · Thanks [@steipete](https://github.com/steipete).
- Equivalent Korean and Japanese spellings no longer crowd distinct memories out of limited search results. [#164660](https://github.com/openclaw/openclaw/pull/164660) [Docs](https://docs.openclaw.ai/concepts/memory-search) · Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Agents can search already-visible ACP conversation transcripts when the configured coding harness is absent from the native agent roster. [#164897](https://github.com/openclaw/openclaw/pull/164897) Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@techdou](https://github.com/techdou), [@obviyus](https://github.com/obviyus).
- Disk-budget cleanup preserves referenced conversation checkpoints whose filenames begin with two dots. [#164920](https://github.com/openclaw/openclaw/pull/164920) Thanks [@steipete](https://github.com/steipete).
- Accepted Memory indexing reuses database execution as the Gateway shuts down, preserving final writes with less repeated setup. [#164962](https://github.com/openclaw/openclaw/pull/164962) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Memory indexing avoids maintaining a redundant index. [#165075](https://github.com/openclaw/openclaw/pull/165075) [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes#memory-chunk-path-index-retirement) · Thanks [@steipete](https://github.com/steipete).
- Conversation search avoids processing unrelated sessions and discarded excerpts. [#165080](https://github.com/openclaw/openclaw/pull/165080) Thanks [@steipete](https://github.com/steipete).
- Conversation-search readiness checks reuse current indexing status instead of repeatedly scanning already-indexed large histories. [#165377](https://github.com/openclaw/openclaw/pull/165377) [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete).
- New session writes avoid repeatedly storing the full accumulated tool-result trimming metadata, reducing future transcript growth. [#165404](https://github.com/openclaw/openclaw/pull/165404) [Docs](https://docs.openclaw.ai/concepts/session-pruning) · Thanks [@steipete](https://github.com/steipete).
- Manual and automatic compaction prepare session metadata and transcript statistics through background database workers. [#165406](https://github.com/openclaw/openclaw/pull/165406) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Memory indexing uses the embedding destination instead of inheriting a recognized chat-only subscription endpoint. [#165514](https://github.com/openclaw/openclaw/pull/165514) [Docs](https://docs.openclaw.ai/reference/memory-config) · Thanks [@dhruv1220](https://github.com/dhruv1220), [@vit-pavlenko](https://github.com/vit-pavlenko), [@obviyus](https://github.com/obviyus).
- Session keyword recall and memory indexing do less database work on the Gateway thread, with faster recall in a bounded benchmark. [#165568](https://github.com/openclaw/openclaw/pull/165568) Thanks [@steipete](https://github.com/steipete).
- Memory correctly identifies cron-generated sessions even when parent links form a cycle or the cron parent was pruned. [#165601](https://github.com/openclaw/openclaw/pull/165601) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete).
- Memory index setup and rebuilding move schema checks off the Gateway thread; missing-index status avoids creating temporary stores. [#165611](https://github.com/openclaw/openclaw/pull/165611) Thanks [@steipete](https://github.com/steipete).
- Low-memory local-model setup now explains how to choose the existing embedding-only route for local memory search without replacing the chat model. [#165832](https://github.com/openclaw/openclaw/pull/165832) [Docs](https://docs.openclaw.ai/plugins/llama-cpp#set-up-only-local-embeddings) · Thanks [@obviyus](https://github.com/obviyus), [@NovaUnboundAi](https://github.com/NovaUnboundAi).
- Conversation search no longer asks users to wait for indexing when messages are already indexed and only database cleanup invalidated the search snapshot. [#165879](https://github.com/openclaw/openclaw/pull/165879) Thanks [@steipete](https://github.com/steipete).
- Memory architecture documentation gives the existing automatic recall threshold correctly. [#166079](https://github.com/openclaw/openclaw/pull/166079) [Docs](https://docs.openclaw.ai/concepts/memory-architecture) · Thanks [@n0mad-ai](https://github.com/n0mad-ai), [@obviyus](https://github.com/obviyus).
- Tool-loop history refills leave room for system instructions and compaction, reducing overflow interruptions in long conversations. [#166120](https://github.com/openclaw/openclaw/pull/166120) Thanks [@ruel225](https://github.com/ruel225), [@steipete](https://github.com/steipete), [@igs-rogenlo](https://github.com/igs-rogenlo).
- Manual /compact lets an active answer finish for up to 60 seconds and explains when an interrupted request needs resending. [#166163](https://github.com/openclaw/openclaw/pull/166163) [Docs](https://docs.openclaw.ai/concepts/compaction) · Thanks [@holny](https://github.com/holny), [@steipete](https://github.com/steipete), [@alexph-dev](https://github.com/alexph-dev).
- Wiki searches stop on turn cancellation or a 30-second deadline and report an explicit error. [#166329](https://github.com/openclaw/openclaw/pull/166329) [Docs](https://docs.openclaw.ai/plugins/memory-wiki) · Thanks [@obviyus](https://github.com/obviyus), [@etzelm](https://github.com/etzelm).
- Multi-word Wiki searches avoid unrelated page reads when matching metadata supplies enough results. [#166355](https://github.com/openclaw/openclaw/pull/166355) Thanks [@obviyus](https://github.com/obviyus), [@etzelm](https://github.com/etzelm).
- Scheduled jobs reusing a chat stop cutting existing subagents off from memory. [#166417](https://github.com/openclaw/openclaw/pull/166417) Thanks [@jalehman](https://github.com/jalehman).
- Long agent turns keep memory tools available during unrelated session activity and ordinary metadata updates. [#166419](https://github.com/openclaw/openclaw/pull/166419) Thanks [@jalehman](https://github.com/jalehman).
- Gateway warnings explain why a child lost memory after a parent reset and how to respawn it. [#166422](https://github.com/openclaw/openclaw/pull/166422) [Docs](https://docs.openclaw.ai/tools/subagents/nesting) · Thanks [@jalehman](https://github.com/jalehman).
- Long conversations can summarize and continue through a configured healthy fallback while the primary model is cooling down. [#166459](https://github.com/openclaw/openclaw/pull/166459) Thanks [@steipete](https://github.com/steipete), [@hawkit](https://github.com/hawkit).
- Keeps post-compaction memory indexing from being canceled before it starts and reduces repeated database reads during chat recovery. [#166587](https://github.com/openclaw/openclaw/pull/166587) Thanks [@steipete](https://github.com/steipete).
- Prevents automatic memory-saving turns from regaining unrelated tools and changing project files. [#166650](https://github.com/openclaw/openclaw/pull/166650) Thanks [@jlapenna](https://github.com/jlapenna), [@steipete](https://github.com/steipete).
- Memory tools can continue through routine session bookkeeping without transient access errors, while resets still revoke old access. [#166758](https://github.com/openclaw/openclaw/pull/166758) Thanks [@jalehman](https://github.com/jalehman).
- Memory preparation repeats fewer eligibility checks, and selected saved skill resources can prepare away from the Gateway thread. [#167254](https://github.com/openclaw/openclaw/pull/167254) Thanks [@steipete](https://github.com/steipete), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- The System sessions filter now hides internal Active Memory search rows while keeping the requesting conversation visible. [#167357](https://github.com/openclaw/openclaw/pull/167357) Thanks [@obviyus](https://github.com/obviyus), [@tre1d](https://github.com/tre1d).
- Compaction references explain that a summary timeout may remove older unsummarized facts from model context. [#167640](https://github.com/openclaw/openclaw/pull/167640) [Docs](https://docs.openclaw.ai/concepts/compaction#auto-compaction) · Thanks [@obviyus](https://github.com/obviyus).
- Background memory indexing uses the current embedding provider after plugin reloads. [#167679](https://github.com/openclaw/openclaw/pull/167679) Thanks [@steipete](https://github.com/steipete), [@service-cyber](https://github.com/service-cyber), [@jonathanlindsay](https://github.com/jonathanlindsay), [@obviyus](https://github.com/obviyus), [@aoclaw-glitch](https://github.com/aoclaw-glitch), [@holgergruenhagen](https://github.com/holgergruenhagen), [@alfred429](https://github.com/alfred429), [@ekinnee](https://github.com/ekinnee), [@kringsc](https://github.com/kringsc).
- Historical dreaming sessions clean up after the selected agent finishes startup preparation, avoiding misleading warnings. [#167722](https://github.com/openclaw/openclaw/pull/167722) [Docs](https://docs.openclaw.ai/concepts/dreaming) · Thanks [@steipete](https://github.com/steipete).
- Scheduled memory consolidation and accepted dream diary writes continue across plugin reloads. [#167724](https://github.com/openclaw/openclaw/pull/167724) [Docs](https://docs.openclaw.ai/concepts/dreaming) · Thanks [@steipete](https://github.com/steipete).
- New memory files remain searchable after plugin or embedding-provider reloads, and obsolete watchers stop. [#167756](https://github.com/openclaw/openclaw/pull/167756) [Docs](https://docs.openclaw.ai/concepts/memory-builtin) · Thanks [@steipete](https://github.com/steipete).
- Conversation compaction can reconcile recent corrections and completed checks into the main handoff instead of retaining stale current decisions. [#167757](https://github.com/openclaw/openclaw/pull/167757) [Docs](https://docs.openclaw.ai/reference/session-management-compaction/compaction) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Slow embedding requests can finish within their existing budget, while deep memory checks stop within a bounded diagnostic attempt. [#167891](https://github.com/openclaw/openclaw/pull/167891) [Docs](https://docs.openclaw.ai/concepts/memory-search) · Thanks [@steipete](https://github.com/steipete), [@holny](https://github.com/holny), [@fonoempresa](https://github.com/fonoempresa), [@KarbonXX](https://github.com/KarbonXX).
- Memory Wiki status reuses a valid cache compiled by another process instead of rebuilding an unchanged vault. [#167929](https://github.com/openclaw/openclaw/pull/167929) [Docs](https://docs.openclaw.ai/plugins/memory-wiki) · Thanks [@obviyus](https://github.com/obviyus), [@etzelm](https://github.com/etzelm).
- Memory indexing resumes after crash or upgrade preparation without needing a search to wake it, and dreaming cleanup waits for readiness. [#167970](https://github.com/openclaw/openclaw/pull/167970) [Docs](https://docs.openclaw.ai/concepts/dreaming) · [Docs](https://docs.openclaw.ai/concepts/memory-builtin) · Thanks [@steipete](https://github.com/steipete).
- Slow models can finish Dream Diary entries using the existing agent timeout instead of stopping after one minute. [#167984](https://github.com/openclaw/openclaw/pull/167984) [Docs](https://docs.openclaw.ai/concepts/dreaming) · Thanks [@steipete](https://github.com/steipete), [@woshicby](https://github.com/woshicby), [@pfrederiksen](https://github.com/pfrederiksen), [@paterskip](https://github.com/paterskip), [@Kaspnov](https://github.com/Kaspnov), [@SWDadmin](https://github.com/SWDadmin).
- Local memory indexing uses less server memory and accepts ordinary chunks with custom and older embedding models. [#168020](https://github.com/openclaw/openclaw/pull/168020) [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@steipete](https://github.com/steipete), [@frankhli843](https://github.com/frankhli843), [@spunzon](https://github.com/spunzon), [@Deregtx](https://github.com/Deregtx), [@jj5638521](https://github.com/jj5638521), [@Nehanth](https://github.com/Nehanth).
- Memory indexing explains invalid embedding responses and offers content-free shape diagnostics for remote services. [#168035](https://github.com/openclaw/openclaw/pull/168035) [Docs](https://docs.openclaw.ai/cli/memory) · Thanks [@steipete](https://github.com/steipete), [@jzmudzinski](https://github.com/jzmudzinski).
- EmbeddingGemma gets required query and document formatting, with a one-time rebuild of older vectors; remove any previous manual prefix workaround. [#168058](https://github.com/openclaw/openclaw/pull/168058) [Docs](https://docs.openclaw.ai/concepts/memory-search) · [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@steipete](https://github.com/steipete), [@polley-mister](https://github.com/polley-mister), [@jared-rebel](https://github.com/jared-rebel), [@ndakota79](https://github.com/ndakota79), [@h6y3](https://github.com/h6y3).
- Daily memory-note saves reject copied blocks already on disk and can retry with only new facts. [#168123](https://github.com/openclaw/openclaw/pull/168123) [Docs](https://docs.openclaw.ai/concepts/memory) · Thanks [@steipete](https://github.com/steipete), [@bit-777](https://github.com/bit-777), [@touraround](https://github.com/touraround).
- Keeps completed exchanges in durable conversation context after a follow-up steers a running reply. [#168394](https://github.com/openclaw/openclaw/pull/168394) [Docs](https://docs.openclaw.ai/concepts/context-engine) · Thanks [@steipete](https://github.com/steipete), [@robertoronderosjr](https://github.com/robertoronderosjr).
- Retains configured workspace rules during compaction even when the Gateway starts elsewhere. [#168446](https://github.com/openclaw/openclaw/pull/168446) [Docs](https://docs.openclaw.ai/gateway/config-agents/heartbeat-compaction-and-streaming) · Thanks [@steipete](https://github.com/steipete), [@jakeaadams](https://github.com/jakeaadams).
- Doctor preserves original memory files when invalid UTF-8 prevents a safe merge. [#169029](https://github.com/openclaw/openclaw/pull/169029) [Docs](https://docs.openclaw.ai/gateway/doctor/workspace-and-dreams) · Thanks [@steipete](https://github.com/steipete), [@wangmiao0668000666](https://github.com/wangmiao0668000666).
- Memory search and Forget workers retain less memory while preserving their existing indexing and selection behavior. [#172392](https://github.com/openclaw/openclaw/pull/172392) Thanks [@steipete](https://github.com/steipete), [@RomneyDa](https://github.com/RomneyDa).
- Memory indexes open when first needed instead of all at Gateway startup; populated indexes may refresh asynchronously, so the first search may precede the latest edits. [#174718](https://github.com/openclaw/openclaw/pull/174718) [Docs](https://docs.openclaw.ai/concepts/memory-builtin) · Thanks [@RomneyDa](https://github.com/RomneyDa).

</details>

## Models and local runtimes

Model selection and sign-in recover through more credential and connection changes, and local runtimes get setup and tool-use fixes. Google and Vertex add Gemini 4 Argon, while Google also adds Gemini 3.8 Flash.

Rerunning Google API-key setup chooses Argon as the primary model, so check that choice if you want to keep another default.

<details class="release-source-toggle">
<summary>Model connections, reasoning controls, and local runtimes</summary>

- Supporting worker-inference integration uses explicitly provisioned model endpoints while Gateway permission checks still govern each turn. [80d27bd](https://github.com/openclaw/openclaw/commit/80d27bdf9111d1aa2d5c1334432d099a6dd4a4f7)
- Supporting sign-in integration makes account-specific models available to catalog workers already running at first login. [811d442](https://github.com/openclaw/openclaw/commit/811d442afa2c1103ed10f33f3b64fb1afa7675f8) [Docs](https://docs.openclaw.ai/auth-credential-semantics)
- Overlapping model or credential changes avoid a misleading Gateway restart requirement. [ad332df](https://github.com/openclaw/openclaw/commit/ad332df677b4897afb22ae6af2fd68f45e35c350)
- Removing provider credentials or logging out avoids unnecessary Gateway restart recovery. [b755f03](https://github.com/openclaw/openclaw/commit/b755f03cd5a45596e55a4a90a54ec372a3a51074)
- Related model-discovery integration refreshes account-specific choices after first login without restarting existing discovery workers. [bbdc68b](https://github.com/openclaw/openclaw/commit/bbdc68b94ccf9baa2ac007964bc7db2d1541f8f3)
- OpenAI and Azure Responses turns avoid oversized-output-budget errors by using the model's declared limit. [#128282](https://github.com/openclaw/openclaw/pull/128282) Thanks [@parker-fawcett](https://github.com/parker-fawcett), [@obviyus](https://github.com/obviyus), [@steipete](https://github.com/steipete).
- Together model selections using the togetherai prefix resolve through the existing provider. [#144946](https://github.com/openclaw/openclaw/pull/144946) [Docs](https://docs.openclaw.ai/providers/together) · Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- StepFun and Step Plan model selections accept their models.dev provider names. [#144951](https://github.com/openclaw/openclaw/pull/144951) [Docs](https://docs.openclaw.ai/providers/stepfun) · Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Kilo-prefixed model selections resolve through the Kilocode plugin. [#144960](https://github.com/openclaw/openclaw/pull/144960) [Docs](https://docs.openclaw.ai/providers/kilocode) · Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Repeated usage reports no longer keep a stalled Chat Completions request waiting indefinitely. [#145850](https://github.com/openclaw/openclaw/pull/145850) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · Thanks [@RileyJJY](https://github.com/RileyJJY), [@steipete](https://github.com/steipete), [@elharonyclaw](https://github.com/elharonyclaw), [@anyech](https://github.com/anyech).
- Reasoning effort controls remain available after a model refresh fails when previously loaded information is still usable. [#146155](https://github.com/openclaw/openclaw/pull/146155) Thanks [@ngo-a](https://github.com/ngo-a), [@obviyus](https://github.com/obviyus).
- Provider model lists stay visible when working keys use protected secret references. [#147374](https://github.com/openclaw/openclaw/pull/147374) Thanks [@pheidon](https://github.com/pheidon), [@steipete](https://github.com/steipete), [@kybrcore](https://github.com/kybrcore).
- Configured vLLM reasoning choices reach Qwen templates and DeepSeek V4 receives its expected template controls. [#150149](https://github.com/openclaw/openclaw/pull/150149) [Docs](https://docs.openclaw.ai/providers/vllm) · Thanks [@leapdragon](https://github.com/leapdragon), [@steipete](https://github.com/steipete), [@krell11](https://github.com/krell11).
- Google Vertex setup guidance explains ADC discovery, project/location settings and when a credential marker is needed. [#150593](https://github.com/openclaw/openclaw/pull/150593) [Docs](https://docs.openclaw.ai/providers/google) · [Docs](https://docs.openclaw.ai/concepts/model-providers/official-provider-plugins) · Thanks [@jayswu](https://github.com/jayswu), [@jayden](https://github.com/jayden), [@obviyus](https://github.com/obviyus), [@gadgrandez](https://github.com/gadgrandez).
- Silent replies and quiet heartbeats contribute token usage and estimated cost to monitoring while staying silent. [#152396](https://github.com/openclaw/openclaw/pull/152396) Thanks [@ly85206559](https://github.com/ly85206559), [@MutenCath](https://github.com/MutenCath), [@wangmiao0668000666](https://github.com/wangmiao0668000666).
- Recognized provider keepalives prevent premature idle failures on managed model streams. [#152705](https://github.com/openclaw/openclaw/pull/152705) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · Thanks [@ZengWen-DT](https://github.com/ZengWen-DT), [@steipete](https://github.com/steipete), [@alfredjbclaw](https://github.com/alfredjbclaw).
- Claude CLI receives registered OpenClaw tool names and discovery guidance to avoid failed calls and missed tool-only replies. [#153032](https://github.com/openclaw/openclaw/pull/153032) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · [Docs](https://docs.openclaw.ai/channels/groups) · Thanks [@kiranvk-2011](https://github.com/kiranvk-2011), [@RomneyDa](https://github.com/RomneyDa), [@lakemike](https://github.com/lakemike), [@philknows](https://github.com/philknows), [@destinedenergy](https://github.com/destinedenergy), [@wbumgardner-max](https://github.com/wbumgardner-max).
- Local chat and embeddings can restore a missing executable from the current managed llama.cpp installation. [#153523](https://github.com/openclaw/openclaw/pull/153523) [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@samuelreyes982](https://github.com/samuelreyes982), [@steipete](https://github.com/steipete), [@dh-js](https://github.com/dh-js).
- Long Claude CLI turns can deliver their final report when repeated streaming wrappers previously exhausted output limits. [#153545](https://github.com/openclaw/openclaw/pull/153545) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@zhangguiping-xydt](https://github.com/zhangguiping-xydt), [@methylester](https://github.com/methylester), [@obviyus](https://github.com/obviyus), [@VACInc](https://github.com/VACInc), [@aaajiao](https://github.com/aaajiao), [@telbus](https://github.com/telbus), [@aoclaw-glitch](https://github.com/aoclaw-glitch), [@aikohoshinoai-prog](https://github.com/aikohoshinoai-prog), [@RTapiador](https://github.com/RTapiador).
- Provider sign-in errors show recovery details immediately and offer a copy button. [#155429](https://github.com/openclaw/openclaw/pull/155429) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Codex automation app-access checks keep their request timeout when the computer clock changes. [#155855](https://github.com/openclaw/openclaw/pull/155855) Thanks [@SunnyShu0925](https://github.com/SunnyShu0925), [@altaywtf](https://github.com/altaywtf).
- Local inference errors explain reasoning-only responses and suggest lower thinking when the output budget leaves no final answer. [#156137](https://github.com/openclaw/openclaw/pull/156137) [Docs](https://docs.openclaw.ai/cli/infer) · Thanks [@taekop](https://github.com/taekop), [@obviyus](https://github.com/obviyus), [@constant1n0](https://github.com/constant1n0), [@wzg0911](https://github.com/wzg0911).
- Native Ollama tool narration no longer arrives as extra durable channel replies. [#156389](https://github.com/openclaw/openclaw/pull/156389) [Docs](https://docs.openclaw.ai/concepts/streaming#pending-text-phases) · [Docs](https://docs.openclaw.ai/providers/ollama/advanced) · Thanks [@Olli0103](https://github.com/Olli0103), [@Solvely-Colin](https://github.com/Solvely-Colin), [@steipete](https://github.com/steipete), [@noamliav](https://github.com/noamliav), [@solutionsbyvance](https://github.com/solutionsbyvance).
- Copilot execution can use accepted reported prompt capacity instead of a synthetic 128K estimate while preserving real limits and user caps. [#156636](https://github.com/openclaw/openclaw/pull/156636) [Docs](https://docs.openclaw.ai/plugins/sdk-provider-plugins/model-catalogs) · Thanks [@saju01](https://github.com/saju01), [@RomneyDa](https://github.com/RomneyDa), [@snotty](https://github.com/snotty), [@vinaycodeaxe](https://github.com/vinaycodeaxe), [@zhangguiping-xydt](https://github.com/zhangguiping-xydt), [@Yigtwxx](https://github.com/Yigtwxx).
- Gateway logs explain failed Claude Code version detection without exposing raw probe output. [#157697](https://github.com/openclaw/openclaw/pull/157697) [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@Bruce-Yii](https://github.com/Bruce-Yii), [@PashaGanson](https://github.com/PashaGanson), [@geekoagent](https://github.com/geekoagent), [@DaCal90](https://github.com/DaCal90), [@altaywtf](https://github.com/altaywtf).
- Short native Ollama plugin calls can disable hidden thinking to avoid empty results when reasoning is off. [#159380](https://github.com/openclaw/openclaw/pull/159380) [Docs](https://docs.openclaw.ai/providers/ollama/advanced) · Thanks [@YangManBOBO](https://github.com/YangManBOBO), [@steipete](https://github.com/steipete), [@hsheresd](https://github.com/hsheresd), [@sxh313](https://github.com/sxh313).
- Recognized prompt-size rejections tell users to shorten the prompt or choose a larger-limit model. [#159712](https://github.com/openclaw/openclaw/pull/159712) Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@NovaUnboundAi](https://github.com/NovaUnboundAi), [@altaywtf](https://github.com/altaywtf).
- Session and context reports retain the last verified model capacity after a qualifying turn. [#159731](https://github.com/openclaw/openclaw/pull/159731) [Docs](https://docs.openclaw.ai/concepts/context) · Thanks [@Yigtwxx](https://github.com/Yigtwxx), [@steipete](https://github.com/steipete), [@nhhc-lxr](https://github.com/nhhc-lxr), [@vinaycodeaxe](https://github.com/vinaycodeaxe).
- Recognized retired Ollama models can reach an eligible configured fallback without repeated timeout retries. [#160047](https://github.com/openclaw/openclaw/pull/160047) Thanks [@Irish-Joseph](https://github.com/Irish-Joseph), [@benjaml4](https://github.com/benjaml4), [@obviyus](https://github.com/obviyus).
- Existing MiniMax M3.1 Flash Preview controls expose five supported reasoning efforts and avoid rejected disabled-thinking requests. [#160089](https://github.com/openclaw/openclaw/pull/160089) [Docs](https://docs.openclaw.ai/providers/minimax) · [Docs](https://docs.openclaw.ai/tools/code-mode) · Thanks [@NianJiuZst](https://github.com/NianJiuZst), [@RomneyDa](https://github.com/RomneyDa), [@steipete](https://github.com/steipete), [@Takhoffman](https://github.com/Takhoffman), [@php737](https://github.com/php737), [@ns-spec](https://github.com/ns-spec), [@Hansen1018](https://github.com/Hansen1018), [@olveww-dot](https://github.com/olveww-dot).
- MiniMax OAuth sign-ins can renew expired access tokens in their issuing region. [#160459](https://github.com/openclaw/openclaw/pull/160459) [Docs](https://docs.openclaw.ai/providers/minimax) · [Docs](https://docs.openclaw.ai/plugins/sdk-provider-plugins/runtime-hooks) · Thanks [@masatohoshino](https://github.com/masatohoshino), [@RomneyDa](https://github.com/RomneyDa), [@rongtianhua](https://github.com/rongtianhua), [@mychataa](https://github.com/mychataa).
- OpenCode Go image descriptions use the selected vision model without a MissingSessionID failure. [#160604](https://github.com/openclaw/openclaw/pull/160604) Thanks [@sxh313](https://github.com/sxh313), [@obviyus](https://github.com/obviyus), [@lian-hu-agent](https://github.com/lian-hu-agent).
- Model scan help now explains that live probes replace configured fallbacks. [#161413](https://github.com/openclaw/openclaw/pull/161413) [Docs](https://docs.openclaw.ai/cli/models) · [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@ericcurtin](https://github.com/ericcurtin), [@obviyus](https://github.com/obviyus), [@Truck0ff](https://github.com/Truck0ff).
- Bedrock keeps equivalent tool lists in a stable order, removing one cause of prompt-cache misses. [#161838](https://github.com/openclaw/openclaw/pull/161838) Thanks [@ericcurtin](https://github.com/ericcurtin), [@steipete](https://github.com/steipete), [@netbr3ak](https://github.com/netbr3ak).
- Volcengine and BytePlus setup examples now match their bundled model catalogs. [#161909](https://github.com/openclaw/openclaw/pull/161909) [Docs](https://docs.openclaw.ai/concepts/model-providers/custom-providers) · Thanks [@Yigtwxx](https://github.com/Yigtwxx), [@obviyus](https://github.com/obviyus).
- Claude CLI long conversations leave automatic compaction to Claude Code, avoiding extra API-key errors and preserving its session. [#162066](https://github.com/openclaw/openclaw/pull/162066) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@rogeriochaves](https://github.com/rogeriochaves), [@llmsommelier](https://github.com/llmsommelier), [@RomneyDa](https://github.com/RomneyDa), [@ajmtrz](https://github.com/ajmtrz), [@MaShAn1027](https://github.com/MaShAn1027), [@Jeehut](https://github.com/Jeehut), [@Oldrich333](https://github.com/Oldrich333).
- Opening the model picker or sending a new message can restore a failed model catalog without restarting the Gateway. [#162901](https://github.com/openclaw/openclaw/pull/162901) Thanks [@scotthuang](https://github.com/scotthuang), [@steipete](https://github.com/steipete).
- Managed llama.cpp setup explains unsupported older macOS before downloading models and offers compatible-server or remote-provider alternatives. [#163358](https://github.com/openclaw/openclaw/pull/163358) [Docs](https://docs.openclaw.ai/gateway/local-model-services) · Thanks [@NovaUnboundAi](https://github.com/NovaUnboundAi), [@xXG0DLessXx](https://github.com/xXG0DLessXx), [@VACInc](https://github.com/VACInc).
- Opted-in workers use their own provisioned model and credentials for Gateway-authorized requests. [#163645](https://github.com/openclaw/openclaw/pull/163645) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Explicitly configured paired workers can make model requests with their own settings while the Gateway retains permission checks and chat history. [#163646](https://github.com/openclaw/openclaw/pull/163646) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/native-inference) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- TUI model choices follow the current session, and Control UI shows Direct from worker without requiring duplicate Gateway credentials for configured-default worker sessions. [#163647](https://github.com/openclaw/openclaw/pull/163647) Thanks [@RomneyDa](https://github.com/RomneyDa).
- CLI diagnostics identify whether background model calls came from titles, recaps or other helpers. [#164140](https://github.com/openclaw/openclaw/pull/164140) Thanks [@dasx](https://github.com/dasx), [@obviyus](https://github.com/obviyus).
- Authorized Claude CLI resumes retain announced subagent results so the next turn can use them. [#164175](https://github.com/openclaw/openclaw/pull/164175) [Docs](https://docs.openclaw.ai/gateway/cli-backends#history-account-boundaries) · Thanks [@etzelm](https://github.com/etzelm), [@steipete](https://github.com/steipete), [@potterdigital](https://github.com/potterdigital), [@synapse-homeroot](https://github.com/synapse-homeroot), [@cassthebandit](https://github.com/cassthebandit), [@holgergruenhagen](https://github.com/holgergruenhagen).
- Custom Bedrock provider routes load their transport and use their own configured AWS region. [#164406](https://github.com/openclaw/openclaw/pull/164406) [Docs](https://docs.openclaw.ai/providers/bedrock) · Thanks [@Ayushdevo](https://github.com/Ayushdevo), [@obviyus](https://github.com/obviyus), [@kai-ocean-kurt](https://github.com/kai-ocean-kurt).
- Fresh LM Studio discovery maps maximum reasoning to the highest advertised canonical effort regardless of option order. [#164478](https://github.com/openclaw/openclaw/pull/164478) [Docs](https://docs.openclaw.ai/providers/lmstudio) · Thanks [@ooiuuii](https://github.com/ooiuuii), [@steipete](https://github.com/steipete), [@obviyus](https://github.com/obviyus).
- Model lookups keep provider spellings separate, and Vertex uses refreshed Google Auth tokens without an extra cache delay. [#164520](https://github.com/openclaw/openclaw/pull/164520) Thanks [@steipete](https://github.com/steipete).
- Daybreak speed controls avoid unsupported tiers, and native OpenAI validation failures can recover safely or show clearer diagnostics. [#164597](https://github.com/openclaw/openclaw/pull/164597) [Docs](https://docs.openclaw.ai/providers/openai/models) · [Docs](https://docs.openclaw.ai/providers/openai/advanced#fast-mode) · [Docs](https://docs.openclaw.ai/gateway/troubleshooting/agent-replies-and-control-ui) · Thanks [@VACInc](https://github.com/VACInc), [@steipete](https://github.com/steipete).
- Copilot plugin and MCP tools continue working after the first conversation turn. [#164598](https://github.com/openclaw/openclaw/pull/164598) Thanks [@ericcurtin](https://github.com/ericcurtin), [@takyyon](https://github.com/takyyon).
- Personal model-account storage runs in background workers and accepted writes settle before Gateway shutdown. [#164630](https://github.com/openclaw/openclaw/pull/164630) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate#await-personal-model-account-operations) · Thanks [@steipete](https://github.com/steipete).
- Valid annotated OpenAI tool definitions retain strict validation, OpenRouter rejects invalid cache lifetimes, and retired trajectory sidecars no longer enter exports. [#164738](https://github.com/openclaw/openclaw/pull/164738) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · [Docs](https://docs.openclaw.ai/providers/openrouter) · [Docs](https://docs.openclaw.ai/tools/trajectory) · Thanks [@steipete](https://github.com/steipete).
- Completed Astra answers survive a silent async-tool follow-up and are not resent after streaming. [#164774](https://github.com/openclaw/openclaw/pull/164774) Thanks [@obviyus](https://github.com/obviyus).
- TypeSafe request rejections prompt the agent to correct its question instead of reporting an unreachable provider. [#164835](https://github.com/openclaw/openclaw/pull/164835) [Docs](https://docs.openclaw.ai/plugins/typesafe) · Thanks [@danhayman](https://github.com/danhayman), [@obviyus](https://github.com/obviyus).
- Kimi K3 is less likely to abandon Code Mode work because of malformed calls. [#165022](https://github.com/openclaw/openclaw/pull/165022) Thanks [@steipete](https://github.com/steipete).
- Interrupted Claude CLI replies no longer save standalone tool markup into chat history. [#165031](https://github.com/openclaw/openclaw/pull/165031) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@steipete](https://github.com/steipete), [@ndakota79](https://github.com/ndakota79).
- Model catalog refreshes no longer hold up Gateway callbacks while waiting for database writes. [#165034](https://github.com/openclaw/openclaw/pull/165034) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@steipete](https://github.com/steipete).
- Finished OpenAI Responses runs release conversation memory while keeping response reuse for follow-up turns. [#165142](https://github.com/openclaw/openclaw/pull/165142) Thanks [@steipete](https://github.com/steipete).
- Longer Code Mode tasks continue when providers reuse tool-call IDs; rejected reserved node commands give clearer tool guidance. [#165210](https://github.com/openclaw/openclaw/pull/165210) [Docs](https://docs.openclaw.ai/reference/transcript-hygiene) · Thanks [@steipete](https://github.com/steipete).
- Repeated provider call IDs no longer cause false duplicate conflicts in later Code Mode, computer-use and mobile UI steps. [#165212](https://github.com/openclaw/openclaw/pull/165212) [Docs](https://docs.openclaw.ai/tools/code-mode/internals) · Thanks [@steipete](https://github.com/steipete).
- CLI-backed runs preserve their original failure through cleanup even when the rejection value is empty, null, zero or false. [#165288](https://github.com/openclaw/openclaw/pull/165288) Thanks [@steipete](https://github.com/steipete).
- Providers reusing tool IDs no longer cause false duplicate publications, missing tool-authored replies or overwritten client tool calls. [#165297](https://github.com/openclaw/openclaw/pull/165297) Thanks [@steipete](https://github.com/steipete).
- CLI-backed agents keep Gateway tools available on later turns after the first turn ends. [#165428](https://github.com/openclaw/openclaw/pull/165428) Thanks [@nano-richtera](https://github.com/nano-richtera), [@steipete](https://github.com/steipete).
- Later CLI turns use their own permissions so session, history, and admin tools remain available after the connection's starting task ends. [#165432](https://github.com/openclaw/openclaw/pull/165432) Thanks [@Oldrich333](https://github.com/Oldrich333), [@Leit-motif](https://github.com/Leit-motif), [@steipete](https://github.com/steipete), [@XX441](https://github.com/XX441), [@aaajiao](https://github.com/aaajiao), [@alexph-dev](https://github.com/alexph-dev), [@Claynetic](https://github.com/Claynetic), [@N4DH](https://github.com/N4DH), [@Jeehut](https://github.com/Jeehut), [@S1gv4rd](https://github.com/S1gv4rd), [@arifarai](https://github.com/arifarai), [@davidevelyn](https://github.com/davidevelyn), [@marl0n](https://github.com/marl0n), [@Mydudeclaps](https://github.com/Mydudeclaps).
- A stopped Codex chat can take a follow-up without waiting for other active chats to finish. [#165487](https://github.com/openclaw/openclaw/pull/165487) [Docs](https://docs.openclaw.ai/plugins/codex-harness/runtime-behavior) · Thanks [@steipete](https://github.com/steipete).
- Codex provider failures after tool work show their cause and recovery advice instead of appearing as a stopped turn. [#165488](https://github.com/openclaw/openclaw/pull/165488) [Docs](https://docs.openclaw.ai/plugins/codex-harness-runtime/replies) · Thanks [@steipete](https://github.com/steipete).
- Local conversation-save conflicts stop without repeating model requests or switching accounts and models. [#165490](https://github.com/openclaw/openclaw/pull/165490) [Docs](https://docs.openclaw.ai/concepts/model-failover) · Thanks [@steipete](https://github.com/steipete).
- Ordinary Codex threads are guided to call tools they already have without an extra discovery step. [#165508](https://github.com/openclaw/openclaw/pull/165508) [Docs](https://docs.openclaw.ai/plugins/codex-harness) · Thanks [@mbelinky](https://github.com/mbelinky).
- Claude CLI replies finish after a background agent runs Bash instead of waiting for timeout and potentially repeating work through fallback. [#165596](https://github.com/openclaw/openclaw/pull/165596) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@adele-with-a-b](https://github.com/adele-with-a-b), [@steipete](https://github.com/steipete).
- Gateway-relayed realtime voice can connect to a complete custom compatible endpoint while keeping API keys on the Gateway. [#165632](https://github.com/openclaw/openclaw/pull/165632) [Docs](https://docs.openclaw.ai/providers/openai/voice-and-speech) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson), [@starship863](https://github.com/starship863), [@wangyan411303](https://github.com/wangyan411303).
- Saving credentials causes fewer Gateway pauses on larger multiagent setups. [#165644](https://github.com/openclaw/openclaw/pull/165644) [Docs](https://docs.openclaw.ai/auth-credential-semantics) · Thanks [@steipete](https://github.com/steipete).
- Personal OAuth refresh keeps credential persistence off the Gateway thread while preserving account selection and safe shutdown. [#165658](https://github.com/openclaw/openclaw/pull/165658) Thanks [@steipete](https://github.com/steipete).
- Large model lists need less repeated Gateway work when clients request them again. [#165708](https://github.com/openclaw/openclaw/pull/165708) Thanks [@steipete](https://github.com/steipete).
- Codex-backed chats exclude the bundled visualization instructions that can produce unsupported raw markers, while keeping OpenClaw widgets. [#165728](https://github.com/openclaw/openclaw/pull/165728) [Docs](https://docs.openclaw.ai/plugins/codex-native-plugins) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Claude CLI failures show the process exit reason and redacted diagnostics instead of a misleading broken-pipe error. [#165769](https://github.com/openclaw/openclaw/pull/165769) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@steipete](https://github.com/steipete).
- Gemini and Vertex AI responses that disconnect inside a streamed event can use existing automatic retry and recovery instead of ending with partial text. [#165870](https://github.com/openclaw/openclaw/pull/165870) [Docs](https://docs.openclaw.ai/concepts/retry) · Thanks [@ericcurtin](https://github.com/ericcurtin), [@masatohoshino](https://github.com/masatohoshino).
- Large Codex conversation histories take less local work to page and filter after activity, especially when matching titles are readily available. [#165911](https://github.com/openclaw/openclaw/pull/165911) [Docs](https://docs.openclaw.ai/plugins/codex-harness) · Thanks [@steipete](https://github.com/steipete).
- Worker-local inference setup errors identify what to fix and which machine owns the configuration. [#165960](https://github.com/openclaw/openclaw/pull/165960) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/native-inference#troubleshooting) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Codex stays selectable after startup for eligible official OpenAI Responses API-key routes. [#165979](https://github.com/openclaw/openclaw/pull/165979) [Docs](https://docs.openclaw.ai/providers/openai/runtimes) · Thanks [@steipete](https://github.com/steipete).
- Empty model-stream keepalives no longer postpone normal timeout retry and fallback until the whole turn expires. [#165983](https://github.com/openclaw/openclaw/pull/165983) Thanks [@steipete](https://github.com/steipete), [@Irish-Joseph](https://github.com/Irish-Joseph), [@cestercian](https://github.com/cestercian), [@rmyers64](https://github.com/rmyers64), [@obviyus](https://github.com/obviyus).
- Ultrafast remains selectable after OpenAI serves a slower tier, with temporary feedback explaining the mismatch. [#165990](https://github.com/openclaw/openclaw/pull/165990) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@steipete](https://github.com/steipete).
- Status and session reports follow discovered model and runtime context limits and show unknown capacity explicitly. [#165991](https://github.com/openclaw/openclaw/pull/165991) [Docs](https://docs.openclaw.ai/cli/sessions) · [Docs](https://docs.openclaw.ai/concepts/context) · Thanks [@snotty](https://github.com/snotty), [@steipete](https://github.com/steipete).
- Codex session-catalog decoding uses less worker memory. [#166007](https://github.com/openclaw/openclaw/pull/166007) Thanks [@steipete](https://github.com/steipete).
- CLI-backed turns can recover once when a prior reply updates saved history during preparation. [#166009](https://github.com/openclaw/openclaw/pull/166009) Thanks [@Oldrich333](https://github.com/Oldrich333), [@steipete](https://github.com/steipete).
- Unrelated session writes no longer abort valid Codex turns through a state-read race. [#166010](https://github.com/openclaw/openclaw/pull/166010) Thanks [@steipete](https://github.com/steipete).
- Saved-session model pickers respond faster and show recovered native runtime choices again. [#166037](https://github.com/openclaw/openclaw/pull/166037) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@steipete](https://github.com/steipete).
- Compatible Codex choices remain selectable after background agent database recovery. [#166081](https://github.com/openclaw/openclaw/pull/166081) Thanks [@steipete](https://github.com/steipete).
- Compatible providers that omit token usage can use approximate context estimates for active sessions and compaction. [#166151](https://github.com/openclaw/openclaw/pull/166151) [Docs](https://docs.openclaw.ai/gateway/config-tools/custom-providers) · Thanks [@fede-kamel](https://github.com/fede-kamel), [@steipete](https://github.com/steipete), [@DigitalCharon](https://github.com/DigitalCharon).
- GPT-6 Astra receives the existing instructions for carrying out tasks and reporting results in OpenClaw-assembled prompts. [#166152](https://github.com/openclaw/openclaw/pull/166152) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@obviyus](https://github.com/obviyus).
- Claude CLI plugin completions, including Memory Dreaming, honor the configured eligible account order. [#166173](https://github.com/openclaw/openclaw/pull/166173) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@steipete](https://github.com/steipete), [@Fealves0](https://github.com/Fealves0).
- Affected official OpenAI API-key tool turns retain reasoning by using the existing Responses transport. [#166182](https://github.com/openclaw/openclaw/pull/166182) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@obviyus](https://github.com/obviyus), [@astutoai](https://github.com/astutoai).
- Claude Code login changes become available in model lists without restarting the Gateway. [#166305](https://github.com/openclaw/openclaw/pull/166305) [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@obviyus](https://github.com/obviyus).
- Claude CLI models stop appearing twice when both entries represent the same configured route. [#166311](https://github.com/openclaw/openclaw/pull/166311) [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@obviyus](https://github.com/obviyus).
- Claude Code setup guidance explains primary-runtime use and canonical model configuration. [#166319](https://github.com/openclaw/openclaw/pull/166319) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · [Docs](https://docs.openclaw.ai/tools/acp-agents) · [Docs](https://docs.openclaw.ai/plugins/cli-backend-plugins) · Thanks [@obviyus](https://github.com/obviyus).
- Configured models stay visible with sign-in guidance when their authentication is missing. [#166338](https://github.com/openclaw/openclaw/pull/166338) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@obviyus](https://github.com/obviyus).
- Standalone refreshed model lists recognize configured Claude models with a valid Claude Code login. [#166361](https://github.com/openclaw/openclaw/pull/166361) Thanks [@obviyus](https://github.com/obviyus), [@hippoley](https://github.com/hippoley).
- Background CLI sign-in checks avoid rebuilding the prepared model catalog while preserving fresh login status and saved-profile authority. [#166434](https://github.com/openclaw/openclaw/pull/166434) [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@steipete](https://github.com/steipete).
- Preserves a valid native CLI conversation after a resumed reply sends progress and is stopped or times out. [#166658](https://github.com/openclaw/openclaw/pull/166658) Thanks [@VACInc](https://github.com/VACInc).
- Accepts external ACP agent model selections in config commands while retaining native fallback and inherited-default validation. [#166662](https://github.com/openclaw/openclaw/pull/166662) [Docs](https://docs.openclaw.ai/tools/acp-agents/bindings) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@ftlc-ian](https://github.com/ftlc-ian), [@obviyus](https://github.com/obviyus).
- Allows ACP reset-target lookup to use the default account when optional channel configuration is absent. [#166685](https://github.com/openclaw/openclaw/pull/166685) Thanks [@steipete](https://github.com/steipete).
- Prevents closed Codex threads with background terminals from blocking subsequent messages, and makes stuck startup waits cancellable and bounded. [#166693](https://github.com/openclaw/openclaw/pull/166693) Thanks [@jalehman](https://github.com/jalehman).
- Restores model-catalog generation when the upstream metadata feed exceeds its previous download limit. [#166699](https://github.com/openclaw/openclaw/pull/166699) Thanks [@obviyus](https://github.com/obviyus).
- Honors configured OpenRouter thinking levels and model defaults on the first turn of a fresh process. [#166705](https://github.com/openclaw/openclaw/pull/166705) Thanks [@obviyus](https://github.com/obviyus).
- Supporting Haiku 5.5 API and Claude CLI behavior covers thinking, conversation replay, and pricing for model access already available in 2026.10.1. [#166706](https://github.com/openclaw/openclaw/pull/166706) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Catalog recommendations are centrally curated; plugin manifest recommendation lists are now ignored. [#166737](https://github.com/openclaw/openclaw/pull/166737) [Docs](https://docs.openclaw.ai/concepts/recommended-models) · Thanks [@obviyus](https://github.com/obviyus).
- Codex forks and catalog continuations preserve native conversation links, and native web search respects persistent and temporary tool permissions. [#166787](https://github.com/openclaw/openclaw/pull/166787) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Reopening the same model picker preserves expanded provider groups while clearing search text. [#166821](https://github.com/openclaw/openclaw/pull/166821) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@patrick-erichsen](https://github.com/patrick-erichsen).
- Long ChatGPT responses can continue beyond 16 MiB of total streaming traffic. [#166853](https://github.com/openclaw/openclaw/pull/166853) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@Jackten](https://github.com/Jackten), [@steipete](https://github.com/steipete).
- Codex overload retries retain the current request and completed work instead of answering an older task. [#166868](https://github.com/openclaw/openclaw/pull/166868) [Docs](https://docs.openclaw.ai/plugins/sdk-agent-harness/sessions-and-results) · Thanks [@steipete](https://github.com/steipete), [@Baumus](https://github.com/Baumus).
- Astra can wait for parallel tool results before completing its answer, preserving the requested full response. [#166876](https://github.com/openclaw/openclaw/pull/166876) [Docs](https://docs.openclaw.ai/providers/openai/models) · [Docs](https://docs.openclaw.ai/tools/subagents/tool-reference) · [Docs](https://docs.openclaw.ai/plugins/tool-plugins) · Thanks [@obviyus](https://github.com/obviyus).
- Explicit configured model choices keep the requested model when an alias collides; unsupported agent-scoped model commands explain how to correct the command. [#166983](https://github.com/openclaw/openclaw/pull/166983) [Docs](https://docs.openclaw.ai/cli/models) · Thanks [@steipete](https://github.com/steipete).
- Chats keep an explicitly selected compatible provider account through temporary credential loss and restoration. [#166985](https://github.com/openclaw/openclaw/pull/166985) [Docs](https://docs.openclaw.ai/auth-credential-semantics) · Thanks [@vincentkoc](https://github.com/vincentkoc).
- OpenAI chats can reply with affected MCP or plugin tools enabled when their input patterns use lookarounds. [#166999](https://github.com/openclaw/openclaw/pull/166999) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@scs0209](https://github.com/scs0209), [@adamjgmiller](https://github.com/adamjgmiller), [@obviyus](https://github.com/obviyus).
- Model pickers reuse the completed catalog without repeated discovery and share the same model inventory used for execution. [#167008](https://github.com/openclaw/openclaw/pull/167008) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@steipete](https://github.com/steipete).
- Known account model choices and speed tiers remain visible during a pending refresh; failed production refreshes can still lose those choices. [#167009](https://github.com/openclaw/openclaw/pull/167009) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@steipete](https://github.com/steipete).
- Stalled provider reconnects reach retries promptly instead of holding a turn for minutes. [#167013](https://github.com/openclaw/openclaw/pull/167013) Thanks [@steipete](https://github.com/steipete), [@sszyh2026](https://github.com/sszyh2026), [@Yigtwxx](https://github.com/Yigtwxx).
- Codex explains when failed history compaction prevented sending a message and tells users to start a new session and resend. [#167016](https://github.com/openclaw/openclaw/pull/167016) [Docs](https://docs.openclaw.ai/plugins/codex-harness-runtime/compaction) · Thanks [@steipete](https://github.com/steipete), [@jaikharbanda](https://github.com/jaikharbanda).
- Repeated authentication reads avoid unnecessary reader restarts when callers select the same state directory in equivalent ways. [#167024](https://github.com/openclaw/openclaw/pull/167024) Thanks [@steipete](https://github.com/steipete).
- ChatGPT subscription replies interrupted by connection expiry can reconnect and finish from saved conversation history. [#167063](https://github.com/openclaw/openclaw/pull/167063) Thanks [@steipete](https://github.com/steipete), [@jackten](https://github.com/jackten).
- Refreshing model lists from several providers overlaps independent requests to shorten waiting. [#167101](https://github.com/openclaw/openclaw/pull/167101) [Docs](https://docs.openclaw.ai/plugins/sdk-provider-plugins) · Thanks [@steipete](https://github.com/steipete).
- Changing one provider's configuration no longer hides unrelated automatically discovered models. [#167117](https://github.com/openclaw/openclaw/pull/167117) Thanks [@obviyus](https://github.com/obviyus).
- Model listing explains rejected or unavailable provider catalogs and points to recovery steps while preserving script output. [#167128](https://github.com/openclaw/openclaw/pull/167128) Thanks [@tianhaotian](https://github.com/tianhaotian), [@steipete](https://github.com/steipete), [@ClawMoew](https://github.com/ClawMoew).
- Model choices and prices stay available while a downloaded catalog finishes provider discovery before being adopted. [#167178](https://github.com/openclaw/openclaw/pull/167178) Thanks [@obviyus](https://github.com/obviyus).
- Codex shows an identical ultrafast policy warning once per stored chat instead of repeating it across turns and reconnects. [#167220](https://github.com/openclaw/openclaw/pull/167220) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Model choices recover automatically after temporary provider-discovery failures, without a manual refresh. [#167230](https://github.com/openclaw/openclaw/pull/167230) Thanks [@obviyus](https://github.com/obviyus).
- Claude CLI conversations keep their latest history when switching between channel messages and web chat. [#167241](https://github.com/openclaw/openclaw/pull/167241) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@steipete](https://github.com/steipete), [@cmatrx0](https://github.com/cmatrx0).
- Background model discovery avoids loading unnecessary native agent execution code while retaining model choices. [#167282](https://github.com/openclaw/openclaw/pull/167282) Thanks [@romneyda](https://github.com/romneyda).
- Expected caller cancellations stop appearing as provider failure warnings while timeouts and genuine failures retain warnings. [#167303](https://github.com/openclaw/openclaw/pull/167303) Thanks [@steipete](https://github.com/steipete).
- Chats using strict model templates can continue after runtime notices without clearing their history or switching providers. [#167309](https://github.com/openclaw/openclaw/pull/167309) Thanks [@jlapenna](https://github.com/jlapenna), [@steipete](https://github.com/steipete).
- Opening a personal-account model list uses published choices immediately; Refresh obtains account-specific catalog details. [#167334](https://github.com/openclaw/openclaw/pull/167334) Thanks [@steipete](https://github.com/steipete).
- Preparing selected plugin model catalogs avoids loading unrelated saved catalog payloads. [#167359](https://github.com/openclaw/openclaw/pull/167359) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Browser and terminal model pickers put current and recommended choices first, with All models and full-list search keeping other choices accessible. [#167370](https://github.com/openclaw/openclaw/pull/167370) Thanks [@obviyus](https://github.com/obviyus).
- Codex connection-loss failures remain in conversation history after partial output, reloads and reconnects, with one consistent live error. [#167383](https://github.com/openclaw/openclaw/pull/167383) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · [Docs](https://docs.openclaw.ai/plugins/codex-harness/runtime-behavior) · Thanks [@steipete](https://github.com/steipete).
- The model-discovery change that advertised the latest published Codex version is superseded by the bundled-version correction below. [#167387](https://github.com/openclaw/openclaw/pull/167387) Thanks [@obviyus](https://github.com/obviyus).
- The model picker's All models count label gains translations in 20 languages. [#167420](https://github.com/openclaw/openclaw/pull/167420)
- Hosted-only Ollama setup now uses the dedicated Ollama Cloud choice, with old local-provider cloud URLs rejected before reset. [#167433](https://github.com/openclaw/openclaw/pull/167433) [Docs](https://docs.openclaw.ai/providers/ollama-cloud) · [Docs](https://docs.openclaw.ai/providers/ollama) · Thanks [@obviyus](https://github.com/obviyus).
- Model choices appear under the right provider with clearer labels and predictable expansion. [#167438](https://github.com/openclaw/openclaw/pull/167438) Thanks [@obviyus](https://github.com/obviyus).
- xAI models appear once in the model list while existing saved selections continue to work. [#167444](https://github.com/openclaw/openclaw/pull/167444) Thanks [@obviyus](https://github.com/obviyus).
- Concurrent agent runs retain less duplicate model-catalog data. [#167454](https://github.com/openclaw/openclaw/pull/167454) Thanks [@steipete](https://github.com/steipete).
- Gateway restarts restore missing model choices through background discovery without requiring a manual Refresh. [#167458](https://github.com/openclaw/openclaw/pull/167458) Thanks [@obviyus](https://github.com/obviyus).
- Known provider models appear immediately after sign-in and remain available while the first account listing is pending or fails. [#167460](https://github.com/openclaw/openclaw/pull/167460) Thanks [@obviyus](https://github.com/obviyus).
- OpenAI and xAI discovery can show newly listed chat models without waiting for an OpenClaw catalog update. [#167462](https://github.com/openclaw/openclaw/pull/167462) [Docs](https://docs.openclaw.ai/providers/openai/models) · [Docs](https://docs.openclaw.ai/tools/web#native-openai-web-search) · [Docs](https://docs.openclaw.ai/plugins/sdk-provider-plugins/model-catalogs) · Thanks [@obviyus](https://github.com/obviyus).
- Newly pulled self-hosted Ollama chat models appear after Refresh while saved model settings stay intact. [#167463](https://github.com/openclaw/openclaw/pull/167463) [Docs](https://docs.openclaw.ai/providers/ollama/model-discovery) · Thanks [@obviyus](https://github.com/obviyus).
- Catalog updates no longer interrupt an already admitted reply or scheduled turn before its first model request. [#167492](https://github.com/openclaw/openclaw/pull/167492) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@steipete](https://github.com/steipete), [@jalehman](https://github.com/jalehman).
- ChatGPT-backed tasks can recover unfinished responses when a connection closes normally before the answer finishes. [#167512](https://github.com/openclaw/openclaw/pull/167512) [Docs](https://docs.openclaw.ai/concepts/model-failover) · Thanks [@ericcurtin](https://github.com/ericcurtin), [@obviyus](https://github.com/obviyus), [@mightyx](https://github.com/mightyx), [@aleps001](https://github.com/aleps001).
- Long image conversations preserve more reusable prompt content between image-cleanup batches. [#167613](https://github.com/openclaw/openclaw/pull/167613) [Docs](https://docs.openclaw.ai/concepts/session-pruning) · Thanks [@steipete](https://github.com/steipete).
- Managed llama.cpp setup allows healthy Metal initialization to finish instead of timing out prematurely. [#167630](https://github.com/openclaw/openclaw/pull/167630) [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@steipete](https://github.com/steipete).
- ChatGPT discovery uses OpenClaw's bundled Codex version, reversing earlier advertisement of a newer client that could expose unusable models. [#167633](https://github.com/openclaw/openclaw/pull/167633) [Docs](https://docs.openclaw.ai/providers/openai/runtimes) · Thanks [@obviyus](https://github.com/obviyus).
- Direct Anthropic discovery can admit newly listed Claude models and shape thinking requests from readable advertised capabilities. [#167658](https://github.com/openclaw/openclaw/pull/167658) [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@obviyus](https://github.com/obviyus), [@fuller-stack-dev](https://github.com/fuller-stack-dev), [@NOVA-Openclaw](https://github.com/NOVA-Openclaw).
- Eligible provider routes can reuse the original prompt prefix when skills, memory, or session instructions refresh. [#167698](https://github.com/openclaw/openclaw/pull/167698) [Docs](https://docs.openclaw.ai/concepts/system-prompt) · [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@steipete](https://github.com/steipete).
- A corrective retry after a long model response gets its recovery window measured from the retry's own start. [#167708](https://github.com/openclaw/openclaw/pull/167708) [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@steipete](https://github.com/steipete).
- Resumed Claude CLI conversations receive updated instructions and changing plugin context while retaining their history. [#167817](https://github.com/openclaw/openclaw/pull/167817) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@yu-xin-c](https://github.com/yu-xin-c), [@steipete](https://github.com/steipete), [@robburke](https://github.com/robburke).
- Refreshed model catalogs remove retired models from pickers and recommendations while retaining exact configured identifiers. [#167855](https://github.com/openclaw/openclaw/pull/167855) [Docs](https://docs.openclaw.ai/concepts/models) · Thanks [@obviyus](https://github.com/obviyus).
- Oversized proxy requests recover or report a context error instead of returning an automatically squeezed one-token answer. [#167878](https://github.com/openclaw/openclaw/pull/167878) [Docs](https://docs.openclaw.ai/gateway/local-models) · Thanks [@steipete](https://github.com/steipete), [@jacobtomlinson](https://github.com/jacobtomlinson), [@amittell](https://github.com/amittell), [@glebsergeevich](https://github.com/glebsergeevich), [@dankarization](https://github.com/dankarization).
- Gemma 4 can recover complete tool requests returned as plain text instead of showing their raw syntax. [#167886](https://github.com/openclaw/openclaw/pull/167886) [Docs](https://docs.openclaw.ai/providers/lmstudio) · Thanks [@steipete](https://github.com/steipete), [@jlapenna](https://github.com/jlapenna).
- Prompt-cache warnings compare the right session even when background reviews use the same provider. [#167890](https://github.com/openclaw/openclaw/pull/167890) [Docs](https://docs.openclaw.ai/logging) · Thanks [@steipete](https://github.com/steipete).
- Subagent completion keeps ordinary conversation guidance stable so unchanged prompts can reuse more cached input. [#167898](https://github.com/openclaw/openclaw/pull/167898) [Docs](https://docs.openclaw.ai/reference/prompt-caching) · Thanks [@steipete](https://github.com/steipete), [@Eragim](https://github.com/Eragim), [@apalmiere](https://github.com/apalmiere).
- Small-context conversations can continue after automatic compaction, and messages too large to fit receive a useful size notice. [#167900](https://github.com/openclaw/openclaw/pull/167900) [Docs](https://docs.openclaw.ai/concepts/compaction) · Thanks [@steipete](https://github.com/steipete).
- Supported macOS gateways can reclaim a precisely matched orphaned managed llama.cpp server and start an owned replacement. [#167902](https://github.com/openclaw/openclaw/pull/167902) Thanks [@steipete](https://github.com/steipete), [@TomSchuman](https://github.com/TomSchuman).
- Long conversations need less summarization work before continuing because oversized histories use a bounded sample. [#167916](https://github.com/openclaw/openclaw/pull/167916) [Docs](https://docs.openclaw.ai/concepts/compaction#how-it-works) · [Docs](https://docs.openclaw.ai/reference/session-management-compaction/compaction#summary-input-and-tool-pairing) · Thanks [@obviyus](https://github.com/obviyus), [@elharonyclaw](https://github.com/elharonyclaw), [@wynxo](https://github.com/wynxo).
- Affected Ollama Qwen models can execute commands with Tool Search enabled instead of repeatedly misreading tool names. [#167933](https://github.com/openclaw/openclaw/pull/167933) [Docs](https://docs.openclaw.ai/providers/ollama/troubleshooting) · Thanks [@steipete](https://github.com/steipete).
- Plugin-added prompt context stays with its original user turn on later requests and after reopening a conversation. [#167938](https://github.com/openclaw/openclaw/pull/167938) [Docs](https://docs.openclaw.ai/reference/prompt-caching) · [Docs](https://docs.openclaw.ai/reference/database-schemas/layout) · Thanks [@steipete](https://github.com/steipete).
- Listed Copilot models use supported request routes, and eligible newly listed Claude models receive compatible thinking settings. [#167941](https://github.com/openclaw/openclaw/pull/167941) [Docs](https://docs.openclaw.ai/providers/github-copilot) · Thanks [@obviyus](https://github.com/obviyus).
- Claude CLI choices exclude API-only models that fail when selected through the CLI. [#167942](https://github.com/openclaw/openclaw/pull/167942) Thanks [@obviyus](https://github.com/obviyus).
- Grok subscription thinking choices follow the account's advertised capabilities and send the corresponding effort. [#167949](https://github.com/openclaw/openclaw/pull/167949) [Docs](https://docs.openclaw.ai/providers/xai) · Thanks [@obviyus](https://github.com/obviyus).
- Claude CLI sign-in routes newly listed Claude IDs through Claude Code; existing sign-ins use the later update/Doctor routing migration. [#167963](https://github.com/openclaw/openclaw/pull/167963) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@obviyus](https://github.com/obviyus).
- ChatGPT-only model pickers omit pro models missing from the selected account's successful listing. [#167975](https://github.com/openclaw/openclaw/pull/167975) [Docs](https://docs.openclaw.ai/plugins/sdk-provider-plugins/model-catalogs) · Thanks [@obviyus](https://github.com/obviyus).
- NVIDIA's featured models lead its hosted recommendations, followed by remaining OpenClaw suggestions. [#167989](https://github.com/openclaw/openclaw/pull/167989) [Docs](https://docs.openclaw.ai/concepts/recommended-models#provider-featured-lists) · [Docs](https://docs.openclaw.ai/providers/nvidia) · Thanks [@obviyus](https://github.com/obviyus).
- Configuration commands explain which newly entered model was rejected and why, while keeping the current configuration intact. [#168009](https://github.com/openclaw/openclaw/pull/168009) [Docs](https://docs.openclaw.ai/cli/config) · Thanks [@steipete](https://github.com/steipete), [@azuretek](https://github.com/azuretek).
- Models offered by a ChatGPT account can run through its sign-in on the default Codex runtime even before built-in route lists catch up. [#168033](https://github.com/openclaw/openclaw/pull/168033) Thanks [@obviyus](https://github.com/obviyus).
- Refreshing LM Studio discovers newly installed models while preserving saved names and context limits. [#168039](https://github.com/openclaw/openclaw/pull/168039) [Docs](https://docs.openclaw.ai/providers/lmstudio) · Thanks [@steipete](https://github.com/steipete), [@jb-lopez](https://github.com/jb-lopez).
- LM Studio gives slow loads more time and stops with clear guidance when a required larger instance cannot load. [#168044](https://github.com/openclaw/openclaw/pull/168044) [Docs](https://docs.openclaw.ai/providers/lmstudio) · Thanks [@steipete](https://github.com/steipete).
- ClawRouter makes fewer repeated model-list requests, and Refresh fetches current models and grants. [#168050](https://github.com/openclaw/openclaw/pull/168050) [Docs](https://docs.openclaw.ai/providers/clawrouter) · Thanks [@steipete](https://github.com/steipete).
- Long Codex sessions avoid another unnecessary OpenClaw compaction after native-only compaction leaves the transcript unchanged. [#168051](https://github.com/openclaw/openclaw/pull/168051) [Docs](https://docs.openclaw.ai/concepts/compaction) · Thanks [@ruel225](https://github.com/ruel225), [@steipete](https://github.com/steipete), [@xydigitLybnnnn](https://github.com/xydigitLybnnnn), [@robertoronderosjr](https://github.com/robertoronderosjr).
- ChatGPT can recover a specific rejected continuation while retaining completed tool results instead of repeating the work. [#168055](https://github.com/openclaw/openclaw/pull/168055) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@steipete](https://github.com/steipete), [@nikosml](https://github.com/nikosml).
- Thinking selections now reach compatible custom reasoning models through OpenAI-compatible chat requests. [#168056](https://github.com/openclaw/openclaw/pull/168056) [Docs](https://docs.openclaw.ai/tools/thinking#custom-openai-compatible-endpoints) · Thanks [@steipete](https://github.com/steipete), [@j-nolan](https://github.com/j-nolan).
- Disabling streaming now works for compatible chat servers while retaining reasoning, usage and tool calls in completed replies. [#168057](https://github.com/openclaw/openclaw/pull/168057) [Docs](https://docs.openclaw.ai/providers/ollama/advanced) · Thanks [@steipete](https://github.com/steipete).
- Rerunning llama.cpp setup offers the selected model for download instead of substituting a hardware recommendation. [#168064](https://github.com/openclaw/openclaw/pull/168064) [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@steipete](https://github.com/steipete).
- Earlier Claude CLI sign-ins can repair model routing through update or doctor --fix instead of falling through to a missing API key. [#168074](https://github.com/openclaw/openclaw/pull/168074) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@obviyus](https://github.com/obviyus).
- Gemini keeps partial replies when a generation limit is reached and avoids running incomplete tool calls. [#168103](https://github.com/openclaw/openclaw/pull/168103) [Docs](https://docs.openclaw.ai/providers/google) · Thanks [@steipete](https://github.com/steipete).
- Memory-saving runs keep the original conversation when provider compaction is enabled; this release retains that fix without enabling Anthropic compaction by default. [#168164](https://github.com/openclaw/openclaw/pull/168164) [Docs](https://docs.openclaw.ai/concepts/compaction) · [Docs](https://docs.openclaw.ai/providers/openai/advanced) · [Docs](https://docs.openclaw.ai/providers/anthropic) · Thanks [@obviyus](https://github.com/obviyus).
- llama.cpp setup honors the selected model through aliases and stops visibly if it cannot save a required server credential. [#168232](https://github.com/openclaw/openclaw/pull/168232) [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@steipete](https://github.com/steipete).
- Model requests that never return response headers reach OpenClaw's timeout and recovery path instead of waiting for longer transport defaults. [#168282](https://github.com/openclaw/openclaw/pull/168282) [Docs](https://docs.openclaw.ai/concepts/model-providers/custom-providers) · Thanks [@steipete](https://github.com/steipete), [@Yigtwxx](https://github.com/Yigtwxx).
- llama-server router refresh supplies verified model limits and tool support, and agent requests use those facts instead of guessed budgets. [#168309](https://github.com/openclaw/openclaw/pull/168309) [Docs](https://docs.openclaw.ai/plugins/llama-cpp) · Thanks [@steipete](https://github.com/steipete), [@guarismo](https://github.com/guarismo).
- Claude CLI models stay in the picker after another plugin is enabled or agent settings change, without needing a manual refresh. [#168315](https://github.com/openclaw/openclaw/pull/168315) Thanks [@obviyus](https://github.com/obviyus).
- Cleans up unused Codex processes after model discovery times out while ongoing work finishes. [#168365](https://github.com/openclaw/openclaw/pull/168365) [Docs](https://docs.openclaw.ai/plugins/codex-harness-runtime/recovery) · Thanks [@steipete](https://github.com/steipete), [@609NFT](https://github.com/609NFT).
- Recovers missing endings in Codex replies when the completed answer extends the streamed text. [#168400](https://github.com/openclaw/openclaw/pull/168400) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Allows affected scheduled jobs and chats to start when the model catalog changes during startup. [#168410](https://github.com/openclaw/openclaw/pull/168410) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Avoids false sign-in errors and provider penalties caused by numbers in malformed tool-call diagnostics. [#168500](https://github.com/openclaw/openclaw/pull/168500) Thanks [@TYY-2005](https://github.com/TYY-2005), [@steipete](https://github.com/steipete), [@r3n3x](https://github.com/r3n3x).
- Sends runtime context in a supported message role to compatible and local Responses servers. [#168546](https://github.com/openclaw/openclaw/pull/168546) [Docs](https://docs.openclaw.ai/concepts/context#runtime-context-and-provider-roles) · Thanks [@steipete](https://github.com/steipete), [@flanker-stack](https://github.com/flanker-stack).
- Honors thinking levels advertised by the admitted provider catalog across chats and scheduled runs. [#168566](https://github.com/openclaw/openclaw/pull/168566) [Docs](https://docs.openclaw.ai/tools/thinking) · Thanks [@obviyus](https://github.com/obviyus).
- Discovers provider models after an API key is saved using the actual saved credential. [#168617](https://github.com/openclaw/openclaw/pull/168617) Thanks [@obviyus](https://github.com/obviyus).
- Keeps permitted native and MCP tools available after Claude CLI background commands finish. [#168670](https://github.com/openclaw/openclaw/pull/168670) [Docs](https://docs.openclaw.ai/gateway/cli-backends) · Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333).
- Keeps chat text consistent between first send and later replay when surrounding whitespace is present. [#168725](https://github.com/openclaw/openclaw/pull/168725) Thanks [@steipete](https://github.com/steipete).
- Refreshes OAuth model catalogs despite historical or empty agent databases without deleting agents or signing in again. [#168957](https://github.com/openclaw/openclaw/pull/168957) Thanks [@obviyus](https://github.com/obviyus).
- Lets model requests try working IPv6 routes when IPv4 fails. [#168973](https://github.com/openclaw/openclaw/pull/168973) [Docs](https://docs.openclaw.ai/gateway/local-models) · Thanks [@steipete](https://github.com/steipete), [@an2in](https://github.com/an2in), [@georgenaz](https://github.com/georgenaz), [@motookoyama](https://github.com/motookoyama), [@orthogonalistic](https://github.com/orthogonalistic).
- Cross-session messages keep stable model-visible text from first send through replay, preserving prompt-cache eligibility and sender context. [#169238](https://github.com/openclaw/openclaw/pull/169238) [Docs](https://docs.openclaw.ai/reference/prompt-caching) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@TourAround](https://github.com/TourAround).
- Supported ChatGPT-authenticated Codex conversations retain explicitly selected Ultrafast on resumed and follow-up turns. [#169265](https://github.com/openclaw/openclaw/pull/169265) [Docs](https://docs.openclaw.ai/tools/thinking) · Thanks [@SanderHelgesen](https://github.com/SanderHelgesen).
- OpenAI models can be selected without the Codex plugin when the existing OpenClaw runtime fallback can run them. [#169412](https://github.com/openclaw/openclaw/pull/169412) Thanks [@obviyus](https://github.com/obviyus).
- Compatible Codex follow-ups resume after failed thread preparation while native background commands continue. [#169431](https://github.com/openclaw/openclaw/pull/169431) Thanks [@jjjhenriksen](https://github.com/jjjhenriksen), [@RomneyDa](https://github.com/RomneyDa).
- Explicit cache-TTL pruning works for OpenRouter Grok and supported Gemini 2.5/3 models. [#169548](https://github.com/openclaw/openclaw/pull/169548) [Docs](https://docs.openclaw.ai/reference/prompt-caching) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@gregb100](https://github.com/gregb100).
- The next response waits for saved history to become readable after native compaction instead of failing immediately. [#169583](https://github.com/openclaw/openclaw/pull/169583) [Docs](https://docs.openclaw.ai/providers/openai/advanced) · Thanks [@obviyus](https://github.com/obviyus).
- DeepSeek-format replies hide internal tool markup and recover valid managed tool calls instead of displaying payloads. [#169728](https://github.com/openclaw/openclaw/pull/169728) [Docs](https://docs.openclaw.ai/providers/deepseek) · Thanks [@steipete](https://github.com/steipete), [@TOMUIV](https://github.com/TOMUIV).
- Personal-account quota checks and OAuth refresh stop aborting replies over harmless differences in unset stored fields. [#170065](https://github.com/openclaw/openclaw/pull/170065) Thanks [@steipete](https://github.com/steipete), [@modlethub](https://github.com/modlethub), [@Yigtwxx](https://github.com/Yigtwxx).
- Supporting Meta model controls retain Muse Wonder and max reasoning for eligible Wonder and Spark models already available in 2026.10.3. [#170232](https://github.com/openclaw/openclaw/pull/170232) [Docs](https://docs.openclaw.ai/providers/meta) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Repeated Talk questions after tool use avoid the identified Anthropic message-ordering failure while retaining changed instructions. [#171267](https://github.com/openclaw/openclaw/pull/171267) Thanks [@LiuwqGit](https://github.com/LiuwqGit), [@steipete](https://github.com/steipete), [@marleyman5000-boop](https://github.com/marleyman5000-boop).
- New Sonnet5.5 usage estimates use the corrected default cached-input price. [#171723](https://github.com/openclaw/openclaw/pull/171723) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Gemini4 Argon can be selected through Google and Vertex, with supported thinking controls and continuing tool conversations. [#171852](https://github.com/openclaw/openclaw/pull/171852) [Docs](https://docs.openclaw.ai/providers/google) · Thanks [@steipete](https://github.com/steipete).
- Google adds Gemini 3.8 Flash and updates Gemini aliases; rerunning API-key setup selects Gemini 4 Argon as the existing primary model. [#172339](https://github.com/openclaw/openclaw/pull/172339) [Docs](https://docs.openclaw.ai/providers/google) · Thanks [@steipete](https://github.com/steipete).
- CLI-backed agents avoid a connection-reuse race that could drop tool calls or message sends before they reached the Gateway. [#172980](https://github.com/openclaw/openclaw/pull/172980) Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333).
- Claude CLI conversations can deliver their first reply when startup hooks emit many events instead of stalling initialization. [#173011](https://github.com/openclaw/openclaw/pull/173011) Thanks [@ericcaiwx-star](https://github.com/ericcaiwx-star), [@steipete](https://github.com/steipete), [@sopa-gpters](https://github.com/sopa-gpters).
- OpenRouter setup stops rejecting valid keys or saved model choices because discovery and activation disagree about the model name. [#173292](https://github.com/openclaw/openclaw/pull/173292) Thanks [@chandraveshchaudhari](https://github.com/chandraveshchaudhari), [@obviyus](https://github.com/obviyus).
- Tasks can recover from the OpenAI SDK's malformed server-sent-event JSON error without requiring resubmission, while reusing recorded tool results. [#173404](https://github.com/openclaw/openclaw/pull/173404) [Docs](https://docs.openclaw.ai/concepts/retry) · Thanks [@steipete](https://github.com/steipete).
- Codex one-shot commands keep completed answers and payloads if later cleanup fails, helping automation distinguish finished work from a failed task. [#173516](https://github.com/openclaw/openclaw/pull/173516) [Docs](https://docs.openclaw.ai/cli/agent) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@Compassboot](https://github.com/Compassboot).
- Pressing Stop during an early Codex session handoff can preserve the healthy replacement process for the next turn and other sessions sharing it. [#173580](https://github.com/openclaw/openclaw/pull/173580) Thanks [@LLagoon3](https://github.com/LLagoon3), [@jalehman](https://github.com/jalehman), [@RomneyDa](https://github.com/RomneyDa).
- Google Interactions preserves multiline streaming replies and reports malformed streams instead of silently dropping content and appearing successful. [#173612](https://github.com/openclaw/openclaw/pull/173612) [Docs](https://docs.openclaw.ai/providers/google) · Thanks [@steipete](https://github.com/steipete).
- Claude CLI readiness checks recognize login credentials explicitly preserved for live CLI execution, allowing the affected child-agent admission path to proceed. [#175114](https://github.com/openclaw/openclaw/pull/175114) Thanks [@RomneyDa](https://github.com/RomneyDa).

</details>

## Channels and calls

Replies, media, progress cards, and queued follow-ups reach the right Slack, Telegram, Discord, and other conversations through more reconnects and handoffs. Phone-call tasks can carry a brief, accept instructions during the call, and return an outcome report.

The first import of an old Telegram message queue skips entries older than 24 hours, including unprocessed ones. Review anything you still need before importing.

<details class="release-source-toggle">
<summary>Channel delivery, media, follow-ups, and calls</summary>

- Tlon preserves complete link and image URLs containing balanced parentheses. [193f7e6](https://github.com/openclaw/openclaw/commit/193f7e62a22fe7f752741d2a8c65767ffbf6cd23).
- Incoming and replayed channel messages wait for their agent to be ready after startup instead of failing prematurely. [8e3c6be](https://github.com/openclaw/openclaw/commit/8e3c6beb8f658f856763e8d232e0dd82ad600a53) [Docs](https://docs.openclaw.ai/gateway/restart-recovery)
- Discord's editable preview includes the last character of a complete batch without an unnecessary wait. [9df0cd0](https://github.com/openclaw/openclaw/commit/9df0cd095766ff05864aa67aa91b627a347a4d1a).
- Feishu group subjects beginning with # keep their group metadata. [#121463](https://github.com/openclaw/openclaw/pull/121463) [Docs](https://docs.openclaw.ai/channels/feishu) · Thanks [@zw-xysk](https://github.com/zw-xysk).
- Matrix recovery rejects corrupted saved messages instead of sending altered text. [#133338](https://github.com/openclaw/openclaw/pull/133338) Thanks [@RileyJJY](https://github.com/RileyJJY), [@obviyus](https://github.com/obviyus).
- Groups receive recovery guidance when saved conversation history cannot load instead of typing followed by silence. [#135253](https://github.com/openclaw/openclaw/pull/135253) [Docs](https://docs.openclaw.ai/gateway/troubleshooting/agent-replies-and-control-ui) · [Docs](https://docs.openclaw.ai/gateway/doctor/state-and-sessions) · [Docs](https://docs.openclaw.ai/gateway/doctor/running) · Thanks [@izshaw](https://github.com/izshaw), [@steipete](https://github.com/steipete).
- Outbound audit history retains completed-send records for affected constructor-prefixed destinations. [#137763](https://github.com/openclaw/openclaw/pull/137763) Thanks [@teddytennant](https://github.com/teddytennant), [@obviyus](https://github.com/obviyus).
- Overlapping Voice Call questions receive a clear busy response instead of the previous request's answer. [#145776](https://github.com/openclaw/openclaw/pull/145776) [Docs](https://docs.openclaw.ai/plugins/voice-call/realtime-and-streaming) · Thanks [@tianhaotian](https://github.com/tianhaotian), [@Leon-SK668](https://github.com/Leon-SK668), [@steipete](https://github.com/steipete), [@rmyers64](https://github.com/rmyers64).
- Telegram polling starts correctly from source checkouts and captured-plugin installations. [#154286](https://github.com/openclaw/openclaw/pull/154286) [Docs](https://docs.openclaw.ai/plugins/dependency-resolution) · Thanks [@xydt-juyaohui](https://github.com/xydt-juyaohui), [@steipete](https://github.com/steipete), [@markfietje](https://github.com/markfietje).
- Short Slack channel names such as general resolve to their actual rooms so allowed messages can receive replies. [#155882](https://github.com/openclaw/openclaw/pull/155882) Thanks [@MertBasar0](https://github.com/MertBasar0), [@obviyus](https://github.com/obviyus), [@jared-rebel](https://github.com/jared-rebel).
- Normal Slack logs show a sanitized reason when an unresolved mention is skipped. [#157953](https://github.com/openclaw/openclaw/pull/157953) Thanks [@Olli0103](https://github.com/Olli0103), [@shannon0430](https://github.com/shannon0430), [@obviyus](https://github.com/obviyus).
- Malformed LINE question-button replies no longer start unintended agent turns. [#158694](https://github.com/openclaw/openclaw/pull/158694) [Docs](https://docs.openclaw.ai/channels/line) · Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- Teams and Zoom meeting commands reject explicitly empty timeout values before contacting the Gateway. [#158695](https://github.com/openclaw/openclaw/pull/158695) Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- Newer Discord corrections can reach reply processing while an earlier follow-up waits. [#159265](https://github.com/openclaw/openclaw/pull/159265) [Docs](https://docs.openclaw.ai/channels/discord/messaging) · [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@steipete](https://github.com/steipete), [@aatreya](https://github.com/aatreya).
- Channel tools remain usable after the agent or operator task that started the account ends. [#159396](https://github.com/openclaw/openclaw/pull/159396) Thanks [@ceckert](https://github.com/ceckert), [@RomneyDa](https://github.com/RomneyDa), [@slinkoff](https://github.com/slinkoff), [@fuller-stack-dev](https://github.com/fuller-stack-dev).
- Long IRC replies with CJK text or emoji leave room for server forwarding so chunks are not lost. [#159730](https://github.com/openclaw/openclaw/pull/159730) Thanks [@rodricksz4h5](https://github.com/rodricksz4h5), [@obviyus](https://github.com/obviyus).
- Telegram node-command results and error follow-ups stay in the conversation and topic that started them. [#160675](https://github.com/openclaw/openclaw/pull/160675) [Docs](https://docs.openclaw.ai/gateway/heartbeat) · Thanks [@brokemac79](https://github.com/brokemac79).
- Agent deletion guidance explains retained bot accounts and when queued messages may reach a new owner. [#161427](https://github.com/openclaw/openclaw/pull/161427) [Docs](https://docs.openclaw.ai/cli/agents) · [Docs](https://docs.openclaw.ai/concepts/multi-agent#routing-rules) · Thanks [@charlesBerg-ux](https://github.com/charlesBerg-ux), [@obviyus](https://github.com/obviyus).
- Matrix warns when invite allowlist entries cannot match a room. [#161607](https://github.com/openclaw/openclaw/pull/161607) [Docs](https://docs.openclaw.ai/channels/matrix) · [Docs](https://docs.openclaw.ai/channels/matrix/setup) · Thanks [@xydigitLybnnnn](https://github.com/xydigitLybnnnn), [@captain-marlow](https://github.com/captain-marlow), [@obviyus](https://github.com/obviyus).
- WhatsApp can deliver a later decrypted message after an initial empty encrypted placeholder instead of discarding it as a duplicate. [#162078](https://github.com/openclaw/openclaw/pull/162078) Thanks [@stanleys12](https://github.com/stanleys12), [@obviyus](https://github.com/obviyus), [@hundredhandsio](https://github.com/hundredhandsio), [@jmejia-appropia](https://github.com/jmejia-appropia), [@gabrielrojasc](https://github.com/gabrielrojasc).
- Broken bundled channel media support reports its original initialization error instead of silently losing attachment-directory declarations. [#162650](https://github.com/openclaw/openclaw/pull/162650) Thanks [@wangmiao0668000666](https://github.com/wangmiao0668000666), [@obviyus](https://github.com/obviyus).
- Slack places subsequent streamed progress and answers below a follow-up human message while preserving earlier output and Stop behavior. [#163511](https://github.com/openclaw/openclaw/pull/163511) Thanks [@Olli0103](https://github.com/Olli0103), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@leovoloshin](https://github.com/leovoloshin), [@Alix-007](https://github.com/Alix-007).
- Long mostly-ASCII replies require less CPU work to split for channel delivery. [#163573](https://github.com/openclaw/openclaw/pull/163573) Thanks [@boeingchoco](https://github.com/boeingchoco), [@obviyus](https://github.com/obviyus).
- Slack no longer floods Gateway logs with two irrelevant ping/pong diagnostic warnings. [#164305](https://github.com/openclaw/openclaw/pull/164305) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@Johannes-Berggren](https://github.com/Johannes-Berggren).
- Talk agent consultations can start when finalized speech updates shared history during startup. [#164372](https://github.com/openclaw/openclaw/pull/164372) [Docs](https://docs.openclaw.ai/nodes/talk/realtime-sessions) · Thanks [@sunnyshu0925](https://github.com/sunnyshu0925), [@steipete](https://github.com/steipete), [@samiralibabic](https://github.com/samiralibabic).
- Incoming channel pairing checks move database work off the Gateway thread while keeping sender permissions unchanged. [#164476](https://github.com/openclaw/openclaw/pull/164476) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy#channel-pairing-allowlists) · Thanks [@steipete](https://github.com/steipete).
- An outdated or closed channel setup wizard no longer starts unwanted WhatsApp QR pairing after cleanup. [#164577](https://github.com/openclaw/openclaw/pull/164577) Thanks [@steipete](https://github.com/steipete).
- Telegram keeps a visible streamed preview until its replacement is accepted rather than letting it disappear while waiting. [#164649](https://github.com/openclaw/openclaw/pull/164649) [Docs](https://docs.openclaw.ai/channels/telegram/messaging) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@obviyus](https://github.com/obviyus), [@jmar5439](https://github.com/jmar5439).
- Internal relative attachment instructions stay hidden in chat replies that use carriage-return line breaks. [#164657](https://github.com/openclaw/openclaw/pull/164657) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Clean UTF-16 text and JSON attachments retain their declared type instead of being guessed as CSV because they contain commas. [#164687](https://github.com/openclaw/openclaw/pull/164687) Thanks [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- Public IPv6 HTTPS media references pass attachment parsing while private destinations stay blocked. [#164689](https://github.com/openclaw/openclaw/pull/164689) [Docs](https://docs.openclaw.ai/reference/rich-output-protocol) · Thanks [@yetval](https://github.com/yetval).
- Voice preference preparation uses the existing worker while preserving selected paths and fresh preference contents. [#164694](https://github.com/openclaw/openclaw/pull/164694) Thanks [@steipete](https://github.com/steipete).
- Eligible background-command results return to the requesting chat with its conversation history. [#164719](https://github.com/openclaw/openclaw/pull/164719) [Docs](https://docs.openclaw.ai/gateway/background-process) · [Docs](https://docs.openclaw.ai/gateway/heartbeat#delivery-behavior) · Thanks [@obviyus](https://github.com/obviyus), [@SparcleAI](https://github.com/SparcleAI), [@arduano](https://github.com/arduano), [@igs-rogenlo](https://github.com/igs-rogenlo), [@wpu911](https://github.com/wpu911), [@jalehman](https://github.com/jalehman).
- Chained conversation-owned command results no longer wait for the next periodic heartbeat interval. [#164756](https://github.com/openclaw/openclaw/pull/164756) [Docs](https://docs.openclaw.ai/gateway/heartbeat) · Thanks [@obviyus](https://github.com/obviyus), [@ghostllm](https://github.com/ghostllm), [@hexsprite](https://github.com/hexsprite).
- Matrix drops a pre-March raw-sync cache reader while retaining supported normalized saved state from July onward. [#164816](https://github.com/openclaw/openclaw/pull/164816) Thanks [@steipete](https://github.com/steipete).
- Tlon messages turn bare URLs into links and preserve Markdown images embedded in formatted text. [#164828](https://github.com/openclaw/openclaw/pull/164828) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- Loaded history retains useful command status and spawned-session information; channel listeners continue using their own Gateway after the starting client disconnects. [#164848](https://github.com/openclaw/openclaw/pull/164848) [Docs](https://docs.openclaw.ai/concepts/messages) · Thanks [@sjf-oa](https://github.com/sjf-oa), [@sjf](https://github.com/sjf).
- The agent is told when an inter-session reply was recorded only in a transcript and was not delivered to an external channel. [#164860](https://github.com/openclaw/openclaw/pull/164860) [Docs](https://docs.openclaw.ai/concepts/session-tool) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@obviyus](https://github.com/obviyus), [@Jackten](https://github.com/Jackten).
- Completion checks can keep the original detailed answer when it already explains an approval request or other concrete pause. [#164896](https://github.com/openclaw/openclaw/pull/164896) [Docs](https://docs.openclaw.ai/tools/progress-card) · Thanks [@obviyus](https://github.com/obviyus).
- A completed message command keeps its result when a plugin shutdown hook times out, reporting deferred cleanup instead of an exit13 failure. [#164915](https://github.com/openclaw/openclaw/pull/164915) [Docs](https://docs.openclaw.ai/cli/message) · Thanks [@steipete](https://github.com/steipete).
- Voice Call continuation waits use elapsed time, avoiding early or overlong timeouts when the calendar clock changes. [#164951](https://github.com/openclaw/openclaw/pull/164951) Thanks [@SunnyShu0925](https://github.com/SunnyShu0925).
- WhatsApp media uploads on Bun retain proxy routing and work through redirects. [#165017](https://github.com/openclaw/openclaw/pull/165017) [Docs](https://docs.openclaw.ai/channels/whatsapp) · Thanks [@steipete](https://github.com/steipete).
- IRC rejects oversized incoming records and spaces out repeated reconnect attempts. [#165018](https://github.com/openclaw/openclaw/pull/165018) Thanks [@eleqtrizit](https://github.com/eleqtrizit).
- Ordinary Gateway logs now explain more attachment staging failures. [#165066](https://github.com/openclaw/openclaw/pull/165066) Thanks [@akshatshahh](https://github.com/akshatshahh), [@someone378](https://github.com/someone378), [@obviyus](https://github.com/obviyus).
- Telegram streaming replies keep the original message after temporary server errors instead of leaving duplicate answers. [#165072](https://github.com/openclaw/openclaw/pull/165072) Thanks [@steipete](https://github.com/steipete).
- Meeting-library page reads leave the Gateway thread and respect access revoked while a page loads. [#165111](https://github.com/openclaw/openclaw/pull/165111) Thanks [@steipete](https://github.com/steipete).
- Discord streaming previews preserve paragraph spacing and continuous code blocks across chunks. [#165120](https://github.com/openclaw/openclaw/pull/165120) [Docs](https://docs.openclaw.ai/concepts/streaming) · Thanks [@steipete](https://github.com/steipete).
- Telegram message sends and inline buttons work after chat handoffs without an invalid inferred reply target. [#165137](https://github.com/openclaw/openclaw/pull/165137) Thanks [@mbelinky](https://github.com/mbelinky).
- Approved X accounts can mention configured bots and receive text reply chains in the public conversation. [#165138](https://github.com/openclaw/openclaw/pull/165138) [Docs](https://docs.openclaw.ai/channels/x) · [Docs](https://docs.openclaw.ai/plugins/reference/x) · Thanks [@steipete](https://github.com/steipete).
- Matrix accepts and retains valid recovery keys even when verification does not newly enable a backup. [#165236](https://github.com/openclaw/openclaw/pull/165236) Thanks [@steipete](https://github.com/steipete).
- Removing stored X permission stops mentions and replies still being authorized from reaching dispatch or posting a public response. [#165244](https://github.com/openclaw/openclaw/pull/165244) [Docs](https://docs.openclaw.ai/channels/x) · Thanks [@steipete](https://github.com/steipete).
- Slack membership caching now uses a fixed 60-second expiry, removing the environment override previously used to disable or adjust it. [#165330](https://github.com/openclaw/openclaw/pull/165330) Thanks [@steipete](https://github.com/steipete).
- X mention streaming uses the correct subscription token and accepts X's documented event envelope, with clearer reasons when it falls back to polling. [#165337](https://github.com/openclaw/openclaw/pull/165337) [Docs](https://docs.openclaw.ai/channels/x) · Thanks [@steipete](https://github.com/steipete).
- WhatsApp QR startup deadlines return their expected failure without an unhandled rejection, and failed worker reconnect preparation clears its timer. [#165340](https://github.com/openclaw/openclaw/pull/165340) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/config-and-utilities) · Thanks [@steipete](https://github.com/steipete).
- X accounts gain configurable API spending budgets, visible cost estimates and pauses that preserve mentions for processing after reset. [#165351](https://github.com/openclaw/openclaw/pull/165351) [Docs](https://docs.openclaw.ai/channels/x) · Thanks [@steipete](https://github.com/steipete).
- Optional X guest mode answers public repository questions in isolated sessions with restricted read-only tools and daily admission limits. [#165354](https://github.com/openclaw/openclaw/pull/165354) [Docs](https://docs.openclaw.ai/channels/x#guest-mode) · Thanks [@steipete](https://github.com/steipete).
- X streaming periodically checks for missed mentions without replying twice to posts already received, and reports repeated unreadable events. [#165376](https://github.com/openclaw/openclaw/pull/165376) [Docs](https://docs.openclaw.ai/channels/x) · Thanks [@steipete](https://github.com/steipete).
- Matrix attachments without captions no longer pass their filenames off as typed messages. [#165419](https://github.com/openclaw/openclaw/pull/165419) Thanks [@ooiuuii](https://github.com/ooiuuii).
- Images split across Markdown lines can arrive as attachments with captions and ordering preserved. [#165439](https://github.com/openclaw/openclaw/pull/165439) [Docs](https://docs.openclaw.ai/reference/rich-output-protocol) · Thanks [@Milbaxter](https://github.com/Milbaxter).
- X guests can use hidden helpers for repository questions with the same restricted access. [#165543](https://github.com/openclaw/openclaw/pull/165543) [Docs](https://docs.openclaw.ai/channels/x) · Thanks [@steipete](https://github.com/steipete).
- Talk finds open calls without scanning retained closed-call payloads and preserves calls resumed during stale recovery. [#165546](https://github.com/openclaw/openclaw/pull/165546) [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete).
- Delegated realtime calls can end their current call, delay outbound greetings until pickup speech, and optionally hang up after speech inactivity. [#165715](https://github.com/openclaw/openclaw/pull/165715) [Docs](https://docs.openclaw.ai/plugins/voice-call/realtime-and-streaming) · Thanks [@mbelinky](https://github.com/mbelinky).
- Give a phone call a task brief, follow and steer the conversation, and receive an outcome report; optional callbacks and Twilio voicemail handling support follow-up. [#165716](https://github.com/openclaw/openclaw/pull/165716) [Docs](https://docs.openclaw.ai/plugins/voice-call/realtime-and-streaming#per-call-briefs-and-errands) · [Docs](https://docs.openclaw.ai/plugins/voice-call/configuration#twilio-voicemail-detection-tuning) · [Docs](https://docs.openclaw.ai/cli/voicecall) · Thanks [@mbelinky](https://github.com/mbelinky).
- IRC messages and NickServ passwords keep literal backslashes, including paths and code snippets. [#165719](https://github.com/openclaw/openclaw/pull/165719) [Docs](https://docs.openclaw.ai/channels/irc) · Thanks [@Sedrak-Hovhannisyan](https://github.com/Sedrak-Hovhannisyan), [@obviyus](https://github.com/obviyus).
- IRC login accepts server passwords containing spaces or beginning with a colon. [#165721](https://github.com/openclaw/openclaw/pull/165721) Thanks [@Sedrak-Hovhannisyan](https://github.com/Sedrak-Hovhannisyan), [@obviyus](https://github.com/obviyus).
- Messages waiting on startup database checks stop before dispatch so their channel can retry, and session-sharing reads can recover once from concurrent changes. [#165738](https://github.com/openclaw/openclaw/pull/165738) [Docs](https://docs.openclaw.ai/plugins/sdk-channel-inbound) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Replies explaining pipe operators keep the paragraphs between them instead of silently losing text. [#165753](https://github.com/openclaw/openclaw/pull/165753) Thanks [@Sedrak-Hovhannisyan](https://github.com/Sedrak-Hovhannisyan), [@obviyus](https://github.com/obviyus).
- Photos sent as WhatsApp documents reach vision-capable models after their downloaded bytes are recognized as images. [#165774](https://github.com/openclaw/openclaw/pull/165774) Thanks [@yetval](https://github.com/yetval), [@Takhoffman](https://github.com/Takhoffman).
- Photos sent as LINE files reach vision-capable models while actual documents remain documents. [#165778](https://github.com/openclaw/openclaw/pull/165778) Thanks [@yetval](https://github.com/yetval), [@Takhoffman](https://github.com/Takhoffman).
- Default logs explain why a channel message did not join the running turn and whether it entered the follow-up queue. [#165876](https://github.com/openclaw/openclaw/pull/165876) [Docs](https://docs.openclaw.ai/logging) · Thanks [@steipete](https://github.com/steipete), [@PilonQV](https://github.com/PilonQV), [@VACInc](https://github.com/VACInc).
- Plugin channels accept queue overrides; X guest questions must wait rather than alter an active reply. [#165965](https://github.com/openclaw/openclaw/pull/165965) [Docs](https://docs.openclaw.ai/channels/x) · [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@steipete](https://github.com/steipete).
- Telegram progress cards stay visible while delegated work continues and the parent resumes. [#166101](https://github.com/openclaw/openclaw/pull/166101) [Docs](https://docs.openclaw.ai/concepts/progress-drafts) · [Docs](https://docs.openclaw.ai/concepts/streaming) · [Docs](https://docs.openclaw.ai/concepts/subagent-yield-handoff) · Thanks [@Kimiyu-186](https://github.com/Kimiyu-186), [@steipete](https://github.com/steipete), [@obviyus](https://github.com/obviyus).
- Answered voice calls retain their remaining talk time after a restart; later transcript lines can resume without replaying an uncertain pre-crash batch. [#166431](https://github.com/openclaw/openclaw/pull/166431) Thanks [@steipete](https://github.com/steipete).
- Long formatted chat replies spend less time being split before delivery, including Telegram previews. [#166493](https://github.com/openclaw/openclaw/pull/166493) Thanks [@boeingchoco](https://github.com/boeingchoco), [@obviyus](https://github.com/obviyus).
- Channel status returns recorded health promptly, while explicit live probes share a bounded deadline and preserve sibling results. [#166538](https://github.com/openclaw/openclaw/pull/166538) [Docs](https://docs.openclaw.ai/cli/channels) · [Docs](https://docs.openclaw.ai/plugins/sdk-channel-plugins) · Thanks [@steipete](https://github.com/steipete).
- The mock voice-call provider preserves valid caller details so developers can simulate inbound call lifecycles. [#166552](https://github.com/openclaw/openclaw/pull/166552) Thanks [@ly85206559](https://github.com/ly85206559), [@vincentkoc](https://github.com/vincentkoc).
- Skips outdated pending Feishu streaming previews so completed replies do not wait behind every intermediate update. [#166610](https://github.com/openclaw/openclaw/pull/166610) Thanks [@rudycelekli](https://github.com/rudycelekli), [@feie22](https://github.com/feie22), [@cas1per](https://github.com/cas1per), [@L-Trump](https://github.com/L-Trump), [@xiaobao-k8s](https://github.com/xiaobao-k8s), [@csxjihk](https://github.com/csxjihk).
- Discord account health inspection avoids loading activity and voice code that could delay Gateway connections and approvals. [#166736](https://github.com/openclaw/openclaw/pull/166736) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Eligible long replies using native reply instructions stream faster by avoiding repeated parsing of the growing answer. [#166782](https://github.com/openclaw/openclaw/pull/166782) Thanks [@boeingchoco](https://github.com/boeingchoco), [@obviyus](https://github.com/obviyus).
- Telegram and Discord show useful temporary progress for ongoing and delegated work, with Discord progress enabled by default. [#166861](https://github.com/openclaw/openclaw/pull/166861) [Docs](https://docs.openclaw.ai/concepts/progress-drafts) · [Docs](https://docs.openclaw.ai/concepts/streaming) · [Docs](https://docs.openclaw.ai/concepts/subagent-yield-handoff) · Thanks [@obviyus](https://github.com/obviyus), [@samiralibabic](https://github.com/samiralibabic), [@dankarization](https://github.com/dankarization).
- Successful emoji reactions stop adding redundant work rows to Slack progress cards while failed or unresolved reactions remain visible. [#166880](https://github.com/openclaw/openclaw/pull/166880) Thanks [@obviyus](https://github.com/obviyus), [@notmnp](https://github.com/notmnp).
- Long Slack and IRC replies keep emoji and accented characters together when split into messages. [#167025](https://github.com/openclaw/openclaw/pull/167025) Thanks [@steipete](https://github.com/steipete).
- Doctor preserves Discord owner DM targets and can restore lost heartbeat routing from matching backups; the later typed-owner fix covers `discord:user:<id>`. [#167059](https://github.com/openclaw/openclaw/pull/167059) Thanks [@steipete](https://github.com/steipete), [@jaiden0](https://github.com/jaiden0).
- CLI sends that expire while queued explicitly report confirmed non-delivery and advise retrying with a longer timeout. [#167106](https://github.com/openclaw/openclaw/pull/167106) [Docs](https://docs.openclaw.ai/cli/agent) · Thanks [@steipete](https://github.com/steipete), [@A1fred-AI](https://github.com/A1fred-AI).
- Messages sent into a busy session wait until its current reply and delivery finish, preserving queued order. [#167126](https://github.com/openclaw/openclaw/pull/167126) Thanks [@holgergruenhagen](https://github.com/holgergruenhagen), [@steipete](https://github.com/steipete), [@kseczhouyb](https://github.com/kseczhouyb).
- Tlon links and images keep their full destination when an address contains balanced parentheses. [#167191](https://github.com/openclaw/openclaw/pull/167191) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Pairing administration moves database writes away from message handling and correctly removes older approved-sender IDs padded with spaces. [#167239](https://github.com/openclaw/openclaw/pull/167239) Thanks [@steipete](https://github.com/steipete).
- Mattermost stops retrying permanent refusals even when error details mention temporary failures. [#167244](https://github.com/openclaw/openclaw/pull/167244) Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@obviyus](https://github.com/obviyus).
- Feishu quotes, fetched thread context and forwarded text preserve readable mention names instead of opaque placeholders. [#167264](https://github.com/openclaw/openclaw/pull/167264) Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@Raven-wy](https://github.com/Raven-wy), [@Takhoffman](https://github.com/Takhoffman).
- Channel progress from Claude and Gemini CLI runs uses familiar tool labels and preserves authored execution titles. [#167274](https://github.com/openclaw/openclaw/pull/167274) [Docs](https://docs.openclaw.ai/tools/thinking) · Thanks [@VACInc](https://github.com/VACInc).
- Chained background-command results stay in the Control UI chat that started them instead of falling back to the heartbeat destination. [#167284](https://github.com/openclaw/openclaw/pull/167284) [Docs](https://docs.openclaw.ai/gateway/heartbeat) · Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez), [@steipete](https://github.com/steipete), [@oywino](https://github.com/oywino).
- Telegram and Discord progress cards remain visible during background media generation and retain a failed status if results fail to arrive. [#167362](https://github.com/openclaw/openclaw/pull/167362) Thanks [@obviyus](https://github.com/obviyus).
- Telegram detailed progress rows regain recognizable tool emoji, including retained background progress cards. [#167392](https://github.com/openclaw/openclaw/pull/167392) Thanks [@obviyus](https://github.com/obviyus).
- Messages and progress-card updates avoid hanging when saving a card overlaps a conversation-history search. [#167396](https://github.com/openclaw/openclaw/pull/167396) Thanks [@fuller-stack-dev](https://github.com/fuller-stack-dev).
- Completed Talk consultations keep their completion status and duration without repeated terminal-persistence warnings. [#167455](https://github.com/openclaw/openclaw/pull/167455) Thanks [@steipete](https://github.com/steipete), [@Bartok9](https://github.com/Bartok9), [@samiralibabic](https://github.com/samiralibabic).
- Telegram replies rejected before sending receive an accurate failure notice without misleading delivery-recovery warnings. [#167470](https://github.com/openclaw/openclaw/pull/167470) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations#channel-ownership-during-an-update) · Thanks [@obviyus](https://github.com/obviyus), [@mgr-nick](https://github.com/mgr-nick).
- Readiness checks report terminal channel logouts and blocked accounts as unavailable so operators can recover them. [#167478](https://github.com/openclaw/openclaw/pull/167478) [Docs](https://docs.openclaw.ai/gateway/health) · Thanks [@steipete](https://github.com/steipete).
- Telegram actions honor withdrawn authorization after chat lookup, and closed transports stop queued retries. [#167635](https://github.com/openclaw/openclaw/pull/167635) Thanks [@steipete](https://github.com/steipete).
- Mattermost and Discord preserve HTTP refusals when error details cannot be read; Signal returns results without waiting for optional cleanup. [#167637](https://github.com/openclaw/openclaw/pull/167637) Thanks [@steipete](https://github.com/steipete).
- Telegram streamed answers respect an explicit reply target even when automatic reply threading is off. [#167895](https://github.com/openclaw/openclaw/pull/167895) [Docs](https://docs.openclaw.ai/channels/telegram/messaging) · Thanks [@obviyus](https://github.com/obviyus).
- Queue guidance explains why collect mode keeps Discord and Telegram messages as separate follow-up turns. [#167940](https://github.com/openclaw/openclaw/pull/167940) [Docs](https://docs.openclaw.ai/concepts/queue#queue-modes) · Thanks [@obviyus](https://github.com/obviyus).
- Plain-text replies retain command placeholders and generic type examples instead of silently deleting them. [#167953](https://github.com/openclaw/openclaw/pull/167953) Thanks [@obviyus](https://github.com/obviyus).
- Long formatted code replies avoid unnecessary tiny messages between larger chunks while retaining their text and spacing. [#167958](https://github.com/openclaw/openclaw/pull/167958) Thanks [@obviyus](https://github.com/obviyus).
- Telegram settings and skill commands wait behind a pending question instead of discarding it. [#168004](https://github.com/openclaw/openclaw/pull/168004) Thanks [@obviyus](https://github.com/obviyus), [@vicary](https://github.com/vicary).
- Telegram GIF animations reach the agent as video attachments, including captionless messages, without duplicate downloads. [#168011](https://github.com/openclaw/openclaw/pull/168011) Thanks [@obviyus](https://github.com/obviyus), [@ThisisPeggy](https://github.com/ThisisPeggy), [@steipete](https://github.com/steipete), [@manus-pi](https://github.com/manus-pi).
- Telegram delivers requested tool summaries with /verbose on and completed output with /verbose full in default progress mode. [#168016](https://github.com/openclaw/openclaw/pull/168016) [Docs](https://docs.openclaw.ai/channels/telegram/messaging) · Thanks [@obviyus](https://github.com/obviyus).
- Enabled Discord tool-progress logs use tool-specific icons to make activity easier to scan. [#168032](https://github.com/openclaw/openclaw/pull/168032) [Docs](https://docs.openclaw.ai/channels/discord/messaging) · [Docs](https://docs.openclaw.ai/concepts/progress-drafts) · Thanks [@obviyus](https://github.com/obviyus).
- Persistent Thinking messages arrive before streamed answers on Telegram and Discord without repeating reasoning across answer items. [#168062](https://github.com/openclaw/openclaw/pull/168062) [Docs](https://docs.openclaw.ai/tools/thinking) · Thanks [@obviyus](https://github.com/obviyus).
- Opt-in X maintainer trust uses eligible GitHub collaborators' declared X accounts, with hourly revocation checks that can retain last-known trust during outages. [#168071](https://github.com/openclaw/openclaw/pull/168071) [Docs](https://docs.openclaw.ai/channels/x#verify-github-collaborators) · [Docs](https://docs.openclaw.ai/channels/x#enable-yourself) · Thanks [@steipete](https://github.com/steipete).
- Background replies stay in their requesting WebChat conversation, transcript mirrors preserve future reply destinations, and Reef accepts ordinary GitHub revision links without hash-only false alarms. [#168248](https://github.com/openclaw/openclaw/pull/168248) [Docs](https://docs.openclaw.ai/channels/channel-routing) · [Docs](https://docs.openclaw.ai/tools/subagents/announce) · [Docs](https://docs.openclaw.ai/channels/reef) · Thanks [@steipete](https://github.com/steipete).
- Keeps Telegram rich-reply tables visible and correctly placed before quotes and lists. [#168383](https://github.com/openclaw/openclaw/pull/168383) [Docs](https://docs.openclaw.ai/channels/telegram/rich-messages) · Thanks [@dhruv1220](https://github.com/dhruv1220), [@steipete](https://github.com/steipete), [@barry-ssb](https://github.com/barry-ssb).
- Recognizes silent reasoning placeholders even when the final silence token has punctuation. [#168571](https://github.com/openclaw/openclaw/pull/168571) Thanks [@liwenjie200543](https://github.com/liwenjie200543), [@steipete](https://github.com/steipete), [@cipp-ashe](https://github.com/cipp-ashe), [@eonicman](https://github.com/eonicman), [@he-yufeng](https://github.com/he-yufeng).
- Prevents queue recovery from interrupting messages still being sent. [#169010](https://github.com/openclaw/openclaw/pull/169010) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Telegram messages stay queued when a retry finds the original timed-out attempt still pending. [#169202](https://github.com/openclaw/openclaw/pull/169202) Thanks [@diregoblin](https://github.com/diregoblin), [@obviyus](https://github.com/obviyus), [@Grynn](https://github.com/Grynn), [@travellingsoldier85](https://github.com/travellingsoldier85), [@PaGrom](https://github.com/PaGrom), [@cablackmon](https://github.com/cablackmon).
- Feishu DMs continue receiving replies after overlapping settings reload and old monitor cleanup. [#169226](https://github.com/openclaw/openclaw/pull/169226) Thanks [@ruel225](https://github.com/ruel225), [@obviyus](https://github.com/obviyus), [@junniar](https://github.com/junniar), [@PratikRai0101](https://github.com/PratikRai0101).
- Scripts receive clean JSON from voicecall steer without startup chatter mixed into stdout. [#169430](https://github.com/openclaw/openclaw/pull/169430) Thanks [@steipete](https://github.com/steipete).
- Questions that pause an agent can reach the messaging conversation where the request began. [#170039](https://github.com/openclaw/openclaw/pull/170039) [Docs](https://docs.openclaw.ai/tools/ask-user) · Thanks [@steipete](https://github.com/steipete).
- The first old Telegram spool import skips entries older than 24 hours, including unprocessed entries; review any old instructions you still need. [#170068](https://github.com/openclaw/openclaw/pull/170068) [Docs](https://docs.openclaw.ai/channels/telegram/transports) · Thanks [@steipete](https://github.com/steipete), [@angeliti999](https://github.com/angeliti999).
- Slow pasted Teams images get time to download and reach the agent, with a separate window for message context. [#170437](https://github.com/openclaw/openclaw/pull/170437) Thanks [@RomneyDa](https://github.com/RomneyDa), [@EbulenConsult](https://github.com/EbulenConsult).
- A Buzz relay disconnect during authentication no longer shuts down the Gateway and interrupts other channels. [#170591](https://github.com/openclaw/openclaw/pull/170591) Thanks [@masatohoshino](https://github.com/masatohoshino), [@obviyus](https://github.com/obviyus), [@jarvis-modern-mail](https://github.com/jarvis-modern-mail).
- Stopping an ACP turn no longer cancels a separate queued follow-up's reply. [#170883](https://github.com/openclaw/openclaw/pull/170883) [Docs](https://docs.openclaw.ai/tools/acp-agents/delivery) · Thanks [@steipete](https://github.com/steipete), [@fanmeng-felix](https://github.com/fanmeng-felix).
- Discord owners configured as `discord:user:<id>` regain voice controls, owner recognition, and inferred command-approval eligibility. [#172385](https://github.com/openclaw/openclaw/pull/172385) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@yetval](https://github.com/yetval), [@RomneyDa](https://github.com/RomneyDa).
- Slack owners configured as `slack:user:<id>` can be inferred as command approvers when automatic approvals use the owner fallback. [#172424](https://github.com/openclaw/openclaw/pull/172424) [Docs](https://docs.openclaw.ai/tools/exec-approvals-advanced) · [Docs](https://docs.openclaw.ai/tools/slash-commands) · Thanks [@yetval](https://github.com/yetval), [@RomneyDa](https://github.com/RomneyDa).
- IRC detects silent disconnects and uses the existing reconnect flow without a manual Gateway restart; missed messages are not restored. [#172961](https://github.com/openclaw/openclaw/pull/172961) Thanks [@rodricksz4h5](https://github.com/rodricksz4h5), [@steipete](https://github.com/steipete).

</details>

## Skills and integrations

Plugin reloads and connection fixes help tools and external coding agents keep working as settings change. Skills marked for macOS also appear in new sessions on compatible Macs.

Plugin authors need to replace the deprecated session-header link helper before **January 12, 2027**, and migrate temporary private SDK imports before **January 15, 2027**. See the [SDK migration guidance](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy).

<details class="release-source-toggle">
<summary>Skills, plugins, tools, and external executors</summary>

- Supporting integration refreshes skill eligibility for new sessions, retains selected skill sources, recovers parent turns, and preserves supported scheduled reasoning settings. [3f9636b](https://github.com/openclaw/openclaw/commit/3f9636b36ec742c31382e9fc4db553c21c55c5cf)
- Web-search availability checks reuse prepared authentication instead of rediscovering it. [4a63135](https://github.com/openclaw/openclaw/commit/4a63135c697f082b2804db044471450037681626)
- Windows plugins resolve managed and lazy imports from their captured source with correct nested alias priority. [56d714d](https://github.com/openclaw/openclaw/commit/56d714d0136544b5eff5aab4824fa1e35341c1f9)
- Integrations canceling transcript operations get consistent errors that retain the original cancellation details. [ea7cc10](https://github.com/openclaw/openclaw/commit/ea7cc1066568fbbeece9151c497ecab15923bd2a)
- Prepared cron and Doctor checks keep their selected web providers without registering the same plugins again. [f8f80ea](https://github.com/openclaw/openclaw/commit/f8f80eaff271049014578a54d394face26ea8d83) [Docs](https://docs.openclaw.ai/plugins/architecture)
- Linux node commands can find tools from their configured service PATH after login-shell startup. [#136677](https://github.com/openclaw/openclaw/pull/136677) [Docs](https://docs.openclaw.ai/tools/exec) · Thanks [@harjothkhara](https://github.com/harjothkhara), [@steipete](https://github.com/steipete), [@abacha](https://github.com/abacha).
- Blank camera-facing options fail before contacting a device. [#145538](https://github.com/openclaw/openclaw/pull/145538) Thanks [@hugenshen](https://github.com/hugenshen), [@altaywtf](https://github.com/altaywtf).
- Plugin authors can read the documented after-tool observation fields and limits. [#149377](https://github.com/openclaw/openclaw/pull/149377) [Docs](https://docs.openclaw.ai/plugins/hooks/tool-policy) · Thanks [@arpanghoshal](https://github.com/arpanghoshal), [@obviyus](https://github.com/obviyus).
- Custom transcriber guidance explains empty optional arguments and how to omit language flags for autodetection. [#151941](https://github.com/openclaw/openclaw/pull/151941) [Docs](https://docs.openclaw.ai/nodes/media-understanding) · Thanks [@fede-kamel](https://github.com/fede-kamel), [@obviyus](https://github.com/obviyus).
- Firecrawl searches retain news and image results, including mixed results beside an empty web array. [#155885](https://github.com/openclaw/openclaw/pull/155885) [Docs](https://docs.openclaw.ai/tools/firecrawl) · Thanks [@qingminglong](https://github.com/qingminglong), [@obviyus](https://github.com/obviyus).
- Meme-maker SVGs label GIF and WebP images correctly, and CLI failures retain non-Error diagnostics. [#158059](https://github.com/openclaw/openclaw/pull/158059) Thanks [@NoelDavies](https://github.com/NoelDavies), [@obviyus](https://github.com/obviyus).
- Windows node commands preserve quoted prompts, URLs and paths with spaces. [#158160](https://github.com/openclaw/openclaw/pull/158160) Thanks [@Dimitri-lcht](https://github.com/Dimitri-lcht), [@igs-rogenlo](https://github.com/igs-rogenlo), [@steipete](https://github.com/steipete), [@kassol](https://github.com/kassol).
- Code Mode module refusals point agents toward enabled tools and catalog search. [#158716](https://github.com/openclaw/openclaw/pull/158716) Thanks [@sxh313](https://github.com/sxh313), [@pennymolt](https://github.com/pennymolt), [@VACInc](https://github.com/VACInc).
- Tools retain already-valid values such as the string ID 00123 while other invalid fields can still be converted. [#158974](https://github.com/openclaw/openclaw/pull/158974) [Docs](https://docs.openclaw.ai/concepts/agent-loop) · Thanks [@Shenrui-Ma](https://github.com/Shenrui-Ma), [@steipete](https://github.com/steipete).
- Video results warn when an unrecognized requested size was ignored. [#159037](https://github.com/openclaw/openclaw/pull/159037) Thanks [@YangManBOBO](https://github.com/YangManBOBO), [@obviyus](https://github.com/obviyus).
- Retired plugin registries can release obsolete resources after successful cleanup, reducing retained Gateway and catalog-worker memory. [#159448](https://github.com/openclaw/openclaw/pull/159448) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@steipete](https://github.com/steipete), [@JFLeonM](https://github.com/JFLeonM), [@Cyb3rb1ade](https://github.com/Cyb3rb1ade), [@highfly-hi](https://github.com/highfly-hi).
- Agents API operators can connect and reuse executors on their own infrastructure; files, tools, and credentials remain operator-managed, and a shared workspace is not isolation. [#161609](https://github.com/openclaw/openclaw/pull/161609) [Docs](https://docs.openclaw.ai/plugins/agentsapi#self-hosted-execution) · [Docs](https://docs.openclaw.ai/plugins/sdk-agent-harness/registration) · Thanks [@sjf-oa](https://github.com/sjf-oa), [@sjf](https://github.com/sjf).
- Plugin approval waits can use their full response window without ending the waiting turn early. [#161821](https://github.com/openclaw/openclaw/pull/161821) [Docs](https://docs.openclaw.ai/plugins/plugin-permission-requests) · Thanks [@fransqaas](https://github.com/fransqaas), [@obviyus](https://github.com/obviyus).
- The plugin session-lifecycle documentation link reaches the relevant hook catalog. [#161907](https://github.com/openclaw/openclaw/pull/161907) [Docs](https://docs.openclaw.ai/plugins/hooks/reference#hook-catalog) · Thanks [@yigtwxx](https://github.com/yigtwxx).
- Stopped-Tailscale startup attempts no longer suppress channel autostart after Tailscale reconnects and the Gateway restarts. [#162266](https://github.com/openclaw/openclaw/pull/162266) [Docs](https://docs.openclaw.ai/gateway/tailscale) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@odrobnik](https://github.com/odrobnik).
- Applications importing OpenClaw as a library skip an unnecessary CLI version helper. [#162313](https://github.com/openclaw/openclaw/pull/162313) Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@obviyus](https://github.com/obviyus), [@love-ai-open-source](https://github.com/love-ai-open-source).
- Crabbox worker setup keeps its intended timeout when the host clock changes. [#162813](https://github.com/openclaw/openclaw/pull/162813) Thanks [@SunnyShu0925](https://github.com/SunnyShu0925).
- Gateway clients can browse and search ClawHub plugins and skills, filter official listings and show selected-agent installation status. [#163459](https://github.com/openclaw/openclaw/pull/163459) [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-system-and-channels) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- The bundled GitHub skill explains asynchronous merge submission and status tracking without resubmitting an uncertain request. [#163579](https://github.com/openclaw/openclaw/pull/163579) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Administrators can connect installed OAuth MCP plugins from eligible HTTPS Gateway dashboards without duplicating server configuration. [#163875](https://github.com/openclaw/openclaw/pull/163875) [Docs](https://docs.openclaw.ai/cli/mcp/control-ui) · [Docs](https://docs.openclaw.ai/tools/mcp) · Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Nextcloud Talk consistently uses the documented nested permission for private-network access. [#164258](https://github.com/openclaw/openclaw/pull/164258) Thanks [@steipete](https://github.com/steipete).
- Separately installed ACPX restores already-enabled plugin and OpenClaw tools by finding the installed host bridges. [#164272](https://github.com/openclaw/openclaw/pull/164272) [Docs](https://docs.openclaw.ai/tools/acp-agents-setup) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@ajmtrz](https://github.com/ajmtrz), [@obviyus](https://github.com/obviyus).
- Paired-node command results stop warning about PATH changes that came only from the Gateway launcher. [#164506](https://github.com/openclaw/openclaw/pull/164506) [Docs](https://docs.openclaw.ai/tools/exec) · Thanks [@holgergruenhagen](https://github.com/holgergruenhagen), [@obviyus](https://github.com/obviyus).
- Opted-in plugin tools can deliver finished reports or confirmations without another model response. [#164558](https://github.com/openclaw/openclaw/pull/164558) Thanks [@mbelinky](https://github.com/mbelinky).
- Commands executed on updated CLI nodes retain the originating chat and subagent routing context. [#164584](https://github.com/openclaw/openclaw/pull/164584) [Docs](https://docs.openclaw.ai/nodes/node-exec#channel-and-subagent-context) · Thanks [@steipete](https://github.com/steipete), [@idanzhavi09](https://github.com/idanzhavi09), [@MikyWang](https://github.com/MikyWang), [@thearabchad](https://github.com/thearabchad), [@goslingmanagment](https://github.com/goslingmanagment), [@kassol](https://github.com/kassol), [@vgranciero](https://github.com/vgranciero).
- Cloud-worker bootstrap failures identify the Gateway address and suggest a reachability check when appropriate. [#164627](https://github.com/openclaw/openclaw/pull/164627) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/troubleshooting) · Thanks [@steipete](https://github.com/steipete).
- Node-hosted sessions preserve the selected agent instructions, persona, memory guidance and conversation context. [#164647](https://github.com/openclaw/openclaw/pull/164647) Thanks [@steipete](https://github.com/steipete).
- Source-checkout plugins using SDK worker helpers and offline memory status load again after worker package extraction. [#164662](https://github.com/openclaw/openclaw/pull/164662) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Mixed-case plugin IDs work across enablement, activation, uninstall and enforcement of configured settings. [#164683](https://github.com/openclaw/openclaw/pull/164683) Thanks [@steipete](https://github.com/steipete).
- Tool Search handles unusually large Unicode descriptions without a regular-expression stack crash. [#164737](https://github.com/openclaw/openclaw/pull/164737) [Docs](https://docs.openclaw.ai/tools/tool-search) · Thanks [@steipete](https://github.com/steipete).
- Turn-completion and reply checks move selected database work off the Gateway thread; harnesses can await transcript preparation. [#164747](https://github.com/openclaw/openclaw/pull/164747) [Docs](https://docs.openclaw.ai/plugins/sdk-agent-harness/attempt-runtime#agent-end-side-effects) · Thanks [@steipete](https://github.com/steipete).
- Skill reads explain that a skill is unavailable to the agent and guide it toward available skills without exposing hidden entries. [#164884](https://github.com/openclaw/openclaw/pull/164884) Thanks [@obviyus](https://github.com/obviyus).
- Timed-out plugin reloads retry automatically after the old instance finishes its work, applying queued configuration edits together. [#164894](https://github.com/openclaw/openclaw/pull/164894) [Docs](https://docs.openclaw.ai/gateway/configuration/hot-reload) · Thanks [@obviyus](https://github.com/obviyus).
- Plugin session state survives normal Gateway stops and restarts, and settled cleanup-hook errors warn without alone failing shutdown. [#164975](https://github.com/openclaw/openclaw/pull/164975) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime) · Thanks [@steipete](https://github.com/steipete).
- More credential-source checks run through the existing background readers, and retained media tools notice credentials saved after an earlier unsuccessful check. [#164992](https://github.com/openclaw/openclaw/pull/164992) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Code Mode identifies invalid nested tool arguments as input errors so the agent can correct the call. [#165008](https://github.com/openclaw/openclaw/pull/165008) [Docs](https://docs.openclaw.ai/tools/code-mode/troubleshooting) · Thanks [@steipete](https://github.com/steipete).
- Tool preparation avoids blocking other Gateway work while preserving approval checks. [#165012](https://github.com/openclaw/openclaw/pull/165012) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy#harness-tool-construction) · Thanks [@steipete](https://github.com/steipete).
- Plugin configuration types now reject retired settings already rejected at runtime. [#165014](https://github.com/openclaw/openclaw/pull/165014) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate) · Thanks [@steipete](https://github.com/steipete).
- Deployment cleanup guidance now identifies plugin installation directories that must be preserved. [#165023](https://github.com/openclaw/openclaw/pull/165023) [Docs](https://docs.openclaw.ai/plugins/dependency-resolution) · Thanks [@steipete](https://github.com/steipete), [@morikplay](https://github.com/morikplay).
- Background plugin cleanup reads installation records without blocking the Gateway thread. [#165029](https://github.com/openclaw/openclaw/pull/165029) Thanks [@steipete](https://github.com/steipete).
- After replacing a plugin, Doctor uses the new version’s repair code. [#165049](https://github.com/openclaw/openclaw/pull/165049) [Docs](https://docs.openclaw.ai/cli/plugins/uninstall-and-update) · Thanks [@steipete](https://github.com/steipete), [@ADLBAS26](https://github.com/ADLBAS26), [@Torsie](https://github.com/Torsie).
- Local and linked plugins can save their own state and use durable incoming-message queues. [#165063](https://github.com/openclaw/openclaw/pull/165063) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/state-and-system#api-runtime-state) · [Docs](https://docs.openclaw.ai/tools/plugin#plugin-runtime-trust-refused) · Thanks [@steipete](https://github.com/steipete).
- Concurrent GitHub previews share requests, and publication-account discovery returns a retryable error after five seconds. [#165094](https://github.com/openclaw/openclaw/pull/165094) [Docs](https://docs.openclaw.ai/plugins/github) · [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-session-control) · Thanks [@steipete](https://github.com/steipete).
- Large skill-library browsing and new-session defaults avoid repeated database work and unnecessary avatar copying. [#165106](https://github.com/openclaw/openclaw/pull/165106) [Docs](https://docs.openclaw.ai/tools/skills) · Thanks [@steipete](https://github.com/steipete).
- Headless node commands report signal termination so partial output is not mistaken for completion. [#165116](https://github.com/openclaw/openclaw/pull/165116) [Docs](https://docs.openclaw.ai/tools/exec) · Thanks [@steipete](https://github.com/steipete).
- Plugin authors can await complete saved-session context with source checks; the synchronous reader remains temporarily available with a deprecation warning. [#165134](https://github.com/openclaw/openclaw/pull/165134) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate) · Thanks [@steipete](https://github.com/steipete).
- New MCP discovery hides disconnected server actions during recovery and restores them after reconnection while healthy servers remain available. [#165158](https://github.com/openclaw/openclaw/pull/165158) [Docs](https://docs.openclaw.ai/tools/mcp) · Thanks [@steipete](https://github.com/steipete), [@BorisZhangYYY](https://github.com/BorisZhangYYY).
- Windows Bun plugins load affected asynchronous imports and release retired module-cache records on reload or disable. [#165169](https://github.com/openclaw/openclaw/pull/165169) [Docs](https://docs.openclaw.ai/install/bun-compatibility) · Thanks [@steipete](https://github.com/steipete).
- Concurrent agents searching identical installed skill instructions can share indexes and use less memory. [#165173](https://github.com/openclaw/openclaw/pull/165173) [Docs](https://docs.openclaw.ai/tools/skills) · Thanks [@steipete](https://github.com/steipete).
- Windows plugins resolving SDK imports receive native Windows filenames, including require.resolve under Bun. [#165282](https://github.com/openclaw/openclaw/pull/165282) [Docs](https://docs.openclaw.ai/install/bun-compatibility) · Thanks [@steipete](https://github.com/steipete).
- Plugins containing native prebuilt binaries avoid repeated full-file scans that could cause long loading and Gateway startup delays. [#165301](https://github.com/openclaw/openclaw/pull/165301) Thanks [@goutamadwant](https://github.com/goutamadwant), [@steipete](https://github.com/steipete), [@exGeni](https://github.com/exGeni).
- Large watched skill collections reuse unchanged directory discovery and avoid repeating escaped-path warnings during unrelated refreshes. [#165304](https://github.com/openclaw/openclaw/pull/165304) [Docs](https://docs.openclaw.ai/tools/skills) · Thanks [@steipete](https://github.com/steipete).
- Team Reports leaves startup quiet and performs catch-up at the first eligible scheduled collection; manual generation remains immediately available. [#165356](https://github.com/openclaw/openclaw/pull/165356) [Docs](https://docs.openclaw.ai/plugins/team-reports) · Thanks [@steipete](https://github.com/steipete).
- Codex plugin migration honors a configured custom app-server command when installing selected plugins. [#165365](https://github.com/openclaw/openclaw/pull/165365) Thanks [@steipete](https://github.com/steipete).
- GitHub visitor invitations and revocation by login use configured Gateway credentials and give clearer quota and account errors. [#165368](https://github.com/openclaw/openclaw/pull/165368) [Docs](https://docs.openclaw.ai/plugins/reference/visitor-access) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/gateway-and-nodes) · Thanks [@steipete](https://github.com/steipete).
- GitHub publication lookup again reports an ownership error when a session's recorded live checkout belongs to another session. [#165407](https://github.com/openclaw/openclaw/pull/165407) Thanks [@steipete](https://github.com/steipete).
- Zalo and Synology attachments stay correct across runtime replacement, and Copilot cancellation can prevent a request from starting. [#165431](https://github.com/openclaw/openclaw/pull/165431) Thanks [@steipete](https://github.com/steipete).
- Incoming messages move activity-time database lookups off the main message-handling thread; plugin authors gain async preparation APIs. [#165436](https://github.com/openclaw/openclaw/pull/165436) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy#inbound-envelope-timestamps) · Thanks [@steipete](https://github.com/steipete).
- Repeated Tool Search and Code Mode lookups reuse prepared catalogs while checking current tool visibility. [#165491](https://github.com/openclaw/openclaw/pull/165491) [Docs](https://docs.openclaw.ai/tools/tool-search) · Thanks [@steipete](https://github.com/steipete).
- Managed private portals and hostname discovery work on larger Tailscale networks, with clearer discovery-failure warnings. [#165507](https://github.com/openclaw/openclaw/pull/165507) [Docs](https://docs.openclaw.ai/gateway/tailscale) · Thanks [@obviyus](https://github.com/obviyus), [@redasadki](https://github.com/redasadki).
- New sessions recognize newly installed skill requirements without restarting the Gateway when the binary is already on its PATH. [#165529](https://github.com/openclaw/openclaw/pull/165529) [Docs](https://docs.openclaw.ai/tools/skills) · Thanks [@steipete](https://github.com/steipete).
- Skills retain complete descriptions and metadata when structured YAML values span several lines. [#165531](https://github.com/openclaw/openclaw/pull/165531) Thanks [@SashaMIT](https://github.com/SashaMIT).
- On Windows with Bun, active plugins keep using their loaded source until reloaded, including later TypeScript imports. [#165533](https://github.com/openclaw/openclaw/pull/165533) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@steipete](https://github.com/steipete).
- Resuming external ACP agents avoids a scan of every retained session. [#165550](https://github.com/openclaw/openclaw/pull/165550) [Docs](https://docs.openclaw.ai/tools/acp-agents/sessions) · Thanks [@steipete](https://github.com/steipete).
- Remote-exec worker preparation includes the runtime files required by installed Codex and other affected external plugins. [#165669](https://github.com/openclaw/openclaw/pull/165669) Thanks [@LiuwqGit](https://github.com/LiuwqGit), [@JakeBotFleet](https://github.com/JakeBotFleet).
- Plugin help and errors explain connection and readiness checks in more familiar language. [#165741](https://github.com/openclaw/openclaw/pull/165741) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Pictures returned by tools found through Tool Search reach image-capable models as images instead of encoded text. [#165762](https://github.com/openclaw/openclaw/pull/165762) Thanks [@obviyus](https://github.com/obviyus), [@jlapenna](https://github.com/jlapenna).
- Plugin authors can await strict transcript-message preparation while eligible harness appends use existing background workers. [#165793](https://github.com/openclaw/openclaw/pull/165793) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate#await-strict-transcript-message-preparation) · Thanks [@steipete](https://github.com/steipete).
- Plugin authors can await upstream session-link writes before adopting, binding or cleaning up a session. [#165796](https://github.com/openclaw/openclaw/pull/165796) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate#await-session-upstream-links) · Thanks [@steipete](https://github.com/steipete).
- Valid plugin skills, including Discord and WhatsApp skills, stay available while source-checkout updates retain the running tree. [#165882](https://github.com/openclaw/openclaw/pull/165882) [Docs](https://docs.openclaw.ai/tools/skills) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Plugin authors can prepare ACP session reads from an existing private binding; related Incognito operations prepare for a later ownership change. [#165895](https://github.com/openclaw/openclaw/pull/165895) [Docs](https://docs.openclaw.ai/plugins/sdk-migration) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Plugin snapshots use filesystem clones where supported, reducing repeated disk writes with direct evidence on macOS APFS. [#166189](https://github.com/openclaw/openclaw/pull/166189) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@steipete](https://github.com/steipete), [@matthematics1137](https://github.com/matthematics1137).
- Agents using a different model can consult the built-in helper and call it again after a benign plugin reload. [#166235](https://github.com/openclaw/openclaw/pull/166235) Thanks [@PollyBot13](https://github.com/PollyBot13), [@Colton-Harris](https://github.com/Colton-Harris), [@tyler194653](https://github.com/tyler194653), [@obviyus](https://github.com/obviyus).
- Finished local ComfyUI workflows without media report missing output promptly instead of waiting for a misleading timeout. [#166249](https://github.com/openclaw/openclaw/pull/166249) Thanks [@chelsealong](https://github.com/chelsealong), [@catnipluss](https://github.com/catnipluss), [@obviyus](https://github.com/obviyus).
- Repeated native plugin SDK imports reuse validated lookup facts instead of repeating path checks. [#166278](https://github.com/openclaw/openclaw/pull/166278) [Docs](https://docs.openclaw.ai/plugins/architecture-internals/load-pipeline) · Thanks [@steipete](https://github.com/steipete).
- Background title requests avoid unrelated plugin initialization. [#166310](https://github.com/openclaw/openclaw/pull/166310) [Docs](https://docs.openclaw.ai/plugins/sdk-agent-harness/registration) · Thanks [@jjjhenriksen](https://github.com/jjjhenriksen), [@obviyus](https://github.com/obviyus), [@cmrstudio56](https://github.com/cmrstudio56).
- Live monitoring shows current running and queued work, while shared conversation reads wait for refreshed publication facts. [#166387](https://github.com/openclaw/openclaw/pull/166387) [Docs](https://docs.openclaw.ai/gateway/prometheus) · [Docs](https://docs.openclaw.ai/web/urls) · Thanks [@steipete](https://github.com/steipete).
- Native Codex children can use OpenClaw hooks when the app-server and Gateway run on separate hosts. [#166400](https://github.com/openclaw/openclaw/pull/166400) [Docs](https://docs.openclaw.ai/plugins/codex-harness-runtime/hooks) · Thanks [@Kimiyu-186](https://github.com/Kimiyu-186).
- Linux plugin capture can hash cloned files without bad-descriptor failures. [#166457](https://github.com/openclaw/openclaw/pull/166457) Thanks [@steipete](https://github.com/steipete), [@MertBasar0](https://github.com/MertBasar0).
- Shows Feishu error explanations and request log IDs when document or Drive requests are rejected. [#166599](https://github.com/openclaw/openclaw/pull/166599) Thanks [@rudycelekli](https://github.com/rudycelekli), [@wenbiyou](https://github.com/wenbiyou).
- Lets forced plugin replacements activate after active work finishes when the only config notification repeats their own unchanged settings. [#166618](https://github.com/openclaw/openclaw/pull/166618) [Docs](https://docs.openclaw.ai/cli/plugins/install) · Thanks [@steipete](https://github.com/steipete).
- Restores message_sent failure callbacks after a narrow partial-delivery fallback acknowledgment. [#166659](https://github.com/openclaw/openclaw/pull/166659) Thanks [@steipete](https://github.com/steipete).
- Plugin replacement releases old diagnostic tracking and runs the retiring plugin's cleanup before registering its replacement. [#166683](https://github.com/openclaw/openclaw/pull/166683) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime) · Thanks [@steipete](https://github.com/steipete).
- Lets slow but advancing native plugin verification finish and reuses its result during model catalog refreshes. [#166687](https://github.com/openclaw/openclaw/pull/166687) Thanks [@steipete](https://github.com/steipete), [@martinderm](https://github.com/martinderm), [@swampgorilla](https://github.com/swampgorilla).
- Repeated plugin reloads retain less retired plugin state while active calls and streams keep their selected plugins until completion. [#166751](https://github.com/openclaw/openclaw/pull/166751) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime) · Thanks [@steipete](https://github.com/steipete).
- Code Mode keeps core shell, process and file arguments visible in crowded tool catalogs, reducing avoidable failed calls and retries. [#166785](https://github.com/openclaw/openclaw/pull/166785) [Docs](https://docs.openclaw.ai/tools/code-mode) · Thanks [@steipete](https://github.com/steipete).
- Claw-created agents can be removed through the CLI while the Gateway runs, preserving unrelated scheduled jobs. [#166889](https://github.com/openclaw/openclaw/pull/166889) Thanks [@steipete](https://github.com/steipete).
- External ACP coding agents start under the correct OpenClaw owner, configured aliases use the correct reply account, and authorized existing conversations can resume. [#166908](https://github.com/openclaw/openclaw/pull/166908) [Docs](https://docs.openclaw.ai/tools/acp-agents/sessions) · [Docs](https://docs.openclaw.ai/tools/acp-agents/controls) · Thanks [@saariuslystoned](https://github.com/saariuslystoned), [@steipete](https://github.com/steipete), [@josephbergvinson](https://github.com/josephbergvinson), [@lachiefreedom](https://github.com/lachiefreedom), [@llagoon3](https://github.com/llagoon3).
- GitHub authorization recovery moves configuration reads off the Gateway thread and defers stale results when settings change during recovery. [#166936](https://github.com/openclaw/openclaw/pull/166936) Thanks [@steipete](https://github.com/steipete), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- External plugins with many small dependency files can prepare sooner for Gateway startup and Doctor while retaining complete resource snapshots. [#166955](https://github.com/openclaw/openclaw/pull/166955) Thanks [@jjjhenriksen](https://github.com/jjjhenriksen), [@RomneyDa](https://github.com/RomneyDa).
- Unchanged plugin source warnings stop repeating after configuration reloads; inspection diagnostics stay available. [#167023](https://github.com/openclaw/openclaw/pull/167023) Thanks [@steipete](https://github.com/steipete).
- A replacement Crabbox can be created after stopping one even when the provider repeats a tool-call ID. [#167058](https://github.com/openclaw/openclaw/pull/167058) Thanks [@obviyus](https://github.com/obviyus), [@yetval](https://github.com/yetval).
- Coding-agent session checks and resets avoid repeated metadata work on the Gateway main thread. [#167086](https://github.com/openclaw/openclaw/pull/167086) Thanks [@steipete](https://github.com/steipete).
- Plugin completion hooks receive the originating scheduled job ID for successful, failed and aborted agent runs. [#167124](https://github.com/openclaw/openclaw/pull/167124) [Docs](https://docs.openclaw.ai/plugins/hooks/prompt-and-session) · Thanks [@xyrolle](https://github.com/xyrolle), [@obviyus](https://github.com/obviyus).
- Sessions requiring native workers can finish workspace setup and reach their first model request instead of failing with HTTP 500. [#167162](https://github.com/openclaw/openclaw/pull/167162) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Code Mode guidance explains how to read declaration text from the file record, helping agents avoid an initial failed discovery call. [#167286](https://github.com/openclaw/openclaw/pull/167286) Thanks [@obviyus](https://github.com/obviyus), [@rclarke0](https://github.com/rclarke0).
- Context-engine plugins clear abandoned unaccepted turns and warn when cleanup or restart recovery skips them. [#167333](https://github.com/openclaw/openclaw/pull/167333) Thanks [@steipete](https://github.com/steipete), [@setieroth](https://github.com/setieroth).
- Plugin builds and validation reject malformed metadata text before silently rewriting author-owned files. [#167391](https://github.com/openclaw/openclaw/pull/167391) Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- SSH sandboxes can initialize workspaces on affected Linux volumes, with quicker guarded plugin captures and more useful temporary-directory errors. [#167476](https://github.com/openclaw/openclaw/pull/167476) [Docs](https://docs.openclaw.ai/gateway/sandboxing/ssh-backend) · Thanks [@steipete](https://github.com/steipete), [@valkyriweb](https://github.com/valkyriweb), [@joequant](https://github.com/joequant).
- Official ClawHub plugin installs first try a build matching the running OpenClaw version, reducing avoidable compatibility failures. [#167485](https://github.com/openclaw/openclaw/pull/167485) [Docs](https://docs.openclaw.ai/cli/plugins/install) · Thanks [@steipete](https://github.com/steipete), [@charlesBerg-ux](https://github.com/charlesBerg-ux).
- Meeting transcript exports remain consistent during concurrent edits and protect previously saved artifacts if exporter ownership is revoked. [#167532](https://github.com/openclaw/openclaw/pull/167532) Thanks [@steipete](https://github.com/steipete).
- Scheduled model-catalog updates reuse unchanged external plugins, avoiding an unnecessary post-startup reload that could stall the Gateway. [#167544](https://github.com/openclaw/openclaw/pull/167544) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@obviyus](https://github.com/obviyus), [@cmrstudio56](https://github.com/cmrstudio56).
- Windows plugins installed beneath directory junctions, including version-manager or Scoop paths, can pass package validation and load. [#167588](https://github.com/openclaw/openclaw/pull/167588) [Docs](https://docs.openclaw.ai/plugins/architecture-internals/load-pipeline) · Thanks [@steipete](https://github.com/steipete), [@JIRBOY](https://github.com/JIRBOY).
- GitHub issue and pull-request hovercards overlap avatar loading with the final visibility check to reduce waiting. [#167597](https://github.com/openclaw/openclaw/pull/167597) [Docs](https://docs.openclaw.ai/plugins/github) · Thanks [@steipete](https://github.com/steipete).
- Repeated Prometheus histogram scrapes use less formatting work. [#167618](https://github.com/openclaw/openclaw/pull/167618) Thanks [@steipete](https://github.com/steipete).
- Plugin-started turns correctly save finished status and timing without duplicate answers. [#167621](https://github.com/openclaw/openclaw/pull/167621) Thanks [@steipete](https://github.com/steipete).
- Known MCP tools stay visible while their server reconnects, with clearer explanations of genuine tool-definition changes. [#167642](https://github.com/openclaw/openclaw/pull/167642) [Docs](https://docs.openclaw.ai/tools/mcp) · Thanks [@steipete](https://github.com/steipete).
- Watching large skill trees creates less temporary background allocation. [#167644](https://github.com/openclaw/openclaw/pull/167644) Thanks [@steipete](https://github.com/steipete).
- Selected bundled plugins can reload despite an unused registry record, avoiding an unnecessary Gateway restart. [#167647](https://github.com/openclaw/openclaw/pull/167647) [Docs](https://docs.openclaw.ai/cli/plugins/uninstall-and-update) · Thanks [@steipete](https://github.com/steipete), [@mbelinky](https://github.com/mbelinky), [@jayzhou2309](https://github.com/jayzhou2309), [@Alix-007](https://github.com/Alix-007), [@giodl73-repo](https://github.com/giodl73-repo).
- Worker workspace synchronization rejects timed-out file listings instead of accepting incomplete results. [#167673](https://github.com/openclaw/openclaw/pull/167673) Thanks [@steipete](https://github.com/steipete).
- Plugin administration and initial Board dashboard writes occupy the Gateway's main thread with less database work. [#167702](https://github.com/openclaw/openclaw/pull/167702) Thanks [@steipete](https://github.com/steipete).
- Plugin authors can prepare transcript messages asynchronously before committing them under the original session's authority. [#167715](https://github.com/openclaw/openclaw/pull/167715) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate#await-locked-transcript-preparation) · [Docs](https://docs.openclaw.ai/plugins/sdk-migration/how-to-migrate#await-strict-transcript-message-preparation) · Thanks [@steipete](https://github.com/steipete).
- Conversation and plugin-state consumers receive committed updates and deletions without late results restoring superseded values. [#167731](https://github.com/openclaw/openclaw/pull/167731) Thanks [@steipete](https://github.com/steipete).
- GitHub reader descriptions and comments render recognized emoji shortcodes, including status marks in tables. [#167830](https://github.com/openclaw/openclaw/pull/167830) [Docs](https://docs.openclaw.ai/plugins/github) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Large Session Share catalogs refresh with less repeated work on the source gateway. [#167909](https://github.com/openclaw/openclaw/pull/167909) [Docs](https://docs.openclaw.ai/plugins/session-share) · [Docs](https://docs.openclaw.ai/plugins/sdk-runtime) · Thanks [@steipete](https://github.com/steipete).
- Prometheus duration percentiles can distinguish long-running work through one hour instead of flattening at ten minutes. [#167930](https://github.com/openclaw/openclaw/pull/167930) [Docs](https://docs.openclaw.ai/gateway/prometheus) · Thanks [@obviyus](https://github.com/obviyus), [@etzelm](https://github.com/etzelm).
- Plugins gain asynchronous session lookups, and Active Memory keeps incognito recall debugging transcripts private. [#167952](https://github.com/openclaw/openclaw/pull/167952) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/agent) · [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy) · [Docs](https://docs.openclaw.ai/concepts/active-memory/advanced-options) · Thanks [@steipete](https://github.com/steipete).
- Token and cost metrics include successful background work such as session titles and Activity recaps. [#167986](https://github.com/openclaw/openclaw/pull/167986) Thanks [@ericcurtin](https://github.com/ericcurtin), [@ruel225](https://github.com/ruel225), [@etzelm](https://github.com/etzelm), [@obviyus](https://github.com/obviyus).
- OpenAI-compatible APIs identify gateway-cancelled runs as cancellations instead of blaming a provider timeout. [#167995](https://github.com/openclaw/openclaw/pull/167995) [Docs](https://docs.openclaw.ai/gateway/openai-http-api) · [Docs](https://docs.openclaw.ai/gateway/openresponses-http-api) · Thanks [@steipete](https://github.com/steipete).
- Agents API conversations continue after native tool use while respecting web-search settings and session file permissions. [#168067](https://github.com/openclaw/openclaw/pull/168067) [Docs](https://docs.openclaw.ai/plugins/agentsapi) · Thanks [@steipete](https://github.com/steipete).
- Supported Agents API conversations saved by v2026.9.9 can continue after upgrading while keeping their remote conversation identity. [#168150](https://github.com/openclaw/openclaw/pull/168150) [Docs](https://docs.openclaw.ai/plugins/agentsapi) · Thanks [@steipete](https://github.com/steipete).
- Workboard cards keep running while fallback models are still trying and settle from the task's overall outcome. [#168215](https://github.com/openclaw/openclaw/pull/168215) [Docs](https://docs.openclaw.ai/plugins/workboard) · Thanks [@obviyus](https://github.com/obviyus), [@skyzhao1223](https://github.com/skyzhao1223), [@asikorskiy](https://github.com/asikorskiy), [@ericcurtin](https://github.com/ericcurtin).
- Applies saved per-session MCP server choices to the next Claude CLI turn. [#168393](https://github.com/openclaw/openclaw/pull/168393) [Docs](https://docs.openclaw.ai/tools/mcp) · Thanks [@steipete](https://github.com/steipete), [@dprev](https://github.com/dprev).
- Refuses oc-path edits that would corrupt unsupported file bytes and preserves the original file. [#168491](https://github.com/openclaw/openclaw/pull/168491) Thanks [@wangmiao0668000666](https://github.com/wangmiao0668000666), [@yetval](https://github.com/yetval).
- Keeps plugin summaries and new model requests working after an unrelated plugin reload. [#168916](https://github.com/openclaw/openclaw/pull/168916) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@jalehman](https://github.com/jalehman).
- Keeps incompatible-plugin errors and repair guidance inspectable without blocking healthy sibling inspection. [#168977](https://github.com/openclaw/openclaw/pull/168977) [Docs](https://docs.openclaw.ai/cli/plugins/inspect-and-diagnose) · Thanks [@steipete](https://github.com/steipete).
- Catalog refreshes reuse unchanged installed native plugins instead of retaining another loaded copy each time. [#169272](https://github.com/openclaw/openclaw/pull/169272) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@obviyus](https://github.com/obviyus), [@mcooks-cmd](https://github.com/mcooks-cmd), [@svdinu-jpg](https://github.com/svdinu-jpg), [@eduherranz](https://github.com/eduherranz).
- A failed native provider catalog refresh no longer leaves later requests using rejected configuration. [#169321](https://github.com/openclaw/openclaw/pull/169321) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Node commands and requests keep working when unrelated pairing activity updates only part of the device cache. [#169486](https://github.com/openclaw/openclaw/pull/169486) Thanks [@steipete](https://github.com/steipete).
- Node commands and events continue while other devices' pairing information is being written. [#169575](https://github.com/openclaw/openclaw/pull/169575) Thanks [@steipete](https://github.com/steipete), [@gisk0](https://github.com/gisk0).
- The deprecated session-header helper imports again without restoring return buttons; plugin authors should move to custom accessories before January 12, 2027. [#169746](https://github.com/openclaw/openclaw/pull/169746) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy#session-header-link-helper) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- MCP sign-in can finish when a provider such as Dropbox registers the same local callback without its port. [#170876](https://github.com/openclaw/openclaw/pull/170876) [Docs](https://docs.openclaw.ai/cli/mcp/transports) · Thanks [@steipete](https://github.com/steipete), [@9fw2pq8sgb-art](https://github.com/9fw2pq8sgb-art).
- Agents can explicitly end their active turn, reload a plugin after cleanup, and continue the same conversation with the result. [#171257](https://github.com/openclaw/openclaw/pull/171257) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson), [@steipete](https://github.com/steipete).
- Explicitly enabled standalone plugin files now register their Gateway hooks, including local tool-blocking policies. [#171330](https://github.com/openclaw/openclaw/pull/171330) [Docs](https://docs.openclaw.ai/plugins/hooks/tool-policy) · [Docs](https://docs.openclaw.ai/gateway/config-extensions) · Thanks [@holgergruenhagen](https://github.com/holgergruenhagen), [@obviyus](https://github.com/obviyus).
- After removing a local MCP server whose executable is missing, affected conversations can continue without a Gateway restart. [#171397](https://github.com/openclaw/openclaw/pull/171397) Thanks [@joelagnel](https://github.com/joelagnel).
- When Tailscale Serve is disabled by tailnet policy, the Gateway can keep authenticated access available on the same computer. [#171509](https://github.com/openclaw/openclaw/pull/171509) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Eligible skills using the macos platform label appear in new agent sessions on compatible local or remote Macs. [#172214](https://github.com/openclaw/openclaw/pull/172214) [Docs](https://docs.openclaw.ai/tools/creating-skills) · [Docs](https://docs.openclaw.ai/tools/skills) · Thanks [@fhgffy](https://github.com/fhgffy), [@steipete](https://github.com/steipete), [@jessecq1995](https://github.com/jessecq1995).
- Temporary SDK exports restore 29 affected plugin imports, including the reported Zulip approval import; migrate before January 15, 2027 and use upsertAuthProfileWithLock for the removed auth-profile helper. [#173777](https://github.com/openclaw/openclaw/pull/173777) [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy#private-runtime-facade-exports) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@FtlC-ian](https://github.com/FtlC-ian).

</details>

## Web and native apps

The Dashboard handles reconnects and long chat histories with fewer interruptions, and terminal docks keep their tabs and output when moved. iPhone and iPad get roomier compact chat, fixes for duplicated streamed replies, and Cloudflare Access sign-in for protected Gateways. Mac fixes cover setup and reconnects.

<details class="release-source-toggle">
<summary>Dashboard, chat, and native-app changes</summary>

- Keep replies visible and the reading position steady while live output is handed over to saved history. [1f9022d](https://github.com/openclaw/openclaw/commit/1f9022d2af0336ede45b249f259e820e25f0d91b).
- The app preserves its Gateway process's existing startup readiness allowance [3d181e1](https://github.com/openclaw/openclaw/commit/3d181e1f22720fb1f994d7d0cbf9d4446277b174).
- Supporting browser integration keeps agents' tabs separate; compact iOS chat gives messages more room and preserves accessible speaker names. [3f76fe0](https://github.com/openclaw/openclaw/commit/3f76fe021990df309bfcd0905030520bb30f81f4)
- Pending chats retain their normal frame and saved layout with sending disabled until the new session is confirmed. [5a9a6d3](https://github.com/openclaw/openclaw/commit/5a9a6d3ae51a89c5fd923c5aab83e1ba88c13a0a)
- Retired iOS Gateway connections close their private network transport. [b3a37c2](https://github.com/openclaw/openclaw/commit/b3a37c253b7d2e65e7926298a2b933ba8cc658fa)
- Session-list refreshes share work when startup and background refresh overlap. [d60b095](https://github.com/openclaw/openclaw/commit/d60b0950a2d911da471c00fdb1648f7c5d61bd09)
- The Logs page shows current logs after a Gateway restart and keeps visible rows when refresh fails. [ddd39ec](https://github.com/openclaw/openclaw/commit/ddd39ecb5bc94b4c7b197c0278168c1d64d29948)
- Saved iOS gateways coordinate Cloudflare Access sign-in and cleanup across profiles. [#147238](https://github.com/openclaw/openclaw/pull/147238) Thanks [@vincentkoc](https://github.com/vincentkoc), [@Solvely-Colin](https://github.com/Solvely-Colin).
- Connect native iOS chat and media to gateways protected by Cloudflare Access through browser sign-in. [#147244](https://github.com/openclaw/openclaw/pull/147244) [Docs](https://docs.openclaw.ai/platforms/ios#cloudflare-access-sign-in) · Thanks [@vincentkoc](https://github.com/vincentkoc), [@Solvely-Colin](https://github.com/Solvely-Colin), [@TheAngryPit](https://github.com/TheAngryPit), [@joshavant](https://github.com/joshavant).
- Saved assistant commentary appears once while a Control UI run continues, preserving surrounding output order. [#158459](https://github.com/openclaw/openclaw/pull/158459) Thanks [@RomneyDa](https://github.com/RomneyDa).
- macOS can wait up to five minutes for the same launchd Gateway to finish starting after reboot. [#158954](https://github.com/openclaw/openclaw/pull/158954) Thanks [@MertBasar0](https://github.com/MertBasar0), [@cjn119-ui](https://github.com/cjn119-ui).
- Seven rare Lobsterdex visitors bring the collection to 49 characters. [#159815](https://github.com/openclaw/openclaw/pull/159815) [Docs](https://docs.openclaw.ai/web/lobster) · Thanks [@hannesrudolph](https://github.com/hannesrudolph).
- Removing a Settings list or map entry keeps keyboard focus in the same collection. [#160131](https://github.com/openclaw/openclaw/pull/160131) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@moerai](https://github.com/moerai), [@steipete](https://github.com/steipete), [@patrick-erichsen](https://github.com/patrick-erichsen).
- Change model and reasoning preferences during a reply so waiting messages use the latest saved choices. [#160440](https://github.com/openclaw/openclaw/pull/160440) [Docs](https://docs.openclaw.ai/tools/thinking) · [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@hxy91819](https://github.com/hxy91819), [@steipete](https://github.com/steipete).
- Future timestamps keep future wording when calendar-date formatting fails. [#164269](https://github.com/openclaw/openclaw/pull/164269) Thanks [@steipete](https://github.com/steipete).
- Chat file-link tooltips let users copy the full path without opening a preview, with keyboard access and copy feedback. [#164431](https://github.com/openclaw/openclaw/pull/164431) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@jjjhenriksen](https://github.com/jjjhenriksen), [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Windows nodes reduce reply delays from workspace controls and can run fresh commands after successful runtime refresh cleanup. [#164523](https://github.com/openclaw/openclaw/pull/164523) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/session-lifecycle) · Thanks [@steipete](https://github.com/steipete).
- Review no longer attributes unchanged pre-session edits to the session in the covered Uncommitted view case. [#164671](https://github.com/openclaw/openclaw/pull/164671) Thanks [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- Device-only text loads when Devices opens, reducing the initial Control UI download. [#164735](https://github.com/openclaw/openclaw/pull/164735) Thanks [@shakkernerd](https://github.com/shakkernerd), [@steipete](https://github.com/steipete).
- Waiting Control UI browsers show declined or expired access requests and offer an explicit retry. [#164793](https://github.com/openclaw/openclaw/pull/164793) [Docs](https://docs.openclaw.ai/web/control-ui/connect-and-pair) · [Docs](https://docs.openclaw.ai/cli/devices) · [Docs](https://docs.openclaw.ai/gateway/protocol/auth) · Thanks [@steipete](https://github.com/steipete).
- Sending a chat message keeps the model picker steady, with loading feedback reserved for the actual model catalog. [#164963](https://github.com/openclaw/openclaw/pull/164963) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Activity recaps refresh in subscribed clients after conversation compaction. [#165024](https://github.com/openclaw/openclaw/pull/165024) Thanks [@steipete](https://github.com/steipete).
- New session tabs no longer show Disconnected during normal initial connection. [#165051](https://github.com/openclaw/openclaw/pull/165051) Thanks [@obviyus](https://github.com/obviyus), [@vyctorbrzezowski](https://github.com/vyctorbrzezowski).
- Native chat names Tool Search activity clearly and aligns tool icon meanings across desktop, mobile, and web. [#165095](https://github.com/openclaw/openclaw/pull/165095) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · [Docs](https://docs.openclaw.ai/concepts/progress-drafts) · Thanks [@steipete](https://github.com/steipete).
- Settings preserves composing text and lets the focused control handle Escape without accidental saves or dismissal. [#165100](https://github.com/openclaw/openclaw/pull/165100) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@steipete](https://github.com/steipete).
- Review uses available header space for long branch names and shows the full comparison on hover. [#165126](https://github.com/openclaw/openclaw/pull/165126) Thanks [@steipete](https://github.com/steipete).
- Control UI metadata refreshes send less duplicate model data and avoid unnecessary projection work. [#165190](https://github.com/openclaw/openclaw/pull/165190) [Docs](https://docs.openclaw.ai/gateway/protocol/operator-methods) · Thanks [@steipete](https://github.com/steipete).
- Choose an agent avatar for the browser tab icon to distinguish agents while keeping activity and attention indicators. [#165201](https://github.com/openclaw/openclaw/pull/165201) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski), [@jacobtomlinson](https://github.com/jacobtomlinson).
- Concurrent authorized connections can share successful Gateway reads, reducing repeated work and queues for status-like requests. [#165203](https://github.com/openclaw/openclaw/pull/165203) [Docs](https://docs.openclaw.ai/gateway/protocol/operator-methods) · [Docs](https://docs.openclaw.ai/plugins/sdk-overview/infrastructure) · Thanks [@steipete](https://github.com/steipete).
- Talk settings text downloads when Settings loads, slightly reducing the initial Control UI download. [#165228](https://github.com/openclaw/openclaw/pull/165228) Thanks [@shakkernerd](https://github.com/shakkernerd), [@steipete](https://github.com/steipete).
- macOS session actions and sleep/wake retries stay bound to their original Gateway; logging verbosity changes apply immediately to existing loggers. [#165307](https://github.com/openclaw/openclaw/pull/165307) [Docs](https://docs.openclaw.ai/platforms/mac/logging) · Thanks [@steipete](https://github.com/steipete).
- macOS respects the native Claude catalog opt-out; microphone diagnostics share local wake-word capture, yield to Talk/push-to-talk and release capture when closed. [#165318](https://github.com/openclaw/openclaw/pull/165318) [Docs](https://docs.openclaw.ai/platforms/mac/voicewake) · [Docs](https://docs.openclaw.ai/platforms/mac/icon) · Thanks [@steipete](https://github.com/steipete).
- Unusual model-provider IDs display readable labels instead of selecting inherited object properties. [#165339](https://github.com/openclaw/openclaw/pull/165339) Thanks [@steipete](https://github.com/steipete).
- Control UI dialogs open and close without animation when the operating system requests reduced motion. [#165353](https://github.com/openclaw/openclaw/pull/165353) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@steipete](https://github.com/steipete).
- The macOS no-speech message gains translations in 21 non-English locales. [#165369](https://github.com/openclaw/openclaw/pull/165369)
- The compact System busyness widget keeps CPU and memory in the same order as the expanded view, before Gateway ping. [#165393](https://github.com/openclaw/openclaw/pull/165393) [Docs](https://docs.openclaw.ai/web/control-ui/feature-reference) · Thanks [@steipete](https://github.com/steipete).
- Agent names and avatars remain visible while failed identity refreshes wait before retrying during Gateway restarts. [#165443](https://github.com/openclaw/openclaw/pull/165443) Thanks [@steipete](https://github.com/steipete).
- iOS keeps spoken replies visible, preserves local-answer order, and lets large continuation notices expand on demand. [#165473](https://github.com/openclaw/openclaw/pull/165473) Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez), [@Solvely-Colin](https://github.com/Solvely-Colin).
- Android releases decoded attachment image memory after JPEG encoding succeeds or fails. [#165562](https://github.com/openclaw/openclaw/pull/165562) Thanks [@steipete](https://github.com/steipete).
- The macOS CLI rejects oversized numeric ports and handles very large discovery timeouts without overflow crashes. [#165630](https://github.com/openclaw/openclaw/pull/165630) Thanks [@steipete](https://github.com/steipete).
- Android’s accent colors stay easy to tap on narrow screens. [#165639](https://github.com/openclaw/openclaw/pull/165639) Thanks [@IWhatsskill](https://github.com/IWhatsskill).
- Unrecognized model, Mac, plugin and update identifiers now receive the intended labels, icons or help. [#165647](https://github.com/openclaw/openclaw/pull/165647) Thanks [@steipete](https://github.com/steipete).
- Native iOS chat does less repeated parsing and menu work as replies stream. [#165927](https://github.com/openclaw/openclaw/pull/165927) Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez), [@Solvely-Colin](https://github.com/Solvely-Colin).
- Native app translations use the updated degraded-check wording. [#165959](https://github.com/openclaw/openclaw/pull/165959)
- Expanded agent updates show one source link instead of duplicate attribution rows. [#166006](https://github.com/openclaw/openclaw/pull/166006) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Apple patch previews and macOS failed update notifications avoid crashes caused by extreme numeric values. [#166036](https://github.com/openclaw/openclaw/pull/166036) Thanks [@steipete](https://github.com/steipete).
- Optional lobster-pet interactions handle a browser refusal to resume sound without an unhandled rejection. [#166043](https://github.com/openclaw/openclaw/pull/166043) Thanks [@steipete](https://github.com/steipete).
- Compact iOS chat gives replies more width, preserves accessible speaker names, and adds tails to completed standalone bubbles. [#166067](https://github.com/openclaw/openclaw/pull/166067) [Docs](https://docs.openclaw.ai/platforms/ios) · Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez), [@Solvely-Colin](https://github.com/Solvely-Colin).
- Dictate a follow-up while the assistant responds, with normal Send feedback and no duplicated mobile transcript insertion. [#166075](https://github.com/openclaw/openclaw/pull/166075) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Normal shell exit closes its terminal tab and an otherwise empty bottom or right dock. [#166087](https://github.com/openclaw/openclaw/pull/166087) [Docs](https://docs.openclaw.ai/web/control-ui/panels) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- History and session lists can load while unrelated catalog or subscription preparation waits. [#166122](https://github.com/openclaw/openclaw/pull/166122) [Docs](https://docs.openclaw.ai/gateway/protocol/transport) · Thanks [@steipete](https://github.com/steipete).
- Attention warnings clear while messages actively wait for settings or execute commands. [#166124](https://github.com/openclaw/openclaw/pull/166124) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Open supported running-work counts or child names to inspect delegated work beside chat; narrow panes show the work panel full width. [#166142](https://github.com/openclaw/openclaw/pull/166142) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Terminal prompts display bundled Nerd Font symbols, and a browser-local font setting updates open terminals without restarting shells. [#166180](https://github.com/openclaw/openclaw/pull/166180) [Docs](https://docs.openclaw.ai/web/control-ui/panels#terminal-fonts) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Link previews consume only a bounded page head, reducing Gateway parsing work. [#166195](https://github.com/openclaw/openclaw/pull/166195) [Docs](https://docs.openclaw.ai/web/control-ui/security-model) · Thanks [@steipete](https://github.com/steipete).
- Moving a terminal between bottom and right docks keeps its tabs, selection and output beside the selected chat without replacing the shell. [#166213](https://github.com/openclaw/openclaw/pull/166213) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Parent chats identify failed or blocked children, show their full diagnostic, and link directly to the affected session. [#166224](https://github.com/openclaw/openclaw/pull/166224) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@vincentkoc](https://github.com/vincentkoc).
- Open chats reuse unchanged command menus and model choices instead of repeatedly fetching the same metadata. [#166250](https://github.com/openclaw/openclaw/pull/166250) [Docs](https://docs.openclaw.ai/web/control-ui) · [Docs](https://docs.openclaw.ai/gateway/protocol/operator-methods) · Thanks [@steipete](https://github.com/steipete).
- Chats following the latest message settle at the true end after late layout measurements. [#166261](https://github.com/openclaw/openclaw/pull/166261) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Long chat history loads in smaller pages while complete referenced tool output remains available for inspection, copying and download. [#166263](https://github.com/openclaw/openclaw/pull/166263) [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-session-control) · Thanks [@steipete](https://github.com/steipete).
- Background PR counts avoid long missing-object scans in partial clones and show unavailable counts until required contents are fetched. [#166264](https://github.com/openclaw/openclaw/pull/166264) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@steipete](https://github.com/steipete).
- Child diagnostic notices align with the chat composer on desktop and mobile. [#166312](https://github.com/openclaw/openclaw/pull/166312) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Native iOS and macOS chat shows one copy of a streamed reply already recorded in the current turn. [#166313](https://github.com/openclaw/openclaw/pull/166313) Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez).
- Native task lists display saved progress markup as readable bars and cleaner collapsed summaries. [#166321](https://github.com/openclaw/openclaw/pull/166321) [Docs](https://docs.openclaw.ai/tools/progress-card) · Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez), [@Solvely-Colin](https://github.com/Solvely-Colin).
- Unlocked Lobsterdex artwork can identify personal Gateway browser tabs. [#166325](https://github.com/openclaw/openclaw/pull/166325) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@vyctorbrzezowski](https://github.com/vyctorbrzezowski), [@jacobtomlinson](https://github.com/jacobtomlinson).
- Empty child-session notices stop leaving blank space above the chat composer. [#166347](https://github.com/openclaw/openclaw/pull/166347) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Twenty locales receive refreshed approval-discard prompts and worker status wording. [#166353](https://github.com/openclaw/openclaw/pull/166353)
- Native chat keeps tool titles readable and shows missing outcomes separately as No result. [#166359](https://github.com/openclaw/openclaw/pull/166359) Thanks [@Marvinthebored](https://github.com/Marvinthebored), [@Peetiegonzalez](https://github.com/Peetiegonzalez), [@Solvely-Colin](https://github.com/Solvely-Colin).
- A session can hide the branch and idle Publish PR row above its composer. [#166366](https://github.com/openclaw/openclaw/pull/166366) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Twenty existing locales receive translated Claude Code sign-in guidance. [#166390](https://github.com/openclaw/openclaw/pull/166390)
- Shortened widget repair requests no longer split a boundary emoji into malformed text. [#166392](https://github.com/openclaw/openclaw/pull/166392) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Android web chat can select STL and other files previously disabled by its File picker. [#166402](https://github.com/openclaw/openclaw/pull/166402) Thanks [@DonnieFi](https://github.com/DonnieFi).
- Board and widget-document reads incur less overhead under host load. [#166403](https://github.com/openclaw/openclaw/pull/166403) [Docs](https://docs.openclaw.ai/web/dashboard-architecture) · Thanks [@steipete](https://github.com/steipete).
- Repeated multi-agent views reuse prepared avatar thumbnails instead of reprocessing unchanged images. [#166429](https://github.com/openclaw/openclaw/pull/166429) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@steipete](https://github.com/steipete).
- Subagents stay in Running while their descendants are active and move to Finished once that work settles. [#166442](https://github.com/openclaw/openclaw/pull/166442) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@steipete](https://github.com/steipete).
- Control UI keeps the actual reply when a ClawHub search finds no recommendations. [#166452](https://github.com/openclaw/openclaw/pull/166452) Thanks [@a6xa3](https://github.com/a6xa3), [@obviyus](https://github.com/obviyus).
- Background PR comparisons avoid network fetches and stop dependent checks after timeout while keeping the branch visible. [#166461](https://github.com/openclaw/openclaw/pull/166461) Thanks [@steipete](https://github.com/steipete).
- Link previews include queue time in their deadline, reuse shared image downloads, and withhold stale results after access changes. [#166474](https://github.com/openclaw/openclaw/pull/166474) [Docs](https://docs.openclaw.ai/web/control-ui/security-model) · Thanks [@steipete](https://github.com/steipete).
- Valid Codex configuration no longer hides paired-Mac sessions, and catalog browsing does not require supervision tools. [#166510](https://github.com/openclaw/openclaw/pull/166510) [Docs](https://docs.openclaw.ai/plugins/codex-supervision) · Thanks [@steipete](https://github.com/steipete).
- Android notification events can start processing when recurring heartbeats are disabled with every: 0m. [#166522](https://github.com/openclaw/openclaw/pull/166522) [Docs](https://docs.openclaw.ai/gateway/heartbeat) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@BensonChen1204](https://github.com/BensonChen1204).
- Canvas widget error notices and repair requests avoid broken emoji at truncation boundaries, including reports from saved widgets. [#166563](https://github.com/openclaw/openclaw/pull/166563) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Restores selecting and copying Workboard notes and gives longer notes a larger resizable editor. [#166625](https://github.com/openclaw/openclaw/pull/166625) Thanks [@rogeriochaves](https://github.com/rogeriochaves), [@llmsommelier](https://github.com/llmsommelier), [@obviyus](https://github.com/obviyus).
- Opens long conversations with nested tool activity faster by avoiding unrelated history reads. [#166631](https://github.com/openclaw/openclaw/pull/166631) Thanks [@steipete](https://github.com/steipete).
- Confirms successful terminal text copies with a brief notice while keeping keyboard focus in the terminal. [#166669](https://github.com/openclaw/openclaw/pull/166669) Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Makes Linux Quick Chat respect Escape and the latest show or hide request during startup. [#166673](https://github.com/openclaw/openclaw/pull/166673) Thanks [@steipete](https://github.com/steipete).
- Restores native chat Mermaid diagrams when the bundled library uses hashed asset filenames. [#166680](https://github.com/openclaw/openclaw/pull/166680) Thanks [@steipete](https://github.com/steipete).
- Handles unusual Talk microphone errors with the normal generic failure result. [#166682](https://github.com/openclaw/openclaw/pull/166682) Thanks [@steipete](https://github.com/steipete).
- Large compressed conversation histories can load faster with less temporary allocation while preserving selected messages and corruption checks. [#166778](https://github.com/openclaw/openclaw/pull/166778) Thanks [@steipete](https://github.com/steipete).
- Gateway shutdown finishes accepted voice persistence, and post-call summaries avoid duplicate sends after marker failures and respect custom conversation stores. [#166795](https://github.com/openclaw/openclaw/pull/166795) [Docs](https://docs.openclaw.ai/nodes/talk/realtime-sessions) · Thanks [@steipete](https://github.com/steipete).
- Activity shows compact app summaries and watched conversations before expandable grouped connection diagnostics. [#166814](https://github.com/openclaw/openclaw/pull/166814) [Docs](https://docs.openclaw.ai/concepts/multi-user) · Thanks [@steipete](https://github.com/steipete).
- The mobile model selector has a slimmer highlight and more label spacing while retaining its touch target. [#166819](https://github.com/openclaw/openclaw/pull/166819) Thanks [@steipete](https://github.com/steipete).
- Keyboard, goal and command submissions clear the submitted collaborator draft preview before sending. [#166824](https://github.com/openclaw/openclaw/pull/166824) Thanks [@steipete](https://github.com/steipete).
- Managed chat images have clear previews with Copy and Download in an adjacent image actions menu. [#166829](https://github.com/openclaw/openclaw/pull/166829) Thanks [@steipete](https://github.com/steipete).
- The shared native-app runtime improves worker termination at memory limits and idle-worker cleanup. [#166838](https://github.com/openclaw/openclaw/pull/166838) Thanks [@steipete](https://github.com/steipete).
- Holding the microphone to begin dictation then releasing it keeps recording until a separate Stop tap. [#166843](https://github.com/openclaw/openclaw/pull/166843) Thanks [@alfredjbclaw](https://github.com/alfredjbclaw), [@obviyus](https://github.com/obviyus).
- Starting a chat keeps the header, submitted prompt and disabled message box visible without disrupting navigation or saved splits. [#166865](https://github.com/openclaw/openclaw/pull/166865) Thanks [@steipete](https://github.com/steipete).
- iOS Access settings and expired setup-code guidance gain translations in 21 non-English locales. [#166873](https://github.com/openclaw/openclaw/pull/166873)
- Native chat keeps later backtick code examples literal in an affected combination of inline formulas and code spans. [#166951](https://github.com/openclaw/openclaw/pull/166951) Thanks [@steipete](https://github.com/steipete).
- PR automation checkboxes respond immediately and remain independently usable while saves finish, with less popup movement. [#166976](https://github.com/openclaw/openclaw/pull/166976) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Recent projects and folders can load without waiting for session display details to refresh. [#166987](https://github.com/openclaw/openclaw/pull/166987) [Docs](https://docs.openclaw.ai/web/control-ui/sessions-and-sidebar) · Thanks [@steipete](https://github.com/steipete).
- Stopped replies keep their interruption marker in the conversation without a duplicate badge above the editor. [#166994](https://github.com/openclaw/openclaw/pull/166994) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Workboard downloads its full page when opened and explains how to recover if that download fails. [#167006](https://github.com/openclaw/openclaw/pull/167006) [Docs](https://docs.openclaw.ai/plugins/feature-plugins) · Thanks [@vincentkoc](https://github.com/vincentkoc).
- Open chats pause automatic read requests and identity refreshes during Gateway restarts and pace temporary retries. [#167020](https://github.com/openclaw/openclaw/pull/167020) Thanks [@steipete](https://github.com/steipete).
- Returning to a tab preserves instructions to reload, fix credentials or request pairing after a rejected connection. [#167031](https://github.com/openclaw/openclaw/pull/167031) Thanks [@steipete](https://github.com/steipete).
- Workboard's column color selector displays a readable Color label instead of a translation key. [#167082](https://github.com/openclaw/openclaw/pull/167082) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Repeated Publish PR option requests avoid rediscovering the same managed worktree's Git target. [#167189](https://github.com/openclaw/openclaw/pull/167189) Thanks [@steipete](https://github.com/steipete).
- Opening a chat no longer briefly flashes timeout cards for expired subagent links. [#167232](https://github.com/openclaw/openclaw/pull/167232) Thanks [@jalehman](https://github.com/jalehman).
- Browser tab icon settings gain translated labels across 20 Control UI languages. [#167289](https://github.com/openclaw/openclaw/pull/167289)
- Browser-tab icon settings and their browser-local collection explanations are translated into 20 languages. [#167307](https://github.com/openclaw/openclaw/pull/167307)
- Recent and discovered projects load faster when substantial session history is stored. [#167322](https://github.com/openclaw/openclaw/pull/167322) Thanks [@steipete](https://github.com/steipete).
- iOS readiness-check instructions and completion messages gain translations in 21 non-English locales. [#167329](https://github.com/openclaw/openclaw/pull/167329)
- Renaming or recoloring a Sessions board preserves columns saved elsewhere, and mistyped Workboard status filters report valid choices. [#167348](https://github.com/openclaw/openclaw/pull/167348) Thanks [@steipete](https://github.com/steipete).
- Control UI reconnects avoid a Gateway-wide stall caused by repeatedly loading large external plugins for a cold tool list. [#167374](https://github.com/openclaw/openclaw/pull/167374) Thanks [@jalehman](https://github.com/jalehman).
- Failed GitHub account discovery in chat can be retried or dismissed without leaving an intrusive publication error above the composer. [#167375](https://github.com/openclaw/openclaw/pull/167375) Thanks [@jalehman](https://github.com/jalehman).
- Plugin catalog status dots align with the plugin icon and name, including long-name cards. [#167400](https://github.com/openclaw/openclaw/pull/167400) Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Control UI initial loading waits through Gateway restarts and resumes without repeatedly retrying the same unavailable connection. [#167407](https://github.com/openclaw/openclaw/pull/167407) Thanks [@steipete](https://github.com/steipete).
- Native chat labels for background tasks and injected context gain translations in 21 non-English locales. [#167408](https://github.com/openclaw/openclaw/pull/167408)
- Workboard dispatch shows each failed card's reason and offers the approved admin-request route when the card and caller qualify. [#167427](https://github.com/openclaw/openclaw/pull/167427) [Docs](https://docs.openclaw.ai/cli/workboard) · Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@mightyx](https://github.com/mightyx), [@obviyus](https://github.com/obviyus).
- iPhone and iPad Safari show one Attach action, with camera, photos and files offered by the native picker. [#167590](https://github.com/openclaw/openclaw/pull/167590) Thanks [@steipete](https://github.com/steipete).
- Status checks for isolated macOS installations promptly report their absent Gateway instead of waiting on an unrelated host service. [#167677](https://github.com/openclaw/openclaw/pull/167677) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Inbox mentions stay dismissible during recap, automation-badge, and turn-status updates. [#167689](https://github.com/openclaw/openclaw/pull/167689) Thanks [@steipete](https://github.com/steipete).
- Workspace icons load after Gateway startup, and disconnected HTTP requests stop cleanly. [#167697](https://github.com/openclaw/openclaw/pull/167697) [Docs](https://docs.openclaw.ai/gateway/prometheus) · Thanks [@steipete](https://github.com/steipete).
- Talk saves ordinary call records and transcript bookkeeping in a background database worker while preserving accepted writes through cleanup. [#167720](https://github.com/openclaw/openclaw/pull/167720) Thanks [@steipete](https://github.com/steipete).
- Firefox keeps selected agent-avatar or Lobsterdex tab artwork after appearance updates. [#167759](https://github.com/openclaw/openclaw/pull/167759) [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Agent-avatar browser tab icons can use square, rounded, or circular shapes from Appearance settings. [#167809](https://github.com/openclaw/openclaw/pull/167809) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Opening chat avoids fetching unopened conversations and shares overlapping app-discovery requests. [#167906](https://github.com/openclaw/openclaw/pull/167906) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · [Docs](https://docs.openclaw.ai/web/control-ui/feature-reference) · Thanks [@steipete](https://github.com/steipete).
- Gateways reuse shared update payloads when sending agent and presence events to multiple viewers. [#167961](https://github.com/openclaw/openclaw/pull/167961) Thanks [@steipete](https://github.com/steipete).
- The Control UI sends fewer idle identity requests and pauses background reads during announced gateway restarts. [#167968](https://github.com/openclaw/openclaw/pull/167968) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@steipete](https://github.com/steipete).
- Repeat Control UI visits reuse unchanged uploaded avatars and retained build assets with fewer downloads. [#167993](https://github.com/openclaw/openclaw/pull/167993) [Docs](https://docs.openclaw.ai/web/control-ui/offline-and-reconnect) · Thanks [@steipete](https://github.com/steipete).
- Conversation navigation appears only when the loaded chat needs scrolling, keeping short chats clear. [#168010](https://github.com/openclaw/openclaw/pull/168010) Thanks [@steipete](https://github.com/steipete).
- Reloading the Control UI reuses unchanged plugin styles and scripts, including after a scoped cookie renews. [#168023](https://github.com/openclaw/openclaw/pull/168023) [Docs](https://docs.openclaw.ai/web/control-ui/offline-and-reconnect) · Thanks [@steipete](https://github.com/steipete).
- iPhone and Mac apps recover unresponsive Gateway connections sooner after network changes and resume retries when connectivity returns. [#168024](https://github.com/openclaw/openclaw/pull/168024) Thanks [@steipete](https://github.com/steipete).
- Themes can customize dashboard names, icons and working indicators; terminal themes use a quieter neutral presentation. [#168027](https://github.com/openclaw/openclaw/pull/168027) [Docs](https://docs.openclaw.ai/tools/theme) · [Docs](https://docs.openclaw.ai/plugins/manifest/surfaces#themes) · [Docs](https://docs.openclaw.ai/web/control-ui/settings) · Thanks [@steipete](https://github.com/steipete).
- Optional question cards use less space by leading with the question and removing repeated visible instructions. [#168040](https://github.com/openclaw/openclaw/pull/168040) Thanks [@steipete](https://github.com/steipete).
- Take photo opens device capture directly in recognized Android browsers in Chat and New Session. [#168049](https://github.com/openclaw/openclaw/pull/168049) [Docs](https://docs.openclaw.ai/web/control-ui/chat) · Thanks [@steipete](https://github.com/steipete).
- Reopened dashboards show saved titles and panel positions consistently while keeping one loading placeholder until widgets are ready. [#168073](https://github.com/openclaw/openclaw/pull/168073) [Docs](https://docs.openclaw.ai/web/control-ui/offline-and-reconnect) · Thanks [@steipete](https://github.com/steipete).
- The Mac app reconnects automatically after a trusted Gateway certificate renewal, including recovery after network loss or a restart. [#168151](https://github.com/openclaw/openclaw/pull/168151) [Docs](https://docs.openclaw.ai/platforms/mac/remote) · Thanks [@steipete](https://github.com/steipete), [@fuller-stack-dev](https://github.com/fuller-stack-dev).
- Refreshes Activity message previews when archived conversation history is restored. [#168397](https://github.com/openclaw/openclaw/pull/168397) Thanks [@steipete](https://github.com/steipete).
- Lets chats recover after a server update and reopen the same conversation link. [#168941](https://github.com/openclaw/openclaw/pull/168941) Thanks [@steipete](https://github.com/steipete).
- File attachments finish with one usable card instead of a false error or duplicate. [#169093](https://github.com/openclaw/openclaw/pull/169093) Thanks [@steipete](https://github.com/steipete).
- Automatic recovery reloads reopen the same chat with its draft instead of a Not found page. [#169194](https://github.com/openclaw/openclaw/pull/169194) [Docs](https://docs.openclaw.ai/web/urls) · Thanks [@steipete](https://github.com/steipete).
- Mac local setup saves missing Gateway authentication and reduces runtime preparation and connection delays. [#169403](https://github.com/openclaw/openclaw/pull/169403) [Docs](https://docs.openclaw.ai/platforms/mac/bundled-gateway) · Thanks [@steipete](https://github.com/steipete).
- Control UI chats continue through unrelated pairing activity and ordinary tab reconnects while explicit revocation still stops affected work. [#169457](https://github.com/openclaw/openclaw/pull/169457) Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333).
- The Mac app recognizes its protected Bun Gateway command during update recovery instead of remaining on the help screen for this parser error. [#170006](https://github.com/openclaw/openclaw/pull/170006) Thanks [@steipete](https://github.com/steipete), [@jokerman1302-eng](https://github.com/jokerman1302-eng), [@davidmackrory-byte](https://github.com/davidmackrory-byte), [@josephsilvagnoli](https://github.com/josephsilvagnoli).
- Spoken Talk requests can continue after voice setup finishes instead of cancelling immediately while still connected. [#170083](https://github.com/openclaw/openclaw/pull/170083) Thanks [@brokemac79](https://github.com/brokemac79).
- Queued Swarm session updates retain their publication work after task completion; the later shutdown fix waits for accepted updates before closing clients. [#170231](https://github.com/openclaw/openclaw/pull/170231) Thanks [@steipete](https://github.com/steipete).
- Verified external macOS terminals can restart the Gateway despite an unreadable process ancestor. [#170354](https://github.com/openclaw/openclaw/pull/170354) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Gateway shutdown waits for accepted session updates to publish before closing connected clients. [#170555](https://github.com/openclaw/openclaw/pull/170555) Thanks [@steipete](https://github.com/steipete).
- macOS Gateway repair recognizes overlapping service loading after native inspection confirms the service is loaded. [#170740](https://github.com/openclaw/openclaw/pull/170740) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Mac app recovery keeps a newer managed Gateway and can restore its missing Node service rather than attempting a downgrade. [#170766](https://github.com/openclaw/openclaw/pull/170766) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Open dashboard tabs stay connected when a busy Gateway delays application heartbeats, preserving pending requests. [#171253](https://github.com/openclaw/openclaw/pull/171253) Thanks [@steipete](https://github.com/steipete).
- Gateway request failures can report an error while keeping a healthy connection open for recovery requests. [#171303](https://github.com/openclaw/openclaw/pull/171303) Thanks [@steipete](https://github.com/steipete).
- Mac node commands consistently find tools in preferred folders after launching the app from Finder, Dock or Spotlight. [#171460](https://github.com/openclaw/openclaw/pull/171460) Thanks [@brianmcguire](https://github.com/brianmcguire), [@steipete](https://github.com/steipete), [@jamiezigelbaum](https://github.com/jamiezigelbaum).
- Gemini3.8 Talk saves spoken questions alongside replies so both sides remain after Stop and reload. [#171506](https://github.com/openclaw/openclaw/pull/171506) Thanks [@masatohoshino](https://github.com/masatohoshino), [@steipete](https://github.com/steipete).
- Mac app Retry repairs plugin links, checks the bundled Gateway and clears the incomplete-update warning after recovery succeeds; failures show the cause. [#171508](https://github.com/openclaw/openclaw/pull/171508) Thanks [@RomneyDa](https://github.com/RomneyDa), [@shanselman](https://github.com/shanselman).
- Mac Companion setup can finish checking a saved AI sign-in after wizard replies instead of failing with expired caller authority. [#171667](https://github.com/openclaw/openclaw/pull/171667) Thanks [@steipete](https://github.com/steipete), [@enter501](https://github.com/enter501).
- Mac service restarts preserve multiline credentials, quotes, and whitespace; restore any already-truncated value and run openclaw gateway install --force. [#171740](https://github.com/openclaw/openclaw/pull/171740) Thanks [@steipete](https://github.com/steipete), [@yetval](https://github.com/yetval).
- Settings saves involving secret references can acknowledge changes already applied by the Gateway instead of timing out. [#171922](https://github.com/openclaw/openclaw/pull/171922) Thanks [@steipete](https://github.com/steipete).
- Workspace editor saves over 2 MiB of UTF-8 text are rejected before replacing the existing document, matching the agent's read limit. [#171938](https://github.com/openclaw/openclaw/pull/171938) Thanks [@steipete](https://github.com/steipete).
- Connection timeouts show their explanation before automatic retry discards it; this improves diagnosis rather than repairing the underlying outage. [#172626](https://github.com/openclaw/openclaw/pull/172626) Thanks [@RomneyDa](https://github.com/RomneyDa), [@najef1979-code](https://github.com/najef1979-code), [@steipete](https://github.com/steipete).
- A prompt sent immediately after Stop during preparation keeps its place in the queue and receives a reply after the stopped turn settles. [#172685](https://github.com/openclaw/openclaw/pull/172685) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Returning to a tab preserves an opening connection, and Logs resumes its saved position on the same Gateway; in-place log rewrites can still leave stale cached text. [#172864](https://github.com/openclaw/openclaw/pull/172864) Thanks [@steipete](https://github.com/steipete), [@najef1979-code](https://github.com/najef1979-code).
- Following a large log avoids rescanning old history on each poll; this reduces Logs-page work without repairing the underlying connection outage. [#172885](https://github.com/openclaw/openclaw/pull/172885) Thanks [@steipete](https://github.com/steipete), [@najef1979-code](https://github.com/najef1979-code).
- Fresh Mac profiles initialize their Gateway correctly, and automatic provider setup waits through supervised startup retries. [#173246](https://github.com/openclaw/openclaw/pull/173246) Thanks [@steipete](https://github.com/steipete).
- Downloads from the native macOS dashboard and conversation window open Save while keeping the page available, instead of replacing it with archive bytes. [#173654](https://github.com/openclaw/openclaw/pull/173654) Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@RomneyDa](https://github.com/RomneyDa).

</details>

## Browser and computer use

Browser previews keep refreshing through more input activity, and ordinary tabs stay usable alongside extension pages. Cleanup leaves other agents' tabs alone, while desktop-tool discovery waits to start its helper until it is needed.

<details class="release-source-toggle">
<summary>Browser, upload, desktop, and sandbox changes</summary>

- Chrome automation can recover on a fresh worker after a temporary harmless-cleanup storage failure without losing pairing. [#151037](https://github.com/openclaw/openclaw/pull/151037) Thanks [@ethangui](https://github.com/ethangui).
- Finished MCP agent runs release desktop control, and rebuilding tools preserves the same run's computer session. [#151127](https://github.com/openclaw/openclaw/pull/151127) [Docs](https://docs.openclaw.ai/nodes/computer-use) · Thanks [@ylcn91](https://github.com/ylcn91), [@steipete](https://github.com/steipete), [@vovarbv](https://github.com/vovarbv), [@ghbalf](https://github.com/ghbalf), [@aleps001](https://github.com/aleps001).
- The browser panel keeps refreshing during sustained typing or scrolling when live streaming is unavailable. [#153580](https://github.com/openclaw/openclaw/pull/153580) Thanks [@alexsimeonoww](https://github.com/alexsimeonoww), [@obviyus](https://github.com/obviyus).
- Chrome extension uploads totaling strictly less than 47 MiB work without local-file read permission; larger uploads still need a readable path and permission. [#160013](https://github.com/openclaw/openclaw/pull/160013) [Docs](https://docs.openclaw.ai/tools/browser-control) · [Docs](https://docs.openclaw.ai/tools/chrome-extension) · Thanks [@LiuwqGit](https://github.com/LiuwqGit), [@obviyus](https://github.com/obviyus), [@elandesberg](https://github.com/elandesberg), [@holny](https://github.com/holny), [@Hensarj](https://github.com/Hensarj).
- Chrome extension pages and discarded tabs no longer block the listing and use of ordinary tabs. [#162110](https://github.com/openclaw/openclaw/pull/162110) [Docs](https://docs.openclaw.ai/tools/chrome-extension) · Thanks [@openclaw-agent-man](https://github.com/openclaw-agent-man), [@dlmccoy](https://github.com/dlmccoy), [@obviyus](https://github.com/obviyus).
- Browser tool guidance tells agents how to use the configured browser node rather than encouraging a host override. [#164575](https://github.com/openclaw/openclaw/pull/164575) Thanks [@miguelbranco80](https://github.com/miguelbranco80), [@obviyus](https://github.com/obviyus).
- Linux browser startup finds Playwright Chromium in relative, npm-configured and package-local caches. [#164659](https://github.com/openclaw/openclaw/pull/164659) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- The Chrome extension relay avoids ports already supplied in configured browser URLs. [#164678](https://github.com/openclaw/openclaw/pull/164678) Thanks [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- Fetched pages retain paragraph and list boundaries in plain text. [#164692](https://github.com/openclaw/openclaw/pull/164692) Thanks [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- DuckDuckGo searches avoid the browser-identifying header that triggered observed bot challenges. [#164726](https://github.com/openclaw/openclaw/pull/164726) [Docs](https://docs.openclaw.ai/tools/duckduckgo-search) · Thanks [@takyyon](https://github.com/takyyon), [@obviyus](https://github.com/obviyus).
- Web fetch text extraction retains literal syntax inside recognized fenced code examples while converting surrounding prose. [#164936](https://github.com/openclaw/openclaw/pull/164936) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Local sandbox workspace operations avoid loading large recovery records just to check existence. [#165093](https://github.com/openclaw/openclaw/pull/165093) Thanks [@steipete](https://github.com/steipete).
- Eligible first sandbox sessions reuse dependency preparation started after Gateway readiness, reducing setup waits. [#165125](https://github.com/openclaw/openclaw/pull/165125) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Quiet commands receive fewer false stall warnings, unchanged polling is detected, and stuck sandbox-control calls get bounded cancellation. [#165167](https://github.com/openclaw/openclaw/pull/165167) [Docs](https://docs.openclaw.ai/gateway/background-process) · Thanks [@steipete](https://github.com/steipete).
- New managed sandbox workspaces avoid a repeated source scan, and setup timing logs and metrics help identify slow preparation phases. [#165411](https://github.com/openclaw/openclaw/pull/165411) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · [Docs](https://docs.openclaw.ai/gateway/prometheus#worktree-preparation) · Thanks [@steipete](https://github.com/steipete).
- Sandbox setup, synchronization and retained-workspace cleanup move database persistence off the Gateway thread. [#165534](https://github.com/openclaw/openclaw/pull/165534) Thanks [@steipete](https://github.com/steipete).
- Sandbox creation and cleanup reduce blocking Gateway database work and wait for accepted removal to finish during shutdown. [#165558](https://github.com/openclaw/openclaw/pull/165558) Thanks [@steipete](https://github.com/steipete).
- Agents on macOS and Linux can read Windows-style UTF-16 text files that include a byte-order mark, including sandbox reads. [#165777](https://github.com/openclaw/openclaw/pull/165777) Thanks [@yetval](https://github.com/yetval), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Empty desktop and portal streams stop waiting sooner after their target closes, while streams with final data allow it to drain before shutdown. [#165806](https://github.com/openclaw/openclaw/pull/165806) Thanks [@SebTardif](https://github.com/SebTardif), [@obviyus](https://github.com/obviyus).
- Agents stop trying managed web search before a provider is configured and can point users to setup. [#166199](https://github.com/openclaw/openclaw/pull/166199) [Docs](https://docs.openclaw.ai/tools/web) · Thanks [@jacobtomlinson](https://github.com/jacobtomlinson).
- Discovers computer tools without starting an unused desktop helper; actual use still prepares the desktop. [#166602](https://github.com/openclaw/openclaw/pull/166602) Thanks [@steipete](https://github.com/steipete).
- Enables newer Peekaboo clients to use window-specific desktop actions through the macOS app's embedded host. [#166615](https://github.com/openclaw/openclaw/pull/166615) Thanks [@steipete](https://github.com/steipete).
- Closes untracked or older managed-browser tabs before recently used session tabs when enforcing the existing tab limit. [#166666](https://github.com/openclaw/openclaw/pull/166666) Thanks [@ruel225](https://github.com/ruel225), [@obviyus](https://github.com/obviyus), [@vokaplok](https://github.com/vokaplok).
- Browser response and navigation URL filters avoid demonstrated long stalls on troublesome wildcard patterns. [#166727](https://github.com/openclaw/openclaw/pull/166727) Thanks [@SebTardif](https://github.com/SebTardif), [@obviyus](https://github.com/obviyus).
- Missing or unauthorized portal WebSocket connections return clear errors and close cleanly instead of hanging. [#167065](https://github.com/openclaw/openclaw/pull/167065) Thanks [@hugenshen](https://github.com/hugenshen), [@obviyus](https://github.com/obviyus).
- Browser management commands honor an explicitly requested timeout and reject invalid values before connecting. [#167252](https://github.com/openclaw/openclaw/pull/167252) [Docs](https://docs.openclaw.ai/cli/browser) · Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@obviyus](https://github.com/obviyus).
- Browser form and batch commands reject malformed text input before changing page values instead of silently substituting characters. [#167412](https://github.com/openclaw/openclaw/pull/167412) [Docs](https://docs.openclaw.ai/cli/browser) · Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- Cleaning up one agent's session preserves another agent's browser tabs even when both sessions share the same name. [#167484](https://github.com/openclaw/openclaw/pull/167484) [Docs](https://docs.openclaw.ai/tools/browser/configuration) · Thanks [@steipete](https://github.com/steipete).
- Failed portal connections close cleanly when their worker is unavailable instead of accumulating open sockets. [#167645](https://github.com/openclaw/openclaw/pull/167645) [Docs](https://docs.openclaw.ai/gateway/portals) · Thanks [@steipete](https://github.com/steipete).
- Authorized commands sent to paired POSIX nodes work when the command ends in a newline, space, or tab. [#168120](https://github.com/openclaw/openclaw/pull/168120) Thanks [@yetval](https://github.com/yetval).
- Headless browser pages can dismiss invisible passkey prompts to offer another sign-in method; passkeys need a visible profile, and an already-waiting attempt needs cancellation and reload. [#170857](https://github.com/openclaw/openclaw/pull/170857) [Docs](https://docs.openclaw.ai/tools/browser-login#passkeys-in-headless-browsers) · Thanks [@trukhinyuri](https://github.com/trukhinyuri), [@steipete](https://github.com/steipete).
- Chrome relay cache settings, extra headers, and service-worker bypass survive allowed navigation without incorrectly reporting that access was revoked. [#173486](https://github.com/openclaw/openclaw/pull/173486) Thanks [@LiuwqGit](https://github.com/LiuwqGit), [@steipete](https://github.com/steipete), [@ValantisV](https://github.com/ValantisV).

</details>

## Automations

Scheduled jobs retain saved model choices and return results to the chat that created them through more recovery and delivery cases. Webhooks can reject work when capacity is unavailable so senders can retry.

<details class="release-source-toggle">
<summary>Scheduled jobs, exit commands, and webhooks</summary>

- Exit-triggered automations preserve escaped spaces and newer edits; reapply commands whose saved escaping was already trimmed. [#161321](https://github.com/openclaw/openclaw/pull/161321) Thanks [@LinzeShi](https://github.com/LinzeShi), [@obviyus](https://github.com/obviyus).
- Cron guidance explains why a trailing NO_REPLY suppresses a text announcement, including its preceding report. [#161964](https://github.com/openclaw/openclaw/pull/161964) [Docs](https://docs.openclaw.ai/cli/cron#silent-token-suppression) · [Docs](https://docs.openclaw.ai/automation/cron-jobs/troubleshooting) · Thanks [@heranliu](https://github.com/heranliu), [@jackson2w](https://github.com/jackson2w), [@obviyus](https://github.com/obviyus).
- Viewing a scheduled run transcript transfers less unnecessary history data internally. [#163885](https://github.com/openclaw/openclaw/pull/163885) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Automations model suggestions follow a changed selected agent without losing the draft or All agents scope. [#164357](https://github.com/openclaw/openclaw/pull/164357) Thanks [@TUARAN](https://github.com/TUARAN), [@obviyus](https://github.com/obviyus).
- Automations keeps same-named models from different providers distinct and saves the chosen provider. [#164574](https://github.com/openclaw/openclaw/pull/164574) Thanks [@ooiuuii](https://github.com/ooiuuii), [@obviyus](https://github.com/obviyus).
- Cron permission updates publish in order, expiring standing grants are rechecked, and accepted persistence settles during shutdown. [#164805](https://github.com/openclaw/openclaw/pull/164805) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Workboard refuses to redispatch a retained checkout with a different explicit base ref, preserving work and explaining which refs differ. [#164829](https://github.com/openclaw/openclaw/pull/164829) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@ArcueidMP](https://github.com/ArcueidMP), [@mightyx](https://github.com/mightyx), [@obviyus](https://github.com/obviyus).
- Workboard avoids repeatedly downloading unchanged cards while keeping live edits current. [#165058](https://github.com/openclaw/openclaw/pull/165058) Thanks [@steipete](https://github.com/steipete).
- Doctor-migrated heartbeat tasks for secondary agents can have their prompts edited again. [#165064](https://github.com/openclaw/openclaw/pull/165064) Thanks [@steipete](https://github.com/steipete).
- Sessions boards now hide automation, system, and Home sessions by default, including existing boards. [#165076](https://github.com/openclaw/openclaw/pull/165076) [Docs](https://docs.openclaw.ai/plugins/workboard) · Thanks [@steipete](https://github.com/steipete).
- Scheduled messages recheck permission at transport handoff and retain accepted parts when later sends fail. [#165129](https://github.com/openclaw/openclaw/pull/165129) [Docs](https://docs.openclaw.ai/plugins/sdk-channel-plugins) · Thanks [@steipete](https://github.com/steipete).
- Workboard Sessions boards avoid unnecessary reloads and repeated work for equivalent viewers while real changes still update. [#165141](https://github.com/openclaw/openclaw/pull/165141) [Docs](https://docs.openclaw.ai/plugins/workboard) · Thanks [@steipete](https://github.com/steipete).
- Sessions boards show live activity, retain known PRs with outage warnings, offer PR links and display readable plain-text message previews. [#165189](https://github.com/openclaw/openclaw/pull/165189) [Docs](https://docs.openclaw.ai/plugins/workboard) · Thanks [@steipete](https://github.com/steipete).
- Full reminder queues preserve accepted reminders and explicitly fail new overflow instead of silently discarding older work. [#165305](https://github.com/openclaw/openclaw/pull/165305) [Docs](https://docs.openclaw.ai/automation/cron-jobs/troubleshooting) · [Docs](https://docs.openclaw.ai/automation/cron-jobs/webhooks) · Thanks [@steipete](https://github.com/steipete).
- Scheduled turns targeting busy conversations wait for active work and final metadata updates, preventing them from invalidating in-progress history summaries. [#165310](https://github.com/openclaw/openclaw/pull/165310) [Docs](https://docs.openclaw.ai/automation/cron-jobs/payloads) · Thanks [@Linux2010](https://github.com/Linux2010), [@steipete](https://github.com/steipete), [@automaton1379](https://github.com/automaton1379), [@Oldrich333](https://github.com/Oldrich333).
- User messages queued behind heartbeats keep normal tools, context and reply delivery when execution is deferred or retried. [#165313](https://github.com/openclaw/openclaw/pull/165313) Thanks [@steipete](https://github.com/steipete).
- Scheduled runs prepare and save session state through database workers, reducing work on the Gateway main thread while accepted writes still settle during shutdown. [#165332](https://github.com/openclaw/openclaw/pull/165332) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Scheduled and webhook-driven Codex agents honor configured max thinking when the model supports it. [#165444](https://github.com/openclaw/openclaw/pull/165444) Thanks [@Oldrich333](https://github.com/Oldrich333).
- Repeated automation lists and scheduler status reuse unchanged results to reduce server work. [#165629](https://github.com/openclaw/openclaw/pull/165629) [Docs](https://docs.openclaw.ai/gateway/protocol/operator-methods) · Thanks [@steipete](https://github.com/steipete).
- Team Reports retains the missed day before startup when its first scheduled catch-up crosses UTC midnight. [#165780](https://github.com/openclaw/openclaw/pull/165780) [Docs](https://docs.openclaw.ai/plugins/team-reports) · Thanks [@yetval](https://github.com/yetval).
- Automation cleanup waits for agent databases to finish startup preparation instead of reporting a premature maintenance failure. [#165814](https://github.com/openclaw/openclaw/pull/165814) [Docs](https://docs.openclaw.ai/automation/cron-jobs/managing-jobs) · Thanks [@steipete](https://github.com/steipete).
- Automation guides explain that manual CLI runs bypass conditions by default and show how to test eligible conditions with due mode. [#165828](https://github.com/openclaw/openclaw/pull/165828) [Docs](https://docs.openclaw.ai/cli/cron) · [Docs](https://docs.openclaw.ai/automation/cron-jobs/schedules) · Thanks [@obviyus](https://github.com/obviyus), [@lidbai](https://github.com/lidbai).
- Doctor stops repeatedly warning about tool authority on command cron jobs that do not use agent tools. [#166384](https://github.com/openclaw/openclaw/pull/166384) [Docs](https://docs.openclaw.ai/automation/cron-jobs/payloads) · Thanks [@steipete](https://github.com/steipete), [@jayzhou2309](https://github.com/jayzhou2309), [@davidchyi-beep](https://github.com/davidchyi-beep).
- Webhooks reject malformed supplied session keys and honor transform requests to wake now. [#166406](https://github.com/openclaw/openclaw/pull/166406) [Docs](https://docs.openclaw.ai/automation/cron-jobs/webhooks) · Thanks [@steipete](https://github.com/steipete).
- Scheduled runs keep reading their captured history when a later queued message arrives. [#166487](https://github.com/openclaw/openclaw/pull/166487) [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@steipete](https://github.com/steipete), [@AXEG0](https://github.com/AXEG0), [@hippoley](https://github.com/hippoley).
- Repeated timezone-aware scheduling calculations reuse date formatters. [#166507](https://github.com/openclaw/openclaw/pull/166507) Thanks [@obviyus](https://github.com/obviyus), [@kzclaw](https://github.com/kzclaw).
- Scheduled command announcements save the destination conversation route without a misleading policy warning when no source session is configured. [#166836](https://github.com/openclaw/openclaw/pull/166836) Thanks [@obviyus](https://github.com/obviyus), [@jlahullier](https://github.com/jlahullier).
- Agent webhooks can wait through overlapping heartbeat database registration instead of failing before the agent starts. [#166860](https://github.com/openclaw/openclaw/pull/166860) Thanks [@steipete](https://github.com/steipete).
- Independent heartbeat work can resume after an explicitly stopped agent command finishes cleanup. [#166968](https://github.com/openclaw/openclaw/pull/166968) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Paused child tasks retain ownership needed to continue after conversation storage changes, and expired deliveries show their original sanitized error for inspection. [#166990](https://github.com/openclaw/openclaw/pull/166990) [Docs](https://docs.openclaw.ai/tools/subagents/operations) · Thanks [@steipete](https://github.com/steipete).
- The first scheduled condition check after restart reuses loaded Gateway plugins, avoiding duplicate-loading timeouts and stalls. [#166991](https://github.com/openclaw/openclaw/pull/166991) [Docs](https://docs.openclaw.ai/automation/cron-jobs/schedules) · Thanks [@67-luck](https://github.com/67-luck), [@steipete](https://github.com/steipete), [@lucianosmori](https://github.com/lucianosmori).
- Conversations can receive delegated results and answer later messages after a queued follow-up yields to child tasks. [#167007](https://github.com/openclaw/openclaw/pull/167007) [Docs](https://docs.openclaw.ai/concepts/subagent-yield-handoff) · Thanks [@MoerAI](https://github.com/MoerAI), [@steipete](https://github.com/steipete), [@hannesrudolph](https://github.com/hannesrudolph), [@hippoley](https://github.com/hippoley).
- Immediate background results and notifications enter their conversation's normal queue independently of periodic heartbeat settings. [#167113](https://github.com/openclaw/openclaw/pull/167113) [Docs](https://docs.openclaw.ai/gateway/background-process) · [Docs](https://docs.openclaw.ai/gateway/heartbeat#immediate-session-events) · Thanks [@steipete](https://github.com/steipete).
- Cron script and private-note imports reject malformed UTF-8 instead of silently altering supplied text. [#167120](https://github.com/openclaw/openclaw/pull/167120) [Docs](https://docs.openclaw.ai/cli/cron) · Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- Scheduled-session cleanup sends less ordinary-conversation metadata through the Gateway. [#167248](https://github.com/openclaw/openclaw/pull/167248) Thanks [@steipete](https://github.com/steipete).
- Isolated WebChat automations return results to their creating conversation; resets or deletion can leave a destination binding that needs repair. [#167363](https://github.com/openclaw/openclaw/pull/167363) Thanks [@steipete](https://github.com/steipete).
- Subagent restart recovery avoids repeated environment setup while retaining checks against the original database. [#167372](https://github.com/openclaw/openclaw/pull/167372) Thanks [@steipete](https://github.com/steipete).
- Removing an active scheduled job preserves its canceled status in saved session history after cleanup. [#167524](https://github.com/openclaw/openclaw/pull/167524) Thanks [@steipete](https://github.com/steipete).
- Automation prompts collapse into expandable chat rows, with a link to the originating run in History. [#167600](https://github.com/openclaw/openclaw/pull/167600) [Docs](https://docs.openclaw.ai/web/control-ui) · Thanks [@steipete](https://github.com/steipete).
- Fresh scheduled sessions stop raising misleading prompt-cache drop warnings. [#167608](https://github.com/openclaw/openclaw/pull/167608) Thanks [@steipete](https://github.com/steipete).
- Webhook retries avoid a false HTTP 502 when their first session database appears before the read completes. [#167629](https://github.com/openclaw/openclaw/pull/167629) Thanks [@steipete](https://github.com/steipete).
- Older announcements and background tasks can proceed while newer interactive requests keep arriving. [#167683](https://github.com/openclaw/openclaw/pull/167683) [Docs](https://docs.openclaw.ai/concepts/queue) · Thanks [@steipete](https://github.com/steipete), [@SebTardif](https://github.com/SebTardif).
- Large sub-agent task registries use less repeated CPU and temporary allocation for status and maintenance. [#167684](https://github.com/openclaw/openclaw/pull/167684) Thanks [@steipete](https://github.com/steipete).
- Session cleanup continues for healthy agents while another agent is waiting for deletion cleanup. [#167907](https://github.com/openclaw/openclaw/pull/167907) [Docs](https://docs.openclaw.ai/automation/cron-jobs/managing-jobs) · Thanks [@steipete](https://github.com/steipete).
- Temporary provider outages get their scheduled recovery retries before automations request repair or send failure alerts. [#167957](https://github.com/openclaw/openclaw/pull/167957) [Docs](https://docs.openclaw.ai/automation/cron-jobs/delivery) · [Docs](https://docs.openclaw.ai/cli/cron) · Thanks [@obviyus](https://github.com/obviyus).
- Manually started automations retain their permitted tools after the chat request that launched them ends. [#168037](https://github.com/openclaw/openclaw/pull/168037) [Docs](https://docs.openclaw.ai/automation/cron-jobs/payloads) · Thanks [@obviyus](https://github.com/obviyus).
- Creating many sessions leaves room for Home reminders and notifications by combining new-session notices into one pending summary. [#168239](https://github.com/openclaw/openclaw/pull/168239) [Docs](https://docs.openclaw.ai/concepts/main-session) · [Docs](https://docs.openclaw.ai/gateway/config-agents/sessions) · Thanks [@steipete](https://github.com/steipete).
- Cron releases its current database write when host approval stalls and retries later, reducing interference with updates and other writes. [#168291](https://github.com/openclaw/openclaw/pull/168291) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete), [@jlapenna](https://github.com/jlapenna).
- Lets scheduled jobs reach their configured backup model after a primary-provider timeout without duplicating the prompt. [#168605](https://github.com/openclaw/openclaw/pull/168605) [Docs](https://docs.openclaw.ai/automation/cron-jobs/payloads) · Thanks [@steipete](https://github.com/steipete), [@wongwilliam425-ui](https://github.com/wongwilliam425-ui).
- Stops unchanged one-shot automations from causing redundant Doctor recovery backups. [#168938](https://github.com/openclaw/openclaw/pull/168938) Thanks [@harshitgupta31415](https://github.com/harshitgupta31415), [@wg-mojo](https://github.com/wg-mojo).
- Agents get clearer guidance for returning after a wait, and eligible failed one-time automations request repair in their original conversation. [#169102](https://github.com/openclaw/openclaw/pull/169102) [Docs](https://docs.openclaw.ai/automation/cron-jobs/payloads) · [Docs](https://docs.openclaw.ai/automation/cron-jobs/delivery) · Thanks [@steipete](https://github.com/steipete), [@erlightbourn-source](https://github.com/erlightbourn-source), [@lonexreb](https://github.com/lonexreb).
- Eligible dashboard automation interrupted by restart draining can resume after startup instead of losing its recovery claim. [#170162](https://github.com/openclaw/openclaw/pull/170162) Thanks [@steipete](https://github.com/steipete).
- Agent webhooks reject unavailable execution capacity so callers can retry or back off; HTTP 200 confirms admission rather than completion, and session conflicts can still return 409. [#175111](https://github.com/openclaw/openclaw/pull/175111) [Docs](https://docs.openclaw.ai/automation/cron-jobs/webhooks) · Thanks [@RomneyDa](https://github.com/RomneyDa).

</details>

## Installation and maintenance

Installers and updates recover through more interrupted handoffs, while Doctor and Gateway startup give clearer recovery steps when preparation fails. Scheduled workspace cleanup no longer stops unexpectedly on paired nodes.

Downgrading across SQLite schema **24 → 25** requires the matching pre-upgrade backup; restoring it loses later writes. Preserve the original data and follow Doctor's intermediate-upgrade guidance for retired state formats.

Existing Kubernetes deployments with a read-only root need a writable cache when updating the image. See the [container setup guidance](https://docs.openclaw.ai/install/kubernetes#architecture-notes).

<details class="release-source-toggle">
<summary>Installation, updates, recovery, and deployment changes</summary>

- Portable worker archives include the helper needed to open their state during startup. [22cd7d6](https://github.com/openclaw/openclaw/commit/22cd7d6ab59f9fd30fd6dd87ee07590c619aa6b2)
- Older agent databases can finish Doctor migration without failing a schema check before legacy migrations complete. [343e56d](https://github.com/openclaw/openclaw/commit/343e56d88714122b55b080a82515a1ca6ae0ee4b)
- Database-reader cleanup can finish despite an unreadable discovery path instead of leaving old checks retained. [357466e](https://github.com/openclaw/openclaw/commit/357466e56837b934ef04dd7e54917c68f519ccb1)
- Supporting restart integration retains interrupted chat state and original CLI failures and avoids temporary password files. [383cb4b](https://github.com/openclaw/openclaw/commit/383cb4b0bdf71527b1cdc43567851f9d11894573)
- Node workers retain their configured memory limit even when the Gateway starts with a larger limit. [436bc7c](https://github.com/openclaw/openclaw/commit/436bc7c527e3c41d51fabcc0cefe5862fd57d6aa) Thanks [@xydigitLybnnnn](https://github.com/xydigitLybnnnn).
- Doctor memory-wiki checks avoid loading the pairing database until a pairing read is needed. [4bac149](https://github.com/openclaw/openclaw/commit/4bac1493291e7d931c0eea48b8ed07e98dc37ce0)
- The updater recognizes stable 2026.10.2 as a source for the first upgrade step. [5290333](https://github.com/openclaw/openclaw/commit/5290333cadab0cc9537f38ca6c50ace5d91c1438)
- Doctor maintenance refusals show the underlying database or filesystem cause. [54cfa2f](https://github.com/openclaw/openclaw/commit/54cfa2f8647c66fa34d72ad149a316caf8b8f6e4)
- Doctor refuses damaged older databases instead of masking missing structures during upgrade. [6785728](https://github.com/openclaw/openclaw/commit/678572811dd8b10c19ee69e2107947d099dd33c1) [Docs](https://docs.openclaw.ai/reference/database-schemas/versioning)
- OpenClaw refuses to start work if its shared database has invalid saved ownership information, even when no writes are pending. [7cbba45](https://github.com/openclaw/openclaw/commit/7cbba45c1323c89021fb50bda7c5dbaa736490ec).
- Updates recognize retained runtime dependencies through Windows short paths and case differences. [836fd79](https://github.com/openclaw/openclaw/commit/836fd79faa03f154458b895be6e0e4f38d0b705c)
- Fix an unnecessary cache setup error that stopped some anonymous diagnostic requests before they could run. [8d91b9c8](https://github.com/openclaw/openclaw/commit/8d91b9c85e264a80a5eb79434a6a90797489502f)
- Doctor checks tool schemas using the selected plugin generation, avoiding duplicate registrations. [965ac0f](https://github.com/openclaw/openclaw/commit/965ac0ffc3e8ec99a1923b48e30f27ab7391ab9b)
- Background database verification keeps its writer available until scanning and the saved verification result finish. [978478f](https://github.com/openclaw/openclaw/commit/978478ff01afcb73143bc63da5f19f1218c888b7) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery)
- Explain disk-full plugin capture failures and direct users to free space and rerun Doctor. [a6496a2](https://github.com/openclaw/openclaw/commit/a6496a2c5d1aee637a9c7fe0381ec2fc1ce524bb).
- New session database work can resume after configuration changes. [b798788](https://github.com/openclaw/openclaw/commit/b7987881046c51675166b36b97360fb540811060)
- Docker builds pass workspace lockfile validation while retaining optional-plugin selection. [b7e788b](https://github.com/openclaw/openclaw/commit/b7e788b23e7c41c8d78edc058ff15a885adac635)
- Automatic update repair can read configuration and proceed during an update. [b8602f4](https://github.com/openclaw/openclaw/commit/b8602f4c8ba503b9e4ae7d91d3490449daaacd3a)
- Valid database writes can proceed after an earlier write fails. [c190df1](https://github.com/openclaw/openclaw/commit/c190df12716a17d23a1c00eaf106044d2f2c9317)
- Completed updates avoid unnecessary failure triage or a second failure report. [d357abf](https://github.com/openclaw/openclaw/commit/d357abf71bedeb1a86e0c1fa73c27df1cd7b8c32)
- Database work already in progress can finish against its original storage after configuration changes. [d81f112](https://github.com/openclaw/openclaw/commit/d81f112cdf42bfcece8e5f84fe4d6fd3c24444b9)
- Normal SQLite worker shutdown preserves queued diagnostic file logs for troubleshooting. [f8f1c8a](https://github.com/openclaw/openclaw/commit/f8f1c8af73a7b874db7c2693345e41a8a6033713) [Docs](https://docs.openclaw.ai/logging)
- Supporting diagnostics retain useful paths and original errors; the compact System widget matches the expanded CPU, memory, and ping order. [faf63c5](https://github.com/openclaw/openclaw/commit/faf63c5898e353c2b98d06725b2348bd8bf989fd) [Docs](https://docs.openclaw.ai/cli/config) · [Docs](https://docs.openclaw.ai/web/control-ui/feature-reference)
- Diagnostic queries reject empty filters and limits instead of silently using defaults. [#145532](https://github.com/openclaw/openclaw/pull/145532) [Docs](https://docs.openclaw.ai/cli/gateway/query#gateway-stability) · Thanks [@hugenshen](https://github.com/hugenshen), [@altaywtf](https://github.com/altaywtf), [@nocodet666](https://github.com/nocodet666).
- Blank saved-bundle selectors fail instead of choosing unintended diagnostic evidence. [#145537](https://github.com/openclaw/openclaw/pull/145537) Thanks [@hugenshen](https://github.com/hugenshen), [@altaywtf](https://github.com/altaywtf).
- Blocked settings updates explain the refusal and next step while leaving current configuration unchanged. [#155427](https://github.com/openclaw/openclaw/pull/155427) [Docs](https://docs.openclaw.ai/gateway/configuration) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Gateway readiness waits keep their elapsed-time limits when the system clock changes. [#155799](https://github.com/openclaw/openclaw/pull/155799) Thanks [@SunnyShu0925](https://github.com/SunnyShu0925).
- Source builds use less peak memory during runtime bundling by scheduling bundles one at a time. [#157739](https://github.com/openclaw/openclaw/pull/157739) Thanks [@emes](https://github.com/emes), [@obviyus](https://github.com/obviyus), [@steipete](https://github.com/steipete).
- Linux Gateways remain responsive when log rollover encounters a temporary directory removed by system cleanup. [#160433](https://github.com/openclaw/openclaw/pull/160433) Thanks [@masatohoshino](https://github.com/masatohoshino), [@WadeOwenWatts](https://github.com/WadeOwenWatts), [@Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@obviyus](https://github.com/obviyus).
- Model-catalog worker failures now show a reason in logs and remain counted after worker replacement. [#161740](https://github.com/openclaw/openclaw/pull/161740) [Docs](https://docs.openclaw.ai/logging) · [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@matthematics1137](https://github.com/matthematics1137), [@obviyus](https://github.com/obviyus).
- Worker diagnostics preserve both the operation failure and the cleanup failure when both occur. [#162124](https://github.com/openclaw/openclaw/pull/162124) Thanks [@michaelswissa](https://github.com/michaelswissa), [@obviyus](https://github.com/obviyus).
- Doctor can complete deferred external-plugin upgrades through their public setup entries. [#162275](https://github.com/openclaw/openclaw/pull/162275) [Docs](https://docs.openclaw.ai/plugins/sdk-entrypoints/define-setup-plugin-entry) · Thanks [@romneyda](https://github.com/romneyda).
- Doctor preserves older ACP conversation bindings during upgrades and protects closed sessions from being revived by old metadata. [#162920](https://github.com/openclaw/openclaw/pull/162920) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations#acp-session-metadata) · Thanks [@steipete](https://github.com/steipete).
- Independent terminals on affected macOS Monterey hosts can stop or restart the Gateway despite denied launchctl inspection. [#163317](https://github.com/openclaw/openclaw/pull/163317) Thanks [@NovaUnboundAi](https://github.com/NovaUnboundAi), [@xXG0DLessXx](https://github.com/xXG0DLessXx), [@RomneyDa](https://github.com/RomneyDa).
- Doctor moves default legacy Clawdbot state and configuration to canonical OpenClaw paths; ordinary runtime no longer discovers old paths. [#163376](https://github.com/openclaw/openclaw/pull/163376) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@steipete](https://github.com/steipete).
- Deleting a workspace-free session also removes its leftover local GitHub publication records. [#163833](https://github.com/openclaw/openclaw/pull/163833) Thanks [@steipete](https://github.com/steipete).
- Exec-approval documentation directs operators with saved legacy policy fields to Doctor repair. [#164234](https://github.com/openclaw/openclaw/pull/164234) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations#exec-approval-policy) · Thanks [@wakqasahmed](https://github.com/wakqasahmed), [@cristianoc](https://github.com/cristianoc), [@obviyus](https://github.com/obviyus).
- Multiple-Gateway guidance includes sandbox listener ports to help avoid conflicts. [#164275](https://github.com/openclaw/openclaw/pull/164275) [Docs](https://docs.openclaw.ai/gateway/multiple-gateways) · Thanks [@Satoshi-Kusumoto](https://github.com/Satoshi-Kusumoto), [@obviyus](https://github.com/obviyus).
- Doctor backups no longer fail falsely when Linux cannot report stable file creation times. [#164363](https://github.com/openclaw/openclaw/pull/164363) Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@steipete](https://github.com/steipete), [@StevenKrebs](https://github.com/StevenKrebs), [@kirylh](https://github.com/kirylh), [@stunt4711](https://github.com/stunt4711).
- Fish completions preserve backslashes in descriptions and avoid broken suggestions. [#164455](https://github.com/openclaw/openclaw/pull/164455) Thanks [@LinzeShi](https://github.com/LinzeShi), [@obviyus](https://github.com/obviyus).
- Reusable Gateway resources release completed request data, and Doctor refuses repairs when damaged indexes hide active or conflicting Gateway ownership. [#164465](https://github.com/openclaw/openclaw/pull/164465) Thanks [@steipete](https://github.com/steipete).
- Gateway startup errors retain the original cause even when cleanup also fails. [#164500](https://github.com/openclaw/openclaw/pull/164500) Thanks [@sunlit-deng](https://github.com/sunlit-deng), [@waynegault](https://github.com/waynegault), [@obviyus](https://github.com/obviyus).
- Package updates can continue after full verification reaches resource limits, with a visible reduced-verification warning. [#164504](https://github.com/openclaw/openclaw/pull/164504) [Docs](https://docs.openclaw.ai/install/updating/update-methods#alternative-manual-npm-pnpm-or-bun) · Thanks [@steipete](https://github.com/steipete).
- Persistent database workers on supporting Bun runtimes can reclaim released JavaScript heap while idle. [#164567](https://github.com/openclaw/openclaw/pull/164567) Thanks [@steipete](https://github.com/steipete).
- Non-root package updates and rollback tolerate launcher ownership that the updater cannot reproduce. [#164636](https://github.com/openclaw/openclaw/pull/164636) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · [Docs](https://docs.openclaw.ai/install/updating/update-methods#alternative-manual-npm-pnpm-or-bun) · Thanks [@steipete](https://github.com/steipete), [@hrp6vv9mwr-glitch](https://github.com/hrp6vv9mwr-glitch), [@cmillwat](https://github.com/cmillwat).
- Valid workspace avatar paths no longer fail the avatar check in disposable update validation. [#164638](https://github.com/openclaw/openclaw/pull/164638) Thanks [@nitinjwadhawan](https://github.com/nitinjwadhawan), [@vincentkoc](https://github.com/vincentkoc), [@BottaniCals](https://github.com/BottaniCals).
- Doctor repairs stale string subagent targets without crashing on malformed allowlist entries; retired sandbox registries now require an intermediate upgrade. [#164669](https://github.com/openclaw/openclaw/pull/164669) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@steipete](https://github.com/steipete).
- Database recovery begins earlier after unclean restarts, and recovered agents remain available in chat metadata and model listings. [#164670](https://github.com/openclaw/openclaw/pull/164670) Thanks [@steipete](https://github.com/steipete).
- SQLite inspection subprocesses inherit explicit supported Node compiler settings, and Google Meet connection failures use consistent errors. [#164675](https://github.com/openclaw/openclaw/pull/164675) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Affected recovery and package-install paths keep installation scripts on the selected compatible Node runtime. [#164677](https://github.com/openclaw/openclaw/pull/164677) [Docs](https://docs.openclaw.ai/install/node) · Thanks [@steipete](https://github.com/steipete), [@jarvisnextgeneration20-lang](https://github.com/jarvisnextgeneration20-lang).
- Windows plugin preparation avoids redundant file opens, reducing a measured source of Gateway and model-status delay. [#164680](https://github.com/openclaw/openclaw/pull/164680) Thanks [@steipete](https://github.com/steipete), [@absol89](https://github.com/absol89).
- Doctor shows the actual database refusal or recovery information without temporary snapshot cleanup masking it. [#164697](https://github.com/openclaw/openclaw/pull/164697) Thanks [@steipete](https://github.com/steipete).
- Doctor can re-enable and start an owned disabled Windows Gateway task and explains its disabled state. [#164728](https://github.com/openclaw/openclaw/pull/164728) [Docs](https://docs.openclaw.ai/platforms/windows) · Thanks [@steipete](https://github.com/steipete), [@taoxia255-del](https://github.com/taoxia255-del).
- The updater announces each validation check and command before it starts. [#164746](https://github.com/openclaw/openclaw/pull/164746) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete).
- Doctor preserves and can migrate legacy audit logs when native no-replace filesystem moves are unsupported. [#164748](https://github.com/openclaw/openclaw/pull/164748) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery#skipped-legacy-audit-recovery) · Thanks [@steipete](https://github.com/steipete), [@bbs2i58](https://github.com/bbs2i58).
- Device setup links move join-code storage work off the Gateway thread while retaining one-use exchange. [#164759](https://github.com/openclaw/openclaw/pull/164759) Thanks [@steipete](https://github.com/steipete).
- Updated npm updaters can recover a Docker image-layer package rename failure using a verified rollback copy. [#164769](https://github.com/openclaw/openclaw/pull/164769) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · [Docs](https://docs.openclaw.ai/install/updating/update-methods#alternative-manual-npm-pnpm-or-bun) · Thanks [@steipete](https://github.com/steipete), [@potterdigital](https://github.com/potterdigital).
- Slow-response logs retain recent request timings when the bounded timing cache fills. [#164772](https://github.com/openclaw/openclaw/pull/164772) Thanks [@etzelm](https://github.com/etzelm), [@obviyus](https://github.com/obviyus).
- Update history and Settings can retain the actual refusal and its repair guidance. [#164782](https://github.com/openclaw/openclaw/pull/164782) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete), [@coygeek](https://github.com/coygeek).
- Installing completion preserves significant escaped trailing spaces in existing shell-profile commands. [#164785](https://github.com/openclaw/openclaw/pull/164785) Thanks [@yetval](https://github.com/yetval), [@obviyus](https://github.com/obviyus).
- Settled agent databases can close cleanly while unrelated shutdown cleanup remains pending. [#164788](https://github.com/openclaw/openclaw/pull/164788) Thanks [@steipete](https://github.com/steipete).
- POSIX npm updates admit writable prefix parents owned by another user and reject unsafe package ownership earlier with useful details. [#164797](https://github.com/openclaw/openclaw/pull/164797) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete), [@potterdigital](https://github.com/potterdigital).
- Interrupted-update recovery accepts identical files despite timestamp-only drift. [#164823](https://github.com/openclaw/openclaw/pull/164823) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete).
- Eligible Linux Gateway workers can reopen agent sessions sooner after a verified process crash while full integrity checks continue in the background. [#164846](https://github.com/openclaw/openclaw/pull/164846) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery#integrity-checks) · Thanks [@steipete](https://github.com/steipete).
- Update repair can settle obsolete recovery ownership after its database was replaced, allowing subsequent updates while retaining evidence. [#164849](https://github.com/openclaw/openclaw/pull/164849) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@szef-svg](https://github.com/szef-svg), [@izrl613](https://github.com/izrl613).
- Automatic session cleanup moves cold subagent-protection reads off the Gateway thread while preserving active and pending-delivery sessions. [#164851](https://github.com/openclaw/openclaw/pull/164851) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete), [@todddickerson](https://github.com/todddickerson).
- Doctor drains retained workers before CLI exit, and update history preserves completed-check diagnostics even if a later crash fails the candidate. [#164853](https://github.com/openclaw/openclaw/pull/164853) [Docs](https://docs.openclaw.ai/cli/doctor/running) · Thanks [@steipete](https://github.com/steipete), [@cunzai007-hub](https://github.com/cunzai007-hub).
- Refused package updates identify the recovery object and unsafe metadata without exposing absolute installation paths or contents. [#164858](https://github.com/openclaw/openclaw/pull/164858) [Docs](https://docs.openclaw.ai/cli/update/status-and-history) · Thanks [@steipete](https://github.com/steipete), [@xydigitLybnnnn](https://github.com/xydigitLybnnnn), [@creanet-64](https://github.com/creanet-64), [@jrpasolini](https://github.com/jrpasolini), [@jb168](https://github.com/jb168), [@burchk007-jpg](https://github.com/burchk007-jpg).
- Doctor imports sessions blocked by older migration receipts while preserving archives and existing SQLite metadata when history is uncertain. [#164867](https://github.com/openclaw/openclaw/pull/164867) [Docs](https://docs.openclaw.ai/cli/doctor/sqlite-maintenance) · Thanks [@steipete](https://github.com/steipete), [@hshs38033-cmd](https://github.com/hshs38033-cmd).
- Update repair can finish its own completed Doctor work while a separate Doctor command remains active. [#164868](https://github.com/openclaw/openclaw/pull/164868) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete).
- Unused agent databases no longer block Gateway startup and readiness; their bytes remain intact and a warning points to Doctor. [#164929](https://github.com/openclaw/openclaw/pull/164929) Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333).
- Session maintenance prepares remote-worker preservation facts outside the Gateway main thread and rejects stale facts before cleanup commits. [#164943](https://github.com/openclaw/openclaw/pull/164943) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Reconnecting clients share update-status preparation instead of repeating the same notification reads, while later outcomes continue to refresh. [#164984](https://github.com/openclaw/openclaw/pull/164984) [Docs](https://docs.openclaw.ai/cli/update/status-and-history) · [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete).
- Doctor and updates can publish and roll back configuration in a writable state folder owned by another user, including Kubernetes fsGroup setups. [#164990](https://github.com/openclaw/openclaw/pull/164990) [Docs](https://docs.openclaw.ai/gateway/doctor/state-and-sessions) · Thanks [@steipete](https://github.com/steipete), [@saftall](https://github.com/saftall).
- Update recovery retains the service identity needed after systemd unloads a stopped unit, and the repaired CLI can retire a verified preparation that never began installation. [#164997](https://github.com/openclaw/openclaw/pull/164997) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@jorden2895](https://github.com/jorden2895).
- Prepared child commands keep using the release they were prepared with when an update changes a launcher symlink before they start. [#164998](https://github.com/openclaw/openclaw/pull/164998) [Docs](https://docs.openclaw.ai/tools/exec) · Thanks [@steipete](https://github.com/steipete), [@Grynn](https://github.com/Grynn).
- Source-checkout Gateways prepare their first worker environment faster. [#165015](https://github.com/openclaw/openclaw/pull/165015) Thanks [@steipete](https://github.com/steipete).
- Scheduled automations remain available after Doctor repair without an extra restart. [#165032](https://github.com/openclaw/openclaw/pull/165032) Thanks [@steipete](https://github.com/steipete).
- Memory warnings reflect actual runtime capacity, avoiding unnecessary retirement of warm workers. [#165042](https://github.com/openclaw/openclaw/pull/165042) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · Thanks [@steipete](https://github.com/steipete).
- macOS Gateway recovery preserves a newer runtime or service choice made by the operator. [#165044](https://github.com/openclaw/openclaw/pull/165044) Thanks [@steipete](https://github.com/steipete).
- Busy Gateways avoid memory buildup behind slow requests. [#165052](https://github.com/openclaw/openclaw/pull/165052) Thanks [@steipete](https://github.com/steipete).
- Source updates to locally cached pinned commits avoid unnecessary fetching and accept full SHA-256 IDs. [#165060](https://github.com/openclaw/openclaw/pull/165060) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete).
- Agent databases can close cleanly during busy restarts even if unrelated plugin cleanup stalls. [#165069](https://github.com/openclaw/openclaw/pull/165069) Thanks [@steipete](https://github.com/steipete).
- Eligible Linux crash restarts restore usable sessions sooner, and large session cleanup avoids repeated work. [#165070](https://github.com/openclaw/openclaw/pull/165070) Thanks [@steipete](https://github.com/steipete).
- Cleanup of large diagnostic histories does less database work. [#165074](https://github.com/openclaw/openclaw/pull/165074) [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes#trajectory-retention-covering-index) · Thanks [@steipete](https://github.com/steipete).
- Cleanup preserves temporary plugin and model-catalog files still in use or whose use cannot be checked. [#165079](https://github.com/openclaw/openclaw/pull/165079) [Docs](https://docs.openclaw.ai/plugins/architecture#runtime-instance-and-source-lifetime) · Thanks [@steipete](https://github.com/steipete), [@Dhotei](https://github.com/Dhotei).
- Session cleanup planning reads less unrelated saved data in large installations. [#165082](https://github.com/openclaw/openclaw/pull/165082) Thanks [@steipete](https://github.com/steipete).
- Routine maintenance helps delivery-history lookups choose a more selective database index. [#165085](https://github.com/openclaw/openclaw/pull/165085) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Rosetta installations avoid unsafe native calls during worktree creation and process checks. [#165088](https://github.com/openclaw/openclaw/pull/165088) Thanks [@steipete](https://github.com/steipete).
- Large transcript stores spend less work on status checks and stale search-index cleanup. [#165090](https://github.com/openclaw/openclaw/pull/165090) Thanks [@steipete](https://github.com/steipete).
- Smaller agents can become available after restart while larger agents are still preparing, with recovery progress in logs. [#165107](https://github.com/openclaw/openclaw/pull/165107) Thanks [@steipete](https://github.com/steipete).
- Nested documentation examples retain their authored indentation when displayed and copied, including Slack setup manifests. [#165127](https://github.com/openclaw/openclaw/pull/165127) [Docs](https://docs.openclaw.ai/channels/slack/setup) · Thanks [@x-n2o](https://github.com/x-n2o), [@obviyus](https://github.com/obviyus).
- Updates finish their selected run's deferred model repairs even when plugins are unchanged. [#165148](https://github.com/openclaw/openclaw/pull/165148) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete).
- Eligible Windows Gateway tasks can start before login, and managed startup allows longer cold starts. [#165163](https://github.com/openclaw/openclaw/pull/165163) [Docs](https://docs.openclaw.ai/platforms/windows) · [Docs](https://docs.openclaw.ai/cli/gateway/restart-and-supervision) · Thanks [@steipete](https://github.com/steipete), [@desksk](https://github.com/desksk), [@runvouch](https://github.com/runvouch).
- Restart recovery settles orphaned spawned and archived sessions left marked running while preserving resumable main sessions and active work. [#165174](https://github.com/openclaw/openclaw/pull/165174) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Delegated work resumes after deferred database readiness, and one failed requester group no longer blocks unrelated recovery. [#165184](https://github.com/openclaw/openclaw/pull/165184) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Runtime database opens avoid repeated completed integrity checks, and slow-hold warnings identify the operation and time spent waiting or committing. [#165186](https://github.com/openclaw/openclaw/pull/165186) Thanks [@steipete](https://github.com/steipete).
- Agents with small conversation-history rebuilds can become available sooner after a multi-agent Gateway restart. [#165207](https://github.com/openclaw/openclaw/pull/165207) Thanks [@steipete](https://github.com/steipete).
- Fresh installs without Matrix or legacy Matrix data avoid an unnecessary Doctor migration failure while the Gateway is running. [#165209](https://github.com/openclaw/openclaw/pull/165209) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@steipete](https://github.com/steipete).
- Non-interactive onboarding returns requested JSON error details when affected provider setup fails, helping installers explain the failure. [#165211](https://github.com/openclaw/openclaw/pull/165211) [Docs](https://docs.openclaw.ai/cli/onboard) · Thanks [@steipete](https://github.com/steipete).
- Large Gateways can serve requests before optional startup maintenance finishes, with clearer phase timings for diagnosis. [#165218](https://github.com/openclaw/openclaw/pull/165218) [Docs](https://docs.openclaw.ai/logging) · Thanks [@steipete](https://github.com/steipete).
- In-place updates avoid a misleading missing-module cleanup error after success, and failed commands retain their original error. [#165233](https://github.com/openclaw/openclaw/pull/165233) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete).
- Update repair can recover the covered blockage when reboot or temporary-file cleanup removes the handoff database. [#165238](https://github.com/openclaw/openclaw/pull/165238) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@Hensarj](https://github.com/Hensarj), [@dawid-sitko](https://github.com/dawid-sitko).
- Updates to an already-current package can still repair supported legacy configuration and complete plugin maintenance without --channel. [#165242](https://github.com/openclaw/openclaw/pull/165242) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Retained workers exchange task messages directly, spending less CPU and time moving inputs and results. [#165249](https://github.com/openclaw/openclaw/pull/165249) Thanks [@steipete](https://github.com/steipete).
- Old plugin-session artifact cleanup skips recent snapshots and reads historical windows in pages, reducing planning work and long read holds. [#165254](https://github.com/openclaw/openclaw/pull/165254) Thanks [@steipete](https://github.com/steipete).
- Updates can copy file bytes when a container blocks file cloning, avoiding the covered updater-runtime-retention failure. [#165257](https://github.com/openclaw/openclaw/pull/165257) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@MrJanvar](https://github.com/MrJanvar), [@rybing7](https://github.com/rybing7), [@Mohl](https://github.com/Mohl).
- Windows service reinstalls replace the old running process so runtime paths, arguments and environment changes actually take effect; status verifies the registered command. [#165261](https://github.com/openclaw/openclaw/pull/165261) [Docs](https://docs.openclaw.ai/platforms/windows) · Thanks [@steipete](https://github.com/steipete).
- Full source builds compile overlapping public declarations together instead of repeating SDK declaration work. [#165271](https://github.com/openclaw/openclaw/pull/165271) Thanks [@huntharo](https://github.com/huntharo), [@obviyus](https://github.com/obviyus).
- Doctor recognizes native Claude CLI installations outside the service PATH and avoids misleading reinstall advice. [#165273](https://github.com/openclaw/openclaw/pull/165273) [Docs](https://docs.openclaw.ai/gateway/doctor/checks) · Thanks [@steipete](https://github.com/steipete), [@mightyx](https://github.com/mightyx).
- Cleaning old diagnostic run history causes shorter interruptions to other writes in the same agent database. [#165274](https://github.com/openclaw/openclaw/pull/165274) [Docs](https://docs.openclaw.ai/tools/trajectory) · Thanks [@steipete](https://github.com/steipete).
- A retained background-worker initialization failure stops repeated replacement starts driven by queued tasks; healthy siblings keep working. [#165277](https://github.com/openclaw/openclaw/pull/165277) Thanks [@steipete](https://github.com/steipete).
- Busy Gateways avoid repeated process work when preparing PR information and protected HTTPS commands to the same hostname. [#165290](https://github.com/openclaw/openclaw/pull/165290) [Docs](https://docs.openclaw.ai/gateway/secrets/secret-store-and-egress) · Thanks [@steipete](https://github.com/steipete).
- Session worker reads reuse unchanged ownership metadata and existing read transactions to reduce repeated database work while keeping related facts current. [#165293](https://github.com/openclaw/openclaw/pull/165293) [Docs](https://docs.openclaw.ai/reference/database-schemas) · Thanks [@steipete](https://github.com/steipete).
- Initial saved-session reads for replies and fast commands move off the Gateway thread while preserving session and save safeguards. [#165295](https://github.com/openclaw/openclaw/pull/165295) Thanks [@steipete](https://github.com/steipete).
- Updates preserve existing Feishu callback endpoints before activation even when plugin installation is deferred; shared fallback covers Telegram, Teams and Nextcloud Talk. [#165303](https://github.com/openclaw/openclaw/pull/165303) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · [Docs](https://docs.openclaw.ai/plugins/sdk-overview/infrastructure) · Thanks [@shakkernerd](https://github.com/shakkernerd).
- Update status avoids inflated ahead/behind counts in shallow Git histories, returning unknown when exact comparison cannot be justified. [#165316](https://github.com/openclaw/openclaw/pull/165316) Thanks [@ooiuuii](https://github.com/ooiuuii).
- Existing shared Bun consumers receive VM rendering, asynchronous import-context and worker heap/stack-limit engine fixes. [#165317](https://github.com/openclaw/openclaw/pull/165317) Thanks [@steipete](https://github.com/steipete).
- Generated macOS service definitions request a longer shutdown window, with Doctor and update finalization migrating recognized older generated definitions while preserving custom settings. [#165320](https://github.com/openclaw/openclaw/pull/165320) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete), [@yuzh086-create](https://github.com/yuzh086-create).
- An agent repairing its startup indexes promptly asks callers to retry while other ready agents, Control UI and health checks remain usable. [#165323](https://github.com/openclaw/openclaw/pull/165323) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete).
- Updates of prepared source builds and package installations skip an unnecessary plugin-state lock during runtime completion, avoiding unrelated lock admission failures at that step. [#165326](https://github.com/openclaw/openclaw/pull/165326) Thanks [@steipete](https://github.com/steipete).
- Pending session notices are restored after restart through background database workers, keeping their recovery SQL off the Gateway main thread. [#165331](https://github.com/openclaw/openclaw/pull/165331) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete), [@vincentkoc](https://github.com/vincentkoc).
- Workspace recovery spends less time checking large numbers of files that are already deleted. [#165341](https://github.com/openclaw/openclaw/pull/165341) Thanks [@steipete](https://github.com/steipete).
- Dev-channel updates can prepare a source checkout before its dependencies are installed instead of failing with a missing-package error. [#165347](https://github.com/openclaw/openclaw/pull/165347) Thanks [@steipete](https://github.com/steipete).
- Doctor can wait for an exited container's fresh ownership lock to expire instead of immediately refusing maintenance, while protecting active Gateways. [#165355](https://github.com/openclaw/openclaw/pull/165355) [Docs](https://docs.openclaw.ai/cli/doctor/recovery) · Thanks [@steipete](https://github.com/steipete).
- Queued health checks and inference requests keep waiting until their actual deadline when the clock moves backward or the deadline exceeds the native timer range. [#165359](https://github.com/openclaw/openclaw/pull/165359) Thanks [@Chessing234](https://github.com/Chessing234), [@steipete](https://github.com/steipete).
- Configuration checks show the actual SQLite helper launch error and affected file instead of a misleading trim TypeError. [#165373](https://github.com/openclaw/openclaw/pull/165373) [Docs](https://docs.openclaw.ai/cli/config) · Thanks [@steipete](https://github.com/steipete), [@nnljl2003](https://github.com/nnljl2003).
- File copying falls back safely when containers block cloning, and the filesystem dependency also corrects fresh file creation on gVisor/9p. [#165374](https://github.com/openclaw/openclaw/pull/165374) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@MrJanvar](https://github.com/MrJanvar), [@Mohl](https://github.com/Mohl), [@rybing7](https://github.com/rybing7).
- Two retired configuration formats require an intermediate upgrade through 2026.9.5 and openclaw doctor --fix before installing a newer release. [#165375](https://github.com/openclaw/openclaw/pull/165375) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete).
- Six retired JSON state families require 2026.9.7 Doctor on the original host before upgrading; current Doctor preserves the files and explains that step. [#165402](https://github.com/openclaw/openclaw/pull/165402) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · [Docs](https://docs.openclaw.ai/gateway/restart-recovery#agent-requested-restarts) · Thanks [@steipete](https://github.com/steipete).
- Managed npm installs honor uppercase and mixed-case retry and timeout settings, including zero retries. [#165409](https://github.com/openclaw/openclaw/pull/165409) Thanks [@Chessing234](https://github.com/Chessing234).
- Agent diagnostic recorder setup uses background session readers, reducing synchronous Gateway-thread database work without changing captured diagnostics. [#165410](https://github.com/openclaw/openclaw/pull/165410) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Authorized updates no longer fail because Doctor's permission check mistakes its own maintenance session for another owner's lock. [#165417](https://github.com/openclaw/openclaw/pull/165417) [Docs](https://docs.openclaw.ai/cli/doctor/recovery) · Thanks [@steipete](https://github.com/steipete).
- Unused old login files no longer block Doctor, upgrades or container startup. [#165420](https://github.com/openclaw/openclaw/pull/165420) Thanks [@obviyus](https://github.com/obviyus).
- An obsolete update-notification cache no longer blocks Doctor or upgrade admission and remains preserved. [#165461](https://github.com/openclaw/openclaw/pull/165461) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete).
- Sessions accept the next instruction after restart recovery settles the interrupted reply. [#165469](https://github.com/openclaw/openclaw/pull/165469) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Opening messages and usage reports moves their database reads off the main request thread. [#165470](https://github.com/openclaw/openclaw/pull/165470) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete), [@shakkernerd](https://github.com/shakkernerd).
- Large worker-session inventories cause less repeated work during cleanup checks, and changed placements invalidate old cleanup decisions. [#165475](https://github.com/openclaw/openclaw/pull/165475) [Docs](https://docs.openclaw.ai/gateway/cloud-workers/session-lifecycle) · Thanks [@steipete](https://github.com/steipete).
- Restart inspection no longer produces false secret-failure warnings or unnecessary reload advice. [#165485](https://github.com/openclaw/openclaw/pull/165485) [Docs](https://docs.openclaw.ai/gateway/secrets/runtime-model) · Thanks [@steipete](https://github.com/steipete).
- Gateway startup skips unnecessary repair-rule loading, and recovery inspections read a consistent state view. [#165498](https://github.com/openclaw/openclaw/pull/165498) [Docs](https://docs.openclaw.ai/cli/gateway/running) · Thanks [@steipete](https://github.com/steipete).
- Routine session cleanup does less repeated work on large watcher registries while preserving retention safeguards. [#165511](https://github.com/openclaw/openclaw/pull/165511) [Docs](https://docs.openclaw.ai/reference/database-schemas) · Thanks [@steipete](https://github.com/steipete).
- Usage reports reject dates skipped by the Gateway timezone instead of returning backwards ranges. [#165523](https://github.com/openclaw/openclaw/pull/165523) Thanks [@SashaMIT](https://github.com/SashaMIT), [@obviyus](https://github.com/obviyus).
- An external Gateway restart can hand over after required data closes even when plugin shutdown stalls. [#165524](https://github.com/openclaw/openclaw/pull/165524) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Doctor explains retired runtime files without letting advisory inspection failures block an otherwise valid startup. [#165528](https://github.com/openclaw/openclaw/pull/165528) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete).
- Windows Gateway status preserves a saved Node or Bun choice after installation and gives Task Scheduler repair guidance. [#165538](https://github.com/openclaw/openclaw/pull/165538) [Docs](https://docs.openclaw.ai/platforms/windows) · Thanks [@steipete](https://github.com/steipete).
- Optional configuration fallbacks during updates appear as warnings instead of misleading errors. [#165539](https://github.com/openclaw/openclaw/pull/165539) Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Linux Gateways automatically warm bounded recent-history data in the background to reduce later disk reads. [#165545](https://github.com/openclaw/openclaw/pull/165545) [Docs](https://docs.openclaw.ai/reference/database-schemas/layout) · Thanks [@steipete](https://github.com/steipete).
- Prometheus separates worker queue waiting from request duration so operators can diagnose contention. [#165591](https://github.com/openclaw/openclaw/pull/165591) [Docs](https://docs.openclaw.ai/gateway/prometheus) · Thanks [@steipete](https://github.com/steipete).
- Update repair can unblock a stranded publication after external package changes once modified inventoried files are restored. [#165607](https://github.com/openclaw/openclaw/pull/165607) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@NovaeonStudio](https://github.com/NovaeonStudio).
- After restart, a long recovered turn no longer delays unrelated interrupted sessions beyond normal main-lane limits. [#165612](https://github.com/openclaw/openclaw/pull/165612) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Gateway startup reuses configuration checks and plugin information to reduce repeated setup work. [#165667](https://github.com/openclaw/openclaw/pull/165667) Thanks [@steipete](https://github.com/steipete).
- Gateway shutdown logs identify slow cleanup steps and show what is still pending when a deadline expires. [#165670](https://github.com/openclaw/openclaw/pull/165670) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Old diagnostic run history can be cleaned up while new events continue arriving. [#165678](https://github.com/openclaw/openclaw/pull/165678) Thanks [@steipete](https://github.com/steipete).
- First-use agent database checks move off the Gateway thread, and background observer writes stop blocking turn cleanup through an inherited write context. [#165680](https://github.com/openclaw/openclaw/pull/165680) Thanks [@steipete](https://github.com/steipete).
- Large subagent histories cause fewer Gateway pauses during recovery and cold reads, and restored state is published together. [#165684](https://github.com/openclaw/openclaw/pull/165684) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- The earlier removal of Voice Call conversion is superseded by the restored Doctor migration below; current supported older settings need not all be converted manually. [#165707](https://github.com/openclaw/openclaw/pull/165707) [Docs](https://docs.openclaw.ai/plugins/voice-call/configuration) · [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete).
- Session activity follows live runs and queues so interrupted restarts do not leave stale Working indicators; local destructive cleanup now requires exclusive ownership. [#165733](https://github.com/openclaw/openclaw/pull/165733) [Docs](https://docs.openclaw.ai/cli/sessions) · [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · [Docs](https://docs.openclaw.ai/reference/database-schemas/layout) · Thanks [@steipete](https://github.com/steipete).
- Setup and troubleshooting guides describe connection checks in clearer everyday language. [#165736](https://github.com/openclaw/openclaw/pull/165736) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Connection buttons, results and native diagnostics use clearer check wording. [#165737](https://github.com/openclaw/openclaw/pull/165737) Thanks [@RomneyDa](https://github.com/RomneyDa).
- CLI setup, status and repair messages describe connection and authentication checks in clearer language. [#165740](https://github.com/openclaw/openclaw/pull/165740) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Runtime errors and health messages describe existing checks more clearly. [#165742](https://github.com/openclaw/openclaw/pull/165742) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Linux updates respect systemd maintenance holds and show how to recover when a hold prevents restart. [#165747](https://github.com/openclaw/openclaw/pull/165747) [Docs](https://docs.openclaw.ai/cli/gateway/service#linux-maintenance-holds) · [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@gregb100](https://github.com/gregb100).
- Database schema histories identify the releases that introduced stored-data changes, helping operators plan upgrades and recovery. [#165757](https://github.com/openclaw/openclaw/pull/165757) [Docs](https://docs.openclaw.ai/reference/database-schemas/state-schema-history) · [Docs](https://docs.openclaw.ai/reference/database-schemas/agent-schema-history) · Thanks [@steipete](https://github.com/steipete), [@gregb100](https://github.com/gregb100).
- Affected Linux hosts no longer reject healthy database snapshots solely because metadata timestamps changed. [#165775](https://github.com/openclaw/openclaw/pull/165775) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@donquiche61](https://github.com/donquiche61), [@naturecurly](https://github.com/naturecurly), [@dreamkeeper](https://github.com/dreamkeeper), [@wangmiao0668000666](https://github.com/wangmiao0668000666), [@clockthunder](https://github.com/clockthunder), [@honghongxinxi-zhb](https://github.com/honghongxinxi-zhb), [@jayzhou2309](https://github.com/jayzhou2309).
- Interrupted Gateway restarts can finish database closure when scheduled continuations are still active. [#165782](https://github.com/openclaw/openclaw/pull/165782) Thanks [@steipete](https://github.com/steipete).
- Worktree cleanup remembers invalid Git metadata instead of repeatedly probing it, and the X plugin regains its Plugins-page icon. [#165795](https://github.com/openclaw/openclaw/pull/165795) Thanks [@steipete](https://github.com/steipete).
- Slow preparation of individual agent databases no longer holds up Gateway readiness; available agents and the Control UI can be used while the remaining agents finish. [#165803](https://github.com/openclaw/openclaw/pull/165803) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Prometheus metrics identify the worker tasks and database operations behind queue delays. Dashboard queries using older task labels need updating. [#165816](https://github.com/openclaw/openclaw/pull/165816) [Docs](https://docs.openclaw.ai/gateway/prometheus) · Thanks [@steipete](https://github.com/steipete).
- Doctor and update backups preserve vector memory data on CPUs that cannot load the bundled vector-search extension, protecting recovery before repairs. [#165820](https://github.com/openclaw/openclaw/pull/165820) [Docs](https://docs.openclaw.ai/install/backups) · Thanks [@steipete](https://github.com/steipete), [@NovaUnboundAi](https://github.com/NovaUnboundAi).
- The experimental fleet command is retired; retained containers and data need Docker or Podman management for deployment, updates, and backups. Related transcript completions keep their recorded owner. [#165825](https://github.com/openclaw/openclaw/pull/165825) [Docs](https://docs.openclaw.ai/install/updating#retired-tenant-container-management) · [Docs](https://docs.openclaw.ai/install/updating/rollback-and-recovery#downgrade) · [Docs](https://docs.openclaw.ai/gateway/security/trust-model) · Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@RomneyDa](https://github.com/RomneyDa).
- Managed CLI updates respect explicitly selected temporary directories when planning snapshots, while retaining capacity-based fallbacks. [#165830](https://github.com/openclaw/openclaw/pull/165830) [Docs](https://docs.openclaw.ai/install/updating/update-methods) · Thanks [@steipete](https://github.com/steipete), [@DonnieFi](https://github.com/DonnieFi).
- Doctor can again repair supported older Voice Call settings so they pass validation after an upgrade, while preserving current-format values. [#165831](https://github.com/openclaw/openclaw/pull/165831) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · [Docs](https://docs.openclaw.ai/plugins/voice-call) · Thanks [@steipete](https://github.com/steipete).
- Doctor archive repairs keep progressing through empty historical session IDs and respond to interruption, preserving completed batches for retry and reporting the affected archive on failure. [#165837](https://github.com/openclaw/openclaw/pull/165837) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@steipete](https://github.com/steipete), [@A1fred-AI](https://github.com/A1fred-AI), [@goncalonc](https://github.com/goncalonc), [@mpquemel](https://github.com/mpquemel).
- An unfinished channel-health check no longer causes an otherwise verified update to fail solely for timing out; the update keeps a warning directing users to check health. [#165852](https://github.com/openclaw/openclaw/pull/165852) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete), [@vasaeru](https://github.com/vasaeru), [@jlapenna](https://github.com/jlapenna), [@rogerallen1](https://github.com/rogerallen1), [@TimofeyK](https://github.com/TimofeyK).
- Doctor and updates can resume interrupted archive publication, retain missing-copy recovery information, and restore a managed Gateway Doctor stopped when a repair fails. [#165854](https://github.com/openclaw/openclaw/pull/165854) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@Olli0103](https://github.com/Olli0103), [@h6y3](https://github.com/h6y3), [@waynegault](https://github.com/waynegault), [@rauf543](https://github.com/rauf543), [@mpquemel](https://github.com/mpquemel), [@goncalonc](https://github.com/goncalonc), [@A1fred-AI](https://github.com/A1fred-AI), [@steipete](https://github.com/steipete).
- Updates from 2026.10.1-beta.1 can finish cleanup after package replacement without losing required modules. [#165855](https://github.com/openclaw/openclaw/pull/165855) Thanks [@shakkernerd](https://github.com/shakkernerd).
- Doctor can clear unfinished-plugin warnings for eligible empty configurations or a completed official replacement, while retaining plugin data and genuine migration work. [#165861](https://github.com/openclaw/openclaw/pull/165861) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete), [@Franklinyung](https://github.com/Franklinyung), [@ekinnee](https://github.com/ekinnee).
- Catchable interruptions during local update finalization give recovery time to restore a consistent package and restart the Gateway before reporting the signal and phase. [#165863](https://github.com/openclaw/openclaw/pull/165863) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete), [@chrisreed14](https://github.com/chrisreed14), [@dankarization](https://github.com/dankarization).
- Doctor and update-time migration can import older saved pending replies without repeatedly failing, preserving exact conversation IDs, transcripts and archived originals. [#165866](https://github.com/openclaw/openclaw/pull/165866) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@SunnyShu0925](https://github.com/SunnyShu0925), [@steipete](https://github.com/steipete), [@609NFT](https://github.com/609NFT).
- Gateway suspension can finish after already-disconnected requests or failed final dispatches instead of waiting on stale work, and reports the conversations still awaiting writes. [#165871](https://github.com/openclaw/openclaw/pull/165871) [Docs](https://docs.openclaw.ai/cli/gateway/query) · Thanks [@steipete](https://github.com/steipete).
- The Control UI's generated assets are readable by arbitrary container users, addressing the permission failure that prevented it loading in OpenShift deployments. [#165880](https://github.com/openclaw/openclaw/pull/165880) Thanks [@RomneyDa](https://github.com/RomneyDa), [@Conan-Scott](https://github.com/Conan-Scott).
- Secret-file inputs reject unwritten named pipes, plugin logs stay out of machine output, Doctor preserves replaced links, and custom Mistral costs survive configuration cleanup. [#165900](https://github.com/openclaw/openclaw/pull/165900) [Docs](https://docs.openclaw.ai/cli/secrets) · Thanks [@steipete](https://github.com/steipete).
- Prometheus metrics identify shared-state read families, and node pending-work drains avoid a redundant pairing lookup while retaining fresh authorization. [#165910](https://github.com/openclaw/openclaw/pull/165910) [Docs](https://docs.openclaw.ai/gateway/prometheus) · Thanks [@steipete](https://github.com/steipete).
- Background worktree cleanup releases sessions sooner and backs off repeated Git timeouts. [#165913](https://github.com/openclaw/openclaw/pull/165913) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Git and worktree failures retain their real diagnostic when a generated path contains dns. [#165921](https://github.com/openclaw/openclaw/pull/165921) Thanks [@steipete](https://github.com/steipete).
- Large worker fleets do less repeated background reconciliation work. [#165922](https://github.com/openclaw/openclaw/pull/165922) Thanks [@steipete](https://github.com/steipete).
- Idle Gateways avoid unnecessary scheduler wakeups and temporary allocations. [#165931](https://github.com/openclaw/openclaw/pull/165931) Thanks [@steipete](https://github.com/steipete).
- Repeated node and environment discovery does less work when paired devices and node state are unchanged. [#165941](https://github.com/openclaw/openclaw/pull/165941) Thanks [@steipete](https://github.com/steipete).
- Gateways restore large retained subagent registries faster before becoming ready. [#165942](https://github.com/openclaw/openclaw/pull/165942) Thanks [@steipete](https://github.com/steipete).
- Worktree cleanup reports complete totals for eligible removals, deferrals and failures even beyond its detail limit. [#165969](https://github.com/openclaw/openclaw/pull/165969) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Managed worktree Git indexes can share unchanged file data on APFS and other clone-capable filesystems. [#165981](https://github.com/openclaw/openclaw/pull/165981) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete), [@matthematics1137](https://github.com/matthematics1137).
- Updates accept unchanged plugin files after harmless hard-link metadata changes while still checking their contents. [#165982](https://github.com/openclaw/openclaw/pull/165982) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · [Docs](https://docs.openclaw.ai/install/updating/update-methods) · Thanks [@steipete](https://github.com/steipete), [@wg-mojo](https://github.com/wg-mojo).
- Managed-worktree maintenance recovers when a stale Git pack index refers to replaced pack files. [#165995](https://github.com/openclaw/openclaw/pull/165995) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Global npm installs avoid retaining native binaries for unrelated platforms, reducing installation size. [#165997](https://github.com/openclaw/openclaw/pull/165997) Thanks [@steipete](https://github.com/steipete), [@tommyfive](https://github.com/tommyfive), [@kenmege](https://github.com/kenmege).
- Gateway stops can finish accepted storage writes and close databases cleanly after active-work draining times out. [#166018](https://github.com/openclaw/openclaw/pull/166018) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Routine chat history checks and session saves perform fewer database operations. [#166041](https://github.com/openclaw/openclaw/pull/166041) Thanks [@steipete](https://github.com/steipete).
- Doctor can migrate legacy state on Linux systems such as QNAP where no-replace rename is unsupported. [#166048](https://github.com/openclaw/openclaw/pull/166048) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery#skipped-legacy-audit-recovery) · [Docs](https://docs.openclaw.ai/gateway/security/secure-file-operations) · Thanks [@steipete](https://github.com/steipete), [@StarGazer1995](https://github.com/StarGazer1995), [@bbs2i58](https://github.com/bbs2i58), [@MertBasar0](https://github.com/MertBasar0).
- Chat preparation and worker recovery avoid repeated local database reads. [#166053](https://github.com/openclaw/openclaw/pull/166053) Thanks [@steipete](https://github.com/steipete).
- Ongoing chats and history reads reuse unchanged session information instead of repeating database queries. [#166054](https://github.com/openclaw/openclaw/pull/166054) Thanks [@steipete](https://github.com/steipete).
- Windows installs and upgrades accept equivalent short and long session-database paths instead of refusing startup. [#166062](https://github.com/openclaw/openclaw/pull/166062) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Session-history reader workers retain less memory by loading fewer unrelated dependencies. [#166069](https://github.com/openclaw/openclaw/pull/166069) Thanks [@steipete](https://github.com/steipete).
- Credential-free Hermes migration plans can proceed despite an unreadable destination credential store. [#166070](https://github.com/openclaw/openclaw/pull/166070) Thanks [@steipete](https://github.com/steipete).
- Managed-worktree cleanup avoids parsing entire saved conversations to check whether checkouts are still in use. [#166072](https://github.com/openclaw/openclaw/pull/166072) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Chat turns and session history reads perform less database bookkeeping while preserving consistent snapshots. [#166074](https://github.com/openclaw/openclaw/pull/166074) Thanks [@steipete](https://github.com/steipete).
- Failed transcript archive writes clean up their own temporary files, including storage-full failures. [#166085](https://github.com/openclaw/openclaw/pull/166085) Thanks [@steipete](https://github.com/steipete).
- Agent operations avoid rechecking unchanged database catalog information. [#166102](https://github.com/openclaw/openclaw/pull/166102) Thanks [@steipete](https://github.com/steipete).
- Busy Bun Gateways avoid expensive detailed heap checks between database and history operations. [#166104](https://github.com/openclaw/openclaw/pull/166104) Thanks [@steipete](https://github.com/steipete).
- Gateway startup waits through temporary database schema ownership instead of exiting before channels come online. [#166111](https://github.com/openclaw/openclaw/pull/166111) [Docs](https://docs.openclaw.ai/cli/gateway/running) · Thanks [@NianJiuZst](https://github.com/NianJiuZst), [@steipete](https://github.com/steipete), [@ericcaiwx-star](https://github.com/ericcaiwx-star), [@mashaohua1999-stack](https://github.com/mashaohua1999-stack).
- Completed background full database checks can be reused after clean shutdown, avoiding a repeated scan on the next eligible restart. [#166112](https://github.com/openclaw/openclaw/pull/166112) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Future updater runs avoid redundant database snapshots during readiness checks. [#166126](https://github.com/openclaw/openclaw/pull/166126) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Account refresh and personal model discovery move database work away from the Gateway request thread and reduce repeated reads. [#166183](https://github.com/openclaw/openclaw/pull/166183) Thanks [@steipete](https://github.com/steipete).
- Git-operation diagnostics release data retained after completed operations. [#166214](https://github.com/openclaw/openclaw/pull/166214) Thanks [@steipete](https://github.com/steipete).
- New exec and stdio MCP launches can find an available stable Node path after Homebrew removes the old executable. [#166222](https://github.com/openclaw/openclaw/pull/166222) [Docs](https://docs.openclaw.ai/install/node) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@steipete](https://github.com/steipete), [@mightyx](https://github.com/mightyx).
- Linux updates handle older stopped-service handoffs when systemd has unloaded the unit and no manager ID was recorded. [#166232](https://github.com/openclaw/openclaw/pull/166232) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Setup and repair helpers give failure-specific recovery advice instead of recommending onboarding for temporary runtime failures. [#166234](https://github.com/openclaw/openclaw/pull/166234) Thanks [@PollyBot13](https://github.com/PollyBot13), [@obviyus](https://github.com/obviyus), [@Colton-Harris](https://github.com/Colton-Harris), [@tyler194653](https://github.com/tyler194653), [@stemkat100](https://github.com/stemkat100), [@MaikiMolto](https://github.com/MaikiMolto), [@explainanalyze](https://github.com/explainanalyze), [@edith-vitaetpax](https://github.com/edith-vitaetpax), [@spiral-cmd](https://github.com/spiral-cmd), [@FtlC-ian](https://github.com/FtlC-ian), [@jj5638521](https://github.com/jj5638521), [@iamade](https://github.com/iamade), [@dh-js](https://github.com/dh-js), [@JoPaMu](https://github.com/JoPaMu), [@skorfmann](https://github.com/skorfmann), [@ryanography](https://github.com/ryanography).
- Crash-loop safe mode pauses automatic session replay, preserves interrupted work, and schedules resumption after the stable window clears. [#166238](https://github.com/openclaw/openclaw/pull/166238) [Docs](https://docs.openclaw.ai/gateway/restart-recovery#safety-valves-and-observability) · Thanks [@steipete](https://github.com/steipete), [@masatohoshino](https://github.com/masatohoshino), [@KoalaShen](https://github.com/KoalaShen).
- Restart readiness inspects shared-state databases outside the Gateway request thread while retaining refusal checks. [#166252](https://github.com/openclaw/openclaw/pull/166252) Thanks [@steipete](https://github.com/steipete).
- Ongoing chats avoid repeated database preparation when validated structure remains unchanged. [#166253](https://github.com/openclaw/openclaw/pull/166253) Thanks [@steipete](https://github.com/steipete).
- Conversation discovery and session associations batch database work through existing workers. [#166259](https://github.com/openclaw/openclaw/pull/166259) [Docs](https://docs.openclaw.ai/plugins/sdk-runtime/channel) · Thanks [@steipete](https://github.com/steipete).
- Active SQLite paths reduce redundant retention, append and initialization work. [#166265](https://github.com/openclaw/openclaw/pull/166265) Thanks [@steipete](https://github.com/steipete).
- Older node hosts fail worker admission early with an update-required explanation instead of rejecting new prompt context during launch. [#166268](https://github.com/openclaw/openclaw/pull/166268) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Profile and recent-project requests prepare data in workers and avoid repeated lookups. [#166283](https://github.com/openclaw/openclaw/pull/166283) Thanks [@steipete](https://github.com/steipete).
- History and file reads move database work off the Gateway thread. [#166293](https://github.com/openclaw/openclaw/pull/166293) Thanks [@steipete](https://github.com/steipete), [@vincentkoc](https://github.com/vincentkoc).
- Updates prepare private validation state faster for large plugin installations while retaining existing checks. [#166317](https://github.com/openclaw/openclaw/pull/166317) Thanks [@hannesrudolph](https://github.com/hannesrudolph).
- Doctor and migration maintenance avoid redundant blocking database reads. [#166331](https://github.com/openclaw/openclaw/pull/166331) Thanks [@sasan1200](https://github.com/sasan1200), [@steipete](https://github.com/steipete).
- Unrelated system processes with unreadable working directories stop blocking cleanup of unused temporary runtimes. [#166335](https://github.com/openclaw/openclaw/pull/166335) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Doctor tool inspection reuses plugin registrations and owns provider discovery cleanup consistently. [#166364](https://github.com/openclaw/openclaw/pull/166364) Thanks [@steipete](https://github.com/steipete), [@hippoley](https://github.com/hippoley).
- Enabled journal diagnostics explain where slow Git reads spend time without logging repository content. [#166381](https://github.com/openclaw/openclaw/pull/166381) [Docs](https://docs.openclaw.ai/logging) · Thanks [@steipete](https://github.com/steipete).
- Eligible completed Linux update receipts can reconcile changed device numbers so a later update can proceed. [#166394](https://github.com/openclaw/openclaw/pull/166394) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@neilofneils404](https://github.com/neilofneils404).
- Doctor can reconcile leftover session files without replacing current sessions or stopping unrelated repairs. [#166397](https://github.com/openclaw/openclaw/pull/166397) [Docs](https://docs.openclaw.ai/cli/doctor/sqlite-maintenance) · Thanks [@steipete](https://github.com/steipete), [@coolcoolwcr](https://github.com/coolcoolwcr).
- Failed update checks explain the requirement and identify the selected installation and runtime. [#166410](https://github.com/openclaw/openclaw/pull/166410) [Docs](https://docs.openclaw.ai/install/updating/rollback-and-recovery#before-you-upgrade) · Thanks [@steipete](https://github.com/steipete), [@TOM-WANG-GUANG](https://github.com/TOM-WANG-GUANG).
- Background integrity checks retain successful verification through idle worker retirement for reuse after a clean restart. [#166412](https://github.com/openclaw/openclaw/pull/166412) Thanks [@steipete](https://github.com/steipete).
- Pre-repair captures can publish through an exclusive fallback when native no-replace rename is unsupported. [#166425](https://github.com/openclaw/openclaw/pull/166425) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@MertBasar0](https://github.com/MertBasar0).
- Exec and stdio MCP relays recover after Homebrew removes the running Node, with restart guidance for exact-runtime workers. [#166430](https://github.com/openclaw/openclaw/pull/166430) [Docs](https://docs.openclaw.ai/cli/status) · [Docs](https://docs.openclaw.ai/install/node) · Thanks [@steipete](https://github.com/steipete), [@mightyx](https://github.com/mightyx).
- Session moves and approval preparation do more database work in the background, and deletion can finish when another cleanup has already retired the same placement. [#166444](https://github.com/openclaw/openclaw/pull/166444) Thanks [@steipete](https://github.com/steipete).
- Opening session file lists, downloading files, and viewing members avoids repeated database work while preserving current access checks. [#166447](https://github.com/openclaw/openclaw/pull/166447) Thanks [@steipete](https://github.com/steipete).
- Gateway error logs identify the session and reason when a requested wake fails. [#166458](https://github.com/openclaw/openclaw/pull/166458) Thanks [@steipete](https://github.com/steipete), [@hawkit](https://github.com/hawkit).
- macOS worker failures clean up background commands and release worker capacity without a stalled process lookup. [#166478](https://github.com/openclaw/openclaw/pull/166478) Thanks [@steipete](https://github.com/steipete), [@hippoley](https://github.com/hippoley).
- Interrupted Doctor recovery captures remain available and no longer hide nearby healthy captures. [#166495](https://github.com/openclaw/openclaw/pull/166495) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery#original-state-captures) · Thanks [@steipete](https://github.com/steipete), [@MertBasar0](https://github.com/MertBasar0), [@hippoley](https://github.com/hippoley).
- Repeated session history and search work avoids unnecessary database reopening and validation. [#166503](https://github.com/openclaw/openclaw/pull/166503) Thanks [@steipete](https://github.com/steipete), [@hippoley](https://github.com/hippoley).
- Memory reindex locks no longer cause false held-database warnings in Doctor. [#166517](https://github.com/openclaw/openclaw/pull/166517) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@steipete](https://github.com/steipete), [@noelff](https://github.com/noelff).
- Chat turns avoid rereading session details already known after saving. [#166519](https://github.com/openclaw/openclaw/pull/166519) Thanks [@steipete](https://github.com/steipete).
- Concurrent Gateway CLI calls load credentials with less overhead and stop clearly if required device identity cannot be read. [#166523](https://github.com/openclaw/openclaw/pull/166523) [Docs](https://docs.openclaw.ai/cli/gateway/query) · Thanks [@steipete](https://github.com/steipete).
- Rescue approvals and OpenRouter catalog storage move their database operations off the Gateway thread. [#166528](https://github.com/openclaw/openclaw/pull/166528) Thanks [@steipete](https://github.com/steipete).
- Windows update candidates can pass valid live handoffs despite changed launcher ancestry. [#166530](https://github.com/openclaw/openclaw/pull/166530) Thanks [@steipete](https://github.com/steipete), [@wqj11a](https://github.com/wqj11a), [@H0Nm4M1suZu](https://github.com/H0Nm4M1suZu).
- Cold device identity preparation uses the shared worker, and idle plugin cleanup skips unnecessary database work. [#166539](https://github.com/openclaw/openclaw/pull/166539) Thanks [@steipete](https://github.com/steipete).
- Failed managed updates retain actionable handoff reasons and late diagnostic details. [#166540](https://github.com/openclaw/openclaw/pull/166540) [Docs](https://docs.openclaw.ai/install/update-troubleshooting) · Thanks [@steipete](https://github.com/steipete), [@dondonjang](https://github.com/dondonjang), [@dahuangForToby](https://github.com/dahuangForToby).
- Creating sessions in large catalogs avoids repeated full scans when worker readers reopen. [#166541](https://github.com/openclaw/openclaw/pull/166541) Thanks [@steipete](https://github.com/steipete).
- An already-current update can safely restart the Gateway after refused Doctor maintenance stopped it. [#166548](https://github.com/openclaw/openclaw/pull/166548) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@Shirleyyyhk](https://github.com/Shirleyyyhk).
- Multiline terminal table cells no longer cause unnecessary wrapping in neighboring columns. [#166549](https://github.com/openclaw/openclaw/pull/166549) Thanks [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus).
- Git update previews explain unavailable local target data instead of misleading remote-access advice. [#166577](https://github.com/openclaw/openclaw/pull/166577) Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Allows plugin repair through pending migrations and official registry lag while preserving activation safeguards. [#166588](https://github.com/openclaw/openclaw/pull/166588) Thanks [@steipete](https://github.com/steipete), [@CodeForcer](https://github.com/CodeForcer).
- Reduces redundant copying when session updates are published to clients. [#166591](https://github.com/openclaw/openclaw/pull/166591) Thanks [@steipete](https://github.com/steipete).
- Restores Memory and Skills worker startup for source installations whose workspace is outside the checkout. [#166606](https://github.com/openclaw/openclaw/pull/166606) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Lets the Gateway serve requests before saving rebuilt plugin metadata when the registry is missing or stale. [#166617](https://github.com/openclaw/openclaw/pull/166617) Thanks [@steipete](https://github.com/steipete).
- Reduces startup work for one-shot Gateway calls and preserves credential resolution and port-cleanup errors. [#166657](https://github.com/openclaw/openclaw/pull/166657) Thanks [@steipete](https://github.com/steipete).
- Lets Doctor settle completed historical Codex tasks whose results cannot be delivered to their original requester, allowing otherwise-complete migrations to finish. [#166668](https://github.com/openclaw/openclaw/pull/166668) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations#native-codex-recovery-after-tasks-removal) · Thanks [@steipete](https://github.com/steipete), [@dwonshin](https://github.com/dwonshin), [@Torsie](https://github.com/Torsie), [@Hensarj](https://github.com/Hensarj), [@HMKR2025](https://github.com/HMKR2025), [@flawedhumanoid-sudo](https://github.com/flawedhumanoid-sudo), [@BsnizND](https://github.com/BsnizND), [@gisk0](https://github.com/gisk0), [@cortezhub](https://github.com/cortezhub), [@KoennaOpenclaw](https://github.com/KoennaOpenclaw), [@juanbamorelli-source](https://github.com/juanbamorelli-source).
- Prevents device-identity inspection from changing SQLite files and invalidating Doctor migration plans. [#166671](https://github.com/openclaw/openclaw/pull/166671) Thanks [@steipete](https://github.com/steipete).
- Reduces chat-turn database bookkeeping and keeps failure cleanup tied to the accepted session. [#166674](https://github.com/openclaw/openclaw/pull/166674) Thanks [@steipete](https://github.com/steipete).
- Checks Windows Gateway task access before staging updates and bounds Task Scheduler waits with actionable errors. [#166695](https://github.com/openclaw/openclaw/pull/166695) Thanks [@steipete](https://github.com/steipete), [@xiaozishan](https://github.com/xiaozishan), [@oxen-horse](https://github.com/oxen-horse).
- Avoids repeating database validation after installing session tracking's known temporary objects. [#166698](https://github.com/openclaw/openclaw/pull/166698) Thanks [@steipete](https://github.com/steipete).
- Reduces CPU work when masking secrets in large contexts and logs while preserving masking behavior. [#166701](https://github.com/openclaw/openclaw/pull/166701) Thanks [@steipete](https://github.com/steipete).
- Reduces repeated session database work during replies and keeps accepted reads valid through legitimate compaction. [#166703](https://github.com/openclaw/openclaw/pull/166703) Thanks [@steipete](https://github.com/steipete), [@vincentkoc](https://github.com/vincentkoc).
- One-shot Gateway calls spend less time loading unused dependencies before making their request. [#166722](https://github.com/openclaw/openclaw/pull/166722) Thanks [@steipete](https://github.com/steipete).
- Large update inventories can use parallel hashing when host resources allow, while constrained hosts avoid the worker cost. [#166741](https://github.com/openclaw/openclaw/pull/166741) Thanks [@hannesrudolph](https://github.com/hannesrudolph), [@vincentkoc](https://github.com/vincentkoc), [@steipete](https://github.com/steipete).
- Configuration reads correctly identify the optional root $schema key as valid but unset. [#166745](https://github.com/openclaw/openclaw/pull/166745) [Docs](https://docs.openclaw.ai/cli/config) · [Docs](https://docs.openclaw.ai/gateway/configuration) · Thanks [@obviyus](https://github.com/obviyus), [@sxh313](https://github.com/sxh313).
- Windows alternate spellings of the same state database share one connection and lifecycle identity, addressing an alias-related access conflict. [#166755](https://github.com/openclaw/openclaw/pull/166755) Thanks [@steipete](https://github.com/steipete), [@taihartman](https://github.com/taihartman).
- Chat turns avoid repeated conversation-history preparation and delivery checks while preserving fresh saved-history validation. [#166804](https://github.com/openclaw/openclaw/pull/166804) Thanks [@steipete](https://github.com/steipete).
- New-session initialization avoids waiting behind unrelated archival work for its final session count. [#166822](https://github.com/openclaw/openclaw/pull/166822) Thanks [@steipete](https://github.com/steipete).
- Configuration reads explain that missing version and migration metadata is managed automatically instead of suggesting writes that fail. [#166830](https://github.com/openclaw/openclaw/pull/166830) [Docs](https://docs.openclaw.ai/cli/config) · Thanks [@obviyus](https://github.com/obviyus), [@sxh313](https://github.com/sxh313).
- Preserved old external-agent records without current session bindings no longer prevent Gateway startup after an update. [#166839](https://github.com/openclaw/openclaw/pull/166839) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@VACInc](https://github.com/VACInc).
- Delegated update repair turns avoid spending their preparation allowance on repeated expensive permission snapshots. [#166847](https://github.com/openclaw/openclaw/pull/166847) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete).
- Doctor JSON and lint inspections leave existing SQLite databases and support files unchanged while reporting pending upgrades. [#166857](https://github.com/openclaw/openclaw/pull/166857) [Docs](https://docs.openclaw.ai/cli/doctor/lint) · Thanks [@steipete](https://github.com/steipete).
- Source-checkout Gateway status works when prepared input contents still match despite Git marking them modified. [#166864](https://github.com/openclaw/openclaw/pull/166864) [Docs](https://docs.openclaw.ai/cli/gateway/query) · Thanks [@steipete](https://github.com/steipete).
- The first reply after Gateway restart can start when healthy database connections open concurrently. [#166867](https://github.com/openclaw/openclaw/pull/166867) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Eligible new chats use fewer storage commits to start their first turn, reducing work during bursts of session creation. [#166891](https://github.com/openclaw/openclaw/pull/166891) [Docs](https://docs.openclaw.ai/concepts/session) · Thanks [@steipete](https://github.com/steipete).
- Older builds give compatible-build or pre-update-backup guidance when newer database state also has an unreadable catalog. [#166906](https://github.com/openclaw/openclaw/pull/166906) [Docs](https://docs.openclaw.ai/reference/database-schemas/versioning) · Thanks [@steipete](https://github.com/steipete), [@shakkernerd](https://github.com/shakkernerd).
- Administrators can capture CPU profiles, allocation profiles and heap snapshots on OpenClaw's supported Bun runtime. [#166933](https://github.com/openclaw/openclaw/pull/166933) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · [Docs](https://docs.openclaw.ai/gateway/troubleshooting/gateway-service-and-process) · Thanks [@steipete](https://github.com/steipete).
- Gateway start waits for an already-running Gateway to become ready and reports meaningful recovery guidance without restarting it. [#166942](https://github.com/openclaw/openclaw/pull/166942) [Docs](https://docs.openclaw.ai/cli/gateway/service) · [Docs](https://docs.openclaw.ai/cli/gateway/restart-and-supervision) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@odrobnik](https://github.com/odrobnik).
- Gateway diagnostics keep recognized startup failures visible after cleanup messages and direct unavailable services to useful checks. [#166946](https://github.com/openclaw/openclaw/pull/166946) [Docs](https://docs.openclaw.ai/cli/gateway/service) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@odrobnik](https://github.com/odrobnik).
- Doctor warns early when configured local Tailscale Serve or Funnel cannot start because its backend needs attention. [#166947](https://github.com/openclaw/openclaw/pull/166947) [Docs](https://docs.openclaw.ai/gateway/tailscale) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@odrobnik](https://github.com/odrobnik).
- Interactive Doctor asks to pause the managed Gateway during separately approved repairs and restores its prior running or stopped state. [#166948](https://github.com/openclaw/openclaw/pull/166948) [Docs](https://docs.openclaw.ai/cli/doctor/running) · [Docs](https://docs.openclaw.ai/gateway/doctor/gateway-and-services) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@odrobnik](https://github.com/odrobnik).
- Doctor previews the actual Gateway service repair before approval and identifies warnings that still require separate action. [#166950](https://github.com/openclaw/openclaw/pull/166950) [Docs](https://docs.openclaw.ai/gateway/doctor/gateway-and-services) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Inspecting newer database state preserves its files and gives compatible-build or matching-backup guidance across more diagnostic commands. [#166963](https://github.com/openclaw/openclaw/pull/166963) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Chat and maintenance perform fewer repeated database checks while retaining existing storage and permission rules. [#166966](https://github.com/openclaw/openclaw/pull/166966) [Docs](https://docs.openclaw.ai/reference/database-schemas) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Successful background database checks survive the startup timing race and clean shutdown, avoiding repeated full scans on the next open. [#166972](https://github.com/openclaw/openclaw/pull/166972) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Normal Gateway shutdown avoids repeated closed-session-observer warnings while chat handling and final session writes finish. [#166978](https://github.com/openclaw/openclaw/pull/166978) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Doctor preserves the original agent for ownerless scheduled jobs when upgrading older multi-agent configurations. [#166996](https://github.com/openclaw/openclaw/pull/166996) [Docs](https://docs.openclaw.ai/gateway/doctor/state-and-sessions) · Thanks [@steipete](https://github.com/steipete).
- Fresh database workers and maintenance checks avoid rebuilding expected database layouts already prepared by the Gateway. [#167001](https://github.com/openclaw/openclaw/pull/167001) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Large saved subagent histories use less CPU and allocate less memory during maintenance and first session-list reads. [#167010](https://github.com/openclaw/openclaw/pull/167010) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Background worktree cleanup causes fewer long pauses, and Git housekeeping no longer downloads missing objects automatically. [#167030](https://github.com/openclaw/openclaw/pull/167030) Thanks [@steipete](https://github.com/steipete).
- Linux Gateway stops allow more time for service-manager inspection, retry one inspection timeout and identify the stalled check. [#167040](https://github.com/openclaw/openclaw/pull/167040) Thanks [@steipete](https://github.com/steipete), [@jlapenna](https://github.com/jlapenna).
- Overlapping update and Doctor commands can wait through brief coordination locks instead of failing immediately. [#167051](https://github.com/openclaw/openclaw/pull/167051) Thanks [@steipete](https://github.com/steipete).
- Manual session cleanup and transcript trimming keep more database work off the Gateway main thread. [#167070](https://github.com/openclaw/openclaw/pull/167070) Thanks [@steipete](https://github.com/steipete).
- Connecting with a target-file path preserves boundary spaces and consumes the intended file instead of its similarly named neighbor. [#167116](https://github.com/openclaw/openclaw/pull/167116) Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- Doctor inspection can let Node finish closing native resources instead of forcing process exit. [#167125](https://github.com/openclaw/openclaw/pull/167125) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Cooperative Gateway suspension status can wait briefly for protected writes to finish before reporting deployment blockers. [#167184](https://github.com/openclaw/openclaw/pull/167184) Thanks [@steipete](https://github.com/steipete).
- Plugin property updates and session discovery avoid redundant allocation and repeated path resolution. [#167235](https://github.com/openclaw/openclaw/pull/167235) Thanks [@steipete](https://github.com/steipete).
- Gateway housekeeping skips redundant work when pairing notifications, queued recovery and worker-maintenance state are empty or unchanged. [#167268](https://github.com/openclaw/openclaw/pull/167268) Thanks [@steipete](https://github.com/steipete).
- Larger Gateway hosts keep fewer general-purpose reader workers, reducing potential retained worker memory. [#167295](https://github.com/openclaw/openclaw/pull/167295) Thanks [@steipete](https://github.com/steipete).
- Verified completed package updates can be cleared with update repair without discarding the retained package or recovery evidence. [#167302](https://github.com/openclaw/openclaw/pull/167302) Thanks [@shanselman](https://github.com/shanselman), [@dankarization](https://github.com/dankarization), [@fermentolactico](https://github.com/fermentolactico), [@chrisreed14](https://github.com/chrisreed14), [@catnipluss](https://github.com/catnipluss), [@steipete](https://github.com/steipete).
- Repeated chat and scheduled-session cleanup releases unused agent lookup state that previously accumulated in long-running Gateways. [#167308](https://github.com/openclaw/openclaw/pull/167308) [Docs](https://docs.openclaw.ai/gateway/diagnostics) · Thanks [@steipete](https://github.com/steipete).
- Idle checkout cleanup preserves affected work and pauses repeated failures when a shared Git repository has missing or corrupt objects. [#167323](https://github.com/openclaw/openclaw/pull/167323) Thanks [@steipete](https://github.com/steipete).
- Completed package recovery no longer permanently blocks later updates after verified cleanup failures, filesystem changes or replaced temporary ownership records. [#167330](https://github.com/openclaw/openclaw/pull/167330) Thanks [@RomneyDa](https://github.com/RomneyDa), [@shanselman](https://github.com/shanselman), [@dankarization](https://github.com/dankarization), [@neilofneils404](https://github.com/neilofneils404), [@fermentolactico](https://github.com/fermentolactico), [@catnipluss](https://github.com/catnipluss), [@chrisreed14](https://github.com/chrisreed14), [@GitHoubi](https://github.com/GitHoubi).
- Diagnostic logs distinguish long-held database reservations from writes waiting behind them and preserve session timing details. [#167332](https://github.com/openclaw/openclaw/pull/167332) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Deep Gateway status correctly identifies an unreadable state database, exits with failure and directs operators to verified-backup recovery. [#167352](https://github.com/openclaw/openclaw/pull/167352) Thanks [@steipete](https://github.com/steipete).
- Validated completed recovery history and obsolete-package cleanup stop blocking the next update while unfinished restoration remains protected. [#167358](https://github.com/openclaw/openclaw/pull/167358) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Doctor can recover scheduled agent work blocked by orphaned session windows while preserving the original database in a backup. [#167366](https://github.com/openclaw/openclaw/pull/167366) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@changjunfeng8-hue](https://github.com/changjunfeng8-hue).
- Background managed-checkout cleanup continues through unrelated sidebar, logging and model settings changes. [#167367](https://github.com/openclaw/openclaw/pull/167367) Thanks [@steipete](https://github.com/steipete).
- Backup verification rejects corrupted manifest text instead of reporting success with silently altered metadata. [#167389](https://github.com/openclaw/openclaw/pull/167389) Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- Connect preserves its one-shot target file when malformed text encoding prevents the file from being read. [#167399](https://github.com/openclaw/openclaw/pull/167399) [Docs](https://docs.openclaw.ai/cli/connect) · Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- PowerShell completes quoted option values with valid choices instead of local-file suggestions. [#167421](https://github.com/openclaw/openclaw/pull/167421) Thanks [@LinzeShi](https://github.com/LinzeShi).
- New managed checkouts use the fetched or cached remote default instead of silently substituting older local code when fetching fails. [#167426](https://github.com/openclaw/openclaw/pull/167426) Thanks [@steipete](https://github.com/steipete).
- Node identity inspection returns a parseable JSON failure and recovery hint when no identity exists. [#167437](https://github.com/openclaw/openclaw/pull/167437) [Docs](https://docs.openclaw.ai/cli#json-failures) · Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@obviyus](https://github.com/obviyus).
- Agent Git commands avoid automatic maintenance loops that could stall work in partially cloned repositories. [#167443](https://github.com/openclaw/openclaw/pull/167443) Thanks [@steipete](https://github.com/steipete).
- Overlapping storage measurements for independent session stores can finish sooner on hosts with spare CPU capacity. [#167449](https://github.com/openclaw/openclaw/pull/167449) Thanks [@steipete](https://github.com/steipete).
- Update checks avoid redundant temporary database copies and give clearer guidance when snapshot space runs out. [#167451](https://github.com/openclaw/openclaw/pull/167451) Thanks [@steipete](https://github.com/steipete), [@iFadi](https://github.com/iFadi), [@dankarization](https://github.com/dankarization), [@azuretek](https://github.com/azuretek), [@davidcittadini](https://github.com/davidcittadini).
- Managed worktree maintenance consolidates accumulated small Git packs, with cautious cleanup of abandoned temporary packs on Linux. [#167453](https://github.com/openclaw/openclaw/pull/167453) Thanks [@steipete](https://github.com/steipete).
- Doctor, updates and message delivery avoid premature interruption when clock differences create unusually long expiry delays. [#167467](https://github.com/openclaw/openclaw/pull/167467) Thanks [@steipete](https://github.com/steipete).
- Managed projects and worktrees can recover fetches blocked by missing Git commit objects while preserving local work. [#167473](https://github.com/openclaw/openclaw/pull/167473) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Detailed update summaries, saved reports and human status output retain complete recorded warnings and recovery paths. [#167509](https://github.com/openclaw/openclaw/pull/167509) [Docs](https://docs.openclaw.ai/cli/update/status-and-history) · Thanks [@steipete](https://github.com/steipete), [@GitHoubi](https://github.com/GitHoubi).
- Interrupted Gateway starts clean up their own Tailscale claim so it does not block the next start. [#167514](https://github.com/openclaw/openclaw/pull/167514) [Docs](https://docs.openclaw.ai/gateway/tailscale) · Thanks [@steipete](https://github.com/steipete), [@pandysp](https://github.com/pandysp).
- Doctor and Gateway startup reduce repeated directory checks while capturing plugin files. [#167516](https://github.com/openclaw/openclaw/pull/167516) Thanks [@steipete](https://github.com/steipete), [@palewire](https://github.com/palewire).
- Triage can open an interactive repair conversation in an installed, signed-in Google Antigravity CLI using --agent agy. [#167530](https://github.com/openclaw/openclaw/pull/167530) [Docs](https://docs.openclaw.ai/cli/triage) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@guarismo](https://github.com/guarismo).
- Doctor reuses verified, unchanged plugin source files across repair phases, reducing repeated copying during maintenance. [#167535](https://github.com/openclaw/openclaw/pull/167535) [Docs](https://docs.openclaw.ai/plugins/architecture) · Thanks [@steipete](https://github.com/steipete), [@palewire](https://github.com/palewire).
- An old import record for another database no longer blocks Doctor from recovering available conversation files or allowing the normal update restart path. [#167538](https://github.com/openclaw/openclaw/pull/167538) [Docs](https://docs.openclaw.ai/cli/doctor/sqlite-maintenance) · Thanks [@steipete](https://github.com/steipete), [@bipolar84](https://github.com/bipolar84).
- Removing agents or Claws shifts database work off the Gateway main thread while preserving shared history. [#167547](https://github.com/openclaw/openclaw/pull/167547) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · [Docs](https://docs.openclaw.ai/reference/database-schemas/storage-changes) · Thanks [@steipete](https://github.com/steipete).
- Skill learning, sandbox operations, checkout cleanup and discussions repeat less database work while checking current permissions before acting. [#167571](https://github.com/openclaw/openclaw/pull/167571) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Gateway restarts avoid reusing an already-consumed request, and accepted update-failure reports can finish before shutdown. [#167572](https://github.com/openclaw/openclaw/pull/167572) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- An agent store awaiting preparation no longer prevents the Gateway from accepting connections. [#167627](https://github.com/openclaw/openclaw/pull/167627) Thanks [@steipete](https://github.com/steipete).
- Unrelated paused Git operations no longer block an eligible local default branch from advancing during managed-worktree creation. [#167631](https://github.com/openclaw/openclaw/pull/167631) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Renaming, archiving, and changing session models spend less time waiting behind stale restart recovery. [#167643](https://github.com/openclaw/openclaw/pull/167643) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete).
- Update repair can clear a pending recovery record when the intended candidate is already installed. [#167648](https://github.com/openclaw/openclaw/pull/167648) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@cbhawthorne84](https://github.com/cbhawthorne84).
- Failed updates avoid the unnecessary drain wait before restoring an installation when the Gateway is confirmed stopped. [#167649](https://github.com/openclaw/openclaw/pull/167649) Thanks [@steipete](https://github.com/steipete), [@hannnnn-l](https://github.com/hannnnn-l), [@alkor2000](https://github.com/alkor2000).
- Authentication-profile migration warnings name the cause and direct operators to Doctor repair. [#167650](https://github.com/openclaw/openclaw/pull/167650) [Docs](https://docs.openclaw.ai/gateway/secrets/operations) · Thanks [@steipete](https://github.com/steipete), [@samson1357924](https://github.com/samson1357924), [@vegisearchteam](https://github.com/vegisearchteam).
- Doctor archives removed accounts' old sender lists and continues later repairs without importing their permissions elsewhere. [#167651](https://github.com/openclaw/openclaw/pull/167651) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations) · Thanks [@steipete](https://github.com/steipete), [@oshunter](https://github.com/oshunter).
- Queued heartbeats no longer hold idle Gateway shutdown open, and deadline logs name pending owners. [#167666](https://github.com/openclaw/openclaw/pull/167666) [Docs](https://docs.openclaw.ai/cli/gateway/restart-and-supervision) · Thanks [@steipete](https://github.com/steipete).
- Healthy Bun processes avoid false shared-state ownership expiry when a renewal worker starts. [#167669](https://github.com/openclaw/openclaw/pull/167669) [Docs](https://docs.openclaw.ai/gateway/gateway-lock) · Thanks [@steipete](https://github.com/steipete).
- Session and model reads just after restart wait briefly for the selected agent's database instead of immediately failing. [#167674](https://github.com/openclaw/openclaw/pull/167674) [Docs](https://docs.openclaw.ai/gateway/health) · Thanks [@steipete](https://github.com/steipete).
- Simultaneous managed worktree creation avoids branch-registration conflicts and shares remote discovery and fetching. [#167691](https://github.com/openclaw/openclaw/pull/167691) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Managed worktree removal avoids repeating shared repository maintenance for each checkout. [#167695](https://github.com/openclaw/openclaw/pull/167695) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Doctor clears obsolete inspection warnings for plugins with no migration contract; a declared-empty contract with missing modules can still be misclassified. [#167699](https://github.com/openclaw/openclaw/pull/167699) Thanks [@steipete](https://github.com/steipete), [@ruicozibon](https://github.com/ruicozibon).
- Doctor verifies a restart only after the Gateway answers health checks, and gives diagnostic steps when a running service remains unresponsive. [#167713](https://github.com/openclaw/openclaw/pull/167713) [Docs](https://docs.openclaw.ai/cli/doctor/recovery) · Thanks [@steipete](https://github.com/steipete), [@CamilleValley](https://github.com/CamilleValley).
- Deferred update repairs are saved as pending and show the service-owner stop-and-rerun action needed to finish maintenance. [#167714](https://github.com/openclaw/openclaw/pull/167714) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@ruicozibon](https://github.com/ruicozibon).
- Android and Termux accept their existing state database after ordinary SQLite writes instead of mistaking it for a replaced file. [#167719](https://github.com/openclaw/openclaw/pull/167719) Thanks [@yxshee](https://github.com/yxshee), [@steipete](https://github.com/steipete), [@grabowskidaniel359-design](https://github.com/grabowskidaniel359-design).
- Gateway status and Doctor clear temporary startup-preparation warnings once agents recover, avoiding unnecessary repair advice. [#167723](https://github.com/openclaw/openclaw/pull/167723) Thanks [@steipete](https://github.com/steipete).
- Normal lease retries stop producing misleading SQLite lock-failure warnings during healthy Gateway starts. [#167754](https://github.com/openclaw/openclaw/pull/167754) Thanks [@steipete](https://github.com/steipete).
- Updates with --no-restart report blocked state checks as unverified readiness and explain the follow-up restart and verification steps. [#167760](https://github.com/openclaw/openclaw/pull/167760) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete), [@ruicozibon](https://github.com/ruicozibon).
- Triage detects pending package recovery even when Doctor and update history look healthy, and directs operators to update repair. [#167782](https://github.com/openclaw/openclaw/pull/167782) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery#update-repair) · Thanks [@steipete](https://github.com/steipete), [@waynegault](https://github.com/waynegault).
- Update refusal messages identify the changed coordination database and point to profile-aware repair. [#167794](https://github.com/openclaw/openclaw/pull/167794) Thanks [@steipete](https://github.com/steipete), [@waynegault](https://github.com/waynegault), [@masterdevill](https://github.com/masterdevill).
- Update reports explain which updater ran safety checks and clarify the permanent consequences of retiring recovery originals. [#167802](https://github.com/openclaw/openclaw/pull/167802) [Docs](https://docs.openclaw.ai/install/updating#retire-update-recovery-data) · Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- Post-install Doctor can run its commands when an older updater omits the run ID, avoiding misleading admission failures. [#167833](https://github.com/openclaw/openclaw/pull/167833) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@GoDiao](https://github.com/GoDiao).
- Agent-management requests report success after the saved agent changes are usable by the running gateway. [#167894](https://github.com/openclaw/openclaw/pull/167894) [Docs](https://docs.openclaw.ai/gateway/configuration/hot-reload) · Thanks [@steipete](https://github.com/steipete).
- Expired worktree recovery references are removed together, keeping them available for retry when cleanup fails. [#167899](https://github.com/openclaw/openclaw/pull/167899) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- New pnpm gateway launchers follow the active package after replacement instead of pointing at a deleted version. [#167905](https://github.com/openclaw/openclaw/pull/167905) [Docs](https://docs.openclaw.ai/platforms/windows) · Thanks [@steipete](https://github.com/steipete), [@SMF12138](https://github.com/SMF12138).
- Saving chats avoids repeated database validation work while rejecting malformed session records before writing. [#167932](https://github.com/openclaw/openclaw/pull/167932) [Docs](https://docs.openclaw.ai/reference/database-schemas/agent-schema-history#canonical-writer-validation) · [Docs](https://docs.openclaw.ai/reference/database-schemas/versioning#schema-bumps-and-older-updaters) · Thanks [@steipete](https://github.com/steipete).
- Structured logs use less temporary memory while applying the same secret-masking rules. [#167943](https://github.com/openclaw/openclaw/pull/167943) Thanks [@steipete](https://github.com/steipete).
- Parallel managed worktrees from partial clones avoid repeated scans and prepare missing files before advancing local main. [#167944](https://github.com/openclaw/openclaw/pull/167944) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · Thanks [@steipete](https://github.com/steipete).
- Eligible large agent databases can open sooner while full integrity checks continue in the background. [#168008](https://github.com/openclaw/openclaw/pull/168008) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Update repair can clear eligible abandoned updater records that kept later updates blocked after a manual installation change. [#168043](https://github.com/openclaw/openclaw/pull/168043) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@farisoftfry](https://github.com/farisoftfry).
- Declining Doctor maintenance still shows read-only findings in the same command without applying repairs. [#168065](https://github.com/openclaw/openclaw/pull/168065) [Docs](https://docs.openclaw.ai/cli/doctor/running) · [Docs](https://docs.openclaw.ai/gateway/doctor/gateway-and-services) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Doctor and update repair avoid repeated integrity scans when an existing repair record needs no change. [#168069](https://github.com/openclaw/openclaw/pull/168069) [Docs](https://docs.openclaw.ai/cli/doctor/recovery) · Thanks [@steipete](https://github.com/steipete), [@Tosko4](https://github.com/Tosko4), [@obviyus](https://github.com/obviyus).
- Updates preserve a local plugin's settings and enablement when an unsafe installation path temporarily blocks discovery. [#168111](https://github.com/openclaw/openclaw/pull/168111) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@obviyus](https://github.com/obviyus).
- Slow local database checks no longer cause false service-inspection timeouts during Linux Doctor and update repair. [#168161](https://github.com/openclaw/openclaw/pull/168161) [Docs](https://docs.openclaw.ai/cli/doctor/recovery) · Thanks [@obviyus](https://github.com/obviyus), [@Tosko4](https://github.com/Tosko4).
- Update repair can finish beside an active updater without disturbing that updater's ownership. [#168197](https://github.com/openclaw/openclaw/pull/168197) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@farisoftfry](https://github.com/farisoftfry).
- A busy state database no longer makes optional update progress logging abort the update. [#168210](https://github.com/openclaw/openclaw/pull/168210) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete), [@jlapenna](https://github.com/jlapenna).
- Gateway stops that exit the process avoid waiting for each native skills watcher to close individually, addressing a macOS cleanup stall. [#168273](https://github.com/openclaw/openclaw/pull/168273) Thanks [@obviyus](https://github.com/obviyus).
- Windows plugin preparation uses the existing bounded copy path for small ordinary files, addressing long Gateway startup stalls. [#168313](https://github.com/openclaw/openclaw/pull/168313) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Lets users unblock older updaters by safely archiving an already-completed update receipt with an independent helper. [#168388](https://github.com/openclaw/openclaw/pull/168388) [Docs](https://docs.openclaw.ai/install/updating#recover-a-completed-receipt-with-an-older-updater) · [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@k94118](https://github.com/k94118), [@kimjinsuhh](https://github.com/kimjinsuhh), [@GoldenrodScript](https://github.com/GoldenrodScript), [@neilofneils404](https://github.com/neilofneils404).
- Prevents temporary progress-output congestion from aborting update metadata inspection. [#168493](https://github.com/openclaw/openclaw/pull/168493) Thanks [@vincentkoc](https://github.com/vincentkoc), [@creanet-64](https://github.com/creanet-64).
- Lets commands and Gateway shutdown finish owned work and cleanup while restoring Node compiler defaults. [#168587](https://github.com/openclaw/openclaw/pull/168587) [Docs](https://docs.openclaw.ai/install/node-compatibility) · Thanks [@steipete](https://github.com/steipete).
- Offers a ready-to-copy device enrollment command for a background session host and correct hosting steps for paired devices. [#168623](https://github.com/openclaw/openclaw/pull/168623) [Docs](https://docs.openclaw.ai/cli/connect) · [Docs](https://docs.openclaw.ai/nodes/session-hosting) · Thanks [@obviyus](https://github.com/obviyus).
- Supplies compatibility modules needed for cleanup when updating from stable 2026.10.1. [#168740](https://github.com/openclaw/openclaw/pull/168740) Thanks [@RomneyDa](https://github.com/RomneyDa), [@steipete](https://github.com/steipete).
- Preserves pending cleanup before shutdown during upgrades from published stable 2026.10.1. [#168883](https://github.com/openclaw/openclaw/pull/168883) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Preserves configured heap controls in captured service and installation-child update environments. [#168889](https://github.com/openclaw/openclaw/pull/168889) Thanks [@steipete](https://github.com/steipete), [@bluet](https://github.com/bluet).
- Points failed updates after data migration to the existing repair command with clearer recovery instructions. [#168905](https://github.com/openclaw/openclaw/pull/168905) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery#update-repair) · Thanks [@steipete](https://github.com/steipete), [@ezimerman](https://github.com/ezimerman).
- Allows clean Gateway restarts when stored cloud workers are disconnected and defers their cleanup. [#168907](https://github.com/openclaw/openclaw/pull/168907) Thanks [@steipete](https://github.com/steipete).
- Avoids copying unrelated dependencies and failures caused by those files changing during updates. [#168927](https://github.com/openclaw/openclaw/pull/168927) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete).
- Detects known incompatible Codex plugins early and gives useful plugin-update recovery instructions. [#168930](https://github.com/openclaw/openclaw/pull/168930) [Docs](https://docs.openclaw.ai/install/updating) · [Docs](https://docs.openclaw.ai/cli/plugins/uninstall-and-update) · Thanks [@steipete](https://github.com/steipete), [@ezimerman](https://github.com/ezimerman), [@adlbas26](https://github.com/adlbas26).
- Reduces repeated file reads during package updates. [#168958](https://github.com/openclaw/openclaw/pull/168958) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete).
- Avoids false Windows update rollbacks when the same recovery folder has a short-name or case-variant path. [#168968](https://github.com/openclaw/openclaw/pull/168968) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Reports accepted background Gateway updates as pending rather than failed. [#168993](https://github.com/openclaw/openclaw/pull/168993) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run#restart-handoff) · Thanks [@steipete](https://github.com/steipete), [@sayitfast](https://github.com/sayitfast).
- Clears stale completed-plugin repair warnings and keeps package-verification deadlines steady across clock changes. [#169004](https://github.com/openclaw/openclaw/pull/169004) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@adenzhou1350](https://github.com/adenzhou1350), [@WG-Mojo](https://github.com/WG-Mojo).
- Settles certain blocked 2026.9.8 recovery records and reports failure honestly while older recovery remains pending. [#169027](https://github.com/openclaw/openclaw/pull/169027) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@chedong](https://github.com/chedong).
- Windows upgrades from 2026.10.1 can complete the plugin migration request expected by the older updater. [#169031](https://github.com/openclaw/openclaw/pull/169031) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Updates preserve existing webhook callback settings when an official plugin migration is deferred. [#169035](https://github.com/openclaw/openclaw/pull/169035) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations#channel-webhook-listeners) · Thanks [@steipete](https://github.com/steipete), [@sirius1024](https://github.com/sirius1024).
- Verified successful updates retain success when result publication fails, and repair reports stopped channels with recovery guidance. [#169037](https://github.com/openclaw/openclaw/pull/169037) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@kvnloo](https://github.com/kvnloo), [@RomneyDa](https://github.com/RomneyDa).
- Eligible stale update recovery records can settle automatically once the live installation is verified. [#169038](https://github.com/openclaw/openclaw/pull/169038) [Docs](https://docs.openclaw.ai/install/updating#package-publication-recovery) · Thanks [@steipete](https://github.com/steipete), [@mkdelta221](https://github.com/mkdelta221), [@waynegault](https://github.com/waynegault), [@clawdgawd](https://github.com/clawdgawd), [@yoyo837](https://github.com/yoyo837), [@lishewen](https://github.com/lishewen), [@nukk-pain](https://github.com/nukk-pain), [@jullianatolentino](https://github.com/jullianatolentino), [@joshpetras](https://github.com/joshpetras), [@creanet-64](https://github.com/creanet-64).
- Confirmed pacman-managed installations receive package-manager update guidance instead of self-update. [#169055](https://github.com/openclaw/openclaw/pull/169055) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete), [@sahilsatralkar](https://github.com/sahilsatralkar), [@Pegorim](https://github.com/Pegorim).
- Clock corrections no longer distort the recovery timeout after an interrupted update. [#169168](https://github.com/openclaw/openclaw/pull/169168) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@SunnyShu0925](https://github.com/SunnyShu0925).
- Incomplete update recovery captures identify affected databases and relevant backup warnings. [#169282](https://github.com/openclaw/openclaw/pull/169282) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery#original-state-captures) · Thanks [@DonnieFi](https://github.com/DonnieFi).
- Update-history approval reduces blocking Gateway writes; the later host-approval handoff fix also releases its writer while permission is pending. [#169283](https://github.com/openclaw/openclaw/pull/169283) Thanks [@DonnieFi](https://github.com/DonnieFi).
- Update warnings explain why an optional candidate configuration read failed while preserving the existing service definition. [#169284](https://github.com/openclaw/openclaw/pull/169284) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@DonnieFi](https://github.com/DonnieFi), [@RomneyDa](https://github.com/RomneyDa).
- Updates recognize alternate installation path spellings and keep workers on their original runtime, with abandoned-runtime cleanup restored. [#169292](https://github.com/openclaw/openclaw/pull/169292) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Doctor distinguishes unknown plugin migration backup coverage from bundled migrations already covered by core, with useful next steps. [#169295](https://github.com/openclaw/openclaw/pull/169295) [Docs](https://docs.openclaw.ai/cli/doctor/state-migrations#plugin-migration-recovery-coverage) · [Docs](https://docs.openclaw.ai/plugins/sdk-migration/compatibility-policy) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Windows SQLite recovery no longer rejects its own protected temporary snapshot directory. [#169397](https://github.com/openclaw/openclaw/pull/169397) Thanks [@steipete](https://github.com/steipete).
- A separately installed helper can clear a narrowly eligible unfinished publication after verified filesystem device drift while preserving package and evidence. [#169410](https://github.com/openclaw/openclaw/pull/169410) [Docs](https://docs.openclaw.ai/install/updating#recover-an-unfinished-publication-after-a-remount) · [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@patrickschiller](https://github.com/patrickschiller), [@RomneyDa](https://github.com/RomneyDa).
- New recovery copies preserve legacy Canvas documents and Memory Core files before migrations change them. [#169436](https://github.com/openclaw/openclaw/pull/169436) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Git updates clean owned temporary worktrees even when progress reporting fails and retain the original failure for diagnosis and recovery. [#169454](https://github.com/openclaw/openclaw/pull/169454) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@hannesrudolph](https://github.com/hannesrudolph).
- Equivalent Windows task account names no longer prevent the Gateway restarting after an update. [#169481](https://github.com/openclaw/openclaw/pull/169481) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete).
- Update and Doctor checks accept explicitly empty agent rosters and reject unsafe Canvas folder links before reading them. [#169516](https://github.com/openclaw/openclaw/pull/169516) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Npm-global updates avoid scanning unrelated global tools while retaining dependencies OpenClaw actually needs. [#169551](https://github.com/openclaw/openclaw/pull/169551) Thanks [@RomneyDa](https://github.com/RomneyDa), [@goutamadwant](https://github.com/goutamadwant), [@holgergruenhagen](https://github.com/holgergruenhagen).
- Doctor can continue an update after a later process-inspection failure once its owning updater was already verified. [#169563](https://github.com/openclaw/openclaw/pull/169563) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Updates can restart a revalidated preserved Gateway service after refresh safely refuses to rewrite its definition. [#169658](https://github.com/openclaw/openclaw/pull/169658) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · Thanks [@steipete](https://github.com/steipete).
- Update-time Doctor can verify its updater without inspecting higher supervisors and retains command identity when binding fails. [#169665](https://github.com/openclaw/openclaw/pull/169665) [Docs](https://docs.openclaw.ai/cli/update) · [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Doctor imports deferred ACP metadata from verified archived legacy sessions once its plugin becomes available. [#169759](https://github.com/openclaw/openclaw/pull/169759) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Doctor can attempt Gateway restoration after transient resource-close errors settle successfully on retry. [#169783](https://github.com/openclaw/openclaw/pull/169783) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Mac updates avoid self-lock timeouts when temporary directories have equivalent path spellings. [#169860](https://github.com/openclaw/openclaw/pull/169860) Thanks [@steipete](https://github.com/steipete).
- Older Node updaters retain valid ownership across the heartbeat clock transition instead of unnecessarily rolling back. [#169915](https://github.com/openclaw/openclaw/pull/169915) Thanks [@vincentkoc](https://github.com/vincentkoc).
- New or repaired pnpm Gateway service commands survive package replacement, and nested pnpm installs are recognized for updates. [#170003](https://github.com/openclaw/openclaw/pull/170003) [Docs](https://docs.openclaw.ai/install/updating/update-methods) · Thanks [@steipete](https://github.com/steipete), [@xilopaint](https://github.com/xilopaint), [@k-sekula](https://github.com/k-sekula).
- Background database checkpoints pause during retained offline maintenance to keep Doctor and update recovery captures stable. [#170022](https://github.com/openclaw/openclaw/pull/170022) [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Configured agents can start despite bogus legacy sentinel registrations, and standalone Doctor can clean invalid registrations. [#170043](https://github.com/openclaw/openclaw/pull/170043) [Docs](https://docs.openclaw.ai/gateway/doctor/state-and-sessions) · Thanks [@steipete](https://github.com/steipete), [@ourcoms2018](https://github.com/ourcoms2018).
- Update repair can reconcile an interrupted installation after filesystem device numbers change and unblock later updates. [#170046](https://github.com/openclaw/openclaw/pull/170046) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@patrickschiller](https://github.com/patrickschiller), [@SergeiAug](https://github.com/SergeiAug).
- Doctor rejects unsupported legacy runtime files before changing the database or stopping the Gateway, preserving the intermediate-upgrade path. [#170051](https://github.com/openclaw/openclaw/pull/170051) [Docs](https://docs.openclaw.ai/gateway/doctor/config-migrations) · Thanks [@steipete](https://github.com/steipete), [@bautrey](https://github.com/bautrey).
- Updates requested through chat can finish Doctor cleanup without a false maintenance-permission failure. [#170070](https://github.com/openclaw/openclaw/pull/170070) Thanks [@hannesrudolph](https://github.com/hannesrudolph), [@ezimerman](https://github.com/ezimerman), [@steipete](https://github.com/steipete), [@yoyo837](https://github.com/yoyo837), [@aia007731-lab](https://github.com/aia007731-lab), [@justinforsound](https://github.com/justinforsound).
- Updates avoid reopening migrated data during configuration saves and can report a recorded schema migration as advisory; same-version wrong-build concerns remain unresolved. [#170130](https://github.com/openclaw/openclaw/pull/170130) Thanks [@steipete](https://github.com/steipete), [@angeliti999](https://github.com/angeliti999).
- Native pnpm 12 updates keep the openclaw command pointing at the installed package after temporary files are removed. [#170131](https://github.com/openclaw/openclaw/pull/170131) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@goutamadwant](https://github.com/goutamadwant), [@k-sekula](https://github.com/k-sekula).
- Doctor can find abandoned npm updater runtimes that leave later updates blocked by an extra recovery-database link. [#170170](https://github.com/openclaw/openclaw/pull/170170) Thanks [@steipete](https://github.com/steipete), [@sunnyshu0925](https://github.com/sunnyshu0925), [@warhangel](https://github.com/warhangel).
- Managed updates use per-user temporary storage and can recover eligible receipts that point into another user's directory. [#170174](https://github.com/openclaw/openclaw/pull/170174) [Docs](https://docs.openclaw.ai/cli/update/repair-and-recovery) · Thanks [@steipete](https://github.com/steipete), [@holgergruenhagen](https://github.com/holgergruenhagen).
- Older updaters stop rejecting a validated candidate solely because Doctor changed version or wizard bookkeeping. [#170195](https://github.com/openclaw/openclaw/pull/170195) Thanks [@steipete](https://github.com/steipete), [@maestrokling](https://github.com/maestrokling), [@frxiaobei](https://github.com/frxiaobei).
- Failed-update reports keep Doctor recovery instructions when a healthy Gateway does not prove Doctor writers have safely finished. [#170207](https://github.com/openclaw/openclaw/pull/170207) Thanks [@steipete](https://github.com/steipete).
- Update repair loads the target installation's settings before choosing a model instead of stopping with a configuration-not-prepared error. [#170276](https://github.com/openclaw/openclaw/pull/170276) Thanks [@steipete](https://github.com/steipete).
- Gateways with deferred database preparation can finish startup instead of leaving worker recovery and client readiness waiting on each other. [#170348](https://github.com/openclaw/openclaw/pull/170348) [Docs](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery) · Thanks [@steipete](https://github.com/steipete).
- Update snapshot capture stops falsely treating an unchanged agent database as changed by its own read. [#170351](https://github.com/openclaw/openclaw/pull/170351) [Docs](https://docs.openclaw.ai/install/updating/rollback-and-recovery) · Thanks [@DonnieFi](https://github.com/DonnieFi), [@RomneyDa](https://github.com/RomneyDa).
- Large configurations can reach the updater intact instead of causing candidate-read failures during Gateway service refresh. [#170373](https://github.com/openclaw/openclaw/pull/170373) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi), [@steipete](https://github.com/steipete).
- Slow update snapshots stop consuming the next command's inspection time, and genuinely deferred checks get follow-up guidance. [#170374](https://github.com/openclaw/openclaw/pull/170374) Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi), [@steipete](https://github.com/steipete).
- Final update summaries and saved history stop calling completed plugin upgrades unfinished and retain actionable warnings for pending ones. [#170413](https://github.com/openclaw/openclaw/pull/170413) [Docs](https://docs.openclaw.ai/cli/update/status-and-history) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi).
- Stalled transcript indexing gets a five-second grace then cancellation so it does not indefinitely block Gateway shutdown. [#170493](https://github.com/openclaw/openclaw/pull/170493) [Docs](https://docs.openclaw.ai/gateway/restart-recovery) · Thanks [@steipete](https://github.com/steipete), [@Oldrich333](https://github.com/Oldrich333), [@O96a](https://github.com/O96a).
- Update and Doctor recovery can continue when optional dreaming schedule checks or settled temporary-snapshot cleanup fail. [#170754](https://github.com/openclaw/openclaw/pull/170754) Thanks [@RomneyDa](https://github.com/RomneyDa), [@aniruddhaadak80](https://github.com/aniruddhaadak80), [@anhnt3](https://github.com/anhnt3).
- Standalone Doctor can repair matching account state when an app-owned Gateway is verified offline. [#170768](https://github.com/openclaw/openclaw/pull/170768) [Docs](https://docs.openclaw.ai/gateway/doctor/gateway-and-services) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@shanselman](https://github.com/shanselman).
- Expected exclusive Doctor maintenance no longer appears as a database checkpoint failure in logs or health. [#170783](https://github.com/openclaw/openclaw/pull/170783) Thanks [@steipete](https://github.com/steipete).
- Update state inspection continues when an advisory progress message temporarily cannot be written. [#170955](https://github.com/openclaw/openclaw/pull/170955) Thanks [@steipete](https://github.com/steipete).
- Early checks for 2026.9.2 upgrades keep database changes private so a refused update can preserve compatibility with restored code. [#171015](https://github.com/openclaw/openclaw/pull/171015) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@bamorem](https://github.com/bamorem).
- Doctor recognizes equivalent imported attachments instead of falsely rejecting healthy legacy session history. [#171388](https://github.com/openclaw/openclaw/pull/171388) [Docs](https://docs.openclaw.ai/cli/doctor/sqlite-maintenance#changed-archived-registry) · Thanks [@he-yufeng](https://github.com/he-yufeng), [@steipete](https://github.com/steipete), [@brookpw](https://github.com/brookpw), [@junnie-stack](https://github.com/junnie-stack).
- Terminal update progress waits through temporary Doctor maintenance contention and resumes when it clears. [#171454](https://github.com/openclaw/openclaw/pull/171454) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi).
- Update failures during snapshot preparation identify the failed snapshot step and give matching retry guidance. [#171457](https://github.com/openclaw/openclaw/pull/171457) Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi).
- Linux update and Doctor cleanup can reclaim abandoned updater folders despite inaccessible working directories of narrowly identified user-session processes. [#171488](https://github.com/openclaw/openclaw/pull/171488) [Docs](https://docs.openclaw.ai/cli/doctor/checks) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi).
- Gateway worker setup avoids a silent successful exit when Node diagnostic flag checks meet an explicit heap limit. [#171490](https://github.com/openclaw/openclaw/pull/171490) Thanks [@RomneyDa](https://github.com/RomneyDa).
- A busy updater releases its database write lock while waiting for permission to save status, giving scheduled jobs and cleanup a chance to proceed. [#171493](https://github.com/openclaw/openclaw/pull/171493) [Docs](https://docs.openclaw.ai/reference/database-schemas) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@DonnieFi](https://github.com/DonnieFi).
- Doctor and updates allow terminated child processes longer to disappear before reporting a cleanup failure. [#171497](https://github.com/openclaw/openclaw/pull/171497) Thanks [@RomneyDa](https://github.com/RomneyDa), [@steipete](https://github.com/steipete).
- Updates that change core and plugins still remind users who choose --no-restart to run the appropriate Gateway restart command. [#171687](https://github.com/openclaw/openclaw/pull/171687) Thanks [@steipete](https://github.com/steipete).
- Managed updates wait through brief maintenance overlap and preserve recovery permission so an otherwise completed update is less likely to leave the Gateway stopped. [#171699](https://github.com/openclaw/openclaw/pull/171699) Thanks [@steipete](https://github.com/steipete), [@fdovarela](https://github.com/fdovarela).
- State reads can resume after a database-resource cleanup failure, avoiding a Gateway restart solely to restore state-dependent work. [#171709](https://github.com/openclaw/openclaw/pull/171709) Thanks [@RomneyDa](https://github.com/RomneyDa), [@residentb2b](https://github.com/residentb2b), [@homeworld520](https://github.com/homeworld520), [@sunny251008-debug](https://github.com/sunny251008-debug).
- Doctor avoids silent empty reports when a child closes its input, while completing admitted repairs before exiting if Doctor's own output closes. [#171780](https://github.com/openclaw/openclaw/pull/171780) Thanks [@steipete](https://github.com/steipete), [@dtump](https://github.com/dtump), [@joshpetras](https://github.com/joshpetras), [@cbhawthorne84](https://github.com/cbhawthorne84).
- Updates of standard pnpm installations find the installation's own package manager and bin folder despite the Mac Gateway service's restricted PATH. [#171936](https://github.com/openclaw/openclaw/pull/171936) Thanks [@steipete](https://github.com/steipete), [@AntaresGG](https://github.com/AntaresGG), [@MoerAI](https://github.com/MoerAI).
- The setup assistant diagnoses problems without applying repairs or migrations to local configuration and state. [#171960](https://github.com/openclaw/openclaw/pull/171960) Thanks [@vincentkoc](https://github.com/vincentkoc).
- Later updates can settle an unfinished completion record when the already-installed package verifies successfully. [#171993](https://github.com/openclaw/openclaw/pull/171993) Thanks [@steipete](https://github.com/steipete), [@teetee2tone](https://github.com/teetee2tone).
- Updates avoid failing after a short Doctor command has already completed successfully. [#172132](https://github.com/openclaw/openclaw/pull/172132) Thanks [@steipete](https://github.com/steipete).
- If the new version's Doctor fails before database writes, updates can restore the previous package and databases without mistaking preliminary reads for changes. [#172151](https://github.com/openclaw/openclaw/pull/172151) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Updates can inspect busy agent databases without refusing solely because normal writes reuse old log space. [#172196](https://github.com/openclaw/openclaw/pull/172196) Thanks [@RomneyDa](https://github.com/RomneyDa).
- A verified update stays installed when Doctor cannot inspect its launching process, with a warning to run openclaw update repair. [#172247](https://github.com/openclaw/openclaw/pull/172247) Thanks [@steipete](https://github.com/steipete), [@homeworld520](https://github.com/homeworld520).
- Read-only-root Kubernetes deployments need XDG_CACHE_HOME=/home/node/.openclaw/.cache or an equivalent writable cache alongside the image update. [#172377](https://github.com/openclaw/openclaw/pull/172377) [Docs](https://docs.openclaw.ai/install/kubernetes#architecture-notes) · Thanks [@saftall](https://github.com/saftall), [@steipete](https://github.com/steipete).
- Non-interactive setup preserves its actual result and credential-activation instructions when temporary credential files remain locked. [#172379](https://github.com/openclaw/openclaw/pull/172379) Thanks [@skyzhao1223](https://github.com/skyzhao1223), [@steipete](https://github.com/steipete), [@giannis88](https://github.com/giannis88).
- A verified, ready Gateway update can finish with named channel warnings instead of reporting failure because a messaging channel needs attention. [#172494](https://github.com/openclaw/openclaw/pull/172494) Thanks [@steipete](https://github.com/steipete), [@sbc2016](https://github.com/sbc2016).
- A timed-out optional shell-completion refresh can warn without failing an otherwise successful update after cleanup is confirmed. [#172502](https://github.com/openclaw/openclaw/pull/172502) Thanks [@steipete](https://github.com/steipete).
- Mac updates can proceed from an external login shell when native checks prove it is outside the Gateway service despite unreadable parent ancestry. [#172640](https://github.com/openclaw/openclaw/pull/172640) Thanks [@steipete](https://github.com/steipete), [@giulianoaccorsi](https://github.com/giulianoaccorsi).
- Linux upgrades can regenerate eligible owned legacy service files with private permissions without requiring manual chmod repair. [#172790](https://github.com/openclaw/openclaw/pull/172790) Thanks [@obviyus](https://github.com/obviyus), [@wei887-os](https://github.com/wei887-os).
- Doctor avoids repeatedly rescanning migration manifests when stale import records refer to archived transcripts, reducing this cause of stalled repair and update checks. [#172890](https://github.com/openclaw/openclaw/pull/172890) Thanks [@steipete](https://github.com/steipete), [@DongwonGim](https://github.com/DongwonGim), [@skyzhao1223](https://github.com/skyzhao1223).
- Updates and Gateway status launched through a remote node avoid mistaking the node service for the Gateway. [#173304](https://github.com/openclaw/openclaw/pull/173304) Thanks [@steipete](https://github.com/steipete), [@Leon-SK668](https://github.com/Leon-SK668), [@davidcittadini](https://github.com/davidcittadini).
- Verified updates can continue with a repair warning when follow-up plugin inspection cannot finish, instead of rolling back solely for incomplete checks. [#173341](https://github.com/openclaw/openclaw/pull/173341) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@steipete](https://github.com/steipete), [@yoyo837](https://github.com/yoyo837).
- Updates can move past an unhealthy Gateway in the same installation with a warning, leaving time to start and fully verify its replacement. [#173358](https://github.com/openclaw/openclaw/pull/173358) [Docs](https://docs.openclaw.ai/cli/update/how-updates-run) · [Docs](https://docs.openclaw.ai/install/updating/update-methods#source-checkout-servers-reference-script) · Thanks [@steipete](https://github.com/steipete).
- Gateway startup can follow a replacement model preparation instead of failing when an older preparation is cancelled. [#173366](https://github.com/openclaw/openclaw/pull/173366) Thanks [@steipete](https://github.com/steipete), [@Jackten](https://github.com/Jackten).
- --no-restart skips the global package updater's restart step, while a running Gateway's package watcher can still restart it after files change. [#173409](https://github.com/openclaw/openclaw/pull/173409) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@steipete](https://github.com/steipete), [@mwbroxson](https://github.com/mwbroxson).
- Updates wait briefly for a newly started Gateway to publish ownership before reporting restart preparation failure. [#173588](https://github.com/openclaw/openclaw/pull/173588) [Docs](https://docs.openclaw.ai/install/updating) · Thanks [@obviyus](https://github.com/obviyus).
- Package updates verify the running build as well as its version; --no-restart still permits a package-watcher restart. [#174649](https://github.com/openclaw/openclaw/pull/174649) [Docs](https://docs.openclaw.ai/cli/update) · Thanks [@RomneyDa](https://github.com/RomneyDa).
- Keep scheduled workspace cleanup and worker-bundle maintenance running on paired nodes. [#168780](https://github.com/openclaw/openclaw/pull/168780) [Docs](https://docs.openclaw.ai/nodes/session-hosting) · Thanks [@steipete](https://github.com/steipete).

</details>

## Security and privacy

Approval and delivery fixes keep delayed requests tied to the person and conversation that started them. More diagnostic output masks credentials, and graphical pairing keeps them out of launcher arguments.

<details class="release-source-toggle">
<summary>Credentials, approvals, private output, and access checks</summary>

- Supporting session integration rechecks access during compaction, membership reads, and downloads and explains unreadable device identity storage. [2770dae](https://github.com/openclaw/openclaw/commit/2770dae0e6cf70bfcf617507ea20eba0ce8ef18e)
- Suggestions recheck current sharing access and session identity before returning results. [6a42f13](https://github.com/openclaw/openclaw/commit/6a42f13c7ab9c3465ce578f80245b4b3493b1273)
- The first profile read after GitHub sign-in can complete while initial identity verification finishes. [90ad159](https://github.com/openclaw/openclaw/commit/90ad159efd8aec76b995c1c74300f126ddefb950)
- Gateway logs identify later rejected proxy sources while keeping repeated warnings bounded. [#134404](https://github.com/openclaw/openclaw/pull/134404) Thanks [@lzhan011](https://github.com/lzhan011), [@abacha](https://github.com/abacha), [@obviyus](https://github.com/obviyus).
- PluralKit lookup failure diagnostics mask reflected credentials while retaining useful error details. [#141317](https://github.com/openclaw/openclaw/pull/141317) Thanks [@hugenshen](https://github.com/hugenshen), [@obviyus](https://github.com/obviyus).
- Plugin hooks must obtain fresh approval before changing trusted inline-approved tool arguments. [#142700](https://github.com/openclaw/openclaw/pull/142700) [Docs](https://docs.openclaw.ai/plugins/hooks/tool-policy) · Thanks [@giodl73-repo](https://github.com/giodl73-repo), [@giodl73](https://github.com/giodl73).
- Switching approval-policy targets asks before discarding unsaved edits, and Cancel keeps the draft. [#149181](https://github.com/openclaw/openclaw/pull/149181) [Docs](https://docs.openclaw.ai/tools/exec-approvals) · Thanks [@tommyjoseph](https://github.com/tommyjoseph), [@steipete](https://github.com/steipete), [@obviyus](https://github.com/obviyus).
- Truncated or errored replies keep recognized unfinished reasoning hidden and explain empty output-token-limit results. [#156939](https://github.com/openclaw/openclaw/pull/156939) [Docs](https://docs.openclaw.ai/tools/thinking) · Thanks [@quinszouls](https://github.com/quinszouls), [@steipete](https://github.com/steipete), [@ingenuity2k](https://github.com/ingenuity2k).
- Configured plugin tool guards run in standalone agent exec and can block commands before execution. [#159333](https://github.com/openclaw/openclaw/pull/159333) [Docs](https://docs.openclaw.ai/plugins/hooks/tool-policy) · Thanks [@joseairosa](https://github.com/joseairosa), [@obviyus](https://github.com/obviyus).
- Built-in credential masking covers secrets across long tool output while avoiding several redaction stalls and crashes. [#161480](https://github.com/openclaw/openclaw/pull/161480) Thanks [@eleqtrizit](https://github.com/eleqtrizit).
- Remote-node commands no longer fail an approval identity check when the prepared plan omitted session metadata. [#161980](https://github.com/openclaw/openclaw/pull/161980) Thanks [@Program-123](https://github.com/Program-123), [@steipete](https://github.com/steipete), [@gaojian125](https://github.com/gaojian125), [@enderwillsaveyou](https://github.com/enderwillsaveyou), [@rozenpl](https://github.com/rozenpl), [@daddydubzzz](https://github.com/daddydubzzz).
- Exec-approval guidance now explains that approved command values replace later command-field edits while changed environment overrides remain rejected. [#164216](https://github.com/openclaw/openclaw/pull/164216) [Docs](https://docs.openclaw.ai/tools/exec-approvals) · Thanks [@ericcurtin](https://github.com/ericcurtin), [@cristianoc](https://github.com/cristianoc), [@obviyus](https://github.com/obviyus).
- Agents can ask explicitly approved peers for help and receive the reply without gaining access to their conversation histories. [#164444](https://github.com/openclaw/openclaw/pull/164444) [Docs](https://docs.openclaw.ai/gateway/config-tools/sessions-and-subagents#per-agent-send-only-access) · Thanks [@steipete](https://github.com/steipete), [@prasad-yashdeep](https://github.com/prasad-yashdeep), [@cipp-ashe](https://github.com/cipp-ashe).
- Anchored conversation history rejects transcripts whose recorded owner does not match the requested conversation. [#164512](https://github.com/openclaw/openclaw/pull/164512) Thanks [@steipete](https://github.com/steipete).
- Delayed chat startup stays bound to the current caller and conversation while initial session lookups run through workers. [#164682](https://github.com/openclaw/openclaw/pull/164682) Thanks [@steipete](https://github.com/steipete), [@galiniliev](https://github.com/galiniliev).
- Oversized policy-watch intervals no longer trigger near-continuous evaluations and overflow warnings. [#164850](https://github.com/openclaw/openclaw/pull/164850) [Docs](https://docs.openclaw.ai/cli/policy/attestation) · Thanks [@KrasimirKralev](https://github.com/KrasimirKralev), [@obviyus](https://github.com/obviyus).
- Scheduled commands retain valid approval through process startup and account for each approved use once, refusing uncertain or stale launches. [#164864](https://github.com/openclaw/openclaw/pull/164864) [Docs](https://docs.openclaw.ai/tools/exec-approvals) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- Covered scheduled messages and retries recheck permission at delivery handoff; revoked work cannot accept protected read results or commit an internal reply. [#164906](https://github.com/openclaw/openclaw/pull/164906) [Docs](https://docs.openclaw.ai/plugins/sdk-channel-plugins) · [Docs](https://docs.openclaw.ai/reference/database-schemas/worker-access) · Thanks [@steipete](https://github.com/steipete).
- A2A peers with missing environment-backed credentials can no longer authenticate or send reference text as a token. [#165021](https://github.com/openclaw/openclaw/pull/165021) Thanks [@eleqtrizit](https://github.com/eleqtrizit).
- Code Mode cells cannot replace real host tool replies with forged failure results. [#165071](https://github.com/openclaw/openclaw/pull/165071) [Docs](https://docs.openclaw.ai/plugins/sdk-entrypoints) · [Docs](https://docs.openclaw.ai/tools/code-mode/executors) · Thanks [@steipete](https://github.com/steipete).
- Incognito reset safely removes its managed checkout and branch, preserving unsaved-work snapshots or reporting why a checkout was kept. [#165185](https://github.com/openclaw/openclaw/pull/165185) [Docs](https://docs.openclaw.ai/concepts/managed-worktrees) · [Docs](https://docs.openclaw.ai/concepts/session) · Thanks [@jayzhou2309](https://github.com/jayzhou2309), [@steipete](https://github.com/steipete), [@obviyus](https://github.com/obviyus).
- Localized configuration guidance clarifies outbound agent messaging permissions without implying access to other sessions. [#165213](https://github.com/openclaw/openclaw/pull/165213)
- Restricted senders can delegate only to hidden helpers in the same agent and workspace. [#165418](https://github.com/openclaw/openclaw/pull/165418) Thanks [@steipete](https://github.com/steipete).
- Answering or cancelling an agent question checks the current session before applying the response, refusing stale or replaced callers. [#165552](https://github.com/openclaw/openclaw/pull/165552) Thanks [@steipete](https://github.com/steipete).
- Queued chat messages retain current sharing checks while repeated permission reads move off the Gateway thread. [#165600](https://github.com/openclaw/openclaw/pull/165600) Thanks [@steipete](https://github.com/steipete).
- Replies with MCP app or connection buttons retain their original session-writer delivery checks. [#165760](https://github.com/openclaw/openclaw/pull/165760) Thanks [@steipete](https://github.com/steipete).
- Tlon group-DM author claims can no longer grant owner commands or elevated permissions. Previously pending DM requests need the sender to resend after approval. [#165801](https://github.com/openclaw/openclaw/pull/165801) [Docs](https://docs.openclaw.ai/channels/tlon) · Thanks [@eleqtrizit](https://github.com/eleqtrizit).
- HTTPS through the secret egress proxy works with strict TLS clients, including modern Python on macOS; restart the Gateway and start new commands after updating. [#165818](https://github.com/openclaw/openclaw/pull/165818) [Docs](https://docs.openclaw.ai/gateway/secrets/secret-store-and-egress) · Thanks [@steipete](https://github.com/steipete), [@vortexopenclaw](https://github.com/vortexopenclaw), [@RyanSandoval](https://github.com/RyanSandoval), [@A1fred-AI](https://github.com/A1fred-AI), [@gisk0](https://github.com/gisk0), [@jfk-hue](https://github.com/jfk-hue).
- The source-map-js dependency is updated to its patched release to address pathological source-map processing. [#165902](https://github.com/openclaw/openclaw/pull/165902) Thanks [@steipete](https://github.com/steipete).
- Patched MCP dependencies preserve saved credentials when background refresh encounters a different login issuer and require explicit login to switch. [#166217](https://github.com/openclaw/openclaw/pull/166217) Thanks [@Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@vincentkoc](https://github.com/vincentkoc), [@RomneyDa](https://github.com/RomneyDa).
- Previously verified Tailscale GitHub users retain profile and session access through retryable GitHub outages. [#166254](https://github.com/openclaw/openclaw/pull/166254) [Docs](https://docs.openclaw.ai/concepts/user-model) · Thanks [@obviyus](https://github.com/obviyus).
- Approve and deny actions acknowledge saved decisions before slow notification delivery finishes. [#166396](https://github.com/openclaw/openclaw/pull/166396) [Docs](https://docs.openclaw.ai/gateway/protocol/rpc-devices-nodes-and-approvals) · Thanks [@steipete](https://github.com/steipete).
- Manual history trimming refuses requests whose access or selected session changed while older records were being restored. [#166506](https://github.com/openclaw/openclaw/pull/166506) Thanks [@steipete](https://github.com/steipete).
- Stops canceled or no-longer-authorized worker requests before further device preparation. [#166608](https://github.com/openclaw/openclaw/pull/166608) Thanks [@romneyda](https://github.com/romneyda).
- Lets operators require a named worker profile and reject local fallback before inference. [#166611](https://github.com/openclaw/openclaw/pull/166611) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Applies required-worker policy to explicit destinations, moves and recovery while preserving accepted workspace results and Stop. [#166613](https://github.com/openclaw/openclaw/pull/166613) Thanks [@RomneyDa](https://github.com/RomneyDa).
- Recovers watched child runs under their recorded agent after restart and rejects coordinate actions with stale screenshots even when target references are blank. [#166691](https://github.com/openclaw/openclaw/pull/166691) Thanks [@steipete](https://github.com/steipete).
- Node commands approved before the deadline can still run when forwarding crosses that deadline within the valid handoff window. [#166971](https://github.com/openclaw/openclaw/pull/166971) [Docs](https://docs.openclaw.ai/tools/exec-approvals) · Thanks [@steipete](https://github.com/steipete).
- Native Codex follow-ups are checked against the sender's permitted conversation tree, and restricted instructions match available tools. [#167075](https://github.com/openclaw/openclaw/pull/167075) [Docs](https://docs.openclaw.ai/plugins/codex-harness-reference/restricted-turns) · Thanks [@vincentkoc](https://github.com/vincentkoc).
- Execution-policy edits and cleanup move database writes off the Gateway main thread while current permissions remain enforced. [#167115](https://github.com/openclaw/openclaw/pull/167115) Thanks [@steipete](https://github.com/steipete).
- Malformed text encoding in configuration files or piped patches is rejected before saved values can change. [#167118](https://github.com/openclaw/openclaw/pull/167118) Thanks [@Alix-007](https://github.com/Alix-007), [@obviyus](https://github.com/obviyus).
- LINE and Tlon mask recognizable credentials echoed in failed-request diagnostics. [#167234](https://github.com/openclaw/openclaw/pull/167234) Thanks [@xialonglee](https://github.com/xialonglee), [@obviyus](https://github.com/obviyus).
- Failed exec-policy commands requested with JSON return one structured error document and a nonzero exit. [#167279](https://github.com/openclaw/openclaw/pull/167279) Thanks [@leon-sk668](https://github.com/leon-sk668), [@obviyus](https://github.com/obviyus), [@masatohoshino](https://github.com/masatohoshino).
- Device commands return structured JSON refusal reasons while preserving nonzero exits and human recovery guidance. [#167294](https://github.com/openclaw/openclaw/pull/167294) [Docs](https://docs.openclaw.ai/cli#json-failures) · [Docs](https://docs.openclaw.ai/cli/devices) · Thanks [@Leon-SK668](https://github.com/Leon-SK668), [@obviyus](https://github.com/obviyus), [@masatohoshino](https://github.com/masatohoshino).
- Authorized agent commands avoid spurious launch failures when existing shared-database features initialize again. [#167486](https://github.com/openclaw/openclaw/pull/167486) Thanks [@steipete](https://github.com/steipete).
- Secrets guidance identifies unsupported command consumers before asking users to enter a protected credential. [#167976](https://github.com/openclaw/openclaw/pull/167976) [Docs](https://docs.openclaw.ai/tools/secrets) · [Docs](https://docs.openclaw.ai/cli/secrets) · Thanks [@romneyda](https://github.com/romneyda), [@markma84](https://github.com/markma84).
- Reply permission checks refuse to authorize a prepared response while its database execution remains unfinished. [#168029](https://github.com/openclaw/openclaw/pull/168029) Thanks [@steipete](https://github.com/steipete).
- Unfinished hidden reasoning stays out of Chat Completions replies when a native tool call is followed by a token limit or content filter. [#168294](https://github.com/openclaw/openclaw/pull/168294) Thanks [@steipete](https://github.com/steipete).
- Network tool results keep their untrusted-source label through Tool Search and Code Mode and into later replies. [#169560](https://github.com/openclaw/openclaw/pull/169560) [Docs](https://docs.openclaw.ai/concepts/memory-architecture#trust-boundaries-and-limits) · Thanks [@RomneyDa](https://github.com/RomneyDa), [@farisoftfry](https://github.com/farisoftfry).
- Gateway exec blocks recognized variable-bearing SQLite file URLs from opening live OpenClaw state. [#170253](https://github.com/openclaw/openclaw/pull/170253) [Docs](https://docs.openclaw.ai/reference/database-schemas) · Thanks [@eleqtrizit](https://github.com/eleqtrizit).
- Doctor preserves saved OAuth profiles when an older auth file is corrupt or unreadable and warns where to inspect it. [#170256](https://github.com/openclaw/openclaw/pull/170256) [Docs](https://docs.openclaw.ai/gateway/doctor/state-and-sessions) · Thanks [@steipete](https://github.com/steipete), [@nosmile99](https://github.com/nosmile99).
- Graphical pairing keeps browser credentials out of launcher arguments by using private files; access to those files remains sensitive and cleanup is best effort. [#170289](https://github.com/openclaw/openclaw/pull/170289) Thanks [@eleqtrizit](https://github.com/eleqtrizit).

</details>
