On this page

On this page

Release notes

v2026.10.6

v2026.10.6

AI agents and tools can read these release notes as plain Markdown.

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.

    More details

    #176174 #176194. Thanks to @tjarrau-dev, @easyteacher, @skyzhao1223.

  • Fixes Linux service commands that dropped empty arguments during setup.

    More details

    e75f1fc9. Thanks to @gideonpraise, @romneyda, @shakkernerd.

  • Fixes Windows installs with Bun failing when an optional cleanup step didn’t work. Installation now finishes.

    More details

    #169286.

  • Skill setup now only checks for the installers your selected dependencies actually need.

    More details

    #170967.

  • Fixes Codex setup imports giving up too early, or waiting too long, when your computer’s clock changes.

    More details

    This fixes the discovery and import wait. #168735. Thanks to @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.

    More details

    This covers Hermes instruction imports and Claude imports of existing instructions. #172742 #172953. Thanks to @leon-sk668, @obviyus.

  • Hermes migration previews now tell you which files they couldn’t read. Fix the access problem and rerun the preview before applying it.

    More details

    #175452 9f39528c.

  • Setup now tells you why a Gateway restart you asked for failed.

    More details

    #174767 c7a77fe7. Thanks to @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.

    More details

    #175416 42e84662.

  • Plugin setup now lets you fix an invalid number without closing the prompt.

    More details

    #176787 806f0b42.

