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 setwrites an edited file. (#169029, #168491) Thanks @wangmiao0668000666 and @Takhoffman. - Doctor: preserve installed plugins when path-safety checks block them instead of stripping their
enabledflag 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 repairno 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
callsmarkup 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..8dd1ada 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.
Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.10.3
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.10.3.tgz
- integrity:
sha512-ncl6LntMlf76K39LFhVrDXQTbaGNAG5j52f7PL5P8vIn0knWmCrvfAe9DHMslFq+47HeOWBH2CBYQH8zEb+UAA== - release SHA:
59cb44796b0f1f0daa0e37af8b1495abb45d9bc1 - full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.10.3/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/38400437628
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/38363208380
- full release validation: https://github.com/openclaw/openclaw/actions/runs/38362444278
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/38401383477
- plugin ClawHub submission: https://github.com/openclaw/openclaw/actions/runs/38401391115; public finalization and exact artifact verification follow terminal release-parent completion
- plugin ClawHub bootstrap: not needed
- OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/38403796506
- npm Telegram beta E2E: not supplied
- Android APK: skipped — apps/android/version.json is 2026.8.2, release train is 2026.10.3; run pnpm android:version:pin -- --from-gateway before the next tag.