OpenClaw Release Notes
202 release notes curated from 12 sources by the Releasebot Team. Last updated: Jul 6, 2026
- Jul 5, 2026
- Date parsed from source:Jul 5, 2026
- First seen by Releasebot:Jul 6, 2026
openclaw 2026.7.1-beta.2
OpenClaw releases a broad platform update with GPT-5.6 support, a new external harness attach flow, Telegram Codex pairing and steering, event-driven cron runs, refreshed native apps, richer messaging, safer scoped conversations, and major CLI, routing, and reliability improvements.
Highlights
Original source
OpenAI GPT-5.6 support: OpenClaw now recognizes the GPT-5.6 model family across catalog, capability, and runtime selection paths. (#98333) Thanks @steipete-oai.
External harness attachment: openclaw attach launches an external harness against an existing Gateway session, making interactive Codex-style workflows easier to resume and inspect. (#96454) Thanks @anagnorisis2peripeteia and @obviyus.
Telegram Codex workflows: Telegram can now start Codex pairing with /login, steer active Codex runs, and recover final replies across transient API failures. (#98006, #98126, #98786) Thanks @100yenadmin, @Kyzcreig, and @obviyus.
Event-driven cron runs: the new on-exit schedule kind wakes an agent when a watched command exits, while session-targeted runs can detach cleanly. (#92037, #98755) Thanks @anagnorisis2peripeteia, @obviyus, and @EthanSK.
Native app refresh: iOS adopts the iOS 26 visual system with clearer Chat, Talk, onboarding, and reconnect flows, while native app localization expands across Apple and Android surfaces. (#98452, #98736, #99243, #97110, #97111, #97112, #97113) Thanks @jcooley8 and @vincentkoc.
Richer messaging: iMessage gains native poll creation, reading, and voting, and built-in usage footers provide clearer per-turn accounting in chat. (#98421, #92657, #92877) Thanks @omarshahine, @lobster, and @Marvinthebored.
Safer scoped conversations: capability profiles prepare per-conversation tool and access boundaries without weakening the existing default profile. (#98536)
Mac local Gateway setup: the macOS app can now install and start its local Gateway automatically, reducing the manual setup needed before first use. (#99767)
Control UI navigation: a session-first sidebar, compact context meter, warm light theme, reasoning-effort slider, streamlined composer, and slash-command picker make active conversations and commands easier to reach. (#99289, #99426, #99838) Thanks @VicZhang6 and @Solvely-Colin.
Changes
ClawRouter routing and quotas: add the bundled ClawRouter provider plugin with credential-scoped dynamic model discovery, OpenAI-compatible and native Anthropic/Gemini transports, and managed budget reporting across OpenClaw usage surfaces. (#99658)
Model and provider coverage: add GPT-5.6 support, use Nemotron Super's 1M context window, and preserve explicit OpenRouter authentication headers. (#98333, #98726, #98187) Thanks @steipete-oai, @eleqtrizit, @sunlit-deng, and @laurencebrown.
CLI and node workflows: add openclaw attach, node context-path support, actionable device-approval recovery guidance, soft-resume CLI sessions when prompt metadata changes, and clearer plugin install exit diagnostics. (#96454, #97679, #98115, #98146, #98497, #99822) Thanks @anagnorisis2peripeteia, @obviyus, @wm0018, @welfo-beo, @RomneyDa, @Sanjays2402, and @vincentkoc.
Cron and usage: add exit-triggered schedules, detached session-targeted runs, an in-flight job doctor warning, and a built-in full usage footer. (#92037, #98755, #98620, #92657, #92877) Thanks @anagnorisis2peripeteia, @obviyus, @EthanSK, @masatohoshino, and @Marvinthebored.
Native apps and localization: modernize iOS presentation, Chat, Talk, onboarding, and reconnect flows; add Gateway speech providers; improve QR onboarding and protocol recovery; install the local Gateway from macOS; localize core Apple and Android surfaces; and add Swedish mobile localization. (#98452, #98736, #99243, #98376, #98302, #98385, #99767, #97110, #97111, #97112, #97113, #98043) Thanks @jcooley8, @Tony-ooo, @joelnishanth, @cursoragent, @joshavant, @vincentkoc, and @yeager.
Messaging capabilities: add native iMessage polls, Telegram Codex pairing and steering, Telegram multi-lane progress summaries, and Signal target aliases. (#98421, #98006, #98126, #98907, #95738) Thanks @omarshahine, @lobster, @100yenadmin, @Kyzcreig, @Marvinthebored, and @jesse-merhi.
Local inference and chat controls: auto-discover Ollama inference nodes, add Control UI session-first navigation, reasoning controls, and command picking, and keep OpenClaw control tools available when deferred tool search selects the wrong tool family. (#99234, #99289, #99426, #99838, #99561) Thanks @100yenadmin, @joshavant, @VicZhang6, and @Solvely-Colin.
Doctor and diagnostics: expose auth-profile, workspace, device-pairing, channel-plugin, memory-provider, systemd exhaustion, and Windows LAN firewall findings. (#97125, #97358, #97366, #97496, #97968, #98291, #98666) Thanks @giodl73-repo, @masatohoshino, and @joshavant.
Conversation and review controls: prepare scoped conversation capability profiles and add Cursor Agent as an autoreview engine. (#98536, #97348) Thanks @hxy91819.
Fixes
ClawRouter auth profiles: resolve credential-scoped catalog models during agent runs when the proxy key is stored in an auth profile, and document plugin and model allowlists.
Telegram durability: recover stalled ingress claims, retry restart-dropped media, survive transient polling errors, dead-letter poison updates, preserve forwarded rich text, route plugin callbacks correctly, keep progress updates in one stable multi-line window, throttle reconnect queue drains so fast healthy polls cannot starve active replies, and fall back safely when Telegram rejects rich final replies. (#97118, #98102, #98735, #98775, #98776, #97174, #98907, #98786) Thanks @vincentkoc, @luoyanglang, @DaveArcher18, @obviyus, @goldmar, @Marvinthebored, and @shakkernerd.
Agent and context reliability: preserve runtime overrides, steered subagent tasks, fallback tool-call hints, and legacy reseed attachments; soft-resume CLI sessions across prompt-only drift; honor stop signals that arrive during eager session-lock acquisition before any provider prompt starts; improve harness-aware context estimation and compaction prechecks; time out silent local streams; recover mid-stream failures; and cap Gateway run-cache growth. (#92237, #77539, #99851, #99839, #99822, #97928, #97861, #98525, #95430, #77973) Thanks @sercada, @amittell, @obviyus, @liuhao1024, @yetval, @osolmaz, @lzyyzznl, @vincentkoc, @alexelgier, and @fede-kamel.
Provider and network safety: bound oversized or malformed responses across Moonshot, MiniMax, Anthropic OAuth, Discord, Matrix, SMS, browser, update, embeddings, Tlön, and Inworld paths. (#96502, #96322, #96644, #97693, #97662, #97999, #98455, #98508, #98554, #98496, #98660) Thanks @hugenshen, @cursoragent, @lsr911, @solodmd, @Alix-007, @wings1029, @lzyyzznl, @sunlit-deng, @vincentkoc, and @Pandah97.
Channel delivery and routing: keep Slack replies in the active thread, preserve account-bound delivery routes, apply response prefixes, suppress internal traces and unwanted fallback replies, and retain WeChat session routing for opaque account ids. (#97168, #98240, #89949, #93639, #97989, #80928, #93686) Thanks @LiuwqGit, @gorkem2020, @yetval, @wangwllu, @ZengWen-DT, @alexuser, @UnClouded77, @zhangguiping-xydt, @htkillermax-gif, and @vincentkoc.
Cron correctness: preserve provider and model selections on timeouts, retain startup catch-up deferrals, keep action-required output, clear blank thinking overrides, and preserve provider-owned daily-reset sessions. (#95943, #94022, #93810, #96393, #96293, #98356) Thanks @ZengWen-DT, @cursoragent, @luke-renjoy, @RichChen01, @vincentkoc, @yetval, @snowzlmbot, @nz365guy, and @takamasa-aiso.
Memory and session recovery: detect unindexed transcripts, preserve notes through transient reads, avoid cross-directory resumes, disambiguate reserved wiki index pages, and skip empty QMD sync work. (#97857, #98360, #97785, #94326, #90030) Thanks @zw-xysk, @CHE10X, @qingminglong, @yetval, @vincentkoc, @sahibzada-allahyar, and @ruben2000de.
Windows and execution: bind allowlisted execution to the validated Windows path, propagate PATHEXT, normalize inbound paths case-insensitively, and prevent cleanup crashes on Windows. (#98260, #98093, #97630, #97901) Thanks @eleqtrizit, @wendy-chsy, @VectorPeak, and @paulcam206.
Mobile and UI stability: preserve iOS chat line breaks and final replies, improve Android pairing and TLS recovery, hide expired pairing cards, keep workspace file rails scrollable, restore copy-path over plain HTTP, and stop rubber-band scrolling in the Mac app Control UI. (#98304, #98117, #98366, #98439, #98483, #98049, #98646, #98611, #98764, #99830) Thanks @joshavant, @Jabato01, @ooiuuii, @wuqxuan, @645648406-max, @zw-xysk, @ZengWen-DT, and @adinballew.
Codex and approval flows: report ChatGPT authentication correctly, rename destructive approval mode to ask, classify dynamic goal and session tool results accurately, and derive terminal-idle timeouts from the explicit run deadline. (#91240, #98501, #98659, #96856, #85296) Thanks @849261680, @ukstem, @kevinslin, @yetval, @nxmxbbd, @alkor2000, and @vincentkoc.
Configuration and plugin health: restrict config traversal to owned properties, preserve config-health recovery state, surface unloadable channel plugins, preserve defaulted provider base URLs during patches, validate bundled plugin updates by manifest contract, prefer installed launcher targets when resolving package roots so bundled channel setup entries load from nested installs, resolve public artifacts from installed plugin roots, and retain legacy ClawHub families where required. (#99846, #99728, #96397, #98396, #98010, #98819, #98249) Thanks @vincentkoc, @zenglingbiao, @joshavant, @jalehman, @ccbridle, @849261680, @momothemage, @weltmaister, @LiLan0125, @herove, @amknight, @KelTech-Services, and @Patrick-Erichsen.
Runtime process safety: prevent unhandled child-stream errors in SSH tunnels, supervisors, and MCP stdio transports; keep auto-replies from waiting on transcript mirroring; and avoid splitting Unicode characters in approval previews and LINE outbound fields. (#99800, #99802, #99803, #99549, #99566, #98994) Thanks @cxbAsDev, @vincentkoc, @Shagrat2, @mikasa0818, and @LEXES7.
Node runtime compatibility: installers, the CLI launcher, doctor, and the macOS app now reject incompatible Node 23 runtimes and guide users toward supported Node 22 or 24 releases. (#99832) Thanks @vincentkoc and @fuller-stack-dev.
QQBot media delivery: scope sandbox-generated media sends to the active session's workspace so /workspace/... and relative generated-file paths resolve safely across QQBot media tags, structured payloads, and streaming delivery. (#92872) Thanks @zhangguiping-xydt and @sliverp.
Complete contribution record
This audited record covers the complete 66e676d..1e20f15 history: 455 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #96502 fix(moonshot): bound video description JSON response reads. Thanks @hugenshen and @cursoragent.
PR #98249 Preserve legacy ClawHub family for selected plugins. Thanks @Patrick-Erichsen.
PR #93767 fix(reasoning-tags): strip MiniMax mm: namespaced reasoning tags. Thanks @DrHack1.
PR #93820 fix(imessage): recognize MiniMax mm: reasoning tags in reflection guard (completes #93767). Thanks @Alix-007.
PR #94096 fix(usage): reject inverted startDate-endDate range in usage.cost and sessions.usage. Thanks @Alix-007.
PR #97125 Doctor: expose auth profile findings. Thanks @giodl73-repo.
PR #98256 fix(mcp): require owner for Claude permission replies. Thanks @eleqtrizit.
PR #98142 fix(cli): stop pairing list crashing with empty channel enum. Thanks @RomneyDa.
PR #98260 fix(exec): bind Windows allowlist execution path. Thanks @eleqtrizit.
PR #97118 fix(telegram): recover stalled ingress spool claims. Thanks @vincentkoc.
PR #97168 fix(slack): prefer current thread session for inherited outbound replies. Related #96535. Thanks @LiuwqGit and @gorkem2020.
PR #97769 fix(plugins): apply output text transforms to toolcall_delta and toolcall_end events. Related #97761. Thanks @ZOOWH and @get-viti.
PR #96544 fix(doctor): merge colliding model-ref map keys instead of dropping. Thanks @yetval and @vincentkoc.
PR #97177 fix(memory-wiki): gracefully handle unparsable YAML frontmatter in vault scans (#96125). Thanks @SunnyShu0925 and @cow11023.
PR #97167 fix #96840: [Bug]: Targetless message.send fails with 'Action send requires a target' in WebChat despite docs stating source-reply sink should handle it. Thanks @zhangguiping-xydt and @MantisCartography.
PR #98302 fix(ios): advance onboarding step after QR scan. Related #98297. Thanks @joelnishanth and @cursoragent.
PR #96644 fix(anthropic-oauth): bound OAuth token endpoint response reads. Thanks @solodmd.
PR #96397 fix: warn when configured channel plugins cannot load. Thanks @849261680.
PR #96359 test: migrate src/commands tests to shared temp dir helpers. Thanks @xialonglee.
PR #96293 fix(cron): clear agentTurn thinking override by blanking the field. Related #96287. Thanks @ZengWen-DT and @takamasa-aiso.
PR #96058 test: prefer shared temp dir helpers in auto-reply and install-fallback tests. Thanks @xialonglee.
PR #87298 test: add temp directory helper guidance. Thanks @hxy91819.
PR #97785 fix(sessions): avoid cross-cwd recent resumes. Related #96542. Thanks @qingminglong and @yetval.
PR #97698 fix(pdf): reject empty parsed page ranges before native analysis. Thanks @zhangguiping-xydt.
PR #97693 fix(discord): bound requestDiscord happy-path response reads to prevent OOM. Thanks @Alix-007.
PR #97683 fix(irc): guard surrogate-range codepoints in \u literal-escape decoder. Thanks @llagy009.
PR #96938 fix(utils): keep reply directive ids unicode-safe. Thanks @ly-wang19.
PR #97857 fix(memory): detect unindexed session transcripts in status mode (fixes #97814). Thanks @zw-xysk and @CHE10X.
PR #98094 fix(android): clarify gateway auth recovery states. Thanks @qingminglong.
PR #98205 test(gateway): add unit tests for node wake state tracking and testing seam. Thanks @zenglingbiao.
PR #98115 fix: surface node approval guidance from devices CLI. Thanks @welfo-beo.
PR #97898 docs: clarify source checkout Node floor. Related #97792. Thanks @lin-hongkuan and @aniruddhaadak80.
PR #94526 test(telegram): add regression test for forum topic message_thread_id with streamed reasoning. Related #89352. Thanks @xialonglee and @pmika.
PR #98145 fix(device-pairing): don't churn requestId on subset re-requests. Thanks @RomneyDa.
PR #98267 fix(system-prompt): move exec-approval + Authorized Senders below cache boundary. Related #98261. Thanks @headbouyJB.
PR #98304 fix: preserve iOS chat line breaks. Related #98028. Thanks @joshavant and @Jabato01.
PR #98187 fix(openrouter): send explicit auth headers. Related #97934. Thanks @sunlit-deng and @laurencebrown.
PR #95708 fix: show WebChat preamble progress during tool activity. Thanks @ragesaq.
PR #98210 fix(gateway): iOS Talk treats SecretRef-backed API keys as missing. Related #98209. Thanks @ooiuuii.
PR #98009 test(infra): add unit tests for SQLite number normalization. Thanks @dwc1997.
PR #98087 test(config): add unit tests for resolveExecCommandHighlighting. Thanks @solodmd.
PR #98219 test(utils): add unit tests for chunkItems. Thanks @zenglingbiao.
PR #98093 fix(core): propagate caller env PATHEXT through isExecutableFile on Windows. Thanks @wendy-chsy.
PR #97973 fix(matrix): guard JSON.parse against malformed homeserver response bodies. Thanks @lsr911.
PR #97999 fix(sms): guard Twilio JSON.parse against malformed API response bodies. Thanks @lsr911.
PR #98043 Add Swedish mobile app localization. Thanks @yeager.
PR #98144 fix(tui): correct disconnect copy for device scope upgrades. Thanks @RomneyDa.
PR #98240 fix(agents): keep merged delivery routes account-bound. Thanks @yetval.
PR #89949 fix(media): pin requester delivery route when task starts. Thanks @wangwllu.
PR #98226 Redact bare Fireworks API keys. Related #98225. Thanks @ooiuuii.
PR #98319 docs: publish release notes for v2026.6.11. Thanks @hannesrudolph.
PR #98257 fix: show in-progress status for channel runs. Thanks @scotthuang.
PR #97931 fix(gateway): keep provider-owned CLI sessions across the daily default reset. Thanks @yetval.
PR #98325 docs: refresh docs map for v2026.6.11. Thanks @hannesrudolph.
PR #97929 fix(auto-reply): stop level directives from eating the next message word. Thanks @yetval.
PR #97928 fix(agents): estimate harness role sizes in context guard char estimator (fixes #97927). Thanks @liuhao1024 and @yetval.
PR #97861 fix(compaction): count bashExecution and summary turns in pre-prompt overflow precheck. Thanks @yetval.
PR #97137 doctor: add memory search lint findings. Thanks @giodl73-repo.
PR #97358 Doctor: expose workspace status findings. Thanks @giodl73-repo.
PR #95622 test(qa-lab): harden whatsapp qa scenarios. Thanks @mcaxtr.
PR #98346 fix: prevent skill-creator from bypassing workshop proposals. Related #96054. Thanks @momothemage and @xianshishan.
PR #98169 fix(heartbeat): scope commitment fan-out prompts. Thanks @bdjben.
PR #97366 Doctor: expose device pairing findings. Thanks @giodl73-repo.
PR #98366 fix: Android TLS fingerprint verification times out on slow handshakes. Related #98365. Thanks @joshavant.
PR #98353 fix(ios): open app on Chat by default. Thanks @BsnizND.
PR #98352 fix(security): warn on agent skill MCP boundary drift. Thanks @momothemage.
PR #98347 fix: retry image describe fallback models. Thanks @momothemage.
PR #98117 fix(ios): avoid transient duplicate final replies. Related #98116. Thanks @ooiuuii and @joshavant.
PR #98293 fix(gateway): emit stale exec approval followup diagnostics. Thanks @BsnizND.
PR #98376 fix(ios): use Gateway speech providers in Talk. Related #98153. Thanks @Tony-ooo.
PR #66685 Suppress expired exec approval followup warnings. Thanks @pfrederiksen.
PR #98385 fix: show actionable mobile protocol mismatch recovery. Related #98384. Thanks @joshavant.
PR #98146 fix(cli): explain how to recover from device approve deadlock. Thanks @RomneyDa.
PR #98423 improve(ios): clarify Control and Talk visual hierarchy. Related #98397.
PR #98217 fix(doctor): recover legacy cron archive across devices. Thanks @masatohoshino.
PR #98333 feat(openai): add GPT-5.6 series support. Related #98296. Thanks @steipete-oai.
PR #96393 fix(cron): preserve action-required command output. Related #96346. Thanks @snowzlmbot and @nz365guy.
PR #98429 fix(ios): classify TLS fingerprint timeouts. Thanks @joshavant.
PR #98439 fix: Android setup codes accept local mDNS gateway hosts. Thanks @joshavant.
PR #98443 fix(ios): improve light and dark appearance contrast. Related #98440.
PR #97742 fix(llm): preserve structured tool result text across providers. Thanks @snowzlmbot.
PR #97968 fix(status): surface unregistered memory embedding providers. Thanks @masatohoshino.
PR #92237 fix(agents): preserve runtime settings overrides [AI-assisted]. Thanks @sercada.
PR #95888 fix(active-memory): caveat mutable ops facts; mark truncated recall as incomplete. Thanks @spencer2211.
PR #98291 fix(gateway): surface systemd start-limit exhaustion. Thanks @masatohoshino.
PR #90517 fix(gateway): hint missing external plugin for web login. Related #83277. Thanks @TUARAN and @carol-iung.
PR #98369 test(infra): add unit tests for SQLite user_version pragma helper. Thanks @dwc1997.
PR #98340 fix: extension api.exec leaves child processes after timeout. Related #98335. Thanks @ooiuuii.
PR #92063 fix(ui): collapse duplicate assistant groups during segmented streaming. Related #63956. Thanks @harjothkhara and @contentfree.
PR #98354 fix(infra): guard delivery queue inflate against corrupted entry_json. Thanks @Pick-cat.
PR #90566 fix(agents): warn on cron announce skip. Related #68561. Thanks @sahibzada-allahyar and @Mibslee.
PR #98371 fix(ports): validate lsof PID parsing before assignment. Thanks @lzyyzznl.
PR #98356 fix(cron): keep provider-owned CLI sessions across the daily default reset. Thanks @yetval.
PR #98395 test(shared): add unit tests for account enabled guard. Thanks @dwc1997.
PR #98411 fix(agents): recover thinking errors from provider body. Related #98308. Thanks @sunlit-deng and @clearhorizoninvestments.
PR #98494 docs(skills): support variable landable sweep batches. Thanks @vincentkoc.
PR #91240 fix: report Codex ChatGPT status auth. Related #91099. Thanks @849261680 and @ukstem.
PR #98370 test(agents): add unit tests for thinking block detection. Thanks @dwc1997.
PR #96711 test: prefer shared temp dir helpers in config, gateway, cron, crestodian, and state tests. Thanks @xialonglee.
PR #98483 fix: Android QR scan starts gateway pairing. Thanks @joshavant.
PR #95230 fix docs-list-mdx-pages. Thanks @hugenshen.
PR #96322 fix(minimax): bound JSON response reads to prevent OOM. Thanks @lsr911.
PR #95348 fix config-chmod-warning. Thanks @hugenshen and @cursoragent.
PR #95229 fix(copilot): guard against undefined runtime.state during cli-metadata registration. Related #94516. Thanks @sunlit-deng and @cuihaijun.
PR #94636 fix(memory): skip raw snippets during promotion. Thanks @tayoun.
PR #94013 [AI] fix(feishu): guard partial channelRuntime in monitor startup. Thanks @xydt-tanshanshan.
PR #93466 [AI] fix(feishu): guard against missing inbound in channelRuntime fallback. Thanks @xydt-tanshanshan.
PR #98049 fix: hide expired pairing QR cards in Control UI. Related #98039. Thanks @ooiuuii.
PR #96094 fix(memory): prove live manager recovery after CLI reindex. Related #91167. Thanks @849261680 and @kiagentkronos-cell.
PR #98482 fix: advertise route-aware LAN Control UI links. Thanks @joshavant.
PR #71537 Recover archived (.reset) session transcripts in memory hook + session-logs skill. Thanks @injinj.
PR #96375 docs(config-agents): correct built-in alias table for opus and gpt. Thanks @niks999.
PR #98453 docs(gateway): fix Telegram streaming default in config-channels.md. Thanks @solodmd.
PR #98533 fix: repair hosted CI baseline assertions.
PR #98421 feat(imessage): native poll support — create, read, vote. Thanks @omarshahine and @lobster.
PR #98318 docs(matrix): document missing streaming.progress mode, progress sub-fields, and mentionPatterns config. Thanks @wm0018 and @vincentkoc.
PR #97753 docs(onboard): document 11 missing non-interactive CLI flags. Thanks @wm0018 and @vincentkoc.
PR #97851 fix(mattermost): bound null-body error response reads. Thanks @Pick-cat.
PR #98360 fix(memory-wiki): preserve notes after transient page reads. Related #98345. Thanks @qingminglong and @vincentkoc and @yetval.
PR #98551 test: fix stale core test type failures. Thanks @RomneyDa.
PR #98455 fix(browser): bound error body read in fetchHttpJson to prevent OOM. Thanks @wings1029.
PR #95906 fix(code-mode): surface QuickJS error name and message to the model. Thanks @ZengWen-DT and @vincentkoc.
PR #97901 fix(agents): stop copilot autoreview cleanup crash on Windows. Thanks @paulcam206.
PR #97923 fix(slack): truncate served arg-menu option labels on a surrogate boundary. Thanks @LEXES7.
PR #98010 fix(update): validate bundle plugin payloads by manifest contract. Related #97985. Thanks @LiLan0125 and @herove.
PR #85296 fix(codex): derive terminal-idle watchdog from explicit run timeout. Thanks @alkor2000 and @vincentkoc.
PR #97110 feat(i18n): add native app locale inventory. Thanks @vincentkoc.
PR #98396 fix: allow config.patch with defaulted provider baseUrl. Related #98270. Thanks @momothemage and @weltmaister.
PR #98503 fix(usage-bar): use Object.hasOwn instead of in operator to avoid prototype chain pollution. Related #98466. Thanks @chenyangjun-xy and @zhangLei99586.
PR #97111 feat(android): localize core gateway surfaces. Thanks @vincentkoc.
PR #97630 fix(media): normalize Windows inbound paths case-insensitively. Thanks @VectorPeak.
PR #82638 fix(agents): skip implicit provider discovery when models.mode is 'replace' [AI-assisted]. Related #66957. Thanks @eldar702 and @wangzhengshu.
PR #87917 fix sessions json lineage metadata. Related #80286. Thanks @zhangguiping-xydt and @islandpreneur007.
PR #93639 fix(message-tool): apply messages.responsePrefix to outbound sends. Thanks @ZengWen-DT.
PR #94440 fix: #94432 classify Cloudflare challenge 403 as upstream_html instead of auth_html. Thanks @lzyyzznl and @pbm9z95m6z-hue.
PR #98119 fix: reduce Docker build memory pressure. Related #98118. Thanks @zyzo.
PR #97679 feat(node): add --context-path flag to node run/install for reverse-p…. Related #97678. Thanks @wm0018.
PR #98339 fix(irc): classify host-less nick!user allowlist entries as mutable. Thanks @yetval.
PR #97662 fix(matrix): bound raw transport response reads to prevent OOM. Thanks @Alix-007.
PR #98137 fix: hoist timer declaration to avoid TDZ ReferenceError in abortable delay. Thanks @zhangLei99586.
PR #98134 fix: clear timeout timer in Tailscale binary probe Promise.race. Thanks @zhangLei99586.
PR #97989 fix(sms): stop internal tool-trace banners from reaching SMS replies. Thanks @ZengWen-DT.
PR #97972 fix(browser): CDP auth fails with percent-encoded credentials. Thanks @VectorPeak.
PR #98063 fix(reply): suppress tool-error progress delivery when messages.suppressToolErrors is set. Thanks @moeedahmed and @amittell.
PR #94964 fix(reload): cancel deferred channel reload on in-process restart. Related #79487. Thanks @lzyyzznl and @tseller.
PR #98598 fix: restore main lint after timer repairs. Related #98462, #98464. Thanks @zhangLei99586.
PR #98587 fix(slack): guard relay WebSocket frame JSON.parse against malformed input. Thanks @lsr911 and @vincentkoc.
PR #90030 fix(memory-core): skip qmd zero-hit search sync. Related #90023. Thanks @sahibzada-allahyar and @ruben2000de.
PR #98493 fix(transcripts): close readline interface and destroy read stream on error exit. Related #98467. Thanks @wangmiao0668000666 and @zhangLei99586.
PR #98497 fix(cli): show exit code when plugin npm install returns empty output. Thanks @Sanjays2402 and @vincentkoc.
PR #97112 feat(apple): localize core native app surfaces. Thanks @vincentkoc.
PR #98610 fix: restore tooling CI after transcript test addition.
PR #77539 fix(subagent): preserve steered task text on restart redispatch. Thanks @amittell.
PR #97113 feat(i18n): refresh all native locale artifacts. Thanks @vincentkoc.
PR #98620 feat(doctor): warn about in-flight cron jobs. Thanks @masatohoshino.
PR #98605 test(shared): add unit tests for human-readable list formatting. Thanks @dwc1997.
PR #97348 feat(autoreview): support cursor-agent engine. Thanks @hxy91819.
PR #95943 fix(cron): preserve provider/model on isolated-run timeout row. Related #95873. Thanks @ZengWen-DT and @cursoragent and @luke-renjoy.
PR #94149 fix(status): bound systemd service probes so status cannot hang on a wedged systemctl (#84698). Thanks @ZengWen-DT and @cursoragent and @zus-assistant.
PR #88159 fix(cli): retry logs.tail after journal fallback in logs follow. Thanks @anyech and @vincentkoc.
PR #98508 fix(update-check): bound npm registry JSON response read to prevent OOM. Thanks @lzyyzznl.
PR #98496 fix(tlon): bound error response body reads to prevent OOM. Thanks @Pandah97.
PR #98554 fix(openai): bound embedding batch file downloads. Thanks @sunlit-deng and @vincentkoc.
PR #98652 fix: stop invalid message timeouts from stalling.
PR #77973 fix(gateway): cap agentRunCache to prevent unbounded growth under run fan-out. Related #77976. Thanks @fede-kamel and @vincentkoc.
PR #98525 fix(agents): time out local streams without first event. Thanks @osolmaz.
PR #94022 fix(cron): persist startup catch-up deferral ids in service state to prevent read-RPC clobber. Related #93935. Thanks @RichChen01 and @vincentkoc and @yetval.
PR #93810 fix(cron): preserve startup overflow catch-up deferrals in start() maintenance pass. Thanks @yetval and @vincentkoc.
PR #98623 fix: media tools skip env-key provider plugins when auto-selecting models. Thanks @medns.
PR #98665 fix(claude-cli): return updatedInput in can_use_tool allow response for Claude Code 2.1. Related #95171. Thanks @yetval and @carterdawson.
PR #94250 fix(feishu): send blocks as independent messages when blockStreaming is enabled. Related #55027. Thanks @xialonglee and @vincentkoc and @ZichaoLong.
PR #93379 fix(whatsapp): thread authDir through command authorization and owner bypass for LID JID resolution. Related #77755. Thanks @xialonglee and @jiveshkalra.
PR #98646 fix: keep workspace rail file sections scrollable. Related #98566. Thanks @wuqxuan and @645648406-max.
PR #98602 fix: iOS Talk fallback settings opens Voice & Talk. Related #98593. Thanks @PollyBot13.
PR #98611 fix(ui): add overflow-y:auto to workspace rail sections to prevent file list overflow (fixes #98566). Thanks @zw-xysk and @645648406-max.
PR #98619 fix(qa-lab): credential lease requests fail on oversized Convex broker responses. Thanks @ZengWen-DT.
PR #94326 fix(memory-wiki): disambiguate the reserved index page stem for synthesis and ingest. Thanks @yetval and @vincentkoc.
PR #98659 fix(codex): classify get_goal read statuses as successful dynamic tool calls. Thanks @yetval.
PR #96856 fix(codex): successful sessions_spawn and goal tool results recorded as failures. Thanks @nxmxbbd.
PR #98660 fix(inworld): guard voices JSON.parse against malformed API response bodies. Thanks @solodmd.
PR #95430 fix(embedded-agent-runner): pump async streamFn through pumpStreamWithRecovery for mid-stream error recovery. Related #95429. Thanks @lzyyzznl and @vincentkoc and @alexelgier.
PR #98644 fix: tool summaries preserve emoji truncation boundaries. Thanks @ZengWen-DT.
PR #80928 fix(telegram): suppress fallback reply when plugin command returns suppressReply: true. Related #80756. Thanks @alexuser and @UnClouded77.
PR #98701 fix: prevent agents-tools message test timeouts.
PR #92657 feat(usage): ship built-in /usage full footer. Thanks @Marvinthebored.
PR #92877 fix(usage): make built-in footer easier to wrap on Telegram. Thanks @Marvinthebored.
PR #98126 Restore Telegram /steer for active Codex runs. Related #81594. Thanks @100yenadmin and @Kyzcreig.
PR #92037 feat(cron): on-exit schedule — wake on a watched command's exit. Thanks @anagnorisis2peripeteia.
PR #98452 feat(ios): modernize the app with iOS 26 Liquid Glass.
PR #98006 Add Telegram /login Codex pairing flow. Thanks @100yenadmin.
PR #98735 fix(telegram): preserve rich forwarded message text. Thanks @obviyus.
PR #97962 refactor(qa): use transport-native actions in flow scenarios. Thanks @RomneyDa.
PR #98726 fix(nvidia): use Nemotron Super 1M context. Thanks @eleqtrizit.
PR #98691 fix(imessage): shed emoji anywhere in poll-vote echo match. Thanks @omarshahine.
PR #97174 Fix Telegram plugin callback routing. Thanks @goldmar.
PR #89597 fix: migrate QQBot credential backups to SQLite KV.
PR #98536 feat: prepare scoped conversation capability profiles.
PR #92274 fix(agents): classify embedded prompt lock error as permanent announce failure. Related #91527. Thanks @fsdwen and @zackchiutw.
PR #98102 fix(telegram): durably retry inbound media dropped during restart (#98076). Thanks @luoyanglang and @DaveArcher18.
PR #98755 fix(cron): detach session-targeted runs. Related #98121. Thanks @obviyus and @EthanSK.
PR #96065 fix(install): manage config-secretref env refs via OPENCLAW_SERVICE_MANAGED_ENV_KEYS. Thanks @Darren2030 and @obviyus.
PR #98666 fix: diagnose Windows LAN Gateway firewall blocks. Thanks @joshavant.
PR #98501 fix(codex): rename destructive approval mode to ask. Related #98499. Thanks @kevinslin.
PR #98775 fix(telegram): survive transient getUpdates errors and stop per-send cache rewrites. Related #98772, #98773. Thanks @obviyus.
PR #98776 fix(telegram): back off, dead-letter, and tombstone spooled updates so poison messages cannot block or duplicate. Related #98774. Thanks @obviyus.
PR #96454 feat(cli): openclaw attach — launch an external harness bound to a gateway session. Thanks @anagnorisis2peripeteia and @obviyus.
PR #98786 fix(telegram): final replies no longer drop on rejected rich entities, captions, quotes, or long flood waits. Related #98778. Thanks @obviyus.
PR #97496 Doctor: expose channel plugin blocker findings. Thanks @giodl73-repo.
PR #98792 fix(ci): restore docs and test type checks.
PR #98736 improve(ios): simplify Talk controls and composer alignment.
PR #98183 fix(gateway): distinguish reachable gateway from failed status probe. Thanks @masatohoshino.
PR #98808 docs(telegram): move maintainer decisions into scoped AGENTS.md with reliability invariants. Thanks @obviyus.
PR #98138 fix: guard setDeep against empty keys array in Chrome profile decoration. Thanks @zhangLei99586.
PR #92283 fix(agents): don't inject A2A turns into isolated-cron sessions_send (#92257). Thanks @harjothkhara and @vincentkoc and @nailujac.
PR #98812 fix(codex): preserve plugin app approvals in side conversations.
PR #97889 fix(discord): guard JSON.parse against malformed API response bodies. Thanks @lsr911.
PR #98689 fix(wizard): reject loose gateway port input. Related #98681. Thanks @qingminglong.
PR #98720 fix(nostr): clear per-relay publish timeout timer to prevent dangling handles. Related #98463. Thanks @wangmiao0668000666 and @zhangLei99586.
PR #98787 fix(memory-wiki): retry transient existing-page reads in wiki_apply and chatgpt import. Thanks @yetval and @vincentkoc.
PR #98818 fix(ci): recover incomplete Swift build caches.
PR #98811 feat(ios): modernize navigation and settings. Related #98803.
PR #98843 docs: update mobile app release messaging. Thanks @joshavant.
PR #93209 test: prefer auto-cleaning temp dir helper. Thanks @hxy91819.
PR #98789 fix(telegram): sends and actions without an account id ignore the configured defaultAccount. Thanks @yetval.
PR #98806 fix(telegram): webhook updates survive crashes and restarts via durable spooling. Related #98777. Thanks @obviyus.
PR #98688 fix(fal): route grok-imagine and nano-banana-2-lite edits to correct endpoints. Thanks @davenicoll and @vincentkoc.
PR #98891 fix(agents): normalize non-array tool-result content at transcript ingest. Related #98825. Thanks @obviyus and @snowzlmbot.
PR #98781 fix(imessage): poll render vote-cue, cross-run echo suppression, and comment fold. Thanks @omarshahine.
PR #97500 Doctor: expose tool result cap findings. Thanks @giodl73-repo.
PR #98769 fix: Telegram replies duplicate recent context after sent replies. Related #98767. Thanks @rabsef-bicrym.
PR #98933 fix(agents): stop gateway crash from wedged claude-cli turns and persist heartbeat session bindings. Related #98894, #98895. Thanks @obviyus.
PR #98934 fix(agents): recover claude-cli context-overflow sessions and keep retry artifacts alive. Related #98897. Thanks @obviyus.
PR #98908 refactor(agents): fold assistant string normalization into transcript ingest. Thanks @obviyus.
PR #98738 fix(agents): fail fast with attributable reason after MCP stdio session dies mid-run. Thanks @masatohoshino and @vincentkoc.
PR #98879 fix: backup skips volatile cache paths. Related #98865. Thanks @ZengWen-DT and @vincentkoc and @carterstebbins23-spec.
PR #98942 fix(agents): unify claude-cli output classification across live and one-shot paths. Related #98896. Thanks @obviyus.
PR #98932 fix(anthropic): restore Fable 5 Vertex simple completions.
PR #98947 fix(cron): restore persistent session targets.
PR #96523 fix(agents): preserve embedded OpenAI completions usage. Thanks @ly85206559 and @vincentkoc.
PR #98758 perf(build): reduce plugin SDK declaration package size. Related #98757. Thanks @RomneyDa.
PR #98877 fix(mattermost): include later team members in peer directory. Related #98871. Thanks @qingminglong.
PR #98953 feat(ios): refine the chat experience. Related #98929.
PR #98876 fix(terminal): preserve sibling home-prefix paths. Related #98872. Thanks @qingminglong.
PR #98930 feat(ios): PR1 brand color palette overhaul. Thanks @joelnishanth.
PR #94566 fix(android): make offline chat actionable. Thanks @Tosko4.
PR #98955 fix(agents): preserve fresh tool result text under aggregate cap. Related #98874. Thanks @momothemage and @lamkan0210.
PR #98059 [codex] Support Android selected photo access. Thanks @NianJiuZst.
PR #98914 fix(android): return settings details to their originating tab on Back. Thanks @Lokimorty.
PR #98898 fix(ios): back from settings details returns to the originating screen. Thanks @Lokimorty.
PR #98235 fix(feishu): include video upload duration. Thanks @areslp.
PR #98966 fix(discord): gate guild metadata reads [AI]. Thanks @pgondhi987.
PR #98985 fix: clean up iOS About page copy. Related #98943. Thanks @sahilsatralkar.
PR #98856 fix(ios): gateway error shows twice on the Settings Gateway page. Thanks @Lokimorty.
PR #98936 fix: Control row icons use inconsistent row styling (iOS). Related #98916. Thanks @sahilsatralkar.
PR #98040 [codex] Fix Android camera snap cleanup. Thanks @NianJiuZst.
PR #99039 fix(macos): stop runtime config-health sidecar access. Related #98917. Thanks @momothemage and @P51moustache.
PR #92667 ci: add process exec CodeQL security shard. Thanks @hxy91819.
PR #98055 [codex] Gate Android Talk capture starts in background. Thanks @NianJiuZst.
PR #98067 [codex] Cancel Android gateway pending RPCs on close. Thanks @NianJiuZst.
PR #98698 fix(android): show specific gateway auth-recovery reason instead of generic label. Related #98046. Thanks @masatohoshino and @ccaprani.
PR #83826 test(android): poll for stale TLS probe cleanup in auth test. Thanks @NeatGuyCoding.
PR #98983 fix(agents): handle variadic claude --mcp-config and serialize gemini credential staging. Related #98944, #98945. Thanks @obviyus.
PR #99145 fix(auto-reply): suppress room-event notice leaks. Thanks @obviyus.
PR #99144 fix(auto-reply): default room events to silence. Thanks @obviyus.
PR #98608 fix: Mattermost fails to load after configured plugin repair. Related #98564. Thanks @jacobtomlinson.
PR #99143 fix(telegram): keep group history always on. Related #99142. Thanks @obviyus.
PR #99159 fix(agents): claude-cli lifecycle cleanup — loopback fail-loud, exit-0 failover, bounded reseed, image sweep, one prepare cleanup owner. Related #98946. Thanks @obviyus.
PR #98391 Expose disk space doctor lint findings. Thanks @giodl73-repo.
PR #98835 fix(config/sessions): narrow reply-session initialization revision to identity fields. Related #98672. Thanks @moguangyu5-design and @jalehman and @AaronFaby.
PR #99123 fix(android): ignore chat events with missing assistant role in voice text extraction. Thanks @ly85206559 and @cursoragent.
PR #99147 fix(android): preserve split SMS permission grants. Thanks @NianJiuZst.
PR #99107 fix(android): bracket IPv6 hosts in manual gateway URL composition. Thanks @ly85206559 and @cursoragent.
PR #99158 fix: require Android contact and calendar write permissions in onboarding. Thanks @NianJiuZst.
PR #99110 fix(android): strip ws scheme prefix from manual gateway host input. Related #87216. Thanks @ly85206559 and @cursoragent and @ruben2000de.
PR #99212 fix(ci): session concurrency test flakes during child handshake.
PR #94385 fix(feishu): preserve button command values in fallback text and add Feishu comment guidance with callback privacy. Related #69754. Thanks @xialonglee and @1yihui.
PR #98563 fix: route iOS OpenAI realtime Talk through WebRTC. Thanks @PollyBot13.
PR #99204 fix: require Android contact and calendar write permissions. Thanks @NianJiuZst.
PR #99134 fix: OAuth refresh failures report reauth instead of stale success. Related #99120. Thanks @100yenadmin.
PR #99153 fix: clean up Android camera clips on cancellation. Thanks @NianJiuZst.
PR #99118 [codex] fix(memory-lancedb): align apache arrow peer dependency. Related #90295. Thanks @allenhurff and @joshavant.
PR #98066 fix: keep iOS LAN QR pairing authenticated after bootstrap. Related #98064. Thanks @ooiuuii.
PR #99155 fix: stop iOS screen recording after cancellation. Thanks @NianJiuZst.
PR #95973 fix(telegram): explain disabled plugin approval failures. Related #95800. Thanks @MonkeyLeeT and @ChrisBot2026.
PR #99233 fix: ignore test-only network CI guard lines. Thanks @joshavant.
PR #98951 fix: strict guarded fetch fails before managed proxy DNS. Related #98925. Thanks @momothemage and @sandl99.
PR #99137 fix: prevent Voice Wake crash after Talk audio capture. Thanks @PollyBot13.
PR #99052 fix: Update Dark/Light mode UI control appearance. Related #98995. Thanks @sahilsatralkar.
PR #99245 fix(ios): return chat to originating control detail. Thanks @Solvely-Colin.
PR #92602 fix(android): queue node events until gateway connect. Related #79552. Thanks @ashishpatel26 and @hectorrp13.
PR #98277 fix: keep Android gateway settings save idempotent. Thanks @Solvely-Colin.
PR #99256 fix(auto-reply): single canonical group history and deduped turn metadata. Related #99218. Thanks @obviyus.
PR #99259 fix(android): use Bluetooth microphones for voice capture. Related #96241. Thanks @gwtaylor.
PR #98751 test(qa): prove native command targeting across QA transports. Thanks @RomneyDa.
PR #98779 test(qa): cover expanded Crabline bindings. Thanks @RomneyDa.
PR #99262 test(qa): cover Crabline Signal sends. Thanks @RomneyDa.
PR #99261 refactor(shared): establish lazy runtime loader foundation. Thanks @RomneyDa.
PR #99264 test(qa): cover Crabline Mattermost sends. Thanks @RomneyDa.
PR #99265 test(qa): cover Crabline Matrix sends. Thanks @RomneyDa.
PR #98400 Expose heartbeat template doctor lint findings. Thanks @giodl73-repo.
PR #98695 Expose legacy plugin manifest doctor lint findings. Thanks @giodl73-repo.
PR #99278 refactor(shared): consolidate core leaf lazy loaders. Thanks @RomneyDa.
PR #99274 fix(zalo): match native bot identity fields. Thanks @RomneyDa.
PR #99126 test(discord): clarify and guardrail gateway proxy selection. Related #98266. Thanks @svuppala2006 and @joshavant and @sallyom.
PR #99290 feat(ios): add licenses settings screen. Thanks @joshavant.
PR #98907 fix(telegram): distinguish and render streamed reasoning/commentary progress lanes. Thanks @Marvinthebored.
PR #99294 fix(qa): stagger isolated worker startup. Thanks @RomneyDa.
PR #99276 fix(memory-wiki): source imports crash on unreadable pages. Thanks @obviyus.
PR #99296 refactor(shared): consolidate gateway and stateful runtime lazy loaders. Thanks @RomneyDa.
PR #98768 Allow alternate Zalo Bot API roots. Thanks @RomneyDa.
PR #99298 refactor(shared): consolidate Discord Slack and Telegram lazy loaders. Thanks @RomneyDa.
PR #99307 fix(memory-wiki): avoid implicit error coercion. Thanks @RomneyDa.
PR #99306 feat(auto-reply): persist ambient room events as transcript rows. Related #99257. Thanks @obviyus.
PR #99302 refactor(shared): consolidate remaining channel lazy loaders. Thanks @RomneyDa.
PR #99303 test(qa): cover Crabline Zalo transport. Thanks @RomneyDa.
PR #99299 feat(android): add licenses settings screen. Thanks @joshavant.
PR #99220 fix(ios): onboarding Retry Connection does nothing after editing gateway details. Related #99219. Thanks @abdullahtas0.
PR #98749 refactor(shared): consolidate provider and utility lazy loaders. Thanks @RomneyDa.
PR #99355 fix(ci): restore Telegram and plugin SDK guard checks. Thanks @RomneyDa.
PR #88899 fix(android): render chat content through Markdown. Related #88014. Thanks @Pluviobyte and @Iman-Sharif.
PR #99310 test(qa): migrate channel streaming evidence to transport flow. Thanks @RomneyDa.
PR #99350 fix(ios): add Photos permission controls. Related #99046. Thanks @Tony-ooo.
PR #99361 refactor(plugins): consolidate record guards. Thanks @RomneyDa.
PR #99359 refactor(shared): consolidate core record guards. Thanks @RomneyDa.
PR #97208 fix: avoid DeepSeek-native thinking on OpenRouter V4. Related #97196. Thanks @NianJiuZst and @patelmm79.
PR #99385 fix(sessions): scope ambient transcript watermark to session id. Related #99373. Thanks @obviyus.
PR #99389 fix(auto-reply): restore per-turn message-tool delivery contract. Related #99371. Thanks @obviyus.
PR #98269 fix(android): derive Voice readiness from Gateway catalog. Related #98268. Thanks @Solvely-Colin.
PR #92872 fix(qqbot): allow scoped sandbox media sends. Thanks @zhangguiping-xydt and @sliverp.
PR #99414 fix(android): expose exact gateway recovery actions. Related #98045, #98046. Thanks @ccaprani.
PR #99289 feat: session-first sidebar, compact context ring, and warm light theme for the Control UI. Related #99288.
PR #99234 feat(nodes): add auto-discovered Ollama inference. Related #99228.
PR #97095 fix: memory_search honors generic embedding providers. Thanks @849261680.
PR #98841 fix(gateway): include session label in deriveSessionTitle fallback chain. Related #98742. Thanks @SunnyShu0925 and @BSG2000.
PR #99301 fix(feishu): catch unhandled promise rejection in streaming card flush timer. Thanks @lwy-2.
PR #99391 fix(compaction): count nested tool result content. Related #99375. Thanks @LZY3538 and @imchloe92.
PR #99407 fix(daemon): avoid loading full gateway logs during diagnostics. Thanks @sunlit-deng.
PR #99291 Fix/issue 98958 gateway lock fd leak. Related #98958. Thanks @chenyangjun-xy and @zhangLei99586.
PR #99475 fix(ios): contacts.add crashes the app via unfetched CNContactFormatter keys. Thanks @abdullahtas0.
PR #98003 fix(anthropic): wire buildGuardedModelFetch into the Cloudflare createClient branch. Thanks @wangmiao0668000666.
PR #99425 fix: strip conda env marker from host tool runs. Related #99424. Thanks @ooiuuii and @krissding.
PR #99398 fix(cli): reject unsafe sessions tail counts. Thanks @qingminglong.
PR #98855 fix: chat.send no reply when thinking metadata is set. Thanks @jesse-merhi.
PR #98752 Rework Android gateway onboarding setup. Thanks @jesse-merhi.
PR #99446 fix(agents): preserve fd find failures. Thanks @zhangguiping-xydt.
PR #99152 fix(config): use Object.hasOwn instead of in operator in restoreOriginalValueOrThrow. Thanks @zenglingbiao.
PR #99460 fix: redact dotted API key activity previews. Related #99459. Thanks @ooiuuii.
PR #99455 fix: long mobile media recordings time out. Thanks @NianJiuZst.
PR #99410 fix(subagents): match requesterSessionKey when controllerSessionKey differs in list filter. Related #75593. Thanks @sheyanmin and @aaajiao.
PR #98791 feat(signal): show status reactions during inbound replies. Thanks @jesse-merhi.
PR #98683 fix(ui): keep landscape composer compact. Related #98615. Thanks @qingminglong and @jin-li.
PR #99428 fix(logging): redact Telegram bot tokens from timeout URLs. Related #96982. Thanks @xialonglee and @liuhaiyang14.
PR #99217 Preserve Codex output after missing turn completion. Thanks @100yenadmin and @Sedrak-Hovhannisyan and @fuller-stack-dev.
PR #99520 fix(gateway): declare the dev agent required by the gateway e2e session key. Related #99513. Thanks @masatohoshino.
PR #95738 feat(signal): add target aliases. Thanks @jesse-merhi.
PR #98258 improve: make native chat scrolling reader-managed. Related #98255. Thanks @christopheraaronhogg.
PR #99506 fix: keep always-on group fallback messages in dispatch. Related #99457. Thanks @LZY3538 and @zqchris.
PR #89671 fix(google-meet): force English Meet UI via hl=en so automation works on any locale. Thanks @Unayung.
PR #98130 fix(infra): bound jsonl-socket response buffer to prevent OOM. Thanks @Pick-cat.
PR #99526 fix(agents): preserve primitive tool result output. Related #99523. Thanks @snowzlm.
PR #99525 fix(imessage): recognize bare hex group chat identifiers as chat targets. Related #89235. Thanks @MatthewDelprado.
PR #99098 fix: harden native i18n identifier filtering. Thanks @hxy91819.
PR #99099 fix: harden docs map heading rendering. Thanks @hxy91819.
PR #98725 Expose legacy plugin dependency doctor lint findings. Thanks @giodl73-repo.
PR #99595 fix(agents): keep cli session binding facts session-stable. Related #99372. Thanks @obviyus.
PR #90152 fix(telegram): stop duplicate fallback when dispatch fails after final reply. Thanks @zhangguiping-xydt.
PR #98729 Expose stale plugin runtime symlink doctor lint findings. Thanks @giodl73-repo.
PR #99591 fix(android): preserve numeric invoke error codes. Thanks @ly85206559.
PR #98406 Expose WhatsApp responsiveness doctor lint findings. Thanks @giodl73-repo.
PR #99570 fix(android): reject IPv6 zone IDs in gateway endpoint URLs. Thanks @ly85206559 and @cursoragent.
PR #99557 fix(android): filter device and internal sessions from thread picker. Thanks @ly85206559 and @cursoragent.
PR #99568 fix(android): block self-package notification forwarding in allowlist mode. Thanks @ly85206559 and @cursoragent.
PR #99592 fix(android): parse talk directive aliases case-insensitively. Thanks @ly85206559.
PR #99477 fix: avoid iOS node permission prompts. Thanks @NianJiuZst.
PR #99374 improve(qa): standardize script evidence output. Thanks @RomneyDa.
PR #99468 improve: tighten iOS Control row density. Related #99439. Thanks @sahilsatralkar.
PR #99642 test: avoid cross-OS socket close event race. Thanks @RomneyDa.
PR #89967 fix(macos): LaunchAgent starts gateway on external home volumes. Related #87199. Thanks @zhangguiping-xydt and @joshdaynard.
PR #98613 fix(media): guard ffprobe JSON parse against malformed output. Thanks @Pick-cat.
PR #97839 fix: log terminal session persistence failures. Related #97795. Thanks @LZY3538 and @aniruddhaadak80.
PR #99247 feat: clarify iOS Location Always permission flow. Thanks @PollyBot13.
PR #98224 fix(auto-reply): strip stray punctuation before silent-reply token detection. Thanks @SunnyShu0925.
PR #97328 fix(google): rotate Gemini API keys for LLM requests. Thanks @MonkeyLeeT.
PR #99661 fix(macos): remote mode fails with managed SSH aliases.
PR #99649 fix(qa): defer partial Crabline recorder rows. Related #99648. Thanks @RomneyDa.
PR #99211 Expose legacy cron store doctor lint findings. Thanks @giodl73-repo.
PR #99629 test(qa): redact script evidence diagnostics. Thanks @RomneyDa.
PR #99647 Fix Slack retry for session init conflicts. Thanks @steipete-oai.
PR #99628 improve: enforce canonical QA scenario ownership. Related #99627. Thanks @RomneyDa.
PR #99632 refactor(qa): simplify transport adapter contracts. Related #99622. Thanks @RomneyDa.
PR #99656 test(qa): use full-turn budget for native stop recovery. Related #99655. Thanks @RomneyDa.
PR #99605 fix(google): bound OAuth token error response reads. Thanks @mushuiyu886.
PR #99679 f - Jul 2, 2026
- Date parsed from source:Jul 2, 2026
- First seen by Releasebot:Jul 3, 2026
openclaw 2026.7.1-beta.1
OpenClaw ships GPT-5.6 support, a new openclaw attach workflow, and expanded Telegram Codex pairing and steering. It also brings a refreshed iOS app, richer messaging like iMessage polls, new cron scheduling options, and broad reliability fixes across agents, channels, and providers.
Highlights
OpenAI GPT-5.6 support: OpenClaw now recognizes the GPT-5.6 model family across catalog, capability, and runtime selection paths. (#98333) Thanks @steipete-oai.
External harness attachment: openclaw attach launches an external harness against an existing Gateway session, making interactive Codex-style workflows easier to resume and inspect. (#96454) Thanks @anagnorisis2peripeteia and @obviyus.
Telegram Codex workflows: Telegram can now start Codex pairing with /login, steer active Codex runs, and recover final replies across transient API failures. (#98006, #98126, #98786) Thanks @100yenadmin, @Kyzcreig, and @obviyus.
Event-driven cron runs: the new on-exit schedule kind wakes an agent when a watched command exits, while session-targeted runs can detach cleanly. (#92037, #98755) Thanks @anagnorisis2peripeteia, @obviyus, and @EthanSK.
Native app refresh: iOS adopts the iOS 26 visual system with clearer navigation, settings, Chat, Talk, and onboarding flows, while native app localization expands across Apple and Android surfaces. (#98452, #98736, #98811, #97110, #97111, #97112, #97113) Thanks @vincentkoc.
Richer messaging: iMessage gains native poll creation, reading, and voting, and built-in usage footers provide clearer per-turn accounting in chat. (#98421, #92657, #92877) Thanks @omarshahine, @lobster, and @Marvinthebored.
Safer scoped conversations: capability profiles prepare per-conversation tool and access boundaries without weakening the existing default profile. (#98536)
Changes
Model and provider coverage: add GPT-5.6 support, use Nemotron Super's 1M context window, and preserve explicit OpenRouter authentication headers. (#98333, #98726, #98187) Thanks @steipete-oai, @eleqtrizit, @sunlit-deng, and @laurencebrown.
CLI and node workflows: add openclaw attach, node context-path support, actionable device-approval recovery guidance, and clearer plugin install exit diagnostics. (#96454, #97679, #98115, #98146, #98497) Thanks @anagnorisis2peripeteia, @obviyus, @wm0018, @welfo-beo, @RomneyDa, @Sanjays2402, and @vincentkoc.
Cron and usage: add exit-triggered schedules, detached session-targeted runs, an in-flight job doctor warning, and a built-in full usage footer. (#92037, #98755, #98620, #92657, #92877) Thanks @anagnorisis2peripeteia, @obviyus, @EthanSK, @masatohoshino, and @Marvinthebored.
Native apps and localization: modernize iOS navigation, settings, presentation, and Talk controls, add Gateway speech providers, improve QR onboarding and protocol recovery, localize core Apple and Android surfaces, and add Swedish mobile localization. (#98452, #98736, #98811, #98376, #98302, #98385, #97110, #97111, #97112, #97113, #98043) Thanks @Tony-ooo, @joelnishanth, @cursoragent, @joshavant, @vincentkoc, and @yeager.
Messaging capabilities: add native iMessage polls and Telegram Codex pairing and steering flows. (#98421, #98006, #98126) Thanks @omarshahine, @lobster, @100yenadmin, and @Kyzcreig.
Doctor and diagnostics: expose auth-profile, workspace, device-pairing, channel-plugin, memory-provider, systemd exhaustion, and Windows LAN firewall findings. (#97125, #97358, #97366, #97496, #97968, #98291, #98666) Thanks @giodl73-repo, @masatohoshino, and @joshavant.
Conversation and review controls: prepare scoped conversation capability profiles and add Cursor Agent as an autoreview engine. (#98536, #97348) Thanks @hxy91819.
Fixes
Telegram durability: recover stalled ingress claims, retry restart-dropped media, survive transient polling errors, dead-letter poison updates, preserve forwarded rich text, route plugin callbacks correctly, and fall back safely when rich final replies are rejected. (#97118, #98102, #98735, #98775, #98776, #97174, #98786) Thanks @vincentkoc, @luoyanglang, @DaveArcher18, @obviyus, and @goldmar.
Agent and context reliability: preserve runtime overrides and steered subagent tasks, keep isolated cron sessions_send replies from feeding back into the requester, improve harness-aware context estimation and compaction prechecks, time out silent local streams, recover mid-stream failures, and cap Gateway run-cache growth. (#92237, #92283, #77539, #97928, #97861, #98525, #95430, #77973) Thanks @sercada, @amittell, @liuhao1024, @yetval, @harjothkhara, @nailujac, @osolmaz, @lzyyzznl, @vincentkoc, @alexelgier, and @fede-kamel.
Provider and network safety: bound oversized or malformed responses across Moonshot, MiniMax, Anthropic OAuth, Discord, Matrix, SMS, browser, update, embeddings, Tlön, and Inworld paths. (#96502, #96322, #96644, #97693, #97889, #97662, #97999, #98455, #98508, #98554, #98496, #98660) Thanks @hugenshen, @cursoragent, @lsr911, @solodmd, @Alix-007, @wings1029, @lzyyzznl, @sunlit-deng, @vincentkoc, and @Pandah97.
Channel delivery and routing: keep Slack replies in the active thread, preserve account-bound delivery routes, apply response prefixes, suppress internal traces and unwanted fallback replies, clear Nostr relay publish timers, and retain WeChat session routing for opaque account ids. (#97168, #98240, #89949, #93639, #97989, #80928, #98720, #93686) Thanks @LiuwqGit, @gorkem2020, @yetval, @wangwllu, @ZengWen-DT, @alexuser, @UnClouded77, @wangmiao0668000666, @zhangLei99586, @zhangguiping-xydt, and @htkillermax-gif.
Cron correctness: preserve provider and model selections on timeouts, retain startup catch-up deferrals, keep action-required output, clear blank thinking overrides, and preserve provider-owned daily-reset sessions. (#95943, #94022, #93810, #96393, #96293, #98356) Thanks @ZengWen-DT, @cursoragent, @luke-renjoy, @RichChen01, @vincentkoc, @yetval, @snowzlmbot, @nz365guy, and @takamasa-aiso.
Memory and session recovery: detect unindexed transcripts, preserve notes and hand-edited frontmatter through transient wiki reads during note updates and ChatGPT imports without weakening directory and hardlink collision guards, avoid cross-directory resumes, disambiguate reserved wiki index pages, and skip empty QMD sync work. (#97857, #98360, #98787, #97785, #94326, #90030) Thanks @zw-xysk, @CHE10X, @qingminglong, @yetval, @vincentkoc, @sahibzada-allahyar, and @ruben2000de.
Windows and execution: bind allowlisted execution to the validated Windows path, propagate PATHEXT, normalize inbound paths case-insensitively, and prevent cleanup crashes on Windows. (#98260, #98093, #97630, #97901) Thanks @eleqtrizit, @wendy-chsy, @VectorPeak, and @paulcam206.
Mobile and UI stability: preserve iOS chat line breaks and final replies, improve Android pairing and TLS recovery, hide expired pairing cards, and keep workspace file rails scrollable. (#98304, #98117, #98366, #98439, #98483, #98049, #98646, #98611) Thanks @joshavant, @Jabato01, @ooiuuii, @wuqxuan, @645648406-max, and @zw-xysk.
Codex and approval flows: report ChatGPT authentication correctly, preserve plugin app approvals in side conversations, rename destructive approval mode to ask, classify dynamic goal and session tool results accurately, and derive terminal-idle timeouts from the explicit run deadline. (#91240, #98812, #98501, #98659, #96856, #85296) Thanks @849261680, @ukstem, @kevinslin, @yetval, @nxmxbbd, @alkor2000, and @vincentkoc.
Configuration and plugin health: surface unloadable channel plugins, preserve defaulted provider base URLs during patches, validate bundled plugin updates by manifest contract, and retain legacy ClawHub families where required. (#96397, #98396, #98010, #98249) Thanks @849261680, @momothemage, @weltmaister, @LiLan0125, @herove, and @Patrick-Erichsen.
Gateway, browser, and setup diagnostics: distinguish a reachable Gateway from a failed status probe, reject loosely parsed Gateway ports during setup, and avoid creating stray Chrome profile configuration keys from empty paths. (#98183, #98689, #98138) Thanks @masatohoshino, @qingminglong, and @zhangLei99586.
Complete contribution record
This audited record covers the complete 66e676d..HEAD history: 222 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #96502 fix(moonshot): bound video description JSON response reads. Thanks @hugenshen and @cursoragent.
PR #98249 Preserve legacy ClawHub family for selected plugins. Thanks @Patrick-Erichsen.
PR #93767 fix(reasoning-tags): strip MiniMax mm: namespaced reasoning tags. Thanks @DrHack1.
PR #93820 fix(imessage): recognize MiniMax mm: reasoning tags in reflection guard (completes #93767). Thanks @Alix-007.
PR #94096 fix(usage): reject inverted startDate-endDate range in usage.cost and sessions.usage. Thanks @Alix-007.
PR #97125 Doctor: expose auth profile findings. Thanks @giodl73-repo.
PR #98256 fix(mcp): require owner for Claude permission replies. Thanks @eleqtrizit.
PR #98142 fix(cli): stop pairing list crashing with empty channel enum. Thanks @RomneyDa.
PR #98260 fix(exec): bind Windows allowlist execution path. Thanks @eleqtrizit.
PR #97118 fix(telegram): recover stalled ingress spool claims. Thanks @vincentkoc.
PR #97168 fix(slack): prefer current thread session for inherited outbound replies. Related #96535. Thanks @LiuwqGit and @gorkem2020.
PR #97769 fix(plugins): apply output text transforms to toolcall_delta and toolcall_end events. Related #97761. Thanks @ZOOWH and @get-viti.
PR #96544 fix(doctor): merge colliding model-ref map keys instead of dropping. Thanks @yetval and @vincentkoc.
PR #97177 fix(memory-wiki): gracefully handle unparsable YAML frontmatter in vault scans (#96125). Thanks @SunnyShu0925 and @cow11023.
PR #97167 fix #96840: [Bug]: Targetless message.send fails with 'Action send requires a target' in WebChat despite docs stating source-reply sink should handle it. Thanks @zhangguiping-xydt and @MantisCartography.
PR #98302 fix(ios): advance onboarding step after QR scan. Related #98297. Thanks @joelnishanth and @cursoragent.
PR #96644 fix(anthropic-oauth): bound OAuth token endpoint response reads. Thanks @solodmd.
PR #96397 fix: warn when configured channel plugins cannot load. Thanks @849261680.
PR #96359 test: migrate src/commands tests to shared temp dir helpers. Thanks @xialonglee.
PR #96293 fix(cron): clear agentTurn thinking override by blanking the field. Related #96287. Thanks @ZengWen-DT and @takamasa-aiso.
PR #96058 test: prefer shared temp dir helpers in auto-reply and install-fallback tests. Thanks @xialonglee.
PR #87298 test: add temp directory helper guidance. Thanks @hxy91819.
PR #97785 fix(sessions): avoid cross-cwd recent resumes. Related #96542. Thanks @qingminglong and @yetval.
PR #97698 fix(pdf): reject empty parsed page ranges before native analysis. Thanks @zhangguiping-xydt.
PR #97693 fix(discord): bound requestDiscord happy-path response reads to prevent OOM. Thanks @Alix-007.
PR #97683 fix(irc): guard surrogate-range codepoints in \u literal-escape decoder. Thanks @llagy009.
PR #96938 fix(utils): keep reply directive ids unicode-safe. Thanks @ly-wang19.
PR #97857 fix(memory): detect unindexed session transcripts in status mode (fixes #97814). Thanks @zw-xysk and @CHE10X.
PR #98094 fix(android): clarify gateway auth recovery states. Thanks @qingminglong.
PR #98205 test(gateway): add unit tests for node wake state tracking and testing seam. Thanks @zenglingbiao.
PR #98115 fix: surface node approval guidance from devices CLI. Thanks @welfo-beo.
PR #97898 docs: clarify source checkout Node floor. Related #97792. Thanks @lin-hongkuan and @aniruddhaadak80.
PR #94526 test(telegram): add regression test for forum topic message_thread_id with streamed reasoning. Related #89352. Thanks @xialonglee and @pmika.
PR #98145 fix(device-pairing): don't churn requestId on subset re-requests. Thanks @RomneyDa.
PR #98267 fix(system-prompt): move exec-approval + Authorized Senders below cache boundary. Related #98261. Thanks @headbouyJB.
PR #98304 fix: preserve iOS chat line breaks. Related #98028. Thanks @joshavant and @Jabato01.
PR #98187 fix(openrouter): send explicit auth headers. Related #97934. Thanks @sunlit-deng and @laurencebrown.
PR #95708 fix: show WebChat preamble progress during tool activity. Thanks @ragesaq.
PR #98210 fix(gateway): iOS Talk treats SecretRef-backed API keys as missing. Related #98209. Thanks @ooiuuii.
PR #98009 test(infra): add unit tests for SQLite number normalization. Thanks @dwc1997.
PR #98087 test(config): add unit tests for resolveExecCommandHighlighting. Thanks @solodmd.
PR #98219 test(utils): add unit tests for chunkItems. Thanks @zenglingbiao.
PR #98093 fix(core): propagate caller env PATHEXT through isExecutableFile on Windows. Thanks @wendy-chsy.
PR #97973 fix(matrix): guard JSON.parse against malformed homeserver response bodies. Thanks @lsr911.
PR #97999 fix(sms): guard Twilio JSON.parse against malformed API response bodies. Thanks @lsr911.
PR #98043 Add Swedish mobile app localization. Thanks @yeager.
PR #98144 fix(tui): correct disconnect copy for device scope upgrades. Thanks @RomneyDa.
PR #98240 fix(agents): keep merged delivery routes account-bound. Thanks @yetval.
PR #89949 fix(media): pin requester delivery route when task starts. Thanks @wangwllu.
PR #98226 Redact bare Fireworks API keys. Related #98225. Thanks @ooiuuii.
PR #98319 docs: publish release notes for v2026.6.11. Thanks @hannesrudolph.
PR #98257 fix: show in-progress status for channel runs. Thanks @scotthuang.
PR #97931 fix(gateway): keep provider-owned CLI sessions across the daily default reset. Thanks @yetval.
PR #98325 docs: refresh docs map for v2026.6.11. Thanks @hannesrudolph.
PR #97929 fix(auto-reply): stop level directives from eating the next message word. Thanks @yetval.
PR #97928 fix(agents): estimate harness role sizes in context guard char estimator (fixes #97927). Thanks @liuhao1024 and @yetval.
PR #97861 fix(compaction): count bashExecution and summary turns in pre-prompt overflow precheck. Thanks @yetval.
PR #97137 doctor: add memory search lint findings. Thanks @giodl73-repo.
PR #97358 Doctor: expose workspace status findings. Thanks @giodl73-repo.
PR #95622 test(qa-lab): harden whatsapp qa scenarios. Thanks @mcaxtr.
PR #98346 fix: prevent skill-creator from bypassing workshop proposals. Related #96054. Thanks @momothemage and @xianshishan.
PR #98169 fix(heartbeat): scope commitment fan-out prompts. Thanks @bdjben.
PR #97366 Doctor: expose device pairing findings. Thanks @giodl73-repo.
PR #98366 fix: Android TLS fingerprint verification times out on slow handshakes. Related #98365. Thanks @joshavant.
PR #98353 fix(ios): open app on Chat by default. Thanks @BsnizND.
PR #98352 fix(security): warn on agent skill MCP boundary drift. Thanks @momothemage.
PR #98347 fix: retry image describe fallback models. Thanks @momothemage.
PR #98117 fix(ios): avoid transient duplicate final replies. Related #98116. Thanks @ooiuuii and @joshavant.
PR #98293 fix(gateway): emit stale exec approval followup diagnostics. Thanks @BsnizND.
PR #98376 fix(ios): use Gateway speech providers in Talk. Related #98153. Thanks @Tony-ooo.
PR #66685 Suppress expired exec approval followup warnings. Thanks @pfrederiksen.
PR #98385 fix: show actionable mobile protocol mismatch recovery. Related #98384. Thanks @joshavant.
PR #98146 fix(cli): explain how to recover from device approve deadlock. Thanks @RomneyDa.
PR #98423 improve(ios): clarify Control and Talk visual hierarchy. Related #98397.
PR #98217 fix(doctor): recover legacy cron archive across devices. Thanks @masatohoshino.
PR #98333 feat(openai): add GPT-5.6 series support. Related #98296. Thanks @steipete-oai.
PR #96393 fix(cron): preserve action-required command output. Related #96346. Thanks @snowzlmbot and @nz365guy.
PR #98429 fix(ios): classify TLS fingerprint timeouts. Thanks @joshavant.
PR #98439 fix: Android setup codes accept local mDNS gateway hosts. Thanks @joshavant.
PR #98443 fix(ios): improve light and dark appearance contrast. Related #98440.
PR #97742 fix(llm): preserve structured tool result text across providers. Thanks @snowzlmbot.
PR #97968 fix(status): surface unregistered memory embedding providers. Thanks @masatohoshino.
PR #92237 fix(agents): preserve runtime settings overrides [AI-assisted]. Thanks @sercada.
PR #95888 fix(active-memory): caveat mutable ops facts; mark truncated recall as incomplete. Thanks @spencer2211.
PR #98291 fix(gateway): surface systemd start-limit exhaustion. Thanks @masatohoshino.
PR #90517 fix(gateway): hint missing external plugin for web login. Related #83277. Thanks @TUARAN and @carol-iung.
PR #98369 test(infra): add unit tests for SQLite user_version pragma helper. Thanks @dwc1997.
PR #98340 fix: extension api.exec leaves child processes after timeout. Related #98335. Thanks @ooiuuii.
PR #92063 fix(ui): collapse duplicate assistant groups during segmented streaming. Related #63956. Thanks @harjothkhara and @contentfree.
PR #98354 fix(infra): guard delivery queue inflate against corrupted entry_json. Thanks @Pick-cat.
PR #90566 fix(agents): warn on cron announce skip. Related #68561. Thanks @sahibzada-allahyar and @Mibslee.
PR #98371 fix(ports): validate lsof PID parsing before assignment. Thanks @lzyyzznl.
PR #98356 fix(cron): keep provider-owned CLI sessions across the daily default reset. Thanks @yetval.
PR #98395 test(shared): add unit tests for account enabled guard. Thanks @dwc1997.
PR #98411 fix(agents): recover thinking errors from provider body. Related #98308. Thanks @sunlit-deng and @clearhorizoninvestments.
PR #98494 docs(skills): support variable landable sweep batches. Thanks @vincentkoc.
PR #91240 fix: report Codex ChatGPT status auth. Related #91099. Thanks @849261680 and @ukstem.
PR #98370 test(agents): add unit tests for thinking block detection. Thanks @dwc1997.
PR #96711 test: prefer shared temp dir helpers in config, gateway, cron, crestodian, and state tests. Thanks @xialonglee.
PR #98483 fix: Android QR scan starts gateway pairing. Thanks @joshavant.
PR #95230 fix docs-list-mdx-pages. Thanks @hugenshen.
PR #96322 fix(minimax): bound JSON response reads to prevent OOM. Thanks @lsr911.
PR #95348 fix config-chmod-warning. Thanks @hugenshen and @cursoragent.
PR #95229 fix(copilot): guard against undefined runtime.state during cli-metadata registration. Related #94516. Thanks @sunlit-deng and @cuihaijun.
PR #94636 fix(memory): skip raw snippets during promotion. Thanks @tayoun.
PR #94013 [AI] fix(feishu): guard partial channelRuntime in monitor startup. Thanks @xydt-tanshanshan.
PR #93466 [AI] fix(feishu): guard against missing inbound in channelRuntime fallback. Thanks @xydt-tanshanshan.
PR #98049 fix: hide expired pairing QR cards in Control UI. Related #98039. Thanks @ooiuuii.
PR #96094 fix(memory): prove live manager recovery after CLI reindex. Related #91167. Thanks @849261680 and @kiagentkronos-cell.
PR #98482 fix: advertise route-aware LAN Control UI links. Thanks @joshavant.
PR #71537 Recover archived (.reset) session transcripts in memory hook + session-logs skill. Thanks @injinj.
PR #96375 docs(config-agents): correct built-in alias table for opus and gpt. Thanks @niks999.
PR #98453 docs(gateway): fix Telegram streaming default in config-channels.md. Thanks @solodmd.
PR #98533 fix: repair hosted CI baseline assertions.
PR #98421 feat(imessage): native poll support — create, read, vote. Thanks @omarshahine and @lobster.
PR #98318 docs(matrix): document missing streaming.progress mode, progress sub-fields, and mentionPatterns config. Thanks @wm0018 and @vincentkoc.
PR #97753 docs(onboard): document 11 missing non-interactive CLI flags. Thanks @wm0018 and @vincentkoc.
PR #97851 fix(mattermost): bound null-body error response reads. Thanks @Pick-cat.
PR #98360 fix(memory-wiki): preserve notes after transient page reads. Related #98345. Thanks @qingminglong and @yetval.
PR #98551 test: fix stale core test type failures. Thanks @RomneyDa.
PR #98455 fix(browser): bound error body read in fetchHttpJson to prevent OOM. Thanks @wings1029.
PR #95906 fix(code-mode): surface QuickJS error name and message to the model. Thanks @ZengWen-DT and @vincentkoc.
PR #97901 fix(agents): stop copilot autoreview cleanup crash on Windows. Thanks @paulcam206.
PR #97923 fix(slack): truncate served arg-menu option labels on a surrogate boundary. Thanks @LEXES7.
PR #98010 fix(update): validate bundle plugin payloads by manifest contract. Related #97985. Thanks @LiLan0125 and @herove.
PR #85296 fix(codex): derive terminal-idle watchdog from explicit run timeout. Thanks @alkor2000 and @vincentkoc.
PR #97110 feat(i18n): add native app locale inventory. Thanks @vincentkoc.
PR #98396 fix: allow config.patch with defaulted provider baseUrl. Related #98270. Thanks @momothemage and @weltmaister.
PR #98503 fix(usage-bar): use Object.hasOwn instead of in operator to avoid prototype chain pollution. Related #98466. Thanks @chenyangjun-xy and @zhangLei99586.
PR #97111 feat(android): localize core gateway surfaces. Thanks @vincentkoc.
PR #97630 fix(media): normalize Windows inbound paths case-insensitively. Thanks @VectorPeak.
PR #82638 fix(agents): skip implicit provider discovery when models.mode is 'replace' [AI-assisted]. Related #66957. Thanks @eldar702 and @wangzhengshu.
PR #87917 fix sessions json lineage metadata. Related #80286. Thanks @zhangguiping-xydt and @islandpreneur007.
PR #93639 fix(message-tool): apply messages.responsePrefix to outbound sends. Thanks @ZengWen-DT.
PR #94440 fix: #94432 classify Cloudflare challenge 403 as upstream_html instead of auth_html. Thanks @lzyyzznl and @pbm9z95m6z-hue.
PR #98119 fix: reduce Docker build memory pressure. Related #98118. Thanks @zyzo.
PR #97679 feat(node): add --context-path flag to node run/install for reverse-p…. Related #97678. Thanks @wm0018.
PR #98339 fix(irc): classify host-less nick!user allowlist entries as mutable. Thanks @yetval.
PR #97662 fix(matrix): bound raw transport response reads to prevent OOM. Thanks @Alix-007.
PR #98137 fix: hoist timer declaration to avoid TDZ ReferenceError in abortable delay. Thanks @zhangLei99586.
PR #98134 fix: clear timeout timer in Tailscale binary probe Promise.race. Thanks @zhangLei99586.
PR #97989 fix(sms): stop internal tool-trace banners from reaching SMS replies. Thanks @ZengWen-DT.
PR #97972 fix(browser): CDP auth fails with percent-encoded credentials. Thanks @VectorPeak.
PR #98063 fix(reply): suppress tool-error progress delivery when messages.suppressToolErrors is set. Thanks @moeedahmed and @amittell.
PR #94964 fix(reload): cancel deferred channel reload on in-process restart. Related #79487. Thanks @lzyyzznl and @tseller.
PR #98598 fix: restore main lint after timer repairs. Related #98462, #98464. Thanks @zhangLei99586.
PR #98587 fix(slack): guard relay WebSocket frame JSON.parse against malformed input. Thanks @lsr911 and @vincentkoc.
PR #90030 fix(memory-core): skip qmd zero-hit search sync. Related #90023. Thanks @sahibzada-allahyar and @ruben2000de.
PR #98493 fix(transcripts): close readline interface and destroy read stream on error exit. Related #98467. Thanks @wangmiao0668000666 and @zhangLei99586.
PR #98497 fix(cli): show exit code when plugin npm install returns empty output. Thanks @Sanjays2402 and @vincentkoc.
PR #97112 feat(apple): localize core native app surfaces. Thanks @vincentkoc.
PR #98610 fix: restore tooling CI after transcript test addition.
PR #77539 fix(subagent): preserve steered task text on restart redispatch. Thanks @amittell.
PR #97113 feat(i18n): refresh all native locale artifacts. Thanks @vincentkoc.
PR #98620 feat(doctor): warn about in-flight cron jobs. Thanks @masatohoshino.
PR #98605 test(shared): add unit tests for human-readable list formatting. Thanks @dwc1997.
PR #97348 feat(autoreview): support cursor-agent engine. Thanks @hxy91819.
PR #95943 fix(cron): preserve provider/model on isolated-run timeout row. Related #95873. Thanks @ZengWen-DT and @cursoragent and @luke-renjoy.
PR #94149 fix(status): bound systemd service probes so status cannot hang on a wedged systemctl (#84698). Thanks @ZengWen-DT and @cursoragent and @zus-assistant.
PR #88159 fix(cli): retry logs.tail after journal fallback in logs follow. Thanks @anyech and @vincentkoc.
PR #98508 fix(update-check): bound npm registry JSON response read to prevent OOM. Thanks @lzyyzznl.
PR #98496 fix(tlon): bound error response body reads to prevent OOM. Thanks @Pandah97.
PR #98554 fix(openai): bound embedding batch file downloads. Thanks @sunlit-deng and @vincentkoc.
PR #98652 fix: stop invalid message timeouts from stalling.
PR #77973 fix(gateway): cap agentRunCache to prevent unbounded growth under run fan-out. Related #77976. Thanks @fede-kamel and @vincentkoc.
PR #98525 fix(agents): time out local streams without first event. Thanks @osolmaz.
PR #94022 fix(cron): persist startup catch-up deferral ids in service state to prevent read-RPC clobber. Related #93935. Thanks @RichChen01 and @vincentkoc and @yetval.
PR #93810 fix(cron): preserve startup overflow catch-up deferrals in start() maintenance pass. Thanks @yetval and @vincentkoc.
PR #98623 fix: media tools skip env-key provider plugins when auto-selecting models. Thanks @medns.
PR #98665 fix(claude-cli): return updatedInput in can_use_tool allow response for Claude Code 2.1. Related #95171. Thanks @yetval and @carterdawson.
PR #94250 fix(feishu): send blocks as independent messages when blockStreaming is enabled. Related #55027. Thanks @xialonglee and @vincentkoc and @ZichaoLong.
PR #93379 fix(whatsapp): thread authDir through command authorization and owner bypass for LID JID resolution. Related #77755. Thanks @xialonglee and @jiveshkalra.
PR #98646 fix: keep workspace rail file sections scrollable. Related #98566. Thanks @wuqxuan and @645648406-max.
PR #98602 fix: iOS Talk fallback settings opens Voice & Talk. Related #98593. Thanks @PollyBot13.
PR #98611 fix(ui): add overflow-y:auto to workspace rail sections to prevent file list overflow (fixes #98566). Thanks @zw-xysk and @645648406-max.
PR #98619 fix(qa-lab): credential lease requests fail on oversized Convex broker responses. Thanks @ZengWen-DT.
PR #94326 fix(memory-wiki): disambiguate the reserved index page stem for synthesis and ingest. Thanks @yetval and @vincentkoc.
PR #98659 fix(codex): classify get_goal read statuses as successful dynamic tool calls. Thanks @yetval.
PR #96856 fix(codex): successful sessions_spawn and goal tool results recorded as failures. Thanks @nxmxbbd.
PR #98660 fix(inworld): guard voices JSON.parse against malformed API response bodies. Thanks @solodmd.
PR #95430 fix(embedded-agent-runner): pump async streamFn through pumpStreamWithRecovery for mid-stream error recovery. Related #95429. Thanks @lzyyzznl and @vincentkoc and @alexelgier.
PR #98644 fix: tool summaries preserve emoji truncation boundaries. Thanks @ZengWen-DT.
PR #80928 fix(telegram): suppress fallback reply when plugin command returns suppressReply: true. Related #80756. Thanks @alexuser and @UnClouded77.
PR #98701 fix: prevent agents-tools message test timeouts.
PR #92657 feat(usage): ship built-in /usage full footer. Thanks @Marvinthebored.
PR #92877 fix(usage): make built-in footer easier to wrap on Telegram. Thanks @Marvinthebored.
PR #98126 Restore Telegram /steer for active Codex runs. Related #81594. Thanks @100yenadmin and @Kyzcreig.
PR #92037 feat(cron): on-exit schedule — wake on a watched command's exit. Thanks @anagnorisis2peripeteia.
PR #98452 feat(ios): modernize the app with iOS 26 Liquid Glass.
PR #98006 Add Telegram /login Codex pairing flow. Thanks @100yenadmin.
PR #98735 fix(telegram): preserve rich forwarded message text. Thanks @obviyus.
PR #97962 refactor(qa): use transport-native actions in flow scenarios. Thanks @RomneyDa.
PR #98726 fix(nvidia): use Nemotron Super 1M context. Thanks @eleqtrizit.
PR #98691 fix(imessage): shed emoji anywhere in poll-vote echo match. Thanks @omarshahine.
PR #97174 Fix Telegram plugin callback routing. Thanks @goldmar.
PR #89597 fix: migrate QQBot credential backups to SQLite KV.
PR #98536 feat: prepare scoped conversation capability profiles.
PR #92274 fix(agents): classify embedded prompt lock error as permanent announce failure. Related #91527. Thanks @fsdwen and @zackchiutw.
PR #98102 fix(telegram): durably retry inbound media dropped during restart (#98076). Thanks @luoyanglang and @DaveArcher18.
PR #98755 fix(cron): detach session-targeted runs. Related #98121. Thanks @obviyus and @EthanSK.
PR #96065 fix(install): manage config-secretref env refs via OPENCLAW_SERVICE_MANAGED_ENV_KEYS. Thanks @Darren2030 and @obviyus.
PR #98666 fix: diagnose Windows LAN Gateway firewall blocks. Thanks @joshavant.
PR #98501 fix(codex): rename destructive approval mode to ask. Related #98499. Thanks @kevinslin.
PR #98775 fix(telegram): survive transient getUpdates errors and stop per-send cache rewrites. Related #98772, #98773. Thanks @obviyus.
PR #98776 fix(telegram): back off, dead-letter, and tombstone spooled updates so poison messages cannot block or duplicate. Related #98774. Thanks @obviyus.
PR #96454 feat(cli): openclaw attach — launch an external harness bound to a gateway session. Thanks @anagnorisis2peripeteia and @obviyus.
PR #98786 fix(telegram): final replies no longer drop on rejected rich entities, captions, quotes, or long flood waits. Related #98778. Thanks @obviyus.
PR #97496 Doctor: expose channel plugin blocker findings. Thanks @giodl73-repo.
PR #98792 fix(ci): restore docs and test type checks.
PR #98736 improve(ios): simplify Talk controls and composer alignment.
PR #97889 fix(discord): guard JSON.parse against malformed API response bodies. Thanks @lsr911.
PR #98812 fix(codex): preserve plugin app approvals in side conversations.
PR #92283 fix(agents): don't inject A2A turns into isolated-cron sessions_send (#92257). Thanks @harjothkhara and @nailujac.
PR #98138 fix: guard setDeep against empty keys array in Chrome profile decoration. Thanks @zhangLei99586.
PR #98183 fix(gateway): distinguish reachable gateway from failed status probe. Thanks @masatohoshino.
PR #98689 fix(wizard): reject loose gateway port input. Related #98681. Thanks @qingminglong.
PR #98720 fix(nostr): clear per-relay publish timeout timer to prevent dangling handles. Related #98463. Thanks @wangmiao0668000666 and @zhangLei99586.
PR #98818 fix(ci): recover incomplete Swift build caches.
PR #98787 fix(memory-wiki): retry transient existing-page reads in wiki_apply and chatgpt import. Thanks @yetval.
PR #98811 feat(ios): modernize navigation and settings. Related #98803.
PR #98843 docs: update mobile app release messaging. Thanks @joshavant.
PR #93686 fix(weixin): startAccount preserves session routing. Related #93556. Thanks @zhangguiping-xydt and @htkillermax-gif.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.7.1-beta.1
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1-beta.1.tgz
integrity: sha512-Yu/ELLje9mxvFTlaxVGHnIkKvHcLnoEj3AQhzmhpP4k8Fi7/ln0NvYnBgaZ2BJ8tdAAsq3iZ8uroRUuXiMB0dg==
release SHA: 4eb1d333cfeca440b796b6a3f70d3c2bef996243
full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.7.1-beta.1/release-evidence.md
release publish: https://github.com/openclaw/openclaw/actions/runs/28571485937
npm preflight: https://github.com/openclaw/openclaw/actions/runs/28569693832
full release validation: https://github.com/openclaw/openclaw/actions/runs/28569693812
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/28571834366
plugin ClawHub publish: success: https://github.com/openclaw/openclaw/actions/runs/28571835541
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/28572195585
package Telegram E2E: passed in release checks: https://github.com/openclaw/openclaw/actions/runs/28569815816/job/84705725486
advisory WhatsApp live QA: blocked before scenarios by exhausted Convex credential pool after two attempts: https://github.com/openclaw/openclaw/actions/runs/28569693831
Original source All of your release notes in one feed
Join Releasebot and get updates from OpenClaw and hundreds of other software products.
- Jul 1, 2026
- Date parsed from source:Jul 1, 2026
- First seen by Releasebot:Jul 1, 2026
openclaw 2026.6.11
OpenClaw releases a broad reliability update that sharpens message delivery, reconnects, session continuity, and model recovery across major chat channels, while also improving gateway safety, plugin handling, and provider behavior.
We heard the feedback. v2026.6.11 focuses on the rough edges that make OpenClaw feel less dependable, with fixes for misplaced replies, stuck sends, reconnects, model setup failures, and safer admin defaults.
Original source
Full release notes
Highlights
Channel delivery reliability
Delivery and reconnect fixes span Telegram, WhatsApp, Matrix, Google Chat, iMessage, Feishu, Mattermost, WebChat, the Control UI, and the terminal UI.
Fixes newer Google Chat direct messages sometimes being treated like group conversations, so they reach the correct one-to-one chat while Space and group-chat messages keep their existing routing. #58993 Thanks @Starhappysh, @vincentkoc.
Feishu voice replies from OpenClaw now show their duration in the chat bubble, so recipients can see how long the audio is before playing it. #89172 Related #53798. Thanks @areslp, @fxz26284407, @kinrocW.
Discord and Telegram replies and mirrored chat history stay tied to the intended conversation more consistently, including across repeated Telegram replies and session changes. #89911 Thanks @jalehman.
Background image, video, and music results now return to the chat that requested them when the task starts without a full conversation target, instead of appearing to fail after creation or being sent to the wrong peer as the session moves. #89949 Related #86034. Thanks @tianxiaochannel-oss88, @wangwllu.
Telegram answers now stay attached to the user's current question when they quote an earlier bot message, while quotes of other people's messages still reply to the selected quote. #90475 Thanks @moeedahmed.
QQBot group admins can choose how broadly slash commands are available, and private-only commands now direct users to a private chat instead of being exposed or silently ignored in groups. #92154 Thanks @sliverp.
Heartbeat checks using reasoning-capable models now show the assistant's intended reply instead of exposing internal reasoning in Telegram, WhatsApp, and other channels, while opt-in Thinking messages still work. #92356 Related #92260. Thanks @jmpei, @tangtaizong666, @vincentkoc.
Telegram progress-mode chats now clear an old progress bubble before newer tool output or artifacts appear, keeping the conversation in a clean, readable order. #93002 Related #90753. Thanks @shadow-enthusiast, @zhangguiping-xydt.
iMessage command-and-link messages now stay together as one OpenClaw turn when delayed link previews arrive, while unrelated quick messages remain separate for users who enabled same-sender DM coalescing. #93143 Thanks @omarshahine.
Successful Discord replies sent through the message tool no longer trigger a misleading failure warning in affected message_tool_only source-channel turns. #94072 Related #93875. Thanks @chenyangjun-xy, @hoyanhan, @vincentkoc.
WhatsApp group conversations now preserve the right message and group context more reliably during retries, reconnects, and group changes. #94338 Related #7433. Thanks @mcaxtr, @octopuslabs-fl, @xialonglee.
Fixes OpenClaw sometimes replying to its own delayed iMessage echoes when stray leading characters keep the sent message from being recognized. #94442 Thanks @ly-wang19.
Telegram webhook users can keep receiving DMs and group messages through brief channel restarts, configuration reloads, and recovery cycles without temporary message blackouts. #94506 Related #90254. Thanks @obviyus, @travellingsoldier85, @xialonglee.
Matrix E2EE gateways can stay online during long-running use instead of gradually consuming memory until a crash takes channels and in-flight work down. #94942 Related #90455. Thanks @xzh-icenter, @yar-sh.
Telegram users now see the intended native reaction instead of leaked instructions or a dropped reaction-only reply, with success recorded only after Telegram accepts it. #94977 Related #71140. Thanks @Cuttingwater, @hugenshen.
Telegram progress updates for commands, searches, updates, and API activity now stay readable instead of exposing noisy HTML or code-style rows, with plain-text fallback when Telegram cannot parse the formatting. #95007 Related #95002.
Telegram conversations continued in WebChat now show one assistant reply per turn and keep later replies with the active conversation instead of duplicating answers or sending them back to Telegram. #95069 Related #94930. Thanks @heichaowo.
Google Chat now hides misleading internal failure banners when a tool result is harmless, leaving users with the completed answer while normal assistant text remains unchanged. #95084 Related #90684. Thanks @jailbirt, @studentzhou-svg.
Bound multi-agent channel conversations now load the workspace files for the configured agent instead of the default agent, though previously misfiled conversations may start fresh in the corrected agent store. #95118 Related #92903. Thanks @849261680, @axjing.
People sharing an OpenClaw gateway can now assign different models to individual direct-message contacts across supported chat channels, while existing group and wildcard model choices keep working as before. #95120 Related #53638. Thanks @gandalf-at-lerian, @thomaszta, @xydigit-zt.
Telegram now shows that OpenClaw is still working during short initial previews or progress-mode replies instead of leaving the chat silent until the final message arrives. #95183 Related #95004. Thanks @obviyus.
Matrix users and operators now get a clear failure when a homeserver sends an oversized or stalled response, instead of OpenClaw continuing to buffer it and risking unbounded memory use. #95240 Thanks @Alix-007.
Fixes delayed or missing Telegram and other queued channel replies in Kubernetes-style deployments with many injected environment variables, where opening the queue database could stall the gateway. #95278 Related #94571. Thanks @kaka-srp.
Telegram chats recover after one stuck message times out, allowing later messages in the same chat or topic to reach the agent without restarting the gateway. #95299 Related #95248. Thanks @kriegerbangerz-ship-it, @mikasa0818, @obviyus.
When people switch between Telegram and another OpenClaw client in a shared direct conversation, short Telegram replies now follow the latest conversation instead of responding to an older, unrelated Telegram proposal. #95390 Related #95378. Thanks @MaiDuy708, @mikasa0818, @obviyus.
Fixes completed assistant messages appearing twice in Telegram, Discord, Slack, and other streamed chats after a multi-message reply. #95432 Thanks @vincentkoc, @yetval.
WhatsApp replies now stay attached to the direct or group message being answered instead of appearing as a separate message that loses the conversation context. #95483 Thanks @mcaxtr.
Telegram rich-message replies now keep paragraphs, bullets, and status lines separated instead of collapsing multi-line content into one run-on block, with no configuration change required. #95532 Related #95409. Thanks @amknight.
Mattermost operators who enable native slash commands can now use /oc_queue directly in Mattermost to tune active-run queuing, including its mode, debounce timing, cap, and drop handling. #95546 Thanks @amknight.
Previously allowed messages keep reaching named accounts after legacy multi-account channel upgrades, with inherited DM and group access rules preserved across Mattermost, Discord, Slack, Telegram, Signal, WhatsApp, iMessage, and IRC. #95550 Thanks @amknight.
Mattermost users can keep talking in a thread without mentioning the bot again after it replies, and that participation survives gateway restarts until the thread has been idle for seven days. #95552 Thanks @amknight.
Inbound Telegram messages now reach the configured OpenClaw session promptly instead of sitting unanswered until the next polling interval, a gateway restart, or manual intervention. #95577 Related #86957. Thanks @freidrich-goldenflow, @LiuwqGit.
QQBot users now receive complete markdown tables when valid separators use one or two dashes per column, instead of losing the header and all but the final row. #95637 Thanks @ly-wang19.
Synology Chat users can now receive agent replies that take more than 120 seconds when the configured core timeout allows it, instead of having the channel reject them early. #95707 Thanks @sahibzada-allahyar, @vincentkoc.
Telegram forum-topic cron jobs now keep separately configured failure alerts going to their intended destination, even when the main announcement uses a topic in the same chat. #95794 Thanks @vincentkoc.
Fixes WhatsApp group replies that could quote an older OpenClaw message instead of the user's triggering message, so final answers stay attached to the intended message when a reply target is available and avoid pointing back to stale bot context when it is not. #95914 Thanks @mcaxtr.
WhatsApp users can approve or deny prompts by reaction without the prompt staying stuck when WhatsApp identifies the same direct chat differently, while group approvals remain tied to the correct group and person. #95935 Thanks @mcaxtr.
Final reply processing now uses less CPU when OpenClaw checks whether block text was already sent, without changing which reply reaches the chat or how duplicate text is suppressed. #96087 Thanks @vincentkoc.
Exec approval results from external channel plugins now return to the channel or DM where the command started instead of falling back to WebChat or seeming to disappear after approval. #96140 Related #96103. Thanks @lansenger-pm, @vincentkoc, @yetval.
WhatsApp's final answer now stays quoted to the follow-up message a user just sent when replying to an older OpenClaw message, instead of arriving unquoted or pointing back to the older bot reply. #96220 Thanks @mcaxtr.
Nextcloud Talk bots now ignore ordinary file-share and lifecycle events without logging them as bot errors or risking disabled delivery, while malformed chat payloads still return an error. #96243 Related #81566. Thanks @arkyu2077, @rafaelmgbh, @vincentkoc.
Replies and message-tool delivery in Mattermost channels now use channel and thread guidance because the agent identifies those conversations as channels rather than group chats, while existing group-chat behavior remains unchanged. #96244 Related #95645. Thanks @arkyu2077, @iloveleon19, @vincentkoc.
MCP channel integrations now keep conversation lists, message reads, event polls, and waits within predictable bounds even when a client requests excessive limits or timeouts. a39e548 Thanks @vincentkoc.
Long-running streamed auto-replies are less likely to stop early or abort inconsistently when an unusually large timeout is configured. 6c85b90 Thanks @vincentkoc.
Channel progress now shows a repeated status when work genuinely returns to it after another update, instead of hiding useful context as a duplicate. 8a75c4d
Completed channel replies no longer gain late progress notices, preventing stale status text from appearing after the answer is finished. a594d2c Thanks @vincentkoc.
During streaming channel replies, progress messages now keep showing the latest state instead of getting stuck on an older update. e114001 Thanks @vincentkoc.
Matrix forced resets now handle unavailable secret storage without a runtime error, treating recovery access as unavailable so the reset path can continue safely. 5c5a8a4 Thanks @vincentkoc.
Configured channels now remain visible in openclaw channels status --json, while scheduled announcements reject stale entries that have no active plugin to deliver them. a641c0d
Discord voice conversations now keep back-to-back assistant responses moving, so a queued reply plays after the previous audio stream closes instead of remaining stuck. 88b64e4 Thanks @vincentkoc.
Discord progress previews are less likely to stop before the final edits when an agent response has already started arriving. 86ea382
Chats no longer show stray NO_REPLY text when the assistant means to stay silent, while legitimate media responses still arrive without the placeholder. 96c6f80
Telegram streaming replies now show each progress heading once, keeping tool and search updates easier to scan. 013e33c Thanks @vincentkoc.
Telegram messages that get stuck after a long-running task, crash, or gateway restart now resume processing automatically, so later messages no longer wait silently or require operators to repair the queue by hand. #97543 Thanks @RomneyDa, @vincentkoc.
Provider and model recovery
Model setup, OpenAI, OpenRouter, opencode-go, and fast-mode follow-up behavior now recover more clearly in affected configurations.
MiniMax text-to-speech and voice notes are less likely to fail because OpenClaw now explicitly requests the audio format it can decode instead of relying on provider defaults. #73079 Thanks @efe-arv.
Gateway operators can again see provider, model, request status, and timing details in normal logs, making model-routing and transport problems easier to diagnose without enabling extra debug logging. #89648 Related #89300. Thanks @Enominera, @xiaobao-k8s.
Models reached through Google, Mistral, OpenAI Responses, Azure OpenAI Responses, and ChatGPT/Codex Responses now receive clean system instructions without OpenClaw's internal cache-boundary marker leaking into the prompt. #89716 Thanks @Enominera, @masatohoshino.
Cron tool calls using Gemini models through OpenAI-compatible providers now run without nullable fields triggering provider schema rejections. #91559 Related #91542. Thanks @Pick-cat, @qiukui666.
Provider-qualified model IDs now honor their configured agent runtime policies and CLI aliases instead of unexpectedly falling back to OpenClaw's default runtime. #91724 Thanks @vincentkoc, @yu-xin-c.
The chat /models list and other plugin-aware model or provider selection paths now respond quickly instead of stalling for seconds and consuming a CPU core through repeated setup scans, while plugin changes still refresh normally. #93356 Thanks @obuchowski.
Hosted Ollama Cloud users can keep only the models they explicitly configured after a restart, without the full shared catalog being added back, while automatic discovery continues for local and self-hosted Ollama servers. #93956 Thanks @jason-allen-oneal.
Cron jobs can now retry or switch to a configured fallback model when a local provider returns the generic LLM request failed. error, instead of failing with the fallback unused. #94062 Related #93931. Thanks @hugenshen.
Expired provider tokens no longer bury useful operator logs under repeated fallback warnings, while the first warning and later duplicate summaries remain available for diagnosis. #94233 Related #56979. Thanks @goutamadwant, @yanan1991.
Google Gemini 3.5 Flash can now be selected with its full 1,048,576-token context window, avoiding missing-model errors and needless prompt-size rejections. #94726 Related #94723. Thanks @ajwan8998, @anguslogan01, @kevinat.
Dashboard child sessions now handle allowed provider-qualified model choices consistently and give accurate recovery guidance when saved model state is stale. #94752 Related #94713. Thanks @Gr4via.
Claude CLI users no longer get promises of completion updates that may never arrive, because OpenClaw now blocks unsupported native background work before it can strand progress. #95008 Thanks @anagnorisis2peripeteia.
OpenClaw now rejects oversized provider catalog or JSON responses with a clear error before buffering the entire response in memory. #95218 Thanks @Alix-007.
OpenRouter users can now select and run the advertised short DeepSeek V4 model IDs without requests failing with model_not_found because OpenClaw sent a duplicated provider prefix. #95268 Related #95198. Thanks @daniel-alejandro-t, @Darren2030.
With /reasoning on, DeepSeek-style OpenAI-compatible models now show the final answer separately from their reasoning instead of folding it into the reasoning block, with no configuration change required. #95283 Related #95280. Thanks @Marvinthebored, @vincentkoc, @ZengWen-DT.
When a Codex subscription reaches its usage limit, OpenClaw now moves to configured fallback models instead of stopping on the failed result, and it does not retry runs that already produced visible output. #95400 Thanks @jason-allen-oneal, @sallyom.
LM Studio users can now run quantized or multi-variant local models without false assistant-turn failures or phantom suffixed model entries caused by mismatched model keys. #95401 Thanks @MonkeyLeeT.
Google-backed embedded-agent runs now stop reading oversized or never-ending prompt-cache responses before they can exhaust memory or leave the run stalled. #95417 Thanks @Alix-007.
OpenRouter model scans fail safely on oversized or malformed catalogs instead of risking excessive memory use that can destabilize OpenClaw. #95418 Thanks @Alix-007.
OpenRouter setups now reject oversized model catalogs before they can exhaust OpenClaw's memory, without caching or immediately refetching the failed response. #95420 Thanks @Alix-007, @sallyom.
Configured fallback models can now answer when Claude CLI runs out of credits or hits a generic runner failure, instead of leaving users with the failure message as the final response. #95508 Related #95489. Thanks @mikasa0818, @riazrahaman, @sallyom.
Gemini-backed web searches using freshness: "day" or pd now complete instead of failing with a provider 400 error, while broader freshness choices and explicit date ranges retain stricter filtering. #95682 Thanks @Sunjae-k, @vincentkoc.
Follow-up answers from xAI reasoning models such as Grok Composer now preserve earlier reasoning context more reliably, even when configurable reasoning effort is unsupported. #95686 Thanks @fuller-stack-dev, @geraint0923.
Vercel AI Gateway users can now run models chosen from the live catalog, including live-only model IDs that are absent from OpenClaw's bundled list. #95710 Thanks @vincentkoc.
Fixes manifest-defined providers turning valid model IDs into broken ones when stripPrefixes entries have stray spaces or different casing, so operators and plugin authors get the intended provider model. #95744 Related #95743. Thanks @parveshsaini.
First-run setup now opens the credential prompt for a newly installed external provider instead of appearing to loop and leaving OpenAI selected. #95792 Related #95765.
Oversized or stalled provider catalogs now fail quickly with a clear error instead of hanging OpenClaw or consuming unbounded memory, while normal catalogs continue to load. #95827 Thanks @Alix-007.
Xiaomi Token Plan users can now use up to 128K output tokens with mimo-v2.5 and mimo-v2.5-pro instead of being stopped at the outdated 32,000-token limit. #95934 Thanks @idootop.
Tool-heavy model responses can stream with less overhead while repeated tool-call IDs and encrypted reasoning details stay matched to the correct call across Google and OpenAI-compatible providers. #95957 Thanks @vincentkoc.
Token-usage accounting is more reliable for bundled ACPX users because OpenClaw now includes ACPX 0.11.2's persistence fix by default, without a separate package override or manual client update. #96124 Thanks @vincentkoc.
Ollama Cloud users can now find and select glm-5.2:cloud with its 1,000,000-token context window, reasoning, and tool support even when it is absent from the public model list. 11484f8
MiniMax image-understanding requests no longer fail before reaching the provider when a timeout is zero, negative, or extremely large; invalid values now use a normal or safe maximum wait. 4b6182e Thanks @vincentkoc.
Codex runs now follow the current fast-mode choice instead of carrying over an old speed tier, and the status line clearly shows when fast mode is automatic. 77012f9 Thanks @vincentkoc.
Codex-backed conversations now return to normal routing after automatic fast mode is cleared, preventing later turns or model changes from reusing a stale priority tier. 8afc1f7
Fallback agent runs now honor each model's configured automatic fast-mode cutoff even when fast mode is overridden for the run, keeping fallback behavior aligned with the selected model policy. efd3172
Live model-switch retries now preserve the original fast-mode cutoff for long-running sessions, while explicit fast mode avoids misleading automatic-cutoff progress messages. d990115 Thanks @vincentkoc.
Embedded agent runs now keep automatic fast mode working consistently through retries and progress updates without confusing it with a manually selected fast-mode setting. cf1b6fe Thanks @vincentkoc.
Fast-mode runs now keep their speed setting through model fallback retries and show the configured automatic threshold in status, avoiding inconsistent retry behavior and an unhelpful generic label. aa3797c Thanks @vincentkoc.
Agent replies and scheduled cron runs now handle fast-mode fallback retries more reliably, keeping the state needed for the final attempt to finish or report progress correctly. 14e448e Thanks @vincentkoc.
Users no longer see a fast-mode reset notice while model fallback attempts are still running; it appears only when the run reaches its final fallback attempt. 6eb72a8
Users and operators now get clearer handling when a configured live model becomes unavailable because OpenClaw recognizes the provider's "selected model was not found" response as a model-not-found failure instead of a generic error. 2405d02 Thanks @vincentkoc.
Qwen and vLLM now preserve existing chat-template settings consistently when thinking is switched on or off, and provider plugins can use the same tested helper. 2ba9d6e Thanks @vincentkoc.
OpenAI-compatible proxy providers can handle thinking levels and legacy reasoning_effort fields more consistently, with plugin developers and provider maintainers using one documented normalization helper across OpenRouter, Kilocode, and the SDK. 35bafea
Browser and Vite builds can now load the OpenAI ChatGPT Responses provider without a server-only dependency breaking the bundle, while WebSocket failures still appear normally. 8c8eb86 Thanks @vincentkoc.
OpenRouter model scans now accept the same larger valid catalogs as runtime discovery while still rejecting oversized responses before they can consume unbounded memory. ad3b2f4 Thanks @vincentkoc.
OpenAI Responses users, including affected Bedrock Mantle GPT-5.x reasoning setups, now get one clean final answer with aligned saved transcripts and replay context instead of dozens of repeated cumulative copies. #92399 Related #91959. Thanks @amersheeny, @DaiMingNJ, @phoenixyy, @pigfoot.
Scheduled jobs and isolated sessions using opencode-go models now move stalled requests into configured timeout or fallback handling instead of hanging for minutes before ending with a generic LLM request failed error. #93965 Related #93610. Thanks @ForceConstant, @zhangguiping-xydt.
Session, memory, and trust continuity
Sessions, compaction, memory, QMD-backed memory, and Tool Search retain useful state more consistently, while Matrix recovery, tool policies, and approvals stay attached to the intended trust boundary.
Affected agent conversations using OpenAI Responses can now recover and keep replying after a visible channel response leaves their saved history incomplete, instead of every later turn failing before a reply appears. #84708 Thanks @anyech.
When a Codex-backed agent produces unusually large tool output, saved and replayed conversations now keep its text within the usual size limit while leaving non-text content unchanged. #87912 Thanks @AdrianIp0204.
Control UI conversations now stay visible and continue in the same session after a sleep, network drop, or Gateway reconnect instead of disappearing when the next message is sent. #89017 Related #87700. Thanks @zhangguiping-xydt, @asicoe.
Bundled Codex and Copilot integrations now keep mirrored chat history and transcript updates tied to the correct OpenClaw session as storage evolves, while existing file-backed active transcripts continue working during the migration. #89518 Thanks @jalehman.
WebChat's current-session status now matches the conversation you are actually using, so the session identity, thinking level, token context, and cost details no longer come from the fallback main session. #89800 Related #89773. Thanks @killo3967, @sweetcornna.
Your conversation is less likely to lose its context after you press stop during automatic compaction because the compaction request is now cancelled too. #89886 Related #89868. Thanks @lykeion-dev, @openperf, @vincentkoc.
When cross-agent session access is blocked, OpenClaw now lists all required visibility, agent-to-agent, and allow-list settings, helping operators correct policy configuration instead of chasing a nonexistent agent failure. #90489 Related #90443. Thanks @ramitrkar-hash, @sahibzada-allahyar, @vincentkoc.
openclaw memory status now shows an active light or REM dreaming phase instead of incorrectly reporting Dreaming: off, so operators can see that valid memory configurations are enabled. #93113 Related #67868. Thanks @AgentArcLab, @mrossit.
Timed-out QMD memory searches now stop their background work when the agent moves on, preventing abandoned processes from continuing to consume CPU and memory. #93394 Thanks @Alix-007.
Repeated instructions sent after compaction now remain in the conversation, preventing lost turns, orphaned replies, and malformed history that some providers reject. #94328 Thanks @vincentkoc, @yetval.
Memory Wiki's Stale Pages report now leaves durable concept and synthesis pages out of freshness warnings, keeping attention on source and entity pages that may actually need review. #94369 Thanks @SunnyShu0925, @vincentkoc.
Long embedded runs with recent progress are now less likely to be interrupted by stale-session recovery, while genuinely stalled runs can still be cleared so queued work continues. #94701 Thanks @imadal1n, @mrclawfield.
Ollama memory search now respects a configured smaller embedding dimension and keeps indexes for different dimensions separate, avoiding incompatible vectors being mixed together. #94811 Thanks @mushuiyu886.
Memory searches and targeted refreshes now stay connected to the correct OpenClaw session even when transcript filenames change or QMD exports use a different name. #95087 Thanks @jalehman.
Long-running conversations with screenshots or other images now keep their continuity more consistently when OpenClaw makes room for new messages, instead of repeatedly filling up without moving the retained conversation forward. #95128 Thanks @yetval.
Windows users can now run QMD-backed memory indexing and search through configured absolute memory.qmd.command paths, including drive-letter and UNC locations, without OpenClaw stripping the path separators before launch. #95274 Related #92302. Thanks @Ardooken, @ly85206559.
Usage footers selected with /usage full or /usage tokens now remain visible after daily or idle session rollover, so users do not have to turn them on again. #95322 Thanks @litang9.
Follow-up replies, reactions, threaded messages, and status checks stay with the chat they belong to after webchat or system activity, while real channel switches still clear outdated routing details. #95467 Thanks @yetval.
Long-running main conversations now keep their prior context when users return after an overnight or delayed follow-up, rather than silently starting over after an otherwise normal completion. #95472 Thanks @xydt-tanshanshan.
People with large session histories can list, preview, and find sessions without multi-second freezes, while older mixed-case session keys are still migrated at startup. #95699 Thanks @jalehman, @jzakirov.
Fixes delivered replies sometimes being saved to the wrong conversation history, or omitted from it, when operators use a custom or per-agent session.store, improving continuity and auditability for the intended session. #95782 Related #95781. Thanks @youngting520.
Saved session-memory summaries now leave out raw model tokens, tool-call blocks, media placeholders, role tags, and stale NO_REPLY markers so future conversations keep useful context. #95791 Thanks @SweetSophia, @vincentkoc, @YB0y.
Long-running OpenAI sessions using Codex/ChatGPT OAuth can now compact without a separate API key, whether /compact is run manually or triggered automatically. #95831 Related #95693. Thanks @sallyom, @YUI-TIEN.
Long, tool-heavy sessions now compact oversized conversations instead of getting stuck when a large tool result appears at the end. #95860 Related #78478. Thanks @jw8957, @wzhgba, @yetval.
When memory_search is unavailable because the Node runtime lacks node:sqlite, OpenClaw now points users to a compatible runtime instead of sending them through unrelated embedding-provider troubleshooting. #95916 Thanks @rrrrrredy, @vincentkoc.
Developers and operators inspecting a compacted Copilot session now get its summary, before-and-after token counts, and session details instead of an incomplete result. #96049 Thanks @vincentkoc.
The /stop and abort commands now keep stopping active runs, clearing queued followups, and ending related subagents promptly even when session keys need canonicalizing or abort metadata cannot be saved. #96201 Thanks @jalehman.
Voice Wake upgrades now keep existing trigger phrases and routing rules working as OpenClaw moves them from retired settings files into the shared state database. bdf81a8
Upgrades from older OpenClaw state layouts now preserve update notifications, check throttling, available-version records, and automatic-update attempt history as that state moves into SQLite. eb00d49 Thanks @vincentkoc.
Plugin-channel conversations keep their intended session more reliably through startup, doctor checks, and state repairs, with older binding records migrated into OpenClaw's shared database. 9f888d9
Windows memory-backed session syncing now keeps using the intended transcript file even when path formatting differs. b3b5b08 Thanks @vincentkoc.
Embedded agent runs with a missing or blank session key now stay attached to the intended session instead of being sent through inconsistent session routing. 911f853 Thanks @vincentkoc.
When a model guesses the wrong tool name, Tool Search and Code Mode now show how to find and retry the correct tool, reducing the risk that long-running sessions get stuck or lose durable memory during compaction. #93374 Related #92273. Thanks @mushuiyu886, @poison, @vincentkoc.
Fixes assistant replies disappearing from webchat, Control UI, Feishu, and other embedded conversations after compaction, keeping refreshed chats readable and follow-up requests separate. #95484 Related #76729. Thanks @maweibin, @njuboy11, @vincentkoc.
OpenClaw memory features now keep active, reset, and deleted transcript coverage aligned with configured session stores and agent ownership, making dreaming, QMD exports, indexing, and sync less likely to miss or misattribute conversation history. #96162 Thanks @jalehman.
Gateway TLS setup now rejects blank certificate or key paths clearly or uses OpenClaw's defaults, avoiding confusing startup and certificate-generation failures while preserving valid paths. #94054 Thanks @miorbnli.
Configured plugin policies keep blocking or rewriting sensitive tool calls after Gateway registry changes, reloads, or later hook initialization instead of being silently skipped. #94545 Thanks @jesse-merhi.
Mobile operators with operator.approvals can now see and resolve chat-triggered exec approvals on the iOS device that started the request, including while the app is open, without relying only on push notifications. #95175 Thanks @joshavant.
Control UI users now get the patched DOMPurify release, reducing exposure to the GHSA-cmwh-pvxp-8882 sanitizer vulnerability without changing how the interface behaves. #95691 Thanks @vincentkoc.
"Always allow" approvals for plugin conversation bindings now carry over from the old settings file and are less likely to be lost or overwritten when multiple OpenClaw processes are running. ae41b00 Thanks @vincentkoc.
Matrix users now see that the active recovery key is required before a forced cross-signing reset can proceed, preventing a second reset from leaving encryption recovery and room-key backups unusable. #95720 Related #78396. Thanks @jteddy, @vincentkoc, @xialonglee.
Slack router relay mode
Slack router relay mode gives managed and multi-gateway deployments a supported way to centralize incoming Slack traffic while preserving gateway ownership of mentions, threads, and replies.
Managed Slack deployments can now use a central router to send mentions and ongoing threads to the right OpenClaw gateway while replies still appear through Slack. #94707 Thanks @pash-openai, @sjf-oa.
Raft External Agent wake bridge
The Raft channel and Raft plugin now support the local CLI wake path for External Agents.
Raft External Agent operators can now wake an OpenClaw agent when a workspace has pending work through the supported local CLI bridge, with named profiles and checks for missing CLI prerequisites. #95497 Thanks @vincentkoc.
Official plugin installation and repair
Plugin management and the plugin inventory now cover more official integrations through normal installation, update, and repair workflows.
When plugins.allow uses a channel or package name instead of the real plugin id, startup guidance now identifies the unmatched entry and shows the discovered plugin ids needed to correct the configuration. #68389 Related #68352. Thanks @aym9999, @JIRBOY, @lyfuci, @pahuchi-joe, @zmxccxy.
Plugin trust warnings for first-time or fresh installs now include a ready-to-copy plugins.allow example and commands to list or inspect plugin ids, so users can resolve the warning before trusting or reinstalling plugin code. #78105 Related #68780. Thanks @JIRBOY, @pahuchi-joe.
Codex migrations now work with standard global plugin installs because openclaw migrate can find the installed provider instead of failing with Unknown migration provider. #89612 Related #89609. Thanks @mugabuga, @zerone0x.
Plugin installs and updates recover from stale OpenClaw-managed dependency pins instead of failing with npm EOVERRIDE, without later synchronization downgrading or removing packages users installed explicitly. #91786 Related #91772. Thanks @amknight, @mkdelta221.
Channel plugin developers can now carry native sender and conversation identifiers through hooks and selected exec workflows, giving integrations more precise routing without breaking existing sender and chat fields. #91903 Thanks @lanzhi-lee, @vincentkoc.
Plugin discovery now repeats fewer blocking filesystem checks during startup, reducing avoidable cold-start work for bundled plugin trees, especially on slower Windows filesystems, without changing bundle discovery behavior. #93919 Related #76209. Thanks @ml12580, @shenhonglong456-ai.
Plugin Gateway methods now work through openclaw gateway call after registration, so plugin authors can use them from scripts and cron jobs instead of hitting an unknown method error. #94154 Related #94127. Thanks @BryceMurray, @Pick-cat, @vincentkoc.
ClawHub skill discovery and install checks are less likely to stall or crash OpenClaw because oversized or stalled marketplace responses are now stopped before they can exhaust memory. #95226 Thanks @Alix-007.
Pinned official plugins no longer stay on an old release when operators follow the repair advice from openclaw doctor or deep gateway status after an upgrade. #95541 Thanks @ooiuuii, @vincentkoc.
Managed npm plugin updates are less likely to break work on a running gateway with missing-module errors, because the older plugin files remain available until a later gateway start cleans them up. #95589 Thanks @ooiuuii, @vincentkoc.
Official plugin cards for supported brands now show recognizable icons in ClawHub and other catalogs, and plugin authors can provide marketplace artwork through the documented manifest field. #95845 Thanks @Patrick-Erichsen.
Official plugin icons in ClawHub and other catalogs are no longer forced into the same hard-coded color, allowing Simple Icons to use its default artwork instead. #95987 Thanks @Patrick-Erichsen.
Docker users now have an official openclaw/openclaw Docker Hub mirror alongside GHCR, with versioned beta releases kept from moving the stable latest and main aliases. #97122 Thanks @vincentkoc.
Git-based OpenClaw installs now use the repository's pinned pnpm version even when another global pnpm or surrounding project package manager is present, so setup commands no longer run against the wrong package-manager environment. bd74a62 Thanks @vincentkoc.
ClawHub skill-card and update requests now complete or time out predictably even when they receive an unusually large timeout value. 8cd0c11 Thanks @vincentkoc.
Windows users can complete source installs without a llama.cpp setup step blocking or slowing them, and the installer restores their existing shell setting afterward. ea9065b Thanks @vincentkoc.
More official channel, provider, and web-search plugins can now be installed or repaired through normal external package catalogs while still being recognized from their existing credentials. #95683 Thanks @vincentkoc.
Channels and Messaging
Additional channel fixes
Additional Telegram and channel configuration fixes cover narrower delivery and setup problems.
Telegram reply chains keep cached replies attached after context changes instead of failing when those cached replies are reused. #82909 Thanks @lidge-jun.
Fixes Discord dropping an entire long reply with fenced code blocks when a closing code fence lands near the 2,000-character message limit. #95661 Thanks @ly-wang19.
Slack operators can now store tokens and signing secrets as supported SecretRef inputs, while reads, writes, allowlist and target lookups, and setup checks use the resolved credentials instead of rejecting or misreading the references. 7da955f Thanks @vincentkoc.
Channel capability checks now return a clear timeout when an integration stops responding, keeping troubleshooting from hanging in a terminal or automation run. 8ecdb97 Thanks @vincentkoc.
Providers and Models
Additional provider and model fixes
Additional model configuration fixes improve selection, usage reporting, status output, and streaming.
After changing the default model, starting a fresh channel session with /new or /reset now uses the new default instead of silently reusing the previous cached model, while explicit /model overrides remain unchanged. #77339 Related #77322. Thanks @mjamiv, @ZaynL.
Behind HTTP or HTTPS proxies, Codex/OpenAI usage and quota checks in openclaw status --usage --json and the Control UI now retrieve usage windows instead of failing when chatgpt.com is unreachable directly. #93943 Related #78714. Thanks @TnzGit, @TurboTheTurtle.
/status now keeps the active model and how to clear a pinned choice on one compact line, so Discord and other chat users can scan model status without a multi-line explanation. #95797 Thanks @Solvely-Colin.
Anthropic streaming responses now keep interleaved text, thinking, and tool-call updates attached to the correct response block instead of mixing them when several blocks are active at once. #96013 Thanks @vincentkoc.
Memory, Sessions, and State
Additional session and memory fixes
Additional memory fixes cover resume, indexing, synchronization, and cleanup edge cases.
Memory-wiki status cards and bridge-backed source sync are less likely to fail during simultaneous page rewrites because OpenClaw now retries the transient path mismatch while still stopping unsafe or persistent filesystem writes. #94443 Related #92134. Thanks @cknzraposo, @ZengWen-DT.
Fixes recent-session resume opening a fresh conversation for users with long workspace paths instead of returning to their existing transcript. #94578 Related #94577. Thanks @rohitjavvadi, @vincentkoc.
Memory Wiki now keeps user-written notes intact when an existing source page is re-ingested or synced, while still refreshing its generated content. #95614 Thanks @yetval.
Fixes Memory Wiki repeatedly copying its own generated source pages back into itself when its vault is stored inside the workspace memory folder, avoiding duplicate files, repeated cleanup, and unnecessary memory index growth. #95666 Related #95657. Thanks @Johannes0402, @TurboTheTurtle, @vincentkoc.
For operators using Active Memory with memory-core dreaming, nightly dreaming jobs no longer start unnecessary recall work and hit 45-second timeouts, while regular web chats continue to receive memory recall. #95721 Related #78500. Thanks @vincentkoc, @vishutdhar, @xialonglee.
Agent sessions with many tool calls repair out-of-order results with less repeated work while keeping each result paired with the right tool call. #96014 Thanks @vincentkoc.
Windows qmd-backed memory work now stops all related processes after availability probes and command timeouts, preventing qmd children from continuing to run in the background. 830691b
Gateway, Security, and Trust
Restart and readiness recovery
Gateway health, troubleshooting, and openclaw agent workflows now report and recover from more runtime failures clearly.
When a configured or explicit remote gateway is slow but reachable, openclaw gateway probe --timeout ... now waits for the requested timeout instead of reporting it unreachable after a shorter internal cutoff. #89859 Related #65355. Thanks @hellocli, @mushuiyu886.
Long or parallel internal subagent runs now avoid unnecessary live-preview processing, while visible subagent sessions still show live updates and final responses. #91906 Thanks @lanzhi-lee, @vincentkoc.
ACP conversations, especially Kiro-backed threads, now continue past the first reply by starting a fresh session when the backend can no longer resume the old one. #93547 Related #87830. Thanks @amersheeny, @chouzz.
When Linux memory pressure kills a child command or session, systemd-managed OpenClaw gateways now stay running and keep channel connections alive while reporting the child failure. #93585 Thanks @snowzlm.
Canceling an OpenClaw run during tool work now ends it promptly instead of starting another model turn or leaving the session locked. #94412 Thanks @szsip239, @vincentkoc.
Scheduled OpenClaw jobs using cloud models now recover from silent, stuck model calls by default, helping prevent later cron work from backing up while local or self-hosted providers keep their existing timeout behavior. #94445 Thanks @bek91.
Gateway readiness checks now turn unhealthy during a restart drain, preventing traffic managers from sending new work to a Gateway that is temporarily rejecting requests. #94915 Related #78136. Thanks @markoub, @maxschachere, @vincentkoc.
Mac users can keep LaunchAgent-managed gateways running through OpenClaw upgrades instead of seeing repeated crash-and-restart loops when older text-transform runtime code is still cached. #95081 Related #95057. Thanks @849261680, @YvesLaRose.
Codex-powered conversations in TUI, WebChat, and compatible streaming APIs now show replies as they are written, while replacing provisional text cleanly so the final answer does not include stale drafts. #95404 Related #95422. Thanks @agonza1, @vincentkoc.
After a gateway restart, users no longer see a misleading retry notice when OpenClaw is already resuming the interrupted reply or reporting the actual recovery failure, reducing unnecessary duplicate attempts. #95431 Thanks @moeedahmed, @vincentkoc.
Long, tool-heavy agent sessions now retain prompt-cache savings as results accumulate, reducing avoidable delays and cost from resending rewritten history between turns. #95624 Thanks @vincentkoc.
Gateway restarts no longer leave configured Codex, Copilot, or trusted plugin-based agents temporarily unavailable, and untrusted workspace plugins remain blocked from activating themselves. #95652 Thanks @vincentkoc.
Long responses, busy tool streams, image-heavy requests, and memory recall now incur less CPU and filesystem overhead without requiring settings or workflow changes. #95697 Thanks @vincentkoc.
Operators can again add or update scheduled announcements for known channels in no-config setups, while configured environments still reject disabled, stale, ownerless, or unknown destinations before delivery. #95754 Thanks @vincentkoc.
macOS users are less likely to see a false port-conflict failure when stopping or updating a managed gateway, because OpenClaw briefly waits for normal shutdown to release the port while still reporting conflicts that persist. #95886 Thanks @fuller-stack-dev.
Copilot-backed agents can now ask users a question and accept the answer through OpenClaw's normal chat reply flow, while compact tool-search and code-mode controls avoid loading the full tool catalog into the session. #96005 Thanks @vincentkoc.
Gateway restarts on systemd or container setups no longer leave old Codex or Claude adapter processes behind, helping new ACPX sessions start without minutes-long cleanup stalls after repeated restarts. #96032 Thanks @t2wei, @vincentkoc.
Copilot-backed sessions now show plan updates as work unfolds, and their native child tasks stay visible through completion or failure instead of disappearing from OpenClaw's task view. #96062 Thanks @vincentkoc.
Connected agents such as OpenCode now start through OpenClaw even when their harness cannot select a requested model, while genuinely unsupported model choices still return the original error. #96068 Related #95869. Thanks @SabaTech-dev, @vincentkoc.
Plugins using heartbeat_prompt_contribution now deliver their heartbeat-specific context to models when agents run through harness runtimes such as the Codex app-server, without affecting ordinary user turns or plugins that do not use the hook. #96233 Thanks @azogheb, @vincentkoc.
Windows gateway cleanup and listener checks now handle UTF-16 WMIC command-line data consistently, reducing failed or conflicting identification of the running gateway process. 15c880a Thanks @vincentkoc.
Long-context, tool-heavy agent sessions now keep prompt-cache reuse steadier across repeated turns without losing per-result size limits, while advanced operators can configure larger tool-result caps for large-context models without configuration rejection. a60947f Thanks @vincentkoc.
Long, tool-heavy agent sessions are less likely to bloat model requests as tool output accumulates, while repeated turns keep stable prompt-cache reuse. 2f33999 Thanks @vincentkoc.
Gateway restarts now use OpenClaw's durable state database for the handoff, while stale, malformed, wrong-process, or superseded requests are discarded before they can affect the restart. 0ad48da
Gateway status, doctor, and restart diagnostics now retain recent restart details in OpenClaw's shared state database, while expired or malformed records are still discarded. a39a3b7 Thanks @vincentkoc.
Gateway restarts and managed-service updates now keep the correct continuation message, avoid reusing stale handoff state, and mark failed update handoffs consistently. 514b336 Thanks @vincentkoc.
Gateway-launched agents no longer lose owner-only OpenClaw tools during tasks such as live cron checks, so authorized operations can use the intended tools with the correct request context. c2ee9b0 Thanks @vincentkoc.
Malformed gateway restart requests now fail clearly without scheduling a restart, preventing bad or accidental integration calls from unexpectedly restarting the gateway. 108d6d7 Thanks @vincentkoc.
Stale node requests queued by the gateway now expire automatically, so old work is less likely to linger and affect later activity. f6d432e
Plugin workflows are less likely to stall or overload the gateway when an integration requests too much subagent session history, because each read is now capped at a safe limit. b66b450 Thanks @vincentkoc.
Image descriptions now handle extremely large timeout settings consistently by capping them to a safe runtime limit instead of risking timer overflow. 88b21fc
Embedded agent sessions now wait reliably for another session to release its file lock, even with an extremely large timeout, instead of risking timer overflow. 4c736df Thanks @vincentkoc.
Queued commands with extremely large task timeout settings now time out reliably because OpenClaw caps the wait at the runtime's safe maximum. 1f6ae32 Thanks @vincentkoc.
Fixes normalization-core exposing the wrong string-coercion entry point and ACP sessions showing an outdated fast-mode value, so integrations receive the intended API and users see the mode actually in effect. 93ad397 Thanks @vincentkoc.
Fast auto runs now deliver final replies more consistently, with progress-reset handling limited to automatic mode so it does not interfere with responses or forwarded callbacks. 9e8ab08 Thanks @vincentkoc.
Agent sessions using OpenAI Responses now resume tool-based work without failing or losing progress when replayed history contains mismatched tool requests and results. b4bc1f2 Thanks @vincentkoc.
Completed plugin subagent and QA runs are no longer misreported as failures when gateways return alternate completion envelope shapes, making successful handoffs more reliable for plugin authors and operators. d1b268f Thanks @vincentkoc.
Fixes completed subagent tasks sometimes ending without an update, so users receive the result or the parent agent's next step. 68a1e00 Thanks @vincentkoc.
Remote result and media delivery
Additional Gateway fixes return remote media and completed subagent results to the active conversation more reliably.
Generated images from a remote Codex app-server now arrive as attachments instead of showing Media failed or returning only text after successful generation. #96212 Thanks @sjf-oa.
When a subagent finishes, its result now reaches the active parent run more reliably instead of appearing silent. 7fc4bbc Thanks @vincentkoc.
Additional security and trust fixes
Additional secret-handling hardening keeps trusted package paths within the intended boundary.
Trusted OpenClaw package sources now reject lookalike sibling paths, so trusting /artifactory/openclaw no longer also admits paths such as /artifactory/openclaw-malicious. 12c34fc Thanks @vincentkoc.
Clients and Interfaces
C - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jun 30, 2026
- Jun 29, 2026
- Date parsed from source:Jun 29, 2026
- First seen by Releasebot:Jun 25, 2026
- Modified by Releasebot:Jul 6, 2026
openclaw 2026.6.11-beta.2
OpenClaw ships a broad 2026.6.11 update that improves channel control, agent workflows, plugin distribution, mobile settings, and provider coverage, while also tightening delivery reliability, fallback behavior, and session safety across chat channels and gateways.
2026.6.11
Highlights
More capable channel control: Slack relay mode, native Mattermost /oc_queue, and per-DM model overrides make channel operations easier to automate and tune. (#94707, #95546, #95120) Thanks @sjf-oa, @amknight, @xydigit-zt, @thomaszta, and @gandalf-at-lerian.
Richer operator workflows: openclaw agent --message-file and the RAFT CLI wake bridge add practical file-driven and remote wake-up paths. (#93351, #95497) Thanks @ooiuuii and @vincentkoc.
Safer plugin distribution: additional official plugins are externalized cleanly, with bundled plugin icon metadata available to installed clients. (#95683, #95845) Thanks @vincentkoc and @Patrick-Erichsen.
Stronger mobile operations: Android settings detail panels improve configuration visibility and control on mobile. (#95148) Thanks @Tosko4.
More reliable agent turns: Codex partial deltas, harness activation, and long-context prompt-cache stability reduce lost progress and inconsistent runs. (#95404, #95652, #95624) Thanks @agonza1 and @vincentkoc.
Changes
Gateway and plugin tooling: channel identity hook context and per-agent usage-cost reporting give integrations and operators more precise routing and accounting. (#91903, #94483) Thanks @lanzhi-lee, @vincentkoc, and @ly-wang19.
Provider and model coverage: catalog parsing, reasoning controls, provider model resolution, and encrypted reasoning support now handle more live provider variants. (#95283, #95710, #95268, #95744, #95686, #93956) Thanks @ZengWen-DT, @vincentkoc, @Marvinthebored, @Darren2030, @daniel-alejandro-t, @parveshsaini, @geraint0923, @fuller-stack-dev, and @jason-allen-oneal.
Fixes
Channel delivery: Telegram progress rendering, webhook lifecycle, reaction directives, duplicate mirror writes, queued update draining, and WhatsApp durable reply targets are now more reliable. (#95532, #93002, #95183, #94506, #94977, #95069, #95577, #95007, #95914) Thanks @amknight, @snowzlmbot, @zhangguiping-xydt, @shadow-enthusiast, @xialonglee, @travellingsoldier85, @obviyus, @hugenshen, @Cuttingwater, @heichaowo, @LiuwqGit, @freidrich-goldenflow, @mcaxtr, and @vincentkoc.
WhatsApp and message identity: native quotes, Baileys group reliability, and approval reactions across JID drift now preserve the intended conversation context. (#95483, #94338, #95935) Thanks @mcaxtr, @xialonglee, and @octopuslabs-fl.
Gateway and session safety: stuck release claims, draining-state reporting, remote probe timeouts, malformed paired access lists, and non-delivery session identity are handled without silent routing loss. (#95299, #94915, #89859, #92178, #95467) Thanks @mikasa0818, @kriegerbangerz-ship-it, @markoub, @vincentkoc, @maxschachere, @mushuiyu886, @gozzbb2, @wangmiao0668000666, @ly-wang19, @EmilioNicolas, @yetval, and @hellocli.
Agent and fallback behavior: aborted runs stop cleanly, provider response bodies stay bounded, Claude CLI credit failures continue through fallback, and Codex usage-limit responses classify correctly. (#94412, #95218, #95508, #95420, #95418, #95417, #95400) Thanks @szsip239, @vincentkoc, @Alix-007, @mikasa0818, @sallyom, @riazrahaman, and @jason-allen-oneal.
Provider and model edge cases: OpenRouter IDs, Ollama discovery and embeddings, Gemini freshness, and model-catalog prefixes now resolve against the right runtime metadata. (#95268, #94811, #93956, #95682, #95744) Thanks @Darren2030, @daniel-alejandro-t, @mushuiyu886, @jason-allen-oneal, @Sunjae-k, @parveshsaini, @vincentkoc, and @shakkernerd.
Configuration and UI guardrails: non-interactive configure fails closed, TLS paths reject empty values, memory artifacts are sanitized, and the UI uses the patched DOMPurify release. (#94238, #94054, #95791, #95691) Thanks @ruomuxydt, @NianJiuZst, @miorbnli, @vincentkoc, @SweetSophia, and @YB0y.
Cron and delivery validation: no-config delivery checks, thread-aware dedupe, and pending recurring runs retain their intended destinations. (#95754, #95794, #94323) Thanks @vincentkoc and @yetval.
Complete contribution record
This audited record covers the complete v2026.6.10..0a4d0da history: 308 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #95406 test(qa): make release scorecard categories explicit. Thanks @RomneyDa.
PR #94700 test: fold HTTP API script proof into QA Lab. Thanks @RomneyDa.
PR #95499 fix(test): unit-fast flow mocks. Thanks @RomneyDa.
PR #95308 fix(ci): filter ClawSweeper comment dispatches before token minting. Thanks @vincentkoc.
PR #95532 fix(telegram): materialize rich message line breaks as
. Related #95409. Thanks @amknight and @snowzlmbot.PR #91786 fix(plugins): reconcile managed npm root overrides with managed peer pins. Related #91772. Thanks @amknight and @mkdelta221.
PR #93002 Fix Telegram progress draft cleanup before tool output. Related #90753. Thanks @zhangguiping-xydt and @shadow-enthusiast.
PR #95175 fix: route mobile exec approvals to reviewer device. Thanks @joshavant.
PR #94506 fix(telegram): stop clearing registered webhook on channel restart. Related #90254. Thanks @xialonglee and @travellingsoldier85.
PR #95183 fix(telegram): materialize streaming progress placeholders. Related #95004. Thanks @snowzlmbot and @obviyus.
PR #95483 fix(whatsapp): preserve native quote replies. Thanks @mcaxtr.
PR #94338 fix(whatsapp): wire missing Baileys retry/cache hooks for group message reliability. Related #7433. Thanks @xialonglee and @mcaxtr and @octopuslabs-fl.
PR #94707 feat(slack): add relay mode for incoming messages. Thanks @sjf-oa.
PR #94977 fix(telegram): honor outbound reaction directives. Related #71140. Thanks @hugenshen and @Cuttingwater.
PR #95069 fix(telegram): skip mirror write when primary reply already exists (#94930). Thanks @heichaowo.
PR #95550 Preserve inherited channel account policies during migration. Thanks @amknight.
PR #95390 fix #95378: #95378. Thanks @mikasa0818 and @obviyus and @MaiDuy708.
PR #93143 fix(imessage): keep split-send coalescing opt-in. Thanks @omarshahine.
PR #95008 fix(claude-cli): also disable native background Bash and Monitor in --print runs. Thanks @anagnorisis2peripeteia.
PR #94545 fix: keep trusted policies with hook registry. Thanks @jesse-merhi.
PR #95007 fix(telegram): render progress draft rows as plain readable text. Related #95002. Thanks @snowzlmbot.
PR #95624 fix(agents): keep long-context tool-result prompts cache-stable. Thanks @vincentkoc.
PR #95625 fix(ci): smooth PR runner-registration bursts. Thanks @vincentkoc.
PR #95572 fix(agents): reject bind specs with extra colon segments. Thanks @ly-wang19.
PR #95653 test(agents): add large prompt cache coverage. Thanks @vincentkoc.
PR #95640 Consolidate iOS notification permission UX. Thanks @joshavant.
PR #95546 feat(mattermost): register /oc_queue as a native slash command. Thanks @amknight.
PR #95019 fix(skills): point gog brew install at homebrew-core gogcli (#95017). Thanks @ZengWen-DT and @vincentkoc and @Sedrak-Hovhannisyan.
PR #93378 test(telegram): keep live polling leases protected. Related #93375. Thanks @mmyzwl and @Yachiyo1680.
PR #95084 fix(googlechat): sanitize internal tool-trace lines from outbound text (#90684). Thanks @jailbirt and @studentzhou-svg.
PR #95278 Avoid copying process.env in ingress queue state DB opens. Related #94571. Thanks @kaka-srp.
PR #95577 fix #86957: drain worker-spooled Telegram updates immediately. Thanks @LiuwqGit and @freidrich-goldenflow.
PR #95128 fix(compaction): count user-message image blocks in cut-point estimator. Thanks @yetval.
PR #93887 fix(ssh): reject hostnames with stray leading or trailing colons in parseSshTarget. Thanks @miorbnli.
PR #95191 docs(plugins): document subagent_ended hook fields. Related #95186. Thanks @MaHaoHao-ch and @ken-jo.
PR #95102 fix(config): add stdio to McpServerSchema transport union. Related #95082. Thanks @lzyyzznl and @ken-jo.
PR #95465 fix(sdk): type-narrow manifest.files in pack staging root helper. Thanks @wangmiao0668000666.
PR #95664 refactor(plugins): move owner skills into plugins. Thanks @vincentkoc.
PR #95299 fix #95248: OpenClaw release_lane is a no-op when claim is held by a live worker; stuck Telegram inbound events block agent response until gateway restart. Thanks @mikasa0818 and @kriegerbangerz-ship-it.
PR #94687 fix(gateway): accept port for health and probe. Related #79100. Thanks @BryanTegomoh and @ozthedivine.
PR #95649 fix(ci): bundle test shards and right-size runners. Thanks @vincentkoc.
PR #95243 fix(docs): show inline read_when hints in docs:list. Thanks @hugenshen and @vincentkoc.
PR #95283 fix(openai-completions): seal native reasoning before the answer under /reasoning on. Related #95280. Thanks @ZengWen-DT and @vincentkoc and @Marvinthebored.
PR #95497 feat(raft): add CLI wake bridge channel. Thanks @vincentkoc.
PR #95459 fix(cron): use main-session systemEvent for silent quick-create preset. Related #95073. Thanks @ZOOWH and @vincentkoc and @vporton.
PR #95503 fix #89466: [Bug]: Control UI chat input text not cleared after sending. Thanks @zhangguiping-xydt and @vincentkoc and @zhong18804784882.
PR #95684 fix(skills): harden ClawHub update policy. Thanks @vincentkoc.
PR #95683 feat(plugins): externalize additional official plugins. Thanks @vincentkoc.
PR #95681 fix(ci): debounce canonical main runner admission. Thanks @vincentkoc.
PR #95652 fix(agents): activate selected harness plugins. Thanks @vincentkoc.
PR #95404 fix(codex): stream non-final-answer assistant deltas as partials. Related #95422. Thanks @agonza1 and @vincentkoc.
PR #58993 fix(googlechat): support spaceType field for DM vs Space detection. Thanks @Starhappysh and @vincentkoc.
PR #94148 fix(doctor): prevent non-interactive --fix from auto-restarting gateway. Related #78217. Thanks @zhangguiping-xydt and @esqandil.
PR #89859 fix(gateway): honor remote status probe timeout. Related #65355. Thanks @mushuiyu886 and @hellocli.
PR #95466 fix(ci): increase timeouts in flaky process-group signal test. Thanks @jason-allen-oneal.
PR #95720 fix(matrix): prevent double bootstrapCrossSigning reset in forced reset. Related #78396. Thanks @vincentkoc and @jteddy.
PR #95707 fix(synology-chat): remove duplicate local deliver timeout. Thanks @vincentkoc.
PR #95706 fix(whatsapp): remove dead watchdog timeout clamp. Thanks @vincentkoc.
PR #95719 fix(cli): sync capability inspect metadata flags with registered options. Thanks @vincentkoc.
PR #95721 fix(active-memory): exclude dreaming-narrative session keys from eligibility gate. Related #78500. Thanks @vincentkoc and @vishutdhar.
PR #95602 test: save ~79 CI hours/mo in gateway session utils. Thanks @zats and @vincentkoc.
PR #94412 fix(agent-core): stop loop after aborted tool run. Thanks @szsip239 and @vincentkoc.
PR #94915 fix(gateway): report draining state in readiness. Related #78136. Thanks @markoub and @vincentkoc and @maxschachere.
PR #95691 fix(ui): bump dompurify to patched release. Thanks @vincentkoc.
PR #95710 fix(vercel-ai-gateway): resolve dynamic model selections. Thanks @vincentkoc.
PR #94072 fix(agents): count message-tool source reply as user-facing reply for tool error warnings. Related #93875. Thanks @chenyangjun-xy and @vincentkoc and @hoyanhan.
PR #94784 fix(doctor): stop promising --fix for working isolated shell-prompt cron jobs (#94655). Thanks @ZengWen-DT and @altaywtf and @geekoagent.
PR #93504 fix(device-pairing): guard role normalization against non-string entries. Thanks @ly-wang19.
PR #92178 fix(gateway): normalize malformed paired access lists. Related #90654. Thanks @wangmiao0668000666 and @ly-wang19 and @EmilioNicolas.
PR #83041 Fix config patch restart-required notices. Related #46797. Thanks @xuruiray and @Stache73.
PR #95754 fix(cron): preserve no-config delivery validation. Thanks @vincentkoc.
PR #93351 feat(cli): add --message-file to openclaw agent. Thanks @ooiuuii.
PR #95485 fix(ui): roll values near 1M over from k to M in compact token format. Thanks @NarahariRaghava and @vincentkoc.
PR #94622 fix(build): allow tsdown heap override. Thanks @tayoun.
PR #76668 meta(issue-template): add dedicated docs bug report form. Related #76664. Thanks @WadydX.
PR #91193 fix(cli): document Commander rawArgs internal API dependency in action-reparse.ts. Related #83893. Thanks @whiteyzy and @davinci282828.
PR #77339 fix(auto-reply): clear runtime model cache on reset. Related #77322. Thanks @mjamiv and @ZaynL.
PR #89628 Speed up precomputed command help startup. Thanks @yyzquwu.
PR #95087 refactor: add memory and QMD session identity mapping. Thanks @jalehman.
PR #89323 fix(web-ui): skip hidden subagent picker pages. Related #89249. Thanks @giodl73-repo and @originsecured-do.
PR #84794 Clean up isolated cron sessions after runs. Related #84707. Thanks @TurboTheTurtle and @bottenbenny.
PR #95794 fix(cron): compare thread IDs when deduping failure destinations. Thanks @vincentkoc.
PR #95791 fix(session-memory): sanitize model artifacts before saving memory. Thanks @vincentkoc and @SweetSophia and @YB0y.
PR #95805 fix(agents): normalize hallucinated Office file extensions. Related #93326. Thanks @vincentkoc and @lzyyzznl and @xzh-icenter and @bhnan.
PR #89612 fix: include persisted plugin contracts for migrations. Related #89609. Thanks @zerone0x and @mugabuga.
PR #89981 fix(diagnostics-otel): keep full model id on spans instead of collapsing to "unknown". Thanks @mycarrysun and @vincentkoc.
PR #90489 fix(sessions): clarify cross-agent visibility guidance. Related #90443. Thanks @sahibzada-allahyar and @vincentkoc and @ramitrkar-hash.
PR #95383 fix(sdk): classify failed/blocked tool events as tool.call.failed. Thanks @ly-wang19.
PR #95827 fix(plugin-sdk): bound live model catalog success body.
PR #95792 fix(onboard): refresh provider plugin registry after setup installs. Related #95765. Thanks @snowzlmbot.
PR #93943 fix(provider-usage): honor proxy env for usage fetch. Related #78714. Thanks @TurboTheTurtle and @TnzGit.
PR #89648 fix(agents): restore model-fetch info logs. Related #89300. Thanks @xiaobao-k8s and @Enominera.
PR #93841 fix(ui): render persisted history text blocks. Related #90241. Thanks @mushuiyu886 and @pronzcw.
PR #93502 docs: fix docs metadata spellcheck. Thanks @harjothkhara.
PR #86608 docs: add existing-solutions preflight guardrail. Thanks @cablackmon.
PR #95322 fix(reply): preserve usage footer across rollover. Thanks @litang9.
PR #91559 fix(agents): clean Gemini tool schemas by model id. Related #91542. Thanks @Pick-cat and @qiukui666.
PR #94701 Fix embedded-run recovery after refreshed session activity. Thanks @imadal1n.
PR #95472 [AI] fix(main-session): skip current-gen abort controllers for completed sessions. Thanks @xydt-tanshanshan.
PR #95401 fix(lmstudio): canonicalize variant model keys. Thanks @MonkeyLeeT.
PR #94323 fix(cron): stop add/remove from dropping a due recurring job's pending run. Thanks @yetval.
PR #94443 fix(memory-wiki): retry transient source-page rewrite race instead of aborting wiki_status. Related #92134. Thanks @ZengWen-DT and @cknzraposo.
PR #95120 feat(channels): add directUserId support for per-DM model override. Related #53638. Thanks @xydigit-zt and @thomaszta and @gandalf-at-lerian.
PR #91049 fix: handle terminal chat send acknowledgements. Related #91048. Thanks @nxmxbbd.
PR #95081 fix: keep text transform runtime imports hashed. Related #95057. Thanks @849261680 and @YvesLaRose.
PR #93356 fix(plugins): cache plugin setup registry to kill the /models CPU storm. Thanks @obuchowski.
PR #85341 refactor: internalize OpenClaw agent runtime.
PR #94233 fix(model-fallback): coalesce auth decision logs. Related #56979. Thanks @goutamadwant and @yanan1991.
PR #92399 fix(llm): collapse cumulative openai-responses message snapshots instead of concatenating [AI-assisted]. Related #91959. Thanks @amersheeny and @phoenixyy.
PR #94811 fix(ollama): honor memory embedding output dimensionality. Thanks @mushuiyu886.
PR #84708 fix(agents): recover message-tool mirror replay poison. Thanks @anyech.
PR #95274 fix(memory): preserve Windows QMD command paths. Related #92302. Thanks @ly85206559 and @Ardooken.
PR #95686 fix(xai): request encrypted reasoning include for all reasoning models. Thanks @geraint0923 and @fuller-stack-dev.
PR #82909 fix(telegram): repair message cache reply types. Thanks @lidge-jun.
PR #94942 fix(matrix): prune finished fake-indexeddb transactions to prevent OOM. Related #90455. Thanks @xzh-icenter and @yar-sh.
PR #93994 fix(setup): point non-interactive health hints at onboard flags. Related #93947. Thanks @BK-Z1 and @NianJiuZst.
PR #93956 fix(ollama): skip auto-discovery for remote/cloud base URLs. Thanks @jason-allen-oneal.
PR #93547 fix(acp): recover stale persistent sessions by structured resume-required code [AI-assisted]. Related #87830. Thanks @amersheeny and @chouzz.
PR #94204 fix(control-ui): rewrite manifest hrefs for configured base path. Related #94157. Thanks @hugenshen and @xrow.
PR #95637 fix(qqbot): recognize GFM table separators with one or two dashes. Thanks @ly-wang19.
PR #95467 fix(sessions): keep bound channel identity across non-delivery turns. Thanks @yetval.
PR #93919 perf(plugins): cache existence probes within bundle manifest scan [AI-assisted]. Related #76209. Thanks @ml12580 and @shenhonglong456-ai.
PR #94726 fix(google): add gemini-3.5-flash model catalog entry. Related #94723. Thanks @ajwan8998 and @anguslogan01.
PR #94238 fix(config): fail closed when configure runs without an interactive TTY (#93953). Thanks @ruomuxydt and @NianJiuZst.
PR #89949 fix(media): pin requester delivery route when task starts. Related #86034. Thanks @wangwllu and @tianxiaochannel-oss88.
PR #94470 chore: sync yuanbao plugin catalog to 2.15.0. Thanks @jase-283.
PR #93585 fix(daemon): keep systemd gateway running after child OOM. Thanks @snowzlm.
PR #94442 fix(imessage): strip leading echo corruption markers in the persisted echo cache. Thanks @ly-wang19.
PR #93511 fix(imessage): normalize leading NUL echo-cache prefixes. Thanks @vincentkoc and @ly-wang19.
PR #87121 test(cli): add banner emission reset helper. Related #83903. Thanks @lizuju and @davinci282828.
PR #89172 fix(feishu): show voice message duration via upload duration. Related #53798. Thanks @areslp and @kinrocW.
PR #95118 fix: bound agents load their own inbound workspace context. Related #92903. Thanks @849261680 and @axjing.
PR #94752 fix(reply): clarify stale model override resets. Related #94713. Thanks @snowzlmbot and @Gr4via.
PR #89716 fix(providers): strip cache-boundary marker from non-Anthropic prompts. Thanks @masatohoshino.
PR #95268 fix(openrouter): expand short canonical model IDs to upstream API slugs (fixes #95198). Thanks @Darren2030 and @daniel-alejandro-t.
PR #90475 fix(telegram): keep bot reply answers anchored to current message. Thanks @moeedahmed.
PR #94219 fix(control-ui): restore provider usage quota pill in sidebar session switcher (fixes #93041). Thanks @Pick-cat and @jazzroutine.
PR #93369 fix(cron): expose per-job fallbacks in CLI. Related #90302. Thanks @849261680 and @Walliiee.
PR #87912 Handle Codex toolResult blocks in tool-result truncation. Thanks @AdrianIp0204.
PR #95744 fix(model-catalog): strip manifest model-id prefixes by the matched length. Related #95743. Thanks @parveshsaini.
PR #95300 fix(cli): expose --count on infer image edit, matching image generate. Thanks @ly-wang19.
PR #94156 fix: expose OpenAI image quality and moderation CLI options. Thanks @lastguru-net and @ly-wang19.
PR #94062 fix(agents): classify generic "LLM request failed." as transient time…. Related #93931. Thanks @hugenshen and @hyphae-bot.
PR #93965 fix(opencode-go): streaming completes when provider ends responses. Related #93610. Thanks @zhangguiping-xydt and @ForceConstant.
PR #89017 fix(webchat): sessions persist after reconnects. Related #87700. Thanks @zhangguiping-xydt and @asicoe.
PR #94627 fix(ios): centralize app accent colors. Thanks @zats.
PR #94054 fix(gateway.tls): reject empty/whitespace certPath and keyPath. Thanks @miorbnli.
PR #95674 fix(cron): trim trailing whitespace from recognized job object keys. Related #95407. Thanks @zw-xysk and @Nassiel.
PR #95857 Fix SQLite user version guardrail allowlist. Thanks @RomneyDa.
PR #95858 feat(qa): expose active memory toggles to scenarios. Thanks @RomneyDa.
PR #84326 Doctor: expose sandbox registry findings. Thanks @giodl73-repo.
PR #73079 fix(minimax): request hex TTS output explicitly. Thanks @efe-arv.
PR #94483 feat(gateway-cli): scope usage-cost by agent. Thanks @ly-wang19.
PR #91502 feat(qa): crabline channel driver. Thanks @RomneyDa.
PR #95872 Move TUI PTY tests into CI node shard. Thanks @RomneyDa.
PR #89800 fix(agents): resolve webchat current session status. Related #89773. Thanks @sweetcornna and @killo3967.
PR #95870 fix(ci): restore macOS and Windows QA gates. Thanks @vincentkoc.
PR #94445 fix(agents): keep cron cloud idle watchdog enabled. Thanks @bek91.
PR #91506 fix(qa): reserve shared QA suite flags across runners. Thanks @RomneyDa.
PR #95876 ci: add manual release QA profile evidence workflow. Thanks @RomneyDa.
PR #95879 fix(ci): use workflow revision for proof checks. Thanks @vincentkoc.
PR #93113 fix(memory-core): report active dreaming phases in status. Related #67868. Thanks @AgentArcLab and @mrossit.
PR #95837 Simplify color mode button labels. Thanks @SannidhyaSah and @hannesrudolph.
PR #95797 fix: /status is too verbose for pinned model sessions. Thanks @Solvely-Colin.
PR #90223 test: make qqbot symlinked media helper test robust on Windows. Thanks @aniruddhaadak80.
PR #95557 improve: refresh Android overview control surface. Thanks @Solvely-Colin and @joshavant.
PR #95593 fix: route Android exec approvals to in-app inbox. Thanks @Solvely-Colin.
PR #95570 fix(cli): resolve trajectory export stores consistently. Related #95568. Thanks @youngting520.
PR #95880 ci: generalize QA profile evidence workflow. Thanks @RomneyDa.
PR #95218 fix(agents): bound provider JSON response reads. Thanks @Alix-007.
PR #95614 fix(memory-wiki): preserve human notes block on source re-ingest. Thanks @yetval.
PR #95148 feat(android): add settings detail panels. Thanks @Tosko4.
PR #95893 Add iOS push sandbox profiles and relay tooling. Thanks @joshavant.
PR #95723 fix(control-ui): exclude disabled cron jobs from Overview failed count. Related #95716. Thanks @ZengWen-DT and @voytas75.
PR #78715 Fix minor grammar issue in plugin documentation (capabilities plural). Thanks @mehrazmorshed.
PR #95890 fix(ci): restore QA workflow gates. Thanks @vincentkoc.
PR #95661 fix(discord): reserve closing-fence space on fence-closing lines. Thanks @ly-wang19.
PR #94272 ci: add maturity scorecard renderer. Thanks @RomneyDa.
PR #95901 ci: add maturity scorecard renderer. Thanks @RomneyDa.
PR #95914 fix(whatsapp): preserve durable reply target. Thanks @mcaxtr.
PR #95697 improve: reduce hot-path linear scans and redundant I/O. Thanks @vincentkoc.
PR #95916 fix(memory): improve node:sqlite unavailable guidance. Thanks @vincentkoc and @rrrrrredy.
PR #78884 docs: document local avatar file size limit. Related #65312. Thanks @wangjieweb3-design and @wraxle-geargrind.
PR #95909 fix(ci): use available Android SDK platform. Thanks @vincentkoc.
PR #68389 plugins: clarify allowlist warning when entries don't match discovered ids. Related #68352. Thanks @lyfuci and @JIRBOY.
PR #95898 ci: simplify maturity scorecard QA evidence inputs. Thanks @RomneyDa.
PR #95928 fix(ci): honor reusable QA evidence failure policy. Thanks @vincentkoc.
PR #95508 fix #95489: [Bug]: claude-cli out-of-credits error bypasses model fallback chain — error text delivered as final response. Thanks @mikasa0818 and @sallyom and @riazrahaman.
PR #95420 fix(agents): bound OpenRouter model catalog response reads. Thanks @Alix-007 and @sallyom.
PR #95103 fix(gateway): bound pricing catalog streams. Thanks @vincentkoc and @sallyom.
PR #95108 fix(agents): bound Anthropic error streams. Thanks @vincentkoc and @sallyom.
PR #95418 fix(agents): bound OpenRouter model-scan catalog success body. Thanks @Alix-007.
PR #95922 fix(ci): finalize testbox sessions after setup failures. Thanks @vincentkoc.
PR #95417 fix(agents): bound Google prompt cache response reads. Thanks @Alix-007.
PR #95935 fix(whatsapp): resolve approval reactions across JID drift. Thanks @mcaxtr.
PR #84340 Doctor: expose extra gateway service findings. Thanks @giodl73-repo.
PR #95946 fix(ci): finalize Windows Testbox after setup failures. Thanks @vincentkoc.
PR #95947 feat(qa): add "all" taxonomy profile. Thanks @RomneyDa.
PR #91903 feat(plugin-sdk): add extensible channel identity hook context. Thanks @lanzhi-lee and @vincentkoc.
PR #95930 docs(copilot): refresh harness parity notes. Thanks @vincentkoc.
PR #95952 fix(ci): require QA live evidence artifacts. Thanks @vincentkoc.
PR #95666 Fix memory-wiki bridge self-import loop. Related #95657. Thanks @TurboTheTurtle and @vincentkoc and @Johannes0402.
PR #91724 fix(agents): infer runtime provider from qualified model ids. Thanks @yu-xin-c and @vincentkoc.
PR #95957 improve: speed up provider tool-call streaming. Thanks @vincentkoc.
PR #95541 fix(cli): show working commands for pinned plugin drift. Thanks @ooiuuii and @vincentkoc.
PR #95933 docs: update maturity scorecard. Thanks @RomneyDa.
PR #78105 fix(plugins): make empty-allowlist actionable for new users. Related #68780. Thanks @pahuchi-joe and @JIRBOY.
PR #95961 fix(ci): require live proof evidence artifacts. Thanks @vincentkoc.
PR #95400 fix(model-fallback): classify Codex usage-limit payloads. Thanks @jason-allen-oneal and @sallyom.
PR #95944 perf(qa-lab): speed up unified QA suites. Thanks @RomneyDa.
PR #95971 ci: fail QA profile evidence on QA failures. Thanks @RomneyDa.
PR #95845 feat: add bundled plugin icon manifest URLs. Thanks @Patrick-Erichsen.
PR #95975 fix(ci): require iOS Periphery evidence artifact. Thanks @vincentkoc.
PR #95972 docs: update ClawHub skill route references. Thanks @Patrick-Erichsen.
PR #90537 Warn on generated wrapper overwrites and status diagnostics. Related #90518. Thanks @TurboTheTurtle and @vincentkoc.
PR #93567 fix(cron): normalize run-log jobId on write to match read-side validation. Thanks @Alix-007 and @vincentkoc.
PR #95967 perf(ci): widen main test fanout and move codeql off blacksmith. Thanks @vincentkoc.
PR #95983 fix(ci): require OpenGrep SARIF artifacts. Thanks @vincentkoc.
PR #64490 CLI: escape zsh completion descriptions. Thanks @EdenKangdw.
PR #95682 Fix Gemini day freshness time range handling. Thanks @Sunjae-k and @vincentkoc.
PR #93374 fix(agents): suggest recovery for unknown tool ids. Related #92273. Thanks @mushuiyu886 and @vincentkoc and @poison.
PR #95991 fix(ci): require release QA evidence artifacts. Thanks @vincentkoc.
PR #89886 fix(context-engine): forward abortSignal through delegation bridge to runtime compaction. Related #89868. Thanks @openperf and @vincentkoc and @lykeion-dev.
PR #95999 fix(release): require postpublish evidence artifact. Thanks @vincentkoc.
PR #96003 test(qa): harden all-profile QA evidence scenarios. Thanks @RomneyDa.
PR #95860 fix(compaction): trim prefix when transcript ends in an oversized tool result. Related #78478. Thanks @yetval and @wzhgba.
PR #95934 fix(xiaomi): correct mimo-v2.5 and mimo-v2.5-pro max output tokens to 128K. Thanks @idootop.
PR #95782 fix(sessions): honor configured store for outbound transcript mirrors. Related #95781. Thanks @youngting520.
PR #96005 feat(copilot): wire harness parity helpers. Thanks @vincentkoc.
PR #95886 fix: avoid false macOS update failures during gateway shutdown. Thanks @fuller-stack-dev.
PR #91906 perf: skip subagent live stream parsing. Thanks @lanzhi-lee.
PR #87861 fix(model-usage): coerce numeric-string costs and ignore non-finite values. Related #37878. Thanks @coder999999999 and @vincentkoc and @shuofengzhang.
PR #96030 fix(qa-lab): avoid duplicate child evidence files. Thanks @RomneyDa.
PR #94369 fix(memory-wiki): exclude durable reference pages from stale report. Thanks @SunnyShu0925 and @vincentkoc.
PR #94578 Fix recent session resume with long headers. Related #94577. Thanks @rohitjavvadi and @vincentkoc.
PR #95919 ci: add Codex maturity scorecard agent. Thanks @RomneyDa.
PR #92356 fix(heartbeat): skip reasoning payloads when selecting heartbeat reply. Related #92260. Thanks @tangtaizong666 and @vincentkoc and @jmpei.
PR #94328 fix(agents): keep post-compaction user re-issue of a kept-tail prompt during compaction rotation. Thanks @yetval and @vincentkoc.
PR #95432 fix(reply): suppress per-message finals across multi-message block streaming. Thanks @yetval and @vincentkoc.
PR #95431 fix(auto-reply): keep drain/restart-abort reply paths silent. Thanks @moeedahmed and @vincentkoc.
PR #96017 test(qa): gate maturity docs on passing evidence. Thanks @RomneyDa.
PR #95552 feat(mattermost): persist participated threads for mention-free follow-ups. Thanks @amknight.
PR #95480 fix #89231: [Bug]: Windows installer-created scheduled task launches gateway.cmd with visible console — should use windowless launcher. Thanks @mikasa0818 and @vincentkoc and @CameronWeller.
PR #96049 fix(copilot): preserve compaction metadata. Thanks @vincentkoc.
PR #96044 docs: rename top maturity tier to Clawesome. Thanks @RomneyDa.
PR #92154 Gate private QQBot group commands. Thanks @sliverp.
PR #95484 fix: assistant reply lost between compaction summary and first kept user in successor transcript. Related #76729. Thanks @maweibin and @vincentkoc and @njuboy11.
PR #95094 ci: add release QA profile evidence. Thanks @RomneyDa.
PR #96057 docs: redesign maturity scorecard pages. Thanks @vincentkoc.
PR #96014 perf(agents): index displaced tool results. Thanks @vincentkoc.
PR #96019 perf(usage): bound session log retention. Thanks @vincentkoc.
PR #96013 perf(anthropic): index active stream blocks. Thanks @vincentkoc.
PR #96061 docs: place maturity pages under release reference. Thanks @vincentkoc.
PR #95589 fix: npm plugin updates break running gateway imports. Thanks @ooiuuii and @vincentkoc.
PR #96068 fix(acpx): consume acpx 0.11.1 model capability errors. Related #95869. Thanks @vincentkoc and @SabaTech-dev.
PR #89912 refactor: add transcript update identity contract. Thanks @jalehman.
PR #96055 fix(maint): use rebase PR landing. Thanks @vincentkoc.
PR #96062 feat(copilot): mirror native plan and subagent events. Thanks @vincentkoc.
PR #96032 fix(acpx): detect wrapper orphan on any PPID change, not just init reparenting. Thanks @t2wei and @vincentkoc.
PR #96124 chore(acpx): bump bundled client to 0.11.2. Thanks @vincentkoc.
PR #84352 Fix WebChat dispatch failure session status. Thanks @jesse-merhi.
PR #89518 refactor: migrate plugin transcript mirrors. Thanks @jalehman.
PR #90439 refactor: add embedded run session target seam. Thanks @jalehman.
PR #95699 perf(gateway): drop redundant per-access session-key case scan. Thanks @jzakirov and @jalehman.
PR #95992 fix(skills): accept owner-qualified verify refs. Thanks @Patrick-Erichsen.
PR #95987 fix(plugins): remove Simple Icons color paths. Thanks @Patrick-Erichsen.
PR #96162 refactor: use accessor-backed transcript corpus for memory. Thanks @jalehman.
PR #96181 Defer iOS local network permission until onboarding. Thanks @joshavant.
PR #95475 test(cli): isolate service env in run and update suites. Thanks @kklouzal.
PR #95226 fix(infra): bound ClawHub fetchJson and error response bodies. Thanks @Alix-007.
PR #95240 fix(matrix): bound non-raw JSON response body in transport. Thanks @Alix-007.
PR #91742 fix(memory): abort orphaned embedding work when memory_search times out. Related #91718. Thanks @dreamhunter2333 and @NOVA-Openclaw.
PR #93394 fix(memory): abort orphaned qmd search subprocess when memory_search times out. Thanks @Alix-007.
PR #89911 refactor: migrate bundled transcript target lookups. Thanks @jalehman.
PR #96191 refactor: route plugin host hook state through accessor. Thanks @jalehman.
PR #96179 fix: route gateway history through session accessor target. Thanks @jalehman.
PR #96201 refactor: add abort target session accessor. Thanks @jalehman.
PR #96193 fix(memory-core): migrate dreaming cleanup lifecycle. Thanks @jalehman.
PR #96195 fix: bridge ACP metadata to session accessors. Thanks @jalehman.
PR #96182 refactor: migrate agent session accessors. Thanks @jalehman.
PR #96218 refactor: guard reply session initialization. Thanks @jalehman.
PR #96213 refactor(gateway): add alias mutation accessor. Thanks @jalehman.
PR #96204 refactor: migrate command session persistence to accessor. Thanks @jalehman.
PR #96206 refactor: route live model fresh reads through session accessor. Thanks @jalehman.
PR #96220 fix(whatsapp): quote current follow-up in durable replies. Thanks @mcaxtr.
PR #96226 fix(macos): drop Textual from chat packaging. Thanks @vincentkoc.
PR #96212 fix(codex): deliver generated images from remote app-server. Thanks @sjf-oa.
PR #96235 fix(crabbox): require Xcode for macOS proof. Thanks @vincentkoc.
PR #96145 fix: UI glitch: config is not visible. Related #94202. Thanks @sunlit-deng and @vporton.
PR #96072 perf(browser): index role snapshot references. Thanks @vincentkoc.
PR #96085 perf(codex): index rollout transcript ids. Thanks @vincentkoc.
PR #96087 perf(reply): hoist direct-send fragment index. Thanks @vincentkoc.
PR #94154 fix(gateway): resolve plugin-registered gateway methods through live registry. Related #94127. Thanks @Pick-cat and @vincentkoc and @BryceMurray.
PR #95393 fix #92582: Bug: doctor falsely warns local memory embeddings are not ready. Thanks @mikasa0818 and @vincentkoc and @neekolascmd.
PR #96246 fix(qa): accept pnpm separator for lab up. Thanks @vincentkoc.
PR #94949 fix(ports): route isPortBusy through checkPortInUse to catch IPv4-only occupants. Related #94426. Thanks @sunlit-deng and @vincentkoc and @wangwllu.
PR #94562 fix(workboard): hide archived cards in CLI list by default. Related #94555. Thanks @ZengWen-DT and @vincentkoc and @ecican.
PR #96243 fix(nextcloud-talk): ignore signed non-message webhook events. Related #81566. Thanks @arkyu2077 and @vincentkoc and @rafaelmgbh.
PR #96140 fix(exec): preserve turn-source routing target in approval followups for plugin channels. Related #96103. Thanks @yetval and @vincentkoc and @lansenger-pm.
PR #96258 ci: move CodeQL quality scans to hosted runners. Thanks @vincentkoc.
PR #96271 chore(release): close out 2026.6.10 on main. Thanks @vincentkoc.
PR #96233 fix(agents): run heartbeat_prompt_contribution on harness prompt builds. Thanks @azogheb and @vincentkoc.
PR #55018 fix: avoid O(N²) shallow-copy in mapSensitivePaths schema traversal. Thanks @xdhuangyandi and @vincentkoc and @huangyandi-red.
PR #95831 fix: compact Codex OAuth OpenAI sessions without API keys. Related #95693. Thanks @sallyom and @YUI-TIEN.
PR #96244 fix(auto-reply): align channel intro wording with chat_type. Related #95645. Thanks @arkyu2077 and @vincentkoc and @iloveleon19.
PR #97118 fix(telegram): recover stalled ingress spool claims. Thanks @vincentkoc.
PR #97543 fix(telegram): recover stalled ingress spool claims. Thanks @vincentkoc.
PR #97122 ci(docker): publish releases to Docker Hub. Thanks @vincentkoc.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.11-beta.2
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.11-beta.2.tgz
integrity: sha512-aUA8lyvSetHvNMVsfbHvEveNhJhafvRl4OYZnxxwWSN4ocO8tNJ2uMUagxHMqZDdzwomjZ6VH3kSuolYjhU0wg==
release SHA: 4f9d5864f09f60a6eb9da6ad6317148bbf89e134
full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.6.11-beta.2/release-evidence.md
release publish: https://github.com/openclaw/openclaw/actions/runs/28338723855
npm preflight: https://github.com/openclaw/openclaw/actions/runs/28336646700
full release validation: https://github.com/openclaw/openclaw/actions/runs/28333012052
Docker release: https://github.com/openclaw/openclaw/actions/runs/28336644856
Docker images: docker.io/openclaw/openclaw:2026.6.11-beta.2 and ghcr.io/openclaw/openclaw:2026.6.11-beta.2
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/28338858442
plugin ClawHub publish: passed in https://github.com/openclaw/openclaw/actions/runs/28397561273
ClawHub package verification: Discord, Slack, Voice Call, and WhatsApp are live in ClawHub at 2026.6.11-beta.2 with npm-pack artifacts.
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/28338936121
npm Telegram beta E2E: not supplied
Original source Similar to OpenClaw with recent updates:
- Perplexity release notes26 release notes · Latest Jun 19, 2026
- Anthropic release notes690 release notes · Latest Jul 7, 2026
- Obsidian release notes90 release notes · Latest Jun 9, 2026
- Cursor release notes110 release notes · Latest Jun 30, 2026
- xAI release notes139 release notes · Latest Jul 6, 2026
- OpenAI release notes807 release notes · Latest Jul 6, 2026
- Jun 26, 2026
- Date parsed from source:Jun 26, 2026
- First seen by Releasebot:Jun 24, 2026
- Modified by Releasebot:Jun 27, 2026
openclaw 2026.6.10
OpenClaw adds automatic fast mode for quicker short conversations, improves channel progress and session identity handling, and tightens provider routing, trusted tool policies, and setup reliability across plugins, diagnostics, and transcript tooling.
Automatic fast mode starts short conversations quickly, then returns longer or fallback work to normal mode without losing visible state. Provider routing, channel progress, session identity, and trusted tool policies are more reliable, with smaller improvements spanning provider setup, diagnostics, and transcript tooling.
Highlights
Automatic fast mode
Adds /fast auto so short conversational calls can start quickly, while longer or fallback work returns to normal mode with the effective state still visible. PR #85104, Issue #85087. Thanks @alexph-dev and @vincentkoc.
Shows the effective automatic fast-mode state in status instead of reducing it to on/off, and avoids carrying a cleared Codex service-tier choice into later runs. 8845f2f. Thanks @vincentkoc.
Keeps automatic fast-mode timing consistent when a turn switches to a fallback model. 075091d. Thanks @vincentkoc.
Keeps the original fast-mode timing and progress behavior when a live model switch retries a turn. d1e190f. Thanks @vincentkoc.
Keeps automatic fast-mode progress and reset behavior distinct from explicit fast mode after a run switches modes. 20aec98. Thanks @vincentkoc.
Shows the effective fast-mode value in connected-agent sessions instead of the configured value, so status reflects what the session is actually using. 9509aa0. Thanks @vincentkoc.
Keeps the effective automatic fast-mode setting visible through fallback transitions in connected-agent sessions. 7f5423c. Thanks @vincentkoc.
Keeps automatic fast-mode timing and progress consistent when reply and scheduled-agent runs retry or switch models. 6c29f88. Thanks @vincentkoc.
Keeps fast-mode cleanup and status consistent when a run switches between fallback models. c4694f8. Thanks @vincentkoc.
Shows the automatic fast-mode reset only when fallback work is finished, so status messages match the end of the transition. f4d93c8. Thanks @vincentkoc.
Shows reset and delivery progress at the right time when auto-reply or other follow-up runs retry or leave automatic fast mode. 684e440. Thanks @vincentkoc.
Channels and Messaging
Channel delivery and progress updates
Prevents the next turn after a scheduled message from losing what was delivered or whether delivery failed, so replies can use that context without exposing cron details in the channel. PR #93580. Thanks @jalehman and @scotthuang.
Prevents streamed channel progress from dropping a repeated status that represents a separate step, so each meaningful step remains visible in the draft. 2d42e52. Thanks @vincentkoc.
Prevents keyed streamed progress from staying on an older status, so viewers see the latest state instead of stale text. 8bb6472. Thanks @vincentkoc.
Providers and Models
Provider model catalogs and reasoning controls
Treats Zhipu/GLM overload responses as overloads, so a configured fallback is selected for the right reason instead of following the wrong failover path. PR #93241, Issue #93211. Thanks @0xghost42 and @zhengli0922.
Prevents Telegram, Slack, and Discord /think menus for live Ollama models from hiding supported levels, so users can choose valid reasoning settings without guessing. PR #94067, Issue #93835. Thanks @civiltox and @openperf.
Expands zai/glm-5.2 thinking choices beyond binary on/off and sends high or max requests as the intended Z.AI reasoning effort. PR #94136. Thanks @BorClaw.
Prevents bundled Z.ai GLM-5 models from falling through to OpenAI and producing misleading API-key errors, so they use Z.AI by default. PR #94461, Issue #94269. Thanks @chrysb and @Pandah97.
Adds GLM-5.2 and Kimi K2.7 Code to the OpenCode Go catalog with current limits, so users can select the models from OpenClaw. 66f84a9. Thanks @samson1357924.
Corrects kimi-k2.7-code capability listings so OpenCode Go users are not offered unsupported video prompts when the model accepts text and images. 715dc71.
Provider plugin onboarding
Prevents first-run setup from skipping the selected provider's credential prompt after plugin installation, so onboarding continues with that provider instead of falling back to OpenAI. PR #95792, Issue #95765. Thanks @snowzlmbot.
Memory, Sessions, and State
Session transcript SDK helpers
Adds a durable session-transcript SDK contract so plugins can read, append, publish, and lock the intended transcript without treating legacy file paths as identity. PR #95030. Thanks @jalehman.
Cross-channel session identity
Prevents a shared direct-message session from carrying the previous channel's identity after a switch, so status, reactions, threads, and message references target the current channel. PR #95328, Issue #95325. Thanks @gorkem2020, @jalehman, and @ZengWen-DT.
Gateway, Security, and Trust
Prompt context boundaries
Keeps empty prompts separate from hook-added context during compaction or session reuse in Copilot and Codex sessions, so prompt boundaries remain consistent. PR #94838. Thanks @vincentkoc.
Trusted tool policy enforcement
Keeps approval-sensitive Gateway and plugin tools protected when connected extensions change, so configured safeguards continue to apply. PR #94545. Thanks @jesse-merhi.
Trusted package redirects
Prevents authenticated package-source tokens from being sent to an allowed redirect on another origin, while the valid redirected download still completes. b0df6dc.
Clients and Interfaces
Docker and Podman setup timeouts
Prevents Docker and Podman setup from running unbounded on hosts where GNU timeout is installed as gtimeout, so image pulls, builds, and detached startup receive the intended guard. 62b2e9e.
Plugins, Packaging, and QA
Codex service-tier clearing
Prevents cleared Codex service tiers from being persisted as explicit stale state, so resumed or switched conversations use the normal default instead. cd32d9f. Thanks @vincentkoc.
StepFun provider installation
Restores ClawHub discovery for the StepFun provider plugin, so operators can install it through either ClawHub or npm. ecb82f1. Thanks @vincentkoc.
Docs and Operator Workflows
Doctor check ordering
Keeps core openclaw doctor diagnostics in their normal order before extension checks, making lint and repair output easier to follow. PR #86627. Thanks @giodl73-repo.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.10
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.10.tgz
integrity: sha512-LcooND2tBQw8A+kc1Ujltu3lg30bJ0w7XaeRy7eYzobb8BBdcW6DOGbwJL4vpj1vl9+gjRceOtlh5nh9OARcug==
release SHA: aa69b12d0086b631b139c1435c9621a5783e3a40
full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.6.10/release-evidence.md
release publish: https://github.com/openclaw/openclaw/actions/runs/28071368306
npm preflight: https://github.com/openclaw/openclaw/actions/runs/28068484614
full release validation: https://github.com/openclaw/openclaw/actions/runs/28068476120
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/28071564667
plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/28071565774
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/28071984141
npm Telegram beta E2E: not supplied
Windows Hub promotion: https://github.com/openclaw/openclaw/actions/runs/28072271374 from openclaw/[email protected]
Original source - Jun 22, 2026
- Date parsed from source:Jun 22, 2026
- First seen by Releasebot:Jun 23, 2026
openclaw 2026.6.10-beta.2
OpenClaw releases smarter talk handling, more reliable model routing, and safer session state in this beta update. It adds automatic fast mode for short conversational turns, keeps trusted policies intact, and tightens fallback and delivery behavior across channels and providers.
2026.6.10
Highlights
Automatic fast mode for talks: OpenClaw can enable fast mode for short conversational turns, then return to normal mode for longer runs with bounded fallback and delivery behavior. (#85104) Thanks @alexph-dev and @vincentkoc.
More reliable model routing: Zai model synthesis, GLM overload failover, and native reasoning-level selection now follow the active model catalog more consistently. (#94461, #93241, #94067, #94136) Thanks @Pandah97, @chrysb, @0xghost42, @zhengli0922, @openperf, @civiltox, and @BorClaw.
Safer session and channel state: channel switches reset stale origin fields, and cron delivery awareness stays attached to the target session. (#95328, #93580) Thanks @ZengWen-DT, @jalehman, @gorkem2020, and @scotthuang.
Trusted policies survive hook composition: composed hook registries keep the trusted tool policies required by approval-sensitive flows. (#94545) Thanks @jesse-merhi.
Changes
Agent and channel runtime: fast-mode state now survives retries, fallback transitions, progress events, and embedded/CLI/ACP normalization; session and channel routing retain the current target and delivery context. (#85104, #93580, #95328) Thanks @alexph-dev, @vincentkoc, @scotthuang, @ZengWen-DT, @jalehman, and @gorkem2020.
Provider behavior: model catalogs now supply the correct Zai base URL, overload classification, and native reasoning controls for live-discovered models. (#94461, #93241, #94067, #94136) Thanks @Pandah97, @chrysb, @0xghost42, @zhengli0922, @openperf, @civiltox, and @BorClaw.
Fixes
Fast-mode and policy correctness: fallback cutoffs and reset notices are bounded, repeated progress events remain visible, Codex service-tier state is normalized, and trusted policies are not lost when hook registries are composed. (#85104, #94545) Thanks @alexph-dev, @vincentkoc, and @jesse-merhi.
Model and delivery edge cases: Zai and GLM failover paths use the right runtime metadata, while stale channel-origin state no longer leaks across session changes. (#94461, #93241, #95328) Thanks @Pandah97, @chrysb, @0xghost42, @zhengli0922, @ZengWen-DT, @jalehman, and @gorkem2020.
Complete contribution record
This audited record covers the complete v2026.6.9..HEAD history: 11 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #86627 Keep core doctor health in contribution order. Thanks @giodl73-repo.
PR #93580 fix: preserve cron delivery awareness for target sessions. Thanks @scotthuang and @jalehman.
PR #95030 refactor: add SDK transcript identity target API. Thanks @jalehman.
PR #94838 refactor(copilot): complete harness lifecycle parity. Thanks @vincentkoc.
PR #95328 fix(sessions): reset stale per-channel origin fields on channel switch. Related #95325. Thanks @ZengWen-DT and @jalehman and @gorkem2020.
PR #94461 fix(zai): fall back to manifest baseUrl for synthesized GLM-5 models. Related #94269. Thanks @Pandah97 and @chrysb.
PR #93241 fix(agents): classify Zhipu GLM overload as overloaded for failover. Related #93211. Thanks @0xghost42 and @zhengli0922.
PR #94067 fix(channels): resolve native /think menu levels via runtime catalog for live-discovered models. Related #93835. Thanks @openperf and @civiltox.
PR #94136 fix(zai): expose GLM-5.2 reasoning levels [AI-assisted]. Thanks @BorClaw.
PR #85104 feat: fast talks auto mode. Related #85087. Thanks @alexph-dev.
PR #94545 fix: keep trusted policies with hook registry. Thanks @jesse-merhi.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.10-beta.2
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.10-beta.2.tgz
integrity: sha512-fOz52YzVw3MhQjQ5qqfPsfSbaMWOM62DNCxDsO/wZXvgvgrqPdZuNEPQokjFX9J7QXDeidl2uMBCnXRxynMzRg==
release SHA: 87b40c7160da1e9d470f86520f64ff1642a55b66
full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.6.10-beta.2/release-evidence.md
release publish: https://github.com/openclaw/openclaw/actions/runs/27942155128
npm preflight: https://github.com/openclaw/openclaw/actions/runs/27938779493
full release validation: https://github.com/openclaw/openclaw/actions/runs/27938779833
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/27942563340
plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/27942565547
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/27943117132
npm Telegram beta E2E: https://github.com/openclaw/openclaw/actions/runs/27941744910
Original source - Jun 22, 2026
- Date parsed from source:Jun 22, 2026
- First seen by Releasebot:Jun 21, 2026
- Modified by Releasebot:Jul 3, 2026
v2026.6.10-alpha.4
OpenClaw ships 2026.6.10-alpha.4 release.
openclaw 2026.6.10-alpha.4
Original source - Jun 21, 2026
- Date parsed from source:Jun 21, 2026
- First seen by Releasebot:Jun 21, 2026
openclaw 2026.6.10-beta.1
OpenClaw ships a broad beta release with more reliable agent turns, stronger Codex and approval flows, richer Slack, Telegram, Discord, and WhatsApp delivery, safer network and security boundaries, and improved CLI, mobile, desktop, plugin, and SDK workflows.
Highlights
More reliable agent turns and session state: OpenClaw now preserves pending subagent completion announcements, keeps chat history transcripts non-empty, maintains media index alignment, restarts dormant follow-up drains, and resolves compaction model aliases consistently. (#94349, #92383, #94257, #95039, #90885) Thanks @sallyom, @oiGaDio, @Hidetsugu55, @Nas01010101, @SFVVC, @Pick-cat, and @vincentkoc.
Stronger Codex and approval flows: Codex app-server SecretRefs, thread context, bounded turn text, routed approval context, and typed SDK approval/session helpers now work together more predictably. (#94093, #94324, #94756, #90918, #95144, #95188, #95196, #95169) Thanks @VACInc, @kevinlin-openai, @kevinslin, @Nas01010101, @849261680, @choury, and @vincentkoc.
Richer channel delivery: Telegram, Discord, and Slack now preserve richer progress/reasoning/thread output, handle structured send errors, support Slack shortcuts, and record canonical sent threads more reliably. (#94891, #94856, #94810, #95029, #94881, #78536, #95250) Thanks @obviyus, @zhangqueping, @jairrab, @ZOOWH, @parveshsaini, @vincentkoc, @Marvinthebored, @chrisbaker2000, @KennanHoa, @bek91, and @rockyloveswine.
Safer release and network boundaries: SSH tunnel preflight is loopback-scoped, device-backed node pairings are removed, volatile SQLite state is surfaced by doctor, and legacy Codex routes are repaired instead of silently persisting stale state. (#94607, #90373, #94725, #94478) Thanks @wangwllu, @Alix-007, @manju-rn, @vincentkoc, @TurboTheTurtle, and @Sleepyarno.
Useful new CLI and status workflows: Rename sessions from chat, compact sessions explicitly, show session duration, preserve command progress detail, and preview message sends/polls with dry-run output. (#88581, #91378, #88988, #94868, #94684) Thanks @BSG2000, @Alix-007, @sallyom, @redasadki, @marshall-gordfam, @vincentkoc, @lzyyzznl, and @YB0y.
More capable mobile and desktop clients: Android settings are grouped by intent, iOS notification state is cleaner, the Watch app uses the Xcode 27-compatible target layout, and macOS file inputs open through the native panel. (#94539, #91923, #92477, #94612) Thanks @Tosko4, @zats, @joshavant, @bbblending, @DINGDANGMAOUP, and @vincentkoc.
Broader plugin and skill coverage: Zalo is available as an external channel entry, Trello skills declare their curl dependency, stale managed skill links are retargeted, and tool discovery no longer clears active providers. (#89586, #94729, #86719, #93276) Thanks @ken-kuro, @liuhao1024, @berkgungor, @stevenepalmer, @shakkernerd, @medns, and @vincentkoc.
Changes
Agent and provider behavior: Codex turn limits, CLI-owned auth, provider-internal error wording, recurring cron backoff, explicit cron delivery targets, and isolated cron key requirements now fail or recover more clearly. (#94756, #88551, #94737, #93051, #94453, #92318, #91685) Thanks @Nas01010101, @yu-xin-c, @snowzlmbot, @Alix-007, @jincheng-xydt, @sallyom, @davectr, @hxy91819, @nxmxbbd, and @vincentkoc.
Channels and integrations: WhatsApp retries the opening text chunk after media failure, Feishu avoids axios internals, Slack records inbound mentions and preserves buffered streams, and external Zalo/Slack shortcuts are wired through the current channel seams. (#93823, #89806, #94790, #78536, #89586, #94881) Thanks @yetval, @sweetcornna, @davinci282828, @ZengWen-DT, @BryceMurray, @vincentkoc, @KennanHoa, @ken-kuro, and @chrisbaker2000.
Skills and setup: OnePassword auth no longer forces tmux when the desktop app is available, stale plugin skill symlinks are repaired, and Trello requirements match their examples. (#81825, #86719, #94729) Thanks @koshaji, @tylerbittner, @stevenepalmer, @shakkernerd, @liuhao1024, @berkgungor, and @vincentkoc.
Apps and platform support: iOS notification cleanup, the single-target Watch migration, Android intent grouping, native macOS file panels, and explicit realtime SDP bounds keep the app surfaces aligned with the Gateway. (#91923, #92477, #94539, #94612, #95093) Thanks @zats, @joshavant, @Tosko4, @bbblending, @DINGDANGMAOUP, and @vincentkoc.
Operator diagnostics: Gateway probes now distinguish reachable-but-errored from unreachable, plugin methods authorize through the attached registry, session status exposes duration, and provider pricing streams are bounded. (#93948, #94343, #88988, #95103) Thanks @xialonglee, @MAdArab872, @wangmiao0668000666, @RDavies8, @Alix-007, @marshall-gordfam, @vincentkoc, @ozthedivine, and @shakkernerd.
Fixes
Reply and transcript correctness: OpenClaw now keeps pending completions, non-empty histories, media fields, queued follow-ups, buffered Slack replies, and reasoning deliveries intact across retries and partial turns. (#94349, #92383, #94257, #95039, #78536, #95029, #84292) Thanks @sallyom, @oiGaDio, @Hidetsugu55, @Nas01010101, @SFVVC, @vincentkoc, @KennanHoa, @Marvinthebored, @zerone0x, and @pearl-dot.
Security and bounded input handling: SSH tunnel checks stay on loopback, unsafe chat/tool/package/response lengths are rejected, device-backed pairings are removed, and stale abort markers no longer affect fresh chat events. (#94607, #95066, #95078, #95085, #95090, #90373, #91013) Thanks @wangwllu, @vincentkoc, @Alix-007, @manju-rn, and @nxmxbbd.
Telegram, WhatsApp, and Slack delivery: Rich progress previews, structured Telegram errors, WhatsApp listener recovery, and canonical Slack thread/send behavior now survive the edge cases covered by the new release. (#94891, #94856, #94810, #93873, #95250) Thanks @obviyus, @zhangqueping, @jairrab, @ZOOWH, @parveshsaini, @xialonglee, @octaivermatt, @bek91, and @rockyloveswine.
Cron and queue safety: Recurring error backoff honors configured floors, implicit isolated delivery requires an explicit target, and dormant follow-up drains restart instead of disappearing. (#93051, #91685, #92318, #95039) Thanks @Alix-007, @nxmxbbd, @hxy91819, and @SFVVC.
Provider, auth, and migration repair: CLI-owned transports skip the wrong auth gate, compaction aliases resolve canonically, legacy Codex routes are repaired, and tool discovery no longer clears active providers. (#88551, #90885, #94478, #93276) Thanks @yu-xin-c, @Pick-cat, @TurboTheTurtle, @Sleepyarno, @medns, and @vincentkoc.
SDK and release tooling: Approval/session RPC params are typed more strictly, stale packed tarballs are ignored, and DMG output directories are created reliably. (#95144, #95152, #95188, #95196, #95169, #95126, #95133) Thanks @vincentkoc.
Complete contribution record
This audited record covers the complete v2026.6.9-beta.1..HEAD history: 109 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #93685 refactor(auto-reply): add lifecycle storage seams. Thanks @jalehman.
PR #94349 fix(agents): preserve pending subagent completion announces. Related #93323. Thanks @sallyom and @oiGaDio.
PR #93174 test: fold channel message flows into qa e2e. Thanks @RomneyDa.
PR #94093 Prevent Codex thread rotation from losing next-step context. Thanks @VACInc.
PR #53920 fix(scripts): avoid mutating tracked auth-monitor template during setup. Thanks @JackWuGlobal.
PR #94702 Standardize QA coverage IDs on dotted names. Thanks @RomneyDa.
PR #81825 fix(skills/1password): stop forcing tmux for desktop app auth (#52540). Thanks @koshaji and @tylerbittner.
PR #94725 fix(doctor): warn on volatile SQLite state. Thanks @vincentkoc.
PR #88551 fix(agents): skip auth gate for CLI-owned transport. Thanks @yu-xin-c.
PR #88581 feat(commands): add /name to rename the current session from chat. Thanks @BSG2000.
PR #94324 feat(codex): support app-server SecretRefs. Thanks @kevinlin-openai and @kevinslin.
PR #90882 fix: add self-knowledge docs rule to system prompt. Related #90713. Thanks @SutraHsing.
PR #94684 fix: #80507 show dry-run output for message send/poll. Thanks @lzyyzznl and @YB0y.
PR #93823 fix(whatsapp): keep opening text chunk when first media fails on multi-chunk reply. Thanks @yetval.
PR #89203 refactor: route SDK session compatibility through seam. Thanks @jalehman.
PR #94453 fix: default cron runMode to "due" instead of "force" (#94270). Thanks @jincheng-xydt and @sallyom and @davectr.
PR #94746 fix(note): prevent clack from re-breaking copy-sensitive tokens. Related #94730. Thanks @xzh-icenter and @berkgungor.
PR #89904 refactor: route sdk session compatibility through accessor. Thanks @jalehman.
PR #86719 fix(skills): retarget stale plugin skill symlinks. Related #85925. Thanks @stevenepalmer and @shakkernerd.
PR #94337 fix(tui): show 0 not ? for fresh-session context tokens in footer. Thanks @mushuiyu886.
PR #94539 fix(android): group settings by intent. Thanks @Tosko4.
PR #92383 fix(gateway): never return an empty chat.history transcript. Thanks @Hidetsugu55.
PR #92574 test(browser): cover action-input CLI request bodies. Related #83877. Thanks @yu-xin-c and @davinci282828.
PR #92873 test(diffs): add viewerState, toolbar toggle, shadow root, and hydrateProps tests (fixes #83915). Thanks @liuhao1024 and @davinci282828.
PR #94257 fix(sessions): preserve Media* index alignment when reading user-turn fields. Thanks @Nas01010101.
PR #94756 fix(codex): bound turn/start text when context budget is non-positive. Related #94748. Thanks @Nas01010101.
PR #94729 fix(skills/trello): add curl to requires.bins to match body examples (fixes #94727). Thanks @liuhao1024 and @berkgungor.
PR #94790 feat(slack): log INFO receipt for inbound app_mention events. Related #94691. Thanks @ZengWen-DT and @BryceMurray.
PR #81696 fix: guard tool event callbacks (AI-assisted). Thanks @enjoylife1243.
PR #94809 chore: forward-port alpha release fixes.
PR #94612 fix(macos): open NSOpenPanel for embedded Control UI file inputs (#94468). Thanks @bbblending and @DINGDANGMAOUP.
PR #89806 fix(feishu): avoid axios interceptor internals. Related #83913. Thanks @sweetcornna and @davinci282828.
PR #91923 fix(ios): clean up notification settings state. Thanks @zats.
PR #91345 fix: suggest close CLI commands. Related #83999. Thanks @glenn-agent and @HannesOberreiter.
PR #94561 Add stdout diagnostics OTEL log exporter. Thanks @jesse-merhi.
PR #91013 fix(gateway): ignore stale abort markers for fresh chat events. Related #91012. Thanks @nxmxbbd.
PR #89279 fix(tasks): deliver ACP completions to bound Discord threads. Related #84022. Thanks @anyech and @h-mascot.
PR #91656 test(cron): expand parseAbsoluteTimeMs test coverage to 39 cases. Related #91654. Thanks @SpecialLeon.
PR #94810 fix(telegram): classify sendChatAction 401 by structured error_code, not bare substring match. Related #94787. Thanks @ZOOWH and @parveshsaini.
PR #94737 fix(reply): clarify provider internal error copy. Thanks @snowzlmbot.
PR #94868 fix(channels): preserve command progress detail. Thanks @vincentkoc.
PR #94891 fix(telegram): send progress previews as html text. Thanks @obviyus.
PR #94683 fix(outbound): keep direct-only targets out of group sessions. Related #92384. Thanks @scotthuang and @haiwei01.
PR #92477 fix: migrate watch app to single-target app (Xcode 27+ compat). Thanks @zats and @joshavant.
PR #94812 test(perf): compare saved CLI startup benchmarks. Thanks @FelixIsaac.
PR #94856 fix(telegram): normalize all HTML tables before entity-escaping in rich messages. Related #94317. Thanks @zhangqueping and @jairrab.
PR #91685 fix(cron): refuse keyless implicit isolated cron delivery inherited from shared agent-main bucket. Thanks @nxmxbbd.
PR #88988 feat(status): show session duration in footer. Related #68226. Thanks @Alix-007 and @marshall-gordfam.
PR #94020 docs(browser): resolve networkidle contradiction across browser docs. Related #80587. Thanks @ZengWen-DT and @esqandil.
PR #93948 fix(gateway): distinguish reachable-but-errored from unreachable in probe diagnostics. Related #79099. Thanks @xialonglee and @ozthedivine.
PR #93276 fix(plugins): stop tool-discovery loads from clearing active providers. Thanks @medns.
PR #94343 fix(gateway): authorize plugin methods from attached registry. Related #92044. Thanks @wangmiao0668000666 and @RDavies8.
PR #94589 fix(channels): stop duplicating inbound previews in system events. Related #94549. Thanks @hugenshen and @gorkem2020.
PR #93873 fix(whatsapp): restart listener on selfChatMode config change. Related #86888. Thanks @xialonglee and @octaivermatt.
PR #93969 fix(xai): reject unsupported multi-agent model refs before runtime fallback. Related #85106. Thanks @xialonglee and @tess020126-cmyk.
PR #89586 feat(channels): add Zalo ClawBot external channel entry and documenta…. Thanks @ken-kuro.
PR #78536 fix(slack): preserve buffered thread stream replies. Related #78061. Thanks @vincentkoc and @KennanHoa.
PR #89236 fix(slack): default member-info userId to inbound sender. Thanks @stroupaloop.
PR #94881 feat(slack): handle global and message shortcuts. Related #63920. Thanks @chrisbaker2000.
PR #90885 fix(agent): resolve compaction model alias to canonical model ref. Thanks @Pick-cat.
PR #90918 fix(agents): forward turn-source routing fields to plugin.approval.request. Related #74003. Thanks @849261680 and @choury.
PR #95029 fix(discord): deliver reasoning replies. Related #94936. Thanks @vincentkoc and @Marvinthebored.
PR #89581 refactor: use canonical transcript reader identity. Thanks @jalehman.
PR #94607 fix(ssh): scope tunnel port preflight to loopback (#94603). Thanks @wangwllu.
PR #95060 fix(test): harden script probe bounds. Thanks @vincentkoc.
PR #95066 fix(e2e): reject unsafe chat tools body lengths. Thanks @vincentkoc.
PR #93941 docs: fix two broken cross-reference anchors. Thanks @Alix-007.
PR #92996 fix(cli): reject present-but-invalid --timeout on status/health fast path. Thanks @Alix-007.
PR #94314 refactor(policy): split doctor modules. Thanks @giodl73-repo.
PR #93051 fix(cron): honor configured retry.backoffMs for recurring error backoff floor. Thanks @Alix-007.
PR #95078 fix(scripts): reject unsafe package download lengths. Thanks @vincentkoc.
PR #91378 feat(cli): add openclaw sessions compact and fail loudly on CLI /compact (fixes #90640). Thanks @Alix-007 and @sallyom and @redasadki.
PR #94676 improve: simplify PR context and evidence. Thanks @hannesrudolph.
PR #95085 fix(scripts): reject unsafe bounded response lengths. Thanks @vincentkoc.
PR #95090 fix(e2e): reject unsafe bounded response text lengths. Thanks @vincentkoc.
PR #95076 [codex] docs: clarify PR body evidence updates. Thanks @brokemac79.
PR #84292 fix(agents): preserve delivered message send results. Related #84271. Thanks @zerone0x and @pearl-dot.
PR #95039 fix(queue): restart dormant followup drains. Related #91909. Thanks @SFVVC.
PR #90373 fix(gateway): remove device-backed node pairings. Related #88488. Thanks @Alix-007 and @manju-rn.
PR #95093 fix(dev): bound realtime SDP answer reads. Thanks @vincentkoc.
PR #95103 fix(gateway): bound pricing catalog streams. Thanks @vincentkoc.
PR #95108 fix(agents): bound Anthropic error streams. Thanks @vincentkoc.
PR #95111 fix(memory): abort batch upload response reads. Thanks @vincentkoc.
PR #95105 fix(ci): cancel stale Testbox PR runs. Thanks @RomneyDa.
PR #95114 fix(test): stabilize tooling guard probes. Thanks @vincentkoc.
PR #94478 fix(doctor): repair legacy Codex route persistence. Related #94184. Thanks @TurboTheTurtle and @Sleepyarno.
PR #95119 fix(test): stream QA Lab stdout artifacts. Thanks @vincentkoc.
PR #95116 fix(ci): cancel stale CodeQL runs. Thanks @RomneyDa.
PR #95126 fix(package): ignore stale packed tarballs. Thanks @vincentkoc.
PR #95133 fix(macos): create DMG output directories. Thanks @vincentkoc.
PR #95137 test(docker): stabilize build signal probe. Thanks @vincentkoc.
PR #95144 fix(sdk): send exec approval resolve id. Thanks @vincentkoc.
PR #95152 fix(sdk): list helpers work without filters. Thanks @vincentkoc.
PR #95207 fix(scripts): preserve kitchen sink RPC request errors. Thanks @vincentkoc.
PR #95203 fix(scripts): guard reused testbox keys. Thanks @vincentkoc.
PR #95188 fix(sdk): type agent mutation RPC params. Thanks @vincentkoc.
PR #95196 fix(sdk): tighten approval response params. Thanks @vincentkoc.
PR #95169 fix(sdk): require session key for effective tools. Thanks @vincentkoc.
PR #95250 fix(slack): record canonical sent thread. Related #95235. Thanks @bek91 and @rockyloveswine.
PR #86627 Keep core doctor health in contribution order. Thanks @giodl73-repo.
PR #93580 fix: preserve cron delivery awareness for target sessions. Thanks @scotthuang and @jalehman.
PR #95030 refactor: add SDK transcript identity target API. Thanks @jalehman.
PR #94838 refactor(copilot): complete harness lifecycle parity. Thanks @vincentkoc.
PR #95328 fix(sessions): reset stale per-channel origin fields on channel switch. Related #95325. Thanks @ZengWen-DT and @jalehman and @gorkem2020.
PR #94461 fix(zai): fall back to manifest baseUrl for synthesized GLM-5 models. Related #94269. Thanks @Pandah97 and @chrysb.
PR #93241 fix(agents): classify Zhipu GLM overload as overloaded for failover. Related #93211. Thanks @0xghost42 and @zhengli0922.
PR #94067 fix(channels): resolve native /think menu levels via runtime catalog for live-discovered models. Related #93835. Thanks @openperf and @civiltox.
PR #94136 fix(zai): expose GLM-5.2 reasoning levels [AI-assisted]. Thanks @BorClaw.
PR #92318 fix(cron): require explicit message target proof. Thanks @hxy91819.Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.10-beta.1
Original source
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.10-beta.1.tgz
integrity: sha512-OgdN7P0Scm8rNgcXUrCGFyrMPJGdC3TdMxdS95jPbEzws9tp3CgZnehcmBNyBqCc9QU4uK0QUk7bnNSW+3ohbw==
release SHA: d91c1607c4d254b6dafa2ea052aef82e68b0c1b0
full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.6.10-beta.1/release-evidence.md
release publish: https://github.com/openclaw/openclaw/actions/runs/27898612086
npm preflight: https://github.com/openclaw/openclaw/actions/runs/27897098428
full release validation: https://github.com/openclaw/openclaw/actions/runs/27897098492
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/27898772805
plugin ClawHub publish: dispatched separately, not awaited by this proof: https://github.com/openclaw/openclaw/actions/runs/27898773498
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/27899322972
npm Telegram beta E2E: not supplied - Jun 21, 2026
- Date parsed from source:Jun 21, 2026
- First seen by Releasebot:Jun 19, 2026
- Modified by Releasebot:Jun 23, 2026
openclaw 2026.6.9
OpenClaw releases a broad platform update with richer Telegram delivery, more dependable agent recovery, stronger Codex integration, standalone provider plugins, and better web, mobile, search, security, and ops workflows.
2026.6.9
Original source
Highlights
Richer Telegram delivery: Telegram now sends rich HTML, preserves rich markdown and sticker paths, renders progress drafts and command output more faithfully, normalizes HTML tables safely, and keeps mentions and spooled handlers on the right delivery path. (#93286, #93164, #93124, #93364, #93130, #93088, #93281, #94891, #94856) Thanks @obviyus, @vincentkoc, @goutamadwant, @kesslerio, @NianJiuZst, @SweetSophia, @Marvinthebored, @aaajiao, @zhangqueping, and @jairrab.
More dependable agent recovery: retries, terminal outcomes, usage after compaction, session history repair, and reply reconciliation now keep more interrupted or partial turns moving toward a visible final result. (#92191, #93073, #93228, #93084, #93469, #93291, #90943) Thanks @ai-hpc, @lml2468, @fuller-stack-dev, @Hollychou924, @leno23, @de1tydev, @425072024, @wuwahe3, @drvoss, @yetval, @sandieman2, and @vincentkoc.
A stronger Codex integration: Codex gains automatic plugin approvals, GPT-5.3 Spark OAuth routing, remote-node exec as a dynamic tool, and more reliable app-server teardown and terminal outcomes. (#92625, #89133, #93654, #91767, #93287) Thanks @kevinslin, @VACInc, @vincentkoc, @JPKay-AI, and @aliahnaf2013-max.
Standalone official provider plugins: external provider packages are now first-class npm releases, externally installed channel plugins load at Gateway startup, and StepFun is available from npm and ClawHub. (#93470) Thanks @sunlit-deng, @cxdnicole, and @vincentkoc.
More capable web and native clients: the Control UI adds a session workspace rail and extension health, iOS adds Watch controls, and Android shows chat context. (#92856, #91952, #93387, #92837) Thanks @Solvely-Colin, @jalehman, @joshavant, and @Tosko4.
More useful search and skills: Codex Hosted Search is available, key-free search providers remain deliberate opt-ins, and ClawHub skill installs retain verified source provenance. (#93446, #93616, #93283, #93506) Thanks @fuller-stack-dev, @davemorin, @momothemage, @nmccready-tars, and @vincentkoc.
Changes
Providers and auth: add Codex Hosted Search, improve Gemini CLI OAuth behind proxies, and keep external provider onboarding on current choices and package metadata. (#93446, #92815) Thanks @fuller-stack-dev, @yetval, @EvetteYoung, and @vincentkoc.
Plugins and installs: externalized official providers publish as independent npm packages, Gateway discovers installed channel plugins at startup, and StepFun installs from npm or ClawHub. (#93470) Thanks @sunlit-deng, @cxdnicole, and @vincentkoc.
Dashboard and mobile: add a session workspace rail, plugin health in status, compact cron lists, and iOS Watch controls. (#92856, #91952, #93395, #93387) Thanks @Solvely-Colin, @jalehman, @yu-xin-c, @centralpc, @joshavant, and @vincentkoc.
Codex, observability, and skills: add automatic plugin approvals and SecretRefs, preserve ClawHub skill provenance, add OpenTelemetry log export, and expose remote-node execution to Codex when a node is connected. (#92625, #94324, #93283, #94561, #93654) Thanks @kevinslin, @kevinlin-openai, @momothemage, @nmccready-tars, @jesse-merhi, @vincentkoc, and @JPKay-AI.
QA and release engineering: QA scenarios now use YAML, with broader profile evidence and release coverage for the plugin and channel matrix. Thanks @vincentkoc.
Fixes
Security and privacy: redact secrets from debug/config output, block internal HTTP session overrides, audit open-DM tool exposure, and retain plugin write ownership checks. (#93333, #88496, #93443, #92883, #93353) Thanks @Alix-007, @jason-allen-oneal, @coygeek, @RichardCao, @yu-xin-c, @cjg20ss, @eleqtrizit, and @vincentkoc.
Agent and session runtime: retry thinking-only and empty post-tool turns, prevent duplicate hook execution, preserve pending subagent delivery, preserve fresh usage through compaction, and repair partial JSON/history artifacts. (#92191, #93073, #93009, #93084, #93469, #94349, #92383, #94257) Thanks @ai-hpc, @lml2468, @fuller-stack-dev, @zenglingbiao, @dertbv, @Hollychou924, @leno23, @de1tydev, @425072024, @wuwahe3, @drvoss, @vincentkoc, @sallyom, @oiGaDio, @Hidetsugu55, and @Nas01010101.
Channels and replies: fix Telegram rich delivery, table rendering, action-error handling, and ingress recovery; preserve command progress detail across channel adapters; retain WhatsApp opening text after a media failure; keep Mattermost thread replies intact; and harden Discord action handling. (#93286, #93364, #93281, #93076, #93334, #93424, #93488, #94868, #94891, #94856, #94810, #93823) Thanks @obviyus, @NianJiuZst, @mcaxtr, @rushindrasinha, @amknight, @lzyyzznl, @darealgege, @vincentkoc, @zhangqueping, @jairrab, @ZOOWH, @parveshsaini, and @yetval.
Storage and migrations: avoid SQLite WAL on network filesystems, clean reindex artifacts, keep setup state out of workspace dot-directories, and import default-agent auth profiles into SQLite. (#93454, #92891, #93182, #93295, #93520, #93156) Thanks @vincentkoc, @ZengWen-DT, @Zeng-wen, @potterdigital, @Alix-007, @Pick-cat, @sallyom, @1qh, and @Tazio7.
Provider and model behavior: fix Gemini CLI proxy OAuth, restore Codex Spark OAuth routing, correct Bedrock embedding model IDs, and preserve configured defaults in embedded runs. (#92815, #89133, #93452, #93428) Thanks @yetval, @EvetteYoung, @VACInc, @LiuwqGit, @aleck31, @zenglingbiao, @danielgerlag, and @vincentkoc.
CLI, TUI, and apps: accept global flags after subcommands, keep terminal output and activity indicators visible, preserve CJK IME composition, and refresh stale UI state. (#93455, #93460, #93006, #93427, #93498, #93606) Thanks @ooiuuii, @Alix-007, @ZengWen-DT, @Zeng-wen, @AlethiaQuizForge, @Zhaoqj2016, @liuhao1024, @BrianClaw1955, @vincentkoc, and @NicoBoom13.
Operations and updates: harden official plugin recovery, restart managed Gateways after failed update handoff, keep safe cron delivery defaults, avoid Node-specific npm prefixes, and keep package validation paths reliable. (#93325, #92111, #93650, #94453, #91685) Thanks @vincentkoc, @yetval, @ofan, @yaanfpv, @jincheng-xydt, @sallyom, @davectr, and @nxmxbbd.
Complete contribution record
This audited record covers the complete v2026.6.8..HEAD history: 422 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #90463 refactor: add session accessor seam with gateway consumer. Thanks @jalehman.
PR #88656 Drop reasoning-only length turns from replay. Thanks @abel-zer0.
PR #92856 feat(webui): add session workspace rail. Thanks @Solvely-Colin.
PR #92845 docs(browser-control): document OPENCLAW_EAGER_BROWSER_CONTROL_SERVER requirement. Related #92841. Thanks @liuhao1024 and @jeugregg.
PR #82366 fix: use passive periodic sqlite wal checkpoints. Related #81715. Thanks @honor2030 and @KrasimirKralev.
PR #92815 fix(google): route Gemini CLI OAuth through the env proxy (#46184). Thanks @yetval and @EvetteYoung.
PR #91331 fix(mattermost): merge progress preview lines by identity. Related #89761. Thanks @iloveleon19 and @leonthe8th and @vincentkoc.
PR #92909 fix(tui): keep spinner active when toggling tools. Related #49763. Thanks @ZengWen-DT and @Zeng-wen and @vincentkoc and @CrimsonDump.
PR #92904 fix(elevenlabs): use current TTS model ids. Thanks @vortexopenclaw and @vincentkoc.
PR #92642 fix #86872: Subagent run reports success but fails to write output file. Thanks @zhangguiping-xydt and @vincentkoc and @zapper35.
PR #89122 refactor: route command session reads through seam. Thanks @jalehman.
PR #90943 fix(reply): deliver final reply when queued follow-up claims session; scope dedupe to routed thread. Thanks @sandieman2 and @vincentkoc.
PR #92894 fix(skills): keep managed prompt paths readable. Related #92875. Thanks @kesslerio and @sallyom.
PR #39617 fix: reload config in slash command routing so dmScope is respected. Related #39605. Thanks @Ciward.
PR #92191 fix(agents): retry thinking-only errored turns. Related #91953. Thanks @ai-hpc and @lml2468.
PR #92891 fix(memory): clean stale reindex temp files. Related #92874. Thanks @ZengWen-DT and @Zeng-wen and @vincentkoc and @potterdigital.
PR #93005 Add OpenRouter Fusion guidance and prompt context. Related #92984. Thanks @sallyom.
PR #88792 fix(state): harden sqlite path caching. Thanks @vincentkoc.
PR #93022 fix(gateway): repair usage cost aggregation across agents. Thanks @luke-skywalker-open-claw and @stablegenius49.
PR #93020 fix(telegram): cool down transient sendChatAction failures. Related #56096. Thanks @Boulea7 and @sumaiazaman and @Pick-cat and @cal-rufus.
PR #89160 fix(agents): detect truncated API responses to prevent silent session hang. Related #89051. Thanks @joelnishanth and @ArthurusDent.
PR #93009 fix(agents): make wrapToolWithBeforeToolCallHook idempotent to prevent double hook execution (fixes #92973). Thanks @zenglingbiao and @dertbv.
PR #92991 fix(agents): tolerate missing attribution baseUrl. Related #92974. Thanks @samrusani and @Haderach-Ram.
PR #92913 fix(opencode-go): register model catalog to fix context window detection. Related #92912. Thanks @kumaxs.
PR #89129 refactor: route bundled plugin session callers through seam. Thanks @jalehman.
PR #93084 fix(agents): preserve fresh usage after compaction. Related #50795. Thanks @Hollychou924 and @leno23 and @de1tydev and @425072024 and @vincentkoc and @wuwahe3.
PR #92869 fix #90333: [Bug]: Discord image build aborts at step 66 — openclaw-build-messaging-plugins.py exits 1. Thanks @zhangguiping-xydt and @vincentkoc and @chriskosys.
PR #93011 fix(gateway): accept file-only input on /v1/responses (parity with image-only). Thanks @yetval and @vincentkoc.
PR #92915 Convert QA scenarios to YAML files. Thanks @RomneyDa.
PR #91767 Fix one-shot Codex app-server teardown. Thanks @aliahnaf2013-max.
PR #92625 feat(codex): add auto plugin approvals. Thanks @kevinslin.
PR #91587 test(qa): add qa run --qa-profile and unified output summary/evidence. Thanks @RomneyDa.
PR #93104 test(reply): seed channel fixtures for dedupe tests. Thanks @RomneyDa.
PR #93107 test(reply): preserve telegram dedupe fallback. Thanks @RomneyDa.
PR #92954 fix(memory): accept local default model path migration. Thanks @mushuiyu886 and @vincentkoc.
PR #90936 fix(agents): do not misclassify client-disconnect abort as run timeout. Related #90764. Thanks @openperf and @reginaldomarcilon.
PR #90812 fix(voice-call): preserve live Twilio streams in stale reaper. Related #79121. Thanks @Takhoffman and @sahibzada-allahyar and @donkeykong91.
PR #93094 fix(whatsapp): bound socket operations. Thanks @mcaxtr.
PR #91629 fix(scripts): add database-first legacy store guard. Related #91628. Thanks @galiniliev.
PR #93124 fix(telegram): render progress drafts as rich previews. Thanks @Marvinthebored.
PR #93109 test(qa): embed profile scorecard evidence. Thanks @RomneyDa.
PR #87298 test: add temp directory helper guidance. Thanks @hxy91819.
PR #92318 fix(cron): require explicit message target proof. Thanks @hxy91819.
PR #93137 fix(imessage): honor disabled reply actions. Related #92142. Thanks @omarshahine and @dprev.
PR #93134 fix(feishu): pass card_msg_content_type to get full card content (fixes #78289). Thanks @liuhao1024 and @vincentkoc and @longdoubled7.
PR #93138 fix(agents): preserve literal current session resolution. Thanks @liuhao1024 and @vincentkoc.
PR #91225 fix #83830: [Bug]: Dreaming diary repeats "first day" narrative every sweep — same early memories dominate snippets. Thanks @mushuiyu886 and @YinLiuLiu66.
PR #93153 simplify QA evidence profile and mappings/coverage shape. Thanks @RomneyDa.
PR #93164 fix(telegram): preserve rich markdown line breaks. Thanks @vincentkoc.
PR #93119 fix: accept mixed source/dist bundled roots. Related #87730. Thanks @arkyu2077 and @vincentkoc and @jasonftl.
PR #93130 fix(telegram): preserve sticker media paths. Related #83748. Thanks @goutamadwant and @vincentkoc and @aaajiao.
PR #93073 fix(agents): retry empty post-tool final turns. Thanks @fuller-stack-dev.
PR #91784 fix(voice-call): require realtime websocket path boundary. Thanks @jason-allen-oneal.
PR #89133 Restore GPT-5.3 Codex Spark OAuth routing. Thanks @VACInc.
PR #91996 refactor: prune unused iOS code. Thanks @zats.
PR #90231 fix #69443: [Bug] Subagent RPC callback to WeChat session key routed to main session instead. Thanks @zhangguiping-xydt and @sliverp and @chen11221.
PR #89920 fix(matrix): replace recovered command progress lines. Thanks @bdjben and @jesse-merhi.
PR #93159 fix(tui): keep parent stdin paused after exit. Thanks @fuller-stack-dev.
PR #93201 fix(auto-reply): clear pending-final state before honoring post-send abort (#89115). Thanks @amknight and @danashburn.
PR #93228 fix(agents): replace prose terminal classifiers. Thanks @fuller-stack-dev.
PR #93231 fix(status): correct pinned model clear hint. Thanks @hxy91819.
PR #92428 fix(qqbot): keep markdown table chunks valid. Thanks @sliverp.
PR #93220 fix(status): avoid stale session context windows. Thanks @hxy91819.
PR #91957 perf(sessions): share one enumeration across archive retention sweeps. Thanks @amknight.
PR #93281 fix(telegram): recover pid-reused ingress claims. Thanks @obviyus.
PR #93287 fix(codex): preserve terminal outcome ordering.
PR #93182 fix(memory): clean rollback-journal reindex temp sidecar on NFS stores. Thanks @Alix-007.
PR #93283 Persist ClawHub skill install provenance. Related #92077. Thanks @momothemage and @nmccready-tars.
PR #88872 fix: attribute spawned task runs to child agent. Related #66670. Thanks @Alix-007 and @Neomail2.
PR #92837 fix(android): show live chat context usage. Thanks @Tosko4.
PR #93325 fix(cli): harden official plugin recovery. Thanks @vincentkoc.
PR #93286 feat(telegram): send rich messages as rich html. Thanks @obviyus.
PR #92910 fix(memory-core): safely refresh qmd index during collection repair.
PR #93329 fix(cli): allow zero Discord timeout duration. Related #93327. Thanks @rohitjavvadi.
PR #91625 fix(cron): add cron edit --clear-model to clear a job's model override. Thanks @ly-wang19.
PR #91691 [AI] fix(memory): prevent empty-string expectedModel in resolveMemory…. Thanks @xydt-tanshanshan.
PR #93006 fix(tui): keep stderr visible when local shell stdout fills the output cap. Thanks @Alix-007.
PR #93001 fix(daemon): prefer stderr over stale stdout in gateway restart diagnostics. Thanks @Alix-007.
PR #91117 refactor: remove dead code and improve string concatenation. Thanks @Pommelle.
PR #90893 fix(models): mask paste-token input in CLI auth prompt. Thanks @anurag-bg-neu.
PR #90571 fix(configure): mask gateway password input in CLI wizard prompt. Thanks @anurag-bg-neu.
PR #91768 fix(ios): respect chat header safe area. Thanks @zats.
PR #93245 fix(cron): resolve lastRunStatus in cron list/show human output. Thanks @ly-wang19.
PR #78765 fix(tui): avoid inserting spaces into long CJK text. Thanks @hpt.
PR #91776 fix(ios): refresh permission rows after grants. Thanks @zats.
PR #92817 fix(cron): trust agent output when channel is unresolved without explicit delivery. Related #90664. Thanks @fsdwen and @dertbv.
PR #93297 fix(control-ui): respect agents.defaults.timeFormat for timestamps. Related #58147. Thanks @ZengWen-DT and @Zeng-wen and @TommoT2.
PR #93364 Fix Telegram rich progress command output. Thanks @obviyus.
PR #91952 feat(status): surface plugin health. Thanks @jalehman.
PR #75025 fix(heartbeat): refresh stale Current time line on every helper call (#44993). Thanks @MoerAI and @mclee1975.
PR #90992 docs(windows): fix WSL gateway-autostart recipe for WSL ≥ 2.6.1.0 idle-termination. Thanks @spencer2211.
PR #86544 fix(cli): show Gemini CLI runtime auth status. Related #79585. Thanks @giodl73-repo and @fabricefoy.
PR #88945 fix(plugins): serialize binding approval saves. Related #64065. Thanks @Alix-007 and @lihaokun.
PR #90115 fix(gateway): pass managed inbound PDFs through chat.send. Related #90097. Thanks @harjothkhara and @joeykrug.
PR #74613 docs(cli): add agent selector to CLI backend quick start. Related #68940. Thanks @vyctorbrzezowski and @drmarcopapa.
PR #89121 refactor: add transcript reader seam. Thanks @jalehman.
PR #84434 fix(cli): disable ScheduleWakeup/CronCreate in --print claude runs. Thanks @SkyWolfDreamer.
PR #66985 fix(agents): resolve requestedNode to canonical ID before boundNode comparison. Related #87213. Thanks @mujiannan.
PR #91488 fix(reply): project preflight compaction gate by next-input size on fresh tokens. Thanks @yetval.
PR #93353 fix(plugins): require owner for plugin writes. Thanks @eleqtrizit.
PR #91499 fix(cron): preserve scheduled turn tool policy [AI]. Thanks @mmaps.
PR #90412 fix(sessions): cache warm transcript reads to avoid per-turn re-parse. Related #83943. Thanks @Alix-007 and @yyds-xxxx.
PR #93118 fix(gateway): guard fast-path startup migrations. Related #93032. Thanks @openperf and @Haderach-Ram.
PR #93355 fix(ci): verify performance workflow downloads. Thanks @eleqtrizit.
PR #93358 fix(outbound): guard cross-context message mutations. Thanks @eleqtrizit.
PR #93362 fix(flock): bind allow-always to wrapped command. Thanks @eleqtrizit.
PR #92578 refactor(whatsapp): add inbound admission foundation. Thanks @mcaxtr.
PR #89547 Control Telegram group history context. Thanks @mmaps.
PR #89201 refactor: add transcript runtime identity contract. Thanks @jalehman.
PR #93357 fix(plugins): enforce install policy in wrappers. Thanks @eleqtrizit.
PR #93156 fix(doctor): import default-agent auth profiles into sqlite. Related #93145. Thanks @Pick-cat and @sallyom and @Tazio7.
PR #93179 Add slim evidence mode for QA profile evidence. Thanks @RomneyDa.
PR #93349 fix(control-ui): keep workboard card titles visible in overflowing columns (fixes #91717). Thanks @Pick-cat and @NicoBoom13.
PR #93324 fix(cli): accept --no-color after subcommands. Thanks @ooiuuii.
PR #89621 Return Google Chat thread metadata from message sends. Thanks @franco-viotti.
PR #82458 fix(infra): drop duplicated "restart" word in restart-sentinel summary. Thanks @jameswniu.
PR #85471 Suppress cron announce control replies. Related #85421. Thanks @TurboTheTurtle and @leatherneck-33.
PR #85316 fix(auth): keep alias-compatible auth-profile overrides instead of clearing them. Thanks @SkyWolfDreamer.
PR #89260 fix(doctor): separate platform-incompatible skills from missing requirements. Related #89232. Thanks @Alix-007 and @CameronWeller.
PR #90846 fix(media): stop pruning media on write; let the configured timer do it. Thanks @lundog.
PR #88062 fix(logging): avoid stalled warnings for active model calls. Thanks @litang9.
PR #93308 fix(discord): reject malformed realtime consult calls. Thanks @khoek.
PR #93334 fix(whatsapp): notify user when trailing media send fails instead of silent drop. Thanks @rushindrasinha.
PR #92575 fix(sessions): preserve user behavior overrides across daily/idle rollover (#92562) [AI-assisted]. Thanks @harjothkhara and @civiltox.
PR #89124 refactor: route auto-reply sessions through session seam. Thanks @jalehman.
PR #93431 fix: stabilize transcript cache and CLI env isolation. Thanks @shakkernerd.
PR #93412 fix(discord): suppress tool progress for message-tool replies. Thanks @mgunnin and @vincentkoc.
PR #93409 fix(whatsapp): stop markdownToWhatsApp dropping code spans followed by a digit. Thanks @rushindrasinha.
PR #93295 fix(memory): swap rollback-journal sidecar during atomic reindex. Thanks @Alix-007.
PR #93076 fix(whatsapp): preserve auth on terminal disconnects. Thanks @mcaxtr.
PR #93435 fix(agents): bound autoreview scope. Thanks @vincentkoc.
PR #93279 fix(telegram): restore readable default text sends. Related #93263. Thanks @NianJiuZst and @SweetSophia.
PR #93429 fix(line): cap carousel column text at 60 chars when a title or image is set. Thanks @harjothkhara and @vincentkoc.
PR #93428 fix(agents): resolve configured default model in runEmbeddedAgent (fixes #93419). Thanks @zenglingbiao and @vincentkoc and @danielgerlag.
PR #93427 fix(tui): show activity indicator for system-injected runs. Related #51825. Thanks @ZengWen-DT and @vincentkoc and @Zeng-wen and @AlethiaQuizForge.
PR #90003 feat(policy): cover exec approvals artifact. Thanks @giodl73-repo.
PR #93448 fix(guards): allow auth profile sqlite reader. Thanks @amknight.
PR #93424 fix(mattermost): keep message tool replies in threads. Thanks @amknight and @vincentkoc.
PR #93418 fix(telegram): forward Bot API 10.1 rich_message content to agent. Related #93410. Thanks @xzh-icenter and @vincentkoc and @0pen7ech.
PR #93175 test(qa): taxonomy profiles: includeAllCategories for release profile, update some coverage. Thanks @RomneyDa.
PR #93456 fix(agents): handle string assistant message content. Thanks @vincentkoc.
PR #93441 fix(outbound): ignore schema-padded poll metadata on send. Related #43015. Thanks @weichengdeng and @charzhou.
PR #93443 fix(gateway): block internal HTTP session overrides. Thanks @RichardCao.
PR #93454 fix(sqlite): disable WAL on network filesystems. Thanks @vincentkoc.
PR #90275 test: make install-safe-path symlink tests compatible with Windows. Thanks @aniruddhaadak80.
PR #93464 fix(qa): suppress empty WhatsApp debug artifacts. Thanks @vincentkoc.
PR #90861 fix(cli): preserve sessions_yield over MCP. Related #77426. Thanks @zhangguiping-xydt and @jarvisagimuspicard-hub.
PR #90946 fix(infra): preserve inherited gateway PID across reparent during cleanup. Thanks @amittell.
PR #92220 fix(media): extract large managed inbound PDFs via media-understanding. Related #90096, #90097. Thanks @amknight and @joeykrug.
PR #91208 fix #91047: Plugin session-extension registry not pinned; sessions.pluginPatch fails after agent/subagent plugin-load churn. Thanks @mushuiyu886 and @teamadams.
PR #92111 fix(update): restart managed gateway when update handoff fails after stop. Related #92088. Thanks @yetval and @ofan.
PR #93238 fix(agents): honor disabled envelope timestamps at model boundary. Thanks @osolmaz.
PR #93343 fix(codex): de-duplicate commentary notes across the raw response lane. Related #93296. Thanks @Marvinthebored and @Peetiegonzalez.
PR #93361 fix(openshell): pin mirror remote mutations. Thanks @eleqtrizit.
PR #93354 fix(discord): block cross-provider guild admin actions. Thanks @eleqtrizit.
PR #92178 fix(gateway): normalize malformed paired access lists. Related #90654. Thanks @wangmiao0668000666 and @EmilioNicolas.
PR #85254 perf(plugins): thread prepared manifestPlugins through runtime model-id normalize chain. Thanks @zeroaltitude.
PR #93489 Add ClawHub content rights docs to sidebar. Thanks @Patrick-Erichsen.
PR #93466 [AI] fix(feishu): guard against missing inbound in channelRuntime fallback. Thanks @xydt-tanshanshan.
PR #93460 fix(cli): honor --log-level in route-first commands. Related #93457. Thanks @ooiuuii.
PR #93495 fix(cron): clear delivery routing fields from cron edit. Thanks @ly-wang19 and @vincentkoc.
PR #93494 docs: point PR landing at maintainer workflow. Thanks @fuller-stack-dev and @vincentkoc.
PR #93487 fix(ui): add agent selector to skills page. Related #78553. Thanks @goutamadwant and @vincentkoc and @xiaobu1112.
PR #93488 fix(discord): apply tool status emojis immediately to avoid override by thinking reactions. Related #92715. Thanks @lzyyzznl and @vincentkoc and @darealgege.
PR #93055 fix(ui): restore provider usage pill in desktop chat composer [AI]. Thanks @harjothkhara.
PR #83156 fix(matrix): accept bracketed display-name mentions. Related #83142. Thanks @wdx-agent-io and @wdongxv.
PR #93333 fix(auto-reply): redact secrets in /debug show and /debug set output. Thanks @Alix-007.
PR #88496 fix(auto-reply): redact secrets in config show output. Related #65623. Thanks @jason-allen-oneal and @coygeek.
PR #93105 fix(doctor): repair null agents.list[].workspace values. Related #77718. Thanks @xydigit-sj and @slideshow-dingo.
PR #73923 fix(ui): preserve gateway token during safe websocket url edits. Related #41545. Thanks @wsyjh8.
PR #88970 fix #85871: [Bug]: Heartbeat scheduler silently fails to fire on 5.20 and all 5.x versions (regression from 4.23). Thanks @zhangguiping-xydt and @vincentkoc and @carlbjson.
PR #93511 fix(imessage): normalize leading NUL echo-cache prefixes. Thanks @vincentkoc and @drvoss.
PR #92594 [Bug]: ollama-cloud runtime fails DNS lookup for ai.ollama.com, while ollama/:cloud works. Related #92391. Thanks @zhangguiping-xydt and @vincentkoc and @kvzsolt.
PR #93512 build(docs): finish PowerShell-safe docs formatting. Related #44293. Thanks @vincentkoc and @yil337 and @aniruddhaadak80.
PR #93513 fix(skills): refresh persisted snapshots after restart. Thanks @vincentkoc and @fif911 and @skadauke.
PR #93517 fix(skills): quote skill-creator template description. Thanks @vincentkoc and @parubets.
PR #73976 fix(memory): use per-keyword FTS search in hybrid mode #39484. Thanks @joshuakeithpa-sudo.
PR #93520 fix(workspace): store setup state outside workspace dot-dir. Thanks @vincentkoc and @1qh.
PR #93521 fix(onboard): skip Homebrew prompt on unsupported platforms. Related #68893. Thanks @vincentkoc and @yurivict.
PR #93522 fix(feishu): send post mentions as native at elements. Thanks @vincentkoc and @gavin-ali and @YizukiAme and @Panniantong.
PR #93496 fix(gateway): rotate already-stale generated transcript filename on /reset. Thanks @harjothkhara and @vincentkoc.
PR #93471 fix(cron): preserve aborted isolated-run failure. Thanks @BhargavSatya and @vincentkoc.
PR #93473 fix(memory): report skipped QMD embedding probe. Related #77645. Thanks @TurboTheTurtle and @vincentkoc and @aderius.
PR #93498 fix(ui): preserve CJK IME composition. Related #86035. Thanks @Zhaoqj2016 and @vincentkoc.
PR #93088 fix(telegram): bind bot mentions to assistant identity. Thanks @kesslerio and @vincentkoc.
PR #93499 fix(nodes): return screen snapshots as media. Related #90126. Thanks @zenglingbiao and @vincentkoc and @JeffSteinbok.
PR #93506 fix(skills): trust verified ClawHub source provenance. Thanks @vincentkoc.
PR #93525 agents: notify chat exec empty-success completions. Thanks @vincentkoc and @wenkang-xie.
PR #93446 feat: add Codex hosted web search. Thanks @fuller-stack-dev.
PR #92883 fix(security): audit open dm tool exposure. Related #55612. Thanks @yu-xin-c and @vincentkoc and @cjg20ss.
PR #93476 fix(mattermost): preserve Codex progress preview. Related #88766. Thanks @goutamadwant and @vincentkoc and @KelTech-Services.
PR #93395 feat(cron): add compact list responses. Related #93366. Thanks @yu-xin-c and @vincentkoc and @centralpc.
PR #93527 fix(cron): preserve model overrides for text payloads. Thanks @vincentkoc and @liaoandi.
PR #90487 fix: harden ChatGPT Responses missing content-type streams. Thanks @anyech and @vincentkoc.
PR #93528 fix(gateway): tolerate transient pre-hello clean closes. Thanks @vincentkoc and @ruanrrn.
PR #93529 fix(auto-reply): allow message tool for group attachments. Related #43146. Thanks @vincentkoc and @Robcis.
PR #93291 fix(reply): preserve pending thread evidence when reconciling partial send results. Thanks @yetval and @vincentkoc.
PR #90572 fix(feishu): drop self-authored receive echoes. Thanks @baskduf.
PR #93455 fix(cli): accept --log-level after subcommands. Thanks @ooiuuii and @vincentkoc.
PR #93452 fix(bedrock): strip inference profile prefix from model ID in embedding adapter. Related #79212. Thanks @LiuwqGit and @vincentkoc and @aleck31.
PR #89799 fix(cli): skip compile cache on early Node 24.x to avoid startup deadlock. Related #86550. Thanks @zhangguiping-xydt and @vincentkoc and @renyuliang000.
PR #93469 fix(agents): drop partialJson streaming artifacts from session history repair. Thanks @drvoss and @vincentkoc.
PR #93463 fix(codex): log app-server compaction completion. Related #83932. Thanks @goutamadwant and @vincentkoc and @aounakram.
PR #93562 fix(tui): refresh after external session reset. Related #38966. Thanks @vincentkoc and @wsyjh8 and @yizhanzjz.
PR #93470 fix(plugins): load externally-installed channel plugins at gateway startup. Related #93219. Thanks @sunlit-deng and @vincentkoc and @cxdnicole.
PR #88796 fix(discord): resolve guildId from session channel for search actions. Related #88790. Thanks @SebTardif and @vincentkoc and @mugabuga.
PR #93194 fix(agents): preserve prompt-released session metadata. Related #93193. Thanks @snowzlm.
PR #89483 fix(gateway): project failed agent turns in chat history. Related #89197. Thanks @IWhatsskill and @vincentkoc and @yangiit.
PR #93434 fix: avoid parent group allowlist false positive. Related #92684. Thanks @kingrubic and @vincentkoc and @motteman.
PR #93449 fix(feishu): dedupe redelivered text by stable retry identity. Related #46778. Thanks @ZengWen-DT and @vincentkoc and @kingcuty.
PR #93407 AGT-80 AGT-81 Fix Discord ingress ack ordering. Thanks @mgunnin and @vincentkoc.
PR #93439 fix(agents): honor embedded run default model. Related #93419. Thanks @harjothkhara and @vincentkoc and @danielgerlag.
PR #93565 fix(cli): summarize cleanup dry-run by label. Related #76826. Thanks @AgentArcLab and @vincentkoc and @renatomaluhy.
PR #93509 fix(skills): clear orphaned idempotency pointer on corrupt-metadata re-begin. Thanks @Alix-007 and @vincentkoc.
PR #93274 Clarify plugin channel config additional-property errors. Thanks @zhangguiping-xydt and @vincentkoc.
PR #93555 fix(read): route text decoding through shared Windows codepage fallba…. Thanks @zhanxingxin1998 and @vincentkoc.
PR #93314 fix(skills): preserve ClawHub origin provenance on readback. Thanks @Alix-007 and @vincentkoc.
PR #93573 fix(acp): keep bridge sessions out of stale ACP classification [AI-assisted]. Related #38907. Thanks @eldar702 and @vincentkoc and @ninaopenclaw.
PR #93398 fix(cron): emit isolated model usage diagnostics. Related #92338. Thanks @849261680 and @vincentkoc and @niks999.
PR #93367 Fix SSH sandbox remote directory args. Related #93344. Thanks @dmorn and @vincentkoc.
PR #93574 fix(feishu): suppress log noise for bot_p2p_chat_entered_v1 event [AI-assisted]. Related #42351. Thanks @eldar702 and @vincentkoc and @sunking0223.
PR #93269 Fix tokenjuice bash results without details. Thanks @moeedahmed and @vincentkoc.
PR #93575 fix(telegram): hydrate group reply-chain media into model context [AI-assisted]. Thanks @eldar702 and @vincentkoc.
PR #93261 fix(plugins): resolve provider policy surface for plugin-owned CLI backends. Related #93259. Thanks @BitmapAsset and @vincentkoc.
PR #93303 fix(whatsapp): bound stalled read-receipt socket operations. Thanks @Alix-007 and @vincentkoc.
PR #93242 fix(mattermost): keep bare @mention with empty body instead of dropping it. Related #93205. Thanks @iloveleon19 and @vincentkoc.
PR #93606 fix(ui): clear stale Talk error when session transitions to non-error state (fixes #88176). Thanks @liuhao1024 and @vincentkoc and @BrianClaw1955.
PR #93607 perf(tasks): memoize reconcileInspectableTasks for same-tick calls (fixes #73531). Thanks @liuhao1024 and @vincentkoc and @slideshow-dingo.
PR #93612 fix(gateway): compute sessions.usage aggregate totals from all sessions, not just the limited page (fixes #76496). Thanks @liuhao1024 and @vincentkoc and @bobsahur-robot.
PR #93615 fix(telegram): recover lone active spooled handler on timeout (#84158). Thanks @0xghost42 and @vincentkoc and @crash2kx.
PR #93616 Keep key-free web search providers opt-in. Thanks @davemorin and @vincentkoc.
PR #93298 fix #93044: control-ui webchat double-renders agent replies when dmScope=main. Thanks @zhangguiping-xydt and @vincentkoc and @cfmilam.
PR #93618 fix(feishu): filter temporary card-action-c-* IDs from reply target to prevent Invalid open_message_id errors (fixes #56818). Thanks @liuhao1024 and @vincentkoc and @SwordImmortal.
PR #93387 feat(ios): add watch action surface. Thanks @Solvely-Colin and @joshavant.
PR #93648 fix(doctor): archive superseded plugin install index conflicts. Related #90418. Thanks @vincentkoc and @ramitrkar-hash.
PR #93649 fix(qwen): place DashScope image prompts in user content. Related #92688. Thanks @vincentkoc and @Yachiyo404.
PR #93650 fix(update): avoid per-Node npm prefixes during self-update. Related #80387. Thanks @vincentkoc and @yaanfpv.
PR #93653 fix(skill-workshop): skip helper sessions during auto-capture. Thanks @vincentkoc and @zhangguiping-xydt.
PR #93654 fix(codex): expose remote node exec as a Codex dynamic tool. Related #92141. Thanks @vincentkoc and @JPKay-AI.
PR #93662 fix(discord): protect mention aliases in code fences. Thanks @vincentkoc and @rohitjavvadi.
PR #93663 fix(clawdock): open dashboard on published port without starting deps. Related #77344. Thanks @vincentkoc and @dhoman.
PR #93670 fix(browser): recover stale managed Chrome CDP listener. Related #41750. Thanks @vincentkoc and @rohitjavvadi and @kissman911.
PR #93672 fix(commands): preserve multiline slash skill args. Related #79155. Thanks @vincentkoc and @web3blind.
PR #93674 fix(browser): accept top-level act fields with nested requests. Related #38762. Thanks @vincentkoc and @angelusbr and @Lumos-789.
PR #93678 fix(plugins): allow Dreaming sidecar through restrictive memory allowlists. Related #92536. Thanks @vincentkoc and @pradeep7127 and @resYuto.
PR #93306 fix(status): ignore stale context after model switch. Thanks @hxy91819.
PR #93666 fix(control-ui): copy code blocks over plain HTTP via clipboard fallback. Related #93628. Thanks @Pick-cat and @pjq2926.
PR #93629 fix(reply): preserve unsent text-only finals after block pipeline streamed partial content (fixes #81078). Thanks @liuhao1024 and @Jackten.
PR #93690 fix(telegram): dispatch MEDIA directives as attachments. Related #77702. Thanks @vincentkoc and @butttersbot.
PR #93693 fix(gateway): ignore stale sudo scope for root user services. Related #81410. Thanks @vincentkoc and @Ericksza.
PR #93646 fix(agents): return string assistant content in getLastAssistantText. Thanks @Alix-007 and @vincentkoc.
PR #93687 fix(i18n): retain Codex error tails in logs. Thanks @hxy91819.
PR #93630 fix(heartbeat): bootstrap plugin session targets. Thanks @ZengWen-DT and @vincentkoc.
PR #93658 fix(wizard): preserve existing default model during setup auth choice [AI-assisted]. Related #64129. Thanks @ml12580 and @vegapunk9527.
PR #93671 fix(respawn): rewrite pnpm versioned entry paths to stable wrapper (fixes #52313). Thanks @liuhao1024 and @vincentkoc and @RichardCao.
PR #93698 Fix Telegram rich progress detail updates. Thanks @obviyus.
PR #93656 fix(gateway): send approval route notices with write scope. Related #93563. Thanks @mushuiyu886 and @vincentkoc and @clawbot247-commits.
PR #93665 fix(gateway): surface codex app-server returned failures. Thanks @litang9 and @vincentkoc.
PR #93727 fix(context-engine): avoid turn-maintenance lane livelock. Related #77340. Thanks @vincentkoc and @baghvn and @Veda-openclaw.
PR #93681 fix(llm): handle string assistant content on the OpenAI-compatible completion path. Thanks @Alix-007.
PR #93722 chore(release): update appcast for 2026.6.8. Thanks @vincentkoc.
PR #93677 fix(google-meet): declare realtime provider secret inputs. Related #81891. Thanks @goutamadwant and @vincentkoc and @chachi-max.
PR #92947 fix(qqbot): deliver cron auto-TTS voice by trusting OpenClaw temp root. Related #92816. Thanks @ZengWen-DT and @Zeng-wen and @lewiswu1209.
PR #93679 fix(whatsapp): extract GIF metadata and distinguish gifPlayback in media placeholders (fixes #49099). Thanks @liuhao1024 and @vincentkoc and @bugkill3r.
PR #93688 fix(minimax): check base_resp envelope errors in TTS provider. Related #76904. Thanks @dwc1997 and @najef1979-code.
PR #93714 fix: isolate async model resolution mock from sync mock in flaky test. Related #92117. Thanks @lsr911 and @wangwllu.
PR #93705 test(macos): cover root command dispatch. Related #83879. Thanks @markoub and @vincentkoc and @davinci282828.
PR #93711 Keep command text in progress drafts. Thanks @keshavbotagent and @vincentkoc.
PR #93712 fix: scope assistant avatar override to agent ID. Related #90890. Thanks @lsr911 and @vincentkoc and @najef1979-code.
PR #93725 fix(usage): prune stale usage cache temp files. Related #78939. Thanks @markoub and @Tramsrepus.
PR #93726 fix(typing): start typing on reasoning deltas in thinking mode before visible text. Related #79681. Thanks @xialonglee and @novaflash82.
PR #93716 fix(discord): propagate timeout through channel capabilities diagnostics. Related #77040. Thanks @xialonglee and @vincentkoc and @unicebondoc.
PR #93729 fix(ollama): preserve configured API during discovery. Related #93710. Thanks @zhangguiping-xydt and @vincentkoc and @obnoxious2011-cmd.
PR #93719 fix: pin plugin workspace dir for sessions.list to avoid O(rows) memo busting. Related #90814. Thanks @lsr911 and @vincentkoc and @k-l-lambda.
PR #93732 fix(agents): preserve re-sent user prompt during compaction transcript rotation. Thanks @yetval.
PR #93738 fix: break plugin registry type import cycle. Thanks @giodl73-repo.
PR #93740 fix(sessions): release retained locks after takeover. Thanks @TurboTheTurtle.
PR #93745 fix(usage): reject invalid explicit dates in usage RPC date parsing. Thanks @harjothkhara and @vincentkoc.
PR #93746 fix(ui): populate realtime talk provider and transport options from talk.catalog. Thanks @shushushv and @vincentkoc.
PR #93751 fix(ios): fix quick setup sheet layout design. Thanks @zats.
PR #93749 fix(compaction): ignore stale persisted totalTokens in preflight gate. Thanks @yetval.
PR #93753 fix: correct tautological uppercase check in tool description summarizer. Thanks @GautamKumarOffical.
PR #89123 refactor: route transcript writers through session seam. Thanks @jalehman.
PR #93758 feat(memory): apply outputDimensionality truncation to local GGUF embeddings (fixes #58765). Thanks @liuhao1024 and @vincentkoc and @losz5000.
PR #93754 feat(inbound-meta): expose per-turn source modality. Related #50482. Thanks @liuhao1024 and @vincentkoc and @JTOrca.
PR #93767 fix(reasoning-tags): strip MiniMax mm: namespaced reasoning tags. Thanks @DrHack1 and @vincentkoc.
PR #93772 fix(feishu): recover CJK filenames from JSON file_name field (fixes #81103). Thanks @liuhao1024 and @vincentkoc and @pjuneye.
PR #93773 fix(ui): scope Skill Workshop proposals to selected agent. Related #93760. Thanks @TurboTheTurtle and @vincentkoc and @hannesrudolph.
PR #88750 feat(context-engine): pass runtime settings into lifecycle. Thanks @ragesaq and @jalehman.
PR #93763 fix(agents): use neutral billing copy for subscription auth. Related #80877. Thanks @eldar702 and @vincentkoc and @22kyasue.
PR #93818 List all ClawHub docs in sidebar. Thanks @Patrick-Erichsen.
PR #93779 fix(webchat): skip textarea resize during IME composition to eliminate typing lag. Related #90800. Thanks @joelnishanth and @vincentkoc and @w10497-create.
PR #93786 fix(plugins): treat refreshable catalogs as requiring runtime discovery (fixes #93775). Thanks @liuhao1024 and @St0rmz1.
PR #93791 fix(memory): await search-sync before returning results to prevent stale index (fixes #52115). Thanks @liuhao1024 and @vincentkoc and @FicheallADa.
PR #93780 fix(google): keep parallel Gemini tool responses in the turn after the model. Thanks @yetval and @vincentkoc.
PR #93789 fix(agents): make lane suspension consistent across cooldown-precheck and embedded-runner paths. Related #93036. Thanks @joelnishanth and @vincentkoc and @kumaxs.
PR #93798 fix(status): show 0 (not ?) for fresh-session context tokens. Related #93771. Thanks @Alix-007 and @vincentkoc and @anarchia-99.
PR #93810 fix(cron): preserve startup overflow catch-up deferrals in start() maintenance pass. Thanks @yetval.
PR #93811 Strip UTF-8 BOM when reading SKILL.md in quick_validate. Thanks @HrachShah.
PR #93803 fix(ui): preserve WebChat visible messages across session switches. Related #80855. Thanks @LiuwqGit and @vincentkoc and @viagarsuker.
PR #93792 fix(android): wait for node capability approval before onboarding. Thanks @Solvely-Colin and @vincentkoc.
PR #93796 fix(feishu): paginate wiki node and space listing (#37626). Thanks @ZengWen-DT and @vincentkoc and @ritou11.
PR #93797 fix(browser): use openTab return value to prevent wsUrl race in ensureTabAvailable (fixes #63343). Thanks @liuhao1024 and @vincentkoc and @OpenCodeEngineer.
PR #93806 fix(reasoning-tags): strip MiniMax mm: tags on silent-reply and streaming paths missed by #93767. Thanks @Alix-007 and @vincentkoc.
PR #93691 refactor: add gateway sessions.create lifecycle seam. Thanks @jalehman.
PR #88748 fix(gemini): bridge OAuth profiles into CLI runtime. Related #88742. Thanks @jason-allen-oneal.
PR #93857 fix(deps): remediate Dependabot alerts. Thanks @vincentkoc.
PR #93874 fix(slack): recognize MiniMax mm: namespaced reasoning tags in monitor preview. Thanks @Alix-007.
PR #93832 feat(providers): add ClawRouter managed proxy. Thanks @vincentkoc.
PR #93880 fix(macos): preserve approvals migration data. Thanks @vincentkoc.
PR #93903 fix(cron): reject invalid absolute timestamps. Thanks @Alix-007 and @vincentkoc.
PR #93879 fix(update): use configured npm registry for update metadata. Related #79140. Thanks @vincentkoc and @sixerLiu.
PR #93924 revert(providers): remove ClawRouter provider. Thanks @vincentkoc.
PR #93955 fix(telegram): surface rich-message disabled state. Thanks @obviyus.
PR #93881 fix(agents): route BTW through canonical Codex runtime. Related #88902. Thanks @vincentkoc and @TurboTheTurtle and @khalil-omer.
PR #90192 fix(feishu): fetch quoted content before empty-message guard. Related #90177. Thanks @bladin and @sliverp and @lkxlaz.
PR #93237 Fix Mattermost open DM validation. Thanks @amknight.
PR #93945 feat(diagnostics): add SIEM security events. Thanks @vincentkoc.
PR #87487 fix(cli): clarify mcp list registry scope. Related #65209. Thanks @Alix-007 and @slideshow-dingo.
PR #24661 feat(cohere): add provider plugin. Thanks @vincentkoc.
PR #93532 Expose verified ClawHub source in skill verify output. Thanks @momothemage.
PR #93538 feat(codex): support app-server network proxy profiles. Thanks @vincentkoc.
PR #93938 fix(telegram): guard UTF-16 surrogate pairs in outbound chunkers. Related #93921. Thanks @Nas01010101 and @vincentkoc.
PR #94104 feat(agents): trace compaction summarization model calls. Thanks @amknight.
PR #94108 Fix package Telegram temp root. Thanks @obviyus.
PR #94113 Fix Telegram package output mount. Thanks @obviyus.
PR #89062 feat(docker): support offline setup reruns. Related #70443. Thanks @Alix-007 and @safrano9999.
PR #93929 fix(secrets): explicitly pass BWS_SERVER_URL to resolver for self-hosted instances. Related #93851. Thanks @Pandah97 and @vincentkoc and @AdoShan.
PR #90057 Polish Workboard operations view. Thanks @fuller-stack-dev.
PR #89396 fix(doctor): drop inert legacy cron notify when cron.webhook is unset. Related #44460. Thanks @Alix-007.
PR #94138 fix(session): prevent stale finalizer from recreating deleted session rows. Related #40840. Thanks @xialonglee and @vincentkoc and @AL-knows.
PR #93739 refactor: add session patch projection seam. Thanks @jalehman.
PR #94178 fix(workspace): skip optional bootstrap files when workspace setup is already completed. Related #83593. Thanks @dwc1997 and @jsompis.
PR #93363 fix(feishu): enforce account tool family gates. Thanks @eleqtrizit.
PR #93813 fix(codex): keep message registered for internal turns. Related #93750. Thanks @jalehman and @hannesrudolph.
PR #93659 refactor: add session reset delete lifecycle seam. Thanks @jalehman.
PR #93852 ci(release): harden release controls. Thanks @vincentkoc.
PR #94203 feat(codex): support remote app-server plugins. Thanks @kevinslin.
PR #94263 chore: migrate claw-score skill. Thanks @RomneyDa and @kevinslin.
PR #93695 refactor: add compact trim lifecycle seam. Thanks @jalehman.
PR #93114 test: fold lifecycle and package proof into QA Lab. Thanks @RomneyDa.
PR #93181 test: fold otel smoke into qa e2e. Thanks @RomneyDa.
PR #93178 test: fold gateway smoke into qa e2e. Thanks @RomneyDa.
PR #94276 qa-lab: support script-backed evidence scenarios. Thanks @Solvely-Colin and @RomneyDa.
PR #94282 Support owner-qualified ClawHub skill installs. Thanks @Patrick-Erichsen.
PR #93704 refactor: add session cleanup lifecycle seam. Thanks @jalehman.
PR #94296 fix: require all taxonomy coverage ids for a feature - AND not OR. Thanks @RomneyDa.
PR #92016 fix(plugins): compose live hook registry view for tool-call hooks. Related #91918. Thanks @amknight and @vokaplok.
PR #89596 fix(policy): recognize declared tool allowlists. Thanks @giodl73-repo.
PR #93713 fix: route deleted-agent session purge through lifecycle seam. Thanks @jalehman.
PR #84172 fix(exec): rebuild command authorization on the Tree-sitter command planner. Thanks @jesse-merhi.
PR #94332 docs: add ClawHub namespace claims to sidebar. Thanks @Patrick-Erichsen.
PR #86360 fix(codex): honor bound agent exec host policy. Thanks @jesse-merhi.
PR #73162 fix(slack): remove socket reconnect attempt cap so gateway stays connected indefinitely. Related #72808. Thanks @suboss87 and @tleyden.
PR #94156 fix: expose OpenAI image quality and moderation CLI options. Thanks @lastguru-net and @fuller-stack-dev.
PR #94350 feat: externalize GMI provider plugin. Thanks @Patrick-Erichsen and @vincentkoc.
PR #94543 fix(gateway): bound config.get middleware results. Related #94265. Thanks @vincentkoc and @v-s-gusev.
PR #91409 fix(update): run plugin convergence after RPC git updates. Thanks @masatohoshino.
PR #94556 chore(extensions): bump tokenjuice to 0.8.1. Thanks @vincentkoc.
PR #94580 fix(ci): stabilize update run gates.
PR #94394 fix(infra): probe 127.0.0.1 in ensurePortAvailable to detect IPv4-only occupants. Related #94379. Thanks @Pandah97 and @wangwllu.
PR #94421 fix(agents): preserve active compaction retries. Related #94391. Thanks @dexiosmb.
PR #94428 fix(feishu): preserve replies before error finals. Related #94360. Thanks @xunx33.
PR #93735 refactor: add restart recovery lifecycle seam. Thanks @jalehman.
PR #94591 docs(release): backfill complete contribution records. Thanks @vincentkoc.
PR #94588 fix(cron): retry isolated setup timeouts. Thanks @aaroneden.
PR #94082 fix(cron): prevent lane timeout during long tool execution. Related #94033. Thanks @ajwan8998 and @JingWang-Star996.
PR #94551 feat(firecrawl): add keyless scrape support. Thanks @vincentkoc and @developersdigest.
PR #94619 test(ci): stabilize timeout-sensitive shards. Thanks @vincentkoc.
PR #94048 fix(telegram): set richMessages default to false explicitly in schema. Related #93770, #93794. Thanks @Monkey-wusky and @obviyus and @Nardoa375 and @laurenceputra.
PR #94118 [codex] Fix Telegram rich local Markdown link hrefs. Related #94117. Thanks @dankarization and @obviyus.
PR #94646 refactor(sqlite): land database-first memory and proxy alignment. Thanks @vincentkoc.
PR #94658 test(sqlite): use shared temp directory helper. Thanks @vincentkoc.
PR #92135 fix(openai-embedding): preserve openai/ prefix for non-native base URLs. Related #92124. Thanks @xialonglee and @Kambrian.
PR #93737 refactor: add session maintenance transaction seam. Thanks @jalehman.
PR #93685 refactor(auto-reply): add lifecycle storage seams. Thanks @jalehman.
PR #94349 fix(agents): preserve pending subagent completion announces. Related #93323. Thanks @sallyom and @oiGaDio.
PR #93174 test: fold channel message flows into qa e2e. Thanks @RomneyDa.
PR #94093 Prevent Codex thread rotation from losing next-step context. Thanks @VACInc.
PR #53920 fix(scripts): avoid mutating tracked auth-monitor template during setup. Thanks @JackWuGlobal.
PR #94702 Standardize QA coverage IDs on dotted names. Thanks @RomneyDa.
PR #81825 fix(skills/1password): stop forcing tmux for desktop app auth (#52540). Thanks @koshaji and @tylerbittner.
PR #94725 fix(doctor): warn on volatile SQLite state. Thanks @vincentkoc.
PR #88551 fix(agents): skip auth gate for CLI-owned transport. Thanks @yu-xin-c.
PR #88581 feat(commands): add /name to rename the current session from chat. Thanks @BSG2000.
PR #94324 feat(codex): support app-server SecretRefs. Thanks @kevinlin-openai and @kevinslin.
PR #90882 fix: add self-knowledge docs rule to system prompt. Related #90713. Thanks @SutraHsing.
PR #94684 fix: #80507 show dry-run output for message send/poll. Thanks @lzyyzznl and @YB0y.
PR #93823 fix(whatsapp): keep opening text chunk when first media fails on multi-chunk reply. Thanks @yetval.
PR #89203 refactor: route SDK session compatibility through seam. Thanks @jalehman.
PR #94453 fix: default cron runMode to "due" instead of "force" (#94270). Thanks @jincheng-xydt and @sallyom and @davectr.
PR #94746 fix(note): prevent clack from re-breaking copy-sensitive tokens. Related #94730. Thanks @xzh-icenter and @berkgungor.
PR #89904 refactor: route sdk session compatibility through accessor. Thanks @jalehman.
PR #86719 fix(skills): retarget stale plugin skill symlinks. Related #85925. Thanks @stevenepalmer and @shakkernerd.
PR #94337 fix(tui): show 0 not ? for fresh-session context tokens in footer. Thanks @mushuiyu886.
PR #94539 fix(android): group settings by intent. Thanks @Tosko4.
PR #92383 fix(gateway): never return an empty chat.history transcript. Thanks @Hidetsugu55.
PR #92574 test(browser): cover action-input CLI request bodies. Related #83877. Thanks @yu-xin-c and @davinci282828.
PR #92873 test(diffs): add viewerState, toolbar toggle, shadow root, and hydrateProps tests (fixes #83915). Thanks @liuhao1024 and @davinci282828.
PR #94257 fix(sessions): preserve Media* index alignment when reading user-turn fields. Thanks @Nas01010101.
PR #94756 fix(codex): bound turn/start text when context budget is non-positive. Related #94748. Thanks @Nas01010101.
PR #94729 fix(skills/trello): add curl to requires.bins to match body examples (fixes #94727). Thanks @liuhao1024 and @berkgungor.
PR #94790 feat(slack): log INFO receipt for inbound app_mention events. Related #94691. Thanks @ZengWen-DT and @BryceMurray.
PR #81696 fix: guard tool event callbacks (AI-assisted). Thanks @enjoylife1243.
PR #94809 chore: forward-port alpha release fixes.
PR #94612 fix(macos): op - Jun 21, 2026
- Date parsed from source:Jun 21, 2026
- First seen by Releasebot:Jun 2, 2026
- Modified by Releasebot:Jun 29, 2026
v2026.6.21-alpha.1
OpenClaw ships 2026.6.21-alpha.1 release.
openclaw 2026.6.21-alpha.1
Original source - Jun 19, 2026
- Date parsed from source:Jun 19, 2026
- First seen by Releasebot:Jun 10, 2026
- Modified by Releasebot:Jun 25, 2026
- Jun 18, 2026
- Date parsed from source:Jun 18, 2026
- First seen by Releasebot:Jun 17, 2026
- Modified by Releasebot:Jun 18, 2026
openclaw 2026.6.8
OpenClaw releases a broad stability update with richer Telegram and WhatsApp delivery, safer model routing, more reliable agent runs, clearer usage footers, calmer UI and mobile sessions, and stronger memory and state recovery across the platform.
2026.6.8
Highlights
Richer channel delivery: Telegram and WhatsApp are less brittle: Telegram renders structured text with tables, lists, expandable blockquotes, preserved intentional line breaks, and CLI-backed replies, while WhatsApp now honors configured ACP bindings. (#92679, #93164, #84082, #89421, #92513) Thanks @obviyus, @vincentkoc, @jzakirov, @spacegeologist, @TurboTheTurtle, @mcaxtr, @myrzka, and @dmorn.
More reliable agent runs: account-scoped DM sends, generated media completions, auto-reply message-tool final replies, reset archive fallback reads, restart shutdown aborts, yielded subagent pauses, and session identity prompts all stay on the correct recovery path. (#92788, #91246, #92879, #91357, #92631, #92468) Thanks @yetval, @TurboTheTurtle, @masatohoshino, @CadanHu, @vincentkoc, @ooiuuii, @openperf, @zhangguiping-xydt, @QQSHI13, @kumaxs, and @aleps001.
Safer model routing: new GLM-5.2 and Claude Haiku 4.5 catalog support arrives with normalized provider IDs, managed SecretRef auth, bounded model browsing, and safer OpenAI/Anthropic tool-schema recovery. (#92796, #90116, #92627, #90686, #92247, #92941) Thanks @arkyu2077, @liuhao1024, @lijenhsin, @rohitjavvadi, @samson910022, @maaron34, @syfvb, and @samson1357924.
Useful usage footers: /usage and reply payload hooks now have a native full footer renderer, default template, fixed-decimal formatting, credential-aware limits, better partial-count handling, and warnings for broken templates instead of silent bad output. (#92657, #89835, #89629) Thanks @Marvinthebored.
Predictable web search defaults: key-free providers such as Parallel Free, DuckDuckGo, Ollama, and Codex Hosted Search remain explicit opt-ins rather than surprising automatic fallbacks. (#93616) Thanks @davemorin and @vincentkoc.
Calmer UI and mobile sessions: workspace files start collapsed, WebChat backscroll survives streaming, the desktop session picker remains interactive, reset arguments survive dispatch, and iOS reconnects stale foreground Gateways. (#92779, #92622, #92705, #91353, #92552) Thanks @shakkernerd, @TurboTheTurtle, @NianJiuZst, @zhouhe-xydt, @Solvely-Colin, @MaBeitian, @vincentkoc, @Chang2020618, and @DrtyMorty.
Resilient memory and state: oversized OpenAI embedding batches split before 431s, QMD search stays available in transient mode, SQLite avoids WAL on NFS volumes, and full reindexes preserve rollback/cache recovery. (#92650, #92618, #92639, #91247, #92881) Thanks @mushuiyu886, @BrettHamlin, @zhbcher, @TurboTheTurtle, @Takhoffman, @849261680, @TSHOGX, @vincentkoc, and @AFabyTWE.
Changes
Providers/models: add GLM-5.2 support and Claude Haiku 4.5 catalog entries while keeping provider-qualified model IDs normalized across OpenRouter and Google Vertex paths. (#92796, #90116, #92627, #91218) Thanks @arkyu2077, @liuhao1024, @bymle, @maaron34, @lijenhsin, @davemorin, and @vincentkoc.
Web search: keep key-free providers such as Parallel Free, DuckDuckGo, Ollama, and Codex Hosted Search as explicit opt-ins instead of selecting them automatically when no API-backed provider is configured. (#93616) Thanks @davemorin and @vincentkoc.
Channel plugins: ship Telegram rich-message delivery and WhatsApp ACP binding support, including preserved intentional line breaks, rich prompt handoff to CLI backends, and transport fixtures for richer drafts. (#92679, #93164, #92513) Thanks @obviyus, @TurboTheTurtle, @vincentkoc, @mcaxtr, and @dmorn.
Agent commands: support /btw in CLI-backed sessions and keep CLI usage-error exits classified as usage failures instead of successful runs. (#92669, #92162) Thanks @joshavant, @Pandah97, @marcospaulo, @davemorin, and @vincentkoc.
Usage hooks: add built-in full footer rendering, default footer templates, per-turn usage state, credential-aware limits, and fixed-decimal formatting for usage-bar templates. (#92657, #89835, #89629) Thanks @Marvinthebored.
Fixes
Channels and delivery: preserve account-scoped DM channel send policy, intentional rich-message line breaks in Telegram and status output, rich Telegram final replies, rich Telegram tables and lists, Telegram thread-create CLI remapping, Feishu dynamic-agent routes after persisted binding reuse, Slack outbound message_sent hooks, contributed message-tool schema optionality, same-channel generated media completions, and channel chunking around surrogate pairs and Infinity limits. (#92788, #93164, #92679, #89421, #89943, #42837, #92814, #91137, #91246, #92735) Thanks @yetval, @obviyus, @spacegeologist, @rishitamrakar, @liuhao1024, @lundog, @TurboTheTurtle, @yhterrance, @vincentkoc, @myrzka, @cwlong163-afk, @kumaxs, @shakkernerd, and @RewardsPal.
Gemini CLI: use the selected OpenClaw OAuth/API-key auth profile in an isolated Gemini CLI runtime home, preventing ambient Google machine credentials from overriding the chosen profile. (#88748) Thanks @jason-allen-oneal and @shakkernerd.
Discord: give generated auto-thread titles a 60-second timeout and 4,096-token reasoning-model output budget, clamped to the selected model output cap. (#64734) Thanks @hanamizuki.
Agent, cron, and Gateway runtime: mark active main sessions before restart shutdown aborts, pause yielded subagent runs whose terminal also signals abort, clamp trusted subagent thinking overrides through provider/model fallback, preserve yielded media completions, deliver channel message-tool final replies through auto-reply while hiding internal delivery hints, restore reset archive fallback reads when active async transcripts are missing, de-duplicate main-session heartbeat events, expose session identity in runtime prompts, reject unknown OpenAI agent selectors, keep generated media completions, slash-command block replies, and trajectory export commands in WebChat, and require admin privileges for HTTP session/model override surfaces. (#91357, #92631, #92412, #92146, #92879, #91287, #92468, #92510, #91246, #92651, #92646) Thanks @ooiuuii, @openperf, @IWhatsskill, @masatohoshino, @CadanHu, @ZengWen-DT, @zhangguiping-xydt, @TurboTheTurtle, @oiGaDio, @aleps001, @vincentkoc, @GSL-R, @QQSHI13, @ryanhelms, @kumaxs, @steipete-oai, @hxy91819, @davemorin, and @nailujac.
Providers and model replay: preserve storeless OpenAI Responses replay compatibility, recover invalid OpenAI reasoning signatures and genericized Anthropic thinking-signature replay errors, route OAuth image defaults through Codex for eligible OpenAI profiles, avoid eager tool streaming for Claude 4.5 in Copilot, quarantine unreadable and post-hook OpenAI/Anthropic-family tool schemas without broadening allowed tool choices, deliver explicit thinking-off requests to LM Studio binary-thinking models, honor profile auth for SecretRef model entries, bound model browsing, strip provider prefixes where runtimes need bare IDs, and surface nested embedding fetch failures. (#90706, #92941, #92201, #92916, #92824, #75393, #92908, #92921, #92928, #92002, #90686, #92247, #92627, #91218, #92628) Thanks @snowzlm, @mmyzwl, @CarlCapital, @bek91, @Kailigithub, @vincentkoc, @rohitjavvadi, @samson910022, @nxmxbbd, @liuhao1024, @bymle, @mushuiyu886, @finchinslc, @syfvb, @lijenhsin, @crsnpalmer-art, @samson1357924, @shakkernerd, and @mlaihk.
Memory, state, diagnostics, and config: split header-too-large embedding batches, keep QMD memory search enabled in transient mode, avoid SQLite WAL on NFS volumes, preserve recovery scheduling outside stuck-session warning backoff, preserve full-reindex rollback/cache recovery, and treat raw Memory Wiki source pages as source evidence. (#92650, #92618, #92639, #91247, #92752, #92881, #59137, #92876) Thanks @mushuiyu886, @TurboTheTurtle, @849261680, @gnanam1990, @TSHOGX, @vincentkoc, @arlen8411, @BrettHamlin, @zhbcher, @Takhoffman, @AFabyTWE, @davemorin, and @zhuyankarl.
UI/mobile/TUI: preserve dashboard session parent lineage, WebChat backscroll, reset soft command args, sidebar session picker interactivity, collapsed workspace files, resolved /model confirmation refs, stale foreground iOS Gateway reconnects, and paused setup-parent stdin after inherited-stdio child exit. (#90658, #92622, #91353, #92705, #92779, #92773, #92552, #93159) Thanks @luoyanglang, @TurboTheTurtle, @zhouhe-xydt, @NianJiuZst, @shakkernerd, @NarahariRaghava, @Solvely-Colin, @fuller-stack-dev, @lily-oc, @MaBeitian, @vincentkoc, @obviyus, @DrtyMorty, and @Chang2020618.
Plugins and updates: repair missing required platform packages during managed plugin installs and updates, including omitted Codex platform binaries. Thanks @vincentkoc.
Dependencies: update Hono to 4.12.25 so published OpenClaw and ACPX packages use the patched runtime. Thanks @vincentkoc.
Updates: avoid a false downgrade prompt when the latest tag cannot resolve. (#92911) Thanks @Andy312432 and @vincentkoc.
Complete contribution record
This audited record covers the complete v2026.6.6..v2026.6.8 history: 192 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #92144 fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json. Related #91766. Thanks @liuhao1024 and @AaronFaby.
PR #92175 fix(channel): harden local setup trust. Thanks @hxy91819.
PR #91528 fix #73837: stop after failed Node package installs. Thanks @mushuiyu886 and @ItsMeForLua.
PR #91561 fix(wizard): report keyless web_search providers as ready, not missing a key. Thanks @NormallyGaussian.
PR #92073 fix: handle explicit silent assistant replies. Related #92038. Thanks @sallyom and @vultusv.
PR #91311 Allow Skill Workshop apply through trusted skill symlinks. Thanks @abnershang.
PR #88245 refactor(whatsapp): introduce inbound message contexts. Thanks @mcaxtr.
PR #92212 refactor: move workspace skill writes to lifecycle. Thanks @shakkernerd.
PR #92248 Remove ClawHub owner preflight. Thanks @Patrick-Erichsen.
PR #91617 test(sqlite): add state perf query plan harness. Related #91616. Thanks @galiniliev.
PR #91626 fix(daemon): keep status readable on unsupported services. Related #25621. Thanks @mushuiyu886 and @kucharskim.
PR #92295 fix(cron): preserve tz and staggerMs when --cron replaces expression. Related #92291. Thanks @liuhao1024 and @dcapclaw.
PR #92087 fix(docker): bundle QA Lab runtime in the image. Thanks @jesse-merhi.
PR #92004 fix(telegram): classify streaming preview edit failures instead of killing the draft. Thanks @obviyus.
PR #91997 fix(telegram): survive getUpdates conflicts in isolated polling ingress. Thanks @obviyus.
PR #92387 fix(anthropic-vertex): stop re-marking cache_control on transport-budgeted payloads. Related #91982. Thanks @openperf and @Takhoffman and @danieljimz.
PR #92229 Fix doctor preview channel SecretRef resolution. Related #91939. Thanks @joshavant and @Niriakot.
PR #92225 Fix disabled heartbeat one-shot cron retries. Related #91775. Thanks @joshavant and @A1fred-AI.
PR #92265 Fix configured DeepSeek model transport inheritance. Related #92148. Thanks @joshavant and @marcoraepple-sys.
PR #92226 Fail closed for CLI-backed /btw fallback. Related #92168. Thanks @joshavant and @wangwllu.
PR #92231 Fix suppressed heartbeat commitment delivery. Related #91948. Thanks @joshavant and @bizzle12368239.
PR #92280 fix(agents): classify structured unsupported model errors. Related #92118. Thanks @joshavant and @pikaqqqqqq.
PR #92276 Fix OTLP log trace correlation. Related #91865. Thanks @joshavant and @sinzin91.
PR #92282 fix(update): hand off Linux service auto-updates. Related #91823. Thanks @joshavant and @hanyizuo.
PR #92235 fix: resolve managed SecretRef provider auth. Related #92097. Thanks @joshavant and @LINSUISHENG034.
PR #92293 Fix provider static model fallback resolution. Related #92009. Thanks @joshavant and @mattsfraser.
PR #92343 fix(agent): continue after source message tool replies. Related #92169. Thanks @joshavant and @elyalvarado.
PR #92350 fix(codex): preserve memory prompt registration. Thanks @rubencu and @sallyom.
PR #92290 fix: clarify gateway SecretRef auth diagnostics. Related #91815. Thanks @joshavant and @mattsfraser.
PR #92286 fix: repair rejected Anthropic thinking replay. Related #91983. Thanks @joshavant and @reginaldomarcilon.
PR #92281 Fix Telegram spooled buffered replay. Related #92129. Thanks @joshavant and @riseandshinefutures.
PR #47493 fix(doctor): show per-step progress spinners during update. Thanks @amersheeny.
PR #92416 fix(outbound): honor top-level image param as send media source (#92407). Thanks @xydigit-sj and @ichirokyoto.
PR #92508 fix(sandbox): render CLI skill prompts from materialized paths. Thanks @brokemac79.
PR #92540 chore: fix esbuild production audit failure. Thanks @RomneyDa.
PR #91484 Add QA evidence artifact output. Thanks @RomneyDa.
PR #91500 Add QA scorecard taxonomy validation. Thanks @RomneyDa.
PR #84082 fix(telegram): allow expandable blockquotes. Thanks @jzakirov.
PR #92554 feat(moonshot): add Kimi K2.7 Code support.
PR #92396 fix(moonshot): backfill reasoning_content on assistant tool-call replay messages. Related #71491. Thanks @xialonglee and @RoseKongPS.
PR #92566 Fix lifecycle timeout cleanup after leader exit. Thanks @RomneyDa.
PR #92311 ci: split plugin ClawHub publishing paths. Thanks @Patrick-Erichsen.
PR #92216 fix(gateway): mirror hidden commentary-phase assistant events. Thanks @ragesaq.
PR #87596 fix(moonshot): rewrite duplicate native Kimi tool_call ids on replay. Related #51593. Thanks @Pluviobyte and @Faaab84.
PR #88993 Expose paged channel action results. Thanks @fuller-stack-dev.
PR #90326 fix(fireworks): resolve catalog model params from plugin.json via core. Thanks @obuchowski.
PR #86629 fix(doctor): warn for untrusted external Discord plugin. Related #83212. Thanks @brokemac79 and @ooiuuii and @cdeyoung67.
PR #90242 fix(providers): skip unreadable Mistral tool schemas. Thanks @vincentkoc.
PR #92498 fix(reply): mirror same-channel Slack final replies. Related #92489. Thanks @TurboTheTurtle and @TalkingHeadsJed.
PR #92083 fix(channels): default boundary logger for swallowed progress-draft start errors. Thanks @hansraj316.
PR #92564 fix(agents): isolate invalid plugin model catalogs [AI-assisted]. Related #92553. Thanks @tangtaizong666 and @fxstein.
PR #89827 docs: UX-013 — design system documentation. Thanks @BunsDev.
PR #89615 feat(ui): hide empty workboard columns. Thanks @BunsDev.
PR #89822 fix(a11y): B-1+B-2+B-3 — contrast, focus states, minimum font sizes. Thanks @BunsDev.
PR #92618 fix #92218: memory_search tool disabled with QMD backend. Thanks @mushuiyu886 and @zhbcher.
PR #92608 docs(gateway): add uptime monitoring guidance to health check docs (fixes #55768). Thanks @liuhao1024 and @faahim.
PR #92605 fix(docs): pin Windows Hub download links to v2026.6.5. Related #92470. Thanks @lzyyzznl and @arjkul.
PR #92593 #92589: fix(internal-runtime-context): wrap prompt-preface runtime context body in delimiters. Thanks @zhangqueping and @jovi2014-cyber.
PR #92606 Run Vitest and Playwright scenarios from qa suite. Thanks @RomneyDa.
PR #89629 feat(hooks): per-turn usageState on reply_payload_sending. Thanks @Marvinthebored.
PR #89835 feat(usage): native templated /usage full footer renderer. Thanks @Marvinthebored.
PR #92247 fix(models): bound /models and models list catalog loading. Related #91809. Thanks @samson910022 and @samson1357924 and @syfvb.
PR #92646 fix: require admin for HTTP model overrides. Thanks @steipete-oai.
PR #90686 fix(gateway): honor profile auth for SecretRef model entries. Related #90685. Thanks @rohitjavvadi.
PR #92651 fix: require admin for HTTP session kills. Thanks @steipete-oai.
PR #92652 test(models): stabilize plugin auth marker fixtures.
PR #89438 fix(slack): warn when channels map is keyed by name instead of channel ID. Related #81665. Thanks @Alix-007 and @cjalden.
PR #92631 fix(agents): pause yielded subagent runs whose terminal also signals abort. Related #92448. Thanks @openperf and @vincentkoc and @aleps001.
PR #92622 fix(ui): preserve WebChat backscroll during streaming. Related #92386. Thanks @TurboTheTurtle and @vincentkoc and @DrtyMorty.
PR #92627 fix(openrouter): strip openrouter/ prefix from model ID in normalizeResolvedModel hook (fixes #92611). Thanks @liuhao1024 and @lijenhsin.
PR #92146 fix(cron): preserve yielded media completions. Related #92120. Thanks @IWhatsskill and @nailujac.
PR #90116 fix: add Claude Haiku 4.5 static catalog entries. Related #90088. Thanks @arkyu2077 and @maaron34.
PR #91137 fix(channels): keep contributed message-tool schema properties optional. Related #67852. Thanks @lundog and @RewardsPal.
PR #75393 fix(copilot): disable eager tool streaming for Claude 4.5. Related #75348. Thanks @Kailigithub and @finchinslc.
PR #92628 fix #73713: surface nested embedding fetch failures. Thanks @mushuiyu886 and @crsnpalmer-art.
PR #92510 fix(gateway): reject unknown OpenAI agent selectors. Related #92504. Thanks @zhangguiping-xydt and @ryanhelms.
PR #91453 fix #91420: [Bug]: Delivery retry loop corrupts active sessions (R-004) — retry selector bypasses delivery.mode=none. Thanks @zhangguiping-xydt and @CarotaWealth.
PR #92468 fix #92453: add session identity to runtime prompt. Thanks @zhangguiping-xydt and @QQSHI13.
PR #89943 fix(slack): emit message_sent hook on outbound delivery (mirror Telegram). Related #89942. Thanks @rishitamrakar.
PR #92668 fix(docs): finalize i18n postprocess before skip. Thanks @hxy91819.
PR #92673 fix: split image setup and request timeout semantics. Thanks @hxy91819.
PR #92162 #92069: fix(cli): usage errors exit 0. Thanks @Pandah97 and @marcospaulo.
PR #91185 fix(browser): remove dead requireRef import and void expression in register.navigation.ts. Related #83878. Thanks @whiteyzy and @davinci282828.
PR #90706 fix(OpenAI Responses): disable item id replay for storeless providers. Related #89728. Thanks @snowzlm.
PR #90247 fix(disk-space): promote 1024 MiB to 1.0 GiB in disk warnings. Related #90245. Thanks @jbetala7.
PR #92657 feat(usage): ship built-in /usage full footer. Thanks @Marvinthebored.
PR #90464 perf(terminal): reuse ANSI scanner during truncation. Thanks @yyzquwu.
PR #91281 fix(feishu): clear client cache when SDK is replaced via setFeishuClientRuntimeForTest. Related #83911. Thanks @whiteyzy and @davinci282828.
PR #92639 fix(memory): keep memory_search in transient qmd mode. Related #92464. Thanks @TurboTheTurtle and @Takhoffman and @BrettHamlin.
PR #91287 fix(cron): de-duplicate main-session systemEvent in heartbeat model input. Related #44922. Thanks @ZengWen-DT and @GSL-R.
PR #91246 Fix webchat media completion handoff. Related #91003. Thanks @TurboTheTurtle and @kumaxs.
PR #91353 fix(ui): preserve /reset soft args in Control UI dispatch. Related #91316. Thanks @zhouhe-xydt and @MaBeitian.
PR #92679 feat(telegram): send rich message text. Thanks @obviyus.
PR #92705 fix(ui): restore sidebar session picker interactivity above desktop workbench. Related #92707. Thanks @NianJiuZst and @vincentkoc.
PR #91218 fix(google): strip provider prefix from Vertex model path. Thanks @bymle.
PR #92669 feat: support /btw in CLI-backed sessions. Thanks @joshavant.
PR #91357 fix(gateway): mark active main sessions before restart shutdown aborts. Related #91355. Thanks @ooiuuii.
PR #91066 fix(parallel): send openclaw-parallel User-Agent on free Search MCP requests. Thanks @NormallyGaussian.
PR #90658 fix(ui): preserve dashboard session parent lineage when session list is stale. Related #90623. Thanks @luoyanglang and @lily-oc.
PR #92552 fix(ios): force stale foreground gateway reconnects. Thanks @Solvely-Colin.
PR #89421 fix(telegram): expose thread create CLI remap. Related #81581. Thanks @spacegeologist and @myrzka.
PR #92779 fix: start workspace files collapsed. Related #90359. Thanks @shakkernerd and @Chang2020618.
PR #91247 fix(state): avoid sqlite wal on nfs state volumes. Related #90491. Thanks @849261680 and @AFabyTWE.
PR #92773 fix(tui): show resolved canonical model ref in /model confirmation. Thanks @NarahariRaghava.
PR #92752 fix(diagnostics): keep recovery scheduling out of the stuck-session warning backoff. Related #92742. Thanks @gnanam1990 and @Takhoffman and @zhuyankarl.
PR #92735 fix(markdown-core): treat Infinity chunk limit as unbounded, not 1. Related #92734. Thanks @yhterrance.
PR #92695 docs(config): correct maxConcurrent default in agent-defaults type comments (AI-assisted). Thanks @ArielSmoliar.
PR #92766 clarify before_install hook scope. Related #91593. Thanks @sallyom and @Trump-last.
PR #92677 docs(nodes): add openclaw.json config example to Nodes overview. Related #92662. Thanks @liuhao1024 and @Casper-Mars.
PR #92513 Honor WhatsApp configured ACP bindings. Related #92449. Thanks @TurboTheTurtle and @mcaxtr and @dmorn.
PR #92650 fix #92465: split OpenAI 431 embedding batches. Thanks @mushuiyu886 and @BrettHamlin.
PR #92796 feat(providers): add GLM-5.2 support.
PR #92788 fix(sessions): derive channel from account-scoped DM session keys in send-policy. Thanks @yetval.
PR #92590 Docker image ships an extraneous stale openclaw in /app/node_modules (extensions pin the published release). Related #92551. Thanks @lzyyzznl and @fxstein.
PR #92393 chore(deps): bump the swift-deps group across 1 directory with 3 updates.
PR #92476 fix(agents): preserve compatible CLI session runtime pins. Thanks @yu-xin-c.
PR #92483 fix(matrix): validate CLI numeric option ranges. Related #92482. Thanks @rohitjavvadi.
PR #92490 fix(canvas): validate CLI numeric options. Related #92487. Thanks @rohitjavvadi.
PR #92802 fix(ui): reflow composer beside workspace rail. Thanks @Solvely-Colin and @shakkernerd.
PR #91059 fix(configure): mask gateway token input in CLI wizard prompt. Thanks @anurag-bg-neu.
PR #91143 fix(ports): only classify SSH -L/-R tunnels on the queried port as ssh. Related #91142. Thanks @jbetala7.
PR #91110 fix(tavily): keep web_search contract executable. Related #91096. Thanks @extrasmall0 and @xucongyuan98-sys.
PR #91181 fix(daemon): strip schtasks backslash prefix when matching gateway task name. Related #90494. Thanks @425072024 and @Darnellicious.
PR #91187 fix(cron): isolate auth profile failure policy so cron runs don't pollute shared cooldowns. Related #90991. Thanks @openperf and @cx306806112.
PR #92807 fix(heartbeat): route outbound mirror to isolated session key. Thanks @agent-merkava.
PR #92745 fix(memory): explain skipped short-term recall hits. Related #92706. Thanks @mushuiyu886 and @armarinho.
PR #92488 fix(gateway): forward image-only input on /v1/responses (parity with chat completions). Thanks @s554097550 and @cursoragent.
PR #92604 fix(status): avoid cumulative usage for context percent. Related #83526. Thanks @ashishpatel26 and @darconadalabarga.
PR #92810 fix: reject unvalidated voice media streams. Thanks @steipete-oai.
PR #92800 fix(telegram): answer callback queries before sequentialize delays them. Related #42156. Thanks @liuhao1024 and @Diaspar4u.
PR #92547 fix(nodes): surface pending reapproval diagnostics. Thanks @fuller-stack-dev.
PR #92690 fix(doctor): avoid false-positive legacy cron store warning when store was already migrated (fixes #92683). Thanks @liuhao1024 and @motteman.
PR #92806 fix(telegram): skip IPv4 fallback when user explicitly configures non-ipv4first dnsResultOrder (fixes #41671). Thanks @liuhao1024 and @vincentkoc and @leandroirani933-ctrl.
PR #92778 fix(macos): defer isOverflowing mutation to break SwiftUI render loop (fixes #43480). Thanks @liuhao1024 and @vincentkoc and @gdiab.
PR #92795 fix(gateway): use resolveNonNegativeNumber for totalTokens to display 0 instead of ? (fixes #43009). Thanks @liuhao1024 and @vincentkoc and @ltxy12138-ai.
PR #92746 fix(gateway): preserve active runs during plugin finalization. Thanks @scotthuang and @vincentkoc.
PR #92820 UI: localize Logs tab labels. Thanks @rubensfox20.
PR #92825 fix(telegram): preserve command callbacks while prefixing generic callback data. Related #54909. Thanks @hnshah and @timt80.
PR #90889 fix: cap session context overrides by model window. Related #39857. Thanks @xdanger.
PR #92830 fix(copilot): strip replayed thinking blocks. Related #81520. Thanks @giodl73-repo and @warcold.
PR #92834 feat(browser): extend --labels overlay to full-page and element captures. Thanks @hxy91819 and @FMLS and @cursoragent.
PR #92836 fix(discord): raise thread title timeout and tokens to fit reasoning models. Thanks @hanamizuki.
PR #92095 fix #92039: [Bug]: WhatsApp login reports success before auth is durably persisted, so Docker rebuilds/upgrades can force relink. Thanks @zhangguiping-xydt and @dinorastoder.
PR #92801 fix(stale): exempt ClawSweeper actionable labels from stale lifecycle (fixes #89564). Thanks @liuhao1024 and @brokemac79.
PR #89736 fix(status): render sub-1000 token counts as plain integers. Related #89735. Thanks @jbetala7 and @vincentkoc.
PR #92792 fix(agents): catch malformed image blocks in sanitizeContentBlocksImages. Thanks @LowCode191 and @vincentkoc.
PR #92555 ci: gate stable releases on Windows companion assets. Thanks @fuller-stack-dev.
PR #91824 fix(agents): add usage guidance to sessions_spawn tool description (fixes #91814). Thanks @zenglingbiao and @vincentkoc and @cattails-lgao.
PR #92840 fix(feishu): await HTTP server shutdown during monitor cleanup. Related #48183. Thanks @alex-xuweilong and @ai-nurmamat.
PR #91632 feat: add tool search directory mode. Thanks @fuller-stack-dev.
PR #92823 fix(qqbot): surface failed media sends. Thanks @zhangguiping-xydt and @vincentkoc.
PR #92849 fix(tailscale): preserve parse errors for malformed JSON. Thanks @franciscomaestre.
PR #92045 Fix diagnostics OTEL runtime install trust. Thanks @efpiva.
PR #92853 fix(acp): accept MCP date protocolVersion in ACP server. Related #56102. Thanks @bugkill3r and @moliveto.
PR #92854 fix(hooks): reject slug-generator error payloads. Thanks @Cypherm.
PR #92855 fix(ui): repair iOS Safari chat viewport handling. Thanks @macdao.
PR #91586 fix(update): continue after package doctor warnings. Thanks @fuller-stack-dev.
PR #92862 fix(feishu): target typing reaction on inbound message. Thanks @huiwen01.
PR #92861 fix(lobster): surface workflow path errors. Related #68101. Thanks @vvitovec and @MPC7500.
PR #69975 fix(cli): clarify --tz help text for offset-less --at values. Related #59456. Thanks @rrrrrredy.
PR #90682 fix(openai): preserve opaque reasoning transcript fields. Related #90093. Thanks @toruvieI and @richardmqq.
PR #92373 fix(anthropic): strip thinking blocks from history when thinking is disabled (fixes #92360). Thanks @liuhao1024 and @notnaji.
PR #87346 fix(anthropic): merge consecutive assistant turns in turn validation. Related #87329. Thanks @Jefsky and @travellingsoldier85.
PR #92896 fix(anthropic): quarantine invalid direct tool schemas. Thanks @vincentkoc.
PR #90739 fix(active-memory): preserve verbose recall summaries. Related #90454. Thanks @brokemac79 and @nocode-ananas.
PR #92558 Simplify QA scorecard mapping shape. Thanks @RomneyDa.
PR #92876 fix(memory-wiki): stop flagging raw source pages as malformed. Thanks @vincentkoc.
PR #92908 fix(providers): quarantine unreadable Anthropic payload tools. Thanks @vincentkoc.
PR #92881 fix(memory): preserve reindex rollback recovery. Thanks @TSHOGX and @vincentkoc.
PR #92921 fix(openai): quarantine unreadable tool schemas. Thanks @vincentkoc.
PR #92550 Fold Telegram RTT sampling into live QA evidence. Thanks @RomneyDa.
PR #92824 fix(media): route OAuth image defaults through Codex. Related #87168. Thanks @bek91.
PR #92928 fix(openai): guard post-hook tool payloads. Thanks @vincentkoc.
PR #92814 fix(feishu): re-resolve route when dynamic agent binding already exists in runtime config (fixes #42837). Thanks @liuhao1024 and @vincentkoc and @cwlong163-afk.
PR #89055 fix: restart gateway after isolated cron setup timeout. Thanks @ghitafilali.
PR #90574 fix(openai): omit gpt-5.5 tool reasoning effort. Thanks @BSG2000.
PR #92941 fix(openai): recover invalid reasoning signatures.
PR #92914 fix(agents): clamp unsupported thinking for subagent spawns instead of hard-failing. Related #92412. Thanks @openperf and @oiGaDio.
PR #92573 fix: preserve config-selected subagent model overrides. Related #92486. Thanks @arkyu2077 and @PatrickTrent.
PR #92852 fix(gateway): fall back to polling when config watcher exhausts inotify retries. Related #92851. Thanks @danbao.
PR #92362 fix(gateway): build row metadata context for single session lists. Thanks @anyech.
PR #92897 fix(memory-wiki): tolerate public artifacts without agent ids. Related #92207. Thanks @yu-xin-c and @qq230849622-a11y.
PR #92002 fix(lmstudio): deliver thinking "off" to binary-thinking models. Related #91913. Thanks @nxmxbbd and @mlaihk.
PR #92738 Forward suppressed-source progress for message-tool channel replies. Thanks @ragesaq.
PR #92916 #92201: Embedded runner: freshly streamed thinking signatures intermittently invalid on replay (Anthropic); recovery wrapper never fires because error text is genericized. Thanks @mmyzwl and @CarlCapital.
PR #90936 fix(agents): do not misclassify client-disconnect abort as run timeout. Related #90764. Thanks @openperf and @reginaldomarcilon.
PR #93009 fix(agents): make wrapToolWithBeforeToolCallHook idempotent to prevent double hook execution (fixes #92973). Thanks @zenglingbiao and @dertbv.
PR #92318 fix(cron): require explicit message target proof. Thanks @hxy91819.
PR #93022 fix(gateway): repair usage cost aggregation across agents. Thanks @luke-skywalker-open-claw and @stablegenius49.
PR #93159 fix(tui): keep parent stdin paused after exit. Thanks @fuller-stack-dev.
PR #93616 Keep key-free web search providers opt-in. Thanks @davemorin and @vincentkoc.
PR #93164 fix(telegram): preserve rich markdown line breaks. Thanks @vincentkoc.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.8
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.8.tgz
integrity: sha512-iziR8fi69+ojrtX7FYYvTpkGcVnmyLpIhvchgt5LFkkdHVWw973XAAekKVZ3/xQJ5FG4NwgHkXL0LLTrgsNOSQ==
release SHA: 844f405ac1be805d5c598922a37254f12ab6d765
full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.6.8/release-evidence.md
release publish: https://github.com/openclaw/openclaw/actions/runs/27631170936
npm preflight: https://github.com/openclaw/openclaw/actions/runs/27627935264
full release validation: https://github.com/openclaw/openclaw/actions/runs/27627935341
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/27631412538
plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/27631418543
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/27632229765
npm Telegram beta E2E: not supplied
Windows Hub promotion: https://github.com/openclaw/openclaw/actions/runs/27632639125 from openclaw/[email protected]
macOS signed/notarized preflight: https://github.com/openclaw/releases/actions/runs/27632793120
macOS Swift validation: https://github.com/openclaw/releases/actions/runs/27632792831
macOS asset promotion: https://github.com/openclaw/releases/actions/runs/27635471007
stable appcast: #93722
Original source - Jun 18, 2026
- Date parsed from source:Jun 18, 2026
- First seen by Releasebot:Jun 16, 2026
- Modified by Releasebot:Jun 18, 2026
openclaw 2026.6.8-beta.2
OpenClaw releases richer Telegram and WhatsApp delivery, safer model routing, more reliable agent runs, sturdier memory recovery, and smoother UI and mobile sessions. It also adds usage footers, keeps key-free web search opt-in, and improves provider and plugin handling.
2026.6.8
Highlights
Richer channel delivery: Telegram and WhatsApp are less brittle: Telegram renders structured text with tables, lists, expandable blockquotes, preserved intentional line breaks, and CLI-backed replies, while WhatsApp now honors configured ACP bindings. (#92679, #93164, #84082, #89421, #92513) Thanks @obviyus, @vincentkoc, @jzakirov, @spacegeologist, @TurboTheTurtle, @mcaxtr, @myrzka, and @dmorn.
More reliable agent runs: account-scoped DM sends, generated media completions, auto-reply message-tool final replies, reset archive fallback reads, restart shutdown aborts, yielded subagent pauses, and session identity prompts all stay on the correct recovery path. (#92788, #91246, #92879, #91357, #92631, #92468) Thanks @yetval, @TurboTheTurtle, @masatohoshino, @CadanHu, @vincentkoc, @ooiuuii, @openperf, @zhangguiping-xydt, @QQSHI13, @kumaxs, and @aleps001.
Safer model routing: new GLM-5.2 and Claude Haiku 4.5 catalog support arrives with normalized provider IDs, managed SecretRef auth, bounded model browsing, and safer OpenAI/Anthropic tool-schema recovery. (#92796, #90116, #92627, #90686, #92247, #92941) Thanks @arkyu2077, @liuhao1024, @lijenhsin, @rohitjavvadi, @samson910022, @maaron34, @syfvb, and @samson1357924.
Useful usage footers: /usage and reply payload hooks now have a native full footer renderer, default template, fixed-decimal formatting, credential-aware limits, better partial-count handling, and warnings for broken templates instead of silent bad output. (#92657, #89835, #89629) Thanks @Marvinthebored.
Predictable web search defaults: key-free providers such as Parallel Free, DuckDuckGo, Ollama, and Codex Hosted Search remain explicit opt-ins rather than surprising automatic fallbacks. (#93616) Thanks @davemorin and @vincentkoc.
Calmer UI and mobile sessions: workspace files start collapsed, WebChat backscroll survives streaming, the desktop session picker remains interactive, reset arguments survive dispatch, and iOS reconnects stale foreground Gateways. (#92779, #92622, #92705, #91353, #92552) Thanks @shakkernerd, @TurboTheTurtle, @NianJiuZst, @zhouhe-xydt, @Solvely-Colin, @MaBeitian, @vincentkoc, @Chang2020618, and @DrtyMorty.
Resilient memory and state: oversized OpenAI embedding batches split before 431s, QMD search stays available in transient mode, SQLite avoids WAL on NFS volumes, and full reindexes preserve rollback/cache recovery. (#92650, #92618, #92639, #91247, #92881) Thanks @mushuiyu886, @BrettHamlin, @zhbcher, @TurboTheTurtle, @Takhoffman, @849261680, @TSHOGX, @vincentkoc, and @AFabyTWE.
Changes
Providers/models: add GLM-5.2 support and Claude Haiku 4.5 catalog entries while keeping provider-qualified model IDs normalized across OpenRouter and Google Vertex paths. (#92796, #90116, #92627, #91218) Thanks @arkyu2077, @liuhao1024, @bymle, @maaron34, @lijenhsin, @davemorin, and @vincentkoc.
Web search: keep key-free providers such as Parallel Free, DuckDuckGo, Ollama, and Codex Hosted Search as explicit opt-ins instead of selecting them automatically when no API-backed provider is configured. (#93616) Thanks @davemorin and @vincentkoc.
Channel plugins: ship Telegram rich-message delivery and WhatsApp ACP binding support, including preserved intentional line breaks, rich prompt handoff to CLI backends, and transport fixtures for richer drafts. (#92679, #93164, #92513) Thanks @obviyus, @TurboTheTurtle, @vincentkoc, @mcaxtr, and @dmorn.
Agent commands: support /btw in CLI-backed sessions and keep CLI usage-error exits classified as usage failures instead of successful runs. (#92669, #92162) Thanks @joshavant, @Pandah97, @marcospaulo, @davemorin, and @vincentkoc.
Usage hooks: add built-in full footer rendering, default footer templates, per-turn usage state, credential-aware limits, and fixed-decimal formatting for usage-bar templates. (#92657, #89835, #89629) Thanks @Marvinthebored.
Fixes
Channels and delivery: preserve account-scoped DM channel send policy, intentional rich-message line breaks in Telegram and status output, rich Telegram final replies, rich Telegram tables and lists, Telegram thread-create CLI remapping, Feishu dynamic-agent routes after persisted binding reuse, Slack outbound message_sent hooks, contributed message-tool schema optionality, same-channel generated media completions, and channel chunking around surrogate pairs and Infinity limits. (#92788, #93164, #92679, #89421, #89943, #42837, #92814, #91137, #91246, #92735) Thanks @yetval, @obviyus, @spacegeologist, @rishitamrakar, @liuhao1024, @lundog, @TurboTheTurtle, @yhterrance, @vincentkoc, @myrzka, @cwlong163-afk, @kumaxs, @shakkernerd, and @RewardsPal.
Gemini CLI: use the selected OpenClaw OAuth/API-key auth profile in an isolated Gemini CLI runtime home, preventing ambient Google machine credentials from overriding the chosen profile. (#88748) Thanks @jason-allen-oneal and @shakkernerd.
Discord: give generated auto-thread titles a 60-second timeout and 4,096-token reasoning-model output budget, clamped to the selected model output cap. (#64734) Thanks @hanamizuki.
Agent, cron, and Gateway runtime: mark active main sessions before restart shutdown aborts, pause yielded subagent runs whose terminal also signals abort, clamp trusted subagent thinking overrides through provider/model fallback, preserve yielded media completions, deliver channel message-tool final replies through auto-reply while hiding internal delivery hints, restore reset archive fallback reads when active async transcripts are missing, de-duplicate main-session heartbeat events, expose session identity in runtime prompts, reject unknown OpenAI agent selectors, keep generated media completions, slash-command block replies, and trajectory export commands in WebChat, and require admin privileges for HTTP session/model override surfaces. (#91357, #92631, #92412, #92146, #92879, #91287, #92468, #92510, #91246, #92651, #92646) Thanks @ooiuuii, @openperf, @IWhatsskill, @masatohoshino, @CadanHu, @ZengWen-DT, @zhangguiping-xydt, @TurboTheTurtle, @oiGaDio, @aleps001, @vincentkoc, @GSL-R, @QQSHI13, @ryanhelms, @kumaxs, @steipete-oai, @hxy91819, @davemorin, and @nailujac.
Providers and model replay: preserve storeless OpenAI Responses replay compatibility, recover invalid OpenAI reasoning signatures and genericized Anthropic thinking-signature replay errors, route OAuth image defaults through Codex for eligible OpenAI profiles, avoid eager tool streaming for Claude 4.5 in Copilot, quarantine unreadable and post-hook OpenAI/Anthropic-family tool schemas without broadening allowed tool choices, deliver explicit thinking-off requests to LM Studio binary-thinking models, honor profile auth for SecretRef model entries, bound model browsing, strip provider prefixes where runtimes need bare IDs, and surface nested embedding fetch failures. (#90706, #92941, #92201, #92916, #92824, #75393, #92908, #92921, #92928, #92002, #90686, #92247, #92627, #91218, #92628) Thanks @snowzlm, @mmyzwl, @CarlCapital, @bek91, @Kailigithub, @vincentkoc, @rohitjavvadi, @samson910022, @nxmxbbd, @liuhao1024, @bymle, @mushuiyu886, @finchinslc, @syfvb, @lijenhsin, @crsnpalmer-art, @samson1357924, @shakkernerd, and @mlaihk.
Memory, state, diagnostics, and config: split header-too-large embedding batches, keep QMD memory search enabled in transient mode, avoid SQLite WAL on NFS volumes, preserve recovery scheduling outside stuck-session warning backoff, preserve full-reindex rollback/cache recovery, and treat raw Memory Wiki source pages as source evidence. (#92650, #92618, #92639, #91247, #92752, #92881, #59137, #92876) Thanks @mushuiyu886, @TurboTheTurtle, @849261680, @gnanam1990, @TSHOGX, @vincentkoc, @arlen8411, @BrettHamlin, @zhbcher, @Takhoffman, @AFabyTWE, @davemorin, and @zhuyankarl.
UI/mobile/TUI: preserve dashboard session parent lineage, WebChat backscroll, reset soft command args, sidebar session picker interactivity, collapsed workspace files, resolved /model confirmation refs, stale foreground iOS Gateway reconnects, and paused setup-parent stdin after inherited-stdio child exit. (#90658, #92622, #91353, #92705, #92779, #92773, #92552, #93159) Thanks @luoyanglang, @TurboTheTurtle, @zhouhe-xydt, @NianJiuZst, @shakkernerd, @NarahariRaghava, @Solvely-Colin, @fuller-stack-dev, @lily-oc, @MaBeitian, @vincentkoc, @obviyus, @DrtyMorty, and @Chang2020618.
Plugins and updates: repair missing required platform packages during managed plugin installs and updates, including omitted Codex platform binaries. Thanks @vincentkoc.
Dependencies: update Hono to 4.12.25 so published OpenClaw and ACPX packages use the patched runtime. Thanks @vincentkoc.
Updates: avoid a false downgrade prompt when the latest tag cannot resolve. (#92911) Thanks @Andy312432 and @vincentkoc.
Complete contribution record
This audited record covers the complete v2026.6.6..v2026.6.8 history: 192 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #92144 fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json. Related #91766. Thanks @liuhao1024 and @AaronFaby.
PR #92175 fix(channel): harden local setup trust. Thanks @hxy91819.
PR #91528 fix #73837: stop after failed Node package installs. Thanks @mushuiyu886 and @ItsMeForLua.
PR #91561 fix(wizard): report keyless web_search providers as ready, not missing a key. Thanks @NormallyGaussian.
PR #92073 fix: handle explicit silent assistant replies. Related #92038. Thanks @sallyom and @vultusv.
PR #91311 Allow Skill Workshop apply through trusted skill symlinks. Thanks @abnershang.
PR #88245 refactor(whatsapp): introduce inbound message contexts. Thanks @mcaxtr.
PR #92212 refactor: move workspace skill writes to lifecycle. Thanks @shakkernerd.
PR #92248 Remove ClawHub owner preflight. Thanks @Patrick-Erichsen.
PR #91617 test(sqlite): add state perf query plan harness. Related #91616. Thanks @galiniliev.
PR #91626 fix(daemon): keep status readable on unsupported services. Related #25621. Thanks @mushuiyu886 and @kucharskim.
PR #92295 fix(cron): preserve tz and staggerMs when --cron replaces expression. Related #92291. Thanks @liuhao1024 and @dcapclaw.
PR #92087 fix(docker): bundle QA Lab runtime in the image. Thanks @jesse-merhi.
PR #92004 fix(telegram): classify streaming preview edit failures instead of killing the draft. Thanks @obviyus.
PR #91997 fix(telegram): survive getUpdates conflicts in isolated polling ingress. Thanks @obviyus.
PR #92387 fix(anthropic-vertex): stop re-marking cache_control on transport-budgeted payloads. Related #91982. Thanks @openperf and @Takhoffman and @danieljimz.
PR #92229 Fix doctor preview channel SecretRef resolution. Related #91939. Thanks @joshavant and @Niriakot.
PR #92225 Fix disabled heartbeat one-shot cron retries. Related #91775. Thanks @joshavant and @A1fred-AI.
PR #92265 Fix configured DeepSeek model transport inheritance. Related #92148. Thanks @joshavant and @marcoraepple-sys.
PR #92226 Fail closed for CLI-backed /btw fallback. Related #92168. Thanks @joshavant and @wangwllu.
PR #92231 Fix suppressed heartbeat commitment delivery. Related #91948. Thanks @joshavant and @bizzle12368239.
PR #92280 fix(agents): classify structured unsupported model errors. Related #92118. Thanks @joshavant and @pikaqqqqqq.
PR #92276 Fix OTLP log trace correlation. Related #91865. Thanks @joshavant and @sinzin91.
PR #92282 fix(update): hand off Linux service auto-updates. Related #91823. Thanks @joshavant and @hanyizuo.
PR #92235 fix: resolve managed SecretRef provider auth. Related #92097. Thanks @joshavant and @LINSUISHENG034.
PR #92293 Fix provider static model fallback resolution. Related #92009. Thanks @joshavant and @mattsfraser.
PR #92343 fix(agent): continue after source message tool replies. Related #92169. Thanks @joshavant and @elyalvarado.
PR #92350 fix(codex): preserve memory prompt registration. Thanks @rubencu and @sallyom.
PR #92290 fix: clarify gateway SecretRef auth diagnostics. Related #91815. Thanks @joshavant and @mattsfraser.
PR #92286 fix: repair rejected Anthropic thinking replay. Related #91983. Thanks @joshavant and @reginaldomarcilon.
PR #92281 Fix Telegram spooled buffered replay. Related #92129. Thanks @joshavant and @riseandshinefutures.
PR #47493 fix(doctor): show per-step progress spinners during update. Thanks @amersheeny.
PR #92416 fix(outbound): honor top-level image param as send media source (#92407). Thanks @xydigit-sj and @ichirokyoto.
PR #92508 fix(sandbox): render CLI skill prompts from materialized paths. Thanks @brokemac79.
PR #92540 chore: fix esbuild production audit failure. Thanks @RomneyDa.
PR #91484 Add QA evidence artifact output. Thanks @RomneyDa.
PR #91500 Add QA scorecard taxonomy validation. Thanks @RomneyDa.
PR #84082 fix(telegram): allow expandable blockquotes. Thanks @jzakirov.
PR #92554 feat(moonshot): add Kimi K2.7 Code support.
PR #92396 fix(moonshot): backfill reasoning_content on assistant tool-call replay messages. Related #71491. Thanks @xialonglee and @RoseKongPS.
PR #92566 Fix lifecycle timeout cleanup after leader exit. Thanks @RomneyDa.
PR #92311 ci: split plugin ClawHub publishing paths. Thanks @Patrick-Erichsen.
PR #92216 fix(gateway): mirror hidden commentary-phase assistant events. Thanks @ragesaq.
PR #87596 fix(moonshot): rewrite duplicate native Kimi tool_call ids on replay. Related #51593. Thanks @Pluviobyte and @Faaab84.
PR #88993 Expose paged channel action results. Thanks @fuller-stack-dev.
PR #90326 fix(fireworks): resolve catalog model params from plugin.json via core. Thanks @obuchowski.
PR #86629 fix(doctor): warn for untrusted external Discord plugin. Related #83212. Thanks @brokemac79 and @ooiuuii and @cdeyoung67.
PR #90242 fix(providers): skip unreadable Mistral tool schemas. Thanks @vincentkoc.
PR #92498 fix(reply): mirror same-channel Slack final replies. Related #92489. Thanks @TurboTheTurtle and @TalkingHeadsJed.
PR #92083 fix(channels): default boundary logger for swallowed progress-draft start errors. Thanks @hansraj316.
PR #92564 fix(agents): isolate invalid plugin model catalogs [AI-assisted]. Related #92553. Thanks @tangtaizong666 and @fxstein.
PR #89827 docs: UX-013 — design system documentation. Thanks @BunsDev.
PR #89615 feat(ui): hide empty workboard columns. Thanks @BunsDev.
PR #89822 fix(a11y): B-1+B-2+B-3 — contrast, focus states, minimum font sizes. Thanks @BunsDev.
PR #92618 fix #92218: memory_search tool disabled with QMD backend. Thanks @mushuiyu886 and @zhbcher.
PR #92608 docs(gateway): add uptime monitoring guidance to health check docs (fixes #55768). Thanks @liuhao1024 and @faahim.
PR #92605 fix(docs): pin Windows Hub download links to v2026.6.5. Related #92470. Thanks @lzyyzznl and @arjkul.
PR #92593 #92589: fix(internal-runtime-context): wrap prompt-preface runtime context body in delimiters. Thanks @zhangqueping and @jovi2014-cyber.
PR #92606 Run Vitest and Playwright scenarios from qa suite. Thanks @RomneyDa.
PR #89629 feat(hooks): per-turn usageState on reply_payload_sending. Thanks @Marvinthebored.
PR #89835 feat(usage): native templated /usage full footer renderer. Thanks @Marvinthebored.
PR #92247 fix(models): bound /models and models list catalog loading. Related #91809. Thanks @samson910022 and @samson1357924 and @syfvb.
PR #92646 fix: require admin for HTTP model overrides. Thanks @steipete-oai.
PR #90686 fix(gateway): honor profile auth for SecretRef model entries. Related #90685. Thanks @rohitjavvadi.
PR #92651 fix: require admin for HTTP session kills. Thanks @steipete-oai.
PR #92652 test(models): stabilize plugin auth marker fixtures.
PR #89438 fix(slack): warn when channels map is keyed by name instead of channel ID. Related #81665. Thanks @Alix-007 and @cjalden.
PR #92631 fix(agents): pause yielded subagent runs whose terminal also signals abort. Related #92448. Thanks @openperf and @vincentkoc and @aleps001.
PR #92622 fix(ui): preserve WebChat backscroll during streaming. Related #92386. Thanks @TurboTheTurtle and @vincentkoc and @DrtyMorty.
PR #92627 fix(openrouter): strip openrouter/ prefix from model ID in normalizeResolvedModel hook (fixes #92611). Thanks @liuhao1024 and @lijenhsin.
PR #92146 fix(cron): preserve yielded media completions. Related #92120. Thanks @IWhatsskill and @nailujac.
PR #90116 fix: add Claude Haiku 4.5 static catalog entries. Related #90088. Thanks @arkyu2077 and @maaron34.
PR #91137 fix(channels): keep contributed message-tool schema properties optional. Related #67852. Thanks @lundog and @RewardsPal.
PR #75393 fix(copilot): disable eager tool streaming for Claude 4.5. Related #75348. Thanks @Kailigithub and @finchinslc.
PR #92628 fix #73713: surface nested embedding fetch failures. Thanks @mushuiyu886 and @crsnpalmer-art.
PR #92510 fix(gateway): reject unknown OpenAI agent selectors. Related #92504. Thanks @zhangguiping-xydt and @ryanhelms.
PR #91453 fix #91420: [Bug]: Delivery retry loop corrupts active sessions (R-004) — retry selector bypasses delivery.mode=none. Thanks @zhangguiping-xydt and @CarotaWealth.
PR #92468 fix #92453: add session identity to runtime prompt. Thanks @zhangguiping-xydt and @QQSHI13.
PR #89943 fix(slack): emit message_sent hook on outbound delivery (mirror Telegram). Related #89942. Thanks @rishitamrakar.
PR #92668 fix(docs): finalize i18n postprocess before skip. Thanks @hxy91819.
PR #92673 fix: split image setup and request timeout semantics. Thanks @hxy91819.
PR #92162 #92069: fix(cli): usage errors exit 0. Thanks @Pandah97 and @marcospaulo.
PR #91185 fix(browser): remove dead requireRef import and void expression in register.navigation.ts. Related #83878. Thanks @whiteyzy and @davinci282828.
PR #90706 fix(OpenAI Responses): disable item id replay for storeless providers. Related #89728. Thanks @snowzlm.
PR #90247 fix(disk-space): promote 1024 MiB to 1.0 GiB in disk warnings. Related #90245. Thanks @jbetala7.
PR #92657 feat(usage): ship built-in /usage full footer. Thanks @Marvinthebored.
PR #90464 perf(terminal): reuse ANSI scanner during truncation. Thanks @yyzquwu.
PR #91281 fix(feishu): clear client cache when SDK is replaced via setFeishuClientRuntimeForTest. Related #83911. Thanks @whiteyzy and @davinci282828.
PR #92639 fix(memory): keep memory_search in transient qmd mode. Related #92464. Thanks @TurboTheTurtle and @Takhoffman and @BrettHamlin.
PR #91287 fix(cron): de-duplicate main-session systemEvent in heartbeat model input. Related #44922. Thanks @ZengWen-DT and @GSL-R.
PR #91246 Fix webchat media completion handoff. Related #91003. Thanks @TurboTheTurtle and @kumaxs.
PR #91353 fix(ui): preserve /reset soft args in Control UI dispatch. Related #91316. Thanks @zhouhe-xydt and @MaBeitian.
PR #92679 feat(telegram): send rich message text. Thanks @obviyus.
PR #92705 fix(ui): restore sidebar session picker interactivity above desktop workbench. Related #92707. Thanks @NianJiuZst and @vincentkoc.
PR #91218 fix(google): strip provider prefix from Vertex model path. Thanks @bymle.
PR #92669 feat: support /btw in CLI-backed sessions. Thanks @joshavant.
PR #91357 fix(gateway): mark active main sessions before restart shutdown aborts. Related #91355. Thanks @ooiuuii.
PR #91066 fix(parallel): send openclaw-parallel User-Agent on free Search MCP requests. Thanks @NormallyGaussian.
PR #90658 fix(ui): preserve dashboard session parent lineage when session list is stale. Related #90623. Thanks @luoyanglang and @lily-oc.
PR #92552 fix(ios): force stale foreground gateway reconnects. Thanks @Solvely-Colin.
PR #89421 fix(telegram): expose thread create CLI remap. Related #81581. Thanks @spacegeologist and @myrzka.
PR #92779 fix: start workspace files collapsed. Related #90359. Thanks @shakkernerd and @Chang2020618.
PR #91247 fix(state): avoid sqlite wal on nfs state volumes. Related #90491. Thanks @849261680 and @AFabyTWE.
PR #92773 fix(tui): show resolved canonical model ref in /model confirmation. Thanks @NarahariRaghava.
PR #92752 fix(diagnostics): keep recovery scheduling out of the stuck-session warning backoff. Related #92742. Thanks @gnanam1990 and @Takhoffman and @zhuyankarl.
PR #92735 fix(markdown-core): treat Infinity chunk limit as unbounded, not 1. Related #92734. Thanks @yhterrance.
PR #92695 docs(config): correct maxConcurrent default in agent-defaults type comments (AI-assisted). Thanks @ArielSmoliar.
PR #92766 clarify before_install hook scope. Related #91593. Thanks @sallyom and @Trump-last.
PR #92677 docs(nodes): add openclaw.json config example to Nodes overview. Related #92662. Thanks @liuhao1024 and @Casper-Mars.
PR #92513 Honor WhatsApp configured ACP bindings. Related #92449. Thanks @TurboTheTurtle and @mcaxtr and @dmorn.
PR #92650 fix #92465: split OpenAI 431 embedding batches. Thanks @mushuiyu886 and @BrettHamlin.
PR #92796 feat(providers): add GLM-5.2 support.
PR #92788 fix(sessions): derive channel from account-scoped DM session keys in send-policy. Thanks @yetval.
PR #92590 Docker image ships an extraneous stale openclaw in /app/node_modules (extensions pin the published release). Related #92551. Thanks @lzyyzznl and @fxstein.
PR #92393 chore(deps): bump the swift-deps group across 1 directory with 3 updates.
PR #92476 fix(agents): preserve compatible CLI session runtime pins. Thanks @yu-xin-c.
PR #92483 fix(matrix): validate CLI numeric option ranges. Related #92482. Thanks @rohitjavvadi.
PR #92490 fix(canvas): validate CLI numeric options. Related #92487. Thanks @rohitjavvadi.
PR #92802 fix(ui): reflow composer beside workspace rail. Thanks @Solvely-Colin and @shakkernerd.
PR #91059 fix(configure): mask gateway token input in CLI wizard prompt. Thanks @anurag-bg-neu.
PR #91143 fix(ports): only classify SSH -L/-R tunnels on the queried port as ssh. Related #91142. Thanks @jbetala7.
PR #91110 fix(tavily): keep web_search contract executable. Related #91096. Thanks @extrasmall0 and @xucongyuan98-sys.
PR #91181 fix(daemon): strip schtasks backslash prefix when matching gateway task name. Related #90494. Thanks @425072024 and @Darnellicious.
PR #91187 fix(cron): isolate auth profile failure policy so cron runs don't pollute shared cooldowns. Related #90991. Thanks @openperf and @cx306806112.
PR #92807 fix(heartbeat): route outbound mirror to isolated session key. Thanks @agent-merkava.
PR #92745 fix(memory): explain skipped short-term recall hits. Related #92706. Thanks @mushuiyu886 and @armarinho.
PR #92488 fix(gateway): forward image-only input on /v1/responses (parity with chat completions). Thanks @s554097550 and @cursoragent.
PR #92604 fix(status): avoid cumulative usage for context percent. Related #83526. Thanks @ashishpatel26 and @darconadalabarga.
PR #92810 fix: reject unvalidated voice media streams. Thanks @steipete-oai.
PR #92800 fix(telegram): answer callback queries before sequentialize delays them. Related #42156. Thanks @liuhao1024 and @Diaspar4u.
PR #92547 fix(nodes): surface pending reapproval diagnostics. Thanks @fuller-stack-dev.
PR #92690 fix(doctor): avoid false-positive legacy cron store warning when store was already migrated (fixes #92683). Thanks @liuhao1024 and @motteman.
PR #92806 fix(telegram): skip IPv4 fallback when user explicitly configures non-ipv4first dnsResultOrder (fixes #41671). Thanks @liuhao1024 and @vincentkoc and @leandroirani933-ctrl.
PR #92778 fix(macos): defer isOverflowing mutation to break SwiftUI render loop (fixes #43480). Thanks @liuhao1024 and @vincentkoc and @gdiab.
PR #92795 fix(gateway): use resolveNonNegativeNumber for totalTokens to display 0 instead of ? (fixes #43009). Thanks @liuhao1024 and @vincentkoc and @ltxy12138-ai.
PR #92746 fix(gateway): preserve active runs during plugin finalization. Thanks @scotthuang and @vincentkoc.
PR #92820 UI: localize Logs tab labels. Thanks @rubensfox20.
PR #92825 fix(telegram): preserve command callbacks while prefixing generic callback data. Related #54909. Thanks @hnshah and @timt80.
PR #90889 fix: cap session context overrides by model window. Related #39857. Thanks @xdanger.
PR #92830 fix(copilot): strip replayed thinking blocks. Related #81520. Thanks @giodl73-repo and @warcold.
PR #92834 feat(browser): extend --labels overlay to full-page and element captures. Thanks @hxy91819 and @FMLS and @cursoragent.
PR #92836 fix(discord): raise thread title timeout and tokens to fit reasoning models. Thanks @hanamizuki.
PR #92095 fix #92039: [Bug]: WhatsApp login reports success before auth is durably persisted, so Docker rebuilds/upgrades can force relink. Thanks @zhangguiping-xydt and @dinorastoder.
PR #92801 fix(stale): exempt ClawSweeper actionable labels from stale lifecycle (fixes #89564). Thanks @liuhao1024 and @brokemac79.
PR #89736 fix(status): render sub-1000 token counts as plain integers. Related #89735. Thanks @jbetala7 and @vincentkoc.
PR #92792 fix(agents): catch malformed image blocks in sanitizeContentBlocksImages. Thanks @LowCode191 and @vincentkoc.
PR #92555 ci: gate stable releases on Windows companion assets. Thanks @fuller-stack-dev.
PR #91824 fix(agents): add usage guidance to sessions_spawn tool description (fixes #91814). Thanks @zenglingbiao and @vincentkoc and @cattails-lgao.
PR #92840 fix(feishu): await HTTP server shutdown during monitor cleanup. Related #48183. Thanks @alex-xuweilong and @ai-nurmamat.
PR #91632 feat: add tool search directory mode. Thanks @fuller-stack-dev.
PR #92823 fix(qqbot): surface failed media sends. Thanks @zhangguiping-xydt and @vincentkoc.
PR #92849 fix(tailscale): preserve parse errors for malformed JSON. Thanks @franciscomaestre.
PR #92045 Fix diagnostics OTEL runtime install trust. Thanks @efpiva.
PR #92853 fix(acp): accept MCP date protocolVersion in ACP server. Related #56102. Thanks @bugkill3r and @moliveto.
PR #92854 fix(hooks): reject slug-generator error payloads. Thanks @Cypherm.
PR #92855 fix(ui): repair iOS Safari chat viewport handling. Thanks @macdao.
PR #91586 fix(update): continue after package doctor warnings. Thanks @fuller-stack-dev.
PR #92862 fix(feishu): target typing reaction on inbound message. Thanks @huiwen01.
PR #92861 fix(lobster): surface workflow path errors. Related #68101. Thanks @vvitovec and @MPC7500.
PR #69975 fix(cli): clarify --tz help text for offset-less --at values. Related #59456. Thanks @rrrrrredy.
PR #90682 fix(openai): preserve opaque reasoning transcript fields. Related #90093. Thanks @toruvieI and @richardmqq.
PR #92373 fix(anthropic): strip thinking blocks from history when thinking is disabled (fixes #92360). Thanks @liuhao1024 and @notnaji.
PR #87346 fix(anthropic): merge consecutive assistant turns in turn validation. Related #87329. Thanks @Jefsky and @travellingsoldier85.
PR #92896 fix(anthropic): quarantine invalid direct tool schemas. Thanks @vincentkoc.
PR #90739 fix(active-memory): preserve verbose recall summaries. Related #90454. Thanks @brokemac79 and @nocode-ananas.
PR #92558 Simplify QA scorecard mapping shape. Thanks @RomneyDa.
PR #92876 fix(memory-wiki): stop flagging raw source pages as malformed. Thanks @vincentkoc.
PR #92908 fix(providers): quarantine unreadable Anthropic payload tools. Thanks @vincentkoc.
PR #92881 fix(memory): preserve reindex rollback recovery. Thanks @TSHOGX and @vincentkoc.
PR #92921 fix(openai): quarantine unreadable tool schemas. Thanks @vincentkoc.
PR #92550 Fold Telegram RTT sampling into live QA evidence. Thanks @RomneyDa.
PR #92824 fix(media): route OAuth image defaults through Codex. Related #87168. Thanks @bek91.
PR #92928 fix(openai): guard post-hook tool payloads. Thanks @vincentkoc.
PR #92814 fix(feishu): re-resolve route when dynamic agent binding already exists in runtime config (fixes #42837). Thanks @liuhao1024 and @vincentkoc and @cwlong163-afk.
PR #89055 fix: restart gateway after isolated cron setup timeout. Thanks @ghitafilali.
PR #90574 fix(openai): omit gpt-5.5 tool reasoning effort. Thanks @BSG2000.
PR #92941 fix(openai): recover invalid reasoning signatures.
PR #92914 fix(agents): clamp unsupported thinking for subagent spawns instead of hard-failing. Related #92412. Thanks @openperf and @oiGaDio.
PR #92573 fix: preserve config-selected subagent model overrides. Related #92486. Thanks @arkyu2077 and @PatrickTrent.
PR #92852 fix(gateway): fall back to polling when config watcher exhausts inotify retries. Related #92851. Thanks @danbao.
PR #92362 fix(gateway): build row metadata context for single session lists. Thanks @anyech.
PR #92897 fix(memory-wiki): tolerate public artifacts without agent ids. Related #92207. Thanks @yu-xin-c and @qq230849622-a11y.
PR #92002 fix(lmstudio): deliver thinking "off" to binary-thinking models. Related #91913. Thanks @nxmxbbd and @mlaihk.
PR #92738 Forward suppressed-source progress for message-tool channel replies. Thanks @ragesaq.
PR #92916 #92201: Embedded runner: freshly streamed thinking signatures intermittently invalid on replay (Anthropic); recovery wrapper never fires because error text is genericized. Thanks @mmyzwl and @CarlCapital.
PR #90936 fix(agents): do not misclassify client-disconnect abort as run timeout. Related #90764. Thanks @openperf and @reginaldomarcilon.
PR #93009 fix(agents): make wrapToolWithBeforeToolCallHook idempotent to prevent double hook execution (fixes #92973). Thanks @zenglingbiao and @dertbv.
PR #92318 fix(cron): require explicit message target proof. Thanks @hxy91819.
PR #93022 fix(gateway): repair usage cost aggregation across agents. Thanks @luke-skywalker-open-claw and @stablegenius49.
PR #93159 fix(tui): keep parent stdin paused after exit. Thanks @fuller-stack-dev.
PR #93616 Keep key-free web search providers opt-in. Thanks @davemorin and @vincentkoc.
PR #93164 fix(telegram): preserve rich markdown line breaks. Thanks @vincentkoc.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.8-beta.2
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.8-beta.2.tgz
integrity: sha512-44ab7b24zUY14dpEVt9TZpd6o6PfbYfnNjSbALHULsCkE7e1ju+ZOia46EawvRLqbYqOwjM9oucnbk7P9/eWsQ==
release SHA: b1736723d716b1abe1f8d324772371661146f3b8
release publish: https://github.com/openclaw/openclaw/actions/runs/27587320308
postpublish recovery: exact npm install, 35 npm plugins, and 35 ClawHub packages verified after registry propagation
npm preflight: https://github.com/openclaw/openclaw/actions/runs/27582865457
full release validation: https://github.com/openclaw/openclaw/actions/runs/27584541070
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/27587508776
plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/27587512198
plugin ClawHub bootstrap: not needed
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/27587814328
npm Telegram beta E2E: https://github.com/openclaw/openclaw/actions/runs/27588410701
Original source - Jun 18, 2026
- Date parsed from source:Jun 18, 2026
- First seen by Releasebot:Jun 16, 2026
- Modified by Releasebot:Jun 18, 2026
openclaw 2026.6.8-beta.1
OpenClaw releases a broad stability and usability update with richer Telegram and WhatsApp delivery, safer model routing, more reliable agent recovery, cleaner usage footers, predictable web search defaults, and smoother UI and mobile sessions.
2026.6.8
Highlights
Richer channel delivery: Telegram and WhatsApp are less brittle: Telegram renders structured text with tables, lists, expandable blockquotes, preserved intentional line breaks, and CLI-backed replies, while WhatsApp now honors configured ACP bindings. (#92679, #93164, #84082, #89421, #92513) Thanks @obviyus, @vincentkoc, @jzakirov, @spacegeologist, @TurboTheTurtle, @mcaxtr, @myrzka, and @dmorn.
More reliable agent runs: account-scoped DM sends, generated media completions, auto-reply message-tool final replies, reset archive fallback reads, restart shutdown aborts, yielded subagent pauses, and session identity prompts all stay on the correct recovery path. (#92788, #91246, #92879, #91357, #92631, #92468) Thanks @yetval, @TurboTheTurtle, @masatohoshino, @CadanHu, @vincentkoc, @ooiuuii, @openperf, @zhangguiping-xydt, @QQSHI13, @kumaxs, and @aleps001.
Safer model routing: new GLM-5.2 and Claude Haiku 4.5 catalog support arrives with normalized provider IDs, managed SecretRef auth, bounded model browsing, and safer OpenAI/Anthropic tool-schema recovery. (#92796, #90116, #92627, #90686, #92247, #92941) Thanks @arkyu2077, @liuhao1024, @lijenhsin, @rohitjavvadi, @samson910022, @maaron34, @syfvb, and @samson1357924.
Useful usage footers: /usage and reply payload hooks now have a native full footer renderer, default template, fixed-decimal formatting, credential-aware limits, better partial-count handling, and warnings for broken templates instead of silent bad output. (#92657, #89835, #89629) Thanks @Marvinthebored.
Predictable web search defaults: key-free providers such as Parallel Free, DuckDuckGo, Ollama, and Codex Hosted Search remain explicit opt-ins rather than surprising automatic fallbacks. (#93616) Thanks @davemorin and @vincentkoc.
Calmer UI and mobile sessions: workspace files start collapsed, WebChat backscroll survives streaming, the desktop session picker remains interactive, reset arguments survive dispatch, and iOS reconnects stale foreground Gateways. (#92779, #92622, #92705, #91353, #92552) Thanks @shakkernerd, @TurboTheTurtle, @NianJiuZst, @zhouhe-xydt, @Solvely-Colin, @MaBeitian, @vincentkoc, @Chang2020618, and @DrtyMorty.
Resilient memory and state: oversized OpenAI embedding batches split before 431s, QMD search stays available in transient mode, SQLite avoids WAL on NFS volumes, and full reindexes preserve rollback/cache recovery. (#92650, #92618, #92639, #91247, #92881) Thanks @mushuiyu886, @BrettHamlin, @zhbcher, @TurboTheTurtle, @Takhoffman, @849261680, @TSHOGX, @vincentkoc, and @AFabyTWE.
Changes
Providers/models: add GLM-5.2 support and Claude Haiku 4.5 catalog entries while keeping provider-qualified model IDs normalized across OpenRouter and Google Vertex paths. (#92796, #90116, #92627, #91218) Thanks @arkyu2077, @liuhao1024, @bymle, @maaron34, @lijenhsin, @davemorin, and @vincentkoc.
Web search: keep key-free providers such as Parallel Free, DuckDuckGo, Ollama, and Codex Hosted Search as explicit opt-ins instead of selecting them automatically when no API-backed provider is configured. (#93616) Thanks @davemorin and @vincentkoc.
Channel plugins: ship Telegram rich-message delivery and WhatsApp ACP binding support, including preserved intentional line breaks, rich prompt handoff to CLI backends, and transport fixtures for richer drafts. (#92679, #93164, #92513) Thanks @obviyus, @TurboTheTurtle, @vincentkoc, @mcaxtr, and @dmorn.
Agent commands: support /btw in CLI-backed sessions and keep CLI usage-error exits classified as usage failures instead of successful runs. (#92669, #92162) Thanks @joshavant, @Pandah97, @marcospaulo, @davemorin, and @vincentkoc.
Usage hooks: add built-in full footer rendering, default footer templates, per-turn usage state, credential-aware limits, and fixed-decimal formatting for usage-bar templates. (#92657, #89835, #89629) Thanks @Marvinthebored.
Fixes
Channels and delivery: preserve account-scoped DM channel send policy, intentional rich-message line breaks in Telegram and status output, rich Telegram final replies, rich Telegram tables and lists, Telegram thread-create CLI remapping, Feishu dynamic-agent routes after persisted binding reuse, Slack outbound message_sent hooks, contributed message-tool schema optionality, same-channel generated media completions, and channel chunking around surrogate pairs and Infinity limits. (#92788, #93164, #92679, #89421, #89943, #42837, #92814, #91137, #91246, #92735) Thanks @yetval, @obviyus, @spacegeologist, @rishitamrakar, @liuhao1024, @lundog, @TurboTheTurtle, @yhterrance, @vincentkoc, @myrzka, @cwlong163-afk, @kumaxs, @shakkernerd, and @RewardsPal.
Gemini CLI: use the selected OpenClaw OAuth/API-key auth profile in an isolated Gemini CLI runtime home, preventing ambient Google machine credentials from overriding the chosen profile. (#88748) Thanks @jason-allen-oneal and @shakkernerd.
Discord: give generated auto-thread titles a 60-second timeout and 4,096-token reasoning-model output budget, clamped to the selected model output cap. (#64734) Thanks @hanamizuki.
Agent, cron, and Gateway runtime: mark active main sessions before restart shutdown aborts, pause yielded subagent runs whose terminal also signals abort, clamp trusted subagent thinking overrides through provider/model fallback, preserve yielded media completions, deliver channel message-tool final replies through auto-reply while hiding internal delivery hints, restore reset archive fallback reads when active async transcripts are missing, de-duplicate main-session heartbeat events, expose session identity in runtime prompts, reject unknown OpenAI agent selectors, keep generated media completions, slash-command block replies, and trajectory export commands in WebChat, and require admin privileges for HTTP session/model override surfaces. (#91357, #92631, #92412, #92146, #92879, #91287, #92468, #92510, #91246, #92651, #92646) Thanks @ooiuuii, @openperf, @IWhatsskill, @masatohoshino, @CadanHu, @ZengWen-DT, @zhangguiping-xydt, @TurboTheTurtle, @oiGaDio, @aleps001, @vincentkoc, @GSL-R, @QQSHI13, @ryanhelms, @kumaxs, @steipete-oai, @hxy91819, @davemorin, and @nailujac.
Providers and model replay: preserve storeless OpenAI Responses replay compatibility, recover invalid OpenAI reasoning signatures and genericized Anthropic thinking-signature replay errors, route OAuth image defaults through Codex for eligible OpenAI profiles, avoid eager tool streaming for Claude 4.5 in Copilot, quarantine unreadable and post-hook OpenAI/Anthropic-family tool schemas without broadening allowed tool choices, deliver explicit thinking-off requests to LM Studio binary-thinking models, honor profile auth for SecretRef model entries, bound model browsing, strip provider prefixes where runtimes need bare IDs, and surface nested embedding fetch failures. (#90706, #92941, #92201, #92916, #92824, #75393, #92908, #92921, #92928, #92002, #90686, #92247, #92627, #91218, #92628) Thanks @snowzlm, @mmyzwl, @CarlCapital, @bek91, @Kailigithub, @vincentkoc, @rohitjavvadi, @samson910022, @nxmxbbd, @liuhao1024, @bymle, @mushuiyu886, @finchinslc, @syfvb, @lijenhsin, @crsnpalmer-art, @samson1357924, @shakkernerd, and @mlaihk.
Memory, state, diagnostics, and config: split header-too-large embedding batches, keep QMD memory search enabled in transient mode, avoid SQLite WAL on NFS volumes, preserve recovery scheduling outside stuck-session warning backoff, preserve full-reindex rollback/cache recovery, and treat raw Memory Wiki source pages as source evidence. (#92650, #92618, #92639, #91247, #92752, #92881, #59137, #92876) Thanks @mushuiyu886, @TurboTheTurtle, @849261680, @gnanam1990, @TSHOGX, @vincentkoc, @arlen8411, @BrettHamlin, @zhbcher, @Takhoffman, @AFabyTWE, @davemorin, and @zhuyankarl.
UI/mobile/TUI: preserve dashboard session parent lineage, WebChat backscroll, reset soft command args, sidebar session picker interactivity, collapsed workspace files, resolved /model confirmation refs, stale foreground iOS Gateway reconnects, and paused setup-parent stdin after inherited-stdio child exit. (#90658, #92622, #91353, #92705, #92779, #92773, #92552, #93159) Thanks @luoyanglang, @TurboTheTurtle, @zhouhe-xydt, @NianJiuZst, @shakkernerd, @NarahariRaghava, @Solvely-Colin, @fuller-stack-dev, @lily-oc, @MaBeitian, @vincentkoc, @obviyus, @DrtyMorty, and @Chang2020618.
Plugins and updates: repair missing required platform packages during managed plugin installs and updates, including omitted Codex platform binaries. Thanks @vincentkoc.
Dependencies: update Hono to 4.12.25 so published OpenClaw and ACPX packages use the patched runtime. Thanks @vincentkoc.
Updates: avoid a false downgrade prompt when the latest tag cannot resolve. (#92911) Thanks @Andy312432 and @vincentkoc.
Complete contribution record
This audited record covers the complete v2026.6.6..v2026.6.8 history: 192 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
Pull requests
PR #92144 fix(cron): report SQLite storage path in cron.status instead of legacy jobs.json. Related #91766. Thanks @liuhao1024 and @AaronFaby.
PR #92175 fix(channel): harden local setup trust. Thanks @hxy91819.
PR #91528 fix #73837: stop after failed Node package installs. Thanks @mushuiyu886 and @ItsMeForLua.
PR #91561 fix(wizard): report keyless web_search providers as ready, not missing a key. Thanks @NormallyGaussian.
PR #92073 fix: handle explicit silent assistant replies. Related #92038. Thanks @sallyom and @vultusv.
PR #91311 Allow Skill Workshop apply through trusted skill symlinks. Thanks @abnershang.
PR #88245 refactor(whatsapp): introduce inbound message contexts. Thanks @mcaxtr.
PR #92212 refactor: move workspace skill writes to lifecycle. Thanks @shakkernerd.
PR #92248 Remove ClawHub owner preflight. Thanks @Patrick-Erichsen.
PR #91617 test(sqlite): add state perf query plan harness. Related #91616. Thanks @galiniliev.
PR #91626 fix(daemon): keep status readable on unsupported services. Related #25621. Thanks @mushuiyu886 and @kucharskim.
PR #92295 fix(cron): preserve tz and staggerMs when --cron replaces expression. Related #92291. Thanks @liuhao1024 and @dcapclaw.
PR #92087 fix(docker): bundle QA Lab runtime in the image. Thanks @jesse-merhi.
PR #92004 fix(telegram): classify streaming preview edit failures instead of killing the draft. Thanks @obviyus.
PR #91997 fix(telegram): survive getUpdates conflicts in isolated polling ingress. Thanks @obviyus.
PR #92387 fix(anthropic-vertex): stop re-marking cache_control on transport-budgeted payloads. Related #91982. Thanks @openperf and @Takhoffman and @danieljimz.
PR #92229 Fix doctor preview channel SecretRef resolution. Related #91939. Thanks @joshavant and @Niriakot.
PR #92225 Fix disabled heartbeat one-shot cron retries. Related #91775. Thanks @joshavant and @A1fred-AI.
PR #92265 Fix configured DeepSeek model transport inheritance. Related #92148. Thanks @joshavant and @marcoraepple-sys.
PR #92226 Fail closed for CLI-backed /btw fallback. Related #92168. Thanks @joshavant and @wangwllu.
PR #92231 Fix suppressed heartbeat commitment delivery. Related #91948. Thanks @joshavant and @bizzle12368239.
PR #92280 fix(agents): classify structured unsupported model errors. Related #92118. Thanks @joshavant and @pikaqqqqqq.
PR #92276 Fix OTLP log trace correlation. Related #91865. Thanks @joshavant and @sinzin91.
PR #92282 fix(update): hand off Linux service auto-updates. Related #91823. Thanks @joshavant and @hanyizuo.
PR #92235 fix: resolve managed SecretRef provider auth. Related #92097. Thanks @joshavant and @LINSUISHENG034.
PR #92293 Fix provider static model fallback resolution. Related #92009. Thanks @joshavant and @mattsfraser.
PR #92343 fix(agent): continue after source message tool replies. Related #92169. Thanks @joshavant and @elyalvarado.
PR #92350 fix(codex): preserve memory prompt registration. Thanks @rubencu and @sallyom.
PR #92290 fix: clarify gateway SecretRef auth diagnostics. Related #91815. Thanks @joshavant and @mattsfraser.
PR #92286 fix: repair rejected Anthropic thinking replay. Related #91983. Thanks @joshavant and @reginaldomarcilon.
PR #92281 Fix Telegram spooled buffered replay. Related #92129. Thanks @joshavant and @riseandshinefutures.
PR #47493 fix(doctor): show per-step progress spinners during update. Thanks @amersheeny.
PR #92416 fix(outbound): honor top-level image param as send media source (#92407). Thanks @xydigit-sj and @ichirokyoto.
PR #92508 fix(sandbox): render CLI skill prompts from materialized paths. Thanks @brokemac79.
PR #92540 chore: fix esbuild production audit failure. Thanks @RomneyDa.
PR #91484 Add QA evidence artifact output. Thanks @RomneyDa.
PR #91500 Add QA scorecard taxonomy validation. Thanks @RomneyDa.
PR #84082 fix(telegram): allow expandable blockquotes. Thanks @jzakirov.
PR #92554 feat(moonshot): add Kimi K2.7 Code support.
PR #92396 fix(moonshot): backfill reasoning_content on assistant tool-call replay messages. Related #71491. Thanks @xialonglee and @RoseKongPS.
PR #92566 Fix lifecycle timeout cleanup after leader exit. Thanks @RomneyDa.
PR #92311 ci: split plugin ClawHub publishing paths. Thanks @Patrick-Erichsen.
PR #92216 fix(gateway): mirror hidden commentary-phase assistant events. Thanks @ragesaq.
PR #87596 fix(moonshot): rewrite duplicate native Kimi tool_call ids on replay. Related #51593. Thanks @Pluviobyte and @Faaab84.
PR #88993 Expose paged channel action results. Thanks @fuller-stack-dev.
PR #90326 fix(fireworks): resolve catalog model params from plugin.json via core. Thanks @obuchowski.
PR #86629 fix(doctor): warn for untrusted external Discord plugin. Related #83212. Thanks @brokemac79 and @ooiuuii and @cdeyoung67.
PR #90242 fix(providers): skip unreadable Mistral tool schemas. Thanks @vincentkoc.
PR #92498 fix(reply): mirror same-channel Slack final replies. Related #92489. Thanks @TurboTheTurtle and @TalkingHeadsJed.
PR #92083 fix(channels): default boundary logger for swallowed progress-draft start errors. Thanks @hansraj316.
PR #92564 fix(agents): isolate invalid plugin model catalogs [AI-assisted]. Related #92553. Thanks @tangtaizong666 and @fxstein.
PR #89827 docs: UX-013 — design system documentation. Thanks @BunsDev.
PR #89615 feat(ui): hide empty workboard columns. Thanks @BunsDev.
PR #89822 fix(a11y): B-1+B-2+B-3 — contrast, focus states, minimum font sizes. Thanks @BunsDev.
PR #92618 fix #92218: memory_search tool disabled with QMD backend. Thanks @mushuiyu886 and @zhbcher.
PR #92608 docs(gateway): add uptime monitoring guidance to health check docs (fixes #55768). Thanks @liuhao1024 and @faahim.
PR #92605 fix(docs): pin Windows Hub download links to v2026.6.5. Related #92470. Thanks @lzyyzznl and @arjkul.
PR #92593 #92589: fix(internal-runtime-context): wrap prompt-preface runtime context body in delimiters. Thanks @zhangqueping and @jovi2014-cyber.
PR #92606 Run Vitest and Playwright scenarios from qa suite. Thanks @RomneyDa.
PR #89629 feat(hooks): per-turn usageState on reply_payload_sending. Thanks @Marvinthebored.
PR #89835 feat(usage): native templated /usage full footer renderer. Thanks @Marvinthebored.
PR #92247 fix(models): bound /models and models list catalog loading. Related #91809. Thanks @samson910022 and @samson1357924 and @syfvb.
PR #92646 fix: require admin for HTTP model overrides. Thanks @steipete-oai.
PR #90686 fix(gateway): honor profile auth for SecretRef model entries. Related #90685. Thanks @rohitjavvadi.
PR #92651 fix: require admin for HTTP session kills. Thanks @steipete-oai.
PR #92652 test(models): stabilize plugin auth marker fixtures.
PR #89438 fix(slack): warn when channels map is keyed by name instead of channel ID. Related #81665. Thanks @Alix-007 and @cjalden.
PR #92631 fix(agents): pause yielded subagent runs whose terminal also signals abort. Related #92448. Thanks @openperf and @vincentkoc and @aleps001.
PR #92622 fix(ui): preserve WebChat backscroll during streaming. Related #92386. Thanks @TurboTheTurtle and @vincentkoc and @DrtyMorty.
PR #92627 fix(openrouter): strip openrouter/ prefix from model ID in normalizeResolvedModel hook (fixes #92611). Thanks @liuhao1024 and @lijenhsin.
PR #92146 fix(cron): preserve yielded media completions. Related #92120. Thanks @IWhatsskill and @nailujac.
PR #90116 fix: add Claude Haiku 4.5 static catalog entries. Related #90088. Thanks @arkyu2077 and @maaron34.
PR #91137 fix(channels): keep contributed message-tool schema properties optional. Related #67852. Thanks @lundog and @RewardsPal.
PR #75393 fix(copilot): disable eager tool streaming for Claude 4.5. Related #75348. Thanks @Kailigithub and @finchinslc.
PR #92628 fix #73713: surface nested embedding fetch failures. Thanks @mushuiyu886 and @crsnpalmer-art.
PR #92510 fix(gateway): reject unknown OpenAI agent selectors. Related #92504. Thanks @zhangguiping-xydt and @ryanhelms.
PR #91453 fix #91420: [Bug]: Delivery retry loop corrupts active sessions (R-004) — retry selector bypasses delivery.mode=none. Thanks @zhangguiping-xydt and @CarotaWealth.
PR #92468 fix #92453: add session identity to runtime prompt. Thanks @zhangguiping-xydt and @QQSHI13.
PR #89943 fix(slack): emit message_sent hook on outbound delivery (mirror Telegram). Related #89942. Thanks @rishitamrakar.
PR #92668 fix(docs): finalize i18n postprocess before skip. Thanks @hxy91819.
PR #92673 fix: split image setup and request timeout semantics. Thanks @hxy91819.
PR #92162 #92069: fix(cli): usage errors exit 0. Thanks @Pandah97 and @marcospaulo.
PR #91185 fix(browser): remove dead requireRef import and void expression in register.navigation.ts. Related #83878. Thanks @whiteyzy and @davinci282828.
PR #90706 fix(OpenAI Responses): disable item id replay for storeless providers. Related #89728. Thanks @snowzlm.
PR #90247 fix(disk-space): promote 1024 MiB to 1.0 GiB in disk warnings. Related #90245. Thanks @jbetala7.
PR #92657 feat(usage): ship built-in /usage full footer. Thanks @Marvinthebored.
PR #90464 perf(terminal): reuse ANSI scanner during truncation. Thanks @yyzquwu.
PR #91281 fix(feishu): clear client cache when SDK is replaced via setFeishuClientRuntimeForTest. Related #83911. Thanks @whiteyzy and @davinci282828.
PR #92639 fix(memory): keep memory_search in transient qmd mode. Related #92464. Thanks @TurboTheTurtle and @Takhoffman and @BrettHamlin.
PR #91287 fix(cron): de-duplicate main-session systemEvent in heartbeat model input. Related #44922. Thanks @ZengWen-DT and @GSL-R.
PR #91246 Fix webchat media completion handoff. Related #91003. Thanks @TurboTheTurtle and @kumaxs.
PR #91353 fix(ui): preserve /reset soft args in Control UI dispatch. Related #91316. Thanks @zhouhe-xydt and @MaBeitian.
PR #92679 feat(telegram): send rich message text. Thanks @obviyus.
PR #92705 fix(ui): restore sidebar session picker interactivity above desktop workbench. Related #92707. Thanks @NianJiuZst and @vincentkoc.
PR #91218 fix(google): strip provider prefix from Vertex model path. Thanks @bymle.
PR #92669 feat: support /btw in CLI-backed sessions. Thanks @joshavant.
PR #91357 fix(gateway): mark active main sessions before restart shutdown aborts. Related #91355. Thanks @ooiuuii.
PR #91066 fix(parallel): send openclaw-parallel User-Agent on free Search MCP requests. Thanks @NormallyGaussian.
PR #90658 fix(ui): preserve dashboard session parent lineage when session list is stale. Related #90623. Thanks @luoyanglang and @lily-oc.
PR #92552 fix(ios): force stale foreground gateway reconnects. Thanks @Solvely-Colin.
PR #89421 fix(telegram): expose thread create CLI remap. Related #81581. Thanks @spacegeologist and @myrzka.
PR #92779 fix: start workspace files collapsed. Related #90359. Thanks @shakkernerd and @Chang2020618.
PR #91247 fix(state): avoid sqlite wal on nfs state volumes. Related #90491. Thanks @849261680 and @AFabyTWE.
PR #92773 fix(tui): show resolved canonical model ref in /model confirmation. Thanks @NarahariRaghava.
PR #92752 fix(diagnostics): keep recovery scheduling out of the stuck-session warning backoff. Related #92742. Thanks @gnanam1990 and @Takhoffman and @zhuyankarl.
PR #92735 fix(markdown-core): treat Infinity chunk limit as unbounded, not 1. Related #92734. Thanks @yhterrance.
PR #92695 docs(config): correct maxConcurrent default in agent-defaults type comments (AI-assisted). Thanks @ArielSmoliar.
PR #92766 clarify before_install hook scope. Related #91593. Thanks @sallyom and @Trump-last.
PR #92677 docs(nodes): add openclaw.json config example to Nodes overview. Related #92662. Thanks @liuhao1024 and @Casper-Mars.
PR #92513 Honor WhatsApp configured ACP bindings. Related #92449. Thanks @TurboTheTurtle and @mcaxtr and @dmorn.
PR #92650 fix #92465: split OpenAI 431 embedding batches. Thanks @mushuiyu886 and @BrettHamlin.
PR #92796 feat(providers): add GLM-5.2 support.
PR #92788 fix(sessions): derive channel from account-scoped DM session keys in send-policy. Thanks @yetval.
PR #92590 Docker image ships an extraneous stale openclaw in /app/node_modules (extensions pin the published release). Related #92551. Thanks @lzyyzznl and @fxstein.
PR #92393 chore(deps): bump the swift-deps group across 1 directory with 3 updates.
PR #92476 fix(agents): preserve compatible CLI session runtime pins. Thanks @yu-xin-c.
PR #92483 fix(matrix): validate CLI numeric option ranges. Related #92482. Thanks @rohitjavvadi.
PR #92490 fix(canvas): validate CLI numeric options. Related #92487. Thanks @rohitjavvadi.
PR #92802 fix(ui): reflow composer beside workspace rail. Thanks @Solvely-Colin and @shakkernerd.
PR #91059 fix(configure): mask gateway token input in CLI wizard prompt. Thanks @anurag-bg-neu.
PR #91143 fix(ports): only classify SSH -L/-R tunnels on the queried port as ssh. Related #91142. Thanks @jbetala7.
PR #91110 fix(tavily): keep web_search contract executable. Related #91096. Thanks @extrasmall0 and @xucongyuan98-sys.
PR #91181 fix(daemon): strip schtasks backslash prefix when matching gateway task name. Related #90494. Thanks @425072024 and @Darnellicious.
PR #91187 fix(cron): isolate auth profile failure policy so cron runs don't pollute shared cooldowns. Related #90991. Thanks @openperf and @cx306806112.
PR #92807 fix(heartbeat): route outbound mirror to isolated session key. Thanks @agent-merkava.
PR #92745 fix(memory): explain skipped short-term recall hits. Related #92706. Thanks @mushuiyu886 and @armarinho.
PR #92488 fix(gateway): forward image-only input on /v1/responses (parity with chat completions). Thanks @s554097550 and @cursoragent.
PR #92604 fix(status): avoid cumulative usage for context percent. Related #83526. Thanks @ashishpatel26 and @darconadalabarga.
PR #92810 fix: reject unvalidated voice media streams. Thanks @steipete-oai.
PR #92800 fix(telegram): answer callback queries before sequentialize delays them. Related #42156. Thanks @liuhao1024 and @Diaspar4u.
PR #92547 fix(nodes): surface pending reapproval diagnostics. Thanks @fuller-stack-dev.
PR #92690 fix(doctor): avoid false-positive legacy cron store warning when store was already migrated (fixes #92683). Thanks @liuhao1024 and @motteman.
PR #92806 fix(telegram): skip IPv4 fallback when user explicitly configures non-ipv4first dnsResultOrder (fixes #41671). Thanks @liuhao1024 and @vincentkoc and @leandroirani933-ctrl.
PR #92778 fix(macos): defer isOverflowing mutation to break SwiftUI render loop (fixes #43480). Thanks @liuhao1024 and @vincentkoc and @gdiab.
PR #92795 fix(gateway): use resolveNonNegativeNumber for totalTokens to display 0 instead of ? (fixes #43009). Thanks @liuhao1024 and @vincentkoc and @ltxy12138-ai.
PR #92746 fix(gateway): preserve active runs during plugin finalization. Thanks @scotthuang and @vincentkoc.
PR #92820 UI: localize Logs tab labels. Thanks @rubensfox20.
PR #92825 fix(telegram): preserve command callbacks while prefixing generic callback data. Related #54909. Thanks @hnshah and @timt80.
PR #90889 fix: cap session context overrides by model window. Related #39857. Thanks @xdanger.
PR #92830 fix(copilot): strip replayed thinking blocks. Related #81520. Thanks @giodl73-repo and @warcold.
PR #92834 feat(browser): extend --labels overlay to full-page and element captures. Thanks @hxy91819 and @FMLS and @cursoragent.
PR #92836 fix(discord): raise thread title timeout and tokens to fit reasoning models. Thanks @hanamizuki.
PR #92095 fix #92039: [Bug]: WhatsApp login reports success before auth is durably persisted, so Docker rebuilds/upgrades can force relink. Thanks @zhangguiping-xydt and @dinorastoder.
PR #92801 fix(stale): exempt ClawSweeper actionable labels from stale lifecycle (fixes #89564). Thanks @liuhao1024 and @brokemac79.
PR #89736 fix(status): render sub-1000 token counts as plain integers. Related #89735. Thanks @jbetala7 and @vincentkoc.
PR #92792 fix(agents): catch malformed image blocks in sanitizeContentBlocksImages. Thanks @LowCode191 and @vincentkoc.
PR #92555 ci: gate stable releases on Windows companion assets. Thanks @fuller-stack-dev.
PR #91824 fix(agents): add usage guidance to sessions_spawn tool description (fixes #91814). Thanks @zenglingbiao and @vincentkoc and @cattails-lgao.
PR #92840 fix(feishu): await HTTP server shutdown during monitor cleanup. Related #48183. Thanks @alex-xuweilong and @ai-nurmamat.
PR #91632 feat: add tool search directory mode. Thanks @fuller-stack-dev.
PR #92823 fix(qqbot): surface failed media sends. Thanks @zhangguiping-xydt and @vincentkoc.
PR #92849 fix(tailscale): preserve parse errors for malformed JSON. Thanks @franciscomaestre.
PR #92045 Fix diagnostics OTEL runtime install trust. Thanks @efpiva.
PR #92853 fix(acp): accept MCP date protocolVersion in ACP server. Related #56102. Thanks @bugkill3r and @moliveto.
PR #92854 fix(hooks): reject slug-generator error payloads. Thanks @Cypherm.
PR #92855 fix(ui): repair iOS Safari chat viewport handling. Thanks @macdao.
PR #91586 fix(update): continue after package doctor warnings. Thanks @fuller-stack-dev.
PR #92862 fix(feishu): target typing reaction on inbound message. Thanks @huiwen01.
PR #92861 fix(lobster): surface workflow path errors. Related #68101. Thanks @vvitovec and @MPC7500.
PR #69975 fix(cli): clarify --tz help text for offset-less --at values. Related #59456. Thanks @rrrrrredy.
PR #90682 fix(openai): preserve opaque reasoning transcript fields. Related #90093. Thanks @toruvieI and @richardmqq.
PR #92373 fix(anthropic): strip thinking blocks from history when thinking is disabled (fixes #92360). Thanks @liuhao1024 and @notnaji.
PR #87346 fix(anthropic): merge consecutive assistant turns in turn validation. Related #87329. Thanks @Jefsky and @travellingsoldier85.
PR #92896 fix(anthropic): quarantine invalid direct tool schemas. Thanks @vincentkoc.
PR #90739 fix(active-memory): preserve verbose recall summaries. Related #90454. Thanks @brokemac79 and @nocode-ananas.
PR #92558 Simplify QA scorecard mapping shape. Thanks @RomneyDa.
PR #92876 fix(memory-wiki): stop flagging raw source pages as malformed. Thanks @vincentkoc.
PR #92908 fix(providers): quarantine unreadable Anthropic payload tools. Thanks @vincentkoc.
PR #92881 fix(memory): preserve reindex rollback recovery. Thanks @TSHOGX and @vincentkoc.
PR #92921 fix(openai): quarantine unreadable tool schemas. Thanks @vincentkoc.
PR #92550 Fold Telegram RTT sampling into live QA evidence. Thanks @RomneyDa.
PR #92824 fix(media): route OAuth image defaults through Codex. Related #87168. Thanks @bek91.
PR #92928 fix(openai): guard post-hook tool payloads. Thanks @vincentkoc.
PR #92814 fix(feishu): re-resolve route when dynamic agent binding already exists in runtime config (fixes #42837). Thanks @liuhao1024 and @vincentkoc and @cwlong163-afk.
PR #89055 fix: restart gateway after isolated cron setup timeout. Thanks @ghitafilali.
PR #90574 fix(openai): omit gpt-5.5 tool reasoning effort. Thanks @BSG2000.
PR #92941 fix(openai): recover invalid reasoning signatures.
PR #92914 fix(agents): clamp unsupported thinking for subagent spawns instead of hard-failing. Related #92412. Thanks @openperf and @oiGaDio.
PR #92573 fix: preserve config-selected subagent model overrides. Related #92486. Thanks @arkyu2077 and @PatrickTrent.
PR #92852 fix(gateway): fall back to polling when config watcher exhausts inotify retries. Related #92851. Thanks @danbao.
PR #92362 fix(gateway): build row metadata context for single session lists. Thanks @anyech.
PR #92897 fix(memory-wiki): tolerate public artifacts without agent ids. Related #92207. Thanks @yu-xin-c and @qq230849622-a11y.
PR #92002 fix(lmstudio): deliver thinking "off" to binary-thinking models. Related #91913. Thanks @nxmxbbd and @mlaihk.
PR #92738 Forward suppressed-source progress for message-tool channel replies. Thanks @ragesaq.
PR #92916 #92201: Embedded runner: freshly streamed thinking signatures intermittently invalid on replay (Anthropic); recovery wrapper never fires because error text is genericized. Thanks @mmyzwl and @CarlCapital.
PR #90936 fix(agents): do not misclassify client-disconnect abort as run timeout. Related #90764. Thanks @openperf and @reginaldomarcilon.
PR #93009 fix(agents): make wrapToolWithBeforeToolCallHook idempotent to prevent double hook execution (fixes #92973). Thanks @zenglingbiao and @dertbv.
PR #92318 fix(cron): require explicit message target proof. Thanks @hxy91819.
PR #93022 fix(gateway): repair usage cost aggregation across agents. Thanks @luke-skywalker-open-claw and @stablegenius49.
PR #93159 fix(tui): keep parent stdin paused after exit. Thanks @fuller-stack-dev.
PR #93616 Keep key-free web search providers opt-in. Thanks @davemorin and @vincentkoc.
PR #93164 fix(telegram): preserve rich markdown line breaks. Thanks @vincentkoc.
Release verification
npm package: https://www.npmjs.com/package/openclaw/v/2026.6.8-beta.1
registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.6.8-beta.1.tgz
integrity: sha512-m1SHMi+aFaQnlAczgBvUgKA9mgL1Td3WnySoaf8X9Uy5SOLbBzdJ1miBV7NnINTVE+ec6Rb+jfXCGlEspthX/g==
release SHA: 43d00c7724b5b4856ad4055b2dcd21ce6ef61550
npm preflight: https://github.com/openclaw/openclaw/actions/runs/27505699831
full release validation: https://github.com/openclaw/openclaw/actions/runs/27504321919
release publish orchestration: https://github.com/openclaw/openclaw/actions/runs/27513932430 (failed after plugin publish verification; direct OpenClaw npm recovery used)
plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/27514038012 (published; one post-publish metadata verifier failed for @openclaw/llama-cpp-provider readme metadata)
OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/27514298229
postpublish verifier: node --import tsx scripts/openclaw-npm-postpublish-verify.ts 2026.6.8-beta.1 passed
clean npm smoke: npm exec --package [email protected] -- openclaw --version returned OpenClaw 2026.6.8-beta.1 (43d00c7)
ClawHub plugin publish: https://github.com/openclaw/openclaw/actions/runs/27514039764 failed plugin-inspector on packaged transport plugin setupEntry metadata; follow-up required
dependency evidence asset: openclaw-2026.6.8-beta.1-dependency-evidence.zip
npm Telegram beta E2E: https://github.com/openclaw/openclaw/actions/runs/27514468230 (running)
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.