Web UI

  • Settings now tells you why a refresh failed after you switch to, or reconnect to, a Gateway it can’t work with.

    More details

    #176039.

  • Fixes Canvas replacing a document when it couldn’t remove the old one first. It now stops instead.

    More details

    #175343 5f4d940e.

  • The Sessions view now shows how long the current helper has been running while follow-up work continues.

    More details

    #168666. Thanks to @holgergruenhagen, @obviyus.

  • Gateway warnings now tell you why background pull-request updates couldn’t be received.

    More details

    #177038 de2700c9.

  • Turning off the Control UI now frees its files from the Gateway’s memory. Requests already in progress can still finish.

    More details

    Requests already in progress can finish. #177042 897966ba. Thanks to @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.

    More details

    This covers cleanup ordering and Windows stop confirmation. #171308 #174807 ece4639f. Thanks to @prizmizm, @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.

    More details

    #171678. Thanks to @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.

    More details

    The channels stay disabled, and the selected settings are preserved. 050eab7e. Thanks to @romneyda.

  • If you back up with Git or worktrees, backup-history errors now point you to openclaw backup git log --repository <path>. See backup commands.

    More details

    #167935 #176656 e280eba2. Thanks to @obviyus, @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.

    More details

    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.

  • 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.

    More details

    Preserve another copy of any local-only Git objects. #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.

    More details

    #169280. Thanks to @romneyda.

  • Backup cleanup can now continue after you repair a btrfs filesystem. See btrfs recovery and update cleanup.

    More details

    #169893. Thanks to @farisoftfry, @xydigitlybnnnn.

  • Fixes update recovery staying blocked after a command failed before it even started.

    More details

    #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.

    More details

    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. Thanks to @amittell, @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.

    More details

    Required database snapshots for rollback remain required. #170380 #178170. Thanks to @donniefi, @romneyda.

  • Package-update identity errors now point you to the right repair command. See update status and history.

    More details

    #170385. Thanks to @council10-kera, @dave160926-ops, @sergeiaug.

  • Fixes backups of very deeply nested folders running out of room for the path.

    More details

    #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.

    More details

    #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.

    More details

    An older installed updater may need a manual source update to pick up this fix. #170940. Thanks to @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.

    More details

    #171101. Thanks to @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.

    More details

    Older affected updaters may still require manual recovery. #171164. Thanks to @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.

    More details

    #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.

    More details

    This covers recovery stopped before execution and delegated completion checks refused during shutdown. Recovery keeps its existing three-attempt limit. #172023 #172852. Thanks to @jeanmonet, @romneyda.

  • Fixes failed Git-backup restores leaving temporary files behind.

    More details

    #172028. Thanks to @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.

    More details

    Original archives are preserved; conflicting transcript content is still refused. #172133. Thanks to @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.

    More details

    #172293. Thanks to @obviyus, @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.

    More details

    #173048. Thanks to @ericcurtin.

  • Fixes Doctor resetting runtime choices you set on purpose in active and archived sessions.

    More details

    #173498. Thanks to @obviyus, @s-salamatov.

  • Fixes CLI commands that hit their time limit hiding cleanup failures.

    More details

    #173566. Thanks to @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.

    More details

    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. Thanks to @8bitsforge, @romneyda.

  • Fixes Update and Doctor repeating the same database error over and over during cleanup.

    More details

    #173813.

  • Uninstall now stops instead of continuing if it can’t check a workspace that should be kept.

    More details

    #174195. Thanks to @asulwer, @jason-bai, @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.

    More details

    #174249. Thanks to @astapenkoav, @shoaibulhaque.

  • Upgrades done from the apps now repair official plugins before checking migrations.

    More details

    #174257. Thanks to @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.

    More details

    This repair applies only to databases confirmed to be empty. #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.

    More details

    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 4c15811f.

  • Gateway cleanup warnings now tell you what actually went wrong.

    More details

    #174590 e283d2f1. Thanks to @altaywtf, @shoaibulhaque.

  • Fixes Windows updates popping up helper windows during background database checks.

    More details

    #174969 f34fed3c. Thanks to @throwingbones.

  • Restart requests on Mac now tell you when the restart helper couldn’t be launched.

    More details

    #175229 3fe1f834.

  • Saved shutdown diagnostics now include more useful process information, with sensitive details removed.

    More details

    #175625. Thanks to @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.

    More details

    #175689 #175703. Thanks to @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.

    More details

    #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.

    More details

    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. #176783 f02658fe. Thanks to @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.

    More details

    The link’s target, type, and ownership still have to match; regular-file permissions and integrity checks remain. #177059 f3b0d862. Thanks to @bodegaclaw.

  • Update status no longer keeps showing migration warnings after you’ve fixed the problem. See SQLite maintenance.

    More details

    #177096 52bdbbcd. Thanks to @jj5638521, @ourcoms2018, @scientificprogrammer.

  • When a Windows update is blocked by permissions, it now tells you, in any system language, to run as administrator or update manually.

    More details

    #178657 #178624.

  • Fixes Windows backup cleanup failing when a temporary folder already existed.

    More details

    #178657. Thanks to @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.

    More details

    #178657 #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.

    More details

    The setting must be empty for this repair. #173851. Thanks to @fengfan201314-eng.

  • Database cleanup that’s already running can now finish when maintenance shuts down.

    More details

    2c8e13e1.

  • CLI state commands now stop before doing anything if the selected state or the running Gateway changed underneath them.

    More details

    This covers local state work and requests sent to the Gateway. af77345b.

  • Fixes updates with included configuration files re-saving settings the new version had already migrated. Changed files are still checked.

    More details

    Changed configuration files still receive capture checks. d6d17745.

  • If you interrupt an update, it now finishes cleaning up and keeps a recovery record for that run.

    More details

    It exits with the signal status, including after state migration. e5b93b4c.

