OpenClaw v2026.7.1 Release Notes: Control UI, Mobile Apps, and More

This page details the v2026.7.1 release of OpenClaw, covering major Control UI and onboarding redesigns, mobile app updates, and expanded model support. It is essential for all OpenClaw users and administrators.

OpenClaw v2026.7.1 Release Notes (2026-07-13)

OpenClaw v2026.7.1 delivers significant Control UI and onboarding redesigns, major refreshes of the official iOS, Android, and macOS applications, wider model and provider support including GPT-5.6 compatibility, Tencent Hy3, and Meta Muse Spark 1.1, plus stronger Codex and connected coding-agent workflows. Telegram, Slack, Discord, and Apple Messages all get considerable improvements, alongside enhancements to Gateway crash loops, scheduled work, remote browser control, workspace terminals, sessions, and goals. Numerous general fixes and refinements are also included throughout OpenClaw.

Highlights

Control UI overhaul: chat, sessions, workspaces, and usage

The Control UI functions more like a single browser workspace for conversations and parallel tasks. Chat titles are more descriptive, recent sessions are simpler to locate, pin, group, rename, fork, archive, and mark as read, and multiple sessions can occupy resizable panes that persist after a page reload. Drag-and-drop placement, a more compact Sessions page, and a live Tasks view make moving between active work easier without managing multiple browser tabs.

Chat controls are more straightforward during active work. The composer keeps attachments, model selection, voice, reasoning, send and stop state, and message actions usable across different screen sizes; Talk users can pick or switch a microphone from settings and receive understandable permission guidance on small screens; quoted replies retain the referenced message; and compact tool rows keep inputs, results, images, progress, errors, approvals, and steering accessible without cluttering the conversation.

Usage information is more comprehensible from both status views and the browser. The Usage page compares recent estimated costs and daily figures without requiring repeated reloads or hovering, displays each provider, model, agent, or channel's contribution, and can incorporate provider-reported plans, quotas, balances, budgets, and Anthropic or OpenAI billing details. Seven-, thirty-, and ninety-day charts now show zero-activity days, large all-agent reports limit concurrent work to prevent slowdowns and memory issues, and chat-level context panels and completed-message details reveal the active model, tokens, cache usage, context pressure, and estimated cost.

Mobile pairing, Gateway health, desktop-node approvals, linked GitHub work, workspace files, scheduled jobs, worktrees, Workboard items, and background tasks are now accessible closer to the conversation. Their status, permissions, and next steps are also more obvious.

The rework also reinforces the infrastructure behind those controls. Dashboard connections and reconnections consume less temporary Gateway memory, reducing false pressure warnings, while temporary Gateway restarts and stale assets recover more cleanly. Path-routed Gateways maintain the correct destination and credentials, saved choices survive page refreshes, and authentication, protocol, update, and pairing failures display more helpful next steps instead of leaving the page stuck or unclear.

Responsive layouts keep chat history and controls functional on phones, tablets, short landscape screens, and large desktops. Keyboard and focus behavior, contrast, assistive labels, copying, scrolling, and touch targets are more uniform, while navigation, pairing, voice, schedule, and status text reaches more supported languages.

Sources and contributors

  • New Control UI chats receive concise sidebar titles from their first message, and operators can route dashboard, Telegram topic, and Discord thread title generation through a smaller utilityModel. #87643 Thanks @juliangsm, @zhangguiping-xydt.
  • Paired administrators can create a mobile setup QR or copyable code from Control UI Nodes and use it to connect an official iOS or Android app. #94672 Thanks @bkudiess, @douhualili.
  • Control UI now makes conversations easier to create, find, and switch from a populated session sidebar, while keeping context pressure and provider quota information nearby. #99289 Related #99288.
  • The Control UI sidebar now focuses on sessions and a few default destinations while letting users pin their preferred pages and keep those choices across reloads. #100296
  • The redesigned Control UI composer keeps attachments, provider and model selection, voice, run state, and message actions clearer and more stable across mobile and desktop layouts. #100461 Thanks @fuller-stack-dev.
  • Control UI Talk users can choose and refresh a microphone on narrow screens and read clear permission guidance when browser access is blocked. #101377 Thanks @fuller-stack-dev.
  • Control UI chat can now show multiple resizable sessions side by side or stacked, preserve the pane layout across reloads, and keep the active pane usable on narrow screens. #100754
  • The Control UI now has a live Tasks page where operators can inspect active and recent background work, open its session, refresh details, and cancel queued or running tasks when authorized. #100789
  • Session lists across web and mobile now support pinned and custom groups, shared read and unread status, background-output indicators, transcript forking, and in-place rename, archive, move, and delete actions. #100814
  • The Control UI Sessions page now fits more useful status and actions on a typical screen, with row details opening to reveal labels, tuning controls, and checkpoint history instead of forcing routine sideways scrolling. #100943
  • Control UI users can drag a session directly into the current pane or onto any side to create a split, with a preview showing where it will land. #101191
  • Operators can configure token or full per-reply usage footers once with messages.responseUsage, while users can turn them off or reset a session to the inherited default. #89762 Thanks @marvinthebored, @obviyus, @peetiegonzalez.
  • The Control UI Usage page now makes recent estimated costs, daily values, and each provider, model, agent, or channel's share easier to compare without repeated reloads or hovering. #100432
  • The Usage page now shows provider-reported plans, quotas, reset times, balances, spending, and budgets alongside OpenClaw session analysis, including OpenRouter and Venice coverage. #100520
  • Control UI Usage can now show Anthropic and OpenAI daily spend, tokens, requests, top models, and billing categories for today, seven days, and thirty days when admin credentials are configured. #100672
  • Daily token and cost charts now include zero-activity days across bounded date ranges, so 7-day, 30-day, and 90-day views show the full calendar period instead of shrinking around active days. #81467 Thanks @adapepper.
  • All-agent cost reports on large installations now limit concurrent Gateway work so the dashboard is less likely to slow down, time out, or add memory pressure. #101589 Thanks @vincentkoc, @zw-xysk.
  • Hovering or keyboard-focusing a public GitHub issue or pull request in Control UI chat now previews its status, title, author, activity, comments, and change size without leaving the conversation. #100434
  • File paths in Control UI chats are now clickable, opening a searchable syntax-highlighted preview at the cited line with options to reveal, copy, or open the file in a supported editor. #100679
  • Control UI connection failures now show actionable messages such as "Pairing required" instead of replacing them with a generic gateway disconnect. #54758 Thanks @ruanrrn.
  • Control UI sessions using full verbose output now open tool inputs and results by default, reducing repeated clicks during debugging and review. #74398 Thanks @samrusani.
  • The Control UI context indicator now remains visible with an approximate cached total while a response is active, without using stale data for urgent warnings or the Compact action. #89772 Thanks @bladin.
  • Control UI and WebChat no longer let a non-terminal internal tool failure dominate the transcript with a red error banner after the assistant has already produced a normal final answer. #90122 Thanks @harjothkhara.
  • A default agent selected in the Control UI now remains selected after refresh without saving unrelated unfinished settings. #91457 Thanks @zengwen-dt.
  • Segmented streaming replies in Control UI WebChat now stay under one assistant avatar and footer instead of appearing as several separate responses. #92063 Related #63956. Thanks @contentfree, @harjothkhara.
  • Dashboard WebChat users can right-click a completed message and reply with visible quote context instead of manually copying and formatting it. #92654 Thanks @programmingwtf, @vincentkoc.
  • After an update installs, the Control UI now says when a Gateway restart is already in progress instead of making the Update button appear unresponsive. #93082 Thanks @goutamadwant.
  • Live tool-using replies in Control UI WebChat now keep the assistant's introduction ahead of the tool card, even when browser and Gateway clocks differ. #93184 Thanks @pick-cat.
  • Control UI Quick Create now lets users choose a model for an agent-turn cron job and shows whether existing jobs use that model or the default. #95341 Thanks @ly85206559.
  • Control UI WebChat can now show Codex preamble and commentary while tools are running, with a choice to hide or retain that progress after the final answer. #95708 Thanks @obviyus, @ragesaq.
  • Long reply IDs containing emoji or other supplementary characters now remain valid when shortened for WebChat and Gateway reply directives instead of being cut into malformed text. #96938 Thanks @ly-wang19.
  • Long tool activity details now remain readable when shortened for chat, UI, or logs, even when an emoji or other supplementary character falls at the cutoff. #96958 Thanks @bartok9, @ly-wang19, @vincentkoc.
  • WebChat now shows long provider and model names together with the selected reasoning level in the composer, while narrow screens retain a sensible overflow limit. #96990 Thanks @maweibin, @xiayingren123.
  • Agents can use targetless message.send for progress or intermediate updates in the current WebChat without an explicit destination. #97167 Related #96840. Thanks @mantiscartography, @zhangguiping-xydt.
  • New Control UI chats now use the selected model's current context window instead of inheriting an outdated, smaller limit from a parent session. #97332 Thanks @galiniliev.
  • WebChat stays on the newest reply when assistant audio or video finishes loading, while respecting readers who intentionally scrolled upward. #97575 Thanks @turbotheturtle.
  • Control UI pages for multiple Gateways on one domain now stay connected to the Gateway named by their path instead of reusing a sibling page's saved destination. #97665 Thanks @alix-007.
  • /pair qr now delivers a scannable code in Telegram and Control UI or a readable code in the TUI without storing the one-time setup secret in chat history. #97933 Thanks @joshavant.
  • Expired /pair qr cards in Control UI now clearly say the code is unusable and direct users to generate a fresh one. #98049 Related #98039. Thanks @ooiuuii.
  • When a mobile pairing code expires, instructions now appear explaining how to launch /pair qr again using the chosen language. References: bb4afe4, da9308d, dfaec18, 6b7986e, 21af6e7, 4e62124, 6cd0106, a72a641, a143ae4, cd30b1c, f69e27a, ccddbee, 9ed03df, f84243f, 3d06ee9, 9bd071e, 405b7a5, 1a160ce.
  • Agent runs triggered by channels now display as "in progress" in the Control UI, making it clear that messages from platforms like Weixin are being actively processed. #98257 Thanks @scotthuang.
  • A dedicated scrollbar has been added to the Control UI workspace rail for long Project file lists, keeping files viewable without overflowing the screen. #98646 Related #98566. Thanks @645648406-max, @wuqxuan.
  • Session Workspace file paths can now be copied from Chat even when the Control UI operates over plain HTTP or in environments lacking the standard Clipboard API. #98764 Related #98759. Thanks @adinballew, @zengwen-dt.
  • In tool-heavy Control UI chats, activity rows now use a compact expandable format, reducing space taken by commands and results while keeping full details a single click away. #99763
  • On Mac and desktop browsers, the Control UI remains fixed during trackpad overscroll, while chat threads and lists continue scrolling as expected. #99830
  • Control UI chat readability improves with quieter composer controls, a Faster-to-Smarter reasoning slider, and connection status that no longer competes with persistent version text. #99838 Related #99837.
  • Issues with mounted deep links, Set Default, authenticated avatars, cron alerts, and Workboard scrolling have been corrected across the Control UI. #100106
  • Administrators can now initiate mobile pairing from any Control UI page or Quick Settings; non-admin operators see the action disabled with an explanation of why. #100157
  • The Control UI displays a ready mobile-pairing QR code immediately, even when the pending-device list loads slowly, and adds approval requests as they come in. #100179
  • Users can select and copy tool activity without expanding its row, and failed tools no longer show duplicate error indicators. #100199 Thanks @steipete-oai.
  • The Gateway Dashboard login page now adapts better to phones and short windows, with larger touch targets, easier URL entry, and accessible recovery help. #100208
  • Large session lists in the Control UI can be organized by custom group, channel, kind, agent, or date, with persistent assignments and drag-and-drop management. #100262
  • The Control UI context ring lets users inspect exact context usage, the latest input and output token counts, and the active model without leaving the chat. #100264
  • Images returned by tools like read now appear directly in the Control UI conversation rather than only being described in text. #100295 Thanks @lzyyzznl, @pandah97, @rquinones84.
  • Tool activity in the Control UI now merges matching calls and results into a single consistent row, removes repeated labels and categories, and keeps inputs, outputs, previews, and real errors accessible. #100318
  • The Control UI context panel now shows the latest run's estimated total cost along with input, output, cache-read, and cache-write breakdowns next to the provider and model. #100379
  • The Control UI sidebar now displays all pinned chats alongside nine ordinary recent chats in a more compact, conversation-focused layout for desktop and tablet. #100386
  • The Control UI composer clearly shows reasoning level, keeps Talk and its settings together, and preserves usable model controls on phone and landscape layouts. #100445
  • Control UI Talk now starts from a simpler composer, while administrators can set durable provider, transport, timing, and reasoning defaults in Settings. #100453
  • Temporary Gateway disconnects no longer replace an authenticated Control UI page with the login screen, preserving dashboard context while automatic reconnection continues. #100479
  • The Control UI Cron Jobs page now uses compact summaries, clear status cues, expandable details, and an overflow menu to speed up review of large job lists. #100646
  • The Control UI sidebar now keeps recent chats in place during switching, combines search entry points, supports touch session actions, and reduces unnecessary chrome. #100648
  • Images received through Telegram, iMessage, and other channels now reappear inline when users revisit Control UI chat history after a reload. #100725 Thanks @sweetcornna, @vergissberlin.
  • The Control UI goal pill supports pause, resume, clear, inspection, and edit preparation with live timing and token details; command and TUI users can reword a goal without resetting its budget. #100736
  • The Control UI keeps Overview, Workboard, Agents, and More visible while letting the session list use available height and scroll independently. #100742
  • Assistant documents downloaded from the Control UI now retain recognizable original filenames instead of exposing UUID-suffixed staging names. #100743
  • Copying code from a long Control UI reply now keeps the chat at the same reading position instead of jumping upward. #100807 Thanks @jvlegod.
  • Desktop Control UI users can choose whether Enter sends or inserts a new line, with Command+Enter or Ctrl+Enter as the send shortcut, and the choice is remembered for that Gateway. #100810 Thanks @moomx, @vincentkoc.
  • Switching Control UI chats no longer unexpectedly moves the selected session to the top, and users can choose stable creation order or recently updated order for the sidebar. #100927 Thanks @shakkernerd, @vyctorbrzezowski.
  • Control UI Settings now use consistent /settings/... paths while old bookmarks continue to work, making reloads and links more reliable on hosted or reverse-proxied installations. #100928 Thanks @vyctorbrzezowski.
  • Control UI navigation now places branding, search, and sidebar controls where desktop and mobile users expect them, with clearer active sessions, compact timestamps, and easier terminal access. #101017 Thanks @shakkernerd, @vyctorbrzezowski.
  • The Control UI sidebar collapse control now sits in the sidebar it affects instead of looking like an unrelated topbar or terminal button. #101038
  • Control UI Talk users can choose the system default or any browser-visible microphone beside the Talk button and receive a clear message when a saved device is unavailable. #101100
  • Sidebar session groups can be renamed, removed without deleting sessions, created while empty, or disabled to restore one flat recent-session list. #101117
  • The Control UI now shows Workboard navigation only when Workboard is enabled and presents a cleaner collapsed sidebar with clearer icons and status spacing. #101123
  • The Control UI now puts search, sidebar access, theme choice, and macOS branding in clearer, more predictable locations with accurate screen-reader labels. #101497
  • A full-width banner no longer pushes Control UI content down when Temporary Gateway drops occur; instead, a compact Retry notice appears and the dashboard remains stable. #101812
  • Temporary Gateway disconnects now display a calmer, dashboard-native reconnect pill that retains the same Retry and accessibility behavior. #101844
  • Control UI commentary settings now respect the user's selected language across all supported translations in this release. Sources: 34badde, a9cb866, ce9166d, 6b67ada, 006c2f7, 6bdffa5, b4476ab, 5b5c623, 1520d09, 6140326, 75bd44a, c1aeaf9, 49edc0a, cb69ce7, bb0af61, 0dcfbb0, db73ece, 21e6fc9.
  • The All Sessions sidebar label now uses the chosen language for all supported Control UI translations in this release. Sources: b2c3dc2, 61347a5, a2674b6, bbabad4, 8909289, 22552d6, 96e3615, 452351c, 5e9a62c, 0a9648b, a803589, 7c30ff8, e3d2878, 620f2e3, aa0f36c, c336256, 64dd688, e2ecbc8.
  • The Control UI mobile-pairing flow now appears in the user's selected language across 18 supported locales, rather than mixing localized screens with English setup text. c78b0d5
  • When a Control UI login or Gateway connection fails, the error, recovery steps, and relevant documentation link now appear immediately instead of being hidden in a collapsed panel. f9e194e
  • The web sidebar now consistently fills pinned and overflow navigation routes, ensuring destinations like Worktrees remain accessible. 55a0012 Thanks @vincentkoc.
  • Translated cron overflow-menu and "run if due" labels, including the assistive label for more actions, are now available to non-English Control UI users. 2585d6b
  • The Control UI microphone-access warning for realtime voice input now shows in the user's selected language. 68c85ef
  • After stray merge-conflict text was removed, the Control UI sidebar now builds cleanly, preserving session grouping and drag-to-split behavior. 0e3ce24
  • Hindi and Russian users can now receive matching Control UI translations, and documentation operators can generate those language editions using the existing locale workflow. 689baa5 Thanks @vincentkoc.
  • During device pairing, / pair qr now follows the same authorized pairing flow as /pair qr without initiating an agent turn or disrupting the existing Control UI route. #98262 Thanks @brokemac79.
  • Opening or reconnecting the Control UI dashboard now consumes significantly less temporary Gateway memory, reducing false rss_growth warnings while preserving requested usage totals. #100054 Thanks @nianjiuzst.
  • Control UI Settings now displays a remote Gateway's host identity, address, operating system, runtime, uptime, CPU load, memory, and free disk space without requiring SSH. #100478
  • The Control UI now shows execution approvals for supported desktop nodes and rejects pending, unsupported, or policy-blocked requests before they reach the node. #100505 Thanks @vincentkoc.
  • A configured ui.seamColor now changes Control UI buttons, highlights, selections, and focus rings, while invalid values fall back cleanly. #93699 Thanks @dennis-lynch, @goutamadwant.
  • QR codes and other half-block text art in the Control UI now preserve spacing, scroll when needed, and copy with enough padding to remain usable. #93869 Thanks @emg110, @vincentkoc.
  • After a service-worker update, open Control UI tabs now switch to the active build, reducing stale JavaScript, CSS, and protocol mismatch errors after upgrades. #96141 Thanks @andrewccctechlink, @brokemac79.
  • Chat clients can now match each pending user message to its exact Gateway-confirmed message, reducing duplicate or mismatched bubbles during interleaved turns. #96273 Thanks @datus1982, @wyf027.
  • Clicking a cron job's History button now provides immediate feedback and scrolls directly to that job's updated run history. #96281 Thanks @wyf027, @yzhong52.
  • Token counts in the UI that approach one million now appear as 1.0M instead of the unclear 1000k. #96298 Thanks @ly-wang19.
  • Near-million token amounts in Usage Mosaic and usage summaries are now shown as 1.0M rather than 1000.0K. #96450 Thanks @ly-wang19.
  • Voice, Model, and Sensitivity controls within Control UI Talk settings are now arranged in a single consistent row, with duplicate selected-value text no longer disrupting the layout. #96925 Thanks @evan-ym.
  • Approval prompts in Control UI no longer carry over failures from earlier requests or re-enable controls while the current decision is still being processed. #98394 Thanks @haruaiclone-droid.
  • When an incompatible Gateway protocol is detected, Control UI stops retrying and displays the update or reload instructions required to reconnect. #98414 Thanks @haruaiclone-droid.
  • On mobile devices and other short landscape screens, the Control UI composer scrolls within a confined area, keeping chat history and all composing controls accessible. #98683 Related #98615. Thanks @jin-li, @qingminglong.
  • After a temporary load failure during a Gateway restart or stale-asset transition, Control UI now retries automatically rather than staying stuck until the user manually refreshes. #99111 Thanks @zengwen-dt.
  • Large pasted PNG screenshots can now be sent through Control UI webchat without failing during attachment processing. #99213 Thanks @jincheng-xydt, @vincentkoc.
  • The Control UI mobile-pairing flow is now fully localized for Hindi and Russian users, covering everything from setup-code creation to pending-device management. #100040
  • The Control UI workspace rail now sits flush with the window edge and takes up less space when collapsed, removing the empty strip without overlapping the chat area. #100088
  • Chat history in Control UI now hides only exact duplicate final delivery mirrors, leaving legitimate repeated sends, forwards, and distinct replies visible. #100136
  • Control UI chats now maintain consistent spacing above the first message across phones, standard desktops, and tall windows. #100144 Thanks @steipete-oai.
  • Control UI Settings now includes a persistent Simple/Advanced toggle, cleaner Appearance controls, and a Pending label that appears only when a Context Profile change is actually staged. #100147
  • Tool-call bubbles and error badges in Control UI now share clean right-edge alignment, making failed activity easier to scan on both phone-sized and desktop chats. #100163 Thanks @steipete-oai.
  • OpenAI users now see only the supported Standard and Fast options in the Control UI speed picker, with inherited Fast mode displayed correctly. #100190
  • Short drafts in the Control UI composer no longer show an unnecessary scrollbar gutter, while long drafts still scroll when needed. #100252
  • Clearing a session label now removes the old name promptly from other subscribed Control UI clients without requiring a full refresh. #100266
  • Desktop Control UI users can hover over a shortened recent-session name to reveal its hidden tail, making it easier to distinguish similar conversations without opening each one. #100276
  • The expanded Control UI sidebar no longer repeats provider quota information already available in chat, Overview, and Usage views. #100356 Thanks @shakkernerd.
  • Completed Control UI messages now use the timestamp to open token, cache, context, cost, and model details instead of adding a separate Context control to every footer. #100391 Thanks @steipete-oai.
  • Autonomous session history now keeps an earlier failed cron or scheduled turn marked as an error even after a later turn succeeds or the page reloads. #100514 Thanks @qingminglong.
  • The Control UI Skills page now shows readable Agent and Search labels with aligned filters and correctly sized selection controls. #100526 Thanks @evan-ym.
  • After a Control UI reply finishes, the composer now stays on Send despite delayed completed-run state, while a real new run still switches it to Stop. #100527 Thanks @tiffanychum.
  • File previews in Control UI and Skill Workshop now show a single Escape shortcut hint while retaining Escape-to-close behavior. #100528 Thanks @xianshishan.
  • Expanded Control UI tool activity no longer repeats the tool name and icon, making completed and in-progress calls quicker to scan. #100606
  • Clearing a Control UI session model override now shows the selected agent's own default model rather than the unrelated global default. #100719 Thanks @hyspacex.
  • Assistant-sent documents in WebChat now download with their original server-provided filename, including Unicode names, instead of opening as an unnamed browser document. #100728 Thanks @lptrichor.
  • Control UI now accepts /steer guidance during an active run instead of incorrectly replying No active run. #100803 Thanks @hackerismydream.
  • New Control UI sessions now stay visible at the front of the sidebar after users switch to another chat, without requiring a page refresh. #100981 Thanks @shakkernerd.
  • Worktrees management now lives under Control UI Settings instead of occupying a top-level sidebar item, while existing deep links remain valid. #100995
  • Long /btw answers in the desktop Control UI now stay within the browser window and scroll inside the result card, while mobile retains full-card scrolling. #101169 Thanks @snoutfirst.
  • Finished chats no longer remain stuck with a busy spinner in the Control UI sidebar, even when an older Gateway update arrives afterward. #101293 Thanks @fuller-stack-dev.
  • Large Skill Workshop support files now scroll, switch, filter, wrap, and copy without freezing or severely slowing the Control UI. #101319 Thanks @shakkernerd, @xianshishan.
  • Users can stay signed in to multiple path- or query-routed Control UI gateways on one HTTPS origin without one gateway overwriting another's device token. #101352 Thanks @fuller-stack-dev.
  • Control UI users can type /approve to release a waiting exec prompt without the decision getting queued behind the blocked chat run. #101532 Thanks @vincentkoc.
  • Control UI build errors now keep emoji and other supplementary characters intact when command output is shortened for display. #101591 Thanks @maweibin.
  • Workboard cards can now be edited, moved, archived, stopped, opened, or deleted directly from the detail drawer, while read-only viewers still see no mutation controls. #101658 Thanks @momothemage, @princebansal.
  • The Control UI microphone button is now visually quieter while idle and more distinct while recording, making the current voice state easier to recognize. #101843
  • Users with saved working dashboard credentials no longer see the login screen flash briefly while Control UI reconnects. #101849
  • Typing anywhere in the active Control UI chat now places the first character in the message composer without stealing input from the command palette. #102210 Thanks @shakkernerd.

Easier setup from install to first chat

Onboarding now provides clearer paths to a usable first chat. Fresh CLI installs enter guided setup, configured installs open the TUI, and conversational Crestodian setup remains optional. Android and macOS guide users through pairing, permissions, local or remote setup, and recovery; macOS can also test detected Claude Code, Codex, Gemini CLI, API-key, and supported provider-catalog choices before saving them. Interrupted authentication or channel setup retains earlier choices, while users without a working model are guided through credential and model selection instead of being sent into an unusable chat. Owners and administrators can also renew an expired Codex or OpenAI login through private Telegram, Web UI, Discord, or Slack commands without SSH access.

Existing installations receive safeguards before their working state is changed. Doctor and updates refuse to replace an unreadable configuration, Doctor preserves model tuning while merging retired entries, and extended-stable updates retain the selected release channel. Container upgrades complete migrations and plugin repairs before reporting readiness, and unsafe runtimes are stopped before they can open OpenClaw state databases.

Sources and contributors

  • When openclaw doctor and its updates encounter an unreadable openclaw.json, they no longer replace it, thereby safeguarding current Gateway, agent, channel, and plugin configurations instead of disrupting the installation. #96469 Credit to @obviyus and @yetval.
  • openclaw doctor --fix now retains aliases, parameters, streaming preferences, runtime configurations, and other model adjustments when several deprecated model names converge into one active model, and it accurately reports any merge conflicts. #96544 Thanks @vincentkoc and @yetval.
  • Through private Telegram, Web UI, Discord, or Slack commands, owners and admins can now renew an expired Codex or OpenAI login from a browser without needing SSH access. #98006 Thanks @100yenadmin, @jalehman, and @obviyus.
  • For new installations, the CLI walks through setup, opens configured installs straight into the TUI, keeps existing choices on subsequent runs, and ends onboarding in a usable terminal chat. #98218 Thanks @fuller-stack-dev.
  • Android users new to the platform now experience a guided first-run sequence involving setup-code or QR entry, Gateway pairing, node approval, permissions, recovery steps, and confirmed phone readiness before onboarding finishes. #98752 Thanks @jesse-merhi.
  • Mac users new to the platform can now launch the app and get a functional local agent without Terminal, Homebrew, administrator privileges, or an extra approval prompt for the app's own node. #99767 Related #99764.
  • Package installations can now choose and keep openclaw update --channel extended-stable, verify its availability, and fail gracefully if its npm metadata is incomplete. #99811 Thanks @kevinslin.
  • Fresh installations can now complete conversational Crestodian setup, approve the proposed plan once, connect channels, and proceed into the normal agent while classic and scripted onboarding remain available. #99935
  • On macOS, onboarding now verifies the chosen AI connection before the first chat, shows clearer local and remote setup options, and provides friendly recovery or a verified manual API-key path when authentication fails. #100288
  • First-time onboarding now keeps earlier choices after authentication or pairing issues and gives users an actionable model-configuration next step instead of opening an unusable first chat. #100632
  • macOS onboarding now presents the Gateway's supported text-inference provider catalog instead of only Anthropic, OpenAI, and Google, and tests credentials before saving them. #101132
  • Container upgrades now complete required migrations and plugin repairs before reporting the Gateway as ready, and failed repairs stop with actionable guidance instead of leaving a false-green service. #101881 Thanks @sallyom.
  • Crestodian setup now guides users without a usable model provider through masked credential entry and model selection, while deterministic setup and repair commands remain available until inference is configured. #101887 Thanks @fuller-stack-dev.
  • OpenClaw now blocks unsafe runtimes before they can open SQLite-backed state, guides legacy Bun services to Node, and selects a WAL-safe Node runtime during setup and repair. #106065 Thanks @vincentkoc.

Official apps

The official iOS, Android, and macOS apps received major updates across setup, navigation, chat, voice, Apple Watch, permissions, localization, files, scheduled work, native session controls, and Gateway recovery. Recent conversations stay useful through temporary disconnects: cached sessions and transcripts remain available for reading, supported text sends can wait for reconnection in the correct chat, and long conversations are easier to resume without losing the current place or mistaking an offline view for live history.

These improvements also bring the native clients closer together. Mobile queues survive app restarts, the macOS app gains fuller session and transcript tools, and each client refreshes the same conversation when the Gateway returns.

Shared app improvements

Sources and contributors

  • iOS and Android chats now keep the reader's scroll position as new messages and tool activity arrive, with a clear way to return to the latest reply. #98258 Related #98255. Thanks @christopheraaronhogg.

iOS, iPadOS, and Apple Watch

Sources and contributors

  • iPhone and iPad chat now opens with the last known conversation and lets users browse recent cached sessions while the Gateway is unavailable. #100219
  • iOS users can queue chat messages while disconnected, keep them through app restarts, and send them in order after reconnection with clear retry and delete controls. #100331
  • Apple Watch users can dictate a message and hear OpenClaw's final reply on the Watch, with separate silent-send, cancel, and stop controls. #100283

Android

Sources and contributors

  • Android chat now shows the last known transcript immediately and keeps recent cached conversations readable during a Gateway outage, then refreshes them after reconnection. #100227
  • Android users can queue text while the Gateway is offline, keep it through an app restart, and send it in order after reconnection with Retry and Delete controls for failures. #100290

macOS

Sources and contributors

  • Mac chat now restores recent sessions and transcripts immediately, remains browsable while disconnected, and queues offline sends for the correct Gateway identity. #100275
  • The native macOS chat window now provides a full session sidebar, real new-session creation, slash-command completion, context and cost visibility, message copying, transcript export, and compact or clear-history actions. #101103

Models and providers

OpenClaw model selection expands across major hosted, managed, and local choices. Each supported provider route retains its own authentication, model limits, reasoning controls, tool behavior, image support, and usage reporting.

GPT-5.6 and Codex

Organizations with GPT-5.6 preview access can select Sol, Terra, or Luna through supported OpenAI and Codex routes with the expected context metadata, text and image input, reasoning levels, and cache-write accounting when OpenAI supplies it. Fresh OpenAI API-key and ChatGPT/Codex setups choose their intended GPT-5.6 defaults without replacing an explicit model choice. Supported Ultra choices remain aligned across OpenClaw and native Codex, and Codex supervision records native Codex child agents as tasks and returns their results to the parent.

Tencent Hy3

Tencent Hunyuan Hy3 now has a complete setup path through TokenHub or TokenPlan, including first-class authentication choices, CLI onboarding, model discovery, and configuration validation. Existing TokenHub configurations retain access to hy3-preview alongside the stable hy3 model.

Meta Model API and Muse Spark 1.1

Operators can configure Meta Model API with MODEL_API_KEY or the onboarding authentication choice, select meta-model-api/muse-spark-1.1, and use supported streaming, tool calling, image input, and reasoning-effort controls.

Claude models

Claude Sonnet 5 is selectable through direct Anthropic, Claude CLI, supported Vertex regions, Bedrock inference profiles, and Bedrock Mantle with its documented context, output, image, thinking, and pricing behavior. Users with Claude Mythos 5 access can select it through supported Anthropic-family routes with its required context, output, adaptive-thinking, caching, and replay behavior.

Other provider routes

Copilot sessions can explicitly use supported custom OpenAI, Azure OpenAI, Ollama-compatible, or Anthropic providers and start a compatible session when connection or credential settings change. Paired computers can run short tasks on eligible local Ollama models, while ClawRouter can expose the models granted to one managed key and report their usage and budget. Users can also claim active promotional models without replacing existing defaults, install LongCat-2.0 through its official provider, and continue Gemini latest tool-calling conversations across both supported Google transports.

Sources and contributors

  • Copilot sessions now support selecting custom OpenAI, Azure OpenAI, Ollama-compatible, or Anthropic providers explicitly. When the model, endpoint, credentials, headers, or token limits change, these sessions restart cleanly. #96345 Thanks @vincentkoc.
  • Users of GPT-5.6 can consistently pick supported Ultra modes, keep model and thinking preferences synchronized across OpenClaw surfaces, and get native Codex child-agent results delivered as tracked tasks. #98021 Thanks @anyech.
  • Claude Sonnet 5 is now available for selection across Anthropic, Claude CLI, supported Vertex regions, Bedrock inference profiles, and Bedrock Mantle. It behaves according to its documented context, output, image, thinking, and pricing specifications. #98254 Thanks @vortexopenclaw.
  • Organizations with preview access to GPT-5.6 can select Sol, Terra, or Luna across supported OpenAI and Codex paths. These selections include correct reasoning controls, context metadata, and cache-write accounting. #98333 Related #98296. Thanks @steipete-oai.
  • Tencent Hunyuan Hy3 now has a full supported setup path in OpenClaw via TokenHub or TokenPlan. This includes first-class authentication, model discovery, configuration validation, CLI onboarding, and compatibility for existing hy3-preview setups. #99076 Thanks @moncac.
  • OpenClaw agents can now run short tasks on chat-capable Ollama models installed on paired macOS, Linux, or Windows nodes. A separate control exists to disable node inference. #99234 Related #99228.
  • A single CLAWROUTER_API_KEY can now expose only its granted models across supported transports. In normal status views, it shows managed requests, tokens, spend, and monthly budget. #99658 Related #99657.
  • Users can discover active promotional models and claim them with openclaw promos claim <slug> without rerunning onboarding or unexpectedly replacing existing defaults and credentials. #100236 Thanks @fuller-stack-dev.
  • Hosted LongCat-2.0 can now be installed through the official LongCat plugin, configured with LONGCAT_API_KEY during onboarding, and selected as longcat/LongCat-2.0 for multi-turn tool use. #100501 Thanks @vincentkoc.
  • Gemini latest aliases now continue tool-calling conversations across both supported Google transports. Previously, they stopped with a missing-thought-signature HTTP 400 error. #100605 Thanks @chenxiaoyu209, @guarismo.
  • Users with access to Claude Mythos 5 can select it through Anthropic, Anthropic Vertex, Amazon Bedrock, or Bedrock Mantle. It provides the required context, output, thinking, caching, and replay behavior. #101238 Thanks @vincentkoc.
  • OpenClaw now supports Meta Model API setup and the Muse Spark 1.1 model. This includes streaming, tool calling, image input, and supported reasoning controls. #102873 Thanks @davemorin, @hamidshojanazeri, @jalehman, @solvely-colin.
  • Legacy-state upgrades no longer stall repeatedly. Fresh OpenAI and ChatGPT/Codex setups now select the intended GPT-5.6 defaults and use supported temperature and tool-call behavior. #104656 Thanks @bdjben, @obviyus, @sallyom.

Codex and connected coding agents

OpenClaw now integrates more smoothly with coding agents that exist outside the current chat. openclaw attach can open Claude Code against the main or a selected Gateway session using temporary, revocable access instead of process-wide credentials. Codex app-server sessions can resume, delegate to native subagents, and return their results as tracked work. Copilot sessions can use explicitly selected custom providers and restart when their connection settings change.

The surrounding session workflow is also more resilient. Important conversations can be pinned, renamed, archived, restored, and monitored as ongoing work. Active goals remain part of working memory across later turns, compaction, queues, and interruptions.

Sources and contributors

  • External tools can now receive session-scoped Gateway access without process-wide credentials or permission to impersonate another session. This forms the secure base for openclaw attach. #96351 Thanks @anagnorisis2peripeteia, @obviyus.
  • openclaw attach now launches Claude Code with temporary access to the main or selected Gateway session. It keeps credentials out of arguments and revokes the grant when the session ends. #96454 Thanks @anagnorisis2peripeteia, @obviyus.
  • GPT-5.6 users can now consistently select supported Ultra modes, keep model and thinking choices aligned across OpenClaw surfaces, and receive native Codex child-agent results as tracked tasks. #98021 Thanks @anyech.
  • Codex app-server agents can again list allowed agents, spawn OpenClaw or connected subagents, and yield during delegated work without resumed heartbeats hitting incompatible tool definitions. #99561 Related #99464. Thanks @100yenadmin, @joshavant.
  • Codex-native delegation from OpenClaw threads now creates native task records again. Unsupported custom Codex app-server versions fail startup with a clear minimum-version error. #101221
  • Copilot sessions can now use explicitly selected custom OpenAI, Azure OpenAI, Ollama-compatible, or Anthropic providers and restart cleanly when model, endpoint, credentials, headers, or token limits change. #96345 Thanks @vincentkoc.
  • Sessions can now be pinned, archived without losing transcripts, restored, renamed from chat surfaces, and monitored for active runs as durable conversation threads. #98510 Thanks @maziyang2.
  • An active /goal now keeps guiding later turns and survives compaction, queues, and interruptions until the goal is paused, completed, blocked, or limited. #100468

Telegram

Telegram received broad work across live progress, media, documents, topics, commands, retries, account routing, setup, and delivery. Albums reach the model with every available image, long replies remain easier to follow while they run, and temporary conflicts or network failures are less likely to block later messages or create duplicates.

Messages and actions also stay with the intended bot, topic, and conversation more consistently. Setup and account-health problems provide clearer ways to recover.

Sources and contributors

  • Telegram photo albums now give the model every successfully downloaded image in order instead of only one photo and unusable file references. Failed items are omitted. #97045 Thanks @nianjiuzst, @obviyus.
  • Telegram's live progress view now keeps reasoning, commentary, formatting, and tool activity readable and stable. It then leaves a concise completion summary instead of disappearing. #98907 Thanks @marvinthebored, @peetiegonzalez.
  • Telegram users should see fewer failed final replies or bot delivery sends during flaky network handshakes. This does not increase duplicate-message risk for failures that may have happened after a request was sent. #101258 Thanks @lzw112.

Signal

Signal replies can now quote the message that triggered them, making busy conversations easier to follow. Friendly aliases such as signal:me or signal:ops also make repeat contacts and groups easier to address without reusing raw identifiers.

Sources and contributors

  • Signal auto-replies now quote the message that triggered them, making responses easier to follow in groups and busy conversations. #95718 Thanks @jesse-merhi.
  • Signal users can assign stable names such as signal:me or signal:ops to repeat contacts and groups instead of reusing raw phone numbers, UUIDs, or IDs. #95738 Thanks @jesse-merhi.

Slack

Slack threads retain their conversation history more consistently. Interactive cards and progress stay in the right place. Accepted replies are less likely to be repeated after an uncertain confirmation. Long-running conversations also avoid more unnecessary waits before reaching the agent.

Sources and contributors

  • Slack replies stay attached to the root thread's session history instead of accumulating separate, nearly empty child sessions. #97168 Related #96535. Thanks @gorkem2020, @liuwqgit.
  • When Slack accepts a reply but the confirmation is lost, OpenClaw can verify the existing post and avoid sending a duplicate. #97480 Thanks @joeyfrasier.

Discord

Discord improves reply visibility, attachments, voice sessions, progress, reconnects, and multi-account behavior. Completed replies produce more useful unread cues. Brief Gateway reconnects are less likely to lose outbound messages. Repeated session-resume failures can recover without taking the whole Gateway down.

Sources and contributors

  • When a user leaves a channel, partial Discord replies that were completed now arrive as new messages and can trigger standard unread indicators. #99711 Thanks @davelutztx.
  • Discord replies, cron reports, and other outbound messages are less prone to vanishing during a short Gateway reconnect, without needing to replay chunks or media already acknowledged by Discord. #100896 Thanks @tiffanychum.
  • Discord bots can now recover in place after repeated session-resume rejection, cutting down on extended outages, lost replies, and full Gateway restarts. #103596

WhatsApp

WhatsApp reconnections and overlapping replies are less likely to lose, skip, or misorder messages. Accounts that have been logged out remain stopped until deliberately reconnected, while accepted messages and completed replies continue more reliably through brief connection changes.

Sources and contributors

  • WhatsApp accounts that have been logged out or replaced now stay stopped until reconnection, rather than entering repeated restart loops that can waste resources and slow down other accounts. #78511 Thanks @openperf.
  • Eligible WhatsApp messages received during a brief reconnect now reach OpenClaw for an automatic reply instead of being marked as read and silently discarded. #80642 Thanks @vishalj99.
  • Concurrent WhatsApp Web replies, media, reactions, and queued messages now send one at a time per account, cutting down on interference and unpredictable delivery order. #99050 Thanks @ooiuuii.
  • Completed WhatsApp replies continue delivering when another message arrives mid-delivery, so overlapping conversations are less likely to go unexpectedly silent. #100205

Apple Messages

Apple Messages gets broader improvements to replies, typing, media, routing, setup guidance, and chat continuity. Remote Mac attachments can reach the active conversation through a usable local path, replies work in more bridge setups, and ordinary message text is less likely to be mistaken for internal role markers.

Sources and contributors

  • Photos bridged from a remote iMessage Mac to a separate Gateway host now arrive in Codex conversations through a readable local path rather than a Mac-only filename. #91803 Thanks @turbotheturtle.
  • AppleScript-only and bot-user or SSH iMessage setups now deliver replies even when threading is unavailable, and database changes no longer leave inbound messages hidden behind stale recovery state. #100446 Thanks @omarshahine.
  • Direct iMessage chats using the imsg private API bridge now show typing as soon as a slow turn is accepted, without waiting for a read receipt. #95621 Thanks @omarshahine.
  • iMessage replies no longer lose ordinary sentence text that happens to end with user:, system:, or assistant:. #96392 Thanks @ly-wang19.

Crash loops now stop for repair

A supervised Gateway that repeatedly fails during startup now leaves operators a stable restart and recovery process to inspect and repair. Instead of relaunching forever, the control path remains available while automatic channel and provider restarts pause until the underlying problem is fixed.

Sources and contributors

  • A repeatedly crashing supervised Gateway now leaves a stable control process available for inspection and repair instead of trapping operators in a restart loop. a18708c Thanks @obviyus.

Scheduled work, remote browser control, and workspace terminals

Scheduled work can wake when a command finishes or a watched condition changes, remote browser control can pair selected signed-in tabs and save completed downloads safely, and guarded workspace terminals are available across web and mobile.

Scheduled work that wakes only when needed

Scheduled jobs can react when an external command finishes or a watched condition changes, so the full agent runs only when there is something new to handle. Reapplying the same declaration updates the intended job in place, preserving identity and history instead of creating duplicate schedules.

Sources and contributors

  • A cron job can now watch a build, deploy, script, or other command and resume the originating workflow with its exit code and recent output when it finishes. #92037 Thanks @anagnorisis2peripeteia.
  • Cron declarations can now be safely reapplied without duplicate jobs or lost history, while ownership, next run, latest result, delivery, and failure notifications are easier to inspect. #100480
  • Cron jobs can now watch an outside condition and run their real payload only when that state changes, avoiding full agent wakeups on unchanged polls. #101195

Remote browser pairing and downloads

Browser control is easier to use across machines: operators can pair the bundled Chrome extension with a remote Gateway, share only selected signed-in tabs, diagnose Windows and WSL2 connection details, and revoke access by removing a tab from the OpenClaw group. Agents can also wait for delayed downloads and save the finished file to a guarded local path with its final URL and suggested name.

Sources and contributors

  • Windows and WSL2 users now get IPv4 and IPv6 checks plus the matching portproxy guidance needed to restore Chrome browser control without broadening CDP exposure. #100590 Thanks @owlock, @zengwen-dt.
  • The bundled Chrome extension now lets users control selected signed-in tabs from a phone or another channel without someone approving remote debugging at the desktop, and removing a tab revokes access. #100619
  • Remote Gateway users can pair the bundled Chrome extension from another browser machine with openclaw browser extension pair --gateway-url wss://..., without installing OpenClaw or Node.js there or opening an inbound port. #101127
  • Agents can now save a browser download to a chosen guarded path or wait for a delayed export, receiving the final URL, filename, and local path. #101369 Thanks @grd-chang.

Workspace terminals in web and mobile

Authenticated operators can open a guarded workspace terminal from the Control UI, iOS, or Android without leaving the current workspace. Sessions use the selected agent's workspace and configured shell, can be disabled by policy, and follow the Gateway protocol controls for ownership and connection state. Browser terminals can dock, resize, and run side by side, while iOS and Android provide focused entry points with clear connection guidance.

Same-release browser hardening completes the capability: terminals can reattach after reloads, sleep, or brief network drops and replay recent output; newly enabled support appears without a manual refresh; and closing, reopening, theming, cursor focus, prompt glyphs, and new-tab controls remain usable through repeated sessions.

Sources and contributors

  • Authenticated admins can open an interactive terminal in an agent workspace from Gateway-backed controls, while fully sandboxed agents remain blocked and the feature can be disabled with gateway.terminal.enabled. f083f35
  • Control UI admins can now keep chat, session controls, and live shells together by opening multiple dockable, resizable terminal tabs inside the browser workspace. ec72de4
  • iOS users can open Terminal directly from the Control hub, see a Gateway setup prompt when disconnected, and keep active shell sessions running through unrelated screen updates. 211e0d7
  • Android users can open an agent-workspace shell from Settings > Terminal, with clear connection guidance and Gateway credentials passed without placing the token in the URL when supported. fcd7eb6
  • Opt-in Control UI terminal sessions can now survive page reloads, sleep, and brief network drops, letting operators reattach and replay recent output instead of losing running commands. #100089
  • Opening a new Control UI terminal after closing the final tab now starts with a blank fresh shell instead of restoring the closed terminal output. #100665
  • Control UI terminal tabs now close cleanly while opening, follow theme changes, and reopen at a usable size instead of leaving hidden sessions, stale colors, or unreachable controls. 2399ce7
  • An already-open Control UI page now notices when terminal support is enabled and makes the terminal available without requiring a manual refresh. 3f976f9
  • Opening a new Control UI terminal tab after closing another no longer inherits an old exited state. 3c03389
  • The Control UI terminal no longer crashes when its web component is loaded more than once in a shared browser registry. f2e5159
  • Control UI terminals now use installed Nerd Font fallbacks so supported prompt and listing icons render as glyphs instead of placeholder boxes. #100128
  • The Control UI integrated terminal now shows one cursor instead of overlapping Chrome and terminal carets, making focus and typing state clearer. #100240
  • The Control UI terminal's new-session button now aligns with the surrounding tabs for a cleaner, easier-to-scan tab bar. #100256

More channel improvements

More fixes across messaging channels

Across workspace, mobile, and community channels, replies and media now remain linked to the correct conversation with greater reliability. Albums, progress, retries, topics, routing, and delivery are managed by Telegram with fewer instances of dropped, duplicated, outdated, or difficult-to-read outcomes.

Discord, Slack, WhatsApp, Apple Messages, and any other enabled channels now provide improved handling for commands, threads, attachments, proxies, and recovery. Within this category, the Apple Messages configuration and message delivery routes maintain the conversational context that users anticipate, without revealing the underlying routing mechanics.

Sources and contributors

  • Telegram photo albums now present every successfully fetched image to the model in sequence, rather than providing just one photo alongside unusable file references; failed items are excluded. #97045 Thanks @nianjiuzst, @obviyus.
  • Telegram's live progress view now keeps reasoning, commentary, formatting, and tool activity readable and stable, then leaves a brief completion summary instead of vanishing. #98907 Thanks @marvinthebored, @peetiegonzalez.
  • Slack channels can maintain ambient OpenClaw participation while the opt-in ignoreOtherMentions setting prevents replies to conversations directed at another person or group, preserving that conversation as context for a later bot mention. #53467 Thanks @hanamizuki.
  • Slack operators using multiple Gateways through a single Socket Mode app now get a startup warning that explains why events might reach another connection and how to pick a safer deployment configuration. #79938 Thanks @jeffvsutherland.
  • Discord message reads and searches now correctly decode raw compressed responses and return clear errors for unexpected data, instead of producing garbled output or opaque failures. #80788 Thanks @jbetala7.
  • Slack operators can now choose off, first, all, or batched reply threading per channel, with automatic replies and message tools following the same effective choice. #82253
  • Slack button and select interactions now stay in the correct assistant thread and show a working status there until the follow-up turn finishes. #82895 Thanks @wukongai-cmu.
  • Discord tool-only replies no longer leave overlapping typing refreshes that suggest another answer is still coming, while explicitly configured typing behavior remains unchanged. #84288 Thanks @dr00-eth.
  • Scheduled and heartbeat-driven Slack messages now use the configured agent name and icon, with a graceful fallback to the app identity when Slack rejects customization. #84335 Thanks @rohang2005.
  • Longer Slack assistant-thread replies now show changing progress notes so users can tell OpenClaw is still working. #85507 Thanks @emergentash.
  • Multiple Discord bot accounts in one server now keep independent voice sessions, and configured voice auto-join works even when Discord becomes ready before voice startup completes. #87530 Thanks @geekhuashan.
  • When a Discord voice-note reply fails, users now receive the assistant's answer as a threaded text fallback without duplicating text that was already delivered. #89962 Thanks @danhayman.
  • Discord's clear-all reactions action now returns a real error if any bot reaction remains instead of claiming complete success. #90038 Thanks @masatohoshino.
  • Checking a Discord member who is not in voice now reports them as disconnected instead of raising a misleading command or gateway failure. #90969 Thanks @asock.
  • Discord REST calls now fail with a clear error when a response is oversized or stalls instead of risking unbounded memory use and process instability. #95412 Thanks @alix-007.
  • Slack presentation messages now arrive as native Block Kit cards with working headers, controls, and receipts instead of flattened plain text. #95463 Thanks @zoowh.
  • Discord now shows enabled Anthropic reasoning, notes, and tool activity in the right order with accurate counters and nonblank summaries. #96106 Thanks @marvinthebored, @obviyus, @peetiegonzalez.
  • Adding a named Discord account no longer knocks a SecretRef-backed default account offline or into a restart loop. #96401 Thanks @849261680.
  • Slack rich-text block actions can now include emoji near the preview limit without producing malformed interaction text or downstream encoding failures. #96577 Thanks @llagy007, @weeli-009.
  • The first Slack reply after a daily or idle reset can reuse recent thread history, so the conversation does not suddenly start from scratch. #97100 Thanks @bek91.
  • Slack replies stay attached to the root thread's session history instead of accumulating separate, nearly empty child sessions. #97168 Related #96535. Thanks @gorkem2020, @liuwqgit.
  • Discord account health checks now fail safely on oversized identity responses instead of risking a Gateway crash or out-of-memory failure. #97278 Thanks @hugenshen.
  • Slack replies no longer expose internal tool-failure banners, reasoning scaffolding, or tool-call markup to users. #97367 Thanks @masatoshino.
  • When Slack accepts a reply but the confirmation is lost, OpenClaw can verify the existing post and avoid sending a duplicate. #97480 Thanks @joeyfrasier.
  • Discord message, thread-history, and attachment requests now reject oversized successful responses before they can drive excessive Gateway memory growth. #97693 Thanks @alix-007.
  • Discord PluralKit lookups and voice-upload setup now stop unexpectedly large JSON responses before they can exhaust memory. #97706 Thanks @cxbasdev.
  • Discord voice conversations in stt-tts mode now retain earlier spoken context across turns instead of starting over after each reply. #97746 Thanks @karabaralex, @sanjays2402.
  • Malformed successful Discord responses now fail with endpoint-specific context instead of surfacing a raw parser error or crashing OpenClaw. #97889 Thanks @lsr911.
  • An oversized Discord gateway metadata response now logs a bounded error and falls back to Discord's default gateway URL instead of risking a Gateway crash. #98682 Thanks @wings1029.
  • Discord deployments in restricted networks can now route Gateway and REST traffic through an explicitly configured DNS or private HTTP(S) proxy without opening broad direct HTTPS egress. #99126 Related #98266. Thanks @joshavant, @sallyom, @svuppala2006.
  • Discord users now receive the reply text and a clear notice when an attachment is too large instead of seeing the completed response disappear. #99577 Thanks @lin-hongkuan.
  • Slack replies now retry after a temporary session-start conflict instead of stopping before the expected message is delivered. #99647 Thanks @steipete-oai.
  • Completed partial-stream Discord replies now arrive as fresh messages that can trigger normal unread cues after a user leaves the channel. #99711 Thanks @davelutztx.
  • Slack buttons and menus now preserve time labels such as 9:00 and return the intended action value when selected. #99877 Thanks @qingminglong, @rodja.
  • Discord and other progress views now hide repetitive internal Code Mode polling while continuing to show meaningful tool activity. #99893
  • Discord Gateway connections now cap incoming frames at 16 MiB, preserving tested large member events while rejecting extreme traffic before it pressures memory. #99998 Thanks @sunlit-deng.
  • Slack message reactions now accept common emoji or shortcode names, can target the current message without repeating its ID, and provide clearer member-lookup guidance. #100375 Thanks @gorkem2020.
  • Slack now uses one static acknowledgement reaction alongside its native assistant loading status by default, avoiding two competing progress displays for the same reply. #100462 Thanks @steipete-oai.
  • Ordinary Slack thread replies no longer download and process the opening message attachments again, while new or reset sessions still receive those files once. #100516
  • Session history now identifies Slack replies that were generated but intentionally superseded before delivery, so operators do not mistake them for messages the user received. #100607 Thanks @bek91.
  • Messages that fail before reaching Discord, Slack, Matrix, or another channel can now be replayed after connectivity returns, while uncertain post-send outcomes still avoid blind duplicates. #101024 Thanks @sunnyshu0925.
  • Cron summaries, Teams and Slack replies, and other embedded assistant responses no longer expose provider reasoning markers such as </mm:think>. #101036 Thanks @velanir-ai-manager.
  • Discord voice playback now turns broken ffmpeg output pipes into a normal playback error instead of an uncaught Gateway-level exception. #101088 Thanks @masatohoshino.
  • Long-running Discord and Nextcloud Talk integrations now bound their channel metadata caches instead of letting each newly encountered room increase memory use forever. #101650 Thanks @alix-007, @vincentkoc.
  • Slack replies in very long threads and on busy Gateways now avoid several unnecessary waits, reducing stalls before thread and direct-message events reach the agent. #101888 Thanks @obviyus.
  • Discord bots can now recover in place after repeated session-resume rejection, reducing prolonged outages, lost replies, and full Gateway restarts. #103596
  • Channel previews, thread names, snippets, and shortened errors across browser and messaging integrations now preserve whole emoji and other Unicode characters. c16bb87 Thanks @vincentkoc.
  • Long Slack context labels, Zalo messages and captions, and extension command output now truncate without breaking emoji or other non-BMP characters. 7e03242 Thanks @hugenshen, @mushuiyu886, @vincentkoc.
  • Default and named LINE bots configured under channels.line.accounts now receive working webhook routes unless explicitly disabled, preventing valid inbound messages from ending in 404 responses. #81471 Thanks @edenfunf, @honorlin.
  • A Feishu connection that stops receiving messages is less likely to remain incorrectly marked as healthy, since transport activity now refreshes channel health. #90966 Thanks @acache, @richardataxai-lab, @vincentkoc.
  • Photos bridged from a remote iMessage Mac to a separate Gateway host now show up in Codex conversations using a readable local path instead of a Mac-only filename. #91803 Thanks @turbotheturtle.
  • Users of compatible iMessage bridges can create, view, and vote on native Apple Messages polls, with upgrade instructions for unsupported imsg setups. #98421 Thanks @lobster, @omarshahine.
  • WhatsApp group owners can reliably run /new, /stop, /status, and similar commands even when their sender identity appears as an internal LID. #93379 Related #77755. Thanks @jiveshkalra, @xialonglee.
  • LINE file uploads now keep recognizable audio extensions like .m4a, so valid recordings can reach transcription rather than being handled as unknown files. #96403 Thanks @tancolo, @zaidazmi.
  • Fenced code blocks that include example lines resembling Markdown fence markers now stay intact instead of being broken mid-block and becoming confusing or misparsed. #96745 Thanks @ly-wang19, @vincentkoc.
  • Signal reaction shortcuts now affect only the intended structured exec or plugin approval, including forwarded monitor and chunked prompts, while ordinary messages that simply quote approval commands no longer get controls; older delivered prompts may still need /approve once after upgrading. #96880 Thanks @joshavant.
  • Signal QuickStart now shows a single clear signal-cli installation failure and goes straight to the custom-path prompt instead of repeating the missing-binary message. #96932 Thanks @romneyda.
  • Long unbroken messages now keep emoji intact when split into delivery-sized chunks, preventing garbled replacement characters for users and channel plugins. #96951 Thanks @bartok9, @ly-wang19.
  • Signal users now get clean assistant replies without internal tool status, reasoning tags, or tool-call markup. #97360 Thanks @masatohoshino.
  • LINE template titles, fallback text, and alt text now preserve emoji at field limits, avoiding broken previews and rejected payloads. #97428 Thanks @ly-wang19, @vincentkoc.
  • Long LINE button labels, quick replies, postback data, and media controls now keep emoji at field limits instead of producing malformed text. #97470 Thanks @ly-wang19, @vincentkoc.
  • Signal plugin setup now handles slow, malformed, or oversized GitHub release metadata without risking process memory exhaustion. #97536 Thanks @hugenshen.
  • Signal container mode now prevents oversized or runaway signal-cli-rest-api responses from threatening the entire OpenClaw process. #97539 Thanks @alix-007.
  • Invalid JSON from the Signal REST container now produces a clear Signal-specific failure instead of exposing a raw parser error. #98073 Thanks @lsr911, @vincentkoc.
  • Voting for an emoji-labeled iMessage poll option no longer sends an extra one-word message repeating the selected answer. #98691 Thanks @omarshahine.
  • Agents now respond to iMessage polls, including polls with comments, with one native vote instead of a plain text answer, a repeated selection, or a separate reply to the comment. #98781 Thanks @omarshahine.
  • Signal users who enable status reactions can now see when OpenClaw accepts a message, works, uses tools, compacts, stalls, or finishes in direct and group chats. #98791 Thanks @jesse-merhi.
  • LINE messages, cards, menus, locations, and code blocks now preserve emoji and other multi-unit characters at field limits instead of producing broken text or rejected payloads. #98994 Thanks @lexes7, @vincentkoc.
  • Bare 32-character iMessage group IDs from imsg now route scheduled and direct sends to the intended conversation instead of a nonexistent phone number. #99525 Related #89235. Thanks @matthewdelprado.
  • With channels.whatsapp.actions.calls, MeowCaller, and telephony TTS configured, a WhatsApp agent can now call the requester and speak a short task-completion or urgent message. #99635
  • Attachment download failures across WhatsApp, LINE, Signal, iMessage, Teams, Feishu, Mattermost, and Zalo now remain visible and actionable instead of disappearing or masquerading as successful media. #100119
  • AppleScript-only and bot-user or SSH iMessage setups now deliver replies even when threading is unavailable, and database changes no longer leave inbound messages hidden behind stale recovery state. #100446 Thanks @omarshahine.
  • Noisy phone numbers with extra plus signs now match the intended Signal, iMessage, or WhatsApp contact, while identities with no digits are rejected safely. #100467 Thanks @morluto.
  • ClickClack agent replies to top-level messages now stay in the active channel or direct message, while replies inside real threads remain threaded. #100582 Thanks @marvinthebored, @vincentkoc.
  • LINE replies that combine text with an image, card, or location now report a failed rich-media portion accurately while delivering the text once and avoiding duplicate retries. #100996 Thanks @masatohoshino.
  • An iMessage helper pipe failure now ends pending work predictably and lets the monitor recover or stop cleanly instead of crashing the Gateway or hanging requests. #101084 Thanks @masatohoshino.
  • Direct WhatsApp polls now respect the same outreach timelock as other sends instead of reaching recipients during a blocked window. 1d128b4 Thanks @vincentkoc.
  • Google Meet and direct Voice Call sessions now keep the identity, workspace, routing, and transcript attribution of the agent that started the call instead of silently switching to the default agent. #77763 Thanks @quangtran88.
  • Google Live call history now keeps both sides of the conversation, while reconnects avoid submitting unfinished speech or combining unrelated utterances. #84161
  • OpenAI Realtime outbound calls now play one opening greeting even when the recipient speaks immediately after answering, while later interruptions continue to stop active speech. #86285 Thanks @giodl73-repo, @jnikolaidis.
  • QQBot upgrades now migrate recoverable credential backups into SQLite without deleting source files when import fails, while disposable caches rebuild separately. #89597
  • Callers using realtime OpenAI or Google voice calls can now interrupt assistant speech and have buffered phone audio stop promptly, while other providers keep the existing local fallback. #90749 Thanks @moellenbeck.
  • QQBot can now deliver documents and media created by sandboxed agents from authorized workspace paths while continuing to block path escapes. #92872 Thanks @sliverp, @zhangguiping-xydt.
  • Messages sent through OpenClaw's message tool now retain configured static or identity response prefixes, keeping routed and broadcast messages consistently labeled. #93639 Thanks @zengwen-dt.
  • Voice callers now hear a completed answer without waiting for post-turn compaction, and a successful early playback is no longer repeated. #94015 Thanks @xialonglee.
  • Feishu replies now arrive as completed blocks when block streaming is enabled without streaming cards, rather than disappearing entirely. #94250 Related #55027. Thanks @vincentkoc, @xialonglee, @zichaolong.
  • When an interactive command button falls back to text, users now receive the command they can copy, with Feishu document comments explaining the manual step. #94385 Related #69754. Thanks @1yihui, @xialonglee.
  • Twilio voice-call operators can select US1, IE1, or AU1 so call control and records use the intended Region, with US1 remaining the default. #95832 Thanks @jodok.
  • Nextcloud Talk sends and reactions now bound server response sizes, protecting OpenClaw from hangs or runaway memory use while preserving normal delivery. #96031 Thanks @alix-007.
  • Reply directives containing hidden unsafe characters now produce stable, display-safe reply IDs before chat routing uses them. #96446 Thanks @lin-hongkuan.
  • Microsoft Teams replies to long parent messages now keep emoji and similar characters intact in the agent's parent-message context instead of inserting malformed text. #96569 Thanks @llagy007, @weeli-009.
  • Long IRC messages now keep emoji and other supplementary characters intact when split into delivery chunks, including with unusually small configured chunk limits. #96572 Thanks @llagy007, @weeli-009.
  • Google Chat sends and request verification now bound oversized API, certificate, and error responses, allowing normal traffic through while broken or hostile bodies fail or truncate without exhausting memory. #96772 Thanks @vincentkoc, @wangmiao0668000666.
  • QQBot speech-to-text now returns an early, labelled error when an OpenAI-compatible transcription endpoint sends an oversized response instead of buffering the full body in memory. #96968 Thanks @mushuiyu886.
  • openclaw channels login --channel feishu now generates a compact QR code that remains scannable in a standard terminal window. #97087 Thanks @nianjiuzst.
  • When OpenClaw shortens long Matrix thread starters for agent context, emoji and other special characters are preserved. #97121 Thanks @bartok9, @ly-wang19.
  • IRC users now see only the correct answer in channel messages, without internal tool-failure banners or assistant-only scaffolding appearing. #97214 Thanks @masatohoshino, @studentzhou-svg, @vincentkoc.
  • Zalo setup, polling, sending, and health checks now reject abnormally large successful replies before they can push the Gateway into severe memory pressure. #97277 Thanks @hugenshen.
  • When token rotations leave multiple populated storage roots, Matrix operators receive a structured warning with details for identifying and carefully archiving stale folders. #97353 Thanks @eldron81-r2d2, @outdog-hwh.
  • Matrix replies now deliver the intended answer without leaking internal tool diagnostics, reasoning tags, or assistant-only scaffolding. #97372 Thanks @masatohoshino.
  • Escaped pipe characters inside QQBot Markdown table cells are now preserved, so commands and expressions do not shift into the wrong columns. #97429 Thanks @ly-wang19.
  • Emoji and other non-BMP characters at the truncation boundary of long Feishu streaming-card summaries are now kept intact. #97462 Thanks @ly-wang19.
  • Long Matrix reply quotes sent to agents now truncate emoji and other multi-unit characters without leaving broken text. #97471 Thanks @ly-wang19.
  • Mattermost streaming draft previews now shorten long text containing emoji without showing a malformed replacement character. #97472 Thanks @ly-wang19.
  • Microsoft Teams Adaptive Card button clicks now deliver the submitted value to the agent instead of arriving as empty messages. #97546 Thanks @jimmypuckett.
  • Long Feishu comments containing emoji at the cutoff now reach the agent as valid text instead of being split into malformed characters. #97595 Thanks @llagy007, @weeli-009.
  • Matrix media downloads now enforce size and idle-timeout limits before buffering, including for encrypted media. #97662 Thanks @alix-007.
  • Feishu and Lark registration and streaming-card requests now reject oversized provider JSON before it can place unbounded pressure on memory. #97782 Thanks @alix-007.
  • Microsoft Teams file delivery and chat lookup now cap large Microsoft Graph responses and return a labeled error instead of risking a process crash. #97784 Thanks @alix-007.
  • SMS replies now hide internal tool-trace failure banners and show only the intended assistant response. #97989 Thanks @zengwen-dt.
  • Twilio SMS account checks now handle malformed successful JSON with safe phone-number listing or a clear Messaging Service error. #97999 Thanks @lsr911.
  • Canceling a Feishu reconnect, startup, or bot-identity retry wait now ends cleanly instead of risking a ReferenceError during cleanup. #98137 Thanks @zhanglei99586.
  • Punctuation around a model's NO_REPLY token no longer turns it into a visible chat message, while legitimate messages containing the token still arrive. #98224 Thanks @sunnyshu0925.
  • Completions from subagents, scheduled tasks, media jobs, and agent harnesses now return through the same configured account, destination, and thread that requested them. #98240 Thanks @yetval.
  • Tlon and Urbit channel failures now bound oversized or malformed error responses before they can cause memory spikes, while retaining useful short messages. #98496 Thanks @pandah97.
  • Mattermost replies now show the intended assistant response without exposing internal tool-failure diagnostics. #98693 Thanks @zengwen-dt.
  • Feishu bot replies no longer expose internal tool or runtime failure banners alongside the intended response. #98705 Thanks @zengwen-dt.
  • Zalo operators can point Bot API calls at a compatible alternate endpoint without patching code, while ordinary workspace environment files cannot silently redirect traffic and millisecond message times remain accurate. #98768 Thanks @romneyda.
  • Ambient agents now stay quieter in observed group conversations and honor operator instructions such as replying only when spoken to. #99144 Thanks @obviyus.
  • Ambient group chats now remain silent unless the agent deliberately sends a message, without stray status lines, tool summaries, compaction notices, delivery warnings, or overflow follow-ups. #99145 Thanks @obviyus.
  • Mattermost channel monitoring now rejects inbound events above 16 MiB and reconnects, limiting memory exposure while continuing to accept normal large messages. #99366 Thanks @sunlit-deng.
  • Always-on group agents can now receive and answer valid unmentioned messages after a plugin fallback instead of silently dropping them. #99506 Related #99457. Thanks @lzy3538, @zqchris.
  • Replies and attachments already accepted by a channel are no longer resent after a restart or recovery failure, while genuinely unsent items remain retryable. #99600 Thanks @zhangguiping-xydt.
  • Outbound sends now report failed and partially delivered messages with useful per-part outcomes instead of presenting every attempt as a success. #99928 Thanks @masatohoshino.
  • ClickClack can now show opt-in, durable commentary and tool activity during a run so users are not left with an empty channel until the final reply. #99954 Thanks @obviyus, @ragesaq.
  • Inbound Telnyx-style and Plivo voice conversations can now continue after the caller's first response instead of falling silent before OpenClaw speaks again. #100255 Thanks @dvy.
  • Valid Twilio and Plivo callbacks now pass signature checks behind trusted IPv4 reverse proxies even when Node reports the proxy as an IPv4-mapped IPv6 address. #100261 Thanks @rohitjavvadi.
  • Repeated voice-call webhook deliveries are now acknowledged without repeating call or transcript side effects within the replay window. #100263 Thanks @xialonglee.
  • A transient Gmail watch-renewal failure now produces an error without crashing a long-running foreground openclaw webhooks gmail run process. #100342 Thanks @cxbasdev, @vincentkoc.
  • Agents catching up in busy group chats now receive clearer sender-by-sender history, making multi-person conversations easier to follow without exposing local paths or URLs. #100366 Thanks @gorkem2020.
  • Tlon now stops oversized or stalled external image downloads before they consume unbounded memory and can continue the message with the original URL. #100374 Thanks @hugenshen.
  • Oversized Tlon scry responses now fail with a clear path-specific error instead of risking a Gateway out-of-memory crash. #100376 Thanks @hugenshen.
  • Non-streaming channels no longer send the same final text or media twice for one message, while genuinely separate replies with different routing or thread identities still go through. #100828 Thanks @vincentkoc, @zhangxiaojiujiayi.
  • Supported interactive-card JSON sent through Feishu messages, thread replies, or text payloads now renders as a card instead of appearing as raw JSON. #100883 Thanks @martingarramon, @vincentkoc, @zenorewn.
  • Microsoft Teams attachment recovery now declines oversized Graph metadata with diagnostics instead of buffering it into Gateway memory, while normal hosted media still downloads within configured limits. #101082 Thanks @cxbasdev.
  • Stalled Feishu tenant-token or streaming-card requests now time out with a clear error and release the processing lane so other Gateway messages can continue. #102948 Thanks @hugenshen, @sallyom.
  • The Twilio voice-call provider now rejects unsupported API hostnames before sending a request and accepts only OpenClaw's supported Twilio regional hosts. 094c0d4 Thanks @vincentkoc.
  • Cron and outbound channel sends no longer report success without a usable platform receipt, making missing notifications show as not delivered or suppressed instead of falsely delivered. #79811 Thanks @indulgeback.
  • Telegram stickers and other plugin message actions now stay in the active forum topic or thread when sent to the matching conversation, including through Gateway dispatch. #80293 Thanks @artdaal.
  • Telegram and Discord plugin commands that send their own response can return { suppressReply: true }, preventing a second misleading empty-response warning or failure. #80928 Related #80756. Thanks @alexuser, @unclouded77.
  • With messages.ackReactionScope: "all", ambient room messages now receive the configured acknowledgement reaction across Discord, Slack, and Telegram. #87433 Thanks @paul-phan, @scoootscooob.
  • Established Telegram direct-message sessions now avoid resending recent messages already stored in the transcript, reducing token use and repetitive or confused replies. #89855 Thanks @sweetcornna.
  • Telegram no longer follows a successfully delivered final answer with a contradictory generic error when a later dispatch step fails, while partial-only failures still receive the existing fallback. #90152 Thanks @zhangguiping-xydt.
  • Telegram documents received through a containerized local Bot API now arrive with their actual contents when its mounted data path differs between containers. #91984 Thanks @ailucasdz, @dizesales.
  • The message tool and openclaw message send now allow proactive Telegram message delivery instead of failing due to an unsupported channel. #92107 Thanks @bladin, @obviyus.
  • OpenClaw treats .m2a recordings as audio, enabling them to move through attachment, transcription, memory, and chat display workflows without requiring conversion. #92167 Thanks @llljjjwww333.
  • After certain API outages and timed-out shutdowns, Telegram and other channels can recover on their own rather than staying quiet until a Gateway restart. #94016 Thanks @sheyanmin.
  • Telegram replies now exclude internal tool-execution failure lines, delivering only the intended assistant answer. #95774 Thanks @mushuiyu886.
  • Telegram rich replies and progress messages containing OAuth email addresses now get through instead of being blocked by Telegram validation. #95900 Thanks @obviyus.
  • A partially delivered queued send no longer blindly replays after reconnection, cutting down on duplicate Telegram and other channel messages. #96247 Thanks @obviyus, @rosenlo.
  • Telegram progress updates now truncate safely around emoji and other multi-unit characters, preventing broken glyphs and rejected Bot API payloads. #96456 Thanks @he-yufeng.
  • Telegram configurations using legacy capabilities: [] now inherit the normal inline-button policy, restoring clickable buttons without overriding intentional opt-outs. #96468 Thanks @vincentkoc, @zhangguiping-xydt.
  • Telegram streaming draft previews no longer break or show garbled text when an emoji falls at the size boundary, allowing long previews to keep updating normally. #96504 Thanks @mushuiyu886, @obviyus.
  • A temporary Telegram reply-session conflict no longer traps a DM or forum topic in constant retries that block later messages; retries are paced, conversation order is retained, and unrelated chats continue processing. #96550 Thanks @cnbarrier404, @vacinc.
  • Files sent through Telegram and other supported chat channels now keep clean names such as report.png instead of exposing an internal cache identifier in the attachment filename. #96565 Thanks @narahariraghava, @obviyus.
  • Slack, Discord, Telegram, WhatsApp, and Microsoft Teams users now receive a clear retry and re-authentication message when a model provider returns a recognized HTTP 401 error instead of seeing only a reaction or no useful reply. #96599 Thanks @sjf-oa.
  • Telegram reactions and message deletions now retry brief socket or Undici network failures, reducing unnecessary action failures without adding duplicate risk to ordinary message sends. #96612 Thanks @miorbnli.
  • Telegram users still receive a plain-text reply when rich formatting for an email, URL, mention, hashtag, command, phone number, bank card, or similar entity is rejected, instead of the bot going silent. #96642 Thanks @moguangyu5-design.
  • Telegram automations can now tell from platform metadata whether a sender is a bot, making routing and classification less dependent on usernames or naming conventions. #96810 Thanks @lin-hongkuan, @ohyeah521.
  • Telegram messages entering through isolated ingress now proceed to the agent reply instead of replaying the same message in a loop. #96847 Thanks @obviyus.
  • Long-running Telegram turns can finish without being reclaimed and processed again midway, reducing stalled or duplicate delivery while giving operators a clearer unhealthy status when the backlog stops draining. #96962 Thanks @joshavant.
  • Telegram bots using isolated polling can resume ordered message processing after a stalled drain or Gateway restart without manual database repair. #97118 Thanks @romneyda, @vincentkoc.
  • Telegram startup logs now show local socket failures such as EADDRNOTAVAIL instead of incorrectly steering operators toward DNS troubleshooting. #97130 Thanks @zhangguiping-xydt.
  • Telegram inline buttons supplied by plugins now run their intended actions and cleanup instead of posting raw callback data into chat. #97174 Thanks @goldmar.
  • Telegram rich-text replies now render math formulas more reliably instead of exposing raw LaTeX-style markers. #97197 Thanks @vincentkoc, @wangwllu.
  • Telegram bot probes, webhook checks, membership audits, and polling now reject oversized Bot API success bodies before they can exhaust Gateway memory. #97271 Thanks @hugenshen.
  • Telegram chat-ID lookup now fails safely on oversized getChat responses instead of risking excessive Gateway memory use during onboarding or routing. #97274 Thanks @hugenshen.
  • Telegram replies retain literal wording such as <think> when it is part of the answer, while genuinely marked reasoning remains hidden. #97286 Thanks @drickon, @obviyus.
  • Long non-streamed Telegram group replies now keep every chunk visible, including the beginning, while delivery receipts cover all generated text chunks. #97304 Thanks @aliseturtle-lu, @obviyus.
  • Long streamed Telegram replies now deliver their middle sections under the default configuration instead of silently omitting part of the answer. #97312 Thanks @brycemurray, @obviyus.
  • Telegram documents sent near a Gateway restart now retry after recovery instead of disappearing silently, while permanent failures still request a resend. #98102 Related #98076. Thanks @davearcher18, @luoyanglang, @obviyus.
  • Telegram /steer and /tell commands can redirect an active Codex task during streaming or tool work instead of arriving late or becoming follow-up messages. #98126 Related #81594. Thanks @100yenadmin, @kyzcreig.
  • Saying wait in a Telegram group conversation no longer cancels active OpenClaw work, while explicit stop commands still take effect immediately. #98639 Thanks @ianchen08.
  • Telegram rich messages and text-bearing forwards without a normal caption now reach the agent as readable conversation content instead of an unsupported-message placeholder. #98735 Thanks @obviyus.
  • Telegram direct-message follow-ups now include one copy of the previous assistant reply in recent context instead of duplicating it and wasting tokens. #98769 Related #98767. Thanks @rabsef-bicrym.
  • Telegram polling now recovers from temporary rate limits, server failures, and malformed error responses without disabling the account, while busy bots avoid cache writes that could trigger false stall restarts. #98775 Related #98772, #98773. Thanks @obviyus.
  • A repeatedly failing Telegram update no longer blocks later messages in the same chat or topic, and replayed updates are retried safely without duplicate commands or apology spam. #98776 Related #98774. Thanks @obviyus.
  • Telegram final replies and media sends now fall back to readable plain text when formatting, captions, or quotes are rejected, and routine flood waits up to 60 seconds are honored instead of dropping the message. #98786 Related #98778. Thanks @obviyus.
  • Telegram sends and message actions that omit an account now consistently use the configured default bot instead of a stale identity that can misroute or reject the action. #98789 Thanks @yetval.
  • Telegram webhook messages now survive Gateway restarts and temporary processing failures, while accounts recover from brief startup errors and repeated restarts stop leaking network connections. #98806 Related #98777. Thanks @obviyus.
  • Telegram plugins can now turn a button tap into a normal user reply to the agent, while failed or skipped submissions leave the button available for another attempt. #98922 Thanks @goldmar.
  • Telegram bots in ambient group mode now see recent room context before deciding whether to speak, reducing replies to isolated fragments that were not directed at the bot. #99143 Related #99142. Thanks @obviyus.
  • Telegram group agents now receive one chronological copy of recent messages instead of duplicated history and repeated delivery details consuming context. #99256 Related #99218. Thanks @obviyus.
  • Unmentioned room context in Telegram ambient group conversations can now persist across later turns, restarts, and compaction without requiring repeated replay of the same window. #99306 Related #99257. Thanks @obviyus.
  • After a reset, Telegram ambient group sessions now recover the relevant older chat context rather than quietly treating archived messages as already seen. #99385 Related #99373. Thanks @obviyus.
  • Direct mentions to Telegram and Discord group bots using message_tool_only now generate visible channel replies on both fresh and resumed sessions. #99389 Related #99371. Thanks @obviyus.
  • Telegram replies now keep typing visible through more transient API failures and fall back to plain text when valid rich content cannot be sent. #99745 Thanks @obviyus, @veda-openclaw.
  • Before dispatch, sessions_send now rejects Telegram topic child sessions and directs callers to the parent group, cutting down on misrouted agent work. #99845 Thanks @nianjiuzst, @qingminglong.
  • Telegram tables, rankings, and literal line breaks now stay readable, with explicit logging when rich content must degrade to plain text. #99861 Related #99833. Thanks @obviyus.
  • When directly mentioned or replied to, Telegram group agents now post visible replies while still ignoring unaddressed background chatter. #99866 Related #99854. Thanks @obviyus.
  • Polls now follow the selected direct or hybrid channel instead of being misrouted through the Gateway, with clear errors for unsupported duration or anonymity settings. #99950 Thanks @nianjiuzst.
  • Telegram now notifies users when an attachment cannot be downloaded, reports the actual size limit for oversized files, and still retries transient failures such as rate limits. #100051 Thanks @batyaro777.
  • Visible text from rich details, lists, math, captions, and credits is now preserved in Telegram replies and forwards so the agent receives the context users actually saw. #100570 Thanks @veda-openclaw, @wangwllu.
  • Telegram direct-message follow-ups now include one accurate copy of each earlier assistant reply instead of duplicating a hidden-instruction version. #100573 Thanks @momothemage, @mooresoftware.
  • MP3 speech from Piper, Kokoro, and other OpenAI-compatible TTS endpoints now reaches Telegram as a native voice note rather than a filename-style audio attachment. #100715 Thanks @hemantsudarshan.
  • Telegram heartbeat fallbacks now hide the notify=false control marker and deliver silently as requested, including suppressing marker-only replies. #100735 Thanks @hackerismydream, @vincentkoc.
  • After transient network failures, Telegram typing indicators now retry, restoring status feedback without adding duplicate-message risk to normal sends. #100762 Thanks @lzw112, @vincentkoc.
  • Following a fatal registration error such as invalid or revoked credentials, Telegram webhook startup now releases its listener, bot, and network resources. #100863 Thanks @machine3at.
  • Telegram messages that cannot be steered into an active Codex turn are now kept for handling afterward instead of vanishing without a reply. #103916 Thanks @jalehman.
  • When Telegram requests overlap, the newest authorized message now wins without an outdated reply being sent or replaced queued work being started. #103965
  • Queued Telegram updates now remain replayable until restart recovery is safely recorded, reducing message loss during a crash at processing startup. #104032 Thanks @obviyus, @vincentkoc.
  • The final collapsed progress summary in Telegram now includes Claude CLI thinking activity shown during the run instead of making that work appear to vanish. 4212de9 Thanks @vincentkoc.
  • Discord completion and error reactions now remain visible for the configured doneHoldMs and errorHoldMs durations instead of fixed default delays. #94736 Thanks @liuwqgit.
  • Slack read actions can again access intentionally allowlisted channel names when Slack supplies an ID and dangerouslyAllowNameMatching is enabled. #95313 Thanks @jontsai.
  • Even when single-use reply mode is enabled, Discord voice replies now keep their accompanying text and extra media attached to the original message. #95978 Thanks @nxmxbbd.
  • Discord attachments queued while OpenClaw is busy now remain available when the message finally runs instead of disappearing after temporary download links expire. #96183 Thanks @judsonnudson, @zacharyyw.
  • During inbound processing, Slack message and attachment text is no longer copied into verbose or debug logs. #96312 Thanks @steipete-oai.
  • Slack messages and Block Kit labels now truncate without splitting emoji into broken replacement characters or invalid payload text. #96382 Thanks @ly-wang19.
  • Generated Discord thread names now preserve multiple Markdown emphasis spans without dropping or stranding formatting markers. #96394 Thanks @ly-wang19.
  • Long Slack command and plugin approval previews now keep emoji intact at the length boundary, avoiding malformed approval text or payloads. #96576 Thanks @llagy007, @weeli-009.
  • OpenClaw can use a trusted override for a compatible Slack API endpoint, while normal workspaces continue using Slack's public API and untrusted project .env files cannot redirect bearer-token requests. #97154 Thanks @romneyda.
  • Discord's recent-model buttons now shorten long names without breaking emoji or producing invalid picker payloads. #97600 Thanks @llagy007, @weeli-009.
  • Slack agents can now read thread messages whose visible content exists only in attachments or blocks, including alerts with empty top-level text. #97727 Thanks @chthtlo.
  • Through is_bot: true, Slack agents can now identify admitted bot-authored messages, making it easier to prevent unwanted bot-to-bot replies. #97822 Thanks @masatohoshino, @vincentkoc.
  • Discord agents now receive is_bot: true for admitted bot messages while human and PluralKit sender behavior stays unchanged. #97824 Thanks @masatohoshino, @vincentkoc.
  • Slack slash-command choice menus now shorten long labels without splitting emoji at the 75-character limit. #97923 Thanks @lexes7.
  • Slack Socket Mode relay diagnostics now distinguish malformed WebSocket frames from transport failures, making channel problems easier to identify. #98587 Thanks @lsr911, @vincentkoc.
  • Skill command descriptions now remain fuller where supported and stay valid in Discord and Mattermost when emoji appears near a platform limit. #99593 Thanks @pick-cat.
  • Slack startup and account checks now warn when a user OAuth credential is configured as the bot token, before identity confusion affects mentions or replies. #99931 Thanks @ooiuuii.
  • Slack replies now keep each agent's custom name and avatar through streaming or fallback delivery instead of reverting to the app identity. #100084 Thanks @moerai.
  • Slack Codex conversations now retain one final assistant reply in history instead of duplicating it through both the app-server transcript and delivery fallback. #100160 Thanks @steipete-oai.
  • Long or media-rich implicit Discord replies now quote and notify the referenced user once in first or batched mode, while explicit and all replies retain every intended reference. #100784 Thanks @qingminglong, @revision-co-ltd.
  • Discord replies, cron reports, and other outbound messages are less likely to disappear during a brief Gateway reconnect, without replaying chunks or media Discord already accepted. #100896 Thanks @tiffanychum.
  • Discord voice playback now cleans up ffmpeg after output-pipe failures, reducing both Gateway crashes and leftover transcoder processes. #101124
  • The configured primary Discord account now starts first in multi-account setups, so the main bot is not delayed behind secondary or invalid entries after a restart. #101292 Thanks @turbotheturtle.
  • Discord automatic thread titles now handle long messages and channel details containing emoji without building malformed prompt text. #101551 Thanks @alix-007.
  • Long-running Slack integrations now keep conversation metadata caching within a fixed limit, preventing memory use from growing indefinitely as more channels and workspaces are encountered. #101562 Thanks @vincentkoc, @zhangguiping-xydt.
  • When Discord voice playback fails, a readable error now appears within the 8,192-byte limit, even when ffmpeg output includes non-English text or emoji. #104230 Thanks @qingminglong.
  • Weixin accounts configured with opaque IDs that include characters like an at sign or . now start up normally and keep their account-specific routing intact. #93686 Related #93556. Thanks @htkillermax-gif, @zhangguiping-xydt.
  • Feishu setups that could send bot pushes but silently lost user replies now deliver incoming messages to OpenClaw instead of failing during monitor startup. #94013 Thanks @xydt-tanshanshan.
  • Replies to WhatsApp group messages authored by OpenClaw now remain visible on WhatsApp Desktop and other multi-device clients with their quote context preserved. #94879 Thanks @bartok9.
  • Direct iMessage conversations using the imsg private API bridge now show typing indicators as soon as a slow turn is accepted, without waiting for a read receipt. #95621 Thanks @omarshahine.
  • iMessage replies no longer lose ordinary sentence text that ends with user:, system:, or assistant:. #96392 Thanks @ly-wang19.
  • WhatsApp direct sends and automatic replies now render combined bold-and-italic Markdown without stray asterisks, including when the formatted text contains emoji. #96570 Thanks @llagy007, @weeli-009.
  • Long WhatsApp auto-reply and inbound-message previews now preserve emoji and report the truncated character count accurately, keeping affected diagnostics readable without altering delivery. #96580 Thanks @llagy007, @weeli-009.
  • Signal QuickStart on macOS now installs signal-cli through Homebrew instead of downloading an incompatible Linux package, and provides platform-specific guidance when Homebrew is unavailable. #96909 Thanks @romneyda.
  • Bursts of long iMessage messages can now be combined without cutting an emoji in half and sending broken text to the agent. #97598 Thanks @weeli-009.
  • Invalid OPENCLAW_WHATSAPP_WEB_SOCKET_URL values now fail immediately with a clear configuration error instead of breaking later during socket startup. #97697 Thanks @romneyda.
  • Nextcloud Talk startup checks now show a concise bot-admin API failure without buffering an arbitrarily large error body. #97811 Thanks @pick-cat.
  • Google Chat agents can now distinguish allowed bot messages through is_bot: true and handle automated senders differently from people. #97825 Thanks @masatohoshino, @vincentkoc.
  • WhatsApp can now restore a saved linked-device session from a valid credential backup when the primary file is interrupted or corrupted, avoiding an unnecessary QR re-pair. #99070 Thanks @leonidaslux.
  • Signal container receives now reject oversized JSON frames before buffering them, limiting memory pressure without affecting normal messages or separately fetched attachments. #99992 Thanks @sunlit-deng.
  • iMessage startup warnings now distinguish working sender-allowlisted group setups from truly blocked configurations and point blocked operators to the correct fix. #100046
  • openclaw channels login --channel whatsapp now replaces expired QR codes in place so interactive terminals show one current, scannable code. #100159
  • A WhatsApp message interrupted by a temporary reply-session conflict can now be retried instead of being marked delivered and silently ignored on redelivery. #101106 Thanks @andersonjeccel.
  • Queued messages now resume at a gentler pace after an outage, restart, or reconnect, reducing avoidable channel and provider rate-limit bursts while keeping recovery bounded. #101118 Thanks @zengwen-dt.
  • WhatsApp direct messages blocked by a reachout timelock now fail immediately with an explicit explanation instead of appearing accepted before a later delivery error. #101264 Thanks @mcaxtr.
  • iMessage CLI send and action failures caused by broken output pipes now return a controlled error instead of risking a Gateway worker crash. #101401 Thanks @cxbasdev.
  • OpenClaw can use a trusted override to point the normal Baileys socket at a compatible local WebSocket endpoint, while normal WhatsApp connections continue using the default path unless explicitly overridden. #97155 Thanks @romneyda.
  • Feishu one-to-one chats can receive text, media, card, and fallback replies again instead of losing the response after the incoming message was processed. #94760 Thanks @obviyus, @xydigit-zt.
  • An accepted voice message that arrives while OpenClaw is already replying can still receive a voice response when tts.auto: "inbound" is configured. #95596 Thanks @mcaxtr.
  • Mattermost API calls now stop oversized or endless successful responses before they can consume unbounded memory, while normal requests and uploads continue unchanged. #96033 Thanks @alix-007.
  • IRC reconnects now rotate fallback nicknames after a 433 conflict instead of repeatedly retrying the same occupied name. #96108 Thanks @wendy-chsy.
  • The Microsoft Teams personal-chat welcome card now displays its greeting with the intended bold, medium emphasis. #96290 Thanks @ly-wang19, @vincentkoc.
  • Microsoft Teams thread history now preserves literal entity text such as <APIKEY> instead of turning it into different markup before the agent sees it. #96342 Thanks @ly-wang19.
  • Long Google Chat approval cards now preserve emoji at the text limit, preventing corrupted approval text or malformed card payloads. #96573 Thanks @llagy007, @weeli-009.
  • Long Synology Chat messages and diagnostic previews now truncate without cutting an emoji or other supplementary character in half, keeping downstream text valid. #96574 Thanks @weeli-009.
  • QQBot reminders created from long text now receive readable job names even when an emoji falls at the cutoff, rather than storing a broken character. #96575 Thanks @llagy007, @weeli-009.
  • Microsoft Teams feedback on long responses now carries intact emoji into reflection processing, preventing a cutoff from corrupting prompts, logs, or encoding. #96578 Thanks @llagy007, @weeli-009.
  • Feishu card headers now show a clean agent emoji and name instead of descriptive text from identity.emoji, while flags, skin-tone variants, family emoji, and other valid sequences remain intact. #96587 Thanks @harjothkhara, @leedongyu1128.
  • Tlon approval notifications now keep emoji intact at the preview limit, preventing malformed message previews. #97599 Thanks @llagy007, @weeli-009.
  • IRC outbound text now preserves escaped emoji and keeps invalid surrogate escapes literal instead of silently replacing them with corrupted characters. #97683 Thanks @llagy007, @weeli-009.
  • Mattermost API failures with an empty JSON body now produce a clear status-based error instead of an Unexpected end of JSON input crash. #97851 Thanks @pick-cat.
  • Malformed successful Matrix responses now produce a controlled homeserver error instead of an opaque unhandled JSON parsing failure. #97973 Thanks @lsr911.
  • Feishu video messages now show the duration of local and remotely loaded MP4 clips when duration detection is available. #98235 Thanks @areslp.
  • Mattermost installations repaired after an upgrade now load and reconnect on Gateway restart without requiring a manual plugin-enable setting, including restrictive allowlist setups. #98608 Related #98564. Thanks @jacobtomlinson, @shakkernerd.
  • Repeated Nostr profile publishing now clears relay timeout timers after success, reducing stale resource buildup in long-running agents. #98720 Related #98463. Thanks @wangmiao0668000666, @zhanglei99586.
  • Mattermost teams with more than 200 members can now discover and address valid peers beyond the first page of the team directory. #98877 Related #98871. Thanks @qingminglong.
  • Long IRC replies now arrive complete when they contain Chinese, Cyrillic, emoji, or other non-ASCII text, while respecting messageChunkMaxChars. #99138 Thanks @yetval.
  • When the Bot Platform provides a connected bot account name, the Zalo gateway startup output now displays it. #99274 Thanks @romneyda.
  • Transient Feishu streaming-card refresh failures are now caught and recorded for troubleshooting rather than appearing as unhandled exceptions. #99301 Thanks @lwy-2.
  • QQBot status now correctly reports disconnections and fatal close reasons, and only returns to connected after receiving a READY or RESUMED event. #100127 Thanks @masatohoshino, @vincentkoc.
  • Text commands like /model fable now consistently show their confirmation even in flows that suppress normal source replies. #100151
  • After a temporary server or network disconnect, IRC bots now reconnect and rejoin configured channels rather than staying silent until OpenClaw is restarted. #100799 Thanks @zhangguiping-xydt.
  • Feishu direct messages received while the bot identity is temporarily unavailable no longer turn ordinary user mentions into accidental forwarding targets. #100891 Thanks @zhangguiping-xydt.
  • Tlon media uploads now stop safely when Memex returns an oversized or malformed response, instead of letting the upload attempt consume excessive memory. #101115 Thanks @cxbasdev.
  • Realtime voice prompts now remain readable when long agent names or injected context containing emoji must be shortened. #101304 Thanks @alix-007.
  • Feishu error logs now shorten emoji-containing text at a valid character boundary, making card-action and WebSocket cleanup failures easier to read. #101364 Thanks @zengwen-dt.
  • After a long healthy run, channel plugins can resume automatic recovery, so an occasional later disconnect is not blocked by an old restart budget while true rapid crash loops remain capped. #101413 Thanks @clintoncodewell.
  • QQBot approval cards, message previews, logs, media paths, and retry warnings now shorten emoji-containing text without broken replacement characters. #101421 Thanks @wangmiao0668000666.
  • QQBot previews, errors, commands, speech-to-text messages, media diagnostics, and logs now remain valid when emoji-containing text reaches a length limit. #101516 Thanks @vincentkoc, @wangmiao0668000666.
  • Long emoji-containing agent labels now produce clean native channel thread names and introductions instead of broken characters. #101527 Thanks @lsr911.
  • Zalo operators can send proactive CLI or scripted messages to valid nonnumeric chat_id values without an Unknown target rejection. #101548 Thanks @goutamadwant.
  • Feishu Drive can now list files beyond the first page of a large shared folder by accepting its returned next_page_token, with invalid page sizes rejected clearly before the request. #101572 Thanks @zhangguiping-xydt.
  • Google Meet local audio bridges now shut down cleanly and log a warning when a capture or playback command pipe fails, rather than crashing on an unhandled stream error. #101596 Thanks @alix-007.
  • Matrix dependency setup now stops its child process predictably and reports the failure when a local command's output pipe breaks. #101597 Thanks @alix-007.
  • Telegram destinations genuinely named current, self, this, or me can now be reached through configured entries, while accidental bare session words fail closed. #94107 Thanks @obviyus, @silver-state, @zhangguiping-xydt.
  • Telegram rich messages using richMessages: true and Markdown table mode block now display bordered, striped tables with the source column alignment. #95822 Thanks @obviyus, @zhangguiping-xydt.
  • Telegram fallback messages now replace invalid numeric Unicode surrogate entities safely instead of emitting malformed text, while valid numeric emoji entities still render. #96581 Thanks @llagy007, @weeli-009.
  • Telegram users with /reasoning on now receive the model's saved reasoning messages alongside the final answer. #97875 Thanks @fuller-stack-dev, @marvinthebored.
  • Telegram groups and forum topics now show a typing indicator as soon as an addressed message is accepted, without signaling activity for ignored chatter. #99965 Thanks @moeedahmed.
  • Telegram onboarding now offers both the classic BotFather chat flow and the official web interface for creating a bot and copying its token into OpenClaw. #100540
  • Telegram sends to an username now use the account's configured proxy or custom Bot API endpoint for both target resolution and message delivery. #100868 Thanks @machine3at.
  • Chinese, Japanese, and Korean bold labels followed immediately by text now render as bold instead of exposing literal ** markers in Telegram and other shared-Markdown channels. #101230 Thanks @nicknmorty.
  • Telegram sends now retry a safe TCP or TLS connection timeout, reducing lost final replies during flaky handshakes without retrying failures that may already have reached Telegram. #101258 Thanks @lzw112.
  • The bare /think command now shows available thinking levels promptly in Telegram, Slack, and Discord without waiting on slow model discovery. #101926 Thanks @vincentkoc.
  • A Telegram reply that has already started is no longer unexpectedly cancelled when another authorized command arrives. 52a3314 Thanks @vincentkoc.
  • After /login codex succeeds in Telegram, retrying the request now uses the newly authenticated OpenAI profile instead of the previous account. fca0c81 Thanks @100yenadmin.

More model and provider improvements

Sign-in, model choice, media, and reliability

Across Anthropic and Claude, Gemini, OpenAI and Codex, local models, and other supported routes, providers now handle credentials, catalogs, limits, fallbacks, streaming, and tool calls more consistently. Readers should see fewer requests fail because the selected route used the wrong model metadata, replayed incompatible reasoning, lost authentication state, or interpreted a provider response incorrectly.

The model catalog also reports availability and capability more accurately, while Codex supervision keeps connected model choices and session behavior aligned with the backend that was actually selected.

Sources and contributors

  • Users of Amazon Bedrock can now examine images and PDFs using the same AWS profile, role, SSO, environment, or instance credentials they already employ for chat. #72092 Thanks @truffle-dev.
  • When the final success envelope lacks text, Claude CLI replies that streamed successfully are now preserved, stopping the completed answer from vanishing or triggering an empty-response fallback. #90450 Thanks @totobusnello.
  • Without manually defining each route, OpenCode Zen users can browse and execute its supported models including Claude, GPT, Gemini, GLM, DeepSeek, MiniMax, Qwen, and others. #92495 Thanks @mushuiyu886, @sallyom.
  • Oversized endpoint responses are now rejected early by Anthropic OAuth token exchange and refresh, preventing an unbounded body from being read into memory. #96644 Thanks @solodmd.
  • For longer answers, reasoning, and tool calls, Amazon Bedrock adaptive-thinking Claude and Fable runs now respect configured high output-token limits. #97343 Thanks @lilan0125, @prasithg.
  • Unusually large error responses are now capped by Anthropic usage checks so that a CDN, firewall, or proxy page cannot deplete OpenClaw's memory. #97614 Thanks @cxbasdev.
  • Instead of displaying only a generic provider failure, Anthropic conversations rejected for a missing tool result now instruct users to retry or begin a fresh session with /new. #98163 Thanks @masatohoshino.
  • After Anthropic rejects a replayed thinking block, Claude native-thinking sessions can now recover automatically without needing manual compaction or losing transcript data. #98411 Related #98308. Thanks @clearhorizoninvestments, @sunlit-deng.
  • In claude-cli sessions, Claude Code 2.1 users can once again approve and execute Bash, WebFetch, Grep, Glob, AskUserQuestion, and other native tools. #98665 Related #95171. Thanks @carterdawson, @yetval.
  • For simple-completion tasks like generated conversation labels, Claude Fable 5 now operates through Anthropic Vertex instead of failing before the request reaches Vertex. #98932
  • Claude CLI agent runs now fail over rather than presenting provider errors or raw stream data as answers, maintain multilingual and emoji output, and halt runaway one-shot output before it exhausts Gateway memory. #98942 Related #98896. Thanks @obviyus.
  • Without losing servers or corrupting the prompt, Claude CLI users can combine multiple --mcp-config files, and concurrent Gemini CLI runs are less likely to interfere with shared credential files. #98983 Related #98944, #98945. Thanks @obviyus.
  • Agents backed by Claude CLI now display native reasoning in /reasoning stream or /reasoning on, while /reasoning off consistently suppresses it for queued follow-ups as well. #99401 Thanks @marvinthebored.
  • Instead of hanging or consuming excessive memory, Bedrock Mantle model discovery now times out and caps oversized catalog responses, while cached models stay available. #99961 Thanks @zhangguiping-xydt.
  • With tools.profile=coding, Anthropic Opus 4.8 can now run without every turn failing with an HTTP 400 schema error before the assistant replies. #100492 Thanks @lin-hongkuan, @vincentkoc.
  • When an upstream stream sends an oversized partial event, Anthropic-compatible requests now fail promptly with a bounded transport error instead of hanging and consuming memory. #100686 Thanks @zhangguiping-xydt.
  • Between turns, long, tool-heavy or media-heavy embedded-agent conversations now retain more prompt-cache reuse, which reduces repeated token processing, latency, and cost on prefix-cached providers. #102610 Thanks @ugiezzz.
  • Users of Anthropic Messages-compatible proxies no longer see raw antml tool-call XML or arguments leak into visible Claude replies. b2787a1 Thanks @jerry-xin.
  • Carrying the Claude Code-style billing identity, Anthropic OAuth subscription requests now help use the intended subscription route instead of failing or being treated as the wrong request type. 709be93 Thanks @vincentkoc.
  • Before buffering them into memory, Google Gemini TTS now rejects oversized responses, while normal speech results continue through the existing audio workflow. #96984 Thanks @mushuiyu886.
  • After a retryable quota or rate-limit response, Gemini streaming can retry with another configured API key instead of failing on the first key. #97328 Thanks @monkeyleet.
  • Gemini memory-embedding batch uploads, creation, and status checks now fail safely when a compatible endpoint returns an oversized control response. #97535 Thanks @hugenshen.
  • With labeled errors, Google Gemini CLI sign-in now rejects oversized OAuth, profile, project, and onboarding responses instead of risking excessive memory use. #97587 Thanks @hugenshen.
  • Google Gemini CLI OAuth failures now keep oversized or malformed provider responses bounded while preserving useful error details. #99605 Thanks @mushuiyu886.
  • Without separate environment credentials or an auth profile, Google image generation can now use models.providers.google.apiKey and an optional custom baseUrl. #100779 Thanks @amknight.
  • Before they can stall or exhaust memory, provider setup now stops reading runaway model-discovery responses, while normal self-hosted server responses continue to work. #95244 Thanks @alix-007, @sallyom.
  • Before they can exhaust memory or leave setup hanging, Ollama model discovery now stops oversized or never-ending endpoint responses. #96027 Thanks @alix-007.
  • Replay-safe model timeouts can now advance to the next configured provider, allowing agent, chat, and cron runs to recover without repeating work that may have side effects. #96142 Thanks @brokemac79, @riazrahaman.
  • When they are running and usable, openclaw models list now reports configured local Ollama models as available. #97491 Thanks @lingfeizi, @qingminglong.
  • Before they can consume excessive memory, Ollama Cloud setup now stops oversized or malicious authentication responses, while normal sign-in remains unchanged. #97581 Thanks @hugenshen.
  • Instead of silently erasing them, rerunning provider onboarding or refreshing models now preserves operator-owned timeouts, transport settings, MiniMax models, and SecretRef credentials. #100107 Thanks @frank-beans.
  • When a native response stream ends early, Ollama requests can now continue to a configured fallback model instead of stopping with LLM request failed. #100482 Thanks @turbotheturtle.
  • With an explicit timeout longer than 30 minutes, scheduled and CLI Codex runs can now use that full budget instead of being stopped by the terminal-idle guard. #85296 Thanks @alkor2000, @vincentkoc.
  • Behind Clash, Surge, sing-box, and similar TUN proxy setups that resolve api.openai.com into fake-IP ranges, OpenAI Realtime voice and transcription sessions now start. #86526 Thanks @shushushv.
  • Instead of letting that tool break the entire OpenAI, Azure, or Google session, Realtime voice sessions now omit an individual custom tool with an invalid provider-specific name and warn about it. #89175 Thanks @vincentkoc.
  • For Codex-backed OpenAI models, /status now identifies ChatGPT login authentication as oauth (codex-cli) instead of incorrectly labeling it as an environment API key. #91240 Related #91099. Thanks @849261680, @ukstem.
  • Through the app server, authenticated OpenAI and Codex users can again see their five-hour and weekly quota windows in chat, CLI, and JSON status output. #92520 Thanks @brokemac79.
  • A missing or hung local Codex tool result no longer switches the active session to another provider that cannot resolve the local failure. #95543 Thanks @mikasa0818.
  • After a tool call, Ollama Cloud and other OpenAI-compatible Ollama chats can now continue instead of failing the next turn with a provider 400 error. #96474 Thanks @849261680.
  • Even when they incorrectly label an event stream as JSON, vLLM, Ollama proxies, and other OpenAI-compatible gateways can deliver streamed replies, avoiding an early parsing failure that previously ended the agent run. #96503 Thanks @zengwen-dt.
  • Before they can consume excessive process memory, OpenAI ChatGPT Responses streaming now cancels oversized or endless provider bodies with a clear error, while normal responses keep using the existing parser. #96762 Thanks @vincentkoc, @wangmiao0668000666.
  • For OpenAI-compatible embedding requests, oversized responses now close early with a clear provider error rather than buffering until OpenClaw stalls or memory is exhausted; normal embeddings remain unaffected. #96868 Thanks @alix-007.
  • OpenAI video generation now cuts off oversized or endless submission responses using a bounded provider error before they can hang the request or deplete memory. #96905 Thanks @alix-007.
  • Streams from OpenAI-compatible providers and proxies now stop oversized, malformed, or never-ending bodies at the affected request instead of allowing them to destabilize or crash the OpenClaw process. #96989 Thanks @vincentkoc, @wangmiao0668000666.
  • OpenAI-compatible Chat Completions now leverage OpenClaw's guarded network path, applying the same response safety controls used by other protected model calls. #97228 Thanks @vincentkoc, @wangmiao0668000666.
  • Azure OpenAI Responses now limit oversized streaming and error bodies, protecting memory while normal errors and cancellation remain intact. #97349 Thanks @wangmiao0668000666.
  • OpenAI embedding batch polling and Realtime setup now cancel oversized successful responses early and return a bounded error instead of growing memory without bound. #97533 Thanks @hugenshen.
  • OpenAI OAuth usage checks now cap oversized WHAM rate-limit responses before they can destabilize the process. #97702 Thanks @cxbasdev.
  • GPT-5.5 and other models can now send valid streaming events larger than 64 KiB through ChatGPT Responses without failing the request, though malformed unbounded streams remain restricted. #98198 Thanks @marvinthebored, @obviyus, @peetiegonzalez.
  • Custom Xiaomi MiMo and other OpenAI-compatible models without a known output limit can now complete chats instead of failing due to an artificial oversized cap. #98312 Thanks @peole, @sanjays2402.
  • openclaw agent --local now reports a clear first-event timeout when a provider opens a stream but never delivers usable output, instead of appearing to hang indefinitely. #98525 Thanks @osolmaz.
  • OpenAI-compatible embedding batch downloads now process valid large outputs while halting oversized files or JSONL records before memory exhaustion occurs. #98554 Thanks @sunlit-deng, @vincentkoc.
  • Library and integration developers can now install a version-matched package, create independent AI runtimes, and reuse OpenClaw's supported model transports without embedding the full application. #99059
  • OpenAI and Azure realtime voice connections now close inbound messages exceeding 16 MiB, reducing avoidable gateway memory pressure. #99450 Thanks @sunlit-deng.
  • ChatGPT OAuth sign-in and refresh now reject unexpectedly large token responses cleanly rather than risking Gateway memory exhaustion. #99479 Thanks @pandah97.
  • OpenAI-compatible providers routed through the GitHub Copilot BYOK harness now retain bearer authentication, reducing false 401 errors for valid credentials. #99955 Thanks @hxy91819.
  • A detail-less failure from an OpenAI-compatible provider no longer places a valid API-key profile into cooldown or forces unnecessary fallback traffic. #100617 Thanks @fengjikui.
  • OpenAI Realtime voice in Talk, Voice Call, and Discord can now use an existing Codex/OpenAI OAuth login when no explicit API key is configured. #100671 Thanks @steipete-oai.
  • OpenAI image generation can now be enabled from models.providers.openai with a usable API key and custom base URL, without also requiring OPENAI_API_KEY or an auth profile. #100745 Thanks @amknight.
  • Codex users can route both codex/* and openai/* models through the bundled runtime, and older conversations resume without unnecessary context reprojection. #105034
  • The bundled Codex plugin can complete backend requests again after updating its managed app-server runtime, with no model-picker or configuration migration required. #106098
  • OpenAI/Codex and Anthropic OAuth result pages now display OpenClaw branding instead of the legacy Pi logo. 1834592
  • OpenClaw's managed Codex workflow now uses app-server 0.143.0, and self-managed installations must use 0.143.0 or newer for protocol compatibility. 366258d Thanks @vincentkoc.
  • The managed Codex harness now surfaces supported GPT-5.6 Sol, Terra, and Luna models returned by the account catalog and provides self-managed users with current version guidance. f80ce21 Thanks @vincentkoc.
  • Managed Codex users on macOS, Linux, and Windows now receive app-server 0.144.1 instead of 0.144.0. 5dcba9f Thanks @vincentkoc.
  • With models.mode set to replace, agent startup now uses only explicitly configured providers and skips the slow implicit provider scan. #82638 Related #66957. Thanks @eldar702, @wangzhengshu.
  • Bundled provider aliases now accept supported overlay settings such as request timeouts without requiring custom-provider fields like baseUrl and models. #88400 Thanks @pluviobyte.
  • Agent runs can move to the next configured model after a provider drops a stream, while genuine cancellations still stop promptly. #90908 Thanks @shengting.
  • Switching from thinking-off mode to a reasoning-required model now selects its lowest supported effort rather than silently choosing the most expensive level. #93335 Thanks @obuchowski.
  • MiniMax M3 replies, including those routed through Fireworks, no longer expose hidden mm: reasoning in visible chat or progress output. #93767 Thanks @drhack1, @vincentkoc.
  • Hidden MiniMax reasoning no longer appears as a new iMessage or feeds back into the conversation as an echo-triggering inbound message. #93820 Thanks @alix-007.
  • Inworld text-to-speech and voice-list requests now fail safely on oversized, malformed, or never-ending responses instead of hanging or consuming unbounded Gateway memory. #95416 Thanks @alix-007, @vincentkoc.
  • Embedded-agent runs can now try the next configured fallback model after a temporary upstream LLM request failed error. #95542 Thanks @altaywtf, @mikasa0818.
  • LM Studio model discovery and startup now stop pathological server responses at a fixed size and report a clear error instead of buffering them indefinitely. #96042 Thanks @alix-007.
  • Isolated cron jobs can now use models supplied by enabled bundled plugins without failing as unknown or silently resolving to the wrong provider. #96070 Thanks @sallyom, @sunnyshu0925.
  • MiniMax OAuth device setup now limits authorization response size so a faulty proxied or self-hosted endpoint cannot exhaust Gateway memory. #96322 Thanks @lsr911.
  • Image generation now stops with a clear size-limit error when a provider or custom endpoint sends an oversized or endless response, preventing hangs and runaway memory use while valid images and edits continue normally. #96495 Thanks @hugenshen, @sallyom.
  • Azure Speech, Microsoft Speech, ElevenLabs, MiniMax TTS, OpenRouter transcription, and xAI transcription now stop oversized or endless responses before they can stall speech work or strain Gateway memory, while ordinary responses remain unchanged. #96496 Thanks @hugenshen.
  • GitHub Copilot model discovery and memory search now reject oversized or malformed responses instead of buffering them without limit, while valid catalog and embedding results continue normally. #96499 Thanks @hugenshen, @sallyom.
  • Moonshot video understanding now returns a predictable error for oversized or malformed responses instead of hanging or consuming memory indefinitely, including with custom base URLs. #96502 Thanks @hugenshen.
  • OpenRouter video model discovery now stops oversized or runaway catalog responses promptly instead of letting them consume memory without limit, while normal discovery behavior is preserved. #96505 Thanks @mushuiyu886.
  • Qwen video understanding now stops oversized or malformed endpoint responses with a clear error instead of hanging or reading without limit, while normal descriptions continue unchanged. #96604 Thanks @alix-007.
  • Google Veo video generation now ends oversized create or status responses early with a clear bounded error, preventing a broken endpoint from hanging OpenClaw or consuming memory indefinitely. #96605 Thanks @alix-007.
  • BytePlus video generation now stops oversized task-submission or status responses with a clear error before they can stall OpenClaw or exhaust memory, while normal responses continue unchanged. #96606 Thanks @alix-007.
  • GitHub Copilot usage checks now contain oversized or endless endpoint responses as a usage error instead of buffering them indefinitely, while normal usage data still loads. #96607 Thanks @alix-007.
  • Voyage embedding batch jobs now stop oversized status, failure, and error-file responses before they can hang or exhaust worker memory, while oversized diagnostics degrade safely and ordinary responses remain unchanged. #96608 Thanks @alix-007.
  • Model aliases and partial names such as opus now resolve to the newest matching version even when catalogs reach double-digit versions, preventing silent routing to an older model. #96609 Thanks @yetval, @zw-xysk.
  • Chutes login, user lookup, and token refresh now stop unexpectedly large OAuth responses with a bounded error instead of buffering them without limit. #96777 Thanks @wangmiao0668000666.
  • When token-exchange or user-info responses exceed size limits, Chutes onboarding now fails with a clear error, preventing unbounded memory growth from abnormal authentication traffic. #96779 Thanks @wangmiao0668000666.
  • Oversized JSON responses from DashScope-compatible video submission and polling are now rejected with a bounded error, avoiding memory pressure or process instability, while normal responses proceed as usual. #96782 Thanks @wangmiao0668000666.
  • OpenRouter video generation now blocks oversized submit and polling responses before they can cause OpenClaw to hang or consume runaway memory; normal-sized malformed responses keep their existing error handling. #96873 Thanks @alix-007.
  • For Volcengine, BytePlus Seed Speech, and Xiaomi TTS, oversized provider responses are now stopped before a single speech request can stall or destabilize OpenClaw. #96874 Thanks @alix-007.
  • Vydra image, video, and speech generation now returns a bounded error for oversized or endless control responses rather than hanging or exhausting memory, while valid responses continue normally. #96875 Thanks @alix-007.
  • fal music and video generation now stops oversized successful responses with a clear size-limit error before they can hang or exhaust memory; normal generation remains unchanged. #96886 Thanks @alix-007.
  • MiniMax video generation now rejects oversized task, status, or file-metadata responses before unbounded memory use or binary download begins; normal responses continue to function. #96889 Thanks @alix-007.
  • xAI video generation now stops oversized create or status responses with a clear size-limit error instead of buffering until OpenClaw hangs or consumes excessive memory. #96903 Thanks @alix-007, @vincentkoc.
  • Together and PixVerse video generation now returns a provider-labelled size error for oversized successful responses instead of continuing until severe memory pressure or process failure. #96904 Thanks @alix-007.
  • Runway video generation now stops oversized create and status responses instead of continuing to consume memory or stall; normal polling and provider-specific errors are preserved. #96907 Thanks @alix-007.
  • Google audio and video understanding now stops oversized provider responses at the shared 16 MiB limit with a clear error instead of allowing excessive memory consumption. #96920 Thanks @mushuiyu886, @vincentkoc.
  • Comfy image-generation workflows now stop oversized ComfyUI responses with the actual size-limit error instead of risking memory exhaustion or misreporting the response as malformed JSON. #96927 Thanks @wangmiao0668000666.
  • ClickClack now stops oversized REST success responses at the provider limit, giving users and operators a predictable failure instead of continued streaming and memory growth. #96970 Thanks @mushuiyu886, @vincentkoc.
  • Paginated provider catalogs now expose models beyond the first page; malformed, endless, or redirected catalogs fail safely instead of caching an incomplete list or forwarding sensitive headers across origins. #97012 Thanks @zhangguiping-xydt.
  • Long opencode-go model runs are less likely to be falsely stopped as stalled while valid provider events are still arriving. #97128 Thanks @liuwqgit, @vincentkoc, @yetval.
  • Configured Voice Call transcription providers such as xAI remain selectable when another provider registry is active, allowing Talk sessions to start normally. #97170 Thanks @solavrc.
  • OpenRouter's DeepSeek V4 Flash and Pro models can answer with thinking enabled without failing with an HTTP 400. #97208 Related #97196. Thanks @nianjiuzst, @patelmm79.
  • Proxy-backed model streams now fail with bounded, clearer errors when responses are oversized, malformed, incomplete, or idle instead of hanging or consuming unbounded data. #97235 Thanks @vincentkoc, @zhangguiping-xydt.
  • xAI and Grok OAuth sign-in now works on SSH hosts, containers, VPS systems, and other headless environments without forwarding a localhost callback port. #97249 Thanks @fuller-stack-dev, @jaaneek.
  • Missing official media providers now produce errors with the exact recovery commands needed to restore transcription and other media workflows. #97484 Thanks @wangmiao0668000666.
  • DeepInfra video generation now rejects oversized successful responses with a bounded error instead of risking an out-of-memory crash. #97486 Thanks @hugenshen.
  • OpenRouter cost tracking now caps unexpectedly large metadata responses and keeps the original streamed estimate instead of disrupting the agent turn. #97490 Thanks @hugenshen.
  • GitHub Copilot sign-in, refresh, and model-list checks now fail with labeled size limits when GitHub or a proxy returns an oversized response. #97499 Thanks @wangmiao0668000666.
  • Z.AI users can recover a profile that accidentally stored an onboarding command as the API key without wiping all authentication state. #97520 Thanks @zhangguiping-xydt.
  • Z.AI endpoint and model detection now fails gracefully on oversized or endless error responses instead of exhausting host memory. #97540 Thanks @alix-007.
  • Configured fallback chains now try an alternate model when the primary provider reports model_not_found, reducing failures after model availability changes. #97571 Thanks @liuhao1024.
  • GitHub Copilot sign-in and token refresh now reject oversized service responses with a clear error before they can exhaust OpenClaw's memory. #97579 Thanks @hugenshen.
  • GitHub Copilot device login now fails cleanly on an oversized successful response instead of risking an out-of-memory crash. #97583 Thanks @hugenshen.
  • When a configured runtime model is no longer available, chat now explains that a new session will not help and directs operators to choose an available model. #97611 Thanks @romneyda.
  • xAI sign-in, token refresh, and device approval now stop oversized OAuth responses before they can consume unbounded memory. #97615 Thanks @cxbasdev.
  • Google Meet document processing now rejects oversized Google Drive exports before they can destabilize OpenClaw; ordinary documents still export as text. #97620 Thanks @alix-007, @vincentkoc.
  • Google OAuth sign-in, token exchange, and project discovery now return a bounded error for oversized responses instead of risking a process crash. #97628 Thanks @vincentkoc, @wangmiao0668000666.
  • Mistral-compatible endpoints now stop oversized streaming responses with a labeled error before OpenClaw can run out of memory. #97648 Thanks @wangmiao0668000666.
  • MiniMax and other shared provider usage checks now fail safely on oversized or malformed replies instead of buffering them without limit. #97659 Thanks @cxbasdev, @vincentkoc.
  • Chutes sign-in and token refresh errors now include a useful bounded snippet without allowing an endpoint to stream an unlimited response into memory. #97808 Thanks @pick-cat.
  • Microsoft Foundry connection tests now stop oversized or continuously streamed error responses while preserving concise setup diagnostics. #97812 Thanks @pick-cat.
  • Z.AI and similar HTTP 429 responses now distinguish temporary service overload from ordinary rate limiting and preserve provider-supplied retry timing. #98165 Thanks @sunnyshu0925.
  • OpenRouter model probes and agent requests now use discovered environment or profile API keys correctly instead of failing with a missing-authentication-header error. #98187 Related #97934. Thanks @laurencebrown, @sunlit-deng.
  • Image and video tools can now automatically select configured provider-plugin models authenticated through environment variables. #98623 Thanks @medns.
  • A malformed Inworld voices response now produces a clear provider-specific error instead of an unhelpful parsing exception or process crash. #98660 Thanks @solodmd.
  • Nemotron 3 Super now exposes its full 1,048,576-token context budget in OpenClaw's bundled NVIDIA fallback catalog instead of compacting at the stale 262,144-token limit. #98726 Thanks @eleqtrizit.
  • Abnormally large Google Meet, Calendar, or OAuth responses now stop with an error before they can consume uncontrolled Gateway memory. #98850 Thanks @pandah97.
  • Provider failures now keep fallback error text within the configured size limit, preventing oversized responses from overwhelming logs or visible diagnostics. #99340 Thanks @pick-cat.
  • ClawRouter models selected in agent defaults now resolve at runtime when the credential is stored in an auth profile instead of the environment. #99759
  • Automatically configured video understanding now uses provider defaults such as Moonshot's intended video model unless the user selected a model explicitly. #99791 Thanks @vincentkoc, @zhangguiping-xydt.
  • Generic provider configurations for official DashScope/Qwen, Moonshot, Z.AI, DeepSeek, Groq, Cerebras, and Chutes endpoints now retain the compatibility behavior those services require even without optional plugins. #100125
  • ChatGPT OAuth-backed Responses sessions now retain backend affinity across turns, improving prompt-cache reuse and reducing repeated processing of the same conversation context. #100233 Thanks @marvinthebored, @obviyus, @peetiegonzalez.
  • Google Live voice sessions can now register and call OpenClaw tools instead of rejecting their declarations before a tool-backed turn begins. #100260
  • Direct mistral-medium-3-5 requests now send the user-selected adjustable reasoning level to Mistral as reasoningEffort. #100688 Thanks @aniruddhaadak80, @wm0018.
  • MiniMax image understanding now stops oversized or malformed successful responses at a bounded limit, protecting memory while returning a useful diagnostic. #100694 Thanks @zhangguiping-xydt.
  • LM Studio embedding preload now respects the configured context limit, reducing GPU out-of-memory failures during memory search on constrained hardware. #100750 Thanks @hxz398, @zak-li, @zoowh.
  • Hugging Face model discovery now falls back to the bundled catalog when a provider response is malformed or oversized instead of risking excessive memory use. #101079 Thanks @cxbasdev.
  • Featherless AI now has an official provider install and onboarding path, including FEATHERLESS_API_KEY, a curated featherless/Qwen/Qwen3-32B default, and support for exact Featherless model IDs. #101092 Thanks @vincentkoc.
  • The meta provider now publicly exposes the Meta Model API, accompanied by meta/muse-spark-1.1, official provider documentation, and standalone installation via npm or ClawHub. #103070 Thanks @vincentkoc.
  • https://api.meta.ai/v1 is now used by the bundled Meta provider, which also announces Muse Spark 1.1's documented output cap of 131,072 tokens and applies protections for official-host requests. #103680 Thanks @vincentkoc.
  • Before full runtime activation, trusted official external providers can present model-specific thinking choices, such as off, low, high, and max for Z.AI GLM 5.2. b4fce16 Thanks @vincentkoc.
  • For Anthropic agents routed through AWS Bedrock, Feishu Bitable write tools can stay enabled without tool definitions blocking every conversation. #94990 Thanks @twinslee, @vincentkoc.
  • Anthropic sign-in now rejects unsupported callback-host overrides, preserves authorization on standard local loopback addresses, and prevents callback failures or exposure through a non-local listener. #96917 Thanks @xialonglee.
  • When Claude CLI authentication expires, the exact recovery command claude auth login && openclaw models auth login --provider anthropic --method cli is displayed instead of a generic failure message. #97669 Thanks @alix-007.
  • For eligible direct API-key requests to Claude Fable 5, when Anthropic's safety classifier denies Fable, an Opus 4.8 answer is returned with diagnostics and clear Opus billing. #99906
  • With 1M context enabled, Claude Fable 5 now employs the expected Anthropic context1m stream setup, without impacting similar model IDs. #100572 Thanks @zhangguiping-xydt.
  • OpenClaw's guarded transport, response normalization, and managed stream cleanup are now consistently used for Anthropic-compatible model requests, rather than being bypassed through the SDK. #101357 Thanks @wangmiao0668000666.
  • After a tool failure with no visible output, Claude conversations through GitHub Copilot can continue instead of entering repeated provider-schema failures. #101373 Thanks @galiniliev.
  • Anthropic-compatible calls with token caps too small for manual thinking now run normally without thinking, rather than failing provider validation. #101415 Thanks @pick-cat.
  • Gemini CLI media analysis now returns its description even when the valid response also contains nested usage or other metadata. #96432 Thanks @lin-hongkuan.
  • MCP tools expecting arrays or objects can now accept those values when Xiaomi MiMo, Ollama, or another affected provider returns them as JSON strings, avoiding a pre-execution validation failure. #96922 Thanks @liuhao1024.
  • Repaired plain-text tool calls from LM Studio, xAI, and Ollama now emit a final completion event, allowing plugins and other streaming consumers to finish them reliably. #104714
  • Status summaries now respect provider-local model aliases, showing the selected alias without a false pinned-model mismatch warning. 1d4e789
  • Cloudflare 403 challenges on OpenAI or Codex OAuth requests now produce gateway-block guidance instead of incorrectly telling users their authentication failed. #94440 Related #94432. Thanks @lzyyzznl, @pbm9z95m6z-hue.
  • Configurations using the retired openai-codex-responses API ID now receive a validation message naming the supported replacement instead of a generic failure. #96257 Thanks @james-16, @yetval.
  • Legacy openai-codex references now direct operators to openclaw doctor --fix and openclaw models status instead of suggesting configuration that fails validation. #100120 Thanks @jason-vaughan, @sunnyshu0925, @vincentkoc.
  • OpenAI authentication errors now point ChatGPT/Codex OAuth users to a model compatible with their existing sign-in instead of recommending an outdated default. #100579 Thanks @zhangguiping-xydt.
  • Codex app-server runs with an invalid ChatGPT OAuth session now surface the real sign-in error promptly instead of waiting for a misleading ten-second authentication timeout. #100713 Thanks @lin-hongkuan.
  • Continued conversations with strict custom OpenAI Responses-compatible endpoints no longer fail on an unsupported input[n].status field and needlessly switch to a fallback model. #100831 Thanks @chenxiaoyu209.
  • Codex runs stopped by the guardian rejection limit now say why they ended, so operators do not have to mistake the result for a crash, cancellation, or generic interruption. #101220 Thanks @darren2030.
  • Codex-native delegation from OpenClaw threads now creates native task records again, while unsupported custom Codex app-server versions fail startup with a clear minimum-version error. #101221
  • Crestodian setup and repair chats on Codex-backed runs can now access the status and repair tool they need instead of stopping with a missing-tool response. #101281
  • Shared Codex app-server clients now keep usage limits, auth cooldowns, thread subscriptions, and resumed connections tied to the account and conversation that actually owns them. #101376
  • OpenAI realtime voice sessions now default to gpt-realtime-2.1 when no model is specified, while explicit model pins continue to work. #101390 Thanks @vincentkoc.
  • Codex sessions using gpt-5.5-pro or gpt-5.4-pro now clamp unsupported reasoning levels before the first turn, avoiding an immediate request rejection when live metadata is unavailable. #101484 Thanks @zhangguiping-xydt.
  • Codex app-server stdout failures now end affected requests cleanly, while a diagnostics-only stderr failure no longer interrupts an otherwise healthy turn. #101505 Thanks @mushuiyu886, @vincentkoc.
  • When an OpenAI or OpenAI-compatible chat-completions model refuses a request, users now see the provider's explanation instead of a blank assistant reply. #102344 Thanks @wuqxuan, @yetval.
  • OpenAI image generation and reference-image editing no longer crash when credentials or a custom base URL are ready before the provider model catalog finishes loading. #105518 Thanks @vincentkoc.
  • After /model changes a session's provider, /status and session_status now report that provider's usage, authentication, runtime, and context details rather than stale defaults. #93384 Thanks @obviyus, @osolmaz, @rollingshmily, @samiralibabic, @zhangguiping-xydt.
  • Model-call traces now include prompt-size and per-call token usage details, helping operators investigate cost and prompt growth without capturing raw content. #95770 Thanks @amknight.
  • Request-format and schema failures now show the relevant diagnostic without sending users through unnecessary provider login or reconfiguration steps. #95779 Thanks @pick-cat.
  • Parallel web search now returns a bounded error when an upstream response is malformed, oversized, or never-ending instead of risking a hang or out-of-memory crash. #96035 Thanks @alix-007.
  • Exa searches now reject responses above the supported limit, preventing excessive provider output from hanging OpenClaw or creating memory pressure. #96038 Thanks @alix-007.
  • Existing xAI and Grok OAuth sessions using the retired token endpoint can renew after expiry without forcing another browser or SSH-tunneled login. #96146 Thanks @fuller-stack-dev, @jaaneek.
  • OpenRouter scans now interpret model names such as 8b-70b by their larger parameter size, improving minimum-size filters and small-model security warnings. #96288 Thanks @ly-wang19.
  • /model default now actually returns an active session to its configured model after steering, fallback, or a previous manual selection. #96318 Thanks @marsman-lab, @sunnyshu0925.
  • Media-generation catalogs now keep the correct default model marker even when provider metadata includes harmless surrounding whitespace. #96430 Thanks @lin-hongkuan.
  • OpenRouter sign-in now fails safely on oversized replies, and Discord webhook sends remain successful when their optional response body is absent, malformed, or too large. #98098 Thanks @lwy-2.
  • Reference-image edits through Fal-hosted Grok Imagine and Nano Banana 2 Lite now reach the correct service, while mixed-model fallbacks honor each candidate's supported resolution and reference limits. #98688 Thanks @davenicoll, @vincentkoc.
  • When parsing of malformed Voyage embedding batches fails, their download connections are now closed, which reduces resource accumulation during repeated or heavy workloads. #98840 Thanks @solodmd.
  • For short non-English audio, the configured language hint is now preserved without an unrelated English prompt, cutting down on accidental translation when users expect a transcript in the spoken language. #99023 Thanks @flyveryhigh, @nianjiuzst.
  • Switching a live Control UI or TUI session through a provider-qualified model alias now saves the canonical provider and model, preventing rejection of the next request. #100209 Thanks @sahilsatralkar.
  • In Gateway chat, mixed provider messages are now classified as rate limits when throttling is the actual failure, giving users recovery guidance that matches the real issue. #100755 Thanks @pick-cat.
  • Agents created by copying credentials now keep the source agent's portable provider-profile priority instead of unexpectedly selecting a different credential. #100833 Thanks @machine3at.
  • OpenRouter completions billed at $0 by the provider are now recorded as free in transcripts, summaries, logs, and usage totals, rather than being replaced with estimated catalog pricing. #101177
  • Provider credentials entered or updated through the CLI now appear in the running Gateway and Control UI model picker without requiring a manual secrets reload or restart. #101256 Thanks @fuller-stack-dev.
  • openclaw status and session_status now detect when a session uses a fallback model and display the configured primary model alongside it. #101337 Thanks @lzy3538.
  • MiniMax TTS now clearly explains that volume must be greater than 0 and can go up to 10 when a directive is invalid. #101359 Thanks @quratulain-bilal.
  • Errors from MiniMax VLM and the native PDF provider now remain readable when emoji or other supplementary characters appear at the diagnostic snippet limit. #101728 Thanks @wings1029.
  • Very long OpenRouter Fusion model IDs now stay as valid Unicode in the agent prompt, instead of showing a corrupted character when an emoji reaches the display limit. #104433 Thanks @zhangguiping-xydt.
  • OAuth-backed models become available in Gateway model browsing after credentials are renewed from another CLI process, without needing a Gateway restart. #104732 Thanks @fuller-stack-dev.
  • Provider onboarding no longer writes an empty request block when no request overrides were supplied. 3a0a736 Thanks @vincentkoc.
  • The diagnostics timeline now shows when provider model calls ran, their duration, and whether they succeeded, without recording prompt or response content. 7253552 Thanks @vincentkoc.

Memory and conversations

Recall, long chats, and session continuity

Memory indexing, recall, wiki synchronization, and search now recover from more malformed pages, stale status, large indexes, transient reads, and provider mismatches, without hiding useful stored context or overwriting user notes. When a result is incomplete or a configured memory provider is unavailable, the failure is clearer rather than appearing as a complete answer.

Sessions, transcripts, compaction, goals, and routing also preserve the intended conversation more consistently across restarts, resets, delayed follow-ups, tool-heavy runs, and client changes. The practical outcome is less missing history, fewer replies stored against the wrong session, and more dependable continuation of long-running work.

Sources and contributors

  • OpenClaw's managed dreaming markers and adjacent managed content are now excluded from MEMORY.md when durable memory promotion encounters a recalled range at a block boundary. #83718 Thanks @grifjef.
  • The LLM reranker is skipped in QMD search and vsearch modes, cutting latency and preventing unnecessary GPU failures, while full query mode continues to apply reranking. #88887 Thanks @potterdigital.
  • After temporary model or network extraction failures, inferred follow-up commitments return to the queue, cutting down on missed reminders without duplicating processing. #89817 Thanks @masatohoshino.
  • Pages titled Index in memory-wiki are now stored, searchable, and retrievable instead of being concealed or replaced by auto-generated directory pages. #94326 Thanks @vincentkoc, @yetval.
  • Active Memory now flags potentially stale recalled operational details and explicitly marks clipped summaries, so outdated or incomplete status is less likely to appear current. #95888 Thanks @spencer2211.
  • Memory-wiki pages inside subfolders now appear in search, lookup, compiled indexes, digests, and vault counts, just as top-level pages do. #96022 Thanks @machine3at, @vincentkoc.
  • Large memory indexes can now return filtered matches beyond sqlite-vec's initial 4,096 candidates without failing or silently omitting valid results. #96157 Thanks @itsuzef, @vincentkoc.
  • After the first lookup, repeated QMD-backed memory_search and openclaw memory search requests can respond faster, while diagnostics separate setup time from search time and missing collections still trigger repair. #96655 Thanks @bek91.
  • Memory search now functions with installed generic embedding plugins, including local llama.cpp, using their default model and connection details. #97095 Thanks @849261680.
  • A single memory-wiki page with broken YAML no longer prevents healthy pages from being searched, compiled, linted, counted, or updated. #97177 Related #96125. Thanks @cow11023, @sunnyshu0925.
  • Memory-core light dreaming no longer repeats an unchanged work-summary block in DREAMS.md, though genuine daily-note updates can still appear later. #97446 Thanks @aaajiao, @qingminglong.
  • Claims with malformed explicit freshness timestamps are now marked as unknown by Memory Wiki instead of hiding the bad metadata behind the page date. #97465 Thanks @ly-wang19.
  • Detailed /status plugins now issues a warning when a configured memory embedding provider is unavailable and semantic recall has fallen back to keyword search. #97968 Thanks @masatohoshino.
  • Memory Wiki lint now ignores link-like text inside inline and fenced code, while still reporting genuine broken links in prose. #98095 Thanks @durambar, @vincentkoc, @zhangquiping.
  • Hand-written Notes are preserved by memory-wiki source updates when a temporary read failure prevents OpenClaw from safely loading the existing page. #98360 Related #98345. Thanks @qingminglong, @vincentkoc, @yetval.
  • Malformed or warning-filled mcporter output is now turned into a clear, filtered error by QMD memory recall instead of exposing raw subprocess text. #98381 Thanks @miorbnli.
  • Memory-wiki source sync can now recover when a page is missing or collides with a non-file, and existing content is preserved when a retry remains unsafe. #99276 Thanks @obviyus.
  • memory_get with corpus=all can now return an available wiki supplement when the requested memory file is missing, rather than stopping with an empty result. #100904 Thanks @mushuiyu886, @vincentkoc.
  • iOS voice notes now stay with the intended chat and recover more reliably across offline queues, app recreation, uncertain sends, and competing microphone use. #101236
  • When a source page collides with a protected vault entry, Memory Wiki imports continue rather than halting the entire import. 76db9a3 Thanks @vincentkoc.
  • With memorySearch.provider: none, OpenClaw now starts FTS-only memory without performing an unnecessary plugin capability scan. fbf574a
  • After /new or /reset, the previous conversation remains available for daily memory summaries and full-history searches through the session-logs skill. #71537 Thanks @injinj.
  • Important conversation context now gets a chance to reach durable memory before automatic compaction when memory flush is enabled, reducing silent gaps in saved notes. #84792 Thanks @turbotheturtle.
  • Images shared from iOS or through node agent.request now remain attached to the correct conversation turn after history reload, so later messages can still use them. #86936 Thanks @peterdsp.
  • A group chat or Gateway session can now resume on the next visible request after a failed, timed-out, or killed turn without needing /new or manual session-file edits. #89045 Thanks @jerry-xin.
  • Voice Call history now stays with the correct configured agent across Gateway restarts and upgrades, while ambiguous legacy state is left untouched with actionable warnings. #89884 Thanks @mushuiyu886.
  • Interactive QMD memory searches with no matches now return an empty result promptly instead of appearing stuck during unnecessary index maintenance. #90030 Related #90023. Thanks @ruben2000de, @sahibzada-allahyar.
  • Gateway and embedded TUI startup now reclaim old session temporary files left by hard shutdowns, reducing hidden disk growth while preserving fresh or potentially recoverable state. #90503 Thanks @sahibzada-allahyar.
  • Shared group and channel transcripts now retain the sender ID, display name, and username for each durable user turn, so later history and memory processing correctly attribute participants. #90552 Thanks @pick-cat.
  • /export-session now warns when a CLI- or ACP-backed export contains only user messages and points users to the backend transcript for missing assistant, tool, usage, and cost details. #90867 Thanks @tank-x3, @vincentkoc, @xydigit-sj.
  • Stale one-shot model-check sessions can be cleared by long-running gateways before they crowd out real conversation history, with dedicated CLI reporting for review. #91057 Thanks @jalehman, @wangwllu.
  • openclaw export-trajectory and /export-trajectory now include redacted messages from older version 1 sessions instead of producing a successful but empty transcript. #93814 Thanks @yetval.
  • Session-memory files created around /new and /reset now keep one copy of each assistant reply instead of duplicating reasoning-model responses. #94401 Thanks @sallyom, @sunnyshu0925.
  • Raw transcript, summary, session-header, flush-prompt, and scoring clutter are now omitted from newly promoted long-term memories, making useful notes easier to find. #94636 Thanks @josephur, @pinghe-learn, @tayoun.
  • Long CJK-heavy sessions using a context engine such as lossless-claw no longer stop on a false prompt too large precheck after the engine has already managed the prompt. #95342 Thanks @jalehman, @mpz4life.
  • Estimates for large CJK tool outputs have been refined, cutting down on false context-overflow alerts and early compaction. #95447 Thanks @moguangyu5-design, @vincentkoc.
  • openclaw doctor --fix can now bring forward legacy Memory Core indexes from 2026.6.9 upgrades into the current store without requiring a complete re-embed. #95631 Thanks @mushuiyu886, @vincentkoc.
  • When an embedded run times out or is aborted, its session write lock is released so the next message can proceed without waiting minutes or needing manual file cleanup. #96100 Thanks @richwilson-bloom, @sallyom, @xialonglee.
  • Prompts with fullwidth East Asian characters now get more precise size estimates, letting context management start before an oversized request reaches the model. #96442 Thanks @lin-hongkuan.
  • Dreaming now excludes deleted or reset transcript archives and cron-created child conversations from its learned session set, cutting down on duplicate history and automation noise without removing retained archives from historical search. #96517 Thanks @adam-researchh, @jalehman, @xialonglee.
  • Compacted agent history now correctly shows genuine tool failures instead of repeatedly mislabeling successful subagent launches, even when older transcript records contain the wrong error flag. #96842 Thanks @nxmxbbd.
  • Replies that cross an automatic daily or idle reset now stay together in one accessible transcript instead of losing later output. #97164 Thanks @joshavant, @yetval.
  • Invalid transcript entries now produce a visible write error rather than becoming undefined JSONL lines that silently disappear after reload. #97356 Thanks @miorbnli.
  • Memory Wiki import summaries now shorten ChatGPT text containing emoji without leaving corrupted replacement characters. #97362 Thanks @mushuiyu886.
  • openclaw sessions cleanup --fix-missing now keeps fresh cron sessions with valid transcripts and clearly reports entries that were repaired. #97495 Thanks @qingminglong.
  • Long conversations now recover compaction after a transient provider disconnect instead of replacing useful history with a degraded placeholder summary. #97504 Thanks @hugenshen.
  • Automatic recovery from provider role-ordering conflicts now archives the complete prior transcript as a timestamped JSONL file before replaying a shorter tail. #97544 Thanks @yungchentang.
  • Long conversations using historyLimit or dmHistoryLimit now keep their saved earlier summary after compaction, helping the assistant remember prior context. #97591 Thanks @liuhao1024, @yetval.
  • Resuming work from a project now opens only that project's saved agent session, preventing unrelated transcripts from being mixed together. #97785 Related #96542. Thanks @qingminglong, @yetval.
  • openclaw memory status now warns when session transcripts still need indexing instead of incorrectly reporting memory as current. #97857 Related #97814. Thanks @che10x, @zw-xysk.
  • Compacted group conversations now keep identical long messages from different participants while still removing accidental duplicate retries from the same sender. #98336 Thanks @sunnyshu0925, @yetval.
  • Recurring provider-CLI cron jobs and local openclaw agent runs now keep their existing provider conversation across the daily reset boundary instead of silently losing context. #98356 Thanks @yetval.
  • Transcript summary and import reads now close files reliably after malformed data, preventing long-running processes from gradually exhausting file handles. #98493 Related #98467. Thanks @wangmiao0668000666, @zhanglei99586.
  • Rerunning memory-wiki synthesis or ChatGPT imports no longer risks erasing handwritten notes, frontmatter, or import state when an existing page cannot be read briefly. #98787 Thanks @vincentkoc, @yetval.
  • Discord, WebChat, and other ongoing conversations can keep receiving replies when background activity touches the same session during reply startup, without a false initialization conflict or dropped message. #98835 Related #98672. Thanks @aaronfaby, @jalehman, @moguangyu5-design.
  • Reopened sessions can now replay older string or single-object tool results correctly instead of treating successful output as empty or failing on its stored shape. #98891 Related #98825. Thanks @obviyus.
  • Older or imported sessions with plain-string assistant messages now replay correctly across provider and streaming paths instead of sending malformed conversation history. #98908 Thanks @obviyus.
  • Agents in long-running WebChat, Discord, and other direct sessions can keep reading fresh command, file, browser, and status output instead of seeing it disappear or turn into an image placeholder. #98955 Related #98874. Thanks @lamkan0210, @momothemage.
  • Resetting a multi-agent room now restores message delivery promptly instead of blocking most agents' acknowledgement and queued replies for several minutes. #99091 Thanks @gorkem2020, @zengwen-dt.
  • Long Codex conversations with heavy tool use can now compact at a real history boundary and continue with relevant tool results summarized instead of retaining the full transcript. #99391 Related #99375. Thanks @imchloe92, @lzy3538.
  • Rapid follow-ups in the same chat no longer freeze both messages while the first automatic reply is finishing. #99549 Thanks @shagrat2.
  • Claude CLI-backed interactive replies now keep their saved session more consistently, preserving continuity and reducing repeated full-history replay. #99595 Related #99372. Thanks @obviyus.
  • CLI-backed agents in multi-person group chats now retain conversational context when participants alternate, without expanding non-owner tool permissions. #99640 Related #99633. Thanks @obviyus.
  • Claude CLI chat history reloads no longer display OpenClaw's internal reseed wrapper as if it were a message the user typed. #99653 Related #99646. Thanks @harjothkhara, @jeehut, @vincentkoc, @zoowh.
  • Local-model sessions now retain auto-compaction bookkeeping, reducing repeated context refills and the unresponsive behavior they could cause. #99678 Related #99677. Thanks @headbouyjb, @vincentkoc.
  • CLI-backed group agents now keep one warm conversation across mentioned and unmentioned follow-ups instead of resetting and losing context. #99722 Related #99696. Thanks @obviyus.
  • Long, tool-heavy agent sessions now preserve the newest command, file, or browser result for the model while shortening older history first. #99756 Thanks @acosx.
  • CLI-backed agents now keep conversation continuity across prompt-only changes, avoiding needless cold starts while still resetting when security or runtime conditions require it. #99822 Related #99729. Thanks @obviyus.
  • Imported Claude CLI history now keeps image-only and attachment-bearing turns visible when removing empty legacy reseed text. #99839 Thanks @vincentkoc.
  • Claude CLI model fallback now carries the prior tool-call trail alongside tool results, giving the replacement model enough context to continue coherently. #99851 Thanks @vincentkoc.
  • Long cached Anthropic tool sessions now compact near the configured context threshold instead of interrupting work early because cumulative cache tokens looked like live context. #99864 Thanks @jrex-jooni, @lzy3538, @vincentkoc.
  • Long-lived agents with large context windows now retain fresh tool output, compact under aggregate pressure, and warn users to run /compact or /new if pressure persists. #100077 Thanks @obviyus.
  • After history cleanup, long-running agents can now retrieve complete command output and truncated web_fetch content, cutting down on costly repeated work and preventing loss of page context. #100135 Thanks @obviyus.
  • When a transcript file is missing, transcript-backed history now treats it as empty while still reporting real access, directory, or stream failures clearly, instead of leaving partial or unhandled outcomes. #100524 Thanks @cxbasdev, @zhanglei99586.
  • Transient memory-maintenance failures no longer overwrite the agent reply, and persistently oversized sessions can recover in a new session while keeping the previous transcript intact. #100618 Thanks @jerry-xin, @rhclaw.
  • Small-context local models can now start and continue conversations without immediately falling into an overflow-compaction loop before useful prompt space becomes available. #100621 Thanks @vincentkoc.
  • Long sessions that compact incrementally now maintain clearer ordering from older to newer when summaries are combined, lowering the risk that stale context appears equally recent. #100684 Thanks @vincentkoc, @zw-xysk.
  • Transient transcript read failures no longer disrupt session-log diagnostics or allow an incomplete usage scan to overwrite the last complete cost cache as though it were current. #101062 Thanks @cxbasdev, @vincentkoc.
  • Context-engine plugins can now identify the exact session that continues after compaction, while older integrations using sessionFile remain compatible. #101182 Thanks @jalehman.
  • In an auto-reply flow, a first command-only interaction now preserves its session update even when no session row existed beforehand. 76d686c
  • Memory Core now keeps short standalone concepts like kv and s3 in tags, improving recall without matching them inside unrelated words. #96304 Thanks @ly-wang19.
  • Memory dreaming now records structured success or failure outcomes for light, REM, and deep phases, enabling dashboards and health checks to monitor them reliably. #97723 Thanks @lg320531124, @momothemage.
  • openclaw wiki lint now ignores wikilink-like patterns inside code examples, making real broken Memory Wiki links easier to spot. #97954 Thanks @durambar, @liuhao1024, @vincentkoc.
  • Mac users now get stronger protection for local OpenClaw SQLite data after sudden power loss or an operating-system crash, with no configuration changes needed. #99067 Thanks @ooiuuii.
  • openclaw wiki lint now recognizes valid imported Obsidian links by title, slug, fragment-free path, or source-path suffix, cutting down on false broken-link warnings. #100017 Thanks @ishangodawatta, @k-kerrigan, @vincentkoc.
  • Memory-wiki bridge status now returns a usable warning instead of crashing on malformed plugin artifacts, and readMemoryArtifacts: false now reliably prevents those reads. #100900 Thanks @huvewomg.
  • Wiki search and retrieval now explain when an older or partial memory plugin lacks shared-search support and offer a practical workaround instead of exposing a raw TypeError. #100902 Thanks @huvewomg, @vincentkoc, @xuanmingguo.
  • Embedded agents now receive well-formed summaries of long media or JSON values instead of broken characters at Unicode truncation boundaries. #101311 Thanks @alix-007.
  • Memories containing emoji or supplementary CJK characters can now be indexed without malformed text stalling the operation. #101574 Thanks @jensenwang560-blip.
  • When both a primary memory read and its wiki supplement fail, memory_get corpus=all now returns the original structured read error instead of crashing the tool call. #101902 Thanks @aniruddhaadak80, @vincentkoc, @zw-xysk.
  • Memory-index debug logs now show whether an embedding batch completed or failed, making indexing problems easier to trace. #94732 Thanks @doubleji817-lang, @xydt-tanshanshan.
  • openclaw memory status --fix now repairs session-corpus state without mistaking healthy daily-memory records for stale data. #93389 Thanks @alix-007, @vincentkoc.
  • openclaw memory status no longer shows impossible session indexing totals where the indexed file count exceeds the total file count. #95452 Thanks @buyitsydney, @liuhao1024.
  • Malformed transcript rows now produce an aggregate warning with skipped and loaded counts while the remaining usable session history continues to load. #98669 Thanks @cxbasdev.
  • Sessions renamed with /name now keep that custom name in session lists instead of reverting to an automatic title or UUID-like label. #98841 Related #98742. Thanks @bsg2000, @sunnyshu0925.
  • Preparing a reset for a long-running session now avoids scanning the entire transcript, reducing startup file activity and memory use as history grows. #99335 Thanks @gmschasiepen, @momothemage.
  • Transcript tools can now identify channel delivery mirrors as OpenClaw bookkeeping rather than mistaking them for OpenAI Responses output. #99855 Thanks @vincentkoc.
  • A successfully completed main-agent conversation now continues in the same session on the next message instead of unexpectedly resetting and archiving its transcript. #99985 Thanks @sunnyshu0925.
  • Debug-proxy ACP runs now shut down cleanly, mark capture sessions finished, and close their capture databases without reporting a spurious database error. #100827 Thanks @amknight.
  • Media-provider audit details containing emoji now remain valid and readable when shortened, instead of ending with malformed characters. #101298 Thanks @alix-007.
  • Long agent prompt data containing emoji or other paired Unicode characters now stays well-formed when capped, avoiding broken text in agent and automation context. #101303 Thanks @alix-007.
  • Archived memories around user messages that begin with [cron:] remain searchable after a session reset or deletion, while genuine cron-generated archives stay hidden. #101322 Thanks @ly-wang19.
  • openclaw sessions tail now rejects oversized trajectory snapshots and updates with a clear limit error before they can exhaust memory. #101450 Thanks @cxbasdev, @vincentkoc.
  • Long usage and session log messages now truncate emoji cleanly instead of displaying malformed character artifacts. #101517 Thanks @maweibin.
  • Dashboard session labels and display names now remain attached when a session rolls over after a day or idle period. #101576 Thanks @merlin-zhou, @zengwen-dt.
  • Session-memory diagnostics now show the correct workspace and memory-file paths for sibling directories whose names merely resemble the user's home path. #101577 Thanks @cxbasdev.

Agents, background work, and connections

Keeping work moving and replies delivered

The Gateway now starts, connects, reloads, and reports health with clearer behavior across configuration, networking, task routing, and result delivery. Agents are less likely to lose their selected workspace or conversation, background work reaches the right destination more consistently, and tool failures can stay out of chat progress when a useful final reply is still available.

The Gateway protocol and restart recovery paths also reject invalid state more clearly and keep inspection available during common lifecycle failures. Skill loading and prompt overhead are steadier as well, with skill controls avoiding unnecessary work and preserving cache fingerprints for the text providers actually receive.

Sources and contributors

  • Legacy subagent sessions now respect their actual nesting depth, so nested-agent limits and controls no longer default to top-level behavior. #54593 Thanks @ruanrrn.
  • Timed-out cron jobs, expired agent requests, and disconnected HTTP clients now stop promptly rather than spending additional time and provider calls on model fallback. #62682 Thanks @altaywtf, @cinapbot, @simonusa.
  • Channel replies can resume as soon as an embedded-agent turn completes, instead of waiting about 50 seconds for post-run authentication bookkeeping. #85829 Thanks @turbotheturtle.
  • Provider failures involving BigInt, circular objects, or other unusual values now produce the intended structured transport error instead of crashing the error-reporting path. #88401 Thanks @pluviobyte.
  • Experimental local-model lean mode now provides a smaller default tool menu for constrained models, while operators can explicitly keep media, voice, or PDF tools via allowlists. #88881 Thanks @vincentkoc.
  • Embedded agents now keep configured compaction reserve limits when runtime safeguards save settings, reducing unexpected context-budget shrinkage during long work. #92237 Thanks @sercada.
  • Subagent completion notices now arrive once instead of being repeated when the requesting session changes during delivery. #92274 Related #91527. Thanks @fsdwen, @obviyus, @zackchiutw.
  • Isolated cron jobs can announce a cross-session result without feeding the recipient's reply back into the cron run and creating duplicate message loops. #92283 Related #92257. Thanks @harjothkhara, @nailujac, @vincentkoc.
  • Telling an agent to remember a preference no longer triggers the unrelated warning used for promises to schedule an automatic reminder. #93862 Thanks @arkyu2077.
  • Slack and similar channel turns with context-injecting plugins now send each inbound system label to the model once instead of duplicating it. #95349 Thanks @gorkem2020, @openperf, @vincentkoc.
  • Anthropic sessions stuck on a thinking-signature replay error can now retry once without invalid thinking blocks and continue without /new or transcript repair. #95430 Related #95429. Thanks @alexelgier, @lzyyzznl, @vincentkoc.
  • Truncated agent logs and diagnostic previews now keep emoji and other extended Unicode characters intact at the cutoff. #96296 Thanks @ly-wang19.
  • Embedded openclaw agent --local runs using OpenAI-compatible providers now report and save streamed token usage instead of showing zero, improving session, context, cost, and monitoring records. #96523 Thanks @ly85206559, @vincentkoc.
  • Successful embedded-agent subagent launches now remain successful in transcripts and later compaction summaries instead of being recorded as tool failures, while real launch failures stay visible. #96851 Thanks @neomail2, @parveshsaini.
  • Codex-runtime transcripts and compaction summaries now keep successful subagent launches and goal operations out of failure records, while genuine failures remain visible and accepted-launch hooks can run. #96856 Thanks @nxmxbbd.
  • Long agent grep lines now truncate emoji and uncommon CJK characters cleanly instead of ending with corrupted replacement symbols. #97559 Thanks @zenglingbiao.
  • Telegram PDFs and other documents now provide agents with a usable local path so normal runner tools can open the attachment. #97647 Thanks @gallup007, @joshavant.
  • Agents can now read structured JSON and resource tool results during provider replay instead of receiving an empty result or generic media placeholder. #97742 Thanks @obviyus.
  • Sessions with large command output or summaries now compact before exceeding the model context, avoiding failed provider requests and misleading token budgets. #97861 Thanks @yetval.
  • Long tool-heavy or compacted sessions now budget the real size of command output and summaries before sending a prompt, reducing context overflow failures. #97928 Related #97927. Thanks @liuhao1024, @yetval.
  • Claude CLI conversations that exhaust their context now recover into a fresh reseeded session automatically, and timeout retries retain the temporary files they need to complete. #98934 Related #98897. Thanks @obviyus.
  • Local Ollama-backed CLI agent turns can now continue when the context engine reports an already-compacted transcript, allowing the assistant or MCP tool result to reach the user. #99136 Thanks @mushuiyu886, @peterskwang, @pkoserowski, @psedd.
  • Codex-backed runs can now deliver a completed final answer instead of timing out or appearing aborted when the final completion event is missing. #99217 Thanks @100yenadmin, @fuller-stack-dev, @sedrak-hovhannisyan.
  • Interactive chat requests that end in a terminal failure now receive one visible error response instead of appearing to be ignored. #99304 Thanks @grox2012, @moeedahmed.
  • Successfully started subagents now remain visible in /subagents list and subagents(action="list"), including when different sessions own control and completion. #99410 Related #75593. Thanks @aaajiao, @sheyanmin.
  • Codex app-server agents can again list allowed agents, spawn OpenClaw or ACP subagents, and yield during delegated work without resumed heartbeats hitting incompatible tool definitions. #99561 Related #99464. Thanks @100yenadmin, @joshavant.
  • OpenClaw no longer crashes when a supervised child output stream fails immediately after launch. #99802 Thanks @cxbasdev, @vincentkoc.
  • MCP stdio sessions now report stderr pipe failures as transport errors without taking down OpenClaw or losing available diagnostics. #99803 Thanks @cxbasdev, @vincentkoc.
  • ACPX MCP proxies now turn closed input or output pipes into a clear proxy failure instead of an uncaught Node stream crash. #99852 Thanks @sunlit-deng, @vincentkoc.
  • Images attached to a CLI-backed prompt now survive embedded-model fallback, preserving the visual context needed to answer. #99891 Thanks @vincentkoc.
  • Messages mixing inline and offloaded images now preserve every attachment position so model instructions that depend on sequence remain accurate. #99902 Thanks @vincentkoc.
  • Requester agents now receive a follow-up when an accepted sessions_send delivery later fails because the target session is locked, so they can retry or choose another route. #99907 Thanks @849261680, @alex-heyuqing.
  • Operators can now set OPENCLAW_SANDBOX_IMAGE to build revision-specific sandbox image tags for controlled rollout and rollback. #99915
  • Agent sessions are less likely to lose output, alter unrelated formatting, stall after temporary provider errors, reject BMP images, or drop longer ChatGPT connections. #99949
  • Images from the current prompt now reach CLI fallback attempts in the right order, without pulling stale image references from earlier retries or history. #100035 Thanks @vincentkoc.
  • Long Claude CLI-backed runs now show honest Thinking... (~N tokens) activity for direct and queued work instead of appearing stalled when readable reasoning text is unavailable. #100148 Thanks @obviyus.
  • Edge-case fixes now preserve literal memory text and valid Unicode, improve voice-call cleanup and port checks, report Claude models and context limits accurately, and retain useful ClickClack connection errors. #100204 Thanks @cxbasdev, @harjothkhara, @lilan0125, @lin-hongkuan, @liuhao1024, @mikasa0818, @pandah97, @sunlit-deng, @zoowh.
  • Emoji and other supplementary characters now remain intact when long agent progress or active-memory recall text is shortened. #100244 Thanks @vincentkoc, @xialonglee, @zengwen-dt.
  • Sub-agents and other HTTP loopback MCP clients can again receive browser screenshots and valid image or embedded-resource results without schema failures. #100336 Thanks @tzy-17.
  • Interactive turns that truly end without visible output now send a clear failure reply, while intentional silence and already-completed actions remain quiet. #100474
  • Batched media replies can now finish successfully after delivery without a misleading session-change failure, while active conversation ownership checks remain enforced. #100490 Thanks @scotthuang.
  • Fresh Claude CLI workspaces now run a pending BOOTSTRAP.md on the first reply so required identity, memory, and setup steps are completed before normal conversation. #100560 Thanks @bill-starfoundry, @kruegerb, @vincentkoc.
  • Completed answers from tool-using tasks now reach the user instead of being replaced by an incomplete-turn error, with run metadata attached to the same final response. #100655 Thanks @liuwqgit.
  • Shell snapshot capture and validation no longer crash OpenClaw when an unused helper-process output pipe reports a stream error. #100744 Thanks @lsr911, @vincentkoc.
  • A node-host system.run stream failure now produces a clear failure result rather than crashing the node host, and a child that refuses to stop is killed after one second. #100849 Thanks @cxbasdev.
  • Extended agent runs are less prone to losing workspace instructions like AGENTS.md, SOUL.md, or MEMORY.md for a single turn during a transient filesystem error. #100910 Thanks @masatohoshino.
  • Docker-backed sandbox file and shell commands now fail quickly with the original input-stream error instead of crashing, hanging, or staying pending. #101032 Thanks @cxbasdev.
  • After upgrades, resets, and compaction, existing Codex sessions can resume their bound threads more dependably without relying on leftover transcript-side JSON files. #101210
  • Lean local-model agents can now use the familiar exec tool directly when policy allows, while existing allowlists, sandboxing, approvals, and hooks still regulate command execution. #101607 Thanks @vincentkoc.
  • Shortened text throughout CLI output, diagnostics, plugin messages, previews, errors, task summaries, and Zalo sends now keeps complete emoji and other supplementary characters intact. #101654 Thanks @lsr911, @maweibin, @wm0018.
  • Across OpenClaw, long names, labels, summaries, previews, titles, and diagnostics now truncate without breaking emoji or other supplementary Unicode characters. #101685 Thanks @lsr911, @ly85206559, @maweibin, @wings1029.
  • Bounded text in Parallel searches, compaction, telemetry, presence, Workboard, badges, and Control UI metadata now retains or omits whole Unicode characters instead of producing malformed fragments. #101711
  • Long streamed replies now split only between complete Unicode characters, keeping emoji intact in plain text and fenced Markdown even under tight message limits. #104441 Thanks @mushuiyu886.
  • Embedded agent runs without a session key now retain the intended fallback session context more dependably. 31a65e0 Thanks @vincentkoc.
  • When shortened, long status messages and command output stay readable without splitting emoji or non-English characters into garbled text. 2e7ffca Thanks @vincentkoc.
  • Using /stop during a late-aborting prompt no longer leaves a stale session lock that blocks the next turn in the same conversation. f8016c4
  • A malformed custom tool in realtime Talk no longer removes the built-in consult tool or other valid custom tools from the session. 170150a Thanks @vincentkoc.
  • Busy or slower hosts now give Codex native permission checks and pre-tool hooks more time to finish, reducing dropped policy decisions. 123ec16 Thanks @vincentkoc.
  • A yielded Codex native subagent's completion now reaches its parent run before the shared app-server connection is cleaned up. 2f89de8 Thanks @vincentkoc.
  • Long agent runs can now resume from a valid conversation boundary after compaction recovery instead of wedging or incorrectly demoting the selected model. 486033b Thanks @mettlyz11, @neltomw, @obviyus.
  • Embedded agent jobs with an explicitly longer timeout now keep their lane until that requested deadline instead of being recovered at the default limit. 1437512 Thanks @vincentkoc.
  • A successfully delivered heartbeat notification no longer leaves stale recovery state that can block later heartbeat alerts or check-ins. #83187 Thanks @agocs.
  • A Codex reply delivered through sourceReplyDeliveryMode: "message_tool_only" now completes its turn promptly instead of later ending as an incomplete reply. #95942 Thanks @omarshahine.
  • Local-model conversations now retain reusable prompt work when switching between interactive chats and background jobs, avoiding repeated multi-minute warm-up delays. #98267 Related #98261. Thanks @headbouyjb.
  • Mobile, WebChat, consult, and other chat.send clients can apply a one-time thinking level without losing the assistant reply or having the message mistaken for a text command. #98855 Thanks @jesse-merhi.
  • Sandboxed auto-replies now wait for remote media copied over SCP to finish and report transfer failures without crashing or cleaning up too early. #100861 Thanks @cxbasdev.
  • Codex app-server installations using the retired on-failure approval policy now upgrade to the supported on-request behavior without losing saved bindings. 70153f7 Thanks @vincentkoc.
  • Existing Codex app-server conversations with dynamic tools can resume through the tool-fingerprint format upgrade instead of starting an avoidable replacement thread. 3051748 Thanks @vincentkoc.
  • Legacy Codex bindings with large tool or MCP configurations can now migrate without overflowing plugin-state records or copying raw configuration secrets. 23228b6 Thanks @vincentkoc.
  • Upgraded Codex installations can now finish legacy binding migration and archive old sidecars instead of repeatedly retaining them after an earlier partial import. 39fac06 Thanks @vincentkoc.
  • Codex sessions created in beta 5 can keep their existing conversation after upgrade when the user MCP configuration is unchanged, without retaining its authorization token. 272750d Thanks @vincentkoc.
  • Completed or expired exec approvals no longer add misleading follow-up warnings, making the remaining dispatch warnings more useful for spotting real delivery failures. #66685 Thanks @pfrederiksen.
  • Large agent and subagent workloads now place less memory pressure on the Gateway because completed run snapshots are bounded while results still remain available to active waiters. #77973 Related #77976. Thanks @fede-kamel, @vincentkoc.
  • Local Gateway approval read or write failures now return a consistent UNAVAILABLE response instead of a generic handler error. #79861 Thanks @martins-oss.
  • Parent sessions waiting on a subagent now receive the subagent's actual hard-timeout phase and timestamps instead of a generic timeout. #89367 Thanks @pick-cat.
  • Agent requests with several MCP servers now initialize those servers concurrently, shortening the wait before the model begins while isolating slow or failed servers. #94230 Thanks @mmyzwl, @vincentkoc.
  • Restarting the Gateway during a deferred channel reload no longer starts the same channel twice, avoiding webhook port conflicts and repeated restart failures. #94964 Related #79487. Thanks @lzyyzznl, @tseller.
  • External tools can now receive session-scoped Gateway access without process-wide credentials or permission to impersonate another session, forming the secure base for openclaw attach. #96351 Thanks @anagnorisis2peripeteia, @obviyus.
  • Malformed cyclic attachments can no longer crash subagent delivery-evidence collection, so the reply handoff completes and still returns reachable media URLs. #97041 Thanks @pick-cat.
  • A parent session waiting on several subagents now resumes and returns their combined results when the last outstanding work finishes, without requiring the user to send another message. #97090 Thanks @galiniliev.
  • Manually spawned ACP child runs now appear once in the task ledger instead of creating duplicate requester-visible rows. #97131 Thanks @moeedahmed.
  • A response interrupted mid-tool-call no longer runs or saves that incomplete action, preventing accidental child sessions and other unintended side effects. #97140 Thanks @galiniliev.
  • Operators can inspect the effective tools for global sessions assigned to any configured agent, not only the default one. #97265 Thanks @pick-cat.
  • Useful JSON, resource data, and CLI tool results now remain visible in transcripts instead of disappearing behind an attachment placeholder. #97268
  • Codex usage-limit previews and plan status labels now truncate emoji and uncommon Unicode cleanly at their display boundaries. #97299 Thanks @zenglingbiao.
  • Cancelling an ACP task from the CLI now reaches the live Gateway-owned run, reports real failures, and avoids duplicate active task rows. #97352 Thanks @aliahnaf2013-max.
  • An empty non-image tool result no longer becomes (see attached image) in OpenAI-compatible agent context, avoiding misleading follow-up behavior. #97423 Thanks @scribe-dandelion-cult.
  • Oversized response bodies from APNs relay pushes are now rejected as RelayResponseTooLarge rather than exhausting Gateway memory or falsely reporting delivery success. #97550 Thanks @alix-007.
  • /subagents list now truncates lengthy names and task descriptions that include emoji or uncommon CJK characters without rendering broken glyphs. #97557 Thanks @zenglingbiao.
  • Provider-owned CLI conversations maintain the same session and transcript across the daily default reset boundary unless an explicit reset policy or /reset is in effect. #97931 Thanks @yetval.
  • New Codex-backed threads now retain configured plugin apps, can enable remote curated plugins, and execute Guardian on the first eligible native OpenAI turn. #98042 Thanks @kevinslin.
  • A corrupt SQLite delivery-queue entry no longer prevents recovery of all other valid queued sessions or outbound deliveries after a restart. #98354 Thanks @pick-cat.
  • A stuck Claude CLI startup now fails only the affected turn instead of shutting down the Gateway, and heartbeat activity no longer causes the next user turn to lose its CLI conversation history. #98933 Related #98894, #98895. Thanks @obviyus.
  • Claude CLI agent runs now fail clearly when messaging tools are unavailable, recover when Claude exits without a result, preserve more long-session continuity, and clean up prompt images and failed preparation files. #99159 Related #98946. Thanks @obviyus.
  • Gateway startup lock failures now clean up partial files and open handles, so a later startup can acquire the lock normally. #99291 Related #98958. Thanks @chenyangjun-xy, @zhanglei99586.
  • Gateway status now reports unavailable SSH cleanly and promptly instead of crashing or waiting indefinitely when tunnel startup fails. #99800 Thanks @cxbasdev, @vincentkoc.
  • Stopping a subagent now clears its running task reliably and prevents late completion races from reviving or overwriting the canceled state. #99806 Thanks @masatohoshino, @timofa.
  • Agent runs, Doctor, and Gateway tool views now describe access using the same policy that actually governs the run, reducing confusing permission mismatches. #99817
  • Heartbeat and cron work on macOS and Linux is less likely to fail with Unknown system error -11 when reconnects overlap session or workspace updates. #100389 Thanks @ogarciarevett.
  • Gateway event-delivery failures now produce actionable warnings instead of unexplained process-level promise rejections, while unrelated subscriptions keep running. #100401 Thanks @cxbasdev.
  • An ACP Gateway event-handler failure now produces a concise diagnostic instead of terminating the ACP process or corrupting protocol output. #100558 Thanks @ajwan8998.
  • Gateway startup no longer performs unsolicited provider-auth discovery across every configured agent, helping channels and local commands remain responsive while authentication loads on demand. #100667 Thanks @vincentkoc.
  • Trusted Gateway clients can now browse workspace directories and preview supported files, enabling the iOS and Android apps to inspect and share agent output without SSH. #100738
  • Unexpected SSH tunnel diagnostic-stream closure no longer crashes the Gateway during tunnel checks or shutdown. #100855 Thanks @cxbasdev, @vincentkoc.
  • Bounded write-scope clients can now rename, pin, archive, categorize, and mark sessions unread without admin access, while user labels and stable list ordering survive refreshes. #100964
  • A runaway tool_search_code subprocess can no longer grow Gateway memory without limit through stderr, while failure reports retain the latest useful diagnostic detail. #101007 Thanks @hugenshen, @vincentkoc.
  • Built-in grep stream failures now become ordinary tool errors instead of crashing the agent runtime, hanging the search, or leaving incomplete results unexplained. #101014 Thanks @cxbasdev.
  • SSH-backed sandbox commands and uploads now stop cleanly, clean up child processes, and preserve the useful error when an input or output stream fails. #101031 Thanks @cxbasdev.
  • A disconnected or failing session-history stream no longer crashes the Gateway and interrupts service for everyone else. #101571 Thanks @vincentkoc, @zengwen-dt.
  • Gateway startup can now be retried immediately after a configuration-change rejection instead of being blocked for up to five minutes by a stale migration lease. #103157
  • Discord now presents commentary, reasoning, and tool activity in a clearer sequence across queued turns, while loopback MCP clients can attach to one Gateway session with an expiring, revocable token. 35af831 Thanks @dwc1997, @lsr911, @ooiuuii, @romneyda, @solodmd, @vincentkoc, @wendy-chsy, @yeager, @zenglingbiao.
  • After a Gateway restart, a redirected subagent now continues the user's newest instruction instead of returning to stale work. 7b5d86e Thanks @amittell.
  • Embedded terminals can now open, resize, stream output, and close consistently across the Gateway, Control UI, and native apps. 6601576
  • Gateway startup channel warnings now use the same plugin manifests as the running startup process, reducing inconsistent warnings and repeated discovery. 10ca94e Thanks @vincentkoc.
  • A wedged provider call now releases its embedded agent lane on a bounded watchdog instead of indefinitely blocking queued work when run timeouts are disabled. ec28935 Thanks @arismontclair, @obviyus, @patelmm79.
  • Gateway conversations with an orphaned active task can now recover through diagnostics instead of leaving later turns blocked until restart. b1da734 Thanks @arismontclair, @obviyus, @ralf003.
  • An agent no longer stays silent after compaction when a plugin's final-answer hook hangs; OpenClaw times out the hook and still delivers the response. b2baf79 Thanks @dserious, @obviyus, @villa-feng.
  • Gateway startup now skips unnecessary provider thinking-policy work when an explicit setting or model catalog already determines the banner result. b18af41
  • Developers can build against and consume managed-worktree session results from the Gateway protocol package without duplicate-name failures. 8ce620f Thanks @vincentkoc.
  • The same-release Codex session-continuity work now covers app-server thread start and resume, with binding fingerprints kept bounded throughout. 78edf1c Thanks @vincentkoc.
  • Agents running on macOS 26 now receive the macOS product version in their runtime prompt instead of the Darwin kernel version. #95225 Thanks @sunlit-deng.
  • Unusual ACP failure causes now produce stable, readable diagnostic details instead of a missing or invalid explanation. #96270 Thanks @ly-wang19.
  • ACP run-to-session lookups now return the current active run instead of a stale association from an older run. #96427 Thanks @lin-hongkuan.
  • Level directives such as /verbose and /think no longer remove the first word of the user's message when both are sent together. #97929 Thanks @yetval.
  • Successful agent tools that return safe plain text now show that output instead of leaving users with an apparently empty result. #99526 Related #99523. Thanks @snowzlm.
  • Malformed surrogate HTML entities in provider output no longer corrupt agent tool arguments, transcripts, or URLs, while legitimate entities and emoji still decode normally. #99564 Thanks @mikasa0818.
  • Compact subagent lists now keep long labels and task text within their display budget without splitting emoji or breaking alignment. #100013 Thanks @qingminglong.
  • Leaving one answer blank in a multi-question prompt no longer shifts the remaining typed answers onto the wrong questions. #100832 Thanks @machine3at.
  • Parent sessions no longer repeat an earlier child-agent progress message when the child later reports completion. #101042 Thanks @mushuiyu886.
  • ACP runtime controls can now truly clear saved model, thinking, working-directory, permission, timeout, mode, and backend-extra settings so later turns do not reuse stale values. #101044 Thanks @mushuiyu886.
  • Very long agent conversations are less likely to loop through failed overflow recovery because compaction now reflects the prompt OpenClaw actually prepared. #101181 Thanks @jalehman.
  • Shortened web, media, TTS, status, transport, and voice-call text now preserves complete Unicode characters instead of producing replacement symbols or malformed downstream content. #101355 Thanks @alix-007, @vincentkoc.
  • Codex desktop notifications now shorten long assistant previews containing emoji or CJK text without malformed characters. #101534 Thanks @lsr911.
  • ACP tool titles, permission prompts, warnings, and errors now keep long emoji or CJK argument previews readable when shortened. #101535 Thanks @lsr911.
  • Suppressed auto-reply previews in verbose logs now preserve complete emoji and other supplementary characters instead of showing corrupted text at the length limit. #101575 Thanks @wm0018.
  • Completed agent and subagent runs that succeed no longer generate error-level log entries, cutting down on false positives while keeping actual failures at the same severity. #101703 Thanks @zengwen-dt.
  • When oversized agent tool results are truncated before delivery to the model, full emoji and similar Unicode characters are now preserved intact. #102087 Thanks @chengzhichao-xydt.
  • With messages.suppressToolErrors turned on, tool failures no longer appear as progress updates in chat, while normal progress messages and final replies remain unaffected. #98063 Thanks @amittell, @moeedahmed.
  • Skill Workshop sessions now include a more concise prompt, reducing repeated prompt and schema overhead by roughly 1.8KB, while keeping the same reviewable proposal workflow. #100481
  • Prompt caching and cache traces now fingerprint incoming malformed text in the same way as the cleaned text that providers receive, preventing unnecessary cache misses and misleading diagnostics. #101009 Thanks @qingminglong.
  • Gateway connection failures now report the last completed handshake phase, letting operators distinguish stalls at upgrade, credential, authentication, session, and ready-state stages. #93402 Thanks @849261680, @bzelones, @vincentkoc, @youngting520.
  • Operators now receive payload.large or truncated diagnostics and an accurate count whenever chat.history drops older messages, making hidden history trimming observable without altering client responses. #96788 Thanks @zengwen-dt.
  • Gateway logs now show when OpenClaw cannot persist a terminal session's final lifecycle state, making silent persistence failures traceable. #97839 Related #97795. Thanks @aniruddhaadak80, @lzy3538.
  • Gateway MCP logs are now less verbose and identify the responsible tool when schema issues arise, while distinct conflicts remain visible. #98821 Thanks @alvelda, @harjothkhara.
  • Malformed Gateway MCP tools/call arguments now produce a clear invalid-parameters response before any hook or tool processes them. #99180 Thanks @vectorpeak.
  • MCP attach requests lacking a valid session key now return the intended validation error instead of crashing the Gateway with a TypeError. #99488 Thanks @zhanglei99586.
  • Control UI and other Gateway clients now display the correct pairing or protocol-version guidance even when detail codes contain extra whitespace. #99555 Thanks @ly85206559.
  • Gateway WebSocket failures now keep non-ASCII close reasons readable and within the byte limit instead of truncating characters into garbled text. #100047 Thanks @narahariraghava.
  • Discord Code Mode progress no longer fills with repetitive Wait rows from background polling, while ordinary custom and plugin tools remain visible. #100164
  • Gateway override authentication errors now tell CLI and TUI users whether to add a token or password, remove --url, or pair the relevant environment variables. #100418 Thanks @gmays.
  • Interactive and queued turns that finish without a visible answer now return a clear, sanitized failure message instead of leaving the chat appearing stuck. #100456 Thanks @mushuiyu886.
  • Starting a new Codex session no longer emits a false history warning before its transcript exists, while genuine history failures remain visible. #100484 Thanks @litang9, @vincentkoc.
  • Gateway usage reports now label start and end dates in the requested timezone, including correct calendar-day handling across local daylight-saving transitions. #100567 Thanks @nianjiuzst.
  • Session usage details now recover malformed transcript dates from available message timestamps and return finite, consistently ordered values instead of nulls. #100687 Thanks @sheyanmin.
  • Standalone ACP clients now close the shared SQLite state database during shutdown so hot reloads and immediate restarts can reopen it without stale locks or callbacks. #100691 Thanks @lzy3538.
  • First-run macOS setup now recognizes a successfully saved Codex login and is less likely to finish with a stale Gateway or bundled-skills warning. #101218
  • Voice-call webhook setup through ngrok or Tailscale now fails cleanly on tunnel stream errors instead of crashing the Gateway, and shutdown avoids waiting on an already-ended tunnel. #101394 Thanks @cxbasdev.

Accounts, devices, and private data

Credentials, permissions, pairing, and file safeguards

Trust-sensitive actions stop earlier and explain more of what requires attention. The persistent activity audit can be filtered and exported after restarts, ClawHub installations distinguish blocked releases from releases that need deliberate acknowledgement, and guarded networking supports approved proxy-only paths without weakening destination checks.

Credential resolution and redaction now cover more model and plugin paths, while sandboxing and approvals enforce clearer device, permission, and workspace boundaries. The secrets workflow also avoids exposing resolved model credentials in ordinary request and error paths.

Sources and contributors

  • Before downloading, ClawHub now inspects community plugin and skill releases. It blocks prohibited ones and demands explicit consent for suspicious ones. If an update is skipped, existing installations remain untouched. #81364 Thanks @jesse-merhi.
  • For agent and tool activity, authorized operators now have a persistent audit trail. It includes filters, consistent pagination, bounded JSON export, configurable recording, and automatic retention policies. #98704
  • Through a managed proxy, provider, channel, media, and web requests can now reach public destinations even when local DNS is unavailable or differs from the proxy's DNS. #98951 Related #98925. Thanks @momothemage, @sandl99.
  • SecretRef-stored model-provider keys now have extra safeguards against accidental disclosure in logs, errors, proxy captures, SDK setup, and runtime inspection. A compatibility toggle exists for secret sentinels. #102009
  • Operators can use targeted Doctor lint to find credential residue in past config-audit.jsonl records and preview redaction before running openclaw doctor --fix. #84450 Thanks @giodl73-repo.
  • Browser control now demands the same administrator permission whether accessed through direct node invocation or the standard browser request path. This prevents write-only credentials or third-party plugins from obtaining elevated access. #85916 Thanks @eleqtrizit, @laphilosophie.
  • Slack rooms set to require a mention no longer wake OpenClaw for ordinary messages when the bot identity is missing or untrusted. Setup warnings guide operators to a Bot User OAuth Token when necessary. #91584 Thanks @hiragram.
  • Running a read-only local Gateway check no longer leaves stale pairing permissions that would block a later agent, admin, write, or device-approval command. #96002 Thanks @vincentkoc.
  • Gateway service regeneration now keeps environment-backed secrets out of Linux unit definitions and preserves resolved provider and channel credentials on macOS. #96065 Thanks @darren2030, @obviyus.
  • With strictInlineEval enabled, versioned Python and PyPy commands plus additional PHP and R inline forms now need fresh explicit approval instead of inheriting executable trust. #96216 Thanks @eleqtrizit.
  • Agents using OpenClaw's cron tools are now restricted to their own scheduled jobs and session targets. Operator-managed cron remains unchanged, and mixed-version setups fail closed with an openclaw gateway restart instruction. #96883 Thanks @joshavant.
  • Multi-account Feishu setups can now start the default channel with an environment-backed top-level SecretRef and separate inline secrets for named accounts, without replacing the protected secret with plaintext. #96965 Thanks @zw-xysk.
  • openclaw doctor --fix now keeps separate OAuth accounts for the same provider, including each account reference and saved display name. #97541 Thanks @liuhao1024, @yetval.
  • Through /activation, only the configured owner can now change whether a group responds to mentions or every message. #97838 Thanks @pgondhi987.
  • Cron wake actions started by an agent now stay within that agent's own session lanes, lowering the chance of waking another agent's conversation. #97949 Thanks @eleqtrizit.
  • Starting or changing native Codex sessions now requires owner or operator.admin access. Other authorized senders retain read-only inspection. #97952 Thanks @eleqtrizit.
  • ACP session lifecycle and runtime controls now need an owner or internal Gateway administrator instead of being open to any authorized channel user. #97953 Thanks @eleqtrizit.
  • Sandboxed agents with host browser control disabled can no longer reach a signed-in host browser through a paired browser node. #97958 Thanks @eleqtrizit.
  • Malformed MCP OAuth failures now return a bounded HTTP-status diagnostic instead of letting an unbounded error response consume agent memory. #98143 Thanks @pick-cat.
  • Bare Fireworks API keys are now masked in logs, provider errors, command details, tool output, and Control UI diagnostics even without a nearby sensitive-field label. #98226 Related #98225. Thanks @ooiuuii.
  • In shared channels, only the person who started a Claude Code command can approve or deny its tool permission requests. #98256 Thanks @eleqtrizit.
  • IRC allowlists now reject host-less nick!user entries by default and guide operators toward verified full host masks, lowering impersonation risk. #98339 Thanks @yetval.
  • /pair now rejects setup codes that point to non-routable 0.0.0.0 or :: addresses and provides operators with secure Gateway URL guidance instead. #98617 Thanks @crh-code.
  • Failed OpenAI or Codex credential refreshes now report that reauthentication is required and privately identify the affected profile instead of appearing healthy until model turns fail. #99134 Related #99120. Thanks @100yenadmin, @fuller-stack-dev.
  • Gateway authentication retries now send stored device tokens only to true loopback endpoints, not remote hostnames that merely resemble 127.* addresses. #99859 Thanks @ly85206559.
  • A temporary output-stream read failure from an exec-based SecretRef provider no longer crashes OpenClaw during credential resolution. #100521 Thanks @cxbasdev.
  • Write-scoped Gateway clients can still perform supported message actions but can no longer supply identity fields that masquerade as a trusted requester or owner. #102031 Thanks @pgondhi987.
  • Approving a node that can handle sensitive browser traffic now requires administrator permission, matching the security level already needed to use that capability. #104491 Thanks @yetval.
  • Agent payload logs and cache traces now redact provider keys even when those credentials appear inside free-text diagnostic values. d8ee630 Thanks @joshavant.
  • Authorized non-owner chat participants can no longer inspect or change owner-controlled MCP server configuration through /mcp. ad5a26c Thanks @joshavant.
  • Auto-reply diagnostics now remain owner-only instead of letting non-owner participants run the command. 170bf72 Thanks @joshavant.
  • Failed cron webhooks no longer forward raw command summaries or diagnostics that may contain setup prompts, codes, or secret-like output. 1d17263 Thanks @joshavant.
  • Secret target discovery now works consistently for both scoped requests and the full compiled registry instead of failing when no allowed subset is supplied. e490171
  • Under strict SSRF policy, remote-browser discovery can no longer redirect OpenClaw from the configured CDP endpoint to a different host, port, or security mode. cbc833a Thanks @vincentkoc.
  • /login codex now switches the active chat to the account just authenticated without overwriting a newer manual profile choice, and provides recovery guidance if the switch fails. 02c3de9 Thanks @vincentkoc.
  • Profile changes made through /login now use the standard session save path, preserving newer concurrent selections and existing recovery behavior. f07c478 Thanks @vincentkoc.
  • Codex session bindings now keep large MCP configurations and rotated Authorization credentials in bounded fingerprints without persisting readable bearer values. 491e42e Thanks @100yenadmin.
  • Hooks and skills no longer activate from unsafe inherited configuration values, while ordinary configured paths and explicit defaults continue to work. #59694 Thanks @yonganzhang.
  • After an agent is removed, its leftover sessions can no longer start new model runs through the Gateway. #97260 Thanks @obviyus, @pick-cat.
  • Unsafe, malformed, or unexpectedly large fd and ripgrep helper archives now fail early and clean up after themselves instead of putting agent setup at risk. #98988 Thanks @leonidaslux, @vincentkoc.
  • Oversized or malformed Microsoft Teams personal-chat attachment metadata now fails safely with a warning instead of consuming unbounded Gateway memory. #99125 Thanks @ly85206559.
  • Config show, set, and unset now operate only on values truly stored in the user's configuration, preventing inherited object state from masquerading as saved settings. #99846 Thanks @vincentkoc, @zenglingbiao.
  • Content rendered on Android Canvas can no longer navigate to device-local web services, though regular remote pages and those hosted on Gateway continue functioning normally. #99874 Thanks @ly85206559.
  • Responses from supported external providers that are excessively large or never complete now terminate at a predefined limit with a descriptive error, rather than consuming memory until the entire body is received. 0a14444 Thanks @joshavant.
  • Terminal requests directed at an unknown agent ID now produce a clear failure instead of reverting to global defaults, which could inadvertently open a host shell outside the intended agent boundary. 3601dca
  • The Windows installer now supports patched SQLite runtimes, blocks those that are unsafe or unreadable, and displays the detected version when a Node.js upgrade becomes necessary. 28db140 Thanks @vincentkoc.
  • QQBot now prevents unintended reminders, restricts the exposure of private media details, and demands explicit confirmation before performing destructive actions on channels or announcements. #98032 Thanks @patrick-erichsen.
  • Operators utilizing workspace repairs can execute doctor --fix to deactivate Gateway HTTP endpoints blocked by policy, without removing nested URL-fetch configurations. #99731 Thanks @giodl73-repo.
  • Web fetch operations and provider integrations now enforce response-size limits without allocating the entire nonstandard response in memory. #99884 Thanks @zenglingbiao.
  • Trusted custom provider hosts are now safeguarded against DNS rebinding attacks that target local services; intentional loopback aliases must specify an explicit local origin or enable allowPrivateNetwork. #100835 Thanks @machine3at.
  • Browser-control requests now reject oversized successful JSON responses with a BrowserServiceError before excessive memory consumption occurs, while supported large browser results remain functional. #100889 Thanks @mushuiyu886.
  • The /pair mobile setup flow now accepts local IPv6 ULA and link-local Gateway addresses without requiring TLS or a different advertised host, though public cleartext URLs continue to be blocked. #101008 Thanks @zhangguiping-xydt.
  • Executing /prose now reveals transitive remote imports to operators and requests consent before OpenProse fetches those code dependencies. 259877d Thanks @joshavant.
  • Codex plugin users can permit read-only app actions while mandating a fresh approval for every write or destructive operation. #97123 Thanks @kevinslin.
  • Codex plugin apps now skip approval prompts for read-only actions, maintain per-app write policies across recovery, and refresh their app inventory following upgrades. #97327 Thanks @kevinslin.
  • Device owners can approve the most recently displayed request ID from openclaw devices list after a reconnection, without reducing protection against newly expanded scopes. #98145 Thanks @romneyda.
  • Windows exact-path execution approvals now launch the approved executable rather than a program with the same name found in the working directory. #98260 Thanks @eleqtrizit.
  • openclaw security audit now warns that per-agent skill allowlists do not prevent shell-capable agents from accessing globally configured MCP servers. #98352 Thanks @momothemage.
  • The Codex plugin now names per-action destructive approval mode ask, clarifying that each write or destructive action remains accessible but requires confirmation. #98501 Related #98499. Thanks @kevinslin.
  • Managed deployments can now require entries like system.run in gateway.nodes.denyCommands, and Policy doctor warns when configuration drift leaves a privileged node command available. #99121 Thanks @giodl73-repo.
  • Managed host tools no longer inherit the active Conda environment from the shell that started OpenClaw, preventing unintended Python and package-manager behavior. #99425 Related #99424. Thanks @krissding, @ooiuuii.
  • Long Discord approval previews now preserve complete emoji and flags when truncated, avoiding broken replacement characters. #99539 Thanks @zhangguiping-xydt.
  • Exec approval prompts now display and transmit long command text containing emoji or malformed Unicode without broken characters or encoding failures. #99566 Thanks @mikasa0818.
  • policy check --json now informs administrators whether each finding is automatically repairable, requires review or manual effort, is validation-only, or is unsupported. #99686 Thanks @giodl73-repo.
  • Operators who explicitly enable Policy workspace repairs can now automatically tighten several unsafe settings, while OpenClaw remains read-only without that opt-in. #99690 Thanks @giodl73-repo, @omarshahine.
  • Policy workspace repairs can now add required tools to the affected deny list while preserving existing entries and avoiding unintended root-policy widening. #99700 Thanks @giodl73-repo.
  • Policy workspace repairs can now move reported open channel groups to allowlist mode and require mentions without altering inherited defaults. #99720 Thanks @giodl73-repo, @omarshahine.
  • doctor --fix now displays the exact gateway.bind=loopback or gateway.nodes.denyCommands change needed for sensitive findings without applying it automatically. #99776 Thanks @giodl73-repo.
  • The Control UI terminal is now explicit opt-in, opens tabs under the selected agent's workspace and policy, and closes affected shells when accepted access restrictions tighten. #100081 Thanks @rayncc.
  • Repeated pairing repair attempts now produce one usable macOS approval prompt per device instead of stacking stale alerts that cannot complete approval. #100976
  • Windows companion-node exec policies can now be viewed and updated through node-aware approvals commands and displayed correctly in Control UI. #101669 Thanks @vincentkoc.
  • Non-owner Gateway chat users are no longer offered the protected cron, gateway, or nodes control tools, even when those tools are otherwise allowlisted. #102030 Thanks @pgondhi987.
  • Using jq through exec now requires an explicit trusted allowlist entry or approval instead of being treated as a harmless stdin-only safe binary. #102032 Thanks @pgondhi987.
  • Always-allow approvals for npm exec, npx, pnpm, and yarn wrappers now apply to the actual command rather than unintentionally trusting different future payloads. #102035 Thanks @pgondhi987.
  • OpenShell workspace file operations now stay inside the validated local sandbox mirror, with unsafe symlink, hard-link, cross-root, and changing-directory cases failing cleanly. c6f5725 Thanks @joshavant.
  • Swift native clients now support device-scoped skill approvals, with the reviewer-device field encoded in their generated Gateway models. 1403c64
  • Gateway sign-in tracking now keeps bounded memory use during floods of failed attempts from many addresses while preserving existing lockouts. #96224 Thanks @eleqtrizit.
  • Copied provider keys and tokens now have hidden terminal control characters removed before request headers are prepared, while intentional spaces remain intact. #96444 Thanks @lin-hongkuan.
  • Even when the original input contains newlines or other control bytes, masked malformed credentials now appear on a single safe line during setup and authentication diagnostics. #96445 Thanks @lin-hongkuan.
  • Security audits no longer flag bundled placeholder keys for LM Studio, Ollama, and other keyless local providers as exposed plaintext credentials. #97622 Thanks @xydigit-sj.
  • To retrieve sensitive session artifacts from chat trajectory exports, owner authority is now required, blocking other command-authorized channel users. #97840 Thanks @pgondhi987.
  • Only owners or administrators can now modify Gateway-wide Active Memory; other authorized users still have session-level controls. #97841 Thanks @pgondhi987.
  • Through /dreaming, only owners and administrative Gateway clients can toggle Memory Core dreaming on or off, while others can still check status and help. #97869 Thanks @eleqtrizit.
  • Non-admin users on Telegram and Discord can no longer change the Gateway's Talk voice, though they can still see the current and available voices. #97874 Thanks @eleqtrizit.
  • Owner or administrator access is now needed to install or reconfigure Codex Computer Use resources; other authorized senders can still inspect status. #97955 Thanks @eleqtrizit.
  • Renaming iMessage groups, altering icons or membership, and leaving groups now requires verified owner or administrator authority. #97961 Thanks @eleqtrizit.
  • Agent-created skills now stay pending for Skill Workshop review and approval instead of becoming active immediately without the expected safeguards. #98346 Related #96054. Thanks @momothemage, @xianshishan.
  • Before any provider request, Discord read allowlists now block guild metadata, channel details, and thread listings when those resources fall outside the configured scope. #98966 Thanks @pgondhi987.
  • Telegram timeout logs now hide bot tokens embedded in Bot API paths, including custom and proxy roots, while useful endpoint context is retained. #99428 Related #96982. Thanks @liuhaiyang14, @xialonglee.
  • API keys stored under dotted configuration names or returned in structured tool output are now concealed in Control UI Activity previews. #99460 Related #99459. Thanks @ooiuuii.
  • Custom ACP error redactors now preserve OpenClaw's built-in secret cleanup, preventing known tokens, credentials, and private-key material from leaking into formatted errors. #100191 Thanks @lin-hongkuan.
  • Android SMS commands now clearly separate phone permission from the Gateway's distinct opt-in, allowing read-only sms.search without also enabling sms.send. #100993 Thanks @narcissus0702.
  • Chrome control traffic in browser automation now stays tied to the configured or explicitly allowed CDP host, lowering the risk that a discovered debugger address redirects credentials or control elsewhere. #101171
  • Authenticated owners can use their already-granted shell, file, process, Skill Workshop, and plugin tools in WebChat without extending those permissions to guests or external senders. #101271 Thanks @fuller-stack-dev.
  • When another OpenClaw process is refreshing OpenAI OAuth credentials, operators now see a single useful contention error without duplicated wording or exposed local file paths. #101573 Thanks @vincentkoc.
  • On macOS, an explicit OPENCLAW_STATE_DIR now stays isolated from the machine's existing App Group pairing identity and device tokens. #101779
  • Even when they cross internal boundaries inside very large logs or tool-error messages, Telegram bot tokens remain masked. #103861 Thanks @vincentkoc.
  • Terminal hyperlink boundaries can no longer be broken by hidden control characters, nor can control behavior be injected through documentation link text. #96440 Thanks @lin-hongkuan.
  • MCP include and exclude filters with many wildcard segments now quickly reject nonmatches instead of stalling tool discovery for minutes. #100330 Thanks @lsr911.
  • Signal local-file attachments that are oversized or use suspicious paths now fail quickly with a clear error before consuming excessive Gateway memory. #101391 Thanks @cxbasdev.
  • When per-recipient isolation is configured, multi-user bridges using openclaw agent --agent ... --channel ... --to ... now keep recipients in separate sessions. #101507 Thanks @pingfanfan, @vincentkoc.
  • By default, Anthropic and Gemini PDF analysis now blocks unsafe private-network redirects and oversized responses, while still supporting configured local endpoints. #97872 Thanks @eleqtrizit.
  • Anthropic requests through Cloudflare AI Gateway now get OpenClaw's standard private-address blocking, timeouts, retry guidance, and managed response safeguards. #98003 Thanks @wangmiao0668000666.
  • Config recovery now warns when the file was repaired but its final permissions could not be hardened, preserving the recovery while exposing the security issue. #95348 Thanks @hugenshen.
  • openclaw security audit now reports Browser exposure only when plugin policy actually permits the Browser plugin to run. #97732 Thanks @amtellezfernandez.
  • Phone numbers, transcripts, routing details, processed event IDs, and raw metadata are now omitted from read-only voice-call status. #97870 Thanks @eleqtrizit.
  • Status and diagnostic tools can now identify stale exec approval follow-ups intentionally suppressed after /new or /reset instead of treating them as unexplained delivery failures. #98293 Thanks @bsniznd.
  • Codex /btw side conversations now preserve an ask-mode plugin app's requirement to obtain approval before destructive actions. #98812
  • Detailed camera.clip settings, device data, temporary paths, and recording events are no longer exposed in production logs from Android release builds. #99484 Thanks @nianjiuzst.
  • Emoji and extended Unicode characters are now preserved in long Codex app-server approval details and command previews instead of showing corrupted text. #100177 Thanks @xialonglee.
  • Android notification forwarding now leaves WhatsApp, Telegram, Discord, and Signal messages with their dedicated channel sessions, preventing duplicate or wrong-conversation replies while other selected apps continue to follow forwarding rules. #101170
  • Installing or updating ClawHub skills, plugins, and packages on Linux no longer risks changing shared /tmp permissions and disrupting unrelated services. #101246 Thanks @ch3ch2cho2021, @yangxiansheng.
  • Joined or clustered interpreter inline-code commands such as python3 -xcprint are now kept as one-time approvals by strict exec approval rather than reusable allowlist entries. #101353 Thanks @pgondhi987.
  • Long exec auto-review explanations containing emoji or supplementary CJK characters now shorten cleanly instead of showing a broken replacement symbol. #101513 Thanks @wm0018.
  • Plugin approval titles and descriptions now remain readable when emoji or supplementary CJK characters fall at the Gateway's text limit. #101580 Thanks @wm0018.

Official app details

Shared app changes

Conversation lists, command palettes, notifications, media, connection state, and file or diff views behave more consistently across first-party client surfaces. The TUI stays open with useful errors, Diffs controls remain scoped to the comparison on screen, and shared keyboard, path, status, Talk, and voice behavior is less likely to drift between clients.

Broader native localization, voice-message workflows, multiple Gateway profiles, cached conversations, and clearer connection state when people switch between installations are shared by the official apps.

More iOS, iPadOS, and Apple Watch changes

iOS adds refreshed navigation and chat, voice notes, workspace files, safer setup recovery, multiple Gateway profiles, and Apple Watch dictation and quick replies.

More Android changes

Android improves first-run setup, navigation, chat and session tools, voice, permissions, notifications, scheduled work, localization, multiple Gateway profiles, and connection recovery.

More macOS changes

macOS improves first-run local-agent setup, native chat and session controls, remote-mode tunnels, app launching, background efficiency, and device identity across upgrades and reconnects.

Terminal UI and other clients

When a terminal session encounters an error, the conversation stays accessible so you can review the message. Session lists keep their previews clear and readable. Any actions taken in the Diffs view remain linked to the comparison that is currently displayed.

Sources and contributors

  • On Android, users whose device language is among the supported set now see Gateway setup, connection, trust, shell, and recovery prompts in their own language. #97111 Thanks @vincentkoc.

  • The iOS Control, Chat, Talk, Agent, Settings, Gateway, and Overview screens have been updated with improved navigation, clearer status indicators, better controls, and a compact expandable chat composer. #98452 Thanks @joelnishanth.

  • On iOS, the Control, Agents, and Settings screens are now more scannable, with fewer duplicate destinations, more compact controls, standard navigation, and a direct Gateway shortcut from detail views. #98811 Related #98803.

  • The native iOS Chat interface now provides more space for conversations, uses a compact composer that expands with longer messages, and keeps attachment, Talk, and send buttons comfortably tappable. #98953 Related #98929.

  • Chat, Talk, Settings, navigation, and onboarding on iPhone and iPad now use more consistent native controls, appearance, and back navigation. #99231 Related #99195. Thanks @marvkr.

  • iOS users can record and send a voice note of up to three minutes from the chat composer, optionally add text, and see the recording's duration displayed in the chat. #100946

  • Android users can record and send a voice note of up to three minutes from the chat composer without needing to enter live Talk mode. #101193

  • Third-party Android builds can allow Gateway-requested location checks while the app runs in the background by choosing Location > Always and granting Android's persistent location permission. #100967 Thanks @ioridev.

  • Android can now keep multiple Gateways paired and switch between them without repeating setup, with each Gateway retaining its own credentials, chat state, queued messages, and removable local data. #100947

  • iOS users can pair multiple Gateways once and switch between them while keeping credentials, trust, chats, preferences, device access, and push registration attached to the correct Gateway. #100948

  • Android Chat now includes a New chat action and a / command browser that filters the current agent's advertised commands without dropping command arguments. #98796 Thanks @iwhatsskill, @solvely-colin.

  • Android Chat now lets users choose and verify the configured agent for new messages, with Chat, Talk mode, and the home canvas staying aligned to that selection. #80422 Thanks @bcperry.

  • Android chats now render links, lists, quotes, emphasis, code, and plain text consistently through the shared Markdown renderer. #88899 Related #88014. Thanks @iman-sharif, @pluviobyte.

  • Android notification automations now queue accepted events during Gateway connection or reconnection and deliver them in order once the link is established. #92602 Related #79552. Thanks @ashishpatel26, @hectorrp13.

  • Android users can open a scheduled job to inspect its timing, payload, delivery state, recent results, errors, and exact ID. #95107 Thanks @tosko4.

  • Android one-shot camera captures now turn off the camera and privacy indicator promptly after success, failure, or cancellation. #98040 Thanks @nianjiuzst.

  • Android background push-to-talk requests now return NODE_BACKGROUND_UNAVAILABLE instead of attempting a microphone start that the operating system may reject. #98055 Thanks @nianjiuzst.

  • Android's selected-photos permission now counts as usable access, allowing photos.latest while clearly showing how to manage the limited selection. #98059 Thanks @nianjiuzst.

  • Android Gateway actions now stop promptly when their connection closes, while requests started after reconnect are not cancelled by old cleanup. #98067 Thanks @nianjiuzst.

  • Android connection recovery now identifies expired setup codes, stale credentials, and missing or invalid authentication with the appropriate next step. #98094 Thanks @qingminglong.

  • Android now reports Realtime Talk and Dictation readiness separately, opens setup only for the mode that needs it, and keeps useful provider failure details visible. #98269 Related #98268. Thanks @solvely-colin.

  • Android can reconnect to the same Gateway without erasing saved access when credential fields are blank, while endpoint and setup-code changes avoid carrying stale credentials silently. #98277 Thanks @solvely-colin.

  • Android now gives clearer TLS verification guidance for reachable remote and Tailnet Gateways and allows slow valid handshakes more time to show the trust prompt. #98366 Related #98365. Thanks @joshavant.

  • Android can now pair with local Gateways advertised by standard cleartext .local names while continuing to reject unsafe remote or ambiguous cleartext addresses. #98439 Thanks @joshavant.

  • Scanning a valid Gateway setup QR code on Android now starts pairing immediately and advances to recovery or approval instead of leaving users on setup. #98483 Thanks @joshavant.

  • Android Gateway setup now replaces a generic authentication warning with specific recovery labels for expired setup codes, missing or invalid credentials, stale saved authentication, and required device identity. #98698 Related #98046. Thanks @ccaprani, @masatohoshino.

  • Android Back navigation now returns users from Gateway or Talk settings, Sessions, and Providers to the Voice, Chat, or command-palette tab where they started. #98914 Thanks @lokimorty.

  • Android onboarding now marks Contacts and Calendar ready only after both read and write access are available, including when those permissions arrive in separate prompts. #99158 Thanks @nianjiuzst.

  • Android now reports Contacts and Calendar access as granted only when both reading and adding entries are authorized, preventing misleading setup results. #99204 Thanks @nianjiuzst.

  • Android Talk and Dictation now use a connected Bluetooth headset microphone for hands-free capture and fall back cleanly when it disconnects. #99259 Related #96241. Thanks @gwtaylor.

  • Android users can now read bundled third-party and open-source license notices directly from Settings > Licenses. #99299 Thanks @joshavant.

  • Android gateway setup now gives specific recovery actions for expired codes, stale credentials, pending node approval, and terminal authentication failures. #99414 Related #98045, #98046. Thanks @ccaprani.

  • The Android companion no longer forwards OpenClaw's own notifications back to the Gateway, even when older allowlists still include the app package. #99568 Thanks @ly85206559.

  • Android manual Gateway setup now defaults blank ports to 18789 for ordinary TLS and cleartext hosts while retaining port 443 for Tailscale MagicDNS. #99865 Thanks @ly85206559.

  • Android push-to-talk now takes exclusive microphone control during Talk Mode and resumes the correct realtime listener afterward, preventing duplicate capture. #99986 Thanks @nianjiuzst.

  • Android chat now adds light- and dark-mode syntax highlighting to supported fenced code, making code-heavy replies easier to scan without delaying partial or oversized messages. #100217

  • Saved Android Gateway sessions now reconnect promptly when validated internet access returns, without unnecessary retries during captive or partial network changes. #100347 Thanks @ly85206559.

  • Android Gateway settings now give connection details, setup fields, and helper text more stable space on phone-sized screens, reducing clipping and crowding. #100363 Thanks @iwhatsskill.

  • Android now presents evenly spaced bottom tabs and avoids the chat-cache startup crash that could block entry to the post-onboarding shell. #100382 Thanks @iwhatsskill.

  • Android chat now restores an active response with buffered text after reconnecting or reopening, and recovers missed event gaps without duplicating transcript rows. #100384

  • Android now isolates cached conversations and queued commands when users re-pair, sign out, or replace Gateway credentials, preventing a new identity from inheriting the previous one's data. #100454

  • Android chat now keeps sent messages and active replies stable through reconnects, reconciling delayed history without duplicate turns or stale composer activity. #100551

  • Android push-to-talk now cleans up backgrounded, cancelled, or retried captures without reopening the microphone or stopping a newer voice session, and overlapping requests return busy. #100552 Thanks @xialonglee.

  • Android users can now long-press an assistant reply and choose Listen, with visible playback status, tap-to-stop, and on-device speech fallback. #100772

  • Android Talk Mode now keeps push-to-talk busy until the active turn is safely handed off, preventing overlapping microphones, stale playback, or the wrong relay resuming. #100786

  • On Android, internal reasoning, tool outputs, and raw operation details are no longer visible in live chats or reopened offline caches. #100826 Thanks @iman-sharif.

  • A long press on a completed chat message in Android lets you copy the full text, pick a portion, share it, or quote it in a reply without discarding your current draft. #100879 Thanks @bdhwan.

  • Android chat users can see a link's destination and summary before opening it, with no background lookups triggered by messages and a clear unavailable indicator when inspection fails. #100898

  • Android onboarding now completes after permission-driven node approval, preventing users from being stuck looping between the Permissions and approval screens. #100959

  • The Android model picker stays in sync with the active chat and agent, and a failed model switch no longer causes the next message to use the old model. #100985

  • On Android, thinking controls are hidden for models that lack configurable reasoning, unsupported settings no longer break live or queued sends, and the user's preference is restored on compatible models. #101002

  • Android users can search sessions by name, label, or key beyond the currently loaded Recent or Archived scope, with cached active-session matches still accessible during a temporary Gateway outage. #101102

  • Android users with a physical keyboard can press Enter to send a chat message, while modified Enter combinations remain available for multiline input. #101321 Thanks @3ninyt3nin-creator.

  • Safe page thumbnails now appear in expanded link previews on Android, while bad or blocked images leave the text preview unchanged. #101396

  • Android users can archive a chat session and delete it from the Archived view even with the app's bounded operator permissions. #101522

  • Indonesian Android strings ship under Android's recognized locale; the same prior work also prepared the 2026.6.11 Play version and store text. 3412318 Thanks @joshavant.

  • Traditional Chinese users now see localized wording for common native app actions, permissions, connection messages, and mobile states. f0d2066

  • Android now explains in the chosen language how to keep a saved token or replace an existing Gateway setup. Sources: 32f3eb3, 6336762, eeb0682, ed72b86, e376f28, a6631fe, 283bd82, 6d5a1db, d3087fc, 8bab3f7, dfb7bc8, 7780e30, b109b88, c1b7bf2, dedb17c, 6f84c10, a8358e8, 2501ca3, 1b40eb9, d47308f, 3a2baef.

  • Across this release's translations, Android license notices, acknowledgements, empty states, and open-license actions now use the selected language. Sources: 4b8b60f, 3b16c41, c4966e8, 116e9db, 1617233, a598c97, 3b9e0c8, eebbf6c, 4c08ea4, 21be45c, b415072, 9eec24d, de23987, 898564e, 7af800b, a47ec8d, fac9e58, 61e4ef0, 399f9d6, 9069f69, 2e049f5.

  • In this release, the selected language is now applied across translations for Android Talk, dictation, speech-provider configuration, readiness checks, and failure messages. Sources: c785196, 9edb906, da67520, 88f13ca, e878efe, 662d127, 5002a0e, fe57718, ebcf8dc, 4e7ca8e, 9863ceb, 768da09, ff5d986, 005ebd1, 2824796, 4eaec93, f99fdc9, 555f601, d2af689, 81e92de, 8ed6c78.

  • When Android pairing or connection fails, users now see localized guidance for expired codes, credentials, approvals, and retry options. Sources: 48eae1b, f095eb9, 714c2b0, d2b5bb7, d2551bd, 6b91507, f1c4476, 5ef6fb4, e2e0312, 7fb70b2, d702f5c, 24e6b9f, 7cb41cc, a6040c3, 5e61da3, 18360ac, 17a1e3b, adafb56, 5b5fadb, 9b30570, d331a36.

  • With this release, the Android Gateway discovery process, QR code and manual setup, connection checks, approvals, and permission guidance all respect the user's chosen language across translations. Sources: 28062c8, 3d43858, ad74b32, 1b07620, 4fa4c9e, 1dd5230, 9db7ec5, e6f8788, e5cf67e, b52d988, cd3b4ee, c3bcb9f, 8af3aa0, c34e79e, c9c8f6c, 255e251, 0e98ba4, 0cc9927, 97955d9, ba449f2, 0e22e54, ae65251, d957f5a.

  • When a scoped IPv6 address needs to be swapped for an unscoped one or a LAN hostname, Android now delivers that explanation in the selected language. Sources: 5793f73, 066e697, bf35947, 3385817, a0a5054, 66cb9a9, 3da73a7, df659ec, 57a3975, 141b2cf, b043adf, dcc4fa8, eade8f1, 72a8098, 355fa77, 8cc1786, a3ef37b, cb9ac50, cab8147, 7cc3cb0, ca258fb.

  • The New Chat labels and Android command search now respect the chosen language across all updated translations. Sources: b81c58b, 8929118, 1eee853, a5c9662, 9035729, 2e359d4, 91f4d0a, e785c4a, 2c5a076, 02250d9, bf23194, 603502f, a837a1a, 26df1fa, c926610, c312f9f, f4275fa, 69d4657, 3e66eb9, db5057e, 1fee4a5.

  • For non-English Android builds that are supported, offline Gateway queue guidance and the Retry and Delete actions for text messages are now localized. 660d752

  • Additional cron inspection, delivery error, copy feedback, default-state, and agent request details are now translated in supported non-English Android builds. d83ee4c

  • The selected language is now used for Android model organization, default-model, and pinning controls. Sources: 41bea62, bdc98f4.

  • Link-preview controls and status messages on Android now display in the selected language across refreshed locales. 9997c53

  • When the Always location mode is offered, the Android background-location explanation, settings action, and Not Now choice now appear in the selected language. 4c38d89

  • With a hardware keyboard, Android users can now send messages from the chat composer using Enter, and an unaccepted send still preserves the draft. de8db74 Thanks @vincentkoc.

  • Android users can now connect to Gateways behind Cloudflare Access or another authenticating reverse proxy by storing the required credential headers in Advanced manual-connection settings. #100765

  • The Android Files card now allows users to browse the active agent workspace, preview text and images, and share output directly from their phone. #100776

  • From the composer, Android users can switch the current chat's model, pin favorites, revisit recent choices, and revert to the default without leaving the conversation; older pairings may need to be renewed. #100798

  • OpenClaw is now clearly identified on Android's About screen, with direct links to the website, documentation, source repository, and Discord community. #100994

  • Top-level display LaTeX in Android chat is now rendered as readable equations, while invalid or still-streaming math remains visible as text. #101435

  • Broader native app setup, chat, Talk, permission, connection, session, provider, and status text now uses the selected language across the language packs updated in this release. Sources: a39b07b, f8e1e0c, db27d2e, 28a8414, e8e96bf, 6ea407d, 0011a18, 8c5adbf, 019603d, d3d7282, 267898c, 55ed57a, c54dc67, fd0355d, 49726a5, 2ffeedf, #98043, beca2b1, 4078dc7, e7e98f6, 3020f78, 0c82908, 8a3935f, 3f289fd, 203a896, 6afef15. Thanks @yeager.

  • The language selected by the user now applies to built-in chat controls that jump to the most recent message or reply, across all translations in this version. Sources: e31fa36, 375def8, aabe44f, 48c3f4b, 3db6fb9, a4b51e5, a60686d, 12e17ec, 6c4ac0c, bdc6258, a775f9f, a1f6acc, ee9f61d, f188c66, 2525078, ed5ccda, a6a4792, 0924bee, 0420aef, d23c4fd, 37f0067.

  • In supported Android and Apple app locales, the new-chat and worktree-chat entry points now display in the chosen language. 24bca38

  • For supported non-English native apps, Gateway setup, session, provider, health, messaging, terminal, and device text no longer show English gaps. 52f1e05

  • Updated native language packs now include workspace files, sharing actions, folder states, Android SMS guidance, message delivery states, and associated branding. a9b0a9a

  • Command search in native apps translates loading, unavailable, retry, and no-result states for all languages updated in this release. Sources: 745d2d0, 7f7bec7, 35be1c8, 7db67ab, 4bc5766, 0672720, 2a8cd44, fd648fb, 00b0b40, a67990a, 7640f67, 15f4819, 4d1d720, d1d3a27, c2737d5, bd3263d, 127ce63, 0c960cd, e6c3ad9, 84c86f7, e7aea60.

  • Local Gateway installation, verification, repair, retry, paused setup, and resume guidance for macOS onboarding now appear in the languages updated with this release. Sources: 7a717b7, 85d31e1, 27778a7, cffc6ad, ab0d604, 972d394, edbbdf6, 863a054, ef5650f, 5f2e51f, 5769416, a3aa917, 2f7bd01, c54a6f3, 9c3ffc5, 469e707, d066a81, 72a3b71, 63aa909, b68e2e7.

  • Native prompts for starting work, checking status, phone and voice controls, pairing, and returning to Chat now use the chosen language across the translations shipped in this release. Sources: dd050bc, db72ffd, 4997802, 2dc7bd1, 4381c29, 9eb1a05, 7838bc8, 4352eaf, 43fe5cc, 6bd1a4b, 531af42, 305715c, 8f9e163, 2abad57.

  • Supported non-English native apps now translate the new Terminal destination, Gateway setup guidance, Back action, connection messages, and OpenClaw branding. e069cb2

  • Localized macOS builds now translate the new GitHub link label, including its accessibility text, instead of defaulting to English. 8be1d36

  • Native app onboarding and AI connection guidance now uses Crestodian and the current setup flow in supported non-English locales. Sources: ad4809f, f0ecc16.

  • openclaw tui now automatically discovers the custom port of an active local Gateway, so users generally do not need to repeat its URL with --url. #73338 Thanks @haishmg, @vincentkoc.

  • Gateway-backed and local TUI sessions now show assistant text as it streams in, rather than staying silent until the final response arrives. #83000 Thanks @flashosophy.

  • The TUI now explains when repeated invalid tool arguments cause a run to abort, giving users a useful correction hint without exposing sensitive inputs. #91002 Thanks @taerlandsen, @wsyjh8.

  • The /usage full footer is more compact and easier to read on Telegram and other narrow displays, with detailed token information still accessible through dedicated views. #92877 Thanks @marvinthebored.

  • Typing indicators now stay active during long Codex model, tool, command, recovery, and queued follow-up work, preventing the reply from appearing idle. #95844 Thanks @jalehman.

  • Shortened exec and bash summaries now preserve emoji and other supplementary characters around the ellipsis, instead of showing a broken replacement glyph. #96963 Thanks @bartok9, @ly-wang19, @vincentkoc.

  • Replies triggered through Telegram or another external channel now appear only once in the terminal UI after history refreshes, while resets, session switches, delayed events, and in-progress recovery continue normally. #96980 Thanks @xialonglee.

  • Long assistant and provider errors now end cleanly when emoji or rare Unicode characters land near the display limit. #97289 Thanks @zenglingbiao.

  • The TUI now directs users to the pending device or scope-upgrade approval command, instead of incorrectly sending them through chat-DM pairing. #98144 Thanks @romneyda.

  • Mobile camera clips and screen recordings longer than 30 seconds can now finish within the existing duration limit without the request expiring early. #99455 Thanks @nianjiuzst.

  • Embedded and local TUI sessions now contain event-consumer errors instead of terminating the terminal. #100117 Thanks @cxbasdev.

  • TUI users can now submit prompts while an agent is working and receive the configured followup, collect, or interrupt behavior, with Esc and /stop canceling only the intended work. #100123 Thanks @kevinlp, @sebtardif.

  • TUI /new now performs a real session transition with the expected lifecycle hooks and prevents a new session from racing an active turn. #100241 Thanks @caopulan.

  • The Diffs viewer now provides a multi-file overview and direct file navigation, while PNG and PDF exports omit controls that cannot be used. #100753

  • In this release, the selected language now governs how native app status and appearance options are displayed across all translations. Sources: 58d199b, c15348b, c047a3a, e191685, b1e173d, 50fecf8, 5211afe, 4c43cf5, fb394de, ba8c1fa, 7bee4f6, 77ab268, 2417d94, 9b6ef34, 9c4274f, 2671bcc, b21153b, 117e8e1, cc0d7e1, e6f3f54, dd64f66, 4c16e66, 3a8375c, 3e3b6d6, c356245, d506201.

  • For native app license notices, acknowledgements, and explanations for unavailable files, the chosen language is now applied across all translations in this release. Sources: 34bf5a9, 068088c, a623ac7, 71374d3, a9b0de8, 8f495e2, 436dd39, f917e89, 2c8b97c, ace162b, e60cccf, 359ea4c, b7bc860, 49ea27e, 99cbc58, 204526a, 3821c36, 030d184, 24f639c, 499feb2, 591d099.

  • Photo permission controls built into the system now clarify limited, selected, and recent-photo access using the chosen language across all translations included in this version. Sources: c360f92, 4dd027e, 9cde1ca, 328fb70, 71e5fcc, b11d710, 55a2a9b, c4b40d0, 3a1b983, dea40a5, 4b1fab8, 44ca739, d36452c, a50a59e, 49b68e1, 122e4ba, 4086d35, 547a563, 538f28a, c5afa92, 32a986d.

  • Location settings on iOS now describe Off, While Using, Always, Precise Location, restrictions, and permission mismatches in the selected language across all translations shipped with this release. Sources: 3542585, 261d79a, ef1474d, cc1d61b, 2a1e118, 748bfee, e0b2dda, f371a2f, ee00cc7, 27f9ae0, 51a07ae, ba9d167, 576169e, 10500a6, a344252, d7d280f, cb2547f, 2191c2e, c63e9f9, 4b1e0de, 525c4c7.

  • In this release, translations for native skill availability, Gateway setup, diagnostics, privacy, and access guidance now reflect the chosen language. References: fdcd5c0, 26f6735, 5220eff, bb7dbda, 952245b, edb1e74, f7bad57, 0602930, e779b8f, 0400be7, 851d0ad, 1e0dd95, 703e1ad, 1c93e50, 37c45f2, 8fe917b, da21e4b, f4f63b1, 3e4febb, a82cd35, 52323b6.

  • Across all translations in this release, guidance for native Gateway connection, diagnostics, permissions, onboarding, Chat, and Talk now uses the selected language. Sources: 3b27bb4, e296d14, 5516775, 6ec4962, 291f2a4, 7e2d41b, 81bc96f, 574556c, 8bb44e6, ae09908, 42fc19d, 28bbb43, 6ff9185, 4be0be6, 0f1fbbe, d893a72, f5cb29b.

  • Messages for transcript export controls, chat actions, and export failures are now localized across 21 supported native app locales. 45f561a

  • Newer app information, support links, and states for message retry, delete, and waiting to send are now translated in supported non-English native apps. 82f5ac1

  • Wake Words and Discovery Logs now display current, natural labels across supported non-English native app locales. de30d2f

  • Supported non-English native apps now provide translations for workspace file browsing and sharing, image preview failures, offline status, and custom Gateway header controls. 6b99fd9

  • Apple native app users in 21 supported non-English locales now see translated controls for Listen and speech-playback status. 0146534

  • Swift clients can now decode skill curator actions and status details including pinned state, use counts, timestamps, archived reasons, and overlaps. ad833d7

  • Android and iOS now indicate which side requires an update when app and Gateway protocol versions differ, and prevent offering reconnect attempts that cannot succeed. #98385 Related #98384. Thanks @joshavant.

  • Authorized remote clients can now request playable speech for an individual assistant message using the existing Gateway TTS configuration without needing access to server-local files. #100770

  • On iOS and Android, users can create empty session groups, rename a group once across all sessions, and delete a group without removing the conversations inside it. #101234

  • OpenClaw's mascot now uses consistent float, blink, antenna, and claw animations across web, iOS, and Android surfaces while honoring reduced-motion preferences. 851156a

  • The terminal pages on iOS and Android now receive the operator credential from the connected device session, so authenticated users do not land on a terminal that cannot connect. 451190d Thanks @vincentkoc.

  • iOS and Android can now display the Gateway terminal as a focused full-screen view with stored credentials and a clear unavailable state, rather than embedding the full desktop Control UI. 9c78489

  • On iPad, selecting Overview, Chat, Talk, or another sidebar destination now closes the current Settings detail and opens the requested screen. #94991 Thanks @solvely-colin.

  • Translated Gateway controls on iOS and approval actions on Apple Watch no longer fall back to English in supported locales. #97112 Thanks @vincentkoc.

  • Native iOS Chat now follows Larger Text and Dynamic Type settings for messages, the intro, and composer text with less clipping. #97552 Thanks @jmcte.

  • iPhone users pairing with a LAN Gateway now stay authenticated after the one-time bootstrap, so Chat and the node connection do not immediately disconnect. #98066 Related #98064. Thanks @ooiuuii.

  • iOS Chat now retains one final assistant reply per turn instead of briefly showing a duplicate that disappears after history refreshes. #98117 Related #98116. Thanks @joshavant, @ooiuuii.

  • Paired iOS users can start native ElevenLabs Talk with a SecretRef-backed Gateway key without copying the credential into plaintext mobile configuration. #98210 Related #98209. Thanks @joshavant, @ooiuuii.

  • After scanning an iOS pairing QR code, users are taken to a live connection-progress screen rather than being sent back to Welcome while the pairing process continues in the background. #98302 Related #98297. Thanks @joelnishanth.

  • Intentional line breaks in assistant responses and other multiline messages are now preserved by iOS Chat without breaking normal Markdown rendering. #98304 Related #98028. Thanks @jabato01, @joshavant.

  • The iOS app defaults to Chat for standard launches, while direct navigation to Control, Settings, Agent, Talk, and nested destinations remains intact. #98353 Thanks @bsniznd.

  • Gateway Default in iOS Talk now uses the configured Gateway speech provider, and stopping a reply prevents delayed audio from leaking into subsequent turns. #98376 Related #98153. Thanks @jraxworthy, @tony-ooo.

  • iOS Control, Talk, and Settings are now easier to scan, featuring clearer status emphasis, safer action styling, calmer idle visuals, and improved large-text support. #98423 Related #98397.

  • Secure Gateway connection and certificate-verification failures are now explained precisely on iOS, and the fingerprint trust prompt for first-time HTTPS connections is reliably presented. #98429 Thanks @joshavant.

  • Connection, warning, and information text on iOS is now more readable in both light and dark modes, and the Appearance settings accurately describe the selected behavior. #98443 Related #98440.

  • OpenAI Realtime Talk on iPhone now defaults to native WebRTC, recovers continuous sessions from provider disconnects, and respects speaker, Bluetooth, and AirPlay output choices. #98563 Thanks @pollybot13.

  • The iOS Talk fallback banner now opens Voice & Talk settings directly, instead of directing users to unrelated Gateway settings. #98602 Related #98593. Thanks @pollybot13.

  • A compact Talk control bar, a cleaner Appearance picker, and a properly aligned realtime-audio button next to the resting Chat composer are now available in the iPhone app. #98736

  • New iPhone users now see clearer QR, setup-code, and manual Gateway choices, better nearby and connection status, and a direct handoff to Chat after connecting. #98868 Thanks @solvely-colin, @thats2easyyy.

  • iOS users who open Gateway, Voice, or Notifications settings from another screen now return to the Chat, Talk, Agent, Control, or Approvals screen they originated from. #98898 Thanks @lokimorty.

  • OpenClaw's palette is now applied consistently across Talk, settings, Gateway, privacy, usage, and workboard views in the iOS app, while accessible contrast is retained. #98930 Thanks @joelnishanth.

  • Voice Wake on iOS can now pause while Talk, camera audio, or another feature uses the microphone and resume without crashing the app. #99137 Thanks @pollybot13.

  • After a failed manual setup, iOS users can correct gateway details and retry immediately with the values currently on screen. #99220 Related #99219. Thanks @abdullahtas0.

  • Useful starting prompts, clearer pairing and setup actions, better agent placeholders, and steadier message ordering during refreshes are now part of the iOS chat experience. #99243 Thanks @jcooley8.

  • iPhone users who open Chat from a Control detail can now return to the same Overview, Activity, Workboard, or Sessions screen without losing their place. #99245 Thanks @solvely-colin.

  • OpenClaw now uses consistent branded typography throughout its iOS, Watch, and Live Activity interfaces while retaining Dynamic Type and accessibility support. #99246 Thanks @joelnishanth, @joshavant.

  • The permission actually in effect is now shown in iOS location settings, including Precise Location and mismatches between OpenClaw's selected mode and the iOS grant. #99247 Thanks @pollybot13.

  • OpenClaw's bundled third-party license acknowledgements can now be read from Settings > Licenses on iOS. #99290 Thanks @joshavant.

  • Users can now browse, filter, and select available commands and skills from the iOS chat composer instead of memorizing exact slash commands. #99426 Thanks @solvely-colin, @viczhang6.

  • Adding contacts and searching affected records on iOS no longer crashes the app or disconnects the node. #99475 Thanks @abdullahtas0.

  • iOS Calendar, Reminders, and Contacts commands now return an immediate permission-required result instead of opening a prompt that leaves the agent request waiting. #99477 Thanks @nianjiuzst.

  • iOS gateway QR pairing now stays open through trust and approval, avoids scanner crashes, and keeps credentials and pending actions with the correct gateway during switches. #99572 Thanks @pollybot13.

  • On iOS 26, affected Settings switches now respond when users tap anywhere on the labeled row, with accessibility labels and values preserved. #99888 Thanks @ly85206559.

  • Fenced code with theme-aware highlighting and GitHub-style tables as aligned native tables are now presented by Apple chat on iOS and macOS. #100207

  • After backgrounding or reconnecting, Apple chat now restores the visible in-progress state, preventing overlapping sends and reconciling one correct final reply. #100277

  • Repeated iOS Gateway setup links now update the visible settings screen with the newest connection instead of being consumed by a hidden view or replaying stale details. #100328

  • Tactile feedback for accepted sends and most completed or failed runs is now provided by iOS chat, though some abort paths may still omit or misclassify failure feedback. #100416

  • The current conversation can now be exported as a named, readable Markdown file by iOS users and saved or sent through the system share sheet. #100417

  • Choosing While Using for location access on iOS now remains selected after approval and after the app is relaunched. #100512

  • Consistent title sizing and typography is now used for Talk and Settings rows on iOS, making adjacent options easier to scan. #100515

  • OpenClaw branding, license information, and direct links to the website, documentation, GitHub repository, and Discord community are now presented on the iOS About screen. #100531

  • Apple Watch pairing and companion status now refresh without restarting the iPhone app, while cold-launch actions wait for readiness or return a clear WATCH_UNAVAILABLE error. #100732

  • An agent workspace can now be browsed, generated files, logs, and configuration previewed, and a file shared without returning to the host computer by iPhone and iPad users. #100767

  • By storing per-Gateway credential headers for the next reconnect, the iOS app can now connect through Cloudflare Access, Basic authentication, and similar proxies. #100768

  • Listen can now be chosen on an assistant reply by iPhone users, with preparation and playback status followed, stopping at any time, and falling back to on-device speech when needed. #100771

  • The active model is now shown and switched in iOS chat, while iOS and macOS model pickers support pinned favorites and the five most recent choices. #100774

  • Display equations in iOS and macOS chats now appear as readable, accessible typeset math, with horizontal scrolling for wide formulas and raw text retained for malformed expressions. #100829

  • The thinking-level control is hidden for models that cannot use it on iOS and macOS, stale unsupported settings are avoided, and the previous level is restored when a reasoning-capable model is selected again. #100875

  • Text in streaming replies on iOS and macOS chats is now revealed more smoothly word by word, while reduced-motion users still receive immediate text and completed messages remain unchanged. #100884

  • Offline iOS messages now survive relaunch, remain tied to their original Gateway and conversation, and send only once when delivery can be confirmed, with clear uncertain-delivery status when it cannot. #100942

  • A context-usage ring that changes warning color near the limit is now shown in iOS and macOS chat, helping users anticipate compaction or truncation in long conversations. #101183

  • A safe link's title and description can now be previewed inside chat by iOS and macOS users before deciding whether to open it. #101198

  • Expanded link previews on iOS and macOS can now show a safe page thumbnail, with the existing text card retained when image loading fails. #101387

  • Finished iOS and macOS chat replies now typeset inline LaTeX formulas while streaming text, code, currency, and invalid math remain readable as plain text. #101388

  • The iOS screen.record command now finishes more reliably with a nonempty MP4 instead of crashing the app and disconnecting the node as recording stops. #101550 Thanks @tony-ooo.

  • When a location permission prompt returns without a clear decision, the iOS app now recovers instead of waiting indefinitely. 75c8753 Thanks @vincentkoc.

  • The Mac About screen now links directly to the OpenClaw website, documentation, GitHub project, and Discord community, matching the other native apps. 6e7ef63

  • Both local and Tailnet Gateway routes can now be advertised by iOS pairing codes, allowing the phone to save the first reachable address when it is away from the private LAN. #100317

  • Searching, pinning, renaming, archiving, restoring, and reopening sessions from the in-chat switcher is now possible for iOS chat and macOS webchat users, instead of scrolling a simple recent list. #101053

  • macOS remote mode can now connect using explicitly selected managed SSH aliases and restore app owned tunnels when SSH multiplexing or backgrounding is active. #99661

  • Finder launched macOS sessions can now use SSH aliases backed by common user installed ProxyCommand helpers without losing agent state or failing Gateway readiness checks. #100214

  • Multiple macOS app instances now preserve shared SSH tunnel tracking and clean up stale processes more reliably, which reduces port conflicts after a crash. #100601

  • The Mac app now displays the animated OpenClaw mascot in onboarding and About, while Reduce Motion keeps it static. f052a2f

  • The macOS onboarding and About mascot now matches openclaw.ai more closely with theme aware colors, glow, hover scaling, and smoother motion that keeps its antennae visible. 05c9dcc

  • The macOS Dashboard now automatically follows a restarted remote SSH tunnel to its new local port and keeps authentication tokens out of logged URLs. #100488

  • After a macOS crash or force quit, OpenClaw now reclaims confirmed orphaned remote mode SSH tunnels so relaunches can reuse the preferred local Gateway port. #100489

  • When Android Chat cannot reach the Gateway, users can open Gateway Settings or copy connection diagnostics directly from the blocked screen. #94566 Thanks @tosko4.

  • Android manual Gateway setup now accepts IPv6 hosts such as ::1 directly instead of rejecting an address that only works when entered as a bracketed WebSocket URL. #99107 Thanks @ly85206559.

  • Android manual setup now accepts and preserves complete ws://, wss://, and HTTP Gateway addresses, including embedded ports, so private LAN onboarding reaches the intended server. #99110 Related #87216. Thanks @cursoragent, @ly85206559, @ruben2000de.

  • Android voice features now only speak chat events explicitly identified as assistant replies, preventing user, tool, system, or role less text from being read aloud. #99123 Thanks @ly85206559.

  • Android third party onboarding now recognizes SMS access when send and read permissions are granted in separate prompts, while genuinely missing permissions remain unauthorized. #99147 Thanks @nianjiuzst.

  • Cancelled, timed out, failed, or interrupted Android camera.clip requests now release the camera and remove unfinished temporary files before later camera commands run. #99153 Thanks @nianjiuzst.

  • Android's thread picker now prioritizes real conversations, hides internal setup and device sessions, and still makes valid older chats available through All. #99557 Thanks @ly85206559.

  • Android setup now rejects gateway URLs with unsupported IPv6 interface zones and directs users to an unscoped address or LAN hostname before saving. #99570 Thanks @ly85206559.

  • Android now preserves specific Gateway and A2UI error codes containing numbers, such as A2UI_HOST_UNAVAILABLE, instead of replacing them with a generic failure. #99591 Thanks @ly85206559.

  • Android Talk now applies supported directive values even when generated or dictated JSON uses different capitalization for keys such as Voice or Language_Code. #99592 Thanks @ly85206559.

  • Android node commands now honor common boolean values such as yes, no, 1, and 0 for app filters and camera audio options. #99873 Thanks @ly85206559.

  • Android Talk Mode now delivers agent consult answers even when realtime completion events arrive out of order, preventing sessions from remaining stuck on Thinking.... #100049 Thanks @qingminglong.

  • Android's Home overview now uses more consistent card, Talk, and recent session spacing for a calmer, easier to tap first screen. #100059 Thanks @iwhatsskill.

  • Android Voice and Talk setup text now truncates cleanly on narrow screens and at larger accessibility font sizes instead of appearing clipped. #100060 Thanks @iwhatsskill, @solvely-colin.

  • Android Gateway settings now show both setup actions as full width buttons, keeping Pair New Gateway readable and easy to tap. #100090 Thanks @iwhatsskill.

  • The Android Voice tab now gives Realtime Talk and Dictation text and controls enough room to remain readable on phones and at larger font sizes. #100491 Thanks @iwhatsskill.

  • Android's "New chat in worktree" action is now translated across supported non English locales instead of appearing with a missing resource. #100805 Thanks @amknight.

  • Tapping an Android notification created by system.notify now brings OpenClaw to the foreground. #100888

  • Returning to an already loaded Android chat no longer flashes a loading screen, and the Overview recent session list stays deduplicated and steadier during refreshes. #100966 Thanks @solvely-colin.

  • Android's command palette now keeps action and session rows visually aligned, with consistent icons, navigation spacing, and clean truncation for long labels. #101072 Thanks @iwhatsskill.

  • Android Home's Recent Sessions section now keeps recently active rows in a stable order, collapses duplicates, and preserves labels and timestamps during partial live refreshes. #101161 Thanks @solvely-colin.

  • Android physical keyboard users can press or hold Enter to send once without leaving a stray newline, while Shift+Enter and in progress input method composition keep working. #101360 Thanks @3ninyt3nin-creator, @joshavant.

  • Expanded Android link previews now keep thumbnail memory within a byte budget, reducing excessive memory retention during long chats. #101560

  • The Android app now respects a user's disconnect, connect, or gateway switch choice during startup and reports final disconnect failures to fire and forget callers. #101799

  • Opening OpenClaw again from the macOS Dock or Finder now brings up the dashboard or its failure window even when the menu bar app is already running. #97637 Thanks @solvely-colin.

  • Opening Control to Terminal on iOS now goes directly to the terminal without briefly showing the general Web UI login screen during connection. #100727

  • Realtime Talk consult calls acknowledge as soon as the embedded agent run is accepted, rather than waiting for it to finish. #101091 Thanks @romneyda.

  • Terminal Hatch onboarding and other TUI connections now show starting up until session loading finishes, with accurate running indicators after reconnects. #93999 Thanks @ml12580.

  • After the Diffs viewer is reopened or refreshed, its toolbar controls now act only on the currently displayed diff cards. #96138 Thanks @brokemac79, @davinci282828.

  • Session tools now display the correct absolute path for projects beside the home directory instead of turning a shared text prefix into a misleading ~... path. #96562 Thanks @he-yufeng.

  • Codex CLI session lists now shorten long last message previews without splitting emoji or similar characters into broken text. #96582 Thanks @llagy007, @weeli-009.

  • Custom usage footers now render alias and map fallbacks correctly even when model or mode names collide with properties such as toString or constructor. #98503 Related #98466. Thanks @chenyangjun-xy, @zhanglei99586.

  • When the TUI agent is occupied, repeated submissions now produce a single warning rather than cluttering the conversation with duplicate notices. #99879 Thanks @vincentkoc.

  • openclaw tui --local now clarifies when a recognized slash command requires the Gateway, preventing it from being sent to the model as an unintended prompt. #100188 Thanks @goslingmanagment.

  • Workspace skill approvals initiated in the TUI now appear in that terminal, letting users review and unblock the operation without needing to switch to Telegram. #100251 Thanks @vincentkoc.

  • If a local shell command, slash command, or message submission fails, the terminal UI stays open and shows a safe, useful error. #100340 Thanks @cxbasdev.

  • iOS Gateway connection errors now show as a single dismissible toast that reappears on a later failure and responds visually, instead of stacking when the same issue repeats. #98856 Thanks @lokimorty.

  • Matching rows in the iPhone Control and Settings tabs now share the same rounded icon style, making both lists easier to scan. #98936 Related #98916. Thanks @sahilsatralkar.

  • The iOS About screen now presents a brief app, device-family, and iOS summary without duplicate identity information or a raw hardware identifier. #98985 Related #98943. Thanks @sahilsatralkar.

  • The iOS appearance setting now appears in the standard Settings list, displays the current System, Light, or Dark selection at a glance, and behaves consistently on iPad. #99052 Related #98995. Thanks @sahilsatralkar.

  • Cancelling or interrupting an iOS screen.record request now stops the system recorder, preventing capture from continuing after the tool call fails. #99155 Thanks @nianjiuzst.

  • iOS now treats Limited Photos access as usable, provides in-app controls for requesting or managing the grant, and avoids interrupting gateway requests with an unexpected prompt. #99350 Related #99046. Thanks @tony-ooo.

  • The iPhone Control destination list is now more compact and easier to scan without altering navigation or status information. #99468 Related #99439. Thanks @sahilsatralkar.

  • Apple Watch quick replies now survive an unavailable iPhone and later reconnect to the intended Gateway without being lost, duplicated, or misrouted. #100372 Thanks @nianjiuzst.

  • Tapping the iPhone status bar now keeps the chat at the top for reading older messages until the user selects Jump to latest. #100502

  • The iOS QR setup scanner is less prone to crashing or becoming unstable when users open, cancel, or close the camera during onboarding. #101235 Thanks @joshavant, @solvely-colin.

  • Already-paired iPhone users now return to Chat, Talk, and Settings instead of getting stuck in setup when older onboarding flags are stale. #101481

  • The iOS camera permission prompt now clearly links access to Gateway setup and assistant-requested photo, video, document, screen, or workspace capture. e77994e Thanks @joshavant.

  • Android and iOS Gateway setup now explicitly requires Secure TLS for remote hosts, warns before using trusted LAN without encryption, and provides actionable update guidance for protocol mismatches. #101325 Thanks @joshavant.

  • The macOS menu-bar app now uses fewer idle CPU wakeups and less repeated configuration and permission work, reducing background battery usage without changing active status behavior. #100463

  • Long-running system.run commands on the macOS app node no longer make the node appear offline or block unrelated Gateway traffic. #100842 Thanks @lvan185, @vincentkoc.

  • The macOS app no longer mistakes a valid launchd-managed local Gateway for an unexpected listener and terminates active assistant or channel work. #100867 Thanks @lsr911, @vincentkoc.

  • The macOS app now retains the same paired device and node identity across upgrades, restarts, and Gateway reconnects instead of repeatedly asking for approval or creating stale duplicates. #101105 Thanks @yetval.

Skills, plugins, and installs

Skills, connected apps, packages, and repairs

Skills can be drafted from a conversation or source, reviewed, pinned, archived, restored, and excluded from future context when stale. Plugin management is more transparent about discovery, installation, updates, marketplace snapshots, connected Codex apps, approvals, and runtime failures, while Codex supervision can assign each new thread an explicit bounded app allowlist.

Official packages are easier to obtain through the supported Docker and Android paths, and plugin-backed workflows such as Google Meet and Apple Messages recover from more setup and migration problems. Doctor also handles damaged migration caches and older plugin or skill layouts without turning a recoverable upgrade into a dead end.

Sources and contributors

  • Instead of beginning from an empty draft, users can submit a conversation, file path, URL, or pasted note as a single message to create a reviewable Skill Workshop proposal. #100442
  • Long-running agents can automatically remove unused Skill Workshop skills from future context, pin important ones, restore archived items, and flag potential overlaps without deleting the underlying skills. #101214
  • Operators can run openclaw plugins marketplace refresh to validate and persist a hosted feed, enforce a SHA-256 match, and determine whether live, saved, or bundled data was used. #96155 Thanks @giodl73-repo.
  • Owner-operated native Codex agents can now use selected apps already connected to the operator's Codex account, with a per-thread allowlist that is bounded and existing approval controls preserved. #100973 Thanks @pash-openai.
  • Official OpenClaw container images are now available from Docker Hub in addition to GHCR, decreasing reliance on unofficial mirrors. #97122 Thanks @vincentkoc.
  • Android users can sideload the official signed OpenClaw-Android.apk from a stable GitHub release and verify it using the published SHA-256 checksums. #101212
  • The opt-in Logbook lets users review a model-organized workday timeline, generate standups, and ask questions about captured activity, with owner-only local storage and configurable retention. #99930
  • Google Meet join, creation, talk-back, transcription, and related automation now work across browser and account languages by using English in OpenClaw-controlled Meet tabs. #89671 Thanks @unayung.
  • Discord users can complete approved Codex Computer Use actions such as get_app_state and receive the native tool result instead of getting a false timeout while the tool is still running. #96818 Thanks @pollybot13, @zhangguiping-xydt.
  • Updated integration runtimes keep Codex, ACP, Copilot, Telegram, and diff rendering aligned with compatible upstream behavior, while reconnect recovery no longer floods operator logs with duplicate messages. #100027
  • Docker users now get a more complete bundled AI runtime, reducing startup and runtime failures caused by package links removed during image trimming. 57ca1b0 Thanks @vincentkoc.
  • Declared plugin tools now remain callable in subagent sessions after plugin registry changes, avoiding repeated plugin tool runtime missing failures and Gateway restarts. #82562 Thanks @luoyanglang, @vincentkoc.
  • Plugin metadata cache hits no longer flood diagnostics with repeated full-scan entries, leaving smaller timelines where real scans are easier to identify. #86796 Thanks @galiniliev, @vincentkoc.
  • Plugin loading no longer evaluates OpenClaw's own package code twice, reducing startup work and avoiding duplicate module, class, singleton, or registry identities in one process. #88384 Thanks @vincentkoc.
  • Affected npm installations can once again start the Gateway and produce replies because speech now loads only through its supported package-backed TTS path. #89899 Thanks @zhangguiping-xydt.
  • Starting QR login without a required official channel plugin now returns the exact installation command or openclaw doctor --fix instead of only saying the provider is unavailable. #90517 Related #83277. Thanks @carol-iung, @tuaran.
  • openclaw plugins inspect now shows the bundled document-extract plugin's PDF extractor as an available capability instead of reporting none. #91597 Thanks @xydt-tanshanshan.
  • openclaw plugins init can now scaffold a model-provider plugin with authentication, model setup, tests, packaging, validation, and ClawHub publishing structure. #94352 Thanks @patrick-erichsen.
  • Existing plugin discovery keeps the same bundled official catalog while gaining a versioned, fail-closed fallback format for the hosted marketplace work. #95846 Thanks @giodl73-repo.
  • ClawHub marketplace reads now fail back to OpenClaw's bundled plugin catalog when hosted data is unsafe or unusable, providing a guarded base for the new marketplace workflow. #95868 Thanks @giodl73-repo.
  • A hosted marketplace can keep serving its last verified catalog when the feed is unchanged or briefly unavailable, without trusting stale or invalid saved data. #95877 Thanks @giodl73-repo.
  • The latest verified hosted marketplace catalog can survive a restart and remain available through unchanged responses or temporary feed failures, with persistence still optional. #95964 Thanks @giodl73-repo.
  • Hosted marketplace entries become installable only when they match approved local sources and trusted ClawHub packages, preventing unknown or untrusted choices from slipping into installation. #95969 Thanks @giodl73-repo.
  • Administrators can configure named hosted marketplace feeds and the trusted local package sources those feeds may reference, while unsupported trust settings are rejected. #95981 Thanks @giodl73-repo.
  • Plugin update failures now report the real npm metadata or registry problem instead of disguising it as an unsupported package specification. #96143 Thanks @brokemac79, @romneyda, @slideshow-dingo.
  • The new openclaw plugins marketplace entries command lists available hosted plugins, versions, and install choices while showing whether results came from live, saved, or bundled data. #96158 Thanks @giodl73-repo.
  • Configured context-engine plugins such as lossless-claw now stay active after discovery instead of being silently replaced by the built-in legacy engine. #96357 Thanks @vincentkoc.
  • Gateway startup now reports configured channels that failed to load, so operators can fix plugin trust, enablement, or installation before messages go missing. #96397 Thanks @849261680.
  • Operators can install a pinned older ClawHub plugin when that version is compatible with their OpenClaw deployment, without the latest release's requirements incorrectly blocking it; incompatible or unverifiable versions remain blocked. #96506 Thanks @isaiahstapleton.
  • Plugin-heavy startup and configuration checks, especially on Windows, now repeat fewer package-path lookups while rebuilding installed-plugin fingerprints, making those paths more responsive. #96710 Thanks @211-lee, @sheyanmin, @vincentkoc.
  • macOS users can run Codex Computer Use desktop controls through managed installation without a manual appServer.command, and an outdated Codex Desktop app-server no longer blocks a supported plugin-local binary. #96730 Thanks @bdjben.
  • Official Weixin installs and core-upgrade reconciliation now target plugin version 2.4.6 with its correct compatibility requirement instead of unexpectedly returning users to 2.4.3. #96801 Thanks @lin-hongkuan.
  • openclaw plugins update --all now realigns trusted official plugins with the current stable or beta catalog after a core upgrade, without manual force installs or overwriting intentional targeted pins. #96831 Thanks @ooiuuii, @velvet-shark.
  • Configured and accessible native Codex plugin apps now remain available when a new OpenClaw thread starts during an app-inventory and activation-state transition instead of disappearing silently. #96872 Thanks @kevinslin.
  • Google Meet sessions launched through a paired macOS Chrome node now open the intended URL with the configured Chrome profile and audio tools, while unsupported actions and executable overrides are rejected before reaching the node. #96908 Thanks @joshavant.
  • Changes made by plugin hooks now reach agent and child-run context, including replacements or removals made by agent:bootstrap. #97281 Thanks @outdog-hwh.
  • openclaw plugins update <id> --dry-run now tells operators when a newer default release exists even if the installed plugin is pinned exactly. #97282 Thanks @yungchentang.
  • Embedded context-engine plugins now see the current turn in the transcript during afterTurn, preventing missing first messages and duplicate imports. #97342 Thanks @gorkem2020, @iwhatsskill, @sgh6688, @udjin79.
  • /status plugins now labels a plugin as loaded only when it is actually running, while still showing healthy installed inventory. #97479 Thanks @masatohoshino.
  • Windows plugin updates no longer create managed paths so long that official Codex-backed agents fail before they can start and reply. #97488 Thanks @ooiuuii.
  • Raising a running Gateway's log level to debug now immediately enables Mattermost, Matrix, Microsoft Teams, IRC, Nextcloud Talk, and other plugin diagnostics without a restart. #97617 Thanks @amknight, @vincentkoc.
  • Windows can now load valid inbound media when configured roots and runtime file paths differ only in letter casing. #97630 Thanks @vectorpeak.
  • Plugins can now react when a new DM pairing request is created, enabling owner alerts, audit records, tickets, and approval integrations without polling. #97733 Thanks @clawsean, @omarshahine, @trupe-rs.
  • Detailed /status plugins now flags a plugin that was configured to run but did not load, separating runtime drift from ordinary inactive inventory. #97878 Thanks @masatohoshino.
  • openclaw update now accepts properly formatted marketplace and ClawHub plugins from a bundle without requiring package.json, which avoids halting plugin sync and leaving the Gateway in a stopped state. #98010 Related #97985. Thanks @herove, @lilan0125.
  • OpenClaw npm packages are roughly 3.18 MB smaller when unpacked and 371 KB smaller when compressed, while plugin SDK entry points and runtime behavior stay the same. #98758 Related #98757. Thanks @romneyda.
  • Native /oc_* Mattermost commands function again in packaged installations that use openclaw/mattermost, without letting disabled or denied plugins bypass Gateway checks. #98819 Related #98740. Thanks @amknight, @keltech-services.
  • Under normal npm dependency resolution, openclaw/memory-lancedb can now install and update, keeping LanceDB-backed memory active without version pinning or bypass flags. #99118 Related #90295. Thanks @allenhurff, @joshavant.
  • Installing a managed npm plugin no longer causes workspace plugins from plugins.load.paths to vanish after a startup or restart. #99196 Thanks @leonidaslux.
  • Git-backed plugin installations and updates now work when ~/.openclaw and the system temp directory reside on separate filesystems, removing the need for a TMPDIR workaround. #99896 Thanks @bartok9, @carelvanheerden, @vincentkoc.
  • Plugin loading respects operator-configured Jiti native-module exceptions while still protecting against duplicate OpenClaw package evaluation. #100344
  • Extended-stable users can install, repair, and update eligible official plugins at the exact OpenClaw core version rather than drifting to the regular stable line. #100448 Thanks @kevinslin.
  • Bundled channel setup plugins now load correctly through current-release symlinks and mixed source/dist layouts, without generating false outside-package warnings. #100758
  • Source checkouts with a partial bundled plugin tree retain complete built-in metadata for plugin health checks and provider endpoint discovery. 26c0285 Thanks @vincentkoc.
  • After successfully moving a plugin to ClawHub, openclaw update no longer retries it, which prevents a redundant transient failure from disabling the migrated plugin. 3ce26d6 Thanks @vincentkoc.
  • Mac users setting up iMessage can install or update imsg from the setup flow, receive clearer probe guidance, and recover sessions that still point to the old skill location. #101407 Thanks @omarshahine.
  • Source and macOS package builds no longer fail when the tsdown configuration loads from a temporary directory that cannot resolve the runtime package. #100499
  • Global npm upgrades can continue as OpenClaw's packaged files grow without hitting InstalledDistScanLimitError, while runaway scans remain bounded. #101206
  • When Google Meet's local OAuth callback port is occupied, openclaw meet auth login offers the manual redirect-paste flow instead of stopping sign-in. #96492 Thanks @jinduwang1001-max, @yetval.
  • When a retired cache file contains malformed JSON, openclaw doctor can continue legacy dedupe migration instead of halting with a parsing error. #98125 Thanks @pick-cat.
  • Completed Voice Call status remains available through the Gateway, tool, and CLI after restart or eviction, rather than incorrectly appearing missing. #99797 Thanks @darren2030.
  • Source builds now work on supported Node.js distributions without native TypeScript stripping, avoiding a late failure related to --experimental-strip-types. #91262 Thanks @smoe, @vincentkoc.
  • The GitHub Copilot plugin no longer breaks openclaw plugins list or openclaw status during metadata-only loading before full runtime state is available. #95229 Related #94516. Thanks @cuihaijun, @sunlit-deng.
  • When a Telegram plugin approval cannot be routed, operators receive practical Web UI, terminal UI, and configuration guidance instead of a generic failure or timeout. #95973 Related #95800. Thanks @chrisbot2026, @monkeyleet.
  • Marketplace diagnostics now indicate whether refresh and entries commands used a hosted feed, a saved snapshot, or a fallback without logging feed secrets. #96194 Thanks @giodl73-repo.
  • Provider plugins that mask text now restore intended values inside tool-call inputs before messages, file operations, and other external actions execute. #97769 Related #97761. Thanks @get-viti, @zoowh.
  • Plugin install and update failures now show whether npm exited, was killed, or timed out, instead of presenting a blank error that makes valid packages appear invalid. #98497 Thanks @sanjays2402, @vincentkoc.
  • Plugin and media workflows now handle malformed or truncated ffprobe output without crashing, while continuing to read valid video dimensions normally. #98613 Thanks @pick-cat.
  • /status plugins now groups disabled plugins by reason, including allowlist, denylist, default, and override decisions, without changing activation behavior. #99598 Thanks @masatohoshino.
  • Plugin authors can now import shared textResult and jsonResult helpers from openclaw/plugin-sdk/tool-results instead of recreating common response shapes. #99740 Thanks @romneyda.
  • Plugin authors now have a shared formatByteSize helper for consistent byte labels, while existing labels across OpenClaw remain unchanged. #99768 Thanks @romneyda.
  • Failed plugin installations now show the useful plugin error without adding a false Also not a valid hook pack diagnosis, while genuine hook-pack failures remain visible. #100554 Thanks @vincentkoc.
  • Bundled channel runtime and setup plugins now load from valid source-only registry roots in mixed source/dist checkouts instead of silently disappearing. #100737
  • Ordinary Lobster run and resume approvals no longer fail TaskFlow-only validation simply because unused default flow fields were present. #102036 Thanks @arthurnie, @lilan0125, @vincentkoc.
  • Values starting with ~ in migration agentDir now resolve relative to OpenClaw's effective home directory. #99901
  • Duplicate plugin request scopes are now normalized consistently, and actual plugin scan access failures are reported. #99932
  • Errors during skill archive validation and upload hashing now point to the missing or unreadable file while keeping the original filesystem error intact. #101085 Thanks @cxbasdev, @vincentkoc.
  • The bundled xurl skill now displays a functional Node/npm installation path, and the github skill no longer presents an unsupported Linux apt option. #102158 Thanks @not-stbenjam.

Setup, maintenance, and tools

Command-line setup, updates, and administration

Operators can attach an external coding harness to an existing Gateway session and work with compatible Codex-supervised threads across both native and OpenClaw surfaces. Status and configuration commands deliver clearer diagnostics, safer defaults, and more reliable control over sessions, services, credentials, and runtime behavior.

The supported installation and update paths preserve working state more carefully across packages, containers, and daemons. Onboarding and doctor retain choices through interrupted setup and migrations, surface actionable repair steps, and avoid silently continuing with stale services, missing plugins, or unusable model configuration.

Sources and contributors

  • Claude Code is launched by openclaw attach with temporary access to the primary or chosen Gateway session, credentials are kept out of arguments, and the grant is revoked when the session ends. #96454 Thanks @anagnorisis2peripeteia, @obviyus.
  • Agents controlled by their owner can opt into appServer.homeScope: "user" for inspecting and safely forking the same Codex threads available in Desktop and the CLI. #99821
  • After printing output, the bounded openclaw hooks commands return control promptly, so terminals, scripts, and CI jobs no longer hang. #76922 Thanks @dorukardahan.
  • Non-interactive openclaw models list and openclaw models status exit normally after printing results, letting scripts and SSH diagnostics finish without an external timeout. #77904 Thanks @dorukardahan, @vincentkoc.
  • A Gateway restart is now recommended by openclaw config only when the changed settings actually require one, so hot-loadable agent, model, and provider edits no longer trigger unnecessary restarts. #80823 Thanks @kiranmagic7.
  • Removing a visible built-in model alias now explains that the alias is automatic and shows how to shadow it, while genuinely absent aliases still report as not found. #81641 Thanks @scientificprogrammer, @vincentkoc.
  • Available subagent lineage and runtime details, including parent linkage, workspace, depth, role, timestamps, and status, are now included in openclaw sessions --json. #87917 Related #80286. Thanks @islandpreneur007, @zhangguiping-xydt.
  • A brief local Gateway outage can be bridged by openclaw logs --follow with journal output, and normal Gateway logs are automatically restored after recovery. #88159 Thanks @anyech, @vincentkoc.
  • Built-in openclaw nodes status, openclaw nodes list, and related node commands now start quickly without unnecessary plugin initialization, while plugin-provided node commands still load when requested. #96702 Thanks @erhhung, @qijian-zhang, @zengwen-dt.
  • Debug proxy capture now prevents oversized or endless response bodies from crashing the agent, while useful status and header metadata is retained. #97551 Thanks @alix-007.
  • The first Gateway status check after a restart now reports the selected model's actual context window instead of briefly showing a generic 200k limit. #97576 Thanks @turbotheturtle.
  • Android node reconnects now direct users from a failed devices approve attempt to the correct openclaw nodes approve <requestId> command, with a reminder to reuse connection flags. #98115 Thanks @welfo-beo.
  • Permanently failed deliveries are now surfaced by openclaw health with queue counts and oldest-failure age instead of reporting an all-green state. #99842 Thanks @masatohoshino.
  • Timing displays now roll rounded sub-second values over to 1s instead of showing the awkward 1000ms. #100006 Thanks @qingminglong.
  • Repeated configuration warnings are now suppressed between meaningful recurrences, keeping long-running Gateway logs readable without hiding new diagnostics. #100569 Thanks @vincentkoc.
  • Gateway settings marked as no-restart now take effect in live and heartbeat-driven turns without requiring a manual restart. #100586 Thanks @obviyus, @sedrak-hovhannisyan.
  • TUI links now leave malformed fragments and stray punctuation as plain text while keeping valid parenthetical, IPv6, and line-wrapped URLs clickable at the correct target. #100780
  • Log-tail stream failures are now reported cleanly by openclaw logs instead of crashing, hanging, or leaving journalctl running. #100850 Thanks @cxbasdev, @vincentkoc.
  • Trimmed OpenClaw CLI logs now remain valid UTF-8 when the retained byte range begins inside an emoji or other multibyte character. #101029 Thanks @ly85206559.
  • Windows backups now recover more reliably from live-write races by avoiding repeated use of the same locked temporary archive and cleaning stale retry files. #101449 Thanks @lilan0125, @vincentkoc.
  • Session cost summaries now estimate a real charge when a transcript records zero dollars despite token use and known model pricing. c5260a3 Thanks @nianjiuzst.
  • Session logs and cached cost views now preserve provider-reconciled zero-dollar totals while recalculating genuinely missing costs from stored provider and model details. c45124a
  • LaunchAgent-managed Gateways on permission-constrained macOS volumes now start the generated environment wrapper through /bin/sh, preventing immediate background-service exits. #89967 Related #87199. Thanks @joshdaynard, @zhangguiping-xydt.
  • The caller's PATHEXT is now honored by Windows command lookup, allowing valid PowerShell scripts and executables to resolve in containers, CI, and isolated environments. #98093 Thanks @wendy-chsy.
  • Failed openclaw devices approve attempts now explain whether to approve a scope upgrade elsewhere or refresh the pending request ID and retry. #98146 Thanks @romneyda.
  • When a running Gateway fails its probe, openclaw gateway status now gives relevant credential, configuration, restart, and log guidance instead of telling operators to wait for warm-up. #98183 Thanks @masatohoshino.
  • Oversized search responses are now rejected by openclaw docs with a clear error before they can destabilize the CLI or exhaust memory. #98188 Thanks @cxbasdev.
  • Gateway config.patch now accepts unrelated configuration updates when a bundled provider uses its default endpoint, without saving empty runtime-only provider fields. #98396 Related #98270. Thanks @momothemage, @weltmaister.
  • OpenClaw update checks now limit malformed or unexpectedly large npm registry responses before they can consume excessive memory. #98508 Thanks @lzyyzznl.
  • Several edge cases now preserve transcript and voice text, surface MCP failures, bound oversized responses, show current session time, choose the right Linux package manager, and use port 443 for secure Gateway links without an explicit port. #100258 Thanks @connermo, @cxbasdev, @gfaerny, @hailory, @harjothkhara, @ly85206559, @mushuiyu886, @simon-xydt, @sunlit-deng, @uditdewan.
  • Valid openclaw.json files with a BOM, PowerShell formatting, or deep indentation can now save authentication, model, repair, and other configuration changes without manual reformatting. #100591 Thanks @vincentkoc.
  • On Windows, openclaw update now prevents the managed Gateway Scheduled Task from relaunching during package replacement, avoiding partially updated or mixed-version processes. #100757 Thanks @vincentkoc.
  • During openclaw doctor and updates, shell-completion repair now skips loading expensive plugin commands, cutting out unnecessary delays while full user requested generation still includes plugin commands. #76235
  • Windows Gateway setup now detects when Task Scheduler exits without starting a listener and can use the existing fallback launch without creating a duplicate if startup is only delayed. #76245
  • Pressing Ctrl+C during the installer upgrade doctor now cleanly stops the flow and prevents an incomplete or failed installation from opening a stale dashboard. #76386 Thanks @sebtardif.
  • openclaw doctor now issues a warning when QMD session search is enabled without transcript export and provides commands and documentation to fix the missing recall setup. #80947 Thanks @anyech.
  • openclaw doctor now provides a missing-transcript preview command that actually shows entries eligible for removal before users choose to enforce cleanup. #83630 Thanks @yuanhanzhong.
  • Operators can inspect stale session write locks with openclaw doctor --lint --json --only core/doctor/session-locks and preview which locks a repair would remove or preserve. #84366 Thanks @giodl73-repo.
  • openclaw doctor now evaluates the default agent's actual per-agent bootstrap limits, producing accurate truncation warnings and remediation guidance. #84424 Thanks @kasangyong, @vincentkoc.
  • Gateway-managed skill checks can now find commands installed through pnpm 11 and common npm-global layouts, reducing false missing-tool warnings and unnecessary reinstalls. #85238 Thanks @shbernal, @vincentkoc.
  • status and status --json now build session model labels with less unnecessary normalization, improving readback speed for larger session sets and incident checks. #87831 Thanks @acskamloops.
  • On Windows, openclaw doctor now accurately detects supported Chrome versions instead of warning that a working installation could not be identified. #87937 Thanks @mukundakatta.
  • openclaw doctor no longer aborts when a configured agent workspace has not been created yet, while real file operations still enforce workspace boundaries. #89226 Thanks @sasan1200, @shifengwang333-ai.
  • An invalid openclaw nodes approve <requestId> now shows available pending IDs and the openclaw nodes pending recovery command instead of a raw client error. #94452 Thanks @mushuiyu886.
  • Optional Doctor lint can now report missing, unsafe, unwritable, cloud-synced, removable, volatile, or incomplete OpenClaw state storage with paths and repair guidance. #95979 Thanks @giodl73-repo.
  • An opt-in Doctor lint check now explains which configured plugin installation is broken and previews the repair before operators run the existing fix workflow. #96171 Thanks @giodl73-repo.
  • When cron command output is truncated, operators can still recover the earlier login or setup instruction they need without exposing its raw secret through notifications. #96393 Related #96346. Thanks @nz365guy.
  • A timeout while one isolated cron job is setting up no longer restarts the Gateway or interrupts unrelated agent and scheduled work. #96396 Thanks @849261680, @brycemurray, @velvet-shark.
  • Operators can run openclaw doctor --lint --all to include every opt-in diagnostic check without changing the behavior of existing doctor --lint automation. #96471 Thanks @giodl73-repo.
  • Default cron failure alerts enabled with openclaw cron edit <job> --failure-alert now survive Gateway restarts instead of silently disappearing after reload. #96615 Thanks @liuhao1024.
  • Operators can run openclaw doctor --lint --only core/doctor/gateway-health, --only core/doctor/gateway-daemon, or --all for structured, credential-safe warnings about Gateway reachability and local service health without changing service state. #97075 Thanks @giodl73-repo.
  • Operators can use the focused auth-profile Doctor lint check to find expired, missing, malformed, cooled-down, disabled, or legacy credentials with structured repair guidance. #97125 Thanks @giodl73-repo.
  • A focused memory-search Doctor lint check now reports provider, credential, backend, and QMD setup problems with structured paths and fixes. #97137 Thanks @giodl73-repo.
  • The workspace-status Doctor lint check now reports plugin drift, compatibility, loading diagnostics, and recoverable TaskFlow state in machine-readable form. #97358 Thanks @giodl73-repo.
  • A focused device-pairing Doctor lint check now provides structured warnings and repair guidance for pending requests, stale authentication, missing scopes, and unreadable stores. #97366 Thanks @giodl73-repo.
  • openclaw onboard now explains up front what setup covers, why full onboarding can take longer, and which optional steps can be postponed. #97482 Thanks @ly85206559.
  • Operators can request a structured Doctor lint check for configured channels whose backing plugins are blocked, including the unmet requirement and suggested fix. #97496 Thanks @giodl73-repo.
  • A focused tool-result-cap Doctor lint check now identifies settings below model-aware defaults or above the runtime ceiling with actionable paths. #97500 Thanks @giodl73-repo.
  • Linux operators can use the systemd-linger Doctor lint check to learn when logout may stop the Gateway and get the exact loginctl enable-linger remedy. #97514 Thanks @giodl73-repo.
  • Remote node hosts can now connect to Gateways mounted at reverse-proxy paths such as /openclaw-gw, including after daemon installation or reconnect. #97679 Related #97678. Thanks @wm0018.
  • Local Docker source builds are less likely to run out of memory, and failures that still exhaust memory now suggest the relevant build settings. #98119 Related #98118. Thanks @zyzo.
  • openclaw pairing list now gives a useful device-approval next step when no chat DM pairing channels exist instead of displaying a broken empty-choice error. #98142 Thanks @romneyda.
  • openclaw doctor now warns when cron jobs target channels whose plugins are inactive, letting operators correct delivery before the next scheduled run fails. #98184 Thanks @masatohoshino, @vincentkoc.
  • Docker and bind-mount installations can finish legacy cron migration across filesystem boundaries, with actionable warnings and duplicate-safe retries when cleanup cannot complete. #98217 Thanks @masatohoshino.
  • Linux operators now see when systemd has stopped restarting a repeatedly crashing Gateway, and openclaw gateway restart can recover the latched failed service. #98291 Thanks @masatohoshino.
  • The Doctor lint tool can now detect deprecated legacy fenced HEARTBEAT.md templates and differentiate between files that are safe to clean up automatically and those that include custom content. #98400 Thanks @giodl73-repo.
  • A combination of WhatsApp, an overloaded Gateway event loop, and active local TUI sessions that leads to delayed responses can now be flagged by Doctor lint. #98406 Thanks @giodl73-repo.
  • On hosts with VPNs, virtual adapters, WSL, Hyper-V, or multiple networks, links for Control UI, pairing, setup-code, QR, and status now favor a reachable LAN address. #98482 Thanks @joshavant.
  • openclaw doctor now describes cron jobs that appear to still be running after an interrupted Gateway session and explains how those leftover markers get cleared on the next startup. #98620 Thanks @masatohoshino.
  • openclaw gateway status --deep can now detect Windows Firewall rules that block LAN devices and suggest practical fixes involving rules, loopback, Tailscale, or SSH tunnels. #98666 Thanks @joshavant.
  • Stale global plugin-runtime symlinks can now be reported by Structured Doctor lint, including the outdated link, its destination, and the openclaw doctor --fix cleanup command. #98729 Thanks @giodl73-repo.
  • After openclaw doctor --fix archives a legacy sidecar, the macOS app no longer regenerates it or shows the same migration conflict warning each time a command or Gateway starts. #99039 Related #98917. Thanks @momothemage, @p51moustache.
  • Gateway status, Doctor, and onboarding diagnostics now read large logs within fixed limits and surface recent useful failures rather than old irrelevant entries. #99407 Thanks @sunlit-deng.
  • Doctor now issues a warning when enabled cron jobs are stuck in repeated failures with no configured alerts, while healthy jobs and those below the threshold remain silent. #99606 Thanks @masatohoshino.
  • Managed Gateway updates now let active work finish within the configured drain period before the service handoff times out. #99695 Thanks @zoowh.
  • Large session histories now produce smaller .usage-cost-cache.json files with less parsing and rewriting, and they rebuild automatically after an upgrade. #99714 Related #99511. Thanks @dexhunter, @wayne524.
  • On minimal machines, first-run skill setup now groups missing Homebrew, uv, or Go prerequisites into a single clear notice while still installing dependencies that can succeed. #99726 Thanks @fuller-stack-dev, @sedrak-hovhannisyan.
  • Upgrades from the legacy config-health store no longer repeat a permanent conflict warning, and existing recovery backups remain accessible without overwriting newer observations. #99728 Related #99280. Thanks @ccbridle, @jalehman, @joshavant.
  • Installers and runtime checks now reject Node 23.0-23.10 early with guidance on supported versions, instead of leaving users with a broken OpenClaw CLI. #99832 Thanks @fuller-stack-dev, @vincentkoc.
  • Crestodian on Claude Code or Gemini CLI can now conduct multi-turn setup conversations, inspect state, request precise approval for changes, and verify writes, rather than immediately falling back to a single-turn planner. #100029
  • Crestodian setup and repair chats no longer destabilize the local TUI when a terminal event consumer fails during response delivery. #100341 Thanks @cxbasdev, @vincentkoc.
  • Extended-stable Gateways now periodically show a openclaw update hint when a newer exact package is verified, without automatically changing the installation. #100438 Thanks @kevinslin.
  • Crestodian now differentiates ordinary questions from operational requests, accepts natural approval phrases, clears stale proposals, and keeps sensitive configuration out of the conversation model. #100656
  • Fresh git installs now guide users through setup or provide the exact command to finish later, before missing configuration or Gateway authentication can break first use. #101901 Thanks @fuller-stack-dev.
  • Setup now checks the configured custom agent or auth directory for credentials instead of reporting the wrong bootstrap state from a default location. 0fd69dc Thanks @vincentkoc.
  • The CLI and full-screen TUI now open with a clear recovery message when their launch directory has been deleted, instead of crashing before startup. #93636 Thanks @ml12580.
  • Node status, list, and pending-pairing views now tolerate malformed saved values and show usable node information instead of crashing. #93930 Thanks @ly-wang19.
  • usage.cost and sessions.usage now reject a start date that is later than the end date with a clear INVALID_REQUEST instead of returning a misleading empty report. #94096 Thanks @alix-007.
  • Browser CLI commands now accept --browser-profile before or after the subcommand, restoring existing remote-browser and WSL2 command patterns. #94431 Thanks @ml12580.
  • Usage, cost, model, provider, timing, and session data for runs started through /v1/responses and /v1/chat/completions can now be captured by Langfuse, OpenTelemetry, and Prometheus. #96152 Thanks @rocke2020, @xialonglee.
  • openclaw tasks maintenance --apply now preserves active cron session history even when job IDs contain spaces, capitals, punctuation, or explicit session keys. #96352 Thanks @ly-wang19, @vincentkoc.
  • openclaw cron add now rejects invalid --no-output-timeout-seconds and --output-max-bytes values immediately instead of silently creating a command job without the requested limits. #96516 Thanks @zhangguiping-xydt.
  • openclaw config unset now explains when a visible value is an inherited runtime default not stored in the user's config, avoiding an unproductive loop between config get and config unset while leaving failed attempts unchanged. #96557 Thanks @moeghashim.
  • Failed openclaw --help and openclaw --version startup now returns exit code 1 promptly instead of leaving the terminal process stuck. #97807 Thanks @aniruddhaadak80, @maweibin.
  • gateway run --force now ignores malformed listener PID records during port cleanup instead of carrying invalid process state into recovery. #98371 Thanks @lzyyzznl.
  • Gateway busy-port diagnostics and forced cleanup now ignore malformed listener IDs, avoid phantom processes, and verify that a port is actually free before reporting recovery. #98505 Thanks @qiuyuang.
  • CLI tables now shorten only the actual home directory and its descendants, so sibling paths such as /home/alice2/project no longer appear as misleading home-relative paths. #98876 Related #98872. Thanks @qingminglong.
  • During a live backup, openclaw backup create now tolerates the disappearance of disposable runtime files while still protecting durable files under the existing inclusion policy. #98879 Related #98865. Thanks @carterstebbins23-spec, @vincentkoc, @zengwen-dt.
  • In long-running OpenClaw processes, file-backed usage-bar templates now keep watcher and file-descriptor usage bounded while still reloading templates when necessary. #98990 Thanks @chenyangjun-xy, @vincentkoc, @zhanglei99586.
  • Validation hints for configuration and plugin-schema now display clear allowed values instead of the misleading literal label undefined. #99045 Thanks @lzyyzznl.
  • When a higher --limit is requested, message read, pinned-message, and search commands can now display more than 25 returned rows and warn when additional provider results remain. #99089 Thanks @jerrytao-ai, @wm0018.
  • openclaw health now warns when gateway configuration hot reload has stopped, so operators know a restart is required rather than unknowingly running stale settings. #99267 Thanks @masatohoshino, @vincentkoc.
  • Instead of applying an imprecise history limit, openclaw sessions tail --tail now rejects counts too large to represent safely. #99398 Thanks @qingminglong.
  • Session usage and cost records are no longer corrupted with invalid values from a malformed transcript timestamp. #99420 Thanks @krissding.
  • Human-readable cron list and cron show output now exposes repeated failure streaks such as error (12x) while leaving JSON status values unchanged. #99602 Thanks @masatohoshino.
  • Windows now reliably detects active Gateway listeners from localized netstat output, improving port diagnostics and gateway --force cleanup without confusing established connections for listeners. #100012 Thanks @qingminglong, @vincentkoc.
  • At rounded boundaries, session maintenance warnings now say 1 minute, 1 hour, or 1 day instead of awkward values such as 60 seconds. #100096 Thanks @narahariraghava, @vincentkoc.
  • The ambiguous Plugins: OK row no longer appears in compact /status, while warnings and detailed plugin diagnostics remain available. #100143
  • Command-specific help and completions now match openclaw --help, with config patch and config schema visible from the main command list. #100670 Thanks @amirf194, @vincentkoc.
  • Terminal-rendered links with balanced parentheses now remain clickable through the complete intended URL instead of being shortened or misdirected. #100697 Thanks @aniruddhaadak80, @zoowh.
  • A Gateway WebSocket 1006 disconnect now gives operators accurate connection-loss guidance instead of implying that a healthy Gateway necessarily crashed. #101219 Thanks @darren2030, @vincentkoc.
  • Failed OpenClaw and plugin-harness traces now include useful redacted error details in OpenTelemetry instead of only a generic failure label. #101244 Thanks @amknight.
  • Windows Gateway restarts no longer depend on the findstr check that could leave a visible or hung command window blocking the handoff. #101366 Thanks @deepujain.
  • OpenTelemetry trace viewers can now display captured tool results alongside tool inputs in standard GenAI fields, making failed-run investigation more complete. #101371 Thanks @amknight.
  • Timed-out commands on Windows are less likely to leave child processes running when taskkill.exe cannot start. #101392 Thanks @aniruddhaadak80, @zengwen-dt.
  • On Windows, openclaw backup create now retries live-file archive races with fresh temporary paths, reducing locked partial backups and leftover retry archives. #101464 Thanks @lilan0125, @zoowh.
  • When an emoji falls at the display boundary, openclaw status --all now keeps shortened channel issue messages readable. #101503 Thanks @wm0018.
  • Near unit boundaries, session maintenance warnings now show more accurate wait estimates, so a roughly 90-second delay is not inflated to two minutes. 58d707f Thanks @vincentkoc.
  • When systemd is unresponsive on Linux, openclaw status, status --json, and status --all now respect their timeout instead of hanging indefinitely. #94149 Related #84698. Thanks @zengwen-dt, @zus-assistant.
  • When a local Gateway is listening but unhealthy, openclaw gateway status --deep can surface a recent likely cause such as a full disk instead of only reporting a generic disconnect. #95902 Thanks @vincentkoc, @wangbyg.
  • Restarting, updating, reinstalling, or repairing a macOS Gateway now preserves active SecretRef-backed channel credentials instead of leaving Telegram and other integrations unable to authenticate. #99124 Thanks @mushuiyu886.
  • Gateway configuration updates now reject missing redacted values for keys such as toString or constructor instead of restoring an inherited JavaScript function. #99152 Thanks @zenglingbiao.
  • Generated shell completion now suggests accepted OpenClaw command aliases and continues completing their options and subcommands. #99419 Thanks @amirf194, @jack-dev-ops, @vincentkoc.
  • Update and status checks now identify malformed npm metadata as invalid JSON instead of returning only an opaque syntax error. #100338 Thanks @cxbasdev.
  • Operators can upgrade the Gateway before N-1 subordinate nodes without losing the normal update, restart, repair, status, and maintenance path for those nodes. #101109 Thanks @jtczville.
  • Windows users can launch globally installed Gemini CLI and Claude Code backends through their npm command shims without immediate spawn failures or mangled prompt arguments. #101378 Thanks @wendy-chsy.
  • During an update, a failed Gateway replacement no longer triggers an extra unhandled crash in the parent process that was already running. #101489 Thanks @aniruddhaadak80, @momothemage, @vincentkoc.
  • After a failed CLI installation, temporary Node staging directories and pnpm workspace rewrite files are now cleaned up. #103725 Thanks @sebtardif.
  • When using Git installs, a openclaw launcher is created that continues to use the correct Node.js runtime even if the user's PATH changes later. be7198f
  • openclaw agents list now displays configured external channels even when their plugin is absent, and provides suitable install or openclaw doctor --fix instructions. #95363 Thanks @hugenshen.
  • With targeted Doctor lint, operators can review legacy session transcripts and outdated snapshot paths, preview the cleanup, and decide whether to apply it. #95976 Thanks @giodl73-repo.
  • Selectable structured Doctor lint now provides routing warnings for WhatsApp and Telegram default accounts, while normal Doctor output stays the same. #96147 Thanks @pick-cat, @vincentkoc.
  • Optional Doctor lint can detect stale or missing plugin registry data, shadowed bundled plugins, outdated install records, and broken OpenClaw peer links. #96169 Thanks @giodl73-repo.
  • Documentation links in terminal and setup areas now resolve properly when relative paths start with http or absolute HTTP schemes contain uppercase letters. #96439 Thanks @lin-hongkuan.
  • Terminal notes, Doctor output, and diagnostics now wrap long runs of CJK, full-width, or emoji characters within the specified width instead of overflowing into adjacent columns. #96746 Thanks @ly-wang19.
  • Structured Doctor lint can now report low or critical disk space for the OpenClaw state directory, including the affected path, available space, requirement, and how to fix it. #98391 Thanks @giodl73-repo.
  • Manual Gateway setup now rejects port entries like 1e3 or 0x1000 instead of silently saving a different port, while valid decimal ports are left alone. #98689 Related #98681. Thanks @qingminglong.
  • Plugin operators can use doctor --lint --only core/doctor/legacy-plugin-manifests or --all to find legacy manifest keys and see the affected plugin, path, and repair command. #98695 Thanks @giodl73-repo.
  • With openclaw doctor --lint --only core/doctor/legacy-plugin-dependencies or --all, operators can locate stale plugin dependency state and receive a path plus safe repair advice without modifying the installation. #98725 Thanks @giodl73-repo.
  • Operators can opt into core/doctor/legacy-cron-store to find legacy cron data that needs attention, with the lint check not altering any stored state. #99211 Thanks @giodl73-repo.
  • Channel setup warnings are now available as structured Doctor lint findings with stable paths and repair guidance for both operators and automation. #99238 Thanks @giodl73-repo.
  • Default doctor --lint results now concentrate on actionable configuration and runtime issues, with optional backup and memory advice only shown when requested. #99249 Thanks @giodl73-repo.
  • A normal Doctor lint run no longer calls crontab -l for the optional legacy WhatsApp check unless an operator explicitly chooses it. #99250 Thanks @giodl73-repo.
  • openclaw doctor --fix now succeeds in locked-down environments where only shell-completion installation is blocked, while still reporting actual write failures. #99540 Related #99237. Thanks @hunglp6d, @rballiance.
  • Before operators run doctor --fix, doctor --lint --all can now explain the path or permission that would prevent a configuration repair. #100093 Thanks @giodl73-repo.
  • OTLP traces, metrics, and logs now follow HTTP_PROXY, HTTPS_PROXY, and NO_PROXY, keeping diagnostics exports on the configured network path. #100616 Thanks @jesse-merhi.
  • Remote Gateway status checks now fall back to the configured SSH target when local effective-config probing fails, instead of crashing or stalling discovery. #101160 Thanks @cxbasdev.
  • On Windows, update and doctor repair now move an owned legacy Startup gateway to Task Scheduler without leaving a stale process, dropping authentication, or removing the fallback too early. #101213 Thanks @vincentkoc.
  • openclaw update now targets the global Node installation that launched it, avoiding false success when Homebrew, nvm, asdf, or Volta exposes another OpenClaw copy. #101228 Thanks @buddyh.
  • Pending exec approval cards now describe only the approval state, and the foreground-fallback warning appears only after a command actually runs that way. #101561 Thanks @vincentkoc.
  • openclaw plugins list now uses substantially less peak memory on fresh and already-migrated packaged installs while preserving required migration behavior. #103132

Documentation and operating guides

Official operating guidance now aligns more closely with shipped commands, configuration, setup, status output, placeholders, and recovery behavior. Generated documentation maps also preserve literal command parameters, reducing the chance that a reader follows an example whose identifiers were stripped or whose workflow no longer matches the product.

Sources and contributors

  • The CLI configuration documentation now differentiates between normal JSON5 value parsing and --strict-json, which processes standard JSON and rejects syntax exclusive to JSON5. #80981 Thanks @addu2612.
  • Documentation for plugins and channel status now makes it clear that a MessageReceipt or durable sent outcome indicates acceptance by the platform, not confirmation of display or reading on a recipient's device. #90063 Thanks @pdurlej.
  • The macOS guide now provides users with a more straightforward path from downloading the application through initial setup, Gateway selection, and targeted troubleshooting. #97120 Thanks @romneyda.
  • The Discord setup guide now directs users to the correct Developer settings section for enabling Developer Mode and copying the required IDs. #97336 Thanks @naseemm123.
  • Plugin developers now receive clearer SDK deprecation notices and migration guidance for session-store and transcript-file helpers ahead of the planned SQLite transition. #97494 Thanks @jalehman.
  • OpenClaw's public documentation now uses shorter, task-oriented instructions with corrected commands, configuration names, defaults, provider behavior, and troubleshooting steps. #100142
  • Logbook users now have complete guidance for setup, model routing, privacy choices, and troubleshooting missing capture or timeline results. b6a7898
  • Safe-restart documentation now indicates that the default wait can conclude after gateway.reload.deferralTimeoutMs and describes how to configure an indefinite wait. #95397 Thanks @zhangqueping.
  • The agent configuration guide now identifies the current models selected by the built-in opus and gpt aliases. #96375 Thanks @niks999.
  • Docker operators now have an official process for installing, authenticating, verifying, and persisting the claude-cli backend across container image upgrades. #96380 Thanks @fffrank, @zaidazmi.
  • OpenClaw's Anthropic and Claude CLI documentation now reflects the current subscription-limit treatment for claude -p and related usage, with official references for billing and deployment decisions. #96848 Thanks @fightingsleep, @tirion-p.
  • The Discord setup guide now separates General Permissions from Text Permissions so bot access choices are easier to read correctly. #97584 Thanks @slammajamma28.
  • Telegram's error-reply documentation now lists the supported policies and correct cooldown defaults, avoiding invalid errorPolicy: "reply" configurations. #97635 Thanks @wm0018.
  • The Feishu documentation no longer suggests the rejected dmPolicy: disabled setting, reducing configuration failures copied from the guide. #97640 Thanks @wm0018.
  • The public onboarding docs now cover eleven existing non-interactive flags for token auth, Cloudflare AI Gateway, daemon, UI, hooks, and token output. #97753 Thanks @vincentkoc, @wm0018.
  • Matrix documentation now explains progress streaming, room-specific mention matching, per-room enablement, and bot-loop safeguards that operators can configure. #98318 Thanks @vincentkoc, @wm0018.
  • Telegram channel documentation now correctly states that an unset streaming mode uses partial previews and explains how to choose final-only replies. #98453 Thanks @solodmd.
  • OpenClaw's mobile documentation now identifies the iOS and Android apps as official releases and provides consistent App Store, Google Play, and hosted iOS push-relay guidance. #98843 Thanks @joshavant.
  • Plugin authors now get clearer packaging guidance for runtime dependencies, built artifacts, npm-pack: validation, and trusted official-plugin checks before publication. #99962 Thanks @hxy91819.
  • Official plugin package examples now agree on the required typebox runtime and openclaw peer dependencies, reducing copy-and-paste setup failures. #99973
  • The bundled imsg skill now guides agents toward the correct direct or group conversation, stable targets, least-privilege actions, and confirmation before visible or sensitive changes. #100105 Thanks @omarshahine.
  • Official OpenClaw docs now help operators and plugin authors handle credentials safely, preflight cron jobs that use local-provider fallbacks, apply Talk timing defaults, configure MiniMax providers and models, and copy a complete minimal plugin package with the required dependency metadata. #100182
  • Android node operators now have an end-to-end guide for securely mirroring and controlling a remote device from macOS, including authorization, troubleshooting, and clean disconnection. #100398
  • The Codex and WhatsApp plugin references now identify their tools contract, making supported plugin capabilities easier to match with OpenClaw workflows. 46ad3f9 Thanks @vincentkoc.
  • The onboarding reference now explains that bare openclaw starts onboarding for a missing config, opens Crestodian for an invalid config, and launches the agent TUI for a valid config. d9dbee7
  • ACP troubleshooting now names PermissionPromptUnavailableError, helping operators recognize a non-interactive permission failure and find the right configuration fix. b3a74cc
  • The onboarding reference now gives accurate signal-cli, Gateway runtime, and channel allowlist guidance, including Windows limits and the IDs expected for direct messages. aaaa803
  • Generated documentation navigation now preserves complete headings with command placeholders such as <id> and <deviceId> instead of hiding required arguments. #99099 Thanks @hxy91819.

Browser, schedules, files, and coding tools

With vision-capable models, agents can read scanned PDFs, work in isolated coding checkouts, and handle files, media, browser results, and execution failures with more usable output. Browser control preserves pairing and download state more reliably, while parallel workspace operations are less likely to collide with one another or the user's current files.

Scheduled automation retains intended models, timing, state, and delivery across more restarts and edits. Tool calls and results also recover more cleanly from timeouts, malformed content, oversized output, and interrupted work instead of leaving a task looking complete when its usable result was lost.

Sources and contributors

  • Models with vision capabilities can now interpret rendered pages from scanned PDFs and image-only files attached via chat channels. #97354 Thanks @joshavant.
  • Workboard tasks now support managed isolated worktrees, with CLI and Control UI tools for creation, cleanup, restoration, and recovery snapshots when safe removal of work is not possible. #100535
  • From the Control UI or mobile app, users can now launch a chat inside its own managed worktree, keeping dirty work isolated during parallel coding while automatically cleaning safe idle checkouts. #100788
  • A stalled remote Chrome or WSL2 browser no longer blocks tab-list requests indefinitely; OpenClaw returns a bounded timeout and can reestablish the connection on the next request. #80147 Thanks @hemantsudarshan, @keaneyan.
  • When the selected tab is closed or replaced, remote-browser actions now recover by retrying without the stale tab ID, matching the behavior of local browsers. #89086 Thanks @rhclaw.
  • CDP-driven browser navigation to CSV, PDF, and other attachment URLs now produces a safely saved managed file along with its URL and suggested filename. #89416 Thanks @zhangguiping-xydt.
  • Browser downloads now provide the agent with the saved filename and path, allowing it to use the completed download rather than repeating the action. #93307 Thanks @sunlit-deng.
  • Updating browser.profiles.* connection details now takes effect without requiring an unnecessary Gateway restart or disrupting active sessions. #93827 Thanks @goutamadwant.
  • Browser automation can now target tabs by suggested ID, tab ID, label, or unique prefix without encountering false target-mismatch failures. #96178 Thanks @zengwen-dt.
  • Persistent managed-browser logins now survive normal Chrome and Gateway restarts, cutting down on repeated sign-ins and MFA interruptions for unattended browser tasks. #98284 Thanks @malashenia, @turbotheturtle.
  • Oversized browser-control error responses no longer consume excessive Gateway memory, while ordinary failures still provide useful diagnostic information. #98455 Thanks @wings1029.
  • Browser responsebody requests for a short prefix of a large response now avoid decoding a second full-size text copy while still delivering the requested truncated content. #98940 Thanks @pandah97.
  • Browser extensions can reconnect using a newly rotated pairing token while Browser control stays active, and old tokens continue to be rejected. a703183 Thanks @vincentkoc.
  • Cron jobs with a valid future run that lands exactly on a second boundary now keep that scheduled time instead of being incorrectly marked as stale and rebased. #81731 Thanks @vincentkoc, @yashkot007.
  • Isolated agentTurn cron jobs can recover from temporarily mismatched runtime artifacts rather than failing at startup with a sourceReplyDeliveryMode error. #85249 Thanks @jerry-xin.
  • openclaw tasks maintenance --apply can now fix false lost-task records when durable cron history confirms the run completed successfully. #86088 Thanks @altaywtf, @liaoandi.
  • Scheduled agent jobs now issue a warning when ANNOUNCE_SKIP suppresses a cron completion, making missing reports and partial output easier to diagnose. #90566 Related #68561. Thanks @mibslee, @sahibzada-allahyar.
  • Catch-up cron jobs that are briefly deferred after startup are no longer skipped just because an operator checks cron status before they execute. #94022 Related #93935. Thanks @richchen01, @vincentkoc, @yetval.
  • Scheduled agent turns using claude-cli or another CLI backend now start normally, while explicitly unsupported tool restrictions still fail closed. #95615 Thanks @anagnorisis2peripeteia, @obviyus.
  • Timed-out or cancelled isolated cron runs now retain their provider, model, and session details in cron_run_logs, making failed jobs easier to trace. #95943 Related #95873. Thanks @luke-renjoy, @zengwen-dt.
  • A scheduled cloud-model job that opens a response but sends no content can now switch to a healthy fallback model before the entire run times out. #96096 Thanks @849261680, @velvet-shark.
  • Editing a recurring cron job no longer skips a run that is already due or shifts an unchanged interval schedule to the edit time. #96159 Thanks @yetval.
  • Clearing a saved Model or Thinking/Effort override in the Cron Control UI now properly restores inherited defaults, with --clear-thinking available from the CLI. #96293 Related #96287. Thanks @takamasa-aiso, @zengwen-dt.
  • CLI-backed workers from isolated cron jobs now exit after finishing instead of accumulating and slowing down the host and Gateway. #97227 Thanks @vianne-droid, @xialonglee, @yusukeit0.
  • Long cron failure alerts now preserve emoji and other supplementary Unicode characters instead of ending with a broken replacement symbol. #97298 Thanks @zenglingbiao.
  • Heartbeat fallback failures no longer send noisy chat messages composed solely of repeated internal error placeholders. #97364 Thanks @turbotheturtle.
  • Failed shell-tool messages now separate the command typed by the agent from framework labels and display the exit code, node, and working directory more clearly. #97511 Thanks @aditya-vithaldas.
  • Scheduled jobs that allow web_search now report that no usable search provider is selected instead of completing with an unusable result. #97677 Thanks @lilan0125, @riazrahaman.
  • Scheduled commitment follow-ups now stay focused on their original conversation rather than absorbing unrelated heartbeat instructions, queued context, or recovery work. #98169 Thanks @bdjben.
  • Scheduled deliveries to numeric threads like Telegram forum topics now return to the configured thread after Gateway restarts instead of falling back to the general chat. #98699 Thanks @yetval.
  • Scheduled jobs can deliver to a live chat without blocking replies or mixing background work into its transcript, and operators can clear stale childless cron tasks without cancelling active session-backed runs. #98755 Related #98121. Thanks @ethansk, @obviyus.
  • Recurring cron jobs created for current or session:<id> once again carry their selected conversation history into later runs, while isolated jobs still start clean. #98947 Thanks @ethansk, @obviyus.
  • Failed cron add, cron update, and cron remove commands now leave the running scheduler unchanged, so live jobs match the saved configuration and reported result. #99960 Thanks @masatohoshino, @vincentkoc.
  • Editing a scheduled job's message no longer accidentally breaks later CLI-backed runs, while explicit tool restrictions remain protected where they cannot be enforced. #100203 Thanks @obviyus.
  • Reliability fixes now reject unsafe cron and plugin inputs, preserve skill formatting, surface Gateway and memory failures, fail LSP startup sooner, and prevent stale Android camera results after cancellation. #100399 Thanks @849261680, @anyech, @cxbasdev, @lin-hongkuan, @masatohoshino, @nankingjing, @qingminglong, @simon-xydt, @snotty, @xialonglee.
  • A broad reliability pass now replaces stalled child-process work with clear errors, improves sandbox diagnostics, bounds mobile calendar and voice state, normalizes cron fallbacks, and rejects unsafe provider responses. #100483 Thanks @aniruddhaadak80, @cxbasdev, @jincheng-xydt, @morluto, @nianjiuzst, @pandah97, @versatagent, @xialonglee, @zenglingbiao, @zengwen-dt.
  • Transient stdout or stderr read errors from gog gmail watch serve no longer crash OpenClaw while Gmail watch mode is running. #100519 Thanks @cxbasdev.
  • Exec and finished background-session results now include signals, timeout flags, failure kinds, and exit reasons so users can determine why a command stopped. #89104 Thanks @yu-xin-c.
  • openclaw mcp serve and bare openclaw acp now start with clean machine-protocol output, preventing startup warnings from corrupting JSON-RPC for MCP and ACP clients. #89997 Thanks @kenners22, @vincentkoc.
  • When an agent command includes an invalid explicit workdir, including a literal ~, it now halts cleanly instead of running from an unintended fallback directory. #94441 Thanks @jesse-merhi, @renaudcerrato.
  • For SSH and OpenShell backed sandbox commands, remote resources are now cleaned up after failed launches, the correct plugin session and channel context is preserved, and malformed input returns a normal tool error rather than an internal WeakMap failure. #96926 Thanks @jesse-merhi.
  • On Windows, autoreview --engine copilot runs now return a completed review result even when temporary directory cleanup is briefly delayed. #97901 Thanks @paulcam206.
  • Oversized local socket replies now fail promptly without consuming memory until timeout, while large macOS commands still return completion status and bounded recent output. #98130 Thanks @pick-cat.
  • Extension commands that time out, abort, or exceed output limits now clean up their child processes instead of leaving background work running after api.exec() returns. #98340 Related #98335. Thanks @ooiuuii.
  • For shell-style pages with no locally extractable content, web_fetch now reaches the provider fallback much faster, reducing the measured fresh-process delay from several seconds to about one. #98559 Thanks @vincentkoc.
  • Emoji and other supplementary Unicode characters remain intact when long command output is shortened for polls, completion notices, or approval follow-ups. #98721 Thanks @zengwen-dt.
  • A set of failure-path fixes now keeps commands and maintenance tasks running through isolated errors, preserves terminal and model text, improves skill and approval diagnostics, and stops Android voice sessions cleanly after microphone loss. #100440 Thanks @cxbasdev, @lavyatandel, @nankingjing, @nianjiuzst, @tzy-17, @wendy-chsy.
  • Agent workflows can now survive transient stdout or stderr read failures from helper processes instead of losing the entire OpenClaw process. #100522 Thanks @cxbasdev, @vincentkoc.
  • Docker sandbox commands now return an explicit failure when output cannot be read instead of crashing OpenClaw or reporting an incomplete result as successful. #100523 Thanks @cxbasdev.
  • Crestodian setup and local-tool checks no longer terminate OpenClaw when a probed command encounters a rare output-stream read failure. #100741 Thanks @lsr911.
  • web_fetch now handles malformed or adversarial HTML more predictably, reducing excessive processing and keeping hidden script-like text out of fallback output. #102033 Thanks @pgondhi987.
  • Screenshot-style images returned by plugin tools over MCP now reach clients as usable results instead of causing the tool call to fail. #90902 Thanks @k-schmidt, @mushuiyu886.
  • After one generated video clip is ready, a different next clip can start immediately instead of waiting several extra minutes behind stale duplicate suppression. #96018 Thanks @palomyates516-alt, @vincentkoc.
  • Agent runs now stop cleanly when a write, edit, or apply_patch operation would make no change, preventing repeated false-progress retries while real mutations and valid sibling edits continue normally. #97044 Thanks @vincentkoc, @zw-xysk.
  • openclaw capability video generate now returns a bounded, actionable error when a provider URL serves an oversized video without --output. #97549 Thanks @alix-007.
  • openclaw infer image describe now tries configured fallback image models after an explicitly selected model fails and reports which model ultimately succeeded. #98347 Thanks @momothemage.
  • When a bundled MCP server stops mid-session, users now get a prompt server-specific disconnect message and can clear the dead session by refreshing the catalog. #98738 Thanks @masatohoshino, @vincentkoc.
  • Fetching an empty file with an image-style name now returns a clear saved-file path instead of an unusable inline image result. #99370 Thanks @2loch-ness6, @vincentkoc.
  • The diffs tool now renders default outputs faster, preserves highlighting for pack-only languages, handles unchanged input clearly, and reports file-render and invalid-patch errors more accurately. #100487
  • Natural-language corrections can now become the right pending Skill Workshop improvement after successful or failed turns without repeating old feedback, duplicating /learn, or replacing proposal context. #100576 Thanks @vincentkoc.
  • File Transfer folder downloads now either produce a complete verified archive or report a clear read failure instead of crashing or returning partial data. #101590 Thanks @sunlit-deng.
  • OpenShell sandbox sessions now start with the intended workspace files in the managed remote directory, avoiding missing-file and wrong-directory failures. d9034da Thanks @vincentkoc.
  • The optional common sandbox image now includes Node 24 and pnpm so documented Node-based development tasks can run inside it. eabc12b Thanks @vincentkoc.
  • Agent-side web_search now sees the configured provider in the active runtime, so Gateway and channel sessions can keep using providers such as Brave without a restart. #88684 Thanks @alexzhu0, @vincentkoc.
  • Malformed draft-2020-12 tool schemas from an MCP server now produce an actionable setup error that identifies the external schema and retains the underlying failure. #89619 Thanks @vincentkoc.
  • Failed code-mode tool attempts now show the error type, message, and location, giving the model and operator enough detail to diagnose or correct the problem. #95906 Thanks @vincentkoc, @zengwen-dt.
  • Prompt templates now preserve intentionally blank quoted arguments so later positional placeholders receive the correct values. #96405 Thanks @lin-hongkuan.
  • OpenTelemetry latency dashboards now provide useful duration and context-size distributions for agent and harness work lasting well beyond 10 seconds, including multi-minute runs, without collector-side bucket customization. #96592 Thanks @hcnode, @vincentkoc, @zhiling-chen-20230331.
  • When the edit tool cannot match oldText, its error now points to likely nearby lines and explains common indentation, escaping, and whitespace differences, reducing blind retries. #97038 Thanks @aocogoal-gethub, @vincentkoc, @zoowh.
  • MCP tools now receive optional null values correctly instead of having them changed into empty strings that can break valid calls. #97212 Thanks @vincentkoc, @zw-xysk.
  • Successful Codex thread-goal reads now appear as successful in model context, transcripts, and diagnostics instead of being recorded as failed tool calls. #98659 Thanks @yetval.
  • Skill Workshop approval prompts now include the proposal details needed to apply, reject, or quarantine a change, while unanswered requests stay safely pending and return a clear timeout message. #100498
  • When users say things like "next time" or "remember to," OpenClaw can now offer one reviewable Skill Workshop proposal without requiring autonomous capture or repeatedly prompting after dismissal. #100692
  • Legacy task upgrades now restore persisted tasks automatically, preventing linked TaskFlows from falsely reporting them missing or requiring manual SQLite recovery. #103946 Thanks @bek91, @theo674.
  • Remote browser CDP connections now accept URL-encoded Basic auth credentials containing spaces, at signs, and other reserved characters. #97972 Thanks @vectorpeak.
  • Malformed browser fill data supplied through --fields or --fields-file now produces a clear actionable error and exits before any browser action starts. #98861 Thanks @lsr911.
  • Running /new or /reset inside a direct message now shuts down the managed browser tabs for that specific conversation without affecting other users' tabs, even if the browser connection briefly drops. #100792 Thanks @fmls.
  • Agents can now capture a screenshot of a specific background Chromium tab without needing the browser command to time out, though taking the screenshot might bring that tab to the foreground. #100857 Thanks @spencer2211.
  • Managed local browser pages can navigate normally under a restrictive browser.ssrfPolicy.hostnameAllowlist, while remote CDP endpoints and blocked destinations stay inaccessible. #100986 Thanks @nianjiuzst, @sarinv.
  • Browser screenshots taken internally for visual checks are no longer automatically appended to channel replies and are only included when explicitly asked for. #101434
  • Browser automation linked to an existing Chrome session now stops with a bounded error when Chrome crashes or a request is canceled, and subsequent requests can reconnect without issues. #101454 Thanks @aniruddhaadak80.
  • Browser uploads on pages that re-render now recover more dependably and show the actual stale-reference or action error instead of a generic timeout. #101465 Thanks @diwakarrankawat, @m13v, @tigicion.
  • Browser response bodies and page snapshots remain valid and readable when output is truncated near an emoji. #101761 Thanks @mushuiyu886.
  • Browser Control users who lack Playwright now receive a working documentation link for installing or fixing the required browser runtime. d460635
  • Browser Control can now simulate no explicit color preference using openclaw browser set media no-preference, and invalid values list every available option. 9133118
  • Browser POST actions now finish on supported Node 24.16 and later runtimes after JSON parsing while still aborting when the client disconnects. 52044e1 Thanks @obviyus, @vincentkoc.
  • Cron job updates can now remove a job-specific fallback model setting, letting scheduled runs revert to the global defaults without needing to recreate the job. #100801 Thanks @sunnyshu0925.
  • Completed heartbeat tasks remain recorded when the quiet HEARTBEAT_OK acknowledgment can't be delivered, cutting down on repeated work and duplicate follow-up actions on the next heartbeat. #100834 Thanks @machine3at, @vincentkoc.
  • openclaw cron edit now locates jobs more reliably and with less delay on Gateways that contain many scheduled jobs, including --exact and timeout-only edits. #100836 Thanks @machine3at, @vincentkoc.
  • Editing a cron payload with --no-best-effort-deliver no longer silently switches the job's delivery mode to announcements. #100846 Thanks @machine3at.
  • Applying openclaw cron edit <id> --no-best-effort-deliver to an older detached job no longer accidentally suppresses its completion announcement. #101027
  • Agent and MCP cron requests that use mixed-case command labels now fail closed instead of bypassing the restriction on shell-backed agent cron jobs. #101350 Thanks @pgondhi987.
  • Replies now correctly confirm reminders scheduled through commands like openclaw cron add instead of also stating that no reminder was created. #101807 Thanks @bryantegomoh, @vincentkoc.
  • When an installed fd or rg binary is unusable, agent search can now install a working copy and recover instead of failing repeatedly. #96361 Thanks @miorbnli.
  • Link understanding now keeps page fetching available for the slowest configured fallback and applies tools.links.timeoutSeconds consistently regardless of model order. #100731 Thanks @aniruddhaadak80, @cxbasdev.
  • A failed find search now returns one contained tool error and stops its fd process instead of risking an agent crash or orphaned search. #101158 Thanks @cxbasdev.
  • Stopping a chat through chat.abort can now locate and terminate its matching embedded run instead of reporting failure while the underlying tool process continues. #101222 Thanks @zoowh.
  • Tool Search now fails the affected call cleanly and terminates its unusable child when the diagnostic stream breaks, rather than risking a stranded request or Gateway crash. #101295 Thanks @cxbasdev.
  • Broken child-process output, timeouts, and aborts during agent shell commands are now contained instead of causing rare Gateway crashes. #101370 Thanks @wings1029.
  • QMD command pipe failures now report a clean memory-operation error instead of bringing down the memory host. #101402 Thanks @wings1029.
  • Terminal task lists now shorten emoji-heavy summaries without leaving broken replacement characters in the row. #101600 Thanks @maweibin.
  • Markdown beginning with text like ---not or ---- now remains ordinary content instead of being misinterpreted as frontmatter and removed. #101795 Thanks @nianjiuzst.
  • OpenShell sandbox uploads now place workspace directories at the requested remote path so sandbox commands can reliably find their files. #96303 Thanks @vincentkoc.
  • Multi-page scanned PDFs now keep later pages at a usable image size during fallback extraction, allowing vision models to read the full document. #96390 Thanks @cls3389, @vincentkoc, @zengwen-dt.
  • Multi-attachment prompts now keep real captions while removing duplicate transport markers and placeholder-only text that could confuse the model. #96431 Thanks @lin-hongkuan.
  • GIF attachments are now recognized despite normal Content-Type parameters, spaces, or mixed casing instead of being treated as another media type. #96435 Thanks @lin-hongkuan.
  • Valid inline image data URLs without trailing base64 padding are now accepted, while malformed image payloads remain blocked. #96437 Thanks @lin-hongkuan, @vincentkoc.
  • Video inputs near the configured size boundary are now accepted or rejected based on their actual byte size, avoiding unexpected failures for files that are still within the limit. #96519 Thanks @lin-hongkuan, @vincentkoc.
  • Requesting nonexistent PDF pages now returns a clear range error instead of accidentally sending the entire document to a native provider. #97698 Thanks @zhangguiping-xydt.
  • Message-tool calls with an invalid Gateway timeout now return an immediate validation error instead of appearing to stall. #98652
  • Markdown frontmatter now preserves null-valued fields named toString, constructor, valueOf, or hasOwnProperty instead of silently dropping metadata from skills, hooks, or commands. #99129 Thanks @vincentkoc, @zenglingbiao.
  • Progress summaries for inline scripts and generated files no longer present heredoc content as extra shell commands that ran. #99379 Thanks @zengwen-dt.
  • Fractional PDF page selections such as 1.5 now fail immediately with a clear validation error instead of silently omitting requested content. #99399 Thanks @qingminglong.
  • When the find tool encounters an interrupted or failed directory search, it now raises an error rather than returning an incomplete match list as if it were complete. #99446 Thanks @zhangguiping-xydt.
  • Context from the current file is now displayed in a readable way for failed exact-match edits, even when truncation occurs next to an emoji or other non-BMP character. #99527 Thanks @mikasa0818.
  • Invalid plugin approval requests now show the specific validation issue instead of incorrectly suggesting a Gateway outage. #100337 Thanks @tzy-17.
  • Skill Workshop now clarifies when tool policy hides skill_workshop and indicates the precise allow or alsoAllow adjustment required to permit manual review calls. #100654 Thanks @wangwllu.
  • Oversized ClawHub packages, skills, ClawPacks, resolver archives, and GitHub-source downloads now produce a clear size-limit error before they can exhaust Gateway memory. #101176
  • Automatic session rotation is less likely to leave the next conversation stranded when a context-engine plugin reads or checkpoints its transcript immediately. #101192
  • Recovered web_fetch spill files now keep emoji intact and report the actual safely written length when a long page exceeds the inline limit. #101312 Thanks @alix-007.
  • Repeated failed or cancelled agent directory listings now release their cancellation listeners, preventing listener buildup over time. #101588 Thanks @lzw112.
  • Long IDs and scopes no longer misalign openclaw commitments columns, so the table remains readable at a glance. #95923 Thanks @parveshsaini.
  • web_fetch now preserves emoji, mathematical symbols, extended Unicode, and intentionally escaped numeric entity text more faithfully. #96268 Thanks @ly-wang19.
  • DuckDuckGo results now keep intentional entity notation such as < and ' intact, rather than silently altering titles, snippets, or URLs. #96348 Thanks @ly-wang19, @vincentkoc.
  • Canvas embed replies now retain their visible message text when a self-closing embed shortcode is followed by an extra closing marker. #96449 Thanks @ly-wang19.
  • Bracketed labels in Markdown citations no longer cause link understanding to fetch display-only URLs the user did not intend to retrieve. #96476 Thanks @ly-wang19, @vincentkoc.
  • DuckDuckGo search pages with malformed numeric HTML entities no longer crash parsing or inject broken Unicode into titles, URLs, and snippets, while valid emoji entities remain supported. #96583 Thanks @llagy007, @weeli-009.
  • Shortened tool descriptions in catalogs and /tools verbose no longer split emoji or other Unicode characters into garbled replacement symbols. #98644 Thanks @zengwen-dt.
  • Internal hook authors now receive a warning when a likely event-name typo would otherwise leave a hook silently inactive. #99456 Thanks @masatohoshino.
  • Codex session tools now respect their requested seconds-based timeout and return their own useful timeout status instead of ending early. #100722 Thanks @carterstebbins23-spec, @cxbasdev.
  • Cancelled ACP background tasks now appear as cancelled in task lists, summaries, and parent-run updates rather than being reported as successful. #101245 Thanks @masatohoshino.
  • Tool-using Anthropic-family requests can now fail over to OpenAI without a 400 error caused by an incompatible tool format. #101443 Thanks @chrisbaker2000.

Additional contributions

  • Internal configuration tracking was modernized, though the method for detecting configuration updates remains unchanged. #59695 Thanks @yonganzhang.
  • Bug-report forms were improved, enabling reporters to include screenshots or recordings while keeping logs easy to read. #73649 Thanks @d1rshan.
  • Android gateway authentication coverage was strengthened by making a timing-sensitive recovery check more dependable. #83826 Thanks @neatguycoding.
  • Policy coverage reporting was made clearer, allowing maintainers to identify gaps as security-sensitive configuration evolves. #87081 Thanks @giodl73-repo.
  • Reliable changed-code validation for plugin discovery work was restored without altering plugin behavior. #87695 Thanks @vincentkoc.
  • Coverage for binding Codex conversations without an explicit model was strengthened, protecting the default workflow from regressions. #89535 Thanks @kesslerio.
  • Internal fallback behavior was clarified, reducing the risk of future maintenance mishandling provider errors or older model responses. #89558
  • Compaction retry timing behavior was documented to make future maintenance safer without changing runtime behavior. #89585
  • Browser safety coverage was expanded on Windows systems supporting directory links, improving test portability. #90365 Thanks @aniruddhaadak80.
  • Contributor attribution was corrected so guanbear's merged work is properly credited in generated contributor records. #90547 Thanks @guanbear.
  • Earlier validation for channel settings was added, lowering the chance that configuration changes cause gateway startup errors. #91134 Thanks @luoyanglang.
  • Local Python test setup was fixed so contributors can run supported pre-commit checks reliably. #91276 Thanks @deepujain.
  • The QA maturity scorecard was made easier to find, and guidance on how maintainers should update its documentation was clarified. #91483 Thanks @romneyda.
  • Repeatable Slack QA coverage for Codex command and file-change approvals was added. #91519 Thanks @kevinslin.
  • Coverage was strengthened to keep GitHub Copilot reasoning choices aligned with each account's supported models. #91728 Thanks @saju01.
  • Live-test disk usage was reduced by avoiding unnecessary copies of large Gemini browser data while preserving required credentials. #91907 Thanks @bryantegomoh, @pikaqqqqqq.
  • Automated security review for code launching local processes was expanded, helping catch high-severity risks before merge. #92667 Thanks @hxy91819.
  • Automated test cleanup and guidance were improved, reducing leftover temporary files and inconsistent test setup. #93209 Thanks @hxy91819.
  • Routine smoke validation was added, helping maintainers catch and diagnose broad regressions earlier. #94291 Thanks @romneyda, @solvely-colin.
  • Coverage was strengthened to keep streamed Telegram replies inside the forum topic where the conversation started. #94526 Related #89352. Thanks @pmika, @xialonglee.
  • Validation was made faster and easier to inspect for small extension or script edits while preserving full checks when needed. #94708 Thanks @romneyda.
  • Regression coverage was added so code identifiers with underscores remain readable in the terminal interface. #95211 Thanks @zhangguiping-xydt.
  • Documentation discovery was expanded to include MDX pages, preventing real guides from being omitted. #95230 Thanks @hugenshen.
  • QQBot and Zalo security tests now depend on actual symlink support rather than the operating system name. #95531 Thanks @aniruddhaadak80, @vincentkoc.
  • Control UI localization checks were made to run reliably on Windows without changing translated content. #95534 Thanks @ooiuuii.
  • WhatsApp QA around messages, reactions, replies, media, polls, approvals, and group behavior was strengthened. #95622 Thanks @mcaxtr.
  • Pre-commit formatting was prevented from unexpectedly rewriting files during merges, rebases, cherry-picks, and reverts. #95842 Thanks @nxmxbbd, @vincentkoc.
  • Repeatable WhatsApp integration testing against a controlled local service was enabled without requiring live credentials. #95920 Thanks @romneyda.
  • A generated documentation map was added so contributors can quickly locate relevant guides and detect stale navigation. #95954 Thanks @glenn-agent.
  • Cleanup and isolation in auto-reply and skill-install tests were improved, reducing temporary-disk buildup. #96058 Thanks @xialonglee.
  • Regression coverage was added ensuring memory search can recover after a separate reindex without restarting the gateway. #96094 Related #91167. Thanks @849261680, @kiagentkronos-cell.
  • Conversation checkpoints were prepared for future storage changes without changing branch or restore behavior. #96222 Thanks @jalehman.
  • Startup-session handling was prepared for future storage changes without changing isolation or cleanup behavior. #96225 Thanks @jalehman.
  • A maintainer runbook for diagnosing and tuning build capacity was added without confusing it with unrelated failures. #96302 Thanks @vincentkoc.
  • Pull-request smoke testing was made faster and more predictable while retaining broader release coverage. #96320 Thanks @romneyda.
  • QA run logs were improved so maintainers can immediately identify the channel being tested. #96327 Thanks @romneyda.
  • Repeated tool calls in QA scenarios were prevented from causing false duplicate-identifier failures. #96338 Thanks @vincentkoc.
  • Smoke testing was streamlined to deliver faster feedback while preserving the intended QA coverage. #96340 Thanks @romneyda.
  • Cleanup across command tests was improved, reducing leftover temporary data in local and automated runs. #96359 Thanks @xialonglee.
  • Coverage for safely handling oversized or malformed provider usage responses was strengthened. #96360 Thanks @solodmd, @vincentkoc.
  • Valid Codex long-context results were prevented from causing false QA failures while still checking that earlier evidence remains available. #96366 Thanks @vincentkoc.
  • QA evidence traceability was improved by recording the actual source revision used for each run. #96434 Thanks @vincentkoc.
  • Coverage for command output and warning formatting was added to reduce future presentation regressions. #96448 Thanks @dwc1997.
  • Session status and model selection were prepared for future storage changes while preserving current behavior. #96460 Thanks @jalehman.
  • Feishu previews and Mattermost model summaries were prepared for future session-storage changes without changing behavior. #96507 Thanks @jalehman.
  • Telegram's internal session handling was modernized while preserving polling, lookup, sending, and deletion behavior. #96524 Thanks @jalehman.
  • Bundled channel session handling was prepared for future storage changes without altering routing, model choices, or user workflows. #96527 Thanks @jalehman.
  • WhatsApp group activation settings were prepared for future storage changes while preserving existing activation behavior. #96530 Thanks @jalehman.
  • Voice Call's internal session handling was modernized without changing replies or call behavior. #96539 Thanks @jalehman.
  • The QA maturity scorecard was made to reflect partial coverage more accurately and show what evidence is still missing. #96543 Thanks @romneyda.
  • Claude CLI QA runs were given the appropriate longer time limits for Sonnet and Opus models. #96567 Thanks @clawsean.
  • How maturity is scored was clarified while keeping coverage visible as supporting evidence. #96594 Thanks @romneyda.
  • Full QA evidence was made the default for maturity scorecard updates, preventing incomplete evidence from shaping results. #96595 Thanks @romneyda.
  • Repeated processing when the gateway reads metadata from very large transcript records was reduced. #96707 Thanks @vincentkoc, @yonganzhang.
  • Temporary-file cleanup across configuration, gateway, scheduling, and state tests was improved. #96711 Thanks @xialonglee.
  • How contributors should route issues, support requests, security reports, and pull requests was documented. #96714 Thanks @100yenadmin.
  • Coverage for verbose command-line logging was strengthened to reduce future regressions. #96735 Thanks @dwc1997, @vincentkoc.
  • Coverage for terminal output and non-exiting command behavior was added, improving maintainability without changing the interface. #96736 Thanks @dwc1997.
  • Template code for exported sessions was clarified to simplify future upkeep without altering the rendered output. #96765 Thanks @qiuyuang.
  • When oversized exported run records are cut down, token and cost totals are now kept intact. #96811 Thanks @aleps001, @joshavant, @lin-hongkuan.
  • Routine build overhead dropped by suspending unused timing-summary collection, though it stays accessible for later diagnostics. #96930 Thanks @romneyda.
  • In large usage dashboards, repeated browser work was cut back while filters, totals, charts, and timelines remain unchanged. #96945 Thanks @ly-wang19.
  • Plugins resolving cached tool calls no longer repeat work when the tool selection stays the same. #96948 Thanks @ly-wang19.
  • During updates that hit many missing plugin files, bookkeeping was reduced while repair decisions and warnings remain the same. #96950 Thanks @ly-wang19.
  • Local memory installations set to use shorter embedding vectors now skip unnecessary processing. #96952 Thanks @ly-wang19, @vincentkoc.
  • Status reporting became more efficient for setups with large session histories, while the recent-session summary stays unchanged. #96955 Thanks @ly-wang19.
  • Branching or restoring sessions with many saved checkpoints now uses less CPU and temporary memory. #96964 Thanks @ly-wang19.
  • The approved, detailed v2026.6.10 release story was published with clearer explanations, sources, and contributor credit. #97079 Thanks @hannesrudolph.
  • Previously shipped pagination for inspecting older parts of long session histories was recorded. #97101 Thanks @galiniliev.
  • Translation coverage tracking was added for Android, iOS, and macOS interface text across all supported locales. #97110 Thanks @vincentkoc.
  • A consistent translation workflow for native app text was added across 21 locales, including safeguards for placeholders and terminology. #97113 Thanks @vincentkoc.
  • macOS release instructions were clarified so maintainers use the correct repositories and source revisions for each publishing step. #97116 Thanks @romneyda.
  • Automated build capacity was adjusted to cut avoidable Linux queueing while keeping existing safeguards for other platforms. #97119 Thanks @vincentkoc.
  • The reviewed v2026.6.9 release story was published in the changelog with clearer grouping, sources, and attribution. #97124 Thanks @hannesrudolph.
  • Nostr duplicate protection now handles invalid timing values safely, preventing events from being forgotten too soon or kept forever. #97133 Thanks @zhangguiping-xydt.
  • Existing end-to-end tests were linked to the QA maturity inventory for more accurate coverage reporting. #97150 Thanks @romneyda.
  • macOS packaging logs became easier to follow by clearly identifying each product and architecture being built. #97151 Thanks @romneyda.
  • Matrix's native encryption repair process was narrowed while keeping the same automatic recovery behavior. #97181 Thanks @patrick-erichsen.
  • An index for repository scripts was added so contributors can find the right existing tool without disrupting established paths. #97250 Thanks @dboone323, @qingminglong.
  • A historical changelog heading was aligned with the current release-note structure without changing its claims. #97297 Thanks @hannesrudolph.
  • The concise v2026.6.9 changelog was restored while a release-page-compatible replacement could be prepared. #97306 Thanks @hannesrudolph.
  • Cursor's command-line agent was added as an optional engine for repository code reviews. #97348 Thanks @hxy91819.
  • OpenClaw is now protected from excessive memory use when an agent proxy returns an unusually large error response. #97351 Thanks @zhangguiping-xydt.
  • QA coverage reporting now more accurately reflects existing OpenAI-compatible provider tests. #97369 Thanks @romneyda.
  • Session migration testing was stabilized while keeping focused coverage for Voice Call session handling. #97370 Thanks @romneyda.
  • Existing Tool Search gateway coverage was linked to the standard QA inventory for clearer tracking. #97374 Thanks @romneyda.
  • Tool Search gateway validation was moved into the standard QA workflow for consistent execution and evidence collection. #97478 Thanks @romneyda.
  • Matrix QA runs are now protected from excessive memory use when a homeserver returns an unusually large response. #97547 Thanks @alix-007.
  • Discord smoke checks are now protected from excessive memory use when the service returns an unusually large response. #97548 Thanks @alix-007, @vincentkoc.
  • Plugin SDK validation limits were refreshed to match the current public surface while keeping future growth checks. #97604 Thanks @romneyda.
  • QA traceability for gateway connection, protocol negotiation, and startup retry behavior used by MCP channel bridges was improved. #97609 Thanks @romneyda.
  • WebChat automatic text-to-speech validation was moved into the standard QA workflow for consistent coverage and reporting. #97632 Thanks @romneyda.
  • A contribution was made to the released fix that preserves Discord replies after large skill data is saved. #97657 Thanks @joshavant, @wiidz.
  • Reliable plugin SDK build validation was restored by removing a conflicting test-only definition. #97661 Thanks @vincentkoc.
  • Existing Docker release and upgrade checks were made available as structured QA evidence without duplicating the underlying tests. #97689 Thanks @romneyda.
  • It was clarified why several network and provider paths preserve useful results when secondary cleanup or parsing steps fail. #97701 Thanks @zengwen-dt.
  • Additional Docker checks were brought into the shared QA inventory, improving release coverage and reducing duplicated validation work. #97708 Thanks @romneyda.
  • Structured QA coverage was added for ClawHub marketplace listings and packaged plugin installation checks. #97712 Thanks @romneyda.
  • Firecrawl regression coverage was strengthened for URL safety, search results, scraping, and response limits. #97714 Thanks @solodmd.
  • Coverage for clear and accurate configuration validation messages was strengthened. #97736 Thanks @solodmd.
  • Regression coverage was added for numeric command-line and configuration options, including defaults and boundary values. #97802 Thanks @dwc1997.
  • Intentional exits in tests and wrappers are now easier to distinguish from real runtime failures. #97803 Thanks @maweibin.
  • Regression coverage was added for Unicode-safe text slicing, including emoji and split character boundaries. #97805 Thanks @dwc1997.
  • Slack QA flows can now run against a local test provider, reducing reliance on live Slack credentials. #97891 Thanks @romneyda.
  • Repeatable release-candidate checks for fresh ClawHub package installation and upgrades were added before publication. #97896 Thanks @romneyda.
  • The minimum Node.js version for source contributors was clarified before they run installation and test commands. #97898 Related #97792. Thanks @aniruddhaadak80, @lin-hongkuan.
  • Structured live QA evidence was added for hosted image and video providers while keeping existing manual checks. #97900 Thanks @romneyda.
  • Official plugin publishing reliability was improved by adopting corrected ClawHub package-family detection. #97907 Thanks @patrick-erichsen.
  • Transient Windows, macOS, and iOS validation failures were reduced by retrying timed-out source checkouts. #97912 Thanks @romneyda.
  • More portable channel QA was prepared by making each scenario state its requirements before running. #97915 Thanks @romneyda.
  • Docker-backed QA checks were made easier to find and maintain in one supported place. #97937 Thanks @romneyda.
  • Duplicated Linux CI configuration was reduced so checkout behavior can be maintained consistently. #97940 Thanks @romneyda.
  • QA Lab was kept compatible with the current Crabline package, and local-provider terminology was clarified for operators. #97941 Thanks @romneyda.
  • CI capacity guidance was updated so maintainers can size hosted runner bursts using current limits. #97943 Thanks @vincentkoc.
  • Repeated workflow checkout configuration was consolidated, reducing maintenance drift without changing validation behavior. #97946 Thanks @romneyda.
  • Repeated credential checks for live channel QA were consolidated without changing what is validated. #97947 Thanks @romneyda.
  • Release QA credential checks were consolidated across channel jobs while preserving the same validation behavior. #97948 Thanks @romneyda.
  • A redundant Docker readiness configuration was eliminated from Crabbox validation, simplifying future consistency updates. #97950 Thanks @romneyda.
  • Duplicate Docker build preparation steps in the release workflow were merged to minimize maintenance divergence. #97951 Thanks @romneyda.
  • A discoverable documentation landing page was created for finalized OpenClaw release notes. #97959 Thanks @hannesrudolph.
  • Channel QA scenarios were made reusable across supported test environments without altering end-user behavior. #97962 Thanks @romneyda.
  • Regression tests were added for consistent numeric values in SQLite-backed workflows. #98009 Thanks @dwc1997.
  • Tests were introduced for global and per-agent command-highlighting settings and their fallback logic. #98087 Thanks @solodmd.
  • Completed Tailscale detection checks no longer leave unnecessary timers active during gateway setup. #98134 Thanks @zhanglei99586.
  • Managed Chrome profiles are now protected from receiving malformed blank preference entries in an edge case. #98138 Thanks @zhanglei99586.
  • Regression coverage for gateway node wake and reconnect state handling was reinforced. #98205 Thanks @zenglingbiao.
  • Tests were added for consistent list splitting across normal and edge-case inputs. #98219 Thanks @zenglingbiao.
  • Official plugin publishing was updated to use corrected ClawHub tooling for package-family handling. #98233 Thanks @patrick-erichsen.
  • Four legacy official plugins can now be republished without ClawHub rejecting their established package family. #98249 Thanks @patrick-erichsen.
  • A readable, discoverable release story for OpenClaw v2026.6.11 was published in the documentation. #98319 Thanks @hannesrudolph.
  • Generated documentation metadata was updated so the v2026.6.11 release notes could pass deployment checks. #98325 Thanks @hannesrudolph.
  • Regression coverage was added for SQLite database version reads used during startup and schema checks. #98369 Thanks @dwc1997.
  • Tests were added for correctly identifying thinking and redacted-thinking response blocks. #98370 Thanks @dwc1997.
  • Coverage was added to keep channel accounts enabled by default unless explicitly turned off. #98395 Thanks @dwc1997.
  • Maintainer bug sweeps now support requested batch sizes and specific pull request lists while preserving existing readiness standards. #98494 Thanks @vincentkoc.
  • Reliable hosted validation was restored by repairing stale test expectations across core and provider checks. #98533
  • A consistent internal foundation was prepared for future conversation-aware access controls without changing current permissions. #98536
  • Core test typechecking was restored so valid gateway and provider tests no longer block unrelated work. #98551 Thanks @romneyda.
  • Green lint validation was restored while preserving earlier Tailscale and Feishu safety fixes. #98598 Related #98462, #98464. Thanks @zhanglei99586.
  • Regression coverage was added for readable lists in approval notices and other user-facing messages. #98605 Thanks @dwc1997, @vincentkoc.
  • The tooling validation pipeline was restored after new transcript coverage changed the expected test plan. #98610
  • A contribution was made to the fix that keeps long workspace file lists scrollable in the chat sidebar. #98611 Related #98566. Thanks @645648406-max, @zw-xysk.
  • QA credential requests now fail cleanly when a shared broker returns an unexpectedly large response. #98619 Thanks @zengwen-dt.
  • Message-tool tests were prevented from timing out while preserving the plugin behavior they verify. #98701
  • Repeated provider and utility loading patterns were consolidated to improve consistency and maintainability. #98749 Thanks @romneyda.
  • QA proof was strengthened that native stop commands interrupt the correct active conversation across supported test environments. #98751 Thanks @romneyda.
  • QA coverage was expanded for Signal, Mattermost, and Matrix setup and message normalization through Crabline. #98779 Thanks @romneyda.
  • Documentation and test type checks were restored without changing the attach command's behavior. #98792
  • Telegram reliability guidance was placed where contributors and reviewers will encounter it during future extension work. #98808 Thanks @obviyus.
  • macOS Swift validation now recovers from incomplete build caches instead of repeating the same failure. #98818
  • Native translation inventory checks remain responsive when scanning unusual source labels. #99098 Thanks @hxy91819.
  • QA Lab Telegram checks are protected from excessive memory use when the Telegram API returns an unexpectedly large response. #99151 Thanks @hugenshen.
  • QA Lab configuration checks now stop early and clearly on unexpectedly large Gateway responses. #99165 Thanks @hugenshen.
  • QA Channel workflows are protected from excessive memory use when a QA service returns oversized data. #99169 Thanks @hugenshen.
  • False CI failures in reply-session concurrency coverage were reduced by making test coordination more reliable. #99212
  • Test-only proxy assertions no longer cause false network-safety validation failures. #99233 Thanks @joshavant.
  • A shared internal foundation was established for loading runtime modules consistently without changing behavior. #99261 Thanks @romneyda.
  • QA coverage was added for Signal message sends through Crabline and their normalized results. #99262 Thanks @romneyda.
  • QA coverage was added to ensure Mattermost replies remain tied to the correct group conversation through Crabline. #99264 Thanks @romneyda.
  • QA coverage was added to ensure Matrix messages remain tied to the correct room through Crabline. #99265 Thanks @romneyda.
  • Repeated loading patterns across core runtime areas were consolidated to reduce maintenance drift. #99278 Thanks @romneyda.
  • Transient QA smoke timeouts under heavy CI load were reduced without changing product behavior. #99294 Thanks @romneyda.
  • Gateway and stateful runtime loading patterns were consolidated to improve consistency and maintainability. #99296 Thanks @romneyda.
  • Repeated loading patterns across Discord, Slack, and Telegram were unified while preserving existing channel behavior. #99298 Thanks @romneyda.
  • Repeated loading patterns across Matrix and other channels were unified to reduce future maintenance risk. #99302 Thanks @romneyda.
  • End-to-end QA coverage was added for Zalo setup, inbound delivery, and outbound message normalization through Crabline. #99303 Thanks @romneyda.
  • Reliable lint validation was restored for the Memory Wiki extension without changing its behavior. #99307 Thanks @romneyda.
  • Streaming QA evidence now proves that a channel shows a preview before the final answer. #99310 Thanks @romneyda.
  • A guarded monthly npm publication path was added for release maintainers without moving the normal latest channel. #99352 Thanks @kevinslin.
  • CI checks were restored for Telegram context handling and supported plugin SDK boundaries. #99355 Thanks @romneyda.
  • Repeated data-shape checks across core code were consolidated to improve consistency and maintainability. #99359 Thanks @romneyda.
  • Repeated data-shape checks across bundled plugins were consolidated to reduce maintenance drift. #99361 Thanks @romneyda.
  • Intermittent QA smoke timeouts were reduced when several isolated Gateway checks run together on limited CI hardware. #99368 Thanks @romneyda.
  • QA results and diagnostics were standardized so release validation is easier to compare and trust. #99374 Thanks @romneyda.
  • Gateway validation for clean checkouts was brought back after a missing test dependency caused incorrect failures. #99520 Connected to #99513. Credit to @masatohoshino.
  • Bedrock live checks now run explicitly against the actual Bedrock runtime, giving maintainers a dependable way to verify AWS-based behavior. #99607 Credit to @brian-bell.
  • Duplicate QA scenario coverage now triggers a clear failure, keeping validation outcomes reliable. #99628 Connected to #99627. Credit to @romneyda.
  • Secrets in bounded QA evidence logs and failure details are now protected while still providing useful diagnostic information. #99629 Credit to @romneyda.
  • Channel QA setup was simplified, and unsupported test actions now fail with a clearer message. #99632 Connected to #99622. Credit to @romneyda.
  • False cross-platform release-check failures related to static server shutdown were reduced. #99642 Credit to @romneyda.
  • Intermittent Crabline QA failures caused by partially written test output were reduced. #99649 Connected to #99648. Credit to @romneyda.
  • False QA failures were reduced by allowing native stop-command recovery the full expected turn time. #99656 Connected to #99655. Credit to @romneyda.
  • Numeric limit handling across OpenClaw was consolidated for better consistency and easier maintenance. #99671 Connected to #99667. Credit to @romneyda.
  • Repeated string-option handling across commands, configuration, providers, and channels was consolidated without altering behavior. #99676 Connected to #99663. Credit to @romneyda.
  • Local-provider activity now appears promptly and consistently in Crabline-backed QA. #99679 Connected to #99664. Credit to @romneyda.
  • Configured model references were made more consistent across the catalog, agent runtime, Gateway, and plugins without changing intended behavior. #99682 Connected to #99674. Credit to @romneyda.
  • Internal hashing for identifiers and validation records was consolidated without changing their outputs. #99687 Connected to #99675. Credit to @romneyda.
  • Tolerant JSON handling was consolidated across several internal workflows to cut down on duplication and future drift. #99688 Credit to @romneyda.
  • Internal work ordering was unified across account, session, file, message, and plugin paths while preserving existing behavior. #99691 Credit to @romneyda.
  • Redundant list-cleanup layers across channels, agents, the CLI, and diagnostics were removed to make maintenance clearer. #99702 Connected to #99697. Credit to @romneyda.
  • Release validation was strengthened for important chat, search, compatibility, and plugin workflows. #99705 Credit to @romneyda.
  • Shared live-channel QA coverage was expanded for Telegram, Slack, WhatsApp, and Matrix while keeping each channel's existing behavior. #99707 Credit to @romneyda.
  • Reliable package and Docker preparation from clean checkouts was restored. #99710 Credit to @romneyda.
  • Reference-image formatting was standardized across media providers to reduce maintenance drift without changing generated-media behavior. #99715 Credit to @romneyda.
  • Validation of the interactive Telegram setup flow, including saving the resulting configuration, was strengthened. #99717 Credit to @romneyda.
  • Internal text cleanup was consolidated while preserving terminal formatting and outbound-message safety. #99718 Credit to @romneyda.
  • Web and WebSocket address validation was made more consistent across configuration, proxy, media, webhook, and plugin workflows. #99719 Credit to @romneyda.
  • Common waiting and timeout behavior was consolidated across core workflows, plugins, tools, and tests without changing intended timing. #99721 Credit to @romneyda.
  • Release coverage was strengthened for real Gateway and MCP startup, connections, discovery, negotiation, and tool calls. #99735 Credit to @romneyda.
  • Combined release validation was made more reliable by preventing missing packaged runtime files. #99736 Connected to #99734. Credit to @romneyda.
  • Stronger runtime coverage was added for voice, media, scheduling, browser cleanup, and telemetry workflows. #99737 Credit to @romneyda.
  • False validation timeouts for native command session targeting under busy conditions were reduced. #99743 Credit to @romneyda.
  • Safeguards for downloading bounded HTTP responses were unified across agents, providers, the Gateway, plugins, documentation, and media. #99744 Credit to @romneyda.
  • Credential masking and secure secret comparison were centralized to keep authentication behavior consistent across supported workflows. #99746 Credit to @romneyda.
  • True-or-false setting interpretation was made consistent across plugins, messaging, media, scheduling, and memory configuration. #99750 Credit to @romneyda.
  • Cancellation handling was unified so stops and timeouts remain consistent across agent, Gateway, reply, media, and process workflows. #99753 Credit to @romneyda.
  • Repeated internal task handoffs across setup, approvals, agent turns, and plugins were consolidated without changing behavior. #99755 Credit to @romneyda.
  • Voice Call route handling was consolidated while preserving webhook and realtime matching. #99766 Credit to @romneyda.
  • Test maintenance was simplified by consolidating repeated local network setup. #99771 Credit to @romneyda.
  • Maintenance of the paired BytePlus and Volcengine model catalogs was simplified without changing provider behavior. #99777 Credit to @romneyda.
  • Text-pattern escaping was standardized across maintainer automation to reduce duplication and future inconsistencies. #99778 Credit to @romneyda.
  • Primary release validation was made faster and more reliable while retaining runtime and telemetry coverage. #99784 Credit to @romneyda.
  • Duplicate list-cleanup behavior used in provider resolution and execution authorization was consolidated. #99785 Credit to @romneyda.
  • Numeric limit handling was unified across agent workflows while preserving their existing allowed ranges. #99786 Credit to @romneyda.
  • Internal hashing was consolidated across authentication, sessions, approvals, identifiers, and plugins without changing compatibility. #99788 Credit to @romneyda.
  • Consistent provider and model reference handling was extended across media, speech, agent policy, and diagnostic workflows. #99790 Credit to @romneyda.
  • Release-validation reliability was improved by reducing package-build memory pressure. #99793
  • Internal conversation audience labels were aligned with verified group context for future access-control work. #99816
  • Artifact-build reliability was improved by preventing memory-related validation failures. #99820
  • Shared channel state and plugin migration maintenance was consolidated across Slack, Mattermost, Teams, and Matrix without changing workflows. #99850
  • Control UI chat styling was made more predictable to update, with no intended visual change and less risk of regressions. #99900
  • QA report command validation was made substantially faster and less memory-intensive without changing its results. #99909
  • Fixed a bug where command output was shortened incorrectly, so zero or invalid length limits no longer produce text beyond the requested size. #99917 Thanks @super-cabbage.
  • Accelerated plugin development surface validation while reducing memory usage, with no change to what is verified. #99940
  • Eliminated an unused Slack download path, cutting security-sensitive maintenance while keeping private-file and image downloads functional. #99944 Thanks @miorbnli.
  • Increased update-command coverage speed while still validating managed-service restart failures. #99945
  • Made Crabbox wrapper coverage faster and lighter while keeping the same behavioral checks in place. #99969
  • Cut unnecessary waiting in Docker scheduler coverage without affecting runtime scheduling behavior. #99988
  • Lightweight realtime validation tools now start faster and use less memory while preserving live smoke behavior. #100002
  • Boosted package-candidate safety validation speed without altering the protections it provides. #100008
  • Prevented Codex plugin releases from shipping with an outdated embedded runtime, reducing false-green updates. #100015 Thanks @100yenadmin, @fuller-stack-dev.
  • Lowered memory usage and kept isolated tests within their performance budget, leading to faster and more reliable contributor feedback. #100019
  • Reorganized the Control UI for more predictable navigation, cleaner page transitions, and less unnecessary screen updating. #100024 Thanks @shakkernerd.
  • Enhanced Matrix QA evidence so maintainers can more easily diagnose request ordering, retries, errors, and state continuity. #100039 Thanks @romneyda.
  • Validation from isolated development checkouts now uses the code actually under test, preventing misleading results. #100053 Thanks @romneyda.
  • Removed redundant internal type names, letting maintainers and plugin developers follow affected code more directly. #100061 Thanks @romneyda.
  • Stabilized local macOS validation so maintainers can prepare releases and changes without host-specific false failures. #100069
  • Updated TypeScript linting while avoiding misleading findings and unsafe automated changes. #100083
  • The documented web-fetch performance benchmark command now works as written. #100087 Thanks @vincentkoc.
  • Stabilized Control UI routing coverage to reduce false failures around chat and session layouts. #100108 Thanks @vincentkoc.
  • QA channel final answers now reliably replace previews, even when optional delivery details are missing. #100114 Thanks @vincentkoc.
  • Strengthened lint protection against accidentally sharing one mutable value across multiple array entries. #100122
  • Updated documentation regression coverage to match current wording and prevent unrelated validation failures. #100183 Thanks @vincentkoc.
  • Aligned documentation for environment protection, scheduled-task fallback checks, and Talk silence defaults without changing behavior. #100186
  • Added repeatable Android chat-streaming coverage for duplicate, missing, stale, timed-out, and malformed messages. #100200
  • Added repeatable Apple-platform chat coverage to catch duplicate, missing, reordered, or malformed streamed replies before release. #100201
  • Strengthened mobile validation so new Gateway events cannot go unhandled on iOS or Android without detection. #100206
  • Updated the bundled automated review workflow with current reviewer options, configurable defaults, and stronger execution safeguards. #100210
  • Improved the safety and consistency of maintainer validation for heavy workloads and untrusted contributions. #100220
  • Unit tests are now isolated from live local configuration and credentials for safer, more consistent results across machines. #100221
  • iOS developers can now keep debug and release apps installed side by side with distinct icons and separate app data. #100222
  • Restored clean localization, documentation, and lint validation for the Crestodian onboarding flow. #100223
  • Streamlined release publishing by carrying clear approval through the same named release while retaining checks for changed risk. #100239 Thanks @vincentkoc.
  • Made release preparation more dependable on busy Macs and strengthened full-suite validation. #100242
  • Stabilized OpenClawKit contract and chat coverage under parallel macOS load, reducing false validation failures. #100243
  • Restored complete package artifacts for more reliable source, Docker, and plugin development builds. #100249 Thanks @vincentkoc.
  • Reduced interruptions during bounded maintainer cleanup by allowing larger approved batches of stale pull requests. #100253
  • Cleaned up iOS and Apple Watch debug icons by removing an unintended white outer rim. #100259
  • Corrected QA prompt handling so validation responds to the user's actual instruction rather than hidden runtime context. #100272 Thanks @marvinthebored, @obviyus, @peetiegonzalez.
  • Strengthened mobile protocol validation so native iOS or Android changes cannot bypass Gateway event coverage. #100278
  • Restored a clean Android formatting baseline so contributors can validate and extend recent mobile chat work. #100304
  • Prevented pull-request landing validation from exhausting shared service limits while preserving trustworthy results. #100332
  • Completed the release record for landed WhatsApp reconnect, quoted-reply, credential-recovery, and delivery-status fixes. #100346 Thanks @bartok9, @leonidaslux, @masatohoshino, @vishalj99.
  • Restored compilation of shared Apple-platform tests covering pairing setup results. #100355
  • Prevented iOS startup failures when Voice Wake is disabled, including in Simulator development builds. #100370
  • Stabilized load-sensitive Matrix, WhatsApp, and process coverage to reduce false failures on busy machines. #100420
  • Reduced full-suite memory pressure so local validation is less likely to fail or overwhelm a developer workstation. #100437
  • Completed the release record for several already-landed user-visible fixes and their original contributors. #100441
  • Fixed a release-validation failure that prevented candidate packages from being prepared. #100459 Thanks @vincentkoc.
  • Added the missing release credit for the fix to empty interactive replies. #100464 Thanks @mushuiyu886.
  • Simplified the iOS development app label while keeping debug and release installations easy to distinguish. #100466
  • Restored release validation for older OpenClaw candidates without weakening checks for current packages. #100469 Thanks @vincentkoc.
  • Added repeatable visual evidence that candidate Control UI builds can send a chat message and render the final reply. #100472 Thanks @brokemac79.
  • Completed the release record and contributor credit for three already-landed voice fixes. #100473
  • Recorded an already-landed remote browser reliability fix while reducing repeated validation work caused by changelog conflicts. #100495 Thanks @hemantsudarshan, @keaneyan.
  • Removed an obsolete macOS onboarding test so the current native test target compiles cleanly. #100497 Thanks @steipete-oai.
  • Recorded that persistent logins in new isolated macOS browser profiles survive graceful Browser and Gateway restarts. #100507 Thanks @turbotheturtle.
  • Strengthened macOS browser proxy test reliability by removing intermittent failures that caused needless reruns. #100517
  • Added an accurate release record for managed browser attachment downloads and the file details they return. #100532 Thanks @zhangguiping-xydt.
  • Recorded four previously shipped Control UI improvements so the release history and contributor credit remained complete. #100533 Thanks @evan-ym, @qingminglong, @tiffanychum, @xianshishan.
  • Reduced unnecessary setup work for models that cannot use tools while preserving existing tool-enabled workflows. #100536 Thanks @vincentkoc.
  • Clarified and strengthened retry coverage for Telegram message edits without changing their existing behavior. #100543 Thanks @lzw112.
  • Release notes were finalized for three earlier reliability fixes, along with proper attribution to their contributors. #100545
  • The shipped Control UI previews that expose useful GitHub issue and pull request details have been documented. #100555
  • Coverage was added to the release history for Apple chat recovery after reconnecting to an active response. #100561
  • Three landed fixes for streamed replies, phone identity handling, and bounded Tlon responses were recorded. #100562 Thanks @hugenshen, @morluto, @totobusnello.
  • A traceable release record was added for safer browser action downloads and preserving user-owned tabs. #100575 Thanks @sunlit-deng.
  • Unnecessary repeat validation is now reduced when concurrent pull requests land without altering the prepared patch. #100593
  • Changelog coverage was completed for five shipped Control UI and terminal interface fixes. #100599 Thanks @goutamadwant, @haishmg, @ml12580, @ruanrrn, @vincentkoc, @zengwen-dt.
  • Documentation validation and indexing for the managed-worktrees guide have been restored. #100603
  • Three shipped plugin and configuration fixes were recorded to keep their release coverage complete. #100609 Thanks @vincentkoc.
  • Workboard validation was corrected so legitimate cleanup behavior no longer triggers false failures. #100611
  • Control UI navigation maintenance has been simplified while preserving saved sidebar choices and existing behavior. #100612
  • Duplicated and unused internal code was reduced across several areas, making future maintenance more consistent. #100650 Thanks @vincentkoc.
  • Redundant hosted validation is avoided after clean rebases when the prepared change remains demonstrably unchanged. #100663
  • The Android release record was expanded to include five previously shipped app improvements. #100702
  • Core Gateway and code-quality validation were restored so unrelated changes can proceed reliably. #100703
  • Package acceptance coverage has been updated to reflect the current pinned Claude CLI setup. #100723 Thanks @vincentkoc.
  • Release coverage was added for corrected model labels and durable inbound-image previews in the Control UI. #100740 Thanks @hyspacex, @sweetcornna.
  • The prerelease record for four previously landed fixes and their contributors has been completed. #100781
  • Developer support and validation for integrations using managed-worktree session results were completed. #100793
  • Managed-worktree session results are now available through the supported developer interface. #100804
  • Obsolete internal code and legacy Android artifacts have been removed, leaving a smaller maintenance surface. #100823 Thanks @vincentkoc.
  • Unused core runtime paths were pruned to make ownership and future maintenance easier to understand. #100856 Thanks @vincentkoc.
  • Stale internal UI and provider surfaces were narrowed, improving the accuracy of maintenance reports. #100882 Thanks @vincentkoc.
  • Regression coverage for setting up Hugging Face local apps with compatible local model servers was strengthened. #100887 Thanks @osolmaz.
  • The consistency of compact Android voice and screen captures used for release review has been improved. #100895 Thanks @iwhatsskill.
  • Validation has been realigned with current Codex, Gateway, and Control UI behavior to prevent misleading failures. #100897 Thanks @vincentkoc.
  • Compilation of shared Apple platform tests used to validate iOS and macOS chat changes has been restored. #100903
  • Internal agent code boundaries were tightened so maintainers have fewer accidental interfaces to preserve. #100909 Thanks @vincentkoc.
  • The Control UI's internal surface was reduced while keeping its visible behavior unchanged. #100931 Thanks @vincentkoc.
  • Focused Control UI end-to-end checks now prepare their required media tools automatically. #100950 Thanks @vincentkoc.
  • Stale and unsupported Control UI development interfaces were removed to reduce accidental dependencies. #100952 Thanks @vincentkoc.
  • Routine iOS package resolution no longer leaves unrelated local file changes behind. #100961
  • Telegram's internal boundaries have been clarified so private implementation details are less likely to become dependencies. #100975 Thanks @vincentkoc.
  • Workboard's internal development surface was simplified without changing how Workboard behaves. #100989 Thanks @vincentkoc.
  • Plugin registry expectations have been made clearer and easier to validate without changing runtime behavior. #100990 Thanks @romneyda.
  • Duplicated script contracts were consolidated so maintenance changes are easier to validate consistently. #100992 Thanks @romneyda.
  • Gateway client maintenance was simplified by consolidating repeated internal contracts while preserving compatibility. #101012 Thanks @romneyda.
  • Unused Control UI development surface and noise in future maintenance reports have been reduced. #101013 Thanks @vincentkoc.
  • Private package code is now kept clearly internal, improving ownership boundaries and dead-code reporting. #101041 Thanks @vincentkoc.
  • Docker release validation was strengthened by proving documented services and packaged installations actually start and run. #101045 Thanks @romneyda.
  • Stronger release evidence for Telegram startup, scheduled activity, and telemetry delivery has been added. #101051 Thanks @romneyda.
  • Matrix lifecycle validation was unified across supported test environments, making parity gaps easier to detect. #101055 Thanks @romneyda.
  • Channel restart and access-policy scenarios have been centralized to reduce duplicated QA maintenance. #101063 Thanks @romneyda.
  • Channel routing coverage was unified so mention, room, allowlist, and reply regressions are easier to catch. #101076 Thanks @romneyda.
  • Telegram and WhatsApp command and session checks have been standardized across shared and live QA environments. #101080 Thanks @romneyda.
  • Android formatting and framework validation have been restored, reducing release-blocking maintenance noise. #101081 Thanks @vincentkoc.
  • Slack and Matrix thread and direct-message coverage were consolidated for clearer cross-channel validation. #101112 Thanks @romneyda.
  • Changelog coverage was added for a broad set of previously shipped provider, channel, memory, browser, and configuration fixes. #101128
  • QA credential administration has been hardened against oversized service responses, failing clearly without excessive memory use. #101131 Thanks @cxbasdev.
  • The Control UI's internal type surface was cleaned up to make maintenance reports more accurate. #101135 Thanks @vincentkoc.
  • Private Control UI definitions are now kept internal, reducing noise and accidental dependencies for maintainers. #101165 Thanks @vincentkoc.
  • QA smoke selection was corrected so routine runs could start instead of failing during setup. #101173 Thanks @romneyda.
  • Parallel test capacity has been increased to reduce avoidable wait time during busy validation runs. #101174 Thanks @vincentkoc.
  • Maintainer validation that prevents new code from bypassing the supported session-storage path has been added. #101178 Thanks @jalehman.
  • Compaction, scheduled checks, and session forks were prepared for future storage changes without altering behavior. #101179 Thanks @jalehman.
  • Session routing, goals, delivery, and compaction tracking were prepared for safer storage changes without altering workflows. #101180 Thanks @jalehman.
  • A temporary QA smoke selection change that was not intended to ship has been reverted. #101184 Thanks @romneyda.
  • An unreliable QA smoke requirement was temporarily removed so unrelated contributions were not blocked. #101185 Thanks @romneyda.
  • Reliable automatic smoke coverage for Matrix and Telegram channel changes has been restored. #101186 Thanks @romneyda, @vincentkoc.
  • Native release validation is now kept available when the usual hosted runner capacity is unavailable. #101196
  • Windows startup fallback coverage was stabilized, and scheduler changes are now directed to the correct validation. #101223
  • After source files were moved, native localization tracking was refreshed to avoid incorrect validation failures. #101232
  • Native localization references were corrected so that app-level validation stays accurate. #101233 Thanks @vincentkoc.
  • The generated documentation index was updated to align with Claude Mythos 5 recommendations. #101242
  • Accidental internal API exposure was reduced, and signals from dead-code reviews were improved. #101243 Thanks @vincentkoc.
  • The Control UI's internal module surface was simplified without affecting pairing guidance or visible behavior. #101262 Thanks @vincentkoc.
  • Android development commands now automatically locate a standard local SDK in fresh checkouts. #101273
  • Automatic Android formatting enforcement was added to prevent cleanup drift from entering the main codebase. #101275
  • The local debug proxy remains available and reports errors honestly when an upstream server terminates a response early. #101315 Thanks @sebtardif.
  • Gateway reload and startup tests no longer hang when executed together. #101331 Thanks @obviyus.
  • Control UI module boundaries were narrowed, and noise in unused-code checks was reduced. #101339 Thanks @vincentkoc.
  • Android build dependencies and validation were modernized while the app's target behavior remained unchanged. #101356
  • The unsupported memory SDK surface was reduced, making it less likely for developers to depend on private internals. #101362 Thanks @vincentkoc.
  • Compilation of shared Apple platform tests used for local validation was restored. #101372
  • The Copilot plugin's internal boundaries were clarified without altering its runtime behavior. #101379 Thanks @vincentkoc.
  • Accidental API exposure in the GitHub Copilot provider was reduced, making its supported boundaries clearer. #101393 Thanks @vincentkoc.
  • Private plugin details were kept internal, improving dead-code reports and future cleanup. #101406 Thanks @vincentkoc.
  • Supported boundaries for the Brave, Firecrawl, and DeepInfra provider plugins were clarified. #101425 Thanks @vincentkoc.
  • OpenCode Go streaming and catalog internals were kept private so extension developers see clearer integration boundaries. #101440 Thanks @vincentkoc.
  • Private OpenRouter and SMS plugin definitions were cleaned up to improve internal API accuracy. #101452 Thanks @vincentkoc.
  • Release operators can now validate an exact extended-stable candidate before its final tag exists. #101466 Thanks @kevinslin.
  • An obsolete Android cache-cleanup path was removed, leaving a single clearer ownership model. #101470 Thanks @vincentkoc.
  • The private memory SDK surface was narrowed, and the accuracy of maintenance reports was improved. #101508 Thanks @vincentkoc.
  • Android saved-gateway reconnect coverage was stabilized to reduce intermittent validation failures. #101519
  • Internal execution-timeout code was narrowed without changing timeout behavior. #101523 Thanks @vincentkoc.
  • Stale Control UI maintenance surfaces were removed while visible behavior was preserved. #101549 Thanks @vincentkoc.
  • Release-history coverage was added for the shipped Discord thread-title prompt fix. #101566 Thanks @alix-007.
  • The private memory SDK surface was simplified by removing one-use layers and unused interfaces. #101568 Thanks @vincentkoc.
  • A contribution was made to the fix that keeps plugin approval text readable when emoji appear near length limits. #101579 Thanks @wm0018.
  • Unused internal memory interfaces were reduced, making that code easier to maintain without changing user behavior. #101583 Thanks @vincentkoc.
  • Internal Windows process-launching code for memory features was simplified without changing how they work. #101594 Thanks @vincentkoc.
  • Unused internal memory interfaces were trimmed to reduce maintenance overhead while preserving existing behavior. #101604 Thanks @vincentkoc.
  • Unused and duplicate Control UI code was consolidated to improve maintainability with no intended visual change. #101632 Thanks @vincentkoc.
  • Duplicate Control UI utilities were consolidated so future changes have fewer paths to keep aligned. #101647 Thanks @vincentkoc.
  • Internal boundaries across reply handling and bundled plugins were clarified without changing runtime behavior. #101666 Thanks @vincentkoc.
  • Superseded Android screens and translations were removed, reducing maintenance work while leaving active app flows unchanged. #101680 Thanks @vincentkoc.
  • Control UI chat tests were updated to reflect current avatar behavior and reduce stale test assumptions. #101682 Thanks @shakkernerd.
  • Chat history handling was prepared for future storage changes while preserving existing message and transcript behavior. #101688 Thanks @jalehman.
  • Reliable Android translation validation was restored after an obsolete app string was removed. #101689
  • Conversation branching was prepared for future storage changes without changing how parent sessions are copied. #101699 Thanks @jalehman.
  • Accidental internal interfaces across core, plugins, and the Control UI were reduced to simplify ongoing maintenance. #101701 Thanks @vincentkoc.
  • Compatibility checks for the bundled Codex integration were strengthened to catch request mismatches before release. #101726 Thanks @vincentkoc.
  • Private implementation details were kept from appearing as supported integration points, improving codebase maintainability. #101731 Thanks @vincentkoc.
  • Release preflight coverage was expanded so official plugin packages can be built and inspected before an extended-stable npm release. #101757 Thanks @kevinslin.
  • Unused internal declarations across core, plugins, and the Control UI were reduced without changing product behavior. #101758 Thanks @vincentkoc.
  • Control UI translation validation for the existing native approval interface was restored. #101771
  • Internal code boundaries were narrowed so maintenance tools can identify unused code more accurately. #101831 Thanks @vincentkoc.
  • Consistent OpenClaw identification was added to requests sent through the official Google Gemini API. #101834 Thanks @vishal-dharm.
  • Unused internal declarations across UI and maintenance tools were cleaned up to make code ownership clearer. #101858 Thanks @vincentkoc.
  • Accidental internal interfaces in bundled extensions were reduced without changing plugin behavior. #101860 Thanks @vincentkoc.
  • Internal core boundaries were tightened to reduce dead-code noise and simplify future maintenance. #101869 Thanks @vincentkoc.
  • Internal test and tooling interfaces were simplified, making maintenance and code searches less noisy. #101875 Thanks @vincentkoc.
  • Which internal utilities are private was clarified, reducing the risk of accidental dependencies during maintenance. #101886 Thanks @vincentkoc.
  • The private surface of Parallels validation tooling was simplified without changing its behavior. #101889 Thanks @vincentkoc.
  • Unnecessary internal script interfaces were reduced to make repository automation easier to understand and maintain. #101892 Thanks @vincentkoc.
  • Control UI internals were narrowed to improve dead-code analysis without changing the interface users see. #101894 Thanks @vincentkoc.
  • Plugin tests were made more portable across common developer and hosted environments. #101896
  • The browser plugin's supported surface was clarified by keeping implementation details private. #101898 Thanks @vincentkoc.
  • Microsoft Teams plugin boundaries were clarified by keeping private implementation details internal. #101903 Thanks @vincentkoc.
  • Internal release and validation tooling interfaces were simplified while preserving existing commands. #101904 Thanks @vincentkoc.
  • Internal AI provider interfaces were narrowed, with no changes to provider behavior or supported entry points. #101907 Thanks @vincentkoc.
  • Canvas implementation details were kept private so the supported developer surface stays unambiguous. #101915 Thanks @vincentkoc.
  • Unused internal types in repository automation were reduced, improving maintainability without affecting commands. #101917 Thanks @vincentkoc.
  • Internal boundaries in the ClickClack and Logbook plugins were clarified without altering their behavior. #101922 Thanks @vincentkoc.
  • OC Path implementation details were kept private while its commands and file-editing behavior were preserved. #101925 Thanks @vincentkoc.
  • Unused internal Memory Wiki interfaces were reduced to simplify future maintenance and dead-code detection. #101931 Thanks @vincentkoc.
  • The iMessage plugin's internal boundaries were clarified without changing its capabilities or behavior. #101936 Thanks @vincentkoc.
  • Internal terminal interfaces in the gateway were narrowed while existing terminal behavior was preserved. #101941 Thanks @vincentkoc.
  • Accidental internal interfaces in the Discord plugin were reduced without changing messaging or voice behavior. #101945 Thanks @vincentkoc.
  • Which Feishu integration details are private was clarified, making the code easier to maintain. #101949 Thanks @vincentkoc.
  • Matrix integration internals were narrowed without changing user behavior or documented configuration. #101954 Thanks @vincentkoc.
  • The WhatsApp integration's supported type surface was clarified while messaging behavior was preserved. #101959 Thanks @vincentkoc.
  • Accidental internal interfaces in the Policy extension were reduced without changing its checks or reports. #101963 Thanks @vincentkoc.
  • Memory-core boundaries were tightened to reduce maintenance risk without changing storage or search behavior. #101969 Thanks @vincentkoc.
  • QA Matrix internals were simplified while the existing validation workflow was preserved. #101974 Thanks @vincentkoc.
  • QA confidence-report internals were narrowed to keep the supported maintenance surface clear. #101980 Thanks @vincentkoc.
  • QA evidence-summary internals were kept private without changing validation behavior. #101987 Thanks @vincentkoc.
  • Unused QA utility types were reduced to discourage reliance on unsupported internal details. #101990 Thanks @vincentkoc.
  • The supported QA Lab surface was clarified by keeping internal coordination details private. #102005 Thanks @vincentkoc.
  • Google Meet integration internals were narrowed without changing setup, authentication, or call behavior. #102010 Thanks @vincentkoc.
  • Internal boundaries in the Diffs and File Transfer plugins were clarified without changing their behavior. #102021 Thanks @vincentkoc.
  • Google Chat implementation details were kept private while all existing integration behavior was preserved. #102029 Thanks @vincentkoc.
  • LINE integration internals were narrowed without changing messages, webhooks, or configuration. #102037 Thanks @vincentkoc.
  • Mattermost integration boundaries were clarified by keeping implementation-only details private. #102040 Thanks @vincentkoc.
  • Accidental internal interfaces in the Signal plugin were reduced without changing how Signal works. #102042 Thanks @vincentkoc.
  • Slack plugin internals were narrowed while messaging and delivery behavior were preserved. #102044 Thanks @vincentkoc.
  • QQBot's supported integration surface was clarified without changing runtime behavior. #102048 Thanks @vincentkoc.
  • Voice-call implementation details were kept private while the plugin's existing behavior was preserved. #102059 Thanks @vincentkoc.
  • Zalo integration internals were narrowed without changing messaging, webhooks, media, or configuration. #102065 Thanks @vincentkoc.
  • Remote validation was made more resilient when a newly started or busy validation environment responds slowly. #102159
  • Unreliable automated QA was prevented from blocking unrelated contributions while focused manual validation remained available. #102256 Thanks @romneyda.
  • False release-validation failures after successful tool-only OpenAI turns were reduced while real errors stayed strict. #102600
  • Telegram authorization coverage was strengthened by verifying that denied commands receive the expected reply. #102732
  • Meta provider validation and guidance were updated for the deployed Muse Spark 1.1 model. #103163
  • The reliability and security of documentation translation checks were improved. #103244
  • Reliable Codex plugin release validation was restored after its connection records moved to a new storage system. #103467 Thanks @vincentkoc.
  • Installer validation was strengthened so incomplete packages missing the bundled AI runtime are rejected early. #103556 Thanks @vincentkoc.
  • Release update checks now include and verify the bundled AI runtime before accepting a candidate package. #103564
  • QA accuracy was improved so scenarios that recover successfully on retry are not reported as final failures. #103635
  • Token-usage validation was made more accurate by excluding scenarios that intentionally never produce an assistant reply. #103650
  • Reliable manual runs of focused live-provider release validation were restored. #103654
  • Gateway restart validation was updated to recognize current successful restart and cancellation outcomes. #103681
  • Web-access validation was strengthened by requiring a real fetch rather than merely discovering the capability. #103685
  • Webchat validation now waits for saved replies and usage data before declaring success. #103718
  • Release approvals were protected from silently changing when validation is rerun, preserving the exact evidence operators reviewed. #103906
  • Chinese documentation validation for Meta provider and plugin reference pages was restored. #103923
  • Release managers were allowed to reuse trustworthy validation for an unchanged candidate while still rejecting stale evidence. #104162 Thanks @vincentkoc.
  • Package-based QA was allowed to run between a version bump and finalized release notes without weakening release checks. #104186
  • Discord voice error details were kept bounded and readable when failures contain multibyte text. #104684 Thanks @qingminglong.
  • Protection against newly returned tool output being lost when long conversations are compacted was backported. #104702 Thanks @acosx, @solvely-colin.
  • Plugin prerelease validation was aligned with the current GPT-5.6 model defaults. #104722
  • Live-provider validation was updated to use the intended July GPT-5.6 model by default. #104750
  • Fixes for startup recovery, Discord reconnection, readable refusal messages, and lighter plugin listing were backported. #104794 Thanks @wuqxuan.
  • False GPT-5.6 release-validation failures were reduced by retrying a small set of incorrect validation responses. #104939
  • The self-contained package artifact needed for Parallels release validation was restored. #104975
  • False Control UI browser-validation failures around timestamp hover behavior were reduced. #105133
  • Telegram release validation was made to work reliably with model selections from older compatible candidates. #105401
  • Reproducible Codex QA coverage for model switching and image generation was preserved. #105444
  • Offline memory-isolation QA was kept fully local, preventing accidental calls to the live embeddings service. #105488
  • Codex model-switch validation was improved so conversation compaction no longer causes a false failure. #105493
  • Enhanced the precision of image generation comparison outcomes while still surfacing results that are genuinely absent or unclear. #105500