Releases: openclaw/openclaw
Release list
openclaw 2026.7.1-beta.1
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 attachlaunches 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-exitschedule 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_sendreplies 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 listcrashing 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 hand...
openclaw 2026.6.11
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.
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_onlysource-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_queuedirectly in Mattermost to tune active-run queuing, including its mo...
openclaw 2026.6.11-beta.2
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-fileand 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...
openclaw 2026.6.11-beta.1
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-fileand 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, and @yetval.
- 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..ee421ef history: 305 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 ...
openclaw 2026.6.10
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 autoso 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
/thinkmenus 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.2thinking 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-codecapability 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 and Packaging
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 doctordiagnostics 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== - rele...
openclaw 2026.6.10-beta.2
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
openclaw 2026.6.10-beta.1
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 #9...
openclaw 2026.6.9
2026.6.9
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
execas 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.
-...
openclaw 2026.6.9-beta.1
2026.6.9
Highlights
- Richer Telegram delivery: Telegram now sends rich HTML, preserves rich markdown and sticker paths, renders progress drafts and command output more faithfully, and keeps mentions and spooled handlers on the right delivery path. (#93286, #93164, #93124, #93364, #93130, #93088, #93281) Thanks @obviyus, @vincentkoc, @goutamadwant, @kesslerio, @NianJiuZst, @SweetSophia, @Marvinthebored, and @aaajiao.
- 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
execas 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 intentionally npm-only because its ClawHub package name is unavailable. (#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 exclusively from npm. (#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 and skills: add automatic plugin approvals, preserve ClawHub skill provenance, and expose remote-node execution to Codex when a node is connected. (#92625, #93283, #93654) Thanks @kevinslin, @momothemage, @nmccready-tars, @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.
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 fresh usage through compaction, and repair partial JSON/history artifacts. (#92191, #93073, #93009, #93084, #93469) Thanks @ai-hpc, @lml2468, @fuller-stack-dev, @zenglingbiao, @dertbv, @Hollychou924, @leno23, @de1tydev, @425072024, @wuwahe3, @drvoss, and @vincentkoc.
- Channels and replies: fix Telegram rich delivery and ingress recovery, preserve WhatsApp auth and media error reporting, keep Mattermost thread replies intact, and harden Discord action handling. (#93286, #93364, #93281, #93076, #93334, #93424, #93488) Thanks @obviyus, @NianJiuZst, @mcaxtr, @rushindrasinha, @amknight, @lzyyzznl, @darealgege, and @vincentkoc.
- 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, avoid Node-specific npm prefixes, and keep package validation paths reliable. (#93325, #92111, #93650) Thanks @vincentkoc, @yetval, @ofan, and @yaanfpv.
Complete contribution record
This audited record covers the complete v2026.6.8..HEAD~1 history: 375 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(a...
openclaw 2026.6.8
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:
/usageand 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
/btwin 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_senthooks, 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
/modelconfirmation 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 pre...