Messaging

  • Fixes Telegram numbered lists losing their spacing and attachment captions losing their formatting. See Telegram media and rich messages.

    More details

    88bdc4bd #171180. Thanks to @gideonpraise, @romneyda, @shakkernerd, @obviyus, @ruel225, @sanderhelgesen.

  • Fixes internal runtime events showing up in chat history as messages from you.

    More details

    #137273. Thanks to @jpazvd, @liuwqgit.

  • Fixes WhatsApp sending a retried message as a new message after a connection change.

    More details

    This applies to retries within the running process. #142434. Thanks to @ashawwal, @he-yufeng, @obviyus.

  • Fixes downloading stickers sent from WhatsApp Web and Desktop.

    More details

    #164210. Thanks to @abacha, @andrewwbuilds, @obviyus.

  • When a voice note fails to send, the text fallback now arrives before the next reply instead of after it.

    More details

    #169305.

  • Delivery warnings now say more clearly which messages were abandoned and which storage problems caused it. Check the conversation before resending anything.

    More details

    #169932 #170048. Thanks to @huyengiang101086-spec.

  • Fixes Tlon dropping incoming events that use different line endings or several data lines.

    More details

    #170125. Thanks to @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.

    More details

    #170384.

  • Fixes one stuck messaging account delaying checks of your healthy accounts when the computer’s clock moves backward.

    More details

    Each account keeps its own existing wait allowance. #170500. Thanks to @obviyus, @sunnyshu0925.

  • Channel errors now tell you which storage problem needs fixing.

    More details

    #171365. Thanks to @obviyus, @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.

    More details

    A send with an uncertain delivery result is not replayed. #171564. Thanks to @dat1gui.

  • Fixes Slack dates becoming unreadable when a message has no fallback text. They now show in ISO format (UTC).

    More details

    Without fallback text, dates use ISO format in UTC. #172182. Thanks to @fhgffy, @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.

    More details

    #172380. Thanks to @brainmonger.

  • Slack now waits until incoming events are saved before continuing recovery, so events aren’t lost.

    More details

    #173407.

  • Fixes recovery sending an answer again, or warning it was missing, when it had already been delivered.

    More details

    #173798.

  • Fixes separate side questions that get the same answer being flagged as duplicate sends.

    More details

    #174869 4464c57d.

  • Fixes a failed typing indicator causing an unhandled error.

    More details

    #175381 0ec56033. Thanks to @cxbasdev, @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.

    More details

    Starting the Gateway alone does not connect a standalone CLI to its notifications. #175489 ebc6633e.

  • Channels that recover now clear their old restart warnings.

    More details

    #176182. Thanks to @ericcurtin, @iaford.

  • Fixes Discord /status and active /steer commands failing when you had saved selections.

    More details

    #177451 47b76891. Thanks to @beru-ant-king, @montrellcruse, @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.

    More details

    Other readable notes may still be processed; this does not make an entire import all-or-nothing. #168583 #174573 e037b869 #176009. Thanks to @altaywtf, @wangmiao0668000666, @alix-007.

  • Fixes cleanup of a large dreaming history slowing down Memory reloads.

    More details

    #169945. Thanks to @stronggenetics.

  • Memory Wiki status is faster for large vaults because it skips summary work it doesn’t need.

    More details

    #170553. Thanks to @migelizaga-rgb, @obviyus.

  • Doctor now explains why memory indexing stopped when neither your main nor your backup embedding provider works.

    More details

    #172223. Thanks to @serg0x.

  • When automatic compaction fails, you now see the actual problem instead of outdated advice to reset the conversation.

    More details

    #173310. Thanks to @turbotheturtle.

Skills

  • Skill dependencies can now unpack archives from generic download links, using the file name the server provides.

    More details

    #141312. Thanks to @hugenshen, @obviyus.

  • New Peekaboo installs now use the maintained Homebrew source.

    More details

    #166245. Thanks to @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.

    More details

    Retries are limited to reading; they do not bypass revoked access. #171208 #173209.

  • Fixes generated sandbox skills cluttering your Git changes.

    More details

    #173560. Thanks to @shakkernerd.

  • Workshop now keeps your original files if both restore and rollback fail.

    More details

    #173954.

  • Fixes one folder with unreadable ignore rules stopping other skills from loading. That folder is skipped and the rest load normally.

    More details

    #176681 7911396d.

