## 2026.10.6 ### v2026.10.6 For formatted release notes, [read this release on the docs site](https://docs.openclaw.ai/releases/2026.10.6). **Security release:** v2026.10.6 adds remediations for the eMudhra certificate compromise. If you manage Node yourself, upgrade to Node 24.22.1 or newer (Node 24) or 26.12.1 or newer (Node 26) before starting OpenClaw. This is a patch release with no new features. It contains urgent fixes for problems that could stop OpenClaw from installing, updating, or starting, plus smaller reliability fixes. **Release scale:** 233 pull requests, 30 direct commits, and 149 contributors. #### Installation and Onboarding - Fixes false “offline maintenance” and database errors that could stop a fresh Windows setup, Doctor, or the Gateway from starting. [#176174](https://github.com/openclaw/openclaw/pull/176174) [#176194](https://github.com/openclaw/openclaw/pull/176194). Thanks to [@tjarrau-dev](https://github.com/tjarrau-dev), [@easyteacher](https://github.com/easyteacher), [@skyzhao1223](https://github.com/skyzhao1223). - Fixes Linux service commands that dropped empty arguments during setup. [`e75f1fc9`](https://github.com/openclaw/openclaw/commit/e75f1fc9d46461bb07b0392182d8e15dab7a77e5). Thanks to [@gideonpraise](https://github.com/gideonpraise), [@romneyda](https://github.com/romneyda), [@shakkernerd](https://github.com/shakkernerd). - Fixes Windows installs with Bun failing when an optional cleanup step didn’t work. Installation now finishes. [#169286](https://github.com/openclaw/openclaw/pull/169286). - Skill setup now only checks for the installers your selected dependencies actually need. [#170967](https://github.com/openclaw/openclaw/pull/170967). - Fixes Codex setup imports giving up too early, or waiting too long, when your computer’s clock changes. This fixes the discovery and import wait. [#168735](https://github.com/openclaw/openclaw/pull/168735). Thanks to [@sunnyshu0925](https://github.com/sunnyshu0925). - Hermes and Claude imports no longer touch instruction files that aren’t valid UTF-8. To import one, back up the original, convert a copy to UTF-8, and run the import again. See [Hermes migration](https://docs.openclaw.ai/install/migrating-hermes). This covers Hermes instruction imports and Claude imports of existing instructions. [#172742](https://github.com/openclaw/openclaw/pull/172742) [#172953](https://github.com/openclaw/openclaw/pull/172953). Thanks to [@leon-sk668](https://github.com/leon-sk668), [@obviyus](https://github.com/obviyus). - Hermes migration previews now tell you which files they couldn’t read. Fix the access problem and rerun the preview before applying it. [#175452](https://github.com/openclaw/openclaw/pull/175452) [`9f39528c`](https://github.com/openclaw/openclaw/commit/9f39528c0cc79a5f2541076e02ad247278188619). - Setup now tells you why a Gateway restart you asked for failed. [#174767](https://github.com/openclaw/openclaw/pull/174767) [`c7a77fe7`](https://github.com/openclaw/openclaw/commit/c7a77fe791520c6f6dc76d090cf457a9bd55b7e5). Thanks to [@skyzhao1223](https://github.com/skyzhao1223). - Fixes old password settings blocking Gateway credential setup. If you still use `CLAWDBOT_GATEWAY_PASSWORD`, switch to `OPENCLAW_GATEWAY_PASSWORD` or a supported token. [#175416](https://github.com/openclaw/openclaw/pull/175416) [`42e84662`](https://github.com/openclaw/openclaw/commit/42e846629a3dfe740fb498a842045034eec4b370). - Plugin setup now lets you fix an invalid number without closing the prompt. [#176787](https://github.com/openclaw/openclaw/pull/176787) [`806f0b42`](https://github.com/openclaw/openclaw/commit/806f0b42fdccf5a2d85c5fde4127cd31caa852ab). #### Web UI - Settings now tells you why a refresh failed after you switch to, or reconnect to, a Gateway it can’t work with. [#176039](https://github.com/openclaw/openclaw/pull/176039). - Fixes Canvas replacing a document when it couldn’t remove the old one first. It now stops instead. [#175343](https://github.com/openclaw/openclaw/pull/175343) [`5f4d940e`](https://github.com/openclaw/openclaw/commit/5f4d940ea796fd0e8176feedc92010054f04c5c9). - The Sessions view now shows how long the current helper has been running while follow-up work continues. [#168666](https://github.com/openclaw/openclaw/pull/168666). Thanks to [@holgergruenhagen](https://github.com/holgergruenhagen), [@obviyus](https://github.com/obviyus). - Gateway warnings now tell you why background pull-request updates couldn’t be received. [#177038](https://github.com/openclaw/openclaw/pull/177038) [`de2700c9`](https://github.com/openclaw/openclaw/commit/de2700c9946ff95f05c6be9b1d6d47289077a211). - Turning off the Control UI now frees its files from the Gateway’s memory. Requests already in progress can still finish. Requests already in progress can finish. [#177042](https://github.com/openclaw/openclaw/pull/177042) [`897966ba`](https://github.com/openclaw/openclaw/commit/897966ba158b572d82ea733c3c5d279d99b6335b). Thanks to [@vincentkoc](https://github.com/vincentkoc). #### Updates and Maintenance - Gateway shutdown now waits for pending cleanup to finish, and gives Windows more time to confirm it has stopped. See [restart recovery](https://docs.openclaw.ai/gateway/restart-recovery). This covers cleanup ordering and Windows stop confirmation. [#171308](https://github.com/openclaw/openclaw/pull/171308) [#174807](https://github.com/openclaw/openclaw/pull/174807) [`ece4639f`](https://github.com/openclaw/openclaw/commit/ece4639ff9306103c9773e6fff1c53b79bdb19ff). Thanks to [@prizmizm](https://github.com/prizmizm), [@sunlit-deng](https://github.com/sunlit-deng). - You can now stop a Gateway that has been stuck starting for more than five minutes without ever opening its port. See [Gateway service commands](https://docs.openclaw.ai/cli/gateway/service). [#171678](https://github.com/openclaw/openclaw/pull/171678). Thanks to [@tommylei666](https://github.com/tommylei666). - Fixes settings changes hanging when the Gateway was started with messaging channels turned off on purpose. The channels stay off and your settings are kept. The channels stay disabled, and the selected settings are preserved. [`050eab7e`](https://github.com/openclaw/openclaw/commit/050eab7e2008d9d0e2d9712181defd72e722bc01). Thanks to [@romneyda](https://github.com/romneyda). - If you back up with Git or worktrees, backup-history errors now point you to `openclaw backup git log --repository `. See [backup commands](https://docs.openclaw.ai/cli/backup). [#167935](https://github.com/openclaw/openclaw/pull/167935) [#176656](https://github.com/openclaw/openclaw/pull/176656) [`e280eba2`](https://github.com/openclaw/openclaw/commit/e280eba2e3e69025131af29cf878576519c397a2). Thanks to [@obviyus](https://github.com/obviyus), [@pollybot13](https://github.com/pollybot13). - Fixes dead workers blocking a session’s next turn after a confirmed reboot of the machine running them. The interrupted turn isn’t resumed, and if the Gateway can’t confirm the reboot, it keeps waiting as before. The Gateway must be able to compare the saved boot identity with the current one before releasing the old workers’ slots. Older or unreadable boot information keeps the conservative behavior; container cleanup remains a separate requirement. [#168863](https://github.com/openclaw/openclaw/pull/168863). - Worktree cleanup that was postponed because a remote was missing can now retry. After restoring the remote, run `openclaw worktrees gc --retry-deferred`, and keep another copy of any Git objects that only exist locally. Preserve another copy of any local-only Git objects. [#168864](https://github.com/openclaw/openclaw/pull/168864). - Fixes update failures not saying which backup-retention link was unsafe. Keep the backup, repair the reported link, then retry. See [backup-retention failures](https://docs.openclaw.ai/cli/update#runtime-retention-failures). [#169280](https://github.com/openclaw/openclaw/pull/169280). Thanks to [@romneyda](https://github.com/romneyda). - Backup cleanup can now continue after you repair a btrfs filesystem. See [btrfs recovery](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery#btrfs-and-nocow) and [update cleanup](https://docs.openclaw.ai/cli/update/repair-and-recovery#update-cleanup). [#169893](https://github.com/openclaw/openclaw/pull/169893). Thanks to [@farisoftfry](https://github.com/farisoftfry), [@xydigitlybnnnn](https://github.com/xydigitlybnnnn). - Fixes update recovery staying blocked after a command failed before it even started. [#169936](https://github.com/openclaw/openclaw/pull/169936). - After a manual upgrade, `openclaw status` no longer suggests an outdated update that could undo the Gateway version you chose. Other update and rollback warnings still appear. See [status guidance](https://docs.openclaw.ai/cli/status). This applies when status confirms a different, healthy Gateway and the advice did not name an explicit update target. Other update and rollback warnings remain. [#170063](https://github.com/openclaw/openclaw/pull/170063). Thanks to [@amittell](https://github.com/amittell), [@wr-web](https://github.com/wr-web). - Updates now continue, with a visible warning, if saving a copy of the original install fails. Database snapshots needed for rollback are still required. See [update repair and recovery](https://docs.openclaw.ai/cli/update/repair-and-recovery). Required database snapshots for rollback remain required. [#170380](https://github.com/openclaw/openclaw/pull/170380) [#178170](https://github.com/openclaw/openclaw/pull/178170). Thanks to [@donniefi](https://github.com/donniefi), [@romneyda](https://github.com/romneyda). - Package-update identity errors now point you to the right repair command. See [update status and history](https://docs.openclaw.ai/cli/update/status-and-history). [#170385](https://github.com/openclaw/openclaw/pull/170385). Thanks to [@council10-kera](https://github.com/council10-kera), [@dave160926-ops](https://github.com/dave160926-ops), [@sergeiaug](https://github.com/sergeiaug). - Fixes backups of very deeply nested folders running out of room for the path. [#170867](https://github.com/openclaw/openclaw/pull/170867). - Fixes session-history cleanup stopping for good after a temporary database lock. It now resumes once the lock clears, if history is still over its disk limit. See [sessions](https://docs.openclaw.ai/concepts/session). [#170913](https://github.com/openclaw/openclaw/pull/170913). - Fixes Windows source updates getting stuck copying in circles through dependency links. If your installed updater is older, you may need to update from source manually once to pick up this fix. See [manual update methods](https://docs.openclaw.ai/install/updating/update-methods). An older installed updater may need a manual source update to pick up this fix. [#170940](https://github.com/openclaw/openclaw/pull/170940). Thanks to [@stop-time](https://github.com/stop-time). - Updates now stop if they can’t confirm which Gateway is running. Stop it through Task Scheduler, the terminal you started it from, or `openclaw gateway stop`, then retry. See [update commands](https://docs.openclaw.ai/cli/update). [#171101](https://github.com/openclaw/openclaw/pull/171101). Thanks to [@homeworld520](https://github.com/homeworld520). - Fixes updates retrying a package install the database has already refused. Older updaters that are already stuck may still need manual recovery. See [updating OpenClaw](https://docs.openclaw.ai/install/updating). Older affected updaters may still require manual recovery. [#171164](https://github.com/openclaw/openclaw/pull/171164). Thanks to [@tommylei666](https://github.com/tommylei666). - Configuration repair no longer changes your files if it can’t save a copy of the originals first. Fix the reported lock or storage problem, then retry. See [configuration troubleshooting](https://docs.openclaw.ai/gateway/troubleshooting/config-validation-and-probes). [#171217](https://github.com/openclaw/openclaw/pull/171217). - Fixes tasks waiting to restart after a shutdown being quietly dropped when another shutdown or a temporary refusal interrupted their recovery. Recovery still stops after three attempts. This covers recovery stopped before execution and delegated completion checks refused during shutdown. Recovery keeps its existing three-attempt limit. [#172023](https://github.com/openclaw/openclaw/pull/172023) [#172852](https://github.com/openclaw/openclaw/pull/172852). Thanks to [@jeanmonet](https://github.com/jeanmonet), [@romneyda](https://github.com/romneyda). - Fixes failed Git-backup restores leaving temporary files behind. [#172028](https://github.com/openclaw/openclaw/pull/172028). Thanks to [@ericcurtin](https://github.com/ericcurtin). - Doctor now accepts duplicate transcript headers that only differ by timestamp. Original archives are kept, and transcripts with conflicting content are still refused. See [Doctor's session checks](https://docs.openclaw.ai/gateway/doctor/state-and-sessions). Original archives are preserved; conflicting transcript content is still refused. [#172133](https://github.com/openclaw/openclaw/pull/172133). Thanks to [@wangxiajun68](https://github.com/wangxiajun68). - Doctor no longer changes workspace notes that aren’t valid UTF-8. To process one, back up the original, convert a copy to UTF-8, and retry. [#172293](https://github.com/openclaw/openclaw/pull/172293). Thanks to [@obviyus](https://github.com/obviyus), [@wangmiao0668000666](https://github.com/wangmiao0668000666). - Uninstalling on Linux now reloads your user services after removing the OpenClaw service. If that reload fails, run `systemctl --user daemon-reload`. See [Gateway service commands](https://docs.openclaw.ai/cli/gateway/service). [#173048](https://github.com/openclaw/openclaw/pull/173048). Thanks to [@ericcurtin](https://github.com/ericcurtin). - Fixes Doctor resetting runtime choices you set on purpose in active and archived sessions. [#173498](https://github.com/openclaw/openclaw/pull/173498). Thanks to [@obviyus](https://github.com/obviyus), [@s-salamatov](https://github.com/s-salamatov). - Fixes CLI commands that hit their time limit hiding cleanup failures. [#173566](https://github.com/openclaw/openclaw/pull/173566). Thanks to [@hannesrudolph](https://github.com/hannesrudolph). - Restarting the same official Docker container no longer copies all its saved state again, so it starts faster and keeps fewer duplicate recovery copies. A new or recreated container still makes a fresh copy, and Doctor’s checks still run. See [Docker installation](https://docs.openclaw.ai/install/docker). The first successful retained copy is reused for the same container activation while its marker and copy remain intact. A recreated container, new activation, or missing marker or copy requires a fresh capture. Doctor’s checks and repairs still run. [#173711](https://github.com/openclaw/openclaw/pull/173711). Thanks to [@8bitsforge](https://github.com/8bitsforge), [@romneyda](https://github.com/romneyda). - Fixes Update and Doctor repeating the same database error over and over during cleanup. [#173813](https://github.com/openclaw/openclaw/pull/173813). - Uninstall now stops instead of continuing if it can’t check a workspace that should be kept. [#174195](https://github.com/openclaw/openclaw/pull/174195). Thanks to [@asulwer](https://github.com/asulwer), [@jason-bai](https://github.com/jason-bai), [@xuejourney](https://github.com/xuejourney). - Fixes migration cleanup processing shared recovery records more than once. Keep the Gateway and anything else that reads the database stopped while it runs. See [update cleanup](https://docs.openclaw.ai/cli/update/repair-and-recovery#update-cleanup). [#174249](https://github.com/openclaw/openclaw/pull/174249). Thanks to [@astapenkoav](https://github.com/astapenkoav), [@shoaibulhaque](https://github.com/shoaibulhaque). - Upgrades done from the apps now repair official plugins before checking migrations. [#174257](https://github.com/openclaw/openclaw/pull/174257). Thanks to [@kazuyuki-eguchi](https://github.com/kazuyuki-eguchi). - Doctor can now repair an empty database that a native app created first, and tells you if a database you need still isn’t usable. See [database recovery](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery). This repair applies only to databases confirmed to be empty. [#174297](https://github.com/openclaw/openclaw/pull/174297). - Older Mac profiles that couldn’t start because their database was missing its deletion-history table can now start again and get your saved conversations back. You need a verified full backup of the database and its WAL file first. Items that were waiting to be deleted may come back if their deletion record was lost. See [database integrity and recovery](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery). The repair requires a verified full backup of the SQLite database and its WAL file. It checks the profile’s originating app, database layout, configuration, location, and age before proceeding. This is separate from repairing a verified-empty database created by a native app. [#175007](https://github.com/openclaw/openclaw/pull/175007) [`4c15811f`](https://github.com/openclaw/openclaw/commit/4c15811faab4195b17906c7fb3a0d5558e38e8eb). - Gateway cleanup warnings now tell you what actually went wrong. [#174590](https://github.com/openclaw/openclaw/pull/174590) [`e283d2f1`](https://github.com/openclaw/openclaw/commit/e283d2f10db82d42a10494fae734c74f70723533). Thanks to [@altaywtf](https://github.com/altaywtf), [@shoaibulhaque](https://github.com/shoaibulhaque). - Fixes Windows updates popping up helper windows during background database checks. [#174969](https://github.com/openclaw/openclaw/pull/174969) [`f34fed3c`](https://github.com/openclaw/openclaw/commit/f34fed3c28234604584985893ced479f26849ea1). Thanks to [@throwingbones](https://github.com/throwingbones). - Restart requests on Mac now tell you when the restart helper couldn’t be launched. [#175229](https://github.com/openclaw/openclaw/pull/175229) [`3fe1f834`](https://github.com/openclaw/openclaw/commit/3fe1f834c3a5a7a3699b9ce398403d60fccd5be6). - Saved shutdown diagnostics now include more useful process information, with sensitive details removed. [#175625](https://github.com/openclaw/openclaw/pull/175625). Thanks to [@vincentkoc](https://github.com/vincentkoc). - Fixes Linux service cleanup and recovery hiding the real error. When something goes wrong, you now see what actually failed instead of a confusing message about the error report itself. [#175689](https://github.com/openclaw/openclaw/pull/175689) [#175703](https://github.com/openclaw/openclaw/pull/175703). Thanks to [@fuller-stack-dev](https://github.com/fuller-stack-dev). - When the Gateway won’t start because of a file-ownership or cleanup problem, it now says so instead of suggesting OpenClaw isn’t installed. [#175726](https://github.com/openclaw/openclaw/pull/175726). - If the Gateway failed to start after updating from 10.4 to 10.5 because of an older built-in agent database, Doctor can now repair it. Run `openclaw doctor --fix` only after making the backups and checks in the recovery guide. See [database integrity and recovery](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery). The reported `openclaw` or `crestodian` store had schema 24 rather than 25 and was held for deletion recovery. Repair requires full database and shared recovery backups, plus checks of the selected store’s location, ownership, integrity, and schema. Healthy agents starting does not establish that the held store was repaired. Follow [database integrity and recovery](https://docs.openclaw.ai/reference/database-schemas/integrity-and-recovery). [#176783](https://github.com/openclaw/openclaw/pull/176783) [`f02658fe`](https://github.com/openclaw/openclaw/commit/f02658fead18aaa5c470c42a12ef89f6b5e1a0fc). Thanks to [@pennyvibe](https://github.com/pennyvibe). - Fixes update repair rejecting a matching launcher after a disk was remounted, just because the link’s own permissions changed. If an older updater is still stuck, follow the recovery guide to use a repair helper that includes this fix. See [unfinished-publication recovery after a remount](https://docs.openclaw.ai/install/updating#recover-an-unfinished-publication-after-a-remount). The link’s target, type, and ownership still have to match; regular-file permissions and integrity checks remain. [#177059](https://github.com/openclaw/openclaw/pull/177059) [`f3b0d862`](https://github.com/openclaw/openclaw/commit/f3b0d8624d2c2ab85e6c81dc13ae18bf2fc75370). Thanks to [@bodegaclaw](https://github.com/bodegaclaw). - Update status no longer keeps showing migration warnings after you’ve fixed the problem. See [SQLite maintenance](https://docs.openclaw.ai/cli/doctor/sqlite-maintenance). [#177096](https://github.com/openclaw/openclaw/pull/177096) [`52bdbbcd`](https://github.com/openclaw/openclaw/commit/52bdbbcdc8ff62d78dce3ba81035e52e6ed50948). Thanks to [@jj5638521](https://github.com/jj5638521), [@ourcoms2018](https://github.com/ourcoms2018), [@scientificprogrammer](https://github.com/scientificprogrammer). - When a Windows update is blocked by permissions, it now tells you, in any system language, to run as administrator or update manually. [#178657](https://github.com/openclaw/openclaw/pull/178657) [#178624](https://github.com/openclaw/openclaw/pull/178624). - Fixes Windows backup cleanup failing when a temporary folder already existed. [#178657](https://github.com/openclaw/openclaw/pull/178657). Thanks to [@xutongxue233](https://github.com/xutongxue233). - Doctor now waits for earlier database writes to finish before repairing the database. If a check reports the database is busy, just retry; being busy isn’t a reason to restore it. [#178657](https://github.com/openclaw/openclaw/pull/178657) [#177844](https://github.com/openclaw/openclaw/pull/177844). - If an empty, retired plugin setting in a single-file configuration stops the Gateway from starting, Doctor can now back it up and remove it. The setting must be empty for this repair. [#173851](https://github.com/openclaw/openclaw/pull/173851). Thanks to [@fengfan201314-eng](https://github.com/fengfan201314-eng). - Database cleanup that’s already running can now finish when maintenance shuts down. [`2c8e13e1`](https://github.com/openclaw/openclaw/commit/2c8e13e1e1fe3cf4f9eb40d0962c2cfdc2aac142). - CLI state commands now stop before doing anything if the selected state or the running Gateway changed underneath them. This covers local state work and requests sent to the Gateway. [`af77345b`](https://github.com/openclaw/openclaw/commit/af77345b7e834bbedbc234d0e0c53f070a0bf3b5). - Fixes updates with included configuration files re-saving settings the new version had already migrated. Changed files are still checked. Changed configuration files still receive capture checks. [`d6d17745`](https://github.com/openclaw/openclaw/commit/d6d17745356636c405297f2727c2846814dc1d77). - If you interrupt an update, it now finishes cleaning up and keeps a recovery record for that run. It exits with the signal status, including after state migration. [`e5b93b4c`](https://github.com/openclaw/openclaw/commit/e5b93b4cadd436e72e09be0320f575ca2bd1cb37). #### Messaging - Fixes Telegram numbered lists losing their spacing and attachment captions losing their formatting. See [Telegram media](https://docs.openclaw.ai/channels/telegram/media) and [rich messages](https://docs.openclaw.ai/channels/telegram/rich-messages). [`88bdc4bd`](https://github.com/openclaw/openclaw/commit/88bdc4bd4648042afa876152dfab43593ea88bf6) [#171180](https://github.com/openclaw/openclaw/pull/171180). Thanks to [@gideonpraise](https://github.com/gideonpraise), [@romneyda](https://github.com/romneyda), [@shakkernerd](https://github.com/shakkernerd), [@obviyus](https://github.com/obviyus), [@ruel225](https://github.com/ruel225), [@sanderhelgesen](https://github.com/sanderhelgesen). - Fixes internal runtime events showing up in chat history as messages from you. [#137273](https://github.com/openclaw/openclaw/pull/137273). Thanks to [@jpazvd](https://github.com/jpazvd), [@liuwqgit](https://github.com/liuwqgit). - Fixes WhatsApp sending a retried message as a new message after a connection change. This applies to retries within the running process. [#142434](https://github.com/openclaw/openclaw/pull/142434). Thanks to [@ashawwal](https://github.com/ashawwal), [@he-yufeng](https://github.com/he-yufeng), [@obviyus](https://github.com/obviyus). - Fixes downloading stickers sent from WhatsApp Web and Desktop. [#164210](https://github.com/openclaw/openclaw/pull/164210). Thanks to [@abacha](https://github.com/abacha), [@andrewwbuilds](https://github.com/andrewwbuilds), [@obviyus](https://github.com/obviyus). - When a voice note fails to send, the text fallback now arrives before the next reply instead of after it. [#169305](https://github.com/openclaw/openclaw/pull/169305). - Delivery warnings now say more clearly which messages were abandoned and which storage problems caused it. Check the conversation before resending anything. [#169932](https://github.com/openclaw/openclaw/pull/169932) [#170048](https://github.com/openclaw/openclaw/pull/170048). Thanks to [@huyengiang101086-spec](https://github.com/huyengiang101086-spec). - Fixes Tlon dropping incoming events that use different line endings or several data lines. [#170125](https://github.com/openclaw/openclaw/pull/170125). Thanks to [@ly85206559](https://github.com/ly85206559). - Messages waiting in the queue, and replies still being written, now survive a Gateway restart. If recovery is blocked, use **Resume in new session** in WebChat, or start a new or reset conversation in another app. See [sessions and recovery](https://docs.openclaw.ai/concepts/session). [#170384](https://github.com/openclaw/openclaw/pull/170384). - Fixes one stuck messaging account delaying checks of your healthy accounts when the computer’s clock moves backward. Each account keeps its own existing wait allowance. [#170500](https://github.com/openclaw/openclaw/pull/170500). Thanks to [@obviyus](https://github.com/obviyus), [@sunnyshu0925](https://github.com/sunnyshu0925). - Channel errors now tell you which storage problem needs fixing. [#171365](https://github.com/openclaw/openclaw/pull/171365). Thanks to [@obviyus](https://github.com/obviyus), [@ynaamane](https://github.com/ynaamane). - Telegram now follows your IPv4-first setting when IPv6 is broken, and can retry a send that clearly timed out. Sends with an unclear result aren’t repeated. A send with an uncertain delivery result is not replayed. [#171564](https://github.com/openclaw/openclaw/pull/171564). Thanks to [@dat1gui](https://github.com/dat1gui). - Fixes Slack dates becoming unreadable when a message has no fallback text. They now show in ISO format (UTC). Without fallback text, dates use ISO format in UTC. [#172182](https://github.com/openclaw/openclaw/pull/172182). Thanks to [@fhgffy](https://github.com/fhgffy), [@skyzhao1223](https://github.com/skyzhao1223). - When you leave a Discord voice call, a reply that was already being written can still finish in the voice room’s text chat. [#172380](https://github.com/openclaw/openclaw/pull/172380). Thanks to [@brainmonger](https://github.com/brainmonger). - Slack now waits until incoming events are saved before continuing recovery, so events aren’t lost. [#173407](https://github.com/openclaw/openclaw/pull/173407). - Fixes recovery sending an answer again, or warning it was missing, when it had already been delivered. [#173798](https://github.com/openclaw/openclaw/pull/173798). - Fixes separate side questions that get the same answer being flagged as duplicate sends. [#174869](https://github.com/openclaw/openclaw/pull/174869) [`4464c57d`](https://github.com/openclaw/openclaw/commit/4464c57dcdbdabaeeeea14112d6935aeed70edaf). - Fixes a failed typing indicator causing an unhandled error. [#175381](https://github.com/openclaw/openclaw/pull/175381) [`0ec56033`](https://github.com/openclaw/openclaw/commit/0ec56033dc598528341e24ff3367a8613292ecc8). Thanks to [@cxbasdev](https://github.com/cxbasdev), [@musatoktas](https://github.com/musatoktas). - Nostr pairing notifications now report a failure when they can’t reach the Gateway. Use an app connected to the Gateway if you need the notification; starting the Gateway alone doesn’t connect the standalone CLI. Starting the Gateway alone does not connect a standalone CLI to its notifications. [#175489](https://github.com/openclaw/openclaw/pull/175489) [`ebc6633e`](https://github.com/openclaw/openclaw/commit/ebc6633effccebe8e2557ac85e730d546469afcf). - Channels that recover now clear their old restart warnings. [#176182](https://github.com/openclaw/openclaw/pull/176182). Thanks to [@ericcurtin](https://github.com/ericcurtin), [@iaford](https://github.com/iaford). - Fixes Discord `/status` and active `/steer` commands failing when you had saved selections. [#177451](https://github.com/openclaw/openclaw/pull/177451) [`47b76891`](https://github.com/openclaw/openclaw/commit/47b768915132ded88142764085431d8b80dd03ef). Thanks to [@beru-ant-king](https://github.com/beru-ant-king), [@montrellcruse](https://github.com/montrellcruse), [@pitbuild](https://github.com/pitbuild). #### Memory - Memory Wiki no longer changes notes that aren’t valid UTF-8 when rewriting, pruning, or importing bundles. To process one, back up the original, convert a copy to UTF-8, and retry. Other readable notes are still processed. Other readable notes may still be processed; this does not make an entire import all-or-nothing. [#168583](https://github.com/openclaw/openclaw/pull/168583) [#174573](https://github.com/openclaw/openclaw/pull/174573) [`e037b869`](https://github.com/openclaw/openclaw/commit/e037b8694c8bea3a213c4c98700ba6d77bcd95b6) [#176009](https://github.com/openclaw/openclaw/pull/176009). Thanks to [@altaywtf](https://github.com/altaywtf), [@wangmiao0668000666](https://github.com/wangmiao0668000666), [@alix-007](https://github.com/alix-007). - Fixes cleanup of a large dreaming history slowing down Memory reloads. [#169945](https://github.com/openclaw/openclaw/pull/169945). Thanks to [@stronggenetics](https://github.com/stronggenetics). - Memory Wiki status is faster for large vaults because it skips summary work it doesn’t need. [#170553](https://github.com/openclaw/openclaw/pull/170553). Thanks to [@migelizaga-rgb](https://github.com/migelizaga-rgb), [@obviyus](https://github.com/obviyus). - Doctor now explains why memory indexing stopped when neither your main nor your backup embedding provider works. [#172223](https://github.com/openclaw/openclaw/pull/172223). Thanks to [@serg0x](https://github.com/serg0x). - When automatic compaction fails, you now see the actual problem instead of outdated advice to reset the conversation. [#173310](https://github.com/openclaw/openclaw/pull/173310). Thanks to [@turbotheturtle](https://github.com/turbotheturtle). #### Skills - Skill dependencies can now unpack archives from generic download links, using the file name the server provides. [#141312](https://github.com/openclaw/openclaw/pull/141312). Thanks to [@hugenshen](https://github.com/hugenshen), [@obviyus](https://github.com/obviyus). - New Peekaboo installs now use the maintained Homebrew source. [#166245](https://github.com/openclaw/openclaw/pull/166245). Thanks to [@holgergruenhagen](https://github.com/holgergruenhagen). - Finding and reading remote skills can now recover from a brief interruption while pairing changes. This only retries reads and never gets around revoked access. Retries are limited to reading; they do not bypass revoked access. [#171208](https://github.com/openclaw/openclaw/pull/171208) [#173209](https://github.com/openclaw/openclaw/pull/173209). - Fixes generated sandbox skills cluttering your Git changes. [#173560](https://github.com/openclaw/openclaw/pull/173560). Thanks to [@shakkernerd](https://github.com/shakkernerd). - Workshop now keeps your original files if both restore and rollback fail. [#173954](https://github.com/openclaw/openclaw/pull/173954). - Fixes one folder with unreadable ignore rules stopping other skills from loading. That folder is skipped and the rest load normally. [#176681](https://github.com/openclaw/openclaw/pull/176681) [`7911396d`](https://github.com/openclaw/openclaw/commit/7911396da826bd8e8428b8df19f1a5ec6c5d66f5). #### Native Apps - The Mac app now tells you how to update when its bundled worker isn’t compatible. [#157948](https://github.com/openclaw/openclaw/pull/157948). Thanks to [@pollybot13](https://github.com/pollybot13). - Fixes an iPhone Talk crash on the first reply, and improves quiet audio and spoken interruptions in relay conversations. [#168416](https://github.com/openclaw/openclaw/pull/168416). Thanks to [@masatohoshino](https://github.com/masatohoshino), [@nathan-85](https://github.com/nathan-85). - Fixes iOS chat looking offline while messages were actually getting through. A connection warning you dismissed also stays hidden if the same problem comes back. [#169912](https://github.com/openclaw/openclaw/pull/169912). Thanks to [@solvely-colin](https://github.com/solvely-colin). - Mac companion commands now respect longer response timeouts you ask for. If an action times out, check whether it happened before trying again. [#172117](https://github.com/openclaw/openclaw/pull/172117). Thanks to [@colton-harris](https://github.com/colton-harris), [@holgergruenhagen](https://github.com/holgergruenhagen), [@ylcn91](https://github.com/ylcn91). - Node-worker control errors now tell you why they failed. [#174750](https://github.com/openclaw/openclaw/pull/174750) [`1a8dda1e`](https://github.com/openclaw/openclaw/commit/1a8dda1e9f27f83c785f8a5129444fc842dcc36c). Thanks to [@unknown7751](https://github.com/unknown7751). - Chats in the macOS, Linux, iOS, and Android apps can now pick up where they left off after reconnecting. This applies to recognized macOS, Linux, iOS, and Android app clients. [#178657](https://github.com/openclaw/openclaw/pull/178657) [`bba7238a`](https://github.com/openclaw/openclaw/commit/bba7238a1be3a0d4e92c371988f94e81011a06b2) [#171528](https://github.com/openclaw/openclaw/pull/171528). Thanks to [@romneyda](https://github.com/romneyda) for integration, [@jjjhenriksen](https://github.com/jjjhenriksen) for reconnect repairs, and [@n572770](https://github.com/n572770) for related Windows plugin-link preservation. #### Models and Providers - Fixes one provider hitting its quota and a session-storage error then blocking other queued commands. [`4114b2ba`](https://github.com/openclaw/openclaw/commit/4114b2ba139f835574eb445534c6d874b3f73bb1). Thanks to [@romneyda](https://github.com/romneyda). - Fixes a successful reply from a CLI-backed model being marked as failed during its final save. The reply has already succeeded when this database-save failure occurs. [`ff337085`](https://github.com/openclaw/openclaw/commit/ff337085239e072cca943a1120c03b3c01f3629a). Thanks to [@romneyda](https://github.com/romneyda). - Talk now recognizes provider names regardless of capitalization or extra spaces, and keeps the voice you selected. [`a4ce73f0`](https://github.com/openclaw/openclaw/commit/a4ce73f0e94c517a326231a28628ea3202ae950e). Thanks to [@gideonpraise](https://github.com/gideonpraise), [@romneyda](https://github.com/romneyda), [@shakkernerd](https://github.com/shakkernerd). - Fixes model attempts timing out too early or waiting too long after clock changes, and a slow failed attempt leaving its retry or fallback almost no time. Retries and fallbacks now get their own time allowance. Preparation still uses part of an attempt’s execution allowance. A permitted retry or fallback gets a fresh allowance; CLI-backed tool finalization keeps its separate five-second wait. Existing stop, retry, and run limits remain. [#155801](https://github.com/openclaw/openclaw/pull/155801) [#164808](https://github.com/openclaw/openclaw/pull/164808) [#170495](https://github.com/openclaw/openclaw/pull/170495). Thanks to [@obviyus](https://github.com/obviyus), [@sunnyshu0925](https://github.com/sunnyshu0925), [@aleps001](https://github.com/aleps001), [@anyech](https://github.com/anyech), [@belbix](https://github.com/belbix), [@tre1d](https://github.com/tre1d), [@vinsew](https://github.com/vinsew). - Fixes ChatGPT sign-in and token refresh ending too early, or running too long, when your computer’s clock changes. Device-code sign-in still waits up to fifteen minutes. Device-code sign-in keeps its fifteen-minute polling window. Credential expiration still follows the actual date and time. [#162828](https://github.com/openclaw/openclaw/pull/162828) [#167619](https://github.com/openclaw/openclaw/pull/167619). Thanks to [@fuller-stack-dev](https://github.com/fuller-stack-dev), [@sunnyshu0925](https://github.com/sunnyshu0925). - Older LM Studio context-limit errors now trigger the automatic compact-and-retry. [#169189](https://github.com/openclaw/openclaw/pull/169189). Thanks to [@xpeng5278-web](https://github.com/xpeng5278-web). - Fixes parallel OpenAI Responses requests over HTTP losing the thinking level you selected. [#169322](https://github.com/openclaw/openclaw/pull/169322). - Fixes the assistant stopping after a malformed tool request that followed a refused command, until you typed “continue.” It now carries on by itself. Commands that ran, or might have run, are never repeated. The existing continuation checks the transcript and requires proof that every failed tool never started. It adds no retry allowance. [#170615](https://github.com/openclaw/openclaw/pull/170615). Thanks to [@akushonkamen](https://github.com/akushonkamen), [@fransqaas](https://github.com/fransqaas), [@r3n3x](https://github.com/r3n3x). - Windows now waits for local-model shutdown helpers to finish before moving on. [#171587](https://github.com/openclaw/openclaw/pull/171587). Thanks to [@romneyda](https://github.com/romneyda). - Managed Codex startup now keeps on-request approval and allows side questions. [#172639](https://github.com/openclaw/openclaw/pull/172639). Thanks to [@stevenlee-oai](https://github.com/stevenlee-oai). - Fixes Claude CLI sometimes stalling at startup on Windows while handing over stored credentials. [#174571](https://github.com/openclaw/openclaw/pull/174571) [`d401ad34`](https://github.com/openclaw/openclaw/commit/d401ad3409e4d0f19a7740568cd7a5536fd9d30d). Thanks to [@layne-11](https://github.com/layne-11), [@pandysp](https://github.com/pandysp), [@romneyda](https://github.com/romneyda), [@scalesmart](https://github.com/scalesmart). - Managed DeepSeek sessions through OpenRouter can now recover valid tool requests wrapped in provider markup. Incomplete requests are hidden, not run. Incomplete requests are hidden rather than executed. [#175058](https://github.com/openclaw/openclaw/pull/175058) [`30cd17ff`](https://github.com/openclaw/openclaw/commit/30cd17ff658d606847101aaacb49f59da012dbdc). Thanks to [@linux2010](https://github.com/linux2010), [@zhimingq](https://github.com/zhimingq). - DeepInfra and OpenRouter speech requests now get up to 120 seconds by default instead of 30. Timeouts you set yourself still apply. Explicit timeout settings still apply. [#175614](https://github.com/openclaw/openclaw/pull/175614). - Fixes incompatible reasoning settings on GMI Cloud GPT tool requests for GPT-5.6, GPT-5.5, and GPT-5.4 mini. This covers GPT-5.6, GPT-5.5, and GPT-5.4 mini. [#176709](https://github.com/openclaw/openclaw/pull/176709) [`678a8960`](https://github.com/openclaw/openclaw/commit/678a8960e2f36cdbca90c66d898b2809f0bd1749). - You can now find a Claude Code conversation by its exact session ID even when the normal search missed it. [#176742](https://github.com/openclaw/openclaw/pull/176742) [`1f2b99a1`](https://github.com/openclaw/openclaw/commit/1f2b99a1c9f4261ae4803f841310f7b3f124fe40). Thanks to [@ceo633](https://github.com/ceo633), [@sunlit-deng](https://github.com/sunlit-deng). - Rate-limit retries now keep the conversation history needed to reuse the provider’s prompt cache, so you don’t pay for the same input again. The exact hidden continuation stays in stored history without appearing as a user message. Losing that match could make the same history cost more or take longer to process again. [#177050](https://github.com/openclaw/openclaw/pull/177050) [`07b59a09`](https://github.com/openclaw/openclaw/commit/07b59a0976dd8439e9225b5141280df5d78b2323). Thanks to [@obviyus](https://github.com/obviyus). - If Codex rejects a message because its saved conversation is missing on the server, OpenClaw can now restore the history and try once more. If the history can’t be restored, the message wasn’t sent: reconnect the conversation to a Codex session and resend it. See [Codex session commands](https://docs.openclaw.ai/plugins/codex-harness/commands). This applies to a non-incognito conversation receiving the specific `turn/start` error `-32600 thread not found` for its bound conversation ID. Recovery requires unchanged session binding and network policy. [#178170](https://github.com/openclaw/openclaw/pull/178170) [`081fe025`](https://github.com/openclaw/openclaw/commit/081fe025a05b28d10debd57472655c644cdc49a6) [#172705](https://github.com/openclaw/openclaw/pull/172705). Thanks to [@romneyda](https://github.com/romneyda) and [@vincentkoc](https://github.com/vincentkoc) for the backport. - Codex can now start answering after a context refresh while earlier background work is still finishing. This requires the same compatible persistent session settings. [#178657](https://github.com/openclaw/openclaw/pull/178657) [#177716](https://github.com/openclaw/openclaw/pull/177716). Thanks to [@jjjhenriksen](https://github.com/jjjhenriksen). #### Automations and Scheduling - Local-model automations now alert you after two skipped runs instead of silently staying unavailable. Existing opt-outs still apply. The default alert is after two skips; existing opt-outs still apply. [#169278](https://github.com/openclaw/openclaw/pull/169278). Thanks to [@obviyus](https://github.com/obviyus). - IMAP automations now move on to later mail when one message can’t be read. The unreadable message is kept. See [IMAP automations](https://docs.openclaw.ai/automation/imap). The unreadable message is preserved. [#173231](https://github.com/openclaw/openclaw/pull/173231). Thanks to [@pgondhi987](https://github.com/pgondhi987). - If a scheduled job’s failure alert is refused before it’s sent, the job’s owner now gets an in-app notice instead. Alerts with an unclear delivery result aren’t sent twice. See [scheduled-job delivery](https://docs.openclaw.ai/automation/cron-jobs/delivery). An uncertain delivery result does not trigger a duplicate fallback alert. [#173347](https://github.com/openclaw/openclaw/pull/173347). Thanks to [@winoren](https://github.com/winoren). - A targeted heartbeat now delivers its queued background-task result to the right conversation, even when regular heartbeats are off. See [system commands](https://docs.openclaw.ai/cli/system). With isolated heartbeats, the selected event is read once; unrelated sessions’ queued events stay untouched. [#175642](https://github.com/openclaw/openclaw/pull/175642). Thanks to [@seriouslysean](https://github.com/seriouslysean), [@sunlit-deng](https://github.com/sunlit-deng). - A scheduled command pinned to the Gateway now refuses a prompt that asks it to run on another machine. If a saved job reports this conflict, fix its prompt or ask the operator to change the job’s saved machine. See [CLI-backed model and scheduled-command guidance](https://docs.openclaw.ai/gateway/cli-backends). The conflict is rejected before the command runs. [#176997](https://github.com/openclaw/openclaw/pull/176997) [`fbde9773`](https://github.com/openclaw/openclaw/commit/fbde977325307e9a1e7f7f3acee5366cccf693f4). Thanks to [@etzelm](https://github.com/etzelm). - To clear a scheduled job’s pinned Gateway target, an operator can run `openclaw cron edit --tools exec`. This replaces the whole tool list, so include every tool the job still needs. See [scheduled-command target recovery](https://docs.openclaw.ai/gateway/cli-backends). This is the documented remedy for changing the captured target restriction. Current command-execution policy and approval requirements still apply. [#176997](https://github.com/openclaw/openclaw/pull/176997). Thanks to [@etzelm](https://github.com/etzelm). - New scheduled follow-ups can now continue work you already approved in the same conversation. Recreate existing jobs to get this behavior. A one-time follow-up can schedule its next check through the same job. [#176422](https://github.com/openclaw/openclaw/pull/176422). #### Browser and Computer Use - Linux Desktop startup (opt-in) no longer picks a display that a hidden session is already using. See [Desktop configuration](https://docs.openclaw.ai/gateway/config-browser-ui-desktop). [#169392](https://github.com/openclaw/openclaw/pull/169392). Thanks to [@holgergruenhagen](https://github.com/holgergruenhagen), [@obviyus](https://github.com/obviyus). - Fixes fetched JSON changing the digits of long IDs and other large numbers. [#170123](https://github.com/openclaw/openclaw/pull/170123). Thanks to [@ly85206559](https://github.com/ly85206559), [@obviyus](https://github.com/obviyus). - Web search timeout errors now tell you the request’s actual time limit. See [web tools](https://docs.openclaw.ai/tools/web). [#170372](https://github.com/openclaw/openclaw/pull/170372). Thanks to [@letsc4](https://github.com/letsc4), [@xiajiahang](https://github.com/xiajiahang). - Setup now explains how to turn on Desktop access on the Gateway’s machine. An administrator still has to enable it. [#178657](https://github.com/openclaw/openclaw/pull/178657) [#177888](https://github.com/openclaw/openclaw/pull/177888). Thanks to [@etzelm](https://github.com/etzelm). - Linux camera discovery now reports an unreadable device folder as an error instead of saying you have no cameras. [#174424](https://github.com/openclaw/openclaw/pull/174424). #### Plugins and Integrations - Fixes cancelling Codex startup leaving a stuck place in the queue that blocked the next attempt. The next attempt still waits for the old client process to exit. [#168347](https://github.com/openclaw/openclaw/pull/168347). Thanks to [@romneyda](https://github.com/romneyda). - Fixes clock changes cutting short or stretching Codex connection waits and Crabbox and Azure retry and cleanup waits. This covers Codex’s ten-second connection handshake after queue admission and its idle warm-connection lifetime, Crabbox’s coordinator retry waits, and Azure’s fixed-lease stop cleanup. Existing retry and cleanup policies remain. [#168731](https://github.com/openclaw/openclaw/pull/168731) [#168771](https://github.com/openclaw/openclaw/pull/168771) [#165889](https://github.com/openclaw/openclaw/pull/165889). Thanks to [@obviyus](https://github.com/obviyus), [@sunnyshu0925](https://github.com/sunnyshu0925), [@fuller-stack-dev](https://github.com/fuller-stack-dev). - Fixes an invalid plugin message replacement wiping the original message. The original is kept and an error is reported. [#161098](https://github.com/openclaw/openclaw/pull/161098). Thanks to [@aniruddhaadak80](https://github.com/aniruddhaadak80), [@obviyus](https://github.com/obviyus), [@xydigitlybnnnn](https://github.com/xydigitlybnnnn). - Eligible ACP coding sessions now resume once after a Gateway restart. Finished sessions start fresh. Recovery requires the same session identity, command, working directory, and backend. Completed sessions start fresh. [#166368](https://github.com/openclaw/openclaw/pull/166368). Thanks to [@alkor2000](https://github.com/alkor2000), [@jhgaylor](https://github.com/jhgaylor), [@obviyus](https://github.com/obviyus). - When an MCP integration sends the same result as both structured data and JSON text, the model now gets only one copy, even if the formatting differs. Distinct data and useful recovery guidance remain available, with the existing result-size limits. [#169180](https://github.com/openclaw/openclaw/pull/169180). Thanks to [@jipeng6036-del](https://github.com/jipeng6036-del), [@xilopaint](https://github.com/xilopaint). - Logbook now tells you when a missing model is blocking queued work. [#170608](https://github.com/openclaw/openclaw/pull/170608). Thanks to [@duyufansh2008](https://github.com/duyufansh2008). - Fixes reviewers being told a released Workboard review card still had unfinished dependencies. They can now claim and complete it once its parent tasks are done. See [Workboard](https://docs.openclaw.ai/plugins/workboard). Existing review blockers still apply. [#171414](https://github.com/openclaw/openclaw/pull/171414). Thanks to [@asikorskiy](https://github.com/asikorskiy), [@ericcurtin](https://github.com/ericcurtin), [@obviyus](https://github.com/obviyus). - MCP sign-in errors now give a safe reason and tell you how to sign in or fix your credentials. See [MCP tools](https://docs.openclaw.ai/tools/mcp). [#172331](https://github.com/openclaw/openclaw/pull/172331). Thanks to [@rclarke0](https://github.com/rclarke0). - Plugins now warn you when a CLI provider binding is missing. Using the CLI on its own still works. See [CLI backend plugins](https://docs.openclaw.ai/plugins/cli-backend-plugins). Standalone CLI use remains valid. [#173000](https://github.com/openclaw/openclaw/pull/173000). Thanks to [@xtimor](https://github.com/xtimor). - When some plugins or channels fail to load, you now see the failures, and the alternatives that did load keep working. [#174299](https://github.com/openclaw/openclaw/pull/174299) [`0e20b219`](https://github.com/openclaw/openclaw/commit/0e20b219f03fe638bad41f50a539bd8760e7b97c) [#177252](https://github.com/openclaw/openclaw/pull/177252) [`1acaee64`](https://github.com/openclaw/openclaw/commit/1acaee64f41fd1f051e53b5e027cbd49f3988284). - Plugin removal now postpones cleanup instead of deleting files when it can’t read the marker that protects them. [#175289](https://github.com/openclaw/openclaw/pull/175289) [`e579f092`](https://github.com/openclaw/openclaw/commit/e579f092cab7664e9aa89663d17c7b5b379aec1d). - Session Share now shows an error when it can’t discover receivers, instead of an empty list. Check the receiving node’s connection and retry. Check the receiver node's connection and retry. [#175532](https://github.com/openclaw/openclaw/pull/175532) [`42be4a44`](https://github.com/openclaw/openclaw/commit/42be4a448d7750b2c4b6ff6ea00068a85d2ba109). - OpenShell now keeps your local and remote workspace views when a read fails. [#176458](https://github.com/openclaw/openclaw/pull/176458). - Fixes a missing Beam mirror secret turning off receiving that doesn’t need a token. Restore the mirror credential and run `openclaw secrets reload`. [#176510](https://github.com/openclaw/openclaw/pull/176510). - Enabled ACP coding backends can now start without an unused default workspace. Add `acpx` to any plugin allowlist that applies, and use an absolute path for custom adapters. [#176876](https://github.com/openclaw/openclaw/pull/176876) [`73b902dc`](https://github.com/openclaw/openclaw/commit/73b902dc9c1d0608ba9dcd0a82f4f572d53062b8) [#176879](https://github.com/openclaw/openclaw/pull/176879) [`bf5e4f04`](https://github.com/openclaw/openclaw/commit/bf5e4f04fcbd3254b328ac6318436b11f4ced9c4). Thanks to [@zoowh](https://github.com/zoowh). - 1Password errors when reading secrets now include useful details, with sensitive values removed. [#177060](https://github.com/openclaw/openclaw/pull/177060) [`4d08d922`](https://github.com/openclaw/openclaw/commit/4d08d922229e069f890e95bd5862e0c1fe19f142). Thanks to [@gisk0](https://github.com/gisk0). - Finished Codex helpers now retry cleaning up leftover status subscriptions after a temporary failure. Active follow-ups keep their subscriptions. [#173547](https://github.com/openclaw/openclaw/pull/173547). Thanks to [@kimiyu-186](https://github.com/kimiyu-186). #### Security and Privacy - Adds remediations for the eMudhra certificate compromise. OpenClaw now requires Node 24.22.1 or newer on Node 24, or 26.12.1 or newer on Node 26, because older Node builds may still trust the affected certificates. If you manage Node yourself, upgrade before starting OpenClaw. Docker images and installers already use the patched versions. Source builds use pnpm 12.15.0. [#179992](https://github.com/openclaw/openclaw/pull/179992). Thanks to [@joshavant](https://github.com/joshavant). - The Gateway now stays up when a hook’s credential can’t be found, and only turns off the affected hooks. Add the secret to the service environment and reload or restart, or disable those hooks. [#165019](https://github.com/openclaw/openclaw/pull/165019). Thanks to [@eleqtrizit](https://github.com/eleqtrizit). - If you use a named profile, a custom state folder, or a moved home folder, Doctor now uses that profile instead of reading old agent data from the default one. If a symlink or alternate path used to point at that old data, set `OPENCLAW_AGENT_DIR` to it before relying on it. See [Doctor’s profile and session checks](https://docs.openclaw.ai/gateway/doctor/state-and-sessions). This prevents inappropriate legacy-data migration and warnings for the wrong profile. Preserve the original directory. [#171439](https://github.com/openclaw/openclaw/pull/171439). - Setup now asks for approval again after an earlier approval expires or is cancelled. If an approved change fails, check your settings and status before retrying. [#172270](https://github.com/openclaw/openclaw/pull/172270). - Camera-list tables now strip terminal control characters from camera names, positions, and IDs. Raw JSON output is unchanged. Raw JSON output is unchanged. [#175624](https://github.com/openclaw/openclaw/pull/175624). Thanks to [@obviyus](https://github.com/obviyus), [@sunnyshu0925](https://github.com/sunnyshu0925). - Fixes Incognito history search results including an extra internal field. This restores the existing search response format. [`352f64f2`](https://github.com/openclaw/openclaw/commit/352f64f27b345f5a622684dbd670c72e22856d93). #### Quality-of-Life Improvements - When you wait on a background command, you now get whatever output is available and a note on how to check again while it keeps running. See [background processes](https://docs.openclaw.ai/gateway/background-process). This covers bounded waits, notification-capture failures, and polling after clock changes. An invalid wait request keeps the original command available. [#128886](https://github.com/openclaw/openclaw/pull/128886) [#169645](https://github.com/openclaw/openclaw/pull/169645) [#171570](https://github.com/openclaw/openclaw/pull/171570) [#173241](https://github.com/openclaw/openclaw/pull/173241). Thanks to [@benprotzekmuntoni](https://github.com/benprotzekmuntoni), [@potterdigital](https://github.com/potterdigital), [@sashankh](https://github.com/sashankh), [@shad0wca7](https://github.com/shad0wca7), [@vacinc](https://github.com/vacinc), [@davidcittadini](https://github.com/davidcittadini), [@obviyus](https://github.com/obviyus), [@wangmiao0668000666](https://github.com/wangmiao0668000666). - If you turn on continuation instruction skipping, workspace instructions are no longer resent on every follow-up once they’ve been delivered. It’s off by default. See [workspace instructions](https://docs.openclaw.ai/gateway/config-agents/workspace-and-bootstrap). This opt-in setting applies to the embedded runtime. The default still sends instructions each time. Resetting or compacting the conversation makes them eligible for delivery again. [#154923](https://github.com/openclaw/openclaw/pull/154923). Thanks to [@playhard94](https://github.com/playhard94), [@sxh313](https://github.com/sxh313). - Fixes finished or stopped helper work coming back after a restart with phantom reminders. This includes failed result delivery, stopped parents, and watched results from shared helpers. [#155019](https://github.com/openclaw/openclaw/pull/155019) [#169453](https://github.com/openclaw/openclaw/pull/169453) [#169489](https://github.com/openclaw/openclaw/pull/169489). Thanks to [@assimetria-ai](https://github.com/assimetria-ai), [@ifyouhavethisemail-afk](https://github.com/ifyouhavethisemail-afk), [@itanyplus](https://github.com/itanyplus), [@jerryliang122](https://github.com/jerryliang122), [@linhongyu510](https://github.com/linhongyu510), [@obviyus](https://github.com/obviyus), [@rozenpl](https://github.com/rozenpl), [@waynegault](https://github.com/waynegault), [@freeqaz-openai](https://github.com/freeqaz-openai). - `/new` and `/reset` now keep your managed project checkout and working folder, so unfinished files are still there. Idle resets preserve this context too. Plain New Chat in Control UI still leaves the previous worktree through normal cleanup. [#160549](https://github.com/openclaw/openclaw/pull/160549). Thanks to [@vincentkoc](https://github.com/vincentkoc). - Fixes the assistant missing a background command’s result after you changed settings. See [command execution](https://docs.openclaw.ai/tools/exec). The command has already finished. Its queued completion follow-up, refused before execution under the old settings, can be admitted under the updated settings with at most two additional attempts. [#169529](https://github.com/openclaw/openclaw/pull/169529). Thanks to [@oldrich333](https://github.com/oldrich333), [@romneyda](https://github.com/romneyda), [@wangmiao0668000666](https://github.com/wangmiao0668000666). - Shell completion now finds global flags after subcommands. Regenerate your saved completions with `openclaw completion --write-state`. [#171571](https://github.com/openclaw/openclaw/pull/171571). Thanks to [@obviyus](https://github.com/obviyus), [@zhangguiping-xydt](https://github.com/zhangguiping-xydt). - Fixes paged file reads dropping blank lines. [#173835](https://github.com/openclaw/openclaw/pull/173835). - When command output is shortened, the end of it, where the error usually is, is now kept. [#174030](https://github.com/openclaw/openclaw/pull/174030). Thanks to [@vincentkoc](https://github.com/vincentkoc). - Invalid tool arguments are now labeled as failures instead of policy blocks. Real policy denials still show as blocked. Actual policy denials still appear as blocked. [#176104](https://github.com/openclaw/openclaw/pull/176104). Thanks to [@bgreezy](https://github.com/bgreezy), [@yinx65588-boop](https://github.com/yinx65588-boop). - `/btw`, `/side`, and `/loop` now keep multiline input. Loop names stay on one line. This covers `/btw`, `/side`, and `/loop`; loop names remain on one line. [#176293](https://github.com/openclaw/openclaw/pull/176293). Thanks to [@goutamadwant](https://github.com/goutamadwant), [@yetval](https://github.com/yetval). - Fixes an automatic retry repeating its continuation instruction after a conversation was compacted. [`236b0c1d`](https://github.com/openclaw/openclaw/commit/236b0c1d4020ae277d72751f450143bf2730822d). #### Other Bug Fixes - Fixes a successful database save looking like it failed when writing its warning failed. If the database save itself fails, its original error is preserved. [#157151](https://github.com/openclaw/openclaw/pull/157151). Thanks to [@vincentkoc](https://github.com/vincentkoc). - Fixes request, remote-worker, and file-transfer waits ending early or running over after clock changes. This covers Gateway and plugin response waits, already-safe workspace retries after a disconnect, SSH and transfer budgets, busy native-session acquisition, and remote image or PDF copies using the remaining time. It grants no new retries. [#171094](https://github.com/openclaw/openclaw/pull/171094) [#171977](https://github.com/openclaw/openclaw/pull/171977) [#172256](https://github.com/openclaw/openclaw/pull/172256) [#172780](https://github.com/openclaw/openclaw/pull/172780) [#173142](https://github.com/openclaw/openclaw/pull/173142). Thanks to [@obviyus](https://github.com/obviyus), [@sunnyshu0925](https://github.com/sunnyshu0925). - A new opt-in check lets active runs continue after large follow-up messages without repeating finished tools. Turn it on with `agents.defaults.compaction.midTurnPrecheck.enabled=true`. See [conversation compaction](https://docs.openclaw.ai/reference/session-management-compaction/compaction). Enable it with `agents.defaults.compaction.midTurnPrecheck.enabled=true`; it remains off by default. [#172019](https://github.com/openclaw/openclaw/pull/172019). Thanks to [@mirasrael](https://github.com/mirasrael), [@obviyus](https://github.com/obviyus). - Tool calls that time out now stay clearly marked as blocked, and their completed results and attachments are kept. [#172983](https://github.com/openclaw/openclaw/pull/172983). Thanks to [@budzation](https://github.com/budzation). - DNS tools no longer change zones they can’t read. [#174424](https://github.com/openclaw/openclaw/pull/174424) [`188a7983`](https://github.com/openclaw/openclaw/commit/188a7983089ba615f8228382fcaa6f357428d0ae). - Fixes very large file edits crashing with a too-many-arguments error. [#174477](https://github.com/openclaw/openclaw/pull/174477) [`4a9f9022`](https://github.com/openclaw/openclaw/commit/4a9f90225fad82ee12881012d3fa16c7297874f5). - Fixes an optional diagnostic file failing to write ending the whole session. You now get a single warning. [#174622](https://github.com/openclaw/openclaw/pull/174622) [`6c759cbc`](https://github.com/openclaw/openclaw/commit/6c759cbcbbfda6e2a098a891f28823dc65c44ee9). Thanks to [@aniruddhaadak80](https://github.com/aniruddhaadak80), [@jamie8johnson](https://github.com/jamie8johnson). - API clients can now get a saved session’s available commands without waiting for model information they didn’t ask for. For `chat.metadata` requests with `includeModels: false`, the unused wait for worker-placement information is skipped. Full/default metadata requests keep their existing preparation. [#175606](https://github.com/openclaw/openclaw/pull/175606). Thanks to [@vincentkoc](https://github.com/vincentkoc). - Fixes playback-cache errors leading to extra cache entries being deleted. Repair the filesystem problem before retrying cache maintenance. A new rendition may remain after an error. Repair the filesystem problem before retrying cache maintenance. [#175634](https://github.com/openclaw/openclaw/pull/175634). - Cloning a managed project no longer overwrites an existing folder it can’t inspect. It only clones when the folder doesn’t exist. Cloning proceeds only when the destination is missing. [#175952](https://github.com/openclaw/openclaw/pull/175952). - Fixes service commands reporting they were ready when their startup input couldn’t be prepared. You now get a startup error. [#176023](https://github.com/openclaw/openclaw/pull/176023). - A slow Stop request now stays accepted even if its reply times out, and repeated cancel notices no longer undo a confirmed stop. If Stop is still settling, check the session’s status before trying again. See [session status and control](https://docs.openclaw.ai/concepts/session-tool). An accepted request can report “settling” after the five-second response wait; that does not mean cancellation is complete, state is saved, or success is guaranteed. Repeated child-cancel callbacks also preserve a pending notice to the parent. [#176206](https://github.com/openclaw/openclaw/pull/176206) [#176603](https://github.com/openclaw/openclaw/pull/176603) [`56827d40`](https://github.com/openclaw/openclaw/commit/56827d40f0dc2bed61e6dd3fe306f1a8d260d687). Thanks to [@hannnnn-l](https://github.com/hannnnn-l). - Fixes the process tool reporting success when writing input to a terminal process actually failed. [#176362](https://github.com/openclaw/openclaw/pull/176362). - `openclaw gateway suspend --json` now always prints valid JSON, even when the Gateway is busy. It returns one JSON object and exits with status 1 in that case. [#176795](https://github.com/openclaw/openclaw/pull/176795) [`77dab748`](https://github.com/openclaw/openclaw/commit/77dab7485a814796d2cd85d04cb46b97009f5fd1) [#178657](https://github.com/openclaw/openclaw/pull/178657). Thanks to [@vincentkoc](https://github.com/vincentkoc). - Fixes the first native-worker turn failing before the model started. It now waits for its session to attach. [#177184](https://github.com/openclaw/openclaw/pull/177184) [`dfa84465`](https://github.com/openclaw/openclaw/commit/dfa8446525308cfc7877ea4d6b48c363bf16e23b).