## 2026.10.3 ### Highlights - Updates that were stuck behind lost leases, completed-but-unrecognized receipts, or legacy 2026.9.8 activation records now recover and finish instead of refusing every retry. (#168388, #169038, #169027, #170195, #170170) Thanks @k94118, @mkdelta221, @waynegault, @chedong, and @Warhangel. - Windows, macOS, and pnpm updates no longer leave the Gateway stopped or roll back: machine-qualified task accounts, short-name install paths, Doctor ancestry re-checks, protected Bun service commands, and pnpm 12 launchers all keep working. (#169481, #169292, #169563, #170006, #170003, #170131) Thanks @RomneyDa, @jokerman1302-eng, @xilopaint, and @k-sekula. - Doctor no longer destroys data during repair: unreadable legacy auth keeps OAuth profiles, malformed UTF-8 memory files stay byte-exact, and blocked plugins keep their enabled state. (#170256, #169029, #168111) Thanks @Yolo521-bot, @wangmiao0668000666, and @obviyus. - The "On this Mac" first run on a fresh Mac authenticates the app-hosted Gateway instead of failing with "Gateway rejected auth", and the Mac app reconnects after a trusted certificate renewal. (#169403, #168151) - Chat-requested updates and plugin upgrades no longer roll back during Doctor cleanup, and stale Codex runtimes no longer break turns after an update. (#170218, #170306, #170339) Thanks @RomneyDa, @hannesrudolph, and @ezimerman. - Agent turns are more reliable: the next turn after native compaction, ChatGPT WebSocket closes mid-stream, switching back to OpenAI without the Codex plugin, and Codex follow-ups after failed thread preparation all succeed. (#169583, #167512, #169412, #169431) Thanks @obviyus, @ericcurtin, @mightyx, @jjjhenriksen, and @RomneyDa. ### Changes - Meta: Muse Wonder is available as a model. (#170232) Thanks @RomneyDa. - MiniMax: M3.1 models honor the selected thinking effort level, and OAuth sign-ins refresh expired tokens at the issuing regional endpoint instead of failing about two hours after login. (#160089, #160459) Thanks @NianJiuZst, @php737, @masatohoshino, and @rongtianhua. ### Fixes - Doctor: keep canonical OAuth profiles when the legacy auth store is unreadable or malformed instead of deleting them. (#170256) Thanks @Yolo521-bot. - Doctor: never rewrite root memory files with replacement characters, and reject malformed UTF-8 before `path set` writes an edited file. (#169029, #168491) Thanks @wangmiao0668000666 and @Takhoffman. - Doctor: preserve installed plugins when path-safety checks block them instead of stripping their `enabled` flag when run as root. (#168111) Thanks @obviyus. - Doctor: include Canvas and Memory Core files in recovery copies, keep captures stable while workers stay open, honor Windows permissions for SQLite recovery snapshots, and stop spurious backups for unchanged one-shot cron jobs. (#169436, #169516, #170022, #169397, #168938) Thanks @RomneyDa, @harshitgupta31415, and @WG-Mojo. - Updates: recover blocked updates after receipt identity drift, lost handoff leases, legacy package metadata drift, and FreeBSD package recovery refusals. (#168388, #169038, #169027, #168775) Thanks @k94118, @mkdelta221, @waynegault, and @chedong. - Updates: older updaters no longer refuse candidates over bookkeeping-only config changes, and npm recovery reclaims retained runtimes that blocked it. (#170195, #170170) Thanks @Warhangel. - Updates: keep the real failure when git-update cleanup reporting is unavailable, route migrated-no-rollback failures to `openclaw update repair`, and stop reporting successful handoffs as failures. (#169454, #168993) Thanks @sayitfast and @RomneyDa. - Updates: clear repaired migration warnings, tolerate clock jumps during verification, and name the database and reason in capture and config-read warnings. (#169004, #169282, #169284) Thanks @WG-Mojo and @DonnieFi. - Updates: preserve the service heap limit in update processes, stop copying unrelated parent dependencies, and keep npm-global updates from retaining unrelated global packages. (#168889, #168927, #169551) Thanks @bluet, @RomneyDa, and @holgergruenhagen. - Updates: ride out briefly locked state databases, keep update-history writes from stalling Gateway cron and cleanup, and prevent false ownership loss during upgrades. (#168210, #169283, #169915) Thanks @DonnieFi and @vincentkoc. - Updates: Doctor handles unreadable supervisors and child binding errors, clean service-install refusals stay out of native-authority recovery, and `openclaw update repair` no longer reports success when Doctor maintenance was skipped. (#169665, #169658, #167714) - Windows: recognize machine-qualified Scheduled Task accounts, keep updater workers on short-name or miscased install paths, and stop rollbacks from Doctor ancestry re-checks. (#169481, #169292, #169563) Thanks @RomneyDa. - macOS: unblock updates with protected Bun service commands, authenticate the app-hosted first run, and renew learned TLS pins on automatic reconnects. (#170006, #169403, #168151) Thanks @jokerman1302-eng. - pnpm: keep Gateway service commands on the durable install link and keep pnpm 12 launchers working after native updates. (#170003, #170131) Thanks @xilopaint and @k-sekula. - Plugins: preserve webhook listeners during deferred plugin upgrades, unblock repairs while data migrations are pending, and stop stale Codex runtimes breaking turns after updates. (#169035, #170339, #170306) Thanks @sirius1024 and @RomneyDa. - Plugins: catalog refreshes no longer retain duplicate native plugin graphs and recover their config after a failed native ESM refresh. (#169272, #169321) Thanks @obviyus and @RomneyDa. - Gateway: Claude CLI session tools keep working after the turn that started the MCP loopback ends, and channel tools no longer fail with stale caller authority after a config write restarts the account. (#165432, #159396) Thanks @Oldrich333, @Leit-motif, @ceckert, and @RomneyDa. - Gateway: node requests and events no longer fail with "pairing changed" after unrelated pairing activity or while another device's pairing is written. (#169486, #169575) - Gateway: restart cleanly when a stored cloud worker's machine is gone, preserve live sends during outbound queue recovery, and resume steered sessions after restart. (#168907, #169010, #170252) Thanks @RomneyDa. - Agents: prevent next-turn failures after native compaction without loading entire large transcripts. (#169583, #108851) Thanks @obviyus. - Models: switching back to an OpenAI model works when the Codex plugin is disabled, and model selections without an activatable harness are rejected. (#169412, #134837) Thanks @obviyus and @goslingmanagment. - OpenAI: turns no longer fail when the ChatGPT WebSocket closes with code 1000 mid-stream. (#167512) Thanks @ericcurtin, @obviyus, and @mightyx. - Codex: recover follow-up requests after failed thread preparation. (#169431) Thanks @jjjhenriksen and @RomneyDa. - Networking: guarded model requests fall back to IPv6 when IPv4 is unreachable, keeping SSRF validation. (#168973) Thanks @an2in and @georgenaz. - Copilot: honor reported context capacity when native limits are missing. (#156636) Thanks @saju01 and @RomneyDa. - Anthropic: guide Claude CLI to the registered OpenClaw tools. (#153032) Thanks @kiranvk-2011. - DeepSeek: recover `calls` markup instead of leaking tool payloads into replies. (#169728) Thanks @TOMUIV. - Release: first-hop update coverage admits sources by schema version, failed receipts recover without rerunning workloads, and upgrade diagnostics keep failing steps. (#169012, #168266, #165267, #169567, #169084, #168191, #165968, #164789, #168097) Thanks @RomneyDa and @shakkernerd. ### Complete contribution record This audited record covers the complete v2026.10.2..8dd1ada0a3c166b77c7b671847a1752200e7f2c1 history: 79 in-range PRs + 0 retained seed-only PRs = 79 unique PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact. #### Pull requests - **PR #170218** Thanks @RomneyDa and @hannesrudolph. - **PR #170306** Thanks @RomneyDa. - **PR #156636** Thanks @saju01. - **PR #153032** Thanks @kiranvk-2011. - **PR #160089** Related #160037. Thanks @NianJiuZst and @php737. - **PR #169403** - **PR #168151** - **PR #169728** Related #159665. Thanks @TOMUIV. - **PR #168889** Related #168729. Thanks @bluet. - **PR #168927** - **PR #169292** Thanks @RomneyDa. - **PR #169551** Related #169373. Thanks @RomneyDa and @holgergruenhagen. - **PR #169563** Thanks @RomneyDa. - **PR #169481** - **PR #170006** Related #169662. Thanks @jokerman1302-eng. - **PR #169283** Thanks @DonnieFi. - **PR #168210** - **PR #170003** Related #169059. Thanks @xilopaint. - **PR #170131** Related #169244. Thanks @k-sekula. - **PR #169431** Thanks @jjjhenriksen. - **PR #165432** Related #157126. Thanks @Oldrich333 and @Leit-motif. - **PR #159396** Thanks @ceckert. - **PR #169486** - **PR #169575** - **PR #169583** Thanks @obviyus. - **PR #108851** Thanks @obviyus. - **PR #168907** - **PR #168973** Related #87763. Thanks @an2in and @georgenaz. - **PR #168491** Thanks @wangmiao0668000666 and @Takhoffman. - **PR #169010** Thanks @RomneyDa. - **PR #169412** Thanks @obviyus. - **PR #134837** Related #134305. Thanks @obviyus and @goslingmanagment. - **PR #167512** Related #167345. Thanks @ericcurtin and @obviyus and @mightyx. - **PR #170252** - **PR #170339** Thanks @RomneyDa. - **PR #167356** Thanks @vincentkoc. - **PR #169012** Related #168257. Thanks @RomneyDa. - **PR #169268** Thanks @RomneyDa. - **PR #168266** Thanks @RomneyDa. - **PR #168926** - **PR #166092** Thanks @RomneyDa. - **PR #166118** Thanks @RomneyDa. - **PR #165267** Related #165264. Thanks @shakkernerd. - **PR #169567** Thanks @RomneyDa. - **PR #169084** Thanks @RomneyDa. - **PR #167344** Thanks @vincentkoc. - **PR #168191** Thanks @RomneyDa. - **PR #165968** Thanks @RomneyDa. - **PR #164789** Thanks @RomneyDa. - **PR #168097** Thanks @RomneyDa. - **PR #170256** Related #168959. Thanks @Yolo521-bot. - **PR #169436** Thanks @RomneyDa. - **PR #169516** Thanks @RomneyDa. - **PR #168938** Related #168838. Thanks @harshitgupta31415 and @WG-Mojo. - **PR #169029** Related #168567. Thanks @wangmiao0668000666. - **PR #168111** Related #168066. Thanks @obviyus. - **PR #169397** - **PR #169035** Related #168872. Thanks @sirius1024. - **PR #168388** Related #168092. Thanks @k94118. - **PR #169038** Related #167506, #167771. Thanks @mkdelta221 and @waynegault. - **PR #169027** Related #168856. Thanks @chedong. - **PR #169454** - **PR #169004** Related #168835. Thanks @WG-Mojo. - **PR #168993** Related #168870. Thanks @sayitfast. - **PR #169282** Related #169259. Thanks @DonnieFi. - **PR #169284** Related #169261. Thanks @DonnieFi. - **PR #170195** - **PR #170170** Related #169463. Thanks @Warhangel. - **PR #169915** Thanks @vincentkoc. - **PR #169658** - **PR #169665** - **PR #168775** - **PR #169272** Thanks @obviyus. - **PR #169321** Thanks @RomneyDa. - **PR #170022** - **PR #170232** Thanks @RomneyDa. - **PR #167714** - **PR #168264** Thanks @obviyus. - **PR #160459** Related #77467. Thanks @masatohoshino and @rongtianhua.