OpenClaw v2026.9.7 Release Notes: 2026.9.7
Highlights
- Update safety: updates now back up every state and agent database before migrations and restore them on rollback, take consistent snapshots while the Gateway keeps writing, and stop before schema changes when snapshot cleanup fails. Fixes #157846 and #157603. (#158163, #158317, #156265) Thanks @blyszcz, @Nickfost, and @fuller-stack-dev.
- Upgrades from 2026.9.5: managed updates no longer always roll back with a stack overflow, Windows updates finish after state migration instead of stranding the new schema, verified macOS app handoffs activate, fresh npm updates load their HTTP client, and interrupted npm package updates recover. Fixes #157011, #157077, and #156878. (#157273, #157262, #156972, #157756, #160015, #158491) Thanks @yoyo837, @joshbunker, @hannesrudolph, and @fuller-stack-dev.
- OpenAI Agents API: run agents on OpenAI-hosted or self-hosted environments through the new Agents API plugin, with streamed replies, steering, live web search, OpenClaw tools, attachments and hosted files, preserved tool history, OpenClaw persona and workspace context, self-hosted skill discovery, and accurate token usage. (#151176, #156092, #156167, #156306, #156182, #154208, #154229, #158328, #159375, #158775, #158307, #159363, #156549, #158744) Thanks @sjf-oa, @sjf, @vincentkoc, and @Patrick-Erichsen.
- Sign in with ChatGPT: add Sign in with ChatGPT (Beta) as an OpenAI authentication choice beside Codex login and API keys, with clearer capability and limitation notes, restored first-run provider choices, and SIWC credentials kept out of unsupported media requests. (#148567, #160011, #160078, #160023, #159920, #159412) Thanks @stevenlee-oai.
- Gateway responsiveness: busy chats no longer stall everyone else, because transcript writes and projections, cold history preparation, artifact reads and downloads, Control UI file reads, profile avatars, roster discovery, prompt hashing, and placement claims now run off the Gateway main thread, and large uploads, long streams, big message saves, file edits, and database maintenance stay responsive. (#147914, #154069, #156095, #158450, #158583, #158464, #158445, #158676, #158404, #158797, #159463, #158486, #158848, #155779, #158443, #158420, #158489, #158570, #158402, #158449, #159818, #158655) Thanks @joshavant, @fuller-stack-dev, and @vincentkoc.
- Chat performance: long conversations now scroll smoothly, typing in the composer stays responsive in long chats, streaming replies no longer stall the page, and switching or reloading sessions shows fresh history sooner. Fixes #145777. (#159294, #159400, #159806, #154443, #159293, #159408, #159877, #158930, #156196, #156355) Thanks @Marvinthebored, @jalehman, @Peetiegonzalez, and @germanchi1.
- Native Apple chat: macOS and iOS chat now shows message times, the model behind each reply, and agent identities, accepts file and audio attachments, keeps paragraph breaks before lists, and on macOS adds a command palette plus the web sidebar's roster defaults and view options. (#159366, #159528, #159667, #159517, #159350, #160141)
- Restart continuity: in-flight worker turns and their edits survive a Gateway restart, cancelling a cloud worker turn during a runtime update no longer takes the Gateway down, ACP runs are no longer cancelled right after an in-process restart, and active turns keep working through configuration reloads. (#159565, #160062, #157658, #154462) Fixes #157442 and #154456 Thanks @MertBasar0, @obviyus, @olyapop, @TreyLawrence, and @VACInc.
Changes
- Worktree sessions: start a new chat in an isolated managed worktree from web, iOS, or Android so parallel sessions on one repository no longer collide. (#100788) Thanks @obviyus.
- Voice: Talk, Discord voice, FaceTime, and Twilio voice calls share one agent context, so voice answers about other sessions delegate to the agent instead of denying that work, and read-only lookups no longer ask for spoken confirmation. (#159548, #159474, #156151) Thanks @obviyus, @VACInc, and @Peetiegonzalez.
- Role model limits: administrators can give named operator roles a model policy that native agents, Visitor Access, model pickers, and plugin completions enforce, with denials keeping their documented authorization error code. (#156346, #154893, #154839, #156604) Thanks @shakkernerd and @obviyus.
- Chat-driven setup: owners can hand their agent an API key, a config change, or an edit to a skill they own directly in chat, agents stop refusing or arguing over ordinary requested work while tool policy, sandboxing, and approvals still decide what needs confirmation, and OpenClaw change approvals now complete in the requesting chat with Allow once and Deny buttons or
/approve . (#158120, #157447, #157947) Thanks @obviyus, @jalehman, and @joshavant.
- Desktop audio: listen to managed desktop application sound from the docked desktop panel or the standalone desktop view, with isolated per-application audio on managed Linux desktops, playback tied to screen authorization, and setup warnings kept in a tooltip. (#157718, #157720, #157722, #157723, #157724, #157726, #159487) Thanks @vincentkoc.
- Working status: show the agent's latest commentary as a live status line while it works, clearing when the run ends and keeping approval and startup messages first. (#156340) Thanks @vincentkoc.
- Chat media: preview PDF attachments inline, move between expanded videos within a chat turn, and copy your own messages as Markdown. (#148399, #154051, #156563) Thanks @jjjhenriksen, @vyctorbrzezowski, and @VACInc.
- New sessions: set
gateway.controlUi.newSessionModelDefaults: "configured" to start fresh sessions from the agent's configured model, runtime, and thinking defaults instead of the last-used choices; the default stays "last-used". (#156866) Thanks @vincentkoc.
- Sidebar and presence: organize session filters in one panel, show GitHub merge and closure dates beside sidebar badges, see Open and Running session counts beside online people, and show active collaborators below typing previews. Fixes #150456. (#150605, #158081, #160022, #159263) Thanks @vyctorbrzezowski, @vincentkoc, and @shakkernerd.
- Activity: open the Sessions tab with a Today pulse of hourly activity and counts that follow the current filters, highlight whole session rows on hover and focus, and quiet the row actions. (#159611)
- Profile and preferences: see what your connection is allowed to do in plain language with a Reconnect action after access changes, and choose to open links in an external browser. Fixes #159884. (#156304, #159887) Thanks @vincentkoc and @VACInc.
- Model pickers: group decision models by provider and drop the hover tooltip from the model picker. (#155301, #158697) Thanks @jalehman and @vyctorbrzezowski.
- Chat tables: move table controls below the content, size desktop tables to their content, avoid unnecessary scrolling, and keep column order when expanding right-to-left tables. (#159924, #156874, #156750, #156947) Thanks @vyctorbrzezowski.
- macOS app: let the macOS app embed the web conversation pane next to its native sidebar, with the chat header sitting in the native titlebar row. (#159739, #159932)
- Channels: set
requireMentionInBotThreads: false to accept unmentioned follow-ups only in threads the bot created, across Discord, Slack, Telegram, Matrix, Mattermost, Microsoft Teams, iMessage, Feishu, and other supported channels. (#157713) Fixes #157698.
- Android chat: operate the agent browser inside chat with collapse and close controls, use a streamlined composer and attachment menu, find models despite typos or multiple search terms, see tool outcomes in collapsed work, and open context usage from the session menu. (#159767, #157799, #159725, #156950, #159733) Thanks @IWhatsskill.
- Android setup and Overview: give saved gateways persistent local names, grant optional setup permissions together, open Settings beside the gateway selector, and read clearer node availability and paired-device explanations with realigned icons that separate work pages from settings. (#159714, #159727, #159718, #157746, #159732, #159961) Thanks @IWhatsskill.
- macOS: renew a saved Gateway's Cloudflare Access browser sign-in before it expires instead of signing the app out every session lifetime. (#159381)
- CLI:
openclaw --help returns faster, and commands that do not need channel options skip resolving them at startup. (#30975) Thanks @vincentkoc and @obviyus.
- Model pricing: price each route by whoever bills it, so an OpenRouter promotion no longer lowers cost estimates for OpenAI direct or other gateways, and download the smaller v2 hosted catalog with ordered model recommendations. (#156518, #156530, #156535, #158863) Thanks @vincentkoc and @obviyus.
- Anthropic: bare
opus and new Anthropic API, CLI, and media setup select Claude Opus 5.5 while explicit Opus 5 selections stay pinned, and thinking-display preferences reach Anthropic transports. (#156093) Thanks @fuller-stack-dev.
- Gemini: add an opt-in
google-interactions API backend for Gemini Interactions text, image, reasoning, and tool-call workflows. (#149880) Thanks @markmcd and @RomneyDa.
- Telnyx: install Telnyx as an official external model provider through normal onboarding. (#116016) Thanks @dynamite-bud and @jalehman.
- Codex: opt in to Ultrafast with
plugins.entries.codex.config.appServer.enableUltrafast, used only when the selected model advertises it while other models keep their current speed. (#158703) Thanks @sjf-oa and @sjf.
- Crabbox: run applications inside a Crabbox lease with
openclaw crabbox run --model using a protected model credential that never leaves its original host. (#156207)
- Browser: try opt-in Lightpanda semantic profiles with a portable deployment, and verify the Chromium headless shell across platforms. (#154359, #154360, #154396) Thanks @vincentkoc.
- Browser sessions: let session writers use an isolated dashboard browser for their own session, show only the current session's tabs in the chat Browser panel, and use the Gateway
publicOrigin as the default browser origin. (#156371, #159891, #157170) Thanks @vincentkoc.
- Plugins: see declared plugin capabilities, setup guides, and tool inputs in detail previews, browse curated categories with a new Computer use shelf, and get consistent white icon tiles for bundled logos. (#157956, #157946, #158686, #155259) Thanks @Patrick-Erichsen.
- Incognito sessions: expire Incognito sessions after 24 hours, keep their agent turns out of task records and logs, and stop their terminals when the session is reset. (#155596, #157543, #159207) Thanks @vincentkoc.
- Uploads: let operators disable client file and image uploads to the Gateway. (#158567) Fixes #158556.
- iOS connections: recognize when an external authorization provider requires browser sign-in before connecting, pause automatic reconnect, and offer a Retry action instead of treating it as a network failure. (#147070, #157454, #157457) Thanks @vincentkoc.
- Subagents: clarify when research is worth delegating with
sessions_spawn and how to follow up on a stalled child by checking execution and delivery status instead of loop-polling. (#141209) Thanks @hartmark and @jalehman.
- Decision models: add the
decision_evaluate tool for Boolean, Choice, and Score questions against an agent's configured decision model, with provider capabilities listed in models.list, and keep fallback working when a provider rejects the input. (#155134, #156746) Thanks @jjjhenriksen and @jalehman.
- Portals: let collaborators open session-scoped interactive previews from dedicated worker attachments through a restricted
portal tool, without global host-port access. (#156373) Thanks @vincentkoc.
- Meetings: add experimental duplicate-safe Google Meet participation with retained caption context and speaker provenance. (#152327) Thanks @canvrno-oai.
- Faster sessions and history: speed up session lists, chat history pages, archived session search, transcript appends, new conversation creation, subagent context loading, and automatic maintenance on busy stores, with fewer repeated scans, reloads, and refresh storms. (#155995, #156055, #156665, #157043, #157572, #157582, #157622, #158397, #158648, #158809, #158961, #159153, #159155, #159309, #159328, #159449, #159456, #159585, #159742, #159900, #158394, #159994, #159647, #159152, #159475, #156830, #158771, #158433, #158559, #158660, #159286, #159710, #159780, #159898, #158859, #158326, #158345, #156400, #158073, #158878, #158885, #159083) Thanks @vincentkoc and @chopin-op60.
- Faster multi-client Gateway: reduce CPU and traffic when many browsers connect, reconnect, or watch the same chats by spreading reconnect attempts, streaming append deltas, reusing prepared identities, avatars, auth status, and message encodings, sharing pending approval replay, and skipping unchanged roster publications. (#158497, #158536, #158942, #160150, #158555, #158587, #155997, #158552, #158649, #158595, #158597, #156335, #156784, #156358, #158627, #158586, #158803, #158833, #159595, #158643, #158572, #159460, #159457, #158591) Thanks @vincentkoc.
- Faster agent turns: keep buffered Anthropic streams responsive, serialize large model requests once, reuse Code Mode workers and sandbox classification, stop per-evaluation watchdog threads, unblock session lanes after no-progress loops, and cut tool catalog and validation overhead. (#156054, #156066, #156872, #157021, #158410, #158428, #158610, #158805, #158837, #158872, #159082, #159464, #159574, #152066, #157233, #156800) Thanks @obviyus and @vincentkoc.
- Faster startup, cloud, and automation work: reduce startup placement work, prepare first cloud dispatch artifacts in parallel, stop polling checkout and PR state for idle sessions, and reuse unchanged artifact list summaries, and speed up concurrent automation lists, new chat bursts, and pairing commits. (#157079, #158065, #158525, #159301, #159390, #159520, #159102, #158941, #157113, #156801, #158077, #158665, #156387, #158867, #158779, #157776, #159537)
- Diagnostics: identify agents across message and model-call traces, trace completed harness commentary, and report blocked CPU profiler starts, waiting or failed lane tasks, live worker counts per pool, heap allocation attribution, and guarded heap snapshot diffs. (#156018, #156343, #158361, #158549, #158561, #159892, #160040) Thanks @Patrick-Erichsen, @ryan-dyer-sp, and @vincentkoc.
- Session access: people with session-only grants can read visible conversations, receive updates, copy history as Markdown, and rename, pin, archive, and restore their own sessions, while other people's sessions stay read-only. Guests can now create and control their own sessions. (#155184, #155565) Thanks @shakkernerd.
- Discord and Slack: accept bot-authored messages by default when
allowBots is omitted, still subject to existing access and mention rules (explicit false and "mentions" are unchanged), and keep parent context when someone replies to a bot's Discord message. (#157091)
- People and presence: agents can use the
presence tool to list who is online and which device produced a person's latest activity, idle people stay shown as online, administrators can merge duplicate profiles with openclaw users merge, and members of multi-user Gateways can edit their personal USER.md in Profile settings. Fixes #159423 and #155255. (#159117, #159493, #159889, #155256) Thanks @VACInc.
- Ultra mode: use Ultra as a turn-scoped harness mode on OpenClaw and Claude Code runtimes independently of the model's maximum reasoning effort, while native Codex keeps its own Ultra behavior. Fixes #155391. (#155393) Thanks @vincentkoc.
- Terminal access diagnostics:
openclaw exec-policy show and the agent Tools panel explain why an agent profile hides exec and process, including configuration sources and the global-to-agent profile hierarchy. Fixes #155914. (#157014) Thanks @joshavant and @Pegorim.
- Managed updates: OCM-managed installations can request updates from the Control UI and
/update and follow the OCM job through completion, and failed-update diagnosis now starts only after you click. (#158932, #157359) Thanks @shakkernerd, @fuller-stack-dev, and @vincentkoc.
- Subagents: scope subagent concurrency to each spawning session, report capacity waits as queued execution, and tell models the wait timeout limits. Fixes #156370. (#156381, #156681, #156542) Thanks @vincentkoc.
- Background commands: show native background commands in Tasks, warn agents when a background command cannot wake them, and keep quiet heartbeats quiet after tool failures. (#158038, #158884, #156174) Thanks @VACInc and @pash-openai.
- Cloud workers: show the live cloud worker pool in Settings and start warm cloud workers and snapshots faster. (#157200, #156380, #156767)
- Agents API: run isolated restricted sessions so Memory dreaming can write real diary narratives through the Agents API backend. (#159246) Thanks @sjf-oa and @sjf.
- Side chat: remove automatic summaries, accept dropped images, and report instead of silently dropping images on text-only models. (#156892, #156840, #156900) Thanks @Patrick-Erichsen.
- HTML widgets: allow widgets up to 10 MiB. (#159970)
- Faster sessions: reduce Gateway CPU for session listing, concurrent viewers, activity broadcasts, chat history catch-up, streamed replies, and mention suggestions, and parse streamed SSE incrementally with CR-framed events accepted. (#156221, #157120, #158346, #158408, #158469, #159182, #158481, #158503, #157552, #154929, #158395, #158444, #156817, #156922, #158792)
- Faster databases: reuse prepared statements and schema facts, shorten agent database admission checks, keep idle agent databases open for thirty minutes, preserve database witnesses across managed restarts, and reduce host CPU for agent worker writes. (#154946, #158973, #156643, #157030, #159445, #158405, #159753, #157666, #158750, #158843, #158763, #159876, #158385, #157333)
- Faster tasks and tools: reduce CPU for task maintenance, trajectory tool-schema redaction, image discovery in text-heavy conversations, meeting transcript lookups, and frontmatter recovery, give swarm collector groups independent lanes, and defer TypeSafe evaluator startup until its first decision. (#156321, #157527, #159271, #156183, #158471, #158871, #158371, #159074, #158374, #158616, #157380, #159004) Thanks @vincentkoc and @joshavant.
- Config: support
${VAR:-default} fallback values in config environment substitution instead of passing the expression through unresolved. Fixes #149551. (#155164) Thanks @etzelm, @jalehman, and @z2mi.
- Package updates: let the new release run its own read-only admission checks for configuration, database compatibility, and plugin availability, so an older installed updater no longer refuses an update the candidate can handle;
--admission installed forces the installed checks, and Git/source updates are unchanged. (#155632)
- Update status: show quiet per-step progress while staging Git runtimes and after the Gateway startup check, date recorded outcomes, report the preferred Git release target and known scheduler policy, and clear the applying status once a handed-off update finishes. (#153407, #155671, #156227, #157329, #158926, #158301, #158006) Thanks @RomneyDa, @vincentkoc, @shakkernerd, and @joshavant.
- System services: updates now refresh system-scope Gateway services and hand the final privileged restart to the operator instead of failing. Fixes #156409. (#156584) Thanks @ion-developing.
- Accounts: show the ChatGPT sign-in email and the selected account's identity in provider settings and the composer, release deleted credentials from model defaults and conversations, and offer existing saved accounts during recovery. (#157629, #157745) Thanks @stevenlee-oai and @vincentkoc.
- CLI: reject unknown root options instead of launching onboarding, list the non-interactive setup command in root help, keep the process title as
openclaw, fail reset when state cannot be removed, and never fall back to local state when a configured remote Gateway is unreachable. (#159213, #159214, #157118, #159250, #159223)
- Video generation: add Kie AI, Z.AI, and Novita video generation providers, including bundled Kie plugin artwork. (#160080, #160529) Thanks @vincentkoc.
- macOS: show the web conversation in native chat windows. (#159946)
- Turn control: people with the same permissions can steer each other's turns, and write operators can control their own sessions through agents. (#159850, #160296) Thanks @VACInc.
- Chat performance: throttle sidebar narration updates, describe each session once per load, skip needless markdown parsing on every render, stop app-shell style rules from restyling the whole app on each insertion, render less offscreen work when presenting a conversation, avoid roster reloads after read acknowledgments, omit duplicate assistant text for chat clients, defer session titles until reply progress, and shorten the CLI startup banner animation. (#160002, #160148, #160294, #160241, #160298, #160328, #160186, #160251, #160250) Thanks @IWhatsskill.
- Faster runtime: shared-state reads no longer re-read the ownership lock every time, and worker launch helpers start faster on session hosts. (#160139, #160163)
- Desktop control: agents can resume after you take manual control of a desktop. (#159923)
- Faster sessions and nodes: loading older chat history reuses normalization and tool turns, channel config reloads keep prepared state, remote session turns finish faster when files did not change, prompt caching stays effective for sessions on nodes, and cross-session preparation and registry maintenance wait less. (#160215, #160274, #160231, #160179, #160183, #160510)
- Faster sessions and nodes: session list reads reuse registry relations, and remote session turns finish without a status polling delay. (#160198, #160162)
- Session sharing: show the assigned session owner beside sharing controls, include the signed-in user in the Online roster, and keep PR and issue identity in failed previews. (#160673, #160618, #160219) Thanks @Patrick-Erichsen, @VACInc, and @vyctorbrzezowski.
- Voice and speech: join Slack huddles as a signed-in Slack user, speak Gemini dialogues with two voices, and speak with Gemini 3.8 Flash TTS. (#159879, #157465, #157331) Thanks @saariuslystoned and @IWhatsskill.
- Plugins: show installed accounts and credential status for plugins. (#160092) Thanks @Patrick-Erichsen.
- Composer: remove large pasted text from the composer preview. (#160834) Thanks @Patrick-Erichsen.
- Faster chats and sessions: streaming replies stay fast in long chats, node session turns start as fast as local ones by reusing warm workers, child-session lists load faster on large rosters, session lists stay warm when changing the Talk model, the Gateway stays responsive while compaction loads history, SQLite entry writes yield under contention, and Gateway broadcasts, narration deadlines, prompt diagnostics, Code Mode tool search, stream payload inspection, subagent registry patches, cron delivery lookups, canvas leases, and page styling all do less repeated work. (#160837, #160265, #160404, #159545, #160314, #160801, #160787, #160769, #160807, #160811, #160208, #160800, #160216, #160808, #160833)
- UI polish: Online people activity rows are more compact, GitHub reference backgrounds are softer across themes, and failed-message inbox alerts clear after review. (#160140, #160844, #160822) Thanks @vyctorbrzezowski, @VACInc, and @stevenlee-oai.
- Models: support Claude Sonnet 5.5. (#160847)
- Approvals: enforce scoped Slack plugin reviewers. (#159525) Thanks @stevenlee-oai.
- Session hosts: show worker runtime install progress on paired session hosts, explain and recover session-host setup problems, and let Ask in side chat stage selection comments. (#160110, #160188, #160747) Thanks @Patrick-Erichsen and @TeaCup404.
- Faster sessions: metadata reads skip cold snapshots, maintenance plans survive unrelated activity, and admitted plugin stream result readers are reused. (#160358, #160815, #160894)
- Activity summaries: keep live tool purposes visible. (#160881)
Fixes
- Older installs: Doctor recovers retained plugin sources that blocked Gateway startup after long upgrade jumps, migrates every agent database before repairs open it, resumes schema repair after an interrupted startup migration, and finishes state migration after legacy install repair. Fixes #155893, #158359, and #158114. (#156052, #158584, #159345, #145043, #151025) Thanks @liuxb553-panda, @609NFT, @desksk, @fuller-stack-dev, and @joshavant.
- Database contention: keep chats, session lists, transcripts, completions, image delivery, and task and cron maintenance responsive under SQLite contention by moving that database work off the Gateway main thread. (#155631, #155740, #155800, #156014, #156064, #156467, #156640, #156772, #157033, #157230, #157484, #157598, #157634, #158118, #158235, #158286, #158396, #158827, #159348, #159632) Thanks @vincentkoc and @fuller-stack-dev.
- Steering: restore steering for every newer message when a follow-up is queued, advance the queue past more than one message per Stop, preserve steering and show queued input across reconnects, keep quoted replies sent during an active response, and stop queued timeouts or a faulty compaction probe from failing the active turn. Fixes #148731, #155451, #145330, and #154700. (#158699, #157135, #145338, #157958, #154868) Thanks @NianJiuZst, @sxh313, @anyech, @aatreya, @Geokec, @fransqaas, @obviyus, and @yunligou711-commits.
- Update recovery: restart managed Gateways after updates and Doctor repairs instead of leaving them stopped, keep the Gateway safe when its saved Node path disappears, and complete source updates when retired workspace links or incomplete Git runtimes remain. Fixes #147357, #157205, #157227, #157747, and #159034. (#159577, #158016, #159035, #158931, #157213) Thanks @Navras98, @Matuno, @DonnieFi, @Olli0103, @obviyus, @coygeek, @shakkernerd, @jalehman, @vincentkoc, and @RomneyDa.
- Incognito privacy: exclude Incognito conversations from automatic memory and withhold their content from plugin observation hooks. (#155594, #156417) Thanks @vincentkoc.
- Memory data safety: stop
doctor --fix from deleting standalone QMD data, preserve file changes made during indexing, keep historical dreaming jobs until Doctor repairs them, and reject reads outside a replaced authorized directory. Fixes #158527. (#158569, #157163, #157616, #156222) Thanks @obviyus, @BillVerhelle, and @vincentkoc.
- Plugin source safety: stop deleting plugin sources after cleanup is revoked and preserve source custody during concurrent repairs. (#159563, #159033) Thanks @joshavant.
- Codex permissions: preserve enabled network restrictions when config is invalid, keep native hosted app approval settings, and allow consent for permitted reads under a destructive-command denial. (#156906, #151260, #152085) Thanks @kevinlin-openai and @stevenlee-oai.
- Plugin boundaries: preserve plugin restrictions during managed installation, keep the file-transfer plugin inside its filesystem boundary, and restore plugin URL and annotation validation. (#152020, #159654, #156855) Thanks @stevenlee-oai and @joshavant.
- Codex replies: avoid duplicate replies after streamed completions, deliver native child results after the parent yields, restore child tasks after native parent rotation, and stop marking retained background commands as failed. (#156144, #156247, #159735, #156764) Thanks @galiniliev and @vincentkoc.
- Codex compaction: stop sending cancelled native compaction, close stalled compaction progress, and release the compaction writer before continuing. Fixes #132177 and #132178. (#132343, #144511) Thanks @jjjhenriksen and @jalehman.
- Plugin reload results: keep tool results and subagent settlement intact across plugin reloads and report retained-work settlement only once. (#157339, #157836) Thanks @obviyus and @joshavant.
- CLI agents: keep foreground Claude CLI Agent calls alive past 15 minutes, let Side chat answer on claude-cli installs without an API key, and show provider guidance when ACP agents fail without a reply. Fixes #157209 and #141483. (#157248, #157474, #156879) Thanks @Olli0103, @obviyus, @OpenClawKobian99, @rogeriochaves, and @sidboswell.
- Model selection: honor configured fallbacks in plugin background completions such as nightly dreaming, let the sessions tool's
default model clear the override, and show the correct fast mode after model selection. Fixes #156396 and #159538. (#157398, #159587, #158934) Thanks @obviyus, @Olli0103, @paweldrozd, @dh-js, and @VACInc.
- Uploads: preserve uploaded filenames in model context and make large Codex document uploads available to local file tools. (#156696, #156758)
- Memory search: accept snake_case search arguments from local models, keep keyword fallback when an automatic embedding provider fails, keep English terms inside Chinese queries, and recognize Russian recall intent. Fixes #158261, #156998, #159075, and #159746. (#158308, #157032, #159076, #159785) Thanks @obviyus, @blackdiamondcyber-png, @myagizmaktav, @team-contractorscale, @Yigtwxx, @Takhoffman, @ericcaiwx-star, and @alexph-dev.
- Memory dreaming: stop consolidated snippets from being cut mid-word and stop re-ingesting nested inline dreaming output. Fixes #157152 and #157826. (#157322, #157879) Thanks @Yun-0000, @obviyus, @ada-KVR, and @mariorivas1.
- Anthropic: prevent Claude Opus 5.5 OAuth requests from being rejected as an outdated Claude Code, keep the required fallback beta with custom headers, and bind cache markers to replay policy. (#156062, #158300, #157662) Thanks @serg0x and @RomneyDa.
- Google and xAI: keep Gemini 3.8 Live Talk sessions open through agent consults while honoring
thinkingLevel, recover interrupted Gemini Interactions streams, and accept thinking levels for new Grok releases before OpenClaw lists their IDs. (#152413, #159198, #156397) Thanks @saariuslystoned, @IWhatsskill, @fuller-stack-dev, @serg0x, and @Takhoffman.
- Ollama and custom routes: stop dropping free-form object tool arguments on the native Ollama provider and keep custom model routes on their declared tool surface. Fixes #157039. (#157564, #156017) Thanks @Hmache, @obviyus, and @markomiric.
- GitHub Copilot: preserve stored reasoning ciphertext with long IDs, keep Code Mode controls with the executing agent, keep turns responsive during native task persistence, and reject whitespace-only enterprise scopes. Fixes #155984. (#155994, #157044, #159071, #160171) Thanks @yashas-13, @obviyus, @baiwei0427, and @Patrick-Erichsen.
- OpenAI media and search: stop routing video generation to retired Sora models, let PDF analysis use available OpenAI credentials with Codex enabled and the agent's active vision model, keep recoverable OpenAI startup errors nonfatal, and honor the documented web search
autoDetectOrder. Fixes #159542 and #155956. (#159543, #156929, #159593, #155534, #156048) Thanks @zyz619963502zyz, @obviyus, @dh-js, @Alix-007, @holny, and @DarkJuanFra.
- Codex connections: refresh OAuth after the original turn ends, let Ask OpenClaw use remote app-servers, recover remote connections during harness replacement, report failed WebSocket handshakes, and fix local Codex turns failing before execution. Fixes #158424. (#158458, #156671, #159466, #155710, #157229, #159331, #156624) Thanks @fuller-stack-dev, @hannesrudolph, @sjf-oa, @sjf, @Kimiyu-186, @vincentkoc, @kevinlin-openai, and @joshavant.
- Codex tools: honor the configured tool PATH, keep native providers in user-home chats, restore installed skills with catalog-backed models, preserve compact plugin tool argument types, stop native terminals when canceling unsandboxed runs, and keep plugin config discovery on a monotonic deadline. (#157290, #156226, #140422, #157734, #159841, #155863) Thanks @vincentkoc, @galiniliev, @Colton-Harris, @jalehman, and @SunnyShu0925.
- Codex Computer Use: restore Computer Use after desktop plugin replacement and signed Desktop layout updates, and preserve memory instructions alongside it. (#156556, #158480, #158472) Thanks @bdjben, @shakkernerd, and @jalehman.
- Codex in Docker: resolve Codex model references in Docker setups, exit after validating them, and clarify deferred Codex catalog refresh warnings. Fixes #157078 and #157309. (#157175, #157323, #157352) Thanks @obviyus, @sandra-peach, @vincentkoc, and @shakkernerd.
- Model catalog: deliver new models even when a models.dev provider disappears, keep legacy catalogs after failed refreshes, separate rejected auth from refresh failures, stop one rejected probe from disabling later providers, and identify native app catalog sign-in failures. (#156352, #158113, #158207, #157487, #158139, #157772, #156278, #157191) Thanks @obviyus, @joshavant, @fuller-stack-dev, @RomneyDa, and @vincentkoc.
- Model pickers: show chat model menus without waiting for discovery, start in alphabetical order, keep current choices on the first page, and stay usable during startup loading and provider sign-in. (#157899, #158130, #157869, #158128, #158132) Thanks @obviyus and @vincentkoc.
- MCP: accept grouped frames in strict stdio clients, wait for idle connection cleanup before resetting sessions, bound
tools/list during catalog discovery, and back off failed bundle server starts. (#156165, #157041, #85063, #158088) Thanks @nxmxbbd and @obviyus.
- Browser: keep tabs usable while the Chrome Web Store is open, keep shared browser views fitted to their panel, bound stalled stream startup, stop tab updates from stalling the Gateway, and run existing-session Chrome MCP when OpenClaw runs on Bun. Fixes #156749. (#156890, #157087, #156323, #159599, #159422, #159709) Thanks @holny, @obviyus, @liyoulu, and @vincentkoc.
- Plugin updates: fix update failures from misplaced SDK imports, dependencies that assign
import.meta.url, unused dependency benchmark projects, abandoned runtime staging, and stale compatibility chunks, and repair archive plugin links and WhatsApp Doctor checks after upgrades. Fixes #156009 and #158320. (#156427, #157862, #159354, #158338, #157608, #158002, #159052, #159650, #157004, #156188) Thanks @fchaudhryspear, @obviyus, @jalehman, and @RomneyDa.
- Plugin reloads: report reloads that still need a Gateway restart, wait for long-running work, retain existing quarantine, avoid false busy errors and stale credential reads, and keep service-backed plugin tools and config reloads working. Fixes #156699. (#156827, #158688, #157907, #157771, #153187, #159410, #159883, #157796) Thanks @Loganwoooof, @Patrick-Erichsen, @jalehman, @jb510, and @joshavant.
- Plugin install: clarify installation failures and recovery, prevent false errors during successful uninstalls, cancel marketplace downloads when staging fails, verify ClawHub archives by extracted names, and keep typed enum values in the setup wizard. Fixes #127577. (#157721, #157728, #156184, #156322, #138090) Thanks @Patrick-Erichsen, @MoerAI, @vincentkoc, and @joshavant.
- Plugins on Windows: recover missing capture directories so catalog refreshes complete, release loaded native captures, and cancel stalled memory stats. Fixes #158712 and #158795. (#158769, #158950, #159280) Thanks @yihan331313 and @blackeyes-boy.
- CLI and Doctor: exit after plugin-sensitive
--help output and stop Doctor from stalling on indexless history with deferred plugin imports. Fixes #158007 and #154679. (#158024, #159561) Thanks @obviyus, @ryanjkelly, and @pmika.
- Plugin catalog views: wait for the full catalog before filtering by category, show built-in plugin details without icon flashes, show the selected entry after reload, and reduce repeated boot warnings. (#155280, #157716, #156902, #157075) Thanks @Patrick-Erichsen.
- Skills: refresh skills after watched directories are replaced or watchers fail, avoid refreshes for same-name ancestor children, keep pinned Library preparation off the Gateway thread, and clarify Skill Workshop errors and arguments. (#156324, #157591, #156201, #155901, #148822, #157069, #158255) Thanks @vincentkoc and @obviyus.
- Worktrees: recover interrupted clean removals, retire redundant removed snapshots, avoid cleanup failures for moved HEADs and missing gitdirs, retain unreadable checkouts, avoid excessive disk reserves on large volumes, and show nested causes when PR worktree allocation fails. (#156529, #156464, #157112, #157566, #157356, #157889) Thanks @fuller-stack-dev and @vincentkoc.
- Crabbox: accept valid macOS worker signatures, reuse Testboxes with a custom state directory, retry coordinator reads during cloud dispatch, and recover staging with unattached claims or intact witness repos. (#156301, #157898, #159399, #159848, #159989)
- Model catalog memory: release per-turn catalog worker state, stop catalog refreshes from rebuilding known provider owners, release idle Codex catalog decoder memory, stop idle Codex catalogs from re-listing native history, and stop retaining MCP configs in the Claude Desktop session catalog. Fixes #157842, #159514, and #155754. (#158323, #160055, #156202, #157565, #156266) Thanks @highfly-hi, @Cyb3rb1ade, @PollyBot13, and @goslingmanagment.
- Memory performance: reduce memory use and repeated scans when indexing long or batched sessions, cut cold first-turn retrieval waits, avoid needless reindexing for patterned extra paths, and speed up memory-wiki queries on link-heavy pages. Fixes #158946. (#157278, #156173, #158364, #158563, #159190, #158998, #152487) Thanks @sahilsatralkar, @jalehman, @vincentkoc, @NianJiuZst, @obviyus, @S1gv4rd, @kchuang1015, and @IWhatsskill.
- Streaming performance: make cumulative OpenAI Responses streaming linear, reuse unchanged Codex request bytes, and reduce long garbage collection pauses and repeated checks while plugins stream data. (#158526, #155987, #159103, #158501, #158604, #158799)
- Gateway responsiveness: keep worktree admission, cleanup, and cold cleanup out of the Gateway's critical path, keep native Codex task tracking responsive during database contention, and avoid session-list rereads when model metadata changes. (#159437, #158989, #156821, #158399, #158892, #159544, #159325, #159254, #157129)
- Plugin and skill startup: stop reading native plugin artifacts at startup, skip plugin metadata loads for local hints, reuse compile caches and tool membership, prepare model fallbacks once per view, speed up plugin copying during updates, and reduce repeated skill discovery and Skill Workshop reads. Fixes #156203 and #156075. (#158414, #155505, #157528, #156205, #156076, #159245, #157343, #158092, #158110, #158609, #157563, #158757) Thanks @obviyus, @RomneyDa, @vincentkoc, and @joshavant.
- Crabbox performance: reuse per-worktree source mirrors, keep concurrent worktrees on warm mirrors, and bound source staging allocations. (#158681, #158828, #159195, #158294, #158327) Thanks @vincentkoc.
- Recovery authority: resume interrupted work after a restart only with verified human provenance and surviving authority, stop input effects once the caller's authority closes, and keep approval and tool authority intact across storage waits and hook rebuilds. (#150702, #160130, #150640, #150237, #158669, #159532, #157501) Thanks @vincentkoc and @sallyom.
- Session integrity: commit durable turns when cache-TTL pruning is enabled, keep the worktree binding through automatic daily or idle rollover, keep stored sessions, sharing, and notes stable across main and custom alias changes, and remove canonical session history on reset. (#156611, #159506, #155886, #156109, #156684, #155741, #159419, #158839) Fixes #159452 Thanks @holny, @obviyus, @chelsealong, @dimonnld, and @vincentkoc.
- Session cleanup: keep cleanup dry runs read-only, continue bulk delete and archive past rejected lookups, enforce disk budgets while WAL truncation is busy, back off maintenance replans with
warn mode observe-only, report offline trash failures after agent deletion, and keep ClickClack discussions available after cleanup. (#159316, #159170, #158773, #156583, #157834, #157631, #158052, #157098) Thanks @obviyus, @vincentkoc, @SebTardif, @Takhoffman, and @masatohoshino.
- Replies and turns: stop false aborted results for still-running async tools, fallback replies after terminal reactions, stalls when a chat is marked read as a turn starts, lost continuation after
sessions_yield, premature steering, and canceled queued chats reported as successful, and apply channel formatting rules once per delivered turn. (#157212, #156790, #158209, #158524, #153738, #156638, #156078, #155691, #158028) Thanks @obviyus, @joshavant, @IWhatsskill, @DonnieFi, and @SunnyShu0925.
- Model selection: fall back to the configured primary model instead of the first catalog entry when a direct, inherited, or temporarily unavailable model override is refused, and hide disallowed models in historical reads. (#157472, #157556, #157821) Fixes #157377 and #157473 Thanks @QuinsZouls, @obviyus, @polaris-arch, and @vincentkoc.
- Subagents: deliver yielded batches without waiting on older unrelated children, record partial completion delivery as incomplete, recover interrupted children without stale failures, let owner turns edit automations after subagent work, and avoid Gateway stalls during spawn preparation, collector waits, and orphaned-subagent recovery at startup. (#158642, #159185, #159492, #157404, #157940, #158618, #158620, #159135, #155695, #157594) Fixes #158603 Thanks @obviyus, @potterdigital, @vincentkoc, @fuller-stack-dev, @Kimiyu-186, and @joshavant.
- Restarts and cloud workers: stopping one cloud session no longer stalls dispatch for others, suspension status and worker inventory survive restarts and refused database opens, workspaces are not adopted during active session work, and restart health failures are reported accurately. (#159482, #157258, #157259, #157892, #155875) Thanks @vincentkoc, @meska, and @joshavant.
- Provider compatibility: clamp completion tokens to the remaining context window on proxy-style OpenAI-compatible endpoints, keep canonical DeepSeek Flash handling, use a newer installed Claude CLI for Anthropic subscription turns, replace the retired Fireworks GLM 5.2 Fast default router, accept OpenCode's empty activity watermark, and preserve LM Studio JSON errors during non-interactive setup. (#85889, #157304, #157595, #160102, #160138, #160196) Fixes #83086 and #157266 Thanks @rendrag-git, @obviyus, @gaodaabao, @sahilsatralkar, @anarchia-99, @serg0x, and @shakkernerd.
- Tools and MCP: restore admitted optional plugin tools in Codex runs, keep MCP server tools when catalog listing is slow, settle CLI MCP and tool resources when runs finish or setup fails, avoid decoding binary documents in
read, and surface partial PDF extraction. (#157840, #157855, #159421, #157678, #129539, #131922) Fixes #157665 and #35406 Thanks @shootingsyh, @obviyus, @vincentkoc, @xx77yy, and @vyctorbrzezowski.
- Code Mode: show MCP
before_tool_call denials and nested tool error messages to the guest, avoid worker startup heap exhaustion, keep bookkeeping changes from hiding repeated tool loops, and show readable execution purposes. (#156771, #159359, #159615, #159864, #157150) Fixes #156765 Thanks @DonnieFi, @obviyus, @rmyers64, and @VACInc.
- Computer tool: accept blank selectors from schema-filling models, release attached desktops after cancelled setup or rejected actions, and escalate unchanged window reads to critical loop detection. (#155072, #157997, #158546, #160019) Fixes #155061 and #159993 Thanks @ceckert, @obviyus, @vincentkoc, and @grape404.
- ACP: allow harness resets from read-only installations, keep session listings off the Gateway thread, and fall back when a captured adapter path is reclaimed. (#158551, #158782, #160156) Fixes #160095 Thanks @Bruce-Yii, @obviyus, and @keysersozeh.
- Automation reliability: retry transient model preflight timeouts instead of skipping scheduled runs, keep future jobs running after startup catch-up fails, report unknown delivery when webhook responses time out, accept jobs carrying schedule error diagnostics in
automations get, and avoid Gateway stalls during retention discovery. (#156237, #159086, #159840, #157497, #155414) Fixes #156163, #158969, and #157477 Thanks @obviyus, @charlie-morrison, @yetval, @joshavant, @he-yufeng, and @NicolasDerito.
- Automation delivery: suggest configured announce recipients, mirror command announcements into the destination conversation, and apply the channel's formatting rules to announce runs. (#137411, #156962, #157877) Fixes #90467 and #156754 Thanks @zeroaltitude, @rogerallen1, @obviyus, and @fourestfire.
- Config reloads: apply config despite delayed file notifications, retry hot reload after a transient lifecycle refusal, isolate deferred reload context, honor ambient channel opt-in while loading config, and republish model owners after a superseded auth refresh. (#157906, #159700, #146913, #157387, #156561) Thanks @ycmjbot-bot, @ycmjason, @vincentkoc, and @joshavant.
- Shutdown: prevent stalls from remote Skills subscriptions, plugin reloads and rollbacks, pending model reloads, and run waits, and wait for node resource cleanup before shutdown completes. (#157592, #157979, #158047, #158194, #159699, #156995) Thanks @Kimiyu-186, @vincentkoc, @RomneyDa, @joshavant, @fuller-stack-dev, and @IWhatsskill.
- Gateway stalls: the first Control UI load after a restart no longer freezes the Gateway, and session lists, descriptions, metadata, and transcript reads stay available during unrelated writes, refreshes, session creation, cleanup, background task writes, 1Password authorization, and narration bursts. (#159472, #155471, #156286, #156339, #156791, #156268, #158576, #158979, #159208, #156338, #155998, #157422, #157177, #156000, #158530, #159467) Thanks @vincentkoc.
- Session views: keep session results, previews, usage totals, and context usage provenance current during cold reads and refreshes, tolerate metadata churn while listing branches, keep live chat state, chat subscriptions, and event lineage stable across cleanup, unrelated approvals, and session lifetimes, and avoid duplicate concurrent Claude history imports. (#156121, #157122, #157943, #154907, #156519, #157060, #158581, #158434, #158633, #157270, #120622, #158232) Thanks @galiniliev and @vincentkoc.
- Pairing and nodes: honor
gateway.publicOrigin in device join codes, keep paired diagnostics working across SSH routes, restart paired nodes after their setup code expires, and publish node invoke cancellation. (#159465, #159169, #159360, #115390) Fixes #159121 Thanks @IWhatsskill, @kevinlin-openai, @giodl73-repo, and @Patrick-Erichsen.
- Commands: stop reporting finished commands as timed out when the event loop lags, finish cleanup for adopted descendants, join owned process groups through transient permission errors, avoid out-of-memory shell execs, and name only approval surfaces that can answer exec approvals. (#159578, #157863, #158483, #158367, #159266)
- Sandbox: select the correct Podman connection and unblock scoped recreation across runtime targets. (#157694, #157808) Thanks @vincentkoc.
- Gateway API errors: return actionable errors from the embeddings endpoint, treat unknown model providers as invalid requests, and name
tasks.list cursor rejection causes. (#159224, #159237, #156631)
- Compaction: restore manual and preflight native compaction. (#157977)
- State locks: release the state-lifecycle lock when a command reaches a closed database worker, and close failed connections after client registration. (#158202, #158504) Thanks @jarvis-stephens-bot.
- Access and privacy: enforce required sandboxing for new
/v1/chat/completions and /v1/responses sessions, cancel Guest work when its original access is revoked, keep Incognito content out of diagnostic logs and durable task records, and preserve the authenticated chat identity in execution audits. Fixes #156098. (#155964, #156106, #155595, #156446, #158927, #159843) Thanks @shakkernerd, @vincentkoc, and @joshavant.
- Cloud worker authority: stop checkpoint writes, SSH identities, and workspace transfers once the invoking authority closes. (#150611, #150621, #159087) Thanks @sallyom and @vincentkoc.
- State integrity: fail readiness when shared-state integrity is lost, let Doctor repair index-only corruption explicitly, keep retained databases held when deletion history is lost, and keep unreadable legacy sessions blocking startup instead of silently skipping them. Fixes #156424. (#156700, #156761, #155024, #156105) Thanks @martinxomag and @joshavant.
- State migrations: complete legacy identity migration without native file moves and keep migration leases after a database relocation. (#157690, #159835) Thanks @MasterSwords1 and @IWhatsskill.
- Database reliability: retain healthy handles after automatic rollback, observe foreign commits on the next read, recover history reads after database reopens, restore session state after nested transcript rollback, and accept SQLite and session paths through symlink or directory aliases. (#157241, #156824, #159248, #159807, #158611, #158401, #156108) Thanks @vincentkoc, @joshavant, and @galiniliev.
- Database coordination: tolerate brief WAL coordinator contention, prevent temporary-file exhaustion, preserve maintenance leases during slow heartbeat renewal, retire stale workers before replacements start, resume history eviction after contention, and stop misleading disk-space and lock-contention diagnoses. (#157121, #157413, #157696, #159944, #157064, #155785, #156390, #157841, #155607) Thanks @fuller-stack-dev and @vincentkoc.
- Reply delivery: keep final replies when updates or restarts interrupt delivery, stop stopped streamed replies from appearing twice, record aborted partial replies whose persistence fails, and count completed source uploads as replies. Fixes #133170. (#156102, #157127, #156623, #133194, #156807) Thanks @fuller-stack-dev, @joshavant, @obviyus, @ZengWen-DT, @shakkernerd, and @ruel225.
- Plain-text channels: keep text between an unspaced
< and a later > in WhatsApp, Telegram, Google Chat, IRC, and iMessage replies. Fixes #152508. (#152671) Thanks @leilei3167, @obviyus, and @yetval.
- Prompt caching: rewinding a conversation no longer changes its cached prompt prefix. Fixes #155685. (#155749) Thanks @holny, @obviyus, and @lennartack.
- Chat turns: stop turns failing or freezing when session state is briefly busy, identity locks are contended, reply directives are incomplete, a worker fails recoverably, recovery preparation fails, or a failed cleanup closes agent database admission until restart. Fixes #159438. (#156067, #158259, #158337, #158467, #157214, #159451, #156819, #154807) Thanks @jalehman, @fuller-stack-dev, @aspalagin, and @obviyus.
- Conversation routing: keep delayed continuations and self-replies on their original conversation and requester, stop spawned workers from taking over the chat you were in, keep stale completion notices from opening sessions on another Gateway, and return child follow-up results after yielding. (#156802, #156984, #158992, #157103, #156919, #159939) Thanks @joshavant, @vincentkoc, @obviyus, and @VACInc.
- Subagent completions: stop completion retry loops for missing tasks and transcripts, report settlement failures accurately, keep completion recovery with its original owner, prevent helper completions from restarting stopped work, and avoid false completion waits. Fixes #156090. (#157061, #157571, #157871, #159943, #156124, #160036, #159173) Thanks @vincentkoc, @etzelm, @jalehman, and @shakkernerd.
- Tasks and restarts: resume long-running tasks after a restart, stop parent tasks reporting false failures after Gateway restarts, restore async harness task completion, finish deferred cancellation, show completed task transcripts after cleanup, and keep task lists readable during new runs. (#158363, #158585, #158520, #159064, #157247, #156030) Thanks @jalehman and @vincentkoc.
- Automations and cron: accept
failureAlert: false, let scheduled workers inherit Full Access, allow deleting cron run sessions hidden from listings, and retain completed cron output and Gateway cleanup errors. Fixes #158224, #158180, and #154470. (#158325, #158270, #158212, #154472) Thanks @obviyus, @joshpetras, @fuller-stack-dev, @abacha, and @masatohoshino.
- Images and attachments: stop corrupt viewed images from permanently breaking a session, keep original filenames for downloads and uploaded images, resend inbound attachments referenced from history, keep preparing Home attachments across page and dock switches, and enforce Google Chat and Team Reports file size limits. Fixes #159637 and #158704. (#159668, #156588, #159216, #158720, #157013, #158181) Thanks @obviyus, @chaolawo-byte, and @vyctorbrzezowski.
- Channels: block Twitch chat when setup group access is disabled, avoid Gateway stalls while Zalo Personal saves credentials, honor Swabble hook cooldown and minimum length, and point
channels add non-interactive advice at options each channel actually registers. Fixes #157546. (#157881, #156003, #159406, #157551) Thanks @vincentkoc, @sxh313, and @obviyus.
- Provider runs: stop superseded runtime publication from surfacing as a quota error, recover proxy completions sessions that exhaust their output budget, stop repeating HTTP 400 requests with transient inner codes, apply configured payload parameters to utility completions, keep ACP harness models out of native calls, and stop compaction recovery or catalog renewal from stalling timed-out runs. Fixes #156975, #157307, and #153217. (#157218, #157673, #159221, #153451, #153756, #159105, #157459) Thanks @gokay-ai, @obviyus, @WG-Mojo, @name5566, @Alix-007, @saariuslystoned, @shakkernerd, and @ajmtrz.
- OpenCode: restore native session browsing with OpenCode CLI v2. Fixes #158009. (#158056) Thanks @obviyus and @paweldrozd.
- Install and update: handle endpoint-protected plists during Gateway activation, clarify lockfile cleanup when write access is unavailable, and keep unknown installation dates neutral. Fixes #159904. (#149307, #157008, #159907) Thanks @PollyBot13, @Patrick-Erichsen, @joshavant, and @shakkernerd.
- Gateway lifecycle: report absent Gateways immediately, read status with root-owned environment files, start when the lease heartbeat worker is slow, keep startup retryable after failed reads, and agree on process liveness so live processes are not reported dead. (#154637, #158218, #159405, #159598, #151107) Thanks @ekinnee and @altaywtf.
- Bun runtime: keep terminals working on OpenClaw's Bun build without Node installed, pass Node loaders to source workers under a renamed Bun, and keep companion libraries when capturing native plugins. (#159447, #158521, #159536) Thanks @fuller-stack-dev.
- Cloud workers: keep running turns and workspace recovery on their original session store, derive live event acknowledgments from durable placement, survive one network reset during runtime download, allow slow Git verification on warm workers, and keep task diagnostics off JSON stdout. (#156452, #156543, #156612, #159546, #156212, #159351)
- Chat view: keep messages in place when older activity loads, keep agent narration inline with top-aligned avatars, restore blank split conversations after reload, preserve titles across split-pane agent switches, stop PR mentions appearing as unrelated session banners, and keep short values readable in narrow tables, and keep Logs filtering responsive with a full buffer. Fixes #149619 and #150387. (#151736, #156926, #158953, #157482, #158578, #159283, #151822) Thanks @vyctorbrzezowski, @RomneyDa, @vincentkoc, @IWhatsskill, @Solvely-Colin, and @VACInc.
- Session sidebar: stop deleted session groups from reappearing, stop reserved group names from opening New Group, avoid deleting replacement sessions after a list refresh, show unread markers and current activity accurately, align Inbox notification ages, complete archiving after the agent finishes, and reveal active desktops and browsers when opening sessions. (#155288, #156822, #157035, #155690, #156462, #156560, #156978, #143817) Thanks @vyctorbrzezowski, @fuller-stack-dev, @vincentkoc, @shakkernerd, and @hxy91819.
- Settings and setup: keep Settings drafts across unsettled writes, explain rejected settings without losing edits, let setup chat remove configuration overrides, stop reporting invalid setup codes as expired, and soften login screens with unified native and web controls. (#157053, #157549, #158873, #159745, #157251) Thanks @shakkernerd, @vincentkoc, @VACInc, @IWhatsskill, and @Solvely-Colin.
- Tools panel: include GitHub and transcript tools in Disable All, show skipped tools separately from blocked activity, stop presenting tool previews as live availability, count nested tool operations once, and return Code Mode visitor tool results instead of an empty object. (#156865, #159502, #156887, #157438, #159453) Thanks @vincentkoc.
- Files and review: preview files in remotely hosted workspaces, keep large agent-file edits responsive with Preview closed, stop agent file creation from overwriting another editor, keep Workshop review outcomes visible, and stop Review reporting no changes on incomplete or large diffs. (#159895, #159902, #157020, #157774, #159529, #156043) Thanks @Kimiyu-186, @vyctorbrzezowski, @RomneyDa, and @fuller-stack-dev.
- Progress cards: stop identical progress-card updates from evading loop protection. Fixes #157491. (#157578) Thanks @jalehman.
- Delegation credit: retain human co-author credit through delegated work and allow group defaults before a repository's first Git commit. (#157268, #156516) Thanks @vincentkoc.
- tmux skill: show session state and creation times correctly. Fixes #145827. (#145928) Thanks @RileyJJY, @obviyus, and @mrzeepek.
- UI polish: keep the Back to tasks button compact and soften the background behind side-panel cards. (#156927, #160234) Thanks @Patrick-Erichsen and @vyctorbrzezowski.
- macOS launch: prevent the app from aborting at launch after updating to 2026.9.6. (#156881) Fixes #156861 Thanks @coygeek.
- Telegram delivery: prevent lost replies when idle sockets close or flood waits occur, keep a visible outcome when final delivery fails, recognize delivered forum-topic replies to avoid duplicates, and keep delivering after a bot identity change, including webhook delivery. (#156842, #157349, #155906, #158054, #158612, #159219) Fixes #157277 and #158507 Thanks @obviyus, @Sanjays2402, @YangManBOBO, and @vincentkoc.
- Telegram formatting and media: stop leaking raw
file:// Markdown links, show <pre> as code blocks, preserve /status tables with partial streaming, apply channel formatting rules to scheduled message-tool posts, and accept reply media over 5 MiB when mediaMaxMb is unset. (#137810, #157858, #155088, #159442, #159491) Fixes #137705, #152651, and #159433 Thanks @chelsealong, @vincentkoc, @NovaUnboundAi, @obviyus, @PollyBot13, @Alekstodo, @sunlit-deng, and @kassol.
- Channel replies: deliver answers to side questions in Discord and Slack while the original task keeps working, and name local worker timeouts in channel replies. (#159416, #155675) Thanks @gokay-ai and @obviyus.
- Discord: remove stale progress drafts after queued follow-ups, restore typing when yielded parent sessions resume, and accept 80-character Activity titles that contain emoji. (#156186, #157271, #156096) Fixes #149640, #157253, and #156094 Thanks @siri1410, @obviyus, @revision-co-ltd, and @superdiaodiao.
- Plugin host compatibility: newer Discord, Telegram, and voice-call plugins load and work on 2026.9.6 hosts, including Discord voice and REST lookups and Telegram webhook delivery, and Discord REST lookups work again under Bun. (#159773, #159831, #159844, #159987, #156965) Thanks @vincentkoc.
- Slack: render intended bold text as bold instead of italics, keep top-level progress-mode turns quiet and finish cards as Done, Completed, or Failed instead of "Working", and let verified linked admins create and assign sessions from Slack. (#155938, #159657, #159694) Thanks @pash-openai.
- Channel routing: route bound iMessage and LINE conversations to their bound agent on multi-agent installs, and route threaded Mattermost channel reactions to the thread session. (#123159, #159116, #159533, #155812) Fixes #159080 and #156008 Thanks @vincentkoc, @obviyus, @sunlit-deng, @superdiaodiao, and @wangmiao0668000666.
- Channel approvals and duplicates: restore system-agent approval reactions for iMessage, Signal, and WhatsApp, and stop Feishu rich-text posts from running a second turn after a websocket reconnect. (#159132, #152679) Fixes #152553 Thanks @leilei3167, @obviyus, and @yetval.
- WhatsApp: restore media uploads through proxies, reject reuse of a settled pairing QR code while preserving runtime warnings, and retain participant identity in audit inspection. (#159851, #67820, #156730) Thanks @joshavant and @mcaxtr.
- Gateway responsiveness: keep the Gateway responsive during channel owner selection, iMessage message-reference lookups, and Matrix credential reads, and report completed Matrix logouts correctly. (#158783, #155981, #156267)
- Channel diagnostics: surface Gateway rejections in
openclaw channels status, list installed but disabled channel plugins as installed, include channel runtime logs in openclaw channels logs, and stop logging benign Apple framework iMessage output as errors. (#159243, #159242, #159244, #156334) Fixes #119282 Thanks @Olli0103, @altaywtf, and @prashantkamani.
- Channel messages: correct Mattermost reaction removal reports when the success response body cannot be read, and stop repeating a single legacy media URL across later attachment slots. (#149458, #157822) Fixes #149457 and #157820 Thanks @masatohoshino, @YangManBOBO, and @obviyus.
- Talk: keep realtime calls and playback running through sub-second stalls, and preserve Grok transcripts and confirmed voice consults. (#155839, #155838) Thanks @Marvinthebored, @Peetiegonzalez, @obviyus, and @VACInc.
- Android Talk: explain why Talk could not start and start Talk right after microphone access is granted. (#143220, #157971) Fixes #143199 Thanks @ivankuznetsov, @IWhatsskill, and @joshavant.
- Android setup: preserve QR pairing when permissions change or another network connects, recover blocked permissions, finish setup after enabling phone capabilities, and clarify blocked or partial SMS access. (#157569, #159719, #157701, #157830, #159747) Thanks @fuller-stack-dev, @IWhatsskill, and @joshavant.
- Android chat reliability: prevent queued messages from stalling during outbox handoff, keep transcripts refreshing after worker overload, place new chats correctly, keep automation runs out of pinned chats, and keep camera snapshots from blocking the UI. (#160121, #157865, #159984, #159737, #158189) Thanks @RomneyDa, @IWhatsskill, and @vincentkoc.
- Android polish: keep the effort gauge in sync while dragging and with Fast mode, collapse link previews without opening them, show the bound agent in the chat placeholder, keep draft text aligned, remove redundant image badges, keep the Gateway picker open while scrolling, and use consistent text sizes, card spacing, labels, and Play Store icon. (#156728, #156860, #158252, #159721, #159720, #156828, #159744, #159676, #159728, #157434, #159964) Fixes #155473, #157346, and #157320 Thanks @IWhatsskill and @MasterSwords1.
- Wear OS: keep backgrounds black in light appearance, show the complete launcher icon during startup, and keep translated voice actions readable on small round displays. (#157357, #157316, #157358) Fixes #157354 and #157355 Thanks @IWhatsskill.
- iOS: keep agent narration visible during runs, preserve chat state when iPad windows resize, and keep typing and the first send intact during agent discovery. (#156944, #156683, #159296, #159404) Thanks @IWhatsskill, @Solvely-Colin, @vyctorbrzezowski, @VACInc, @vincentkoc, and @joshavant.
- macOS: stop repeated Keychain prompts after access is denied, report named-profile startup failures, polish signed-out actions and window dragging, and let Doctor clean up legacy captures beside unreadable processes. (#157951, #156441, #157096, #159370) Fixes #159112 Thanks @stevenlee-oai and @bdjben.
- Credentials: reject empty environment variables instead of using the variable name as a credential, preserve Copilot tenant credentials during Doctor repair, and keep a session's account selection after OAuth re-login. Fixes #153484 and #149502. (#155558, #139131, #149591) Thanks @Alix-007, @obviyus, @aniruddhaadak80, @VasuBansal7576, @vincentkoc, @Patrick-Erichsen, and @zachisfine.
- Protected egress: stop non-ASCII attachment filenames in forwarded headers from crashing the Gateway, and keep egress forwarding off the Gateway main thread with reused TLS trust and connections. Fixes #154685. (#156166, #156354, #156357) Thanks @siri1410, @obviyus, and @lisheguo.
- Backups: reject archives that are missing captured databases during verification, let
backup create --verify succeed on Windows while the agent database is open, recover scratch space reclaimed during creation, and avoid per-file SQLite policy checks. Fixes #157235. (#156211, #157301, #155947, #156465) Thanks @fuller-stack-dev, @ericcaiwx-star, @Takhoffman, @tsw-uop, @Patrick-Erichsen, and @joshavant.
- Config safety: allow deleting large agents without a false truncated-config rejection, make
config set --dry-run reject invalid SecretRef targets like the real write, and resolve deeply nested $include documents without recursion crashes. Fixes #157761, #152847, and #153708. (#156853, #157960, #152889, #153711) Thanks @fuller-stack-dev, @Olli0103, @obviyus, @azakharko, @ruel225, @altaywtf, and @hpyhandsome.
- Compaction: keep manual
/compact on CLI runtime aliases with the matching CLI session instead of routing it to the Codex compactor, and print JSON errors when an agent rejects /compact. Fixes #157831. (#157870, #159212) Thanks @obviyus and @amarsmission.
- Session history migration: carry the recorded failure into SQLite recovery reports, summarize thousands of repeated historical-archive warnings, retire legacy transcripts SQLite already supersedes, tolerate APFS device changes and remounts after a macOS reboot, and preserve current sessions and ownership during restored-index replay and legacy ACP imports. Fixes #156218, #156520, #158733, and #158781. (#156431, #156551, #158857, #158842, #159176, #156162, #157615, #155791, #157037) Thanks @s93101179, @NianJiuZst, @Aalmann, @timothyfs, @Leon-SK668, @auriga-agents, and @vincentkoc.
- Qwen: stop disabling DashScope profiles as billing failures when the provider only reports token-rate limits. Fixes #148236. (#152521) Thanks @Leon-SK668, @altaywtf, and @apple2345-pixel.
- Doctor accuracy: retire outdated models only to successors available on the selected route, treat non-secret API-key markers such as
ollama-local the same as the secrets audit, accept Memory panel dream-diary requests, and describe disabled heartbeat monitors accurately. Fixes #156155, #156101, and #138369. (#156435, #156216, #156437, #159711) Thanks @Orionation, @Bruce-Yii, @SundayDriver, @shadesurgeon, @IWhatsskill, and @Cyb3rb1ade.
- Update recovery: report deferred repairs as warnings and clear resolved notices, preserve recovery receipts and files across progress updates and ownership refusals, inspect retained recovery sets safely, report unresolved repair ownership accurately, and release repair leases before recovery maintenance. Fixes #153377 and #157234. (#155389, #156298, #156366, #148890, #156472, #157733) Thanks @johnnyjrizzo, @fuller-stack-dev, @vincentkoc, @Patrick-Erichsen, and @DonnieFi.
- Update cleanup: release the retained runtime snapshot on every exit path, avoid false cleanup failures and stale progress reports, keep reporting errors from rolling back verified updates, rehearse legacy exec approval conflicts before activation, and let package updates finish without an implicit deadline. Fixes #157485. (#157752, #157970, #159072, #153406, #153236) Thanks @DonnieFi, @fuller-stack-dev, and @RomneyDa.
- Update restarts: verify every managed Gateway restart attempt, preserve restart intent before macOS Gateway shutdown, keep activation running after the parent process exits, stop an uninspected predecessor Gateway before candidate Doctor, keep waiting while candidate startup progresses, and report when repair leaves an already stopped Gateway offline. (#155355, #155433, #156056, #156138, #159504, #157134) Thanks @fuller-stack-dev and @RomneyDa.
- Gateway availability during updates: check artifact ownership before stopping the Gateway on source updates, keep the Gateway running when main is reserved, skip drain delays for paired local Gateways, avoid startup waits after preactivation failure, and admit the managed update helper under real systemd in Docker. Fixes #158281 and #158881. (#158849, #158446, #156147, #156523, #159010) Thanks @hannesrudolph, @Patrick-Erichsen, @vincentkoc, and @obviyus.
- Git updates: reject stale configuration before candidate checks, stage new checkouts on destination storage, explain stale Git targets during dry runs, rebuild runtimes built from another commit, avoid stale chunks after same-commit rebuilds, and skip downloading unrelated history. Fixes #156893 and #157012. (#155656, #155689, #156447, #156996, #157350, #157432) Thanks @vincentkoc, @Patrick-Erichsen, @DonnieFi, and @MikyWang.
- Package updates: keep npm updates on their resolved installation, complete already-current updates before service membership guards, and preserve OverlayFS retention. (#158285, #159193, #157770) Thanks @RomneyDa.
- Bun installs: launch Doctor maintenance commands with Node during update repair and stop the updater from recursively spawning config readers. Fixes #158339. (#158195, #158451) Thanks @hannesrudolph.
- Update failure reports: let named administrators report update failures through trusted-proxy Control UI, keep failed report uploads in the CLI, record terminal failures before offering reports, preserve the original failure diagnostics and missing glibc requirements, and keep CLI errors readable after an update replaces the installation. Fixes #155861. (#155932, #156633, #158354, #156189, #159310, #156646) Thanks @hannesrudolph, @eleqtrizit, @IWhatsskill, @galiniliev, @obviyus, and @stevenlee-oai.
- Doctor and the Gateway: keep the Gateway responsive while Doctor runs, restore it after interrupted maintenance or slow native activation, release isolated state before cleanup, preserve worker environments, report the actual state lock failure, and leave unrelated Node.js services alone during capture cleanup. Fixes #157243, #158893, and #156896. (#157228, #156854, #157730, #147281, #156160, #156238, #158993, #157102) Thanks @fuller-stack-dev, @xilopaint, @giodl73-repo, and @kirylh.
- Plugin migrations: plan and execute Doctor plugin migrations from one inventory, refresh migration plans after installation, enforce version-bound plugin convergence, and inspect migration data before update rehearsal. Fixes #157362. (#157479, #155827, #119857, #156326) Thanks @jscd98, @vincentkoc, @fuller-stack-dev, and @joshavant.
- Config writes and errors: explain declined config changes without advising pointless retries, keep the rejected reason when opening the config file, retry settings changes without stale conflicts, apply Gateway writes without waiting for file events, distinguish config read failures from invalid config, print a re-parsable
--replace-path retry, and emit JSON failure envelopes for config patch and config unset. Fixes #157714 and #157376. (#157548, #157731, #159708, #157065, #157372, #158455, #158671, #157384, #159760) Thanks @shakkernerd, @fuller-stack-dev, @vincentkoc, @sxh313, and @obviyus.
- Service managers: resolve systemd units for the active profile only, inspect registered Gateway services accurately within their timeouts, report remaining systemd units after cleanup, name managed-service preflight refusals instead of trusting inherited markers, and compare and report Windows Task Scheduler definitions correctly. Fixes #119648. (#119674, #151608, #154565, #158034, #158314, #158422, #157719) Thanks @SebTardif, @fuller-stack-dev, @JordanNewell, @DonnieFi, @vincentkoc, @jalehman, and @RomneyDa.
- Windows: recover
gateway restart and gateway stop from SQLite sharing errors, keep command cleanup alive until it settles, migrate workspace setup archives, and accept trusted plan directories. Fixes #159222. (#159347, #157042, #156704, #158785) Thanks @eddiekk.
- Linux and FreeBSD: show clear desktop update status, recover release-page retries, validate native Quick Chat, prevent X11 startup races, and show FreeBSD service guidance and safe
pkg inspection details. (#158037, #158041, #157154, #157147) Thanks @vincentkoc.
- Setup: keep model verification out of ordinary chat events, keep activation alive through provider device-code sign-in, honor baseline skip-bootstrap, fail installs when
openclaw is not on PATH, and load only the selected setup runtime without waiting on a skipped daemon install. (#155777, #156440, #115945, #134406, #160169, #160168) Thanks @MertBasar0, @obviyus, @vincentkoc, @ly85206559, and @TeaCup404.
- CLI messages: point
--timeout-ms errors at accepted flags, report slow managed Gateway starts without claiming failure, stop advising a healthy Gateway be stopped, explain reconnecting paired nodes, validate sessions tail keys, cron timeouts and time zones, and blank hook relay timeouts, and show configured plugin failures in health reports. Fixes #156721 and #157443. (#157419, #157596, #159717, #159810, #159704, #159716, #159756, #145523, #118013) Thanks @obviyus, @sxh313, @PollyBot13, and @hugenshen.
- CLI runs: keep shell tools working after plugin refresh, skip local startup validation for Gateway model runs, and avoid opening sessions writable during fallback. (#159000, #158136, #156703) Thanks @VACInc, @fuller-stack-dev, and @joshavant.
- Update speed: shorten preparation for large dependency trees and databases, cut repeated ownership checks, prepare retained runtime directories once, reuse resolved npm metadata, speed up updater Doctor startup, and reduce macOS runtime-retention delays. (#156748, #156757, #157115, #157386, #158340, #158766, #159392, #159044, #157954) Thanks @fuller-stack-dev and @vincentkoc.
- Plugin rehearsal speed: clone disposable plugin snapshots when supported, copy large plugin trees faster, skip duplicate advisory Doctor inspections and repeated media migration scans, and speed up CLI help generation in source builds. (#159427, #156793, #157199, #158562, #158522, #159443, #156299, #157586) Thanks @vincentkoc.
- CLI performance: avoid shared-state locks and diagnostics for local Gateway RPCs, skip migration preflight for Gateway message actions, defer inference runtimes and cold config imports, let commands exit during cache maintenance, finish help after child processes exit, and make state database contention actionable. (#157166, #157252, #157448, #158624, #158071, #156457, #157884, #158448, #157588) Thanks @joshavant, @fuller-stack-dev, @vincentkoc, and @RomneyDa.
- Gateway efficiency: avoid rewriting every paired device on reconnect, skip duplicate agent integrity scans, reduce session update work across views, and release completed-run diagnostics and rejected follow-up task tracking from memory. (#158425, #158366, #158756, #158949, #156111)
- Incognito: keep Incognito chat history out of browser storage, discard unsent Incognito drafts on reload, explain the session time limit, and recover expired Incognito conversations. (#154656, #156398, #156478, #156544) Thanks @vincentkoc.
- Automations: validate cron webhook URLs with the same rules the server enforces, keep exact timing enabled after Save, show automation sources in task transcripts, close stale automation transcripts when switching panels, and run Workboard automations after workers finish. Fixes #146448. (#146706, #156974, #156487, #159160, #156130) Thanks @pengzh1, @obviyus, @aniruddhaadak80, and @joshavant.
- Unsaved work: preserve unsaved file edits across interface reloads and server updates, and keep composing, Side chat, and private drafts intact through tab switches, automatic updates, and async question updates. (#156208, #159414, #158801, #156990, #158213, #159341)
- Drafts: preserve quoted replies when restoring drafts, keep failed sends out of newer Goal drafts, keep file line endings when pasting multiline text, show pasted-text previews before sending, and make rejected Settings drafts easy to discard. (#158335, #158382, #157998, #157390, #157742) Thanks @vincentkoc.
- Conversation order and exports: keep queued messages and activity in conversation order, stop consecutive sends from briefly appearing reversed, hide explicitly removed queued messages, and keep completed answer timestamps from jumping backward after reload, and omit empty sections from conversation Markdown exports. (#155897, #156843, #160240, #159503, #159581, #157590) Thanks @vyctorbrzezowski and @vincentkoc.
- Restart recovery and interrupted work: show restart recovery as a single outcome instead of a user message, mark interrupted assistant replies, keep work logs together when tasks resume automatically, keep final answers outside collapsed work, keep session state current after compaction with shorter compaction markers, and recover history reads across resets and rebuilds. (#155269, #157210, #158206, #159997, #156474, #156858, #157169, #159163) Thanks @vincentkoc, @jalehman, and @vyctorbrzezowski.
- Chat scrolling: keep the transcript end state current after scrolling long chats, keep late-growing replies above the dock, retain delayed progress scroll gestures, and restore your reading position when returning to a retained session. (#159469, #159955, #158153, #154554) Thanks @vincentkoc.
- Attachments: release the composer send button when attachment reads stall in the Linux companion app, accept oversized PNG attachments, keep file attachments outside the bubble during session startup, stop images from reloading while scrolling, preserve reply targets for media-only assistant messages, and defer offscreen image and attachment metadata requests. Fixes #156956. (#157019, #159960, #158700, #159486, #158701, #155370, #155623) Thanks @MasterSwords1, @obviyus, @brucemccurdy, @vyctorbrzezowski, and @vincentkoc.
- Mobile layout: balance chat turn spacing, align mobile footers, keep goal controls above expanded text, and restore light-theme Talk button icons. Fixes #151451. (#151453, #155789, #155951) Thanks @vyctorbrzezowski and @IWhatsskill.
- Desktop control: let Bun Gateways control their managed desktop without a separate Node.js installation. (#159462)
- Usage: prevent background usage refreshes from running out of memory on large SQLite sessions, and show SuperGrok usage when xAI omits the credit percentage. Fixes #156898. (#156937, #155790) Thanks @Conan-Scott, @saariuslystoned, and @obviyus.
- Sign-in and accounts: refresh connected accounts after auth changes, explain missing Gateway access instead of reporting the Gateway as unreachable, keep long hostnames inside the sign-in card, and recover viewer presence after a lost acknowledgment. (#157950, #159948, #159899, #156255) Thanks @stevenlee-oai, @IWhatsskill, and @vincentkoc.
- Terminal UI: keep history, sends, and session refreshes on the selected session and agent, stop startup restore from replacing the session you chose, and open model pickers without waiting for the Gateway. (#159166, #158845, #158240, #157839) Thanks @obviyus.
- Model pickers: show search results without unrelated waits, reduce pauses when searching large model lists, open with the selected model visible, and align search text with the reading direction. (#151022, #159905, #160132, #159937) Thanks @obviyus and @vyctorbrzezowski.
- Task progress: stop task progress from clipping below chat questions or expanding when you send, keep plans visible when commands fail, show failed tool rows and failed goal checks before final replies, keep progress dismissible in every state, hide finished tasks from the running preview, and keep Stop available while a draft cannot send. Fixes #152598. (#152665, #155326, #156649, #158970, #158021, #160126, #159388, #157703) Thanks @vyctorbrzezowski, @vincentkoc, @keshavbotagent, @obviyus, and @Olli0103.
- Working indicator: keep the working claw below the first message, stop long status text from shrinking it, and keep progress card focus rings visible. (#157708, #156680, #157829) Thanks @fuller-stack-dev and @RomneyDa.
- Workboard: prevent multi-second freezes when refreshing labeled boards, and keep card action menus sized to their content. Fixes #155993. (#156150, #157913) Thanks @sunlit-deng, @obviyus, @sonofakel, and @Patrick-Erichsen.
- Plugins and Skills settings: load the Plugins Advanced settings schema again, stop plugin settings from flashing and losing focus after saving, keep plugin sidebar selection in sync while navigating, show plugin artwork and open details from search and the command palette, and tidy headings, icons, tabs, and change-time wording. Fixes #158715, #156319, and #157699. (#158734, #157737, #157717, #157915, #157405, #155192, #157732, #157931, #158745, #157536) Thanks @NianJiuZst, @obviyus, @nz365guy, @Patrick-Erichsen, @jalehman, @RomneyDa, and @joshavant.
- Session navigation: return to chat after opening Settings from search, stop the agent menu from opening when leaving Settings, open the right conversation in saved split panes, keep saved forks in parent navigation, sync chats after cross-tab branch changes, remove stale child counts after archiving, keep context details and agent pins stable across panes, and wait for current agent defaults before starting. (#156204, #158870, #158639, #158835, #159318, #157068, #155616, #157049, #156281) Thanks @vincentkoc.
- Ask OpenClaw: make agent handoffs open and focus the destination chat, and stop the setup agent from suggesting normal-agent slash commands or claiming context was transferred. (#155907) Thanks @RomneyDa.
- GitHub and browser previews: keep typing focus when the GitHub reader opens, keep repository context in GitHub folder links, keep GitHub reference chips readable across themes, retire stalled pull-request subscriptions, keep Git update comparisons consistent, and open browser cards after delayed panel renders. (#157202, #157619, #153922, #156310, #156410, #153253) Thanks @vyctorbrzezowski and @vincentkoc.
- Collaboration: keep collaborator drafts visible during typing pauses and simplify collaborator draft states and expiry. (#157100, #159235) Thanks @Patrick-Erichsen and @vyctorbrzezowski.
- Team reports and Activity: keep accepted activity when collection fails, move report collection off the Gateway event loop with fewer queries, and generate recaps for visible spawned chats. (#157933, #159101, #159148, #159458) Thanks @vincentkoc.
- Accessibility and input: repair keyboard access, screen reader semantics, and contrast, and preserve IME Escape while tooltips are open. (#156050, #159171)
- Dashboard, Workshop, and Files: identify the agent in dashboard chat tabs, show a loading shimmer, preserve padding when maximized and widget state during gallery navigation, refresh Workshop suggestions on first return with clearer comparison dates, refresh Files metadata after workspace edits, and keep speaker voice selection in Settings. (#158547, #158096, #157203, #156288, #158208, #158250, #156327, #159441) Thanks @vyctorbrzezowski, @vincentkoc, and @joshavant.
- Visual polish: tidy sidebar loading, empty filters, section counts, failed rows, and clipped edges; align the session header, mention avatars, close and dismiss icons, and preview and task-stop icons; keep chat search compact, composer status bars uniform, tool paths readable with shortened home directories, and nested tool groups free of blank space; hide the empty outbox helper while composing; and derive switch off states from theme tokens. Fixes #155845, #159911, and #159867. (#146968, #157890, #156918, #159915, #156432, #155969, #159914, #155857, #155963, #160016, #157059, #156921, #156914, #159868) Thanks @vincentkoc, @Patrick-Erichsen, @vyctorbrzezowski, @hxy91819, and @IWhatsskill.
- Streaming performance: reduce repeated work while text streams, keep long streamed prose and Markdown lists responsive, render tool events only in Live activity, stop re-parsing loaded tool output on each history page, avoid re-rendering the whole transcript while a session placement starts, and cut layout, editor, and comment-pin updates on every render. (#158393, #158439, #158492, #158534, #158943, #156206, #160030, #159562, #156210, #159559, #160050, #157179, #157952) Thanks @vincentkoc.
- Sidebar and background performance: reduce CPU work for unchanged session rows, spread and scope roster and live-stream refreshes, warm hovered sessions sooner without restoring an older roster, pause and back off sidebar narration in hidden tabs or after failures, stop idle diagnostic capture, and release popup, tooltip, and status listeners after removal. (#159069, #160045, #158985, #158589, #158574, #157562, #159269, #157254, #159878, #159880, #159394, #158751, #159495, #159564, #158794, #158533, #155686, #158302, #153213, #156725, #157226, #154848, #159917, #159901) Thanks @jjjhenriksen, @Patrick-Erichsen, @vincentkoc, and @vyctorbrzezowski.
- Startup: load less JavaScript and fewer styles at Control UI startup by deferring palette styles, MCP text, and automation starter prompts. (#157297, #157973, #157942, #158482, #157161) Thanks @RomneyDa and @vincentkoc.
- Bun-only installs: updates, repair, node-host update checks, and Chrome MCP no longer fail or run npm update checks when Node is not installed. (#159431, #160154, #160226)
- Updates: legacy plugin config no longer blocks candidate admission, admission warnings survive compacted history, releasing stale leases no longer hits decoder errors, successful updates stop leaving full database copies in the npm global root, and Doctor no longer fails while migrating a legacy state directory. (#160304, #160430, #160288, #160348, #159965)
- Gateway runtime: status warns when the running Gateway's Node path is gone, macOS keeps saved Gateway runtime pins instead of replacing them automatically, and Windows discovers Gateway Startup-folder launchers. (#157190, #160127, #151674) Thanks @Olli0103, @obviyus, @jihoon-ernesto, and @DonnieFi.
- Stop and recovery: stopping a cloud worker no longer loses workspace edits across a Gateway restart or update, ACP Stop settles without overwriting replacement sessions, and completion recovery no longer blocks on archive metadata. (#159484, #160035, #160238)
- Gateway: slow worker operations no longer block unrelated sessions, cron run reservation keeps the Gateway responsive, restart sentinel retries are joined at shutdown, concurrent first sends in shared sessions are accepted, failed Dashboard updates are logged with their reason, and response continuations persist while unresolved
previous_response_id values are rejected. (#160299, #159792, #160335, #159371, #160091, #159227) Thanks @chopin-op60, @obviyus, and @vyctorbrzezowski.
- Replies and access: final replies are delivered after unrelated plugin reloads, owner access survives child follow-up results, Code Mode distinguishes guest errors after tool calls, and personal skill reads work again while retired plugins are released. (#160009, #160018, #160217, #160213) Thanks @VACInc and @joshavant.
- Plugins and models: custom packages no longer retain stale installed plugins, automatic cleanup preserves foreign-owned legacy captures, recovery skips unpublished npm projects, and model catalog pairs are prepared before outputs are replaced. (#160099, #160155, #159303, #160157) Thanks @RomneyDa, @vyctorbrzezowski, @jalehman, and @vincentkoc.
- Codex: preserve conversation text within the fork history window and honor a native Computer Use disable before replacement. (#159651, #160133) Thanks @bdjben.
- Onboarding: reject unsupported custom endpoint URL schemes and impossible workspaces, name the failing setup step, and skip startup waits when no Gateway was started. (#160301, #160373, #160307)
- State: prevent writes to retired database paths. (#159834)
- Chat UI: sending no longer makes the chat jump or the prompt flicker, closed chat panes are released and refresh once on reconnect, Take photo no longer opens a file picker on desktop, mobile layouts stay inside safe areas with consistent margins, and shortcut icons are clear and aligned. (#160109, #160079, #160253, #160388, #159925) Thanks @vyctorbrzezowski and @hxy91819.
- iOS: preserve setup after bootstrap preparation refuses. (#160218)
- Qwen: Wan video generation no longer fails on local reference images. (#160123)
- Updates and service recovery: split-root Bun Gateway installs update with their pinned runtime, Windows Gateway is restored after Doctor repair, source checkouts use the non-rebuilding Gateway stop, recovery probes survive slow service inspection, system-service updates require an updater cleanup receipt, installer-managed PATH survives service reconciliation, and Doctor preserves plugin captures across read-only inspections on 2026.9.6 upgrades. (#160495, #160457, #160206, #160393, #160135, #160424, #160446) Thanks @fuller-stack-dev, @Ayushdevo, @obviyus, @lukewd, and @joshavant.
- Agent runs: agents recheck unfinished plans before stopping, activity stays visible while yielded parents resume, steering stays queued while the target is busy, scheduled activity recaps join their continuations, and Gateway config recovery is scheduled with closed retries fenced. (#160297, #160039, #160490, #160340, #160375) Thanks @VACInc.
- Telegram: Claude CLI Bash commands stay visible in progress after completion. (#158636) Thanks @keshavbotagent and @obviyus.
- Settings and previews: unset automation and plugin settings no longer look disabled, preview cards honor the external browser preference, media-capable providers stay discoverable in Media, and guests can see their own profiles without roster access. (#141548, #160410, #160473, #160503) Thanks @nkeil, @obviyus, @johnfink8, @VACInc, and @shakkernerd.
- Media and CLI: video and music candidate failures are logged with their errors, shell completion loads plugin commands once, and cloud-session bootstrap works again for CommonJS bundles. (#158914, #160546, #160583) Thanks @Ayushdevo, @obviyus, and @kybrcore.
- Crabbox: finish destroying workers when leases are absent. (#160571)
- Updates and Doctor: retained Git rollbacks preserve operator work, rollbacks restore Doctor-owned config includes, forced reinstall moves an unpinned Bun Gateway service to Node, Doctor reclaims legacy pnpm runtimes and service scratch directories, keeps file access when merging tool notes, holds session databases with unknown deletion history, and update failures from plugins are no longer reported as database errors. (#160170, #160443, #160189, #160164, #159194, #160129, #160436) Thanks @fuller-stack-dev and @vincentkoc.
- Plugins: listener settings survive plugin updates, npm-sourced plugins install on Bun-only hosts, Doctor no longer fails after native capture directories disappear, native captures copy dependency manifests, and install recovery and retirement keep their ownership. (#160682, #160224, #160291, #160519, #147827) Thanks @vincentkoc and @fuller-stack-dev.
- Codex and agents: completed command output is retained with Codex 0.158.0, stale heartbeat tool calls recover, parent sessions resume after workers finish, Codex chats keep working during slow model discovery, waiting commentary stays after successful yields, compaction fallback no longer replays already compacted history, and Stop recovers when chat retains an inactive run. (#160487, #148547, #160608, #160363, #154881, #160211, #160596) Thanks @Kimiyu-186, @RomneyDa, @fuller-stack-dev, @obviyus, @neyudo, and @vyctorbrzezowski.
- Channels and voice: Slack Socket Mode connects when
HTTPS_PROXY is set, Feishu webhooks are preserved on supported 9.6 hosts, Google Chat reply visibility updates after config reloads, Gemini 3.8 Live user transcripts finalize without a finished flag, and speaking over the assistant during forced consults no longer interrupts it. (#155841, #160455, #160323, #152680, #153727) Thanks @bill-starfoundry, @RileyJJY, @obviyus, @ScientificProgrammer, @saariuslystoned, @IWhatsskill, @Dreamer-HIT, and @destinedenergy.
- Providers and platform: Sign in with ChatGPT discovers models for the selected account, Windows browser version detection works with spaced paths, and iOS pauses the hidden sidebar mascot. (#160027, #160432, #160607) Thanks @stevenlee-oai, @Irish-Joseph, @obviyus, and @avirtudazo-officeconnect.
- Runtime reliability: config reads keep producer ownership during compensation, cron descendant reads stay off the Gateway thread, startup waits for leases after container replacement, interrupted worker bootstrap downloads resume, invalid node worker launches fail without waiting for cancellation, and bodyless HTTP client errors are no longer replayed. (#147746, #160508, #160266, #160655, #160380, #160584) Thanks @vincentkoc, @Kimiyu-186, @obviyus, and @bogdandragosvasile.
- Themes: menus, controls, action colors, neutral surfaces, desktop margins, context warnings, and MCP app colors stay on the selected palette when themes change or load lazily. (#160555, #160568, #160569, #160557, #160564, #160565) Thanks @vyctorbrzezowski.
- Chat and sessions UI: Stop stays visible while drafting during a response, used or expired dashboard pairing links recover cleanly, unknown chat authors no longer appear as the viewer, heartbeat lane sessions no longer look like empty conversations, pinned sessions stay in Pages when showing all agents, named worktrees stay visible after closing the picker, session filters stay open when tapped, disclosure clicks no longer select text, model-refresh warnings stay out of Cmd+K, the history rail wave persists on hover, the chat position rail stays inside RTL transcripts, and tool summaries show total calls alongside failures. (#160233, #160684, #160257, #160367, #160225, #157570, #160600, #160249, #160221, #160722, #160681, #157904) Thanks @vyctorbrzezowski, @LiuwqGit, @obviyus, @WanweiInMod, @RomneyDa, and @joshavant.
- Mobile UI: sidebar titles get more reading space, the New Session composer stays reachable, and the PR strip shows the working branch. (#160366, #160603, #160597) Thanks @vyctorbrzezowski.
- Access and security: token, HTTP, and approval work stays alive when another user's identity scopes change, shared-secret owner run authority is classified as grant-independent, dashboards no longer require approval after native app authentication, Cloudflare OIDC custom GitHub claims are recognized, the audit tier check parses GPT generation numbers, combined shell stdin flags are detected, plugin Connect is disabled when Gateway OAuth is unavailable, and the Tlon pending approval queue is bounded. (#160136, #160830, #159860, #160661, #140012, #160698, #160761, #160679) Thanks @fuller-stack-dev, @shakkernerd, @holny, @IWhatsskill, @boycez, @eleqtrizit, @Patrick-Erichsen, and @joshavant.
- Updates and Doctor: a Git rollback that cannot rewrite a reflog-less branch restarts the previous Gateway, update history stays responsive during reconciliation, Doctor preserves the live plugin index during read-only checks, the retained session-source warning clears after deferred plugin migrations, updates no longer refuse when lint warns about an unusable agent database, and node-host updates install on Bun-only macOS and Linux hosts. (#160828, #160592, #160400, #160755, #160184, #160575) Thanks @obviyus, @spikewillcocks, and @joshavant.
- Gateway: plugin lifecycle leases are reclaimed after forced stops, cloud turns wait for an in-flight worker runtime update, connection bursts behind shared IPs are handled,
gateway run --force works on Linux hosts with IPv6 disabled, the macOS stop budget follows the launchd job, bootstrap artifact transfers get their full operation window, and cloud worker bundles are retained through provisioning. (#160795, #160248, #160814, #160802, #157007, #160687, #160730) Thanks @obviyus, @aicyberg, @etzelm, @Patrick-Erichsen, and @TeaCup404.
- Agents and replies: Claude CLI turns are no longer killed when Claude Code auto-compacts, Active Memory recalls on claude-cli reuse the prompt cache, requester tools are preserved after subagents settle, Codex omits discovery and delegation guidance for empty tool allowlists, admitted plugin registries are reused, non-canonical tool-call IDs are restored for HTTP continuations, OpenRouter models send high reasoning effort when xhigh is selected, worker turns keep working on older session-host nodes, and outbound media retention is staged through the delivery queue worker. (#157498, #160768, #160786, #160840, #160658, #134425, #160651, #160147, #160783) Thanks @etzelm, @Patrick-Erichsen, @cipp-ashe, @obviyus, @ndakota79, @joshavant, @ekinnee, @IWhatsskill, @RomneyDa, @vincentkoc, @oxen-horse, @hartmark, @Olli0103, and @AXEG0.
- Channels: streamed replies no longer split Markdown tables that fit one message, Mattermost sends are isolated, Slack progress card links open the visible work session, the official AgentMail ClawHub channel loads, Gemini 3.8 Live keeps streaming silence instead of ending the audio stream, and cron named-session jobs run in the right workspace. (#160701, #150915, #160088, #155097, #152844, #159444) Thanks @obviyus, @IWhatsskill, @Patrick-Erichsen, @RomneyDa, @vincentkoc, @kai0126-claw, @saariuslystoned, and @vyctorbrzezowski.
- Bun and Windows: SQLite workers run from source under Bun on Windows, rejection transport adapts to Bun's Node-compatible closure, and the Windows browser version probe stays within the environment variable budget. (#160310, #160329, #160756)
- Onboarding: first-run model setup resumes after a page reload, unavailable model endpoints fail fast, onboarding no longer claims inference is ready after Skip for now, and focus is preserved when suggestions arrive. (#160774, #160813, #160713, #160677)
- Chat and settings UI: multi-file sends fail early when attachments exceed the frame limit, terminals release memory when closed, channel cards update as soon as setup is applied and channel setups can run back to back, worktree sessions keep their runtime selection, voice setup opens before history admission, the admin access request shows the exact approval command, macOS native dashboards without tokens stay connected after route refresh, the Talk, Send, and Stop button alternates again, acknowledged session renames stay visible, the Inbox empty-state heading is larger than its description, and the idle presence dot stays amber in the light theme. (#160071, #160748, #160853, #160705, #160547, #160686, #160685, #160763, #160725, #160579, #160724, #160759) Thanks @fuller-stack-dev, @vincentkoc, @vyctorbrzezowski, @obviyus, and @TeaCup404.
- Agents and sessions: compaction stops retrying empty length-stopped summaries, durable turns keep committing when other sessions are stale,
sessions_send to a busy child no longer fails behind its run, Stop no longer blocks the Gateway while saving subagent state, Responses tool rejections keep terminal facts, rollback-journal commit waits are preserved, abandoned provider sign-ins restart with shared OAuth handling, Code Mode exec no longer backgrounds after 1 s and forces extra poll turns, and memory files are created in OpenShell mirror mode. (#160650, #160153, #160842, #160203, #149071, #160887, #160574, #160841, #160697) Thanks @Olli0103, @obviyus, @Jackten, @ericcaiwx-star, @vincentkoc, @Kimiyu-186, @RomneyDa, @stevenlee-oai, @sunlit-deng, and @jtatum.
- Nodes and health: headless nodes with default plugins activate automatic updates, the health reader surfaces config read failures, and the progress card no longer lingers after dismissing an unfinished or note-only card. (#160790, #160885, #160867) Thanks @laurencebrown.
- Docker updates: running-Gateway package updates on Docker and OverlayFS no longer spend many minutes retaining and retiring the previous runtime. (#160845)
- Sessions and cloud workers: async transcript writes from stale owners are rejected, and node enrollment deadlines follow the bootstrap window. (#160893, #160904)
Known issues
- Windows updates from 2026.9.6: on Windows, updating from 2026.9.6 can exit silently with code 13; run
openclaw update again.
- Docker update time: updating a Docker or OverlayFS installation is faster in this release but can still take several minutes, mostly while the Gateway is stopped for the package swap. (#160693)
Upcoming deprecations
These deprecated compatibility paths remain available in 2026.9.7. Their recorded removal targets are 2026-09-30 and 2026-10-01; removal-pending entries stay until supported external plugin migration is verified. See the Plugin SDK migration guide and plugin compatibility.
openclaw/plugin-sdk/config-runtime: use api.pluginConfig, openclaw/plugin-sdk/config-mutation, openclaw/plugin-sdk/runtime-config-snapshot, and openclaw/plugin-sdk/config-contracts. Removal pending after 2026-10-01. (plugin-sdk-config-runtime-subpath)
openclaw/plugin-sdk/channel-reply-pipeline, channel-lifecycle, and channel-message: use openclaw/plugin-sdk/channel-outbound, plus openclaw/plugin-sdk/channel-inbound for message helpers. Removal pending after 2026-10-01. (plugin-sdk-channel-reply-pipeline-subpath, plugin-sdk-channel-lifecycle-subpath, plugin-sdk-channel-message-subpath)
openclaw/plugin-sdk/infra-runtime: move to focused subpaths including delivery-queue-runtime, diagnostic-runtime, error-runtime, exec-approvals-runtime, fetch-runtime, and ssrf-runtime. Removal pending after 2026-10-01. (plugin-sdk-infra-runtime-subpath)
- Public media-understanding and memory-host-core SDK facades: register media understanding with
api.registerMediaUnderstandingProvider(...) and use host-prepared memory prompts through openclaw/plugin-sdk/core. Removal pending after 2026-09-30; see plugin architecture. (plugin-sdk-media-understanding-public-demotion, plugin-sdk-memory-host-core-public-demotion)
- Legacy media projection: use ordered
MsgContext.media / InboundMediaFacts[], typed hook media and originalMedia, Attachment* template variables, and openclaw/plugin-sdk/media-local-roots. Removal target 2026-10-01. (media-legacy-projection)
- Plugin SDK compatibility aliases: move to plugin-local channel setup input fields, focused runtime subpaths instead of broad runtime barrels, provider-local helper APIs, MessagePresentation values and renderers, focused replacements named by each
@deprecated annotation, AgentHarnessAttemptResult.terminal and AgentHarnessDeliveryDefaults.visibleReplies, canonical official-plugin exports, canonical memory tables with getRuntimeConfig, the namespaced plugin API, and manifest-owned plugin metadata. Removal target 2026-10-01. (plugin-sdk-channel-setup-input-fields, plugin-sdk-broad-runtime-barrels, plugin-sdk-provider-owned-helper-shims, message-presentation-legacy-bridges, plugin-sdk-focused-compat-aliases, agent-harness-terminal-result-aliases, official-plugin-export-aliases, memory-host-compatibility-aliases, plugin-runtime-api-compat-aliases, plugin-provider-manifest-compat-aliases). Thanks @TeaCup404.
- Channel webhook listener inputs: use
legacyWebhook for listener config; Doctor migrates stored webhookPort/webhookHost and webhook.port inputs. Warnings started 2026-09-26. See config migrations. (channel-webhook-listener-config-inputs)
Complete contribution record
The full contribution record is available in the tag-pinned CHANGELOG.md.
Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.9.7
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.9.7.tgz
- integrity:
sha512-/8N2LnfTFQPvnZizi8qKSFfnLQaPvSG3Cb4xo1YV7b4JhYiUc43ZNRpXJ01bWghLK0Ezk3HVeo/DGHcIRQwRWA==
- release SHA:
c074824a27c96d3983043f9eeb33823cd1772d8c
- full release CI report: https://github.com/openclaw/releases/blob/main/evidence/2026.9.7/release-evidence.md
- release publish: https://github.com/openclaw/openclaw/actions/runs/36667642121
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/36645703509
- full release validation: https://github.com/openclaw/openclaw/actions/runs/36644909314
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/36668111716
- plugin ClawHub submission: https://github.com/openclaw/openclaw/actions/runs/36668119179; public artifact verification follows successful release-parent completion
- plugin ClawHub bootstrap: dispatched separately, not awaited by this proof: https://github.com/openclaw/openclaw/actions/runs/36668126283
- OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/36664180615/attempts/1
- Telegram integration checks: waived by the release owner for 2026.9.7 (source QA, Package Acceptance, published-package E2E); not run.
- Android APK: skipped — apps/android/version.json is 2026.8.2, release train is 2026.9.7; run pnpm android:version:pin -- --from-gateway before the next tag.
|