v2026.6.8
CaviraOSS/LongMemoryv2026.6.8Jun 16, 2026by vincentkoc
AI Summary
This release focuses on enhancing channel delivery capabilities for Telegram and WhatsApp, improving agent reliability and recovery paths, and adding support for new AI models like GLM-5.2 and Claude Haiku 4.5.
Key Highlights
- Richer channel delivery with tables, lists, and preserved line breaks for Telegram, and ACP bindings for WhatsApp.
- Improved agent reliability with better recovery paths for DM sends, auto-replies, and session identity prompts.
- Safer model routing with new GLM-5.2 and Claude Haiku 4.5 catalog support and normalized provider IDs.
- Native usage footer renderer for `/usage` commands with better formatting and limits.
- Predictable web search defaults ensuring key-free providers remain explicit opt-ins.
New Features
- GLM-5.2 and Claude Haiku 4.5 model support
- Telegram rich message rendering (tables, lists, blockquotes)
- WhatsApp ACP binding support
- Usage footer rendering with default templates
- Explicit opt-in configuration for key-free web search providers
Full Release Notes
## 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/openclaw-windows-node@v0.6.3 - 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: https://github.com/openclaw/openclaw/pull/93722