Native Apps

  • The Mac app now tells you how to update when its bundled worker isn’t compatible.

    More details

    #157948. Thanks to @pollybot13.

  • Fixes an iPhone Talk crash on the first reply, and improves quiet audio and spoken interruptions in relay conversations.

    More details

    #168416. Thanks to @masatohoshino, @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.

    More details

    #169912. Thanks to @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.

    More details

    #172117. Thanks to @colton-harris, @holgergruenhagen, @ylcn91.

  • Node-worker control errors now tell you why they failed.

    More details

    #174750 1a8dda1e. Thanks to @unknown7751.

  • Chats in the macOS, Linux, iOS, and Android apps can now pick up where they left off after reconnecting.

    More details

    This applies to recognized macOS, Linux, iOS, and Android app clients. #178657 bba7238a #171528. Thanks to @romneyda for integration, @jjjhenriksen for reconnect repairs, and @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.

    More details

    4114b2ba. Thanks to @romneyda.

  • Fixes a successful reply from a CLI-backed model being marked as failed during its final save.

    More details

    The reply has already succeeded when this database-save failure occurs. ff337085. Thanks to @romneyda.

  • Talk now recognizes provider names regardless of capitalization or extra spaces, and keeps the voice you selected.

    More details

    a4ce73f0. Thanks to @gideonpraise, @romneyda, @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.

    More details

    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 #164808 #170495. Thanks to @obviyus, @sunnyshu0925, @aleps001, @anyech, @belbix, @tre1d, @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.

    More details

    Device-code sign-in keeps its fifteen-minute polling window. Credential expiration still follows the actual date and time. #162828 #167619. Thanks to @fuller-stack-dev, @sunnyshu0925.

  • Older LM Studio context-limit errors now trigger the automatic compact-and-retry.

    More details

    #169189. Thanks to @xpeng5278-web.

  • Fixes parallel OpenAI Responses requests over HTTP losing the thinking level you selected.

    More details

    #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.

    More details

    The existing continuation checks the transcript and requires proof that every failed tool never started. It adds no retry allowance. #170615. Thanks to @akushonkamen, @fransqaas, @r3n3x.

  • Windows now waits for local-model shutdown helpers to finish before moving on.

    More details

    #171587. Thanks to @romneyda.

  • Managed Codex startup now keeps on-request approval and allows side questions.

    More details

    #172639. Thanks to @stevenlee-oai.

  • Fixes Claude CLI sometimes stalling at startup on Windows while handing over stored credentials.

    More details

    #174571 d401ad34. Thanks to @layne-11, @pandysp, @romneyda, @scalesmart.

  • Managed DeepSeek sessions through OpenRouter can now recover valid tool requests wrapped in provider markup. Incomplete requests are hidden, not run.

    More details

    Incomplete requests are hidden rather than executed. #175058 30cd17ff. Thanks to @linux2010, @zhimingq.

  • DeepInfra and OpenRouter speech requests now get up to 120 seconds by default instead of 30. Timeouts you set yourself still apply.

    More details

    Explicit timeout settings still apply. #175614.

  • Fixes incompatible reasoning settings on GMI Cloud GPT tool requests for GPT-5.6, GPT-5.5, and GPT-5.4 mini.

    More details

    This covers GPT-5.6, GPT-5.5, and GPT-5.4 mini. #176709 678a8960.

  • You can now find a Claude Code conversation by its exact session ID even when the normal search missed it.

    More details

    #176742 1f2b99a1. Thanks to @ceo633, @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.

    More details

    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 07b59a09. Thanks to @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.

    More details

    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 081fe025 #172705. Thanks to @romneyda and @vincentkoc for the backport.

  • Codex can now start answering after a context refresh while earlier background work is still finishing.

    More details

    This requires the same compatible persistent session settings. #178657 #177716. Thanks to @jjjhenriksen.

Automations and Scheduling

  • Local-model automations now alert you after two skipped runs instead of silently staying unavailable. Existing opt-outs still apply.

    More details

    The default alert is after two skips; existing opt-outs still apply. #169278. Thanks to @obviyus.

  • IMAP automations now move on to later mail when one message can’t be read. The unreadable message is kept. See IMAP automations.

    More details

    The unreadable message is preserved. #173231. Thanks to @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.

    More details

    An uncertain delivery result does not trigger a duplicate fallback alert. #173347. Thanks to @winoren.

  • A targeted heartbeat now delivers its queued background-task result to the right conversation, even when regular heartbeats are off. See system commands.

    More details

    With isolated heartbeats, the selected event is read once; unrelated sessions’ queued events stay untouched. #175642. Thanks to @seriouslysean, @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.

    More details

    The conflict is rejected before the command runs. #176997 fbde9773. Thanks to @etzelm.

  • To clear a scheduled job’s pinned Gateway target, an operator can run openclaw cron edit <id> --tools exec. This replaces the whole tool list, so include every tool the job still needs. See scheduled-command target recovery.

    More details

    This is the documented remedy for changing the captured target restriction. Current command-execution policy and approval requirements still apply. #176997. Thanks to @etzelm.

  • New scheduled follow-ups can now continue work you already approved in the same conversation. Recreate existing jobs to get this behavior.

    More details

    A one-time follow-up can schedule its next check through the same job. #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.

    More details

    #169392. Thanks to @holgergruenhagen, @obviyus.

  • Fixes fetched JSON changing the digits of long IDs and other large numbers.

    More details

    #170123. Thanks to @ly85206559, @obviyus.

  • Web search timeout errors now tell you the request’s actual time limit. See web tools.

    More details

    #170372. Thanks to @letsc4, @xiajiahang.

  • Setup now explains how to turn on Desktop access on the Gateway’s machine. An administrator still has to enable it.

    More details

    #178657 #177888. Thanks to @etzelm.

  • Linux camera discovery now reports an unreadable device folder as an error instead of saying you have no cameras.

    More details

    #174424.

Plugins and Integrations

  • Fixes cancelling Codex startup leaving a stuck place in the queue that blocked the next attempt.

    More details

    The next attempt still waits for the old client process to exit. #168347. Thanks to @romneyda.

  • Fixes clock changes cutting short or stretching Codex connection waits and Crabbox and Azure retry and cleanup waits.

    More details

    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 #168771 #165889. Thanks to @obviyus, @sunnyshu0925, @fuller-stack-dev.

  • Fixes an invalid plugin message replacement wiping the original message. The original is kept and an error is reported.

    More details

    #161098. Thanks to @aniruddhaadak80, @obviyus, @xydigitlybnnnn.

  • Eligible ACP coding sessions now resume once after a Gateway restart. Finished sessions start fresh.

    More details

    Recovery requires the same session identity, command, working directory, and backend. Completed sessions start fresh. #166368. Thanks to @alkor2000, @jhgaylor, @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.

    More details

    Distinct data and useful recovery guidance remain available, with the existing result-size limits. #169180. Thanks to @jipeng6036-del, @xilopaint.

  • Logbook now tells you when a missing model is blocking queued work.

    More details

    #170608. Thanks to @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.

    More details

    Existing review blockers still apply. #171414. Thanks to @asikorskiy, @ericcurtin, @obviyus.

  • MCP sign-in errors now give a safe reason and tell you how to sign in or fix your credentials. See MCP tools.

    More details

    #172331. Thanks to @rclarke0.

  • Plugins now warn you when a CLI provider binding is missing. Using the CLI on its own still works. See CLI backend plugins.

    More details

    Standalone CLI use remains valid. #173000. Thanks to @xtimor.

  • When some plugins or channels fail to load, you now see the failures, and the alternatives that did load keep working.

    More details

    #174299 0e20b219 #177252 1acaee64.

  • Plugin removal now postpones cleanup instead of deleting files when it can’t read the marker that protects them.

    More details

    #175289 e579f092.

  • 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.

    More details

    Check the receiver node's connection and retry. #175532 42be4a44.

  • OpenShell now keeps your local and remote workspace views when a read fails.

    More details

    #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.

    More details

    #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.

    More details

    #176876 73b902dc #176879 bf5e4f04. Thanks to @zoowh.

  • 1Password errors when reading secrets now include useful details, with sensitive values removed.

    More details

    #177060 4d08d922. Thanks to @gisk0.

  • Finished Codex helpers now retry cleaning up leftover status subscriptions after a temporary failure.

    More details

    Active follow-ups keep their subscriptions. #173547. Thanks to @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.

    More details

    Source builds use pnpm 12.15.0. #179992. Thanks to @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.

    More details

    #165019. Thanks to @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.

    More details

    This prevents inappropriate legacy-data migration and warnings for the wrong profile. Preserve the original directory. #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.

    More details

    #172270.

  • Camera-list tables now strip terminal control characters from camera names, positions, and IDs. Raw JSON output is unchanged.

    More details

    Raw JSON output is unchanged. #175624. Thanks to @obviyus, @sunnyshu0925.

  • Fixes Incognito history search results including an extra internal field.

    More details

    This restores the existing search response format. 352f64f2.

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.

    More details

    This covers bounded waits, notification-capture failures, and polling after clock changes. An invalid wait request keeps the original command available. #128886 #169645 #171570 #173241. Thanks to @benprotzekmuntoni, @potterdigital, @sashankh, @shad0wca7, @vacinc, @davidcittadini, @obviyus, @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.

    More details

    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. Thanks to @playhard94, @sxh313.

  • Fixes finished or stopped helper work coming back after a restart with phantom reminders.

    More details

    This includes failed result delivery, stopped parents, and watched results from shared helpers. #155019 #169453 #169489. Thanks to @assimetria-ai, @ifyouhavethisemail-afk, @itanyplus, @jerryliang122, @linhongyu510, @obviyus, @rozenpl, @waynegault, @freeqaz-openai.

  • /new and /reset now keep your managed project checkout and working folder, so unfinished files are still there.

    More details

    Idle resets preserve this context too. Plain New Chat in Control UI still leaves the previous worktree through normal cleanup. #160549. Thanks to @vincentkoc.

  • Fixes the assistant missing a background command’s result after you changed settings. See command execution.

    More details

    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. Thanks to @oldrich333, @romneyda, @wangmiao0668000666.

  • Shell completion now finds global flags after subcommands. Regenerate your saved completions with openclaw completion --write-state.

    More details

    #171571. Thanks to @obviyus, @zhangguiping-xydt.

  • Fixes paged file reads dropping blank lines.

    More details

    #173835.

  • When command output is shortened, the end of it, where the error usually is, is now kept.

    More details

    #174030. Thanks to @vincentkoc.

  • Invalid tool arguments are now labeled as failures instead of policy blocks. Real policy denials still show as blocked.

    More details

    Actual policy denials still appear as blocked. #176104. Thanks to @bgreezy, @yinx65588-boop.

  • /btw, /side, and /loop now keep multiline input. Loop names stay on one line.

    More details

    This covers /btw, /side, and /loop; loop names remain on one line. #176293. Thanks to @goutamadwant, @yetval.

  • Fixes an automatic retry repeating its continuation instruction after a conversation was compacted.

    More details

    236b0c1d.

Other Bug Fixes

  • Fixes a successful database save looking like it failed when writing its warning failed.

    More details

    If the database save itself fails, its original error is preserved. #157151. Thanks to @vincentkoc.

  • Fixes request, remote-worker, and file-transfer waits ending early or running over after clock changes.

    More details

    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 #171977 #172256 #172780 #173142. Thanks to @obviyus, @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.

    More details

    Enable it with agents.defaults.compaction.midTurnPrecheck.enabled=true; it remains off by default. #172019. Thanks to @mirasrael, @obviyus.

  • Tool calls that time out now stay clearly marked as blocked, and their completed results and attachments are kept.

    More details

    #172983. Thanks to @budzation.

  • DNS tools no longer change zones they can’t read.

    More details

    #174424 188a7983.

  • Fixes very large file edits crashing with a too-many-arguments error.

    More details

    #174477 4a9f9022.

  • Fixes an optional diagnostic file failing to write ending the whole session. You now get a single warning.

    More details

    #174622 6c759cbc. Thanks to @aniruddhaadak80, @jamie8johnson.

  • API clients can now get a saved session’s available commands without waiting for model information they didn’t ask for.

    More details

    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. Thanks to @vincentkoc.

  • Fixes playback-cache errors leading to extra cache entries being deleted. Repair the filesystem problem before retrying cache maintenance.

    More details

    A new rendition may remain after an error. Repair the filesystem problem before retrying cache maintenance. #175634.

  • Cloning a managed project no longer overwrites an existing folder it can’t inspect. It only clones when the folder doesn’t exist.

    More details

    Cloning proceeds only when the destination is missing. #175952.

  • Fixes service commands reporting they were ready when their startup input couldn’t be prepared. You now get a startup error.

    More details

    #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.

    More details

    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 #176603 56827d40. Thanks to @hannnnn-l.

  • Fixes the process tool reporting success when writing input to a terminal process actually failed.

    More details

    #176362.

  • openclaw gateway suspend --json now always prints valid JSON, even when the Gateway is busy.

    More details

    It returns one JSON object and exits with status 1 in that case. #176795 77dab748 #178657. Thanks to @vincentkoc.

  • Fixes the first native-worker turn failing before the model started. It now waits for its session to attach.

    More details

    #177184 dfa84465.

Was this useful?