OpenClaw v2026.7.33 发布于 2026-09-18。当前系统安装版本:v2026.6.8
📦 版本信息
- 版本号:v2026.7.33
- 发布日期:2026-09-18
- 当前安装:待更新
- 升级命令:
sudo npm install -g openclaw@latest
🚀 更新内容
2026.7.33
Highlights
- **Security and credential safety:** harden command parsing, browser origin checks, plugin Git installs, diagnostics, service credentials, and webhook logging across Gateway and official plugins.
- **Message and session integrity:** preserve queued, imported, streamed, and tool-result messages across retries, hooks, recovery, and channel lifecycle transitions.
- **Gateway reliability:** close failed HTTP and Responses streams, bound expensive reads and history queries, and settle shutdown work before reporting completion. Thanks @RomneyDa.
- **Channel delivery:** repair Discord, Matrix, Telegram, Slack, WhatsApp, LINE, Feishu, Zalo, and meeting-plugin edge cases that could lose, corrupt, or stall messages.
- **Provider and media robustness:** bound provider requests and diagnostics, reject malformed payloads, and preserve valid tool schemas and response lifecycles. Thanks @RomneyDa.
Changes
- **Extended-stable release tooling:** carry the current Docker channel classifier, promoter, verification policy, and tests so
v2026.7.33can move only theextended-stable*aliases. Thanks @RomneyDa.
Fixes
- **Security boundaries:** reject escaped-newline command words, exact-origin mismatches, injected Git option arguments, inherited secret-response identifiers, unsafe browser mutations, and malformed or oversized node payloads.
- **Delivery and transcript recovery:** keep retry delays accurate, preserve imported messages and plugin-blocked tool results, retain detached admissions, and avoid silently dropping channel actions or recovery work. Thanks @RomneyDa.
- **Resource and lifecycle safety:** bound catalog, history, media, stderr, API, and provider waits; stop canceled parallel tools; drain channel shutdown; and reject queued worker requests after close. Thanks @RomneyDa.
- **Text and schema correctness:** preserve UTF-16 boundaries across user-visible truncation paths, keep root tool-schema properties, reject non-finite schema values, and report exact UTF-8 write sizes.
- **Official plugins:** repair message parsing, proxy paths, request timeouts, media handling, privacy-safe logging, and runtime aliases across the npm-published plugin inventory.
Complete contribution record
Pull requests
- **PR #102438** fix: auth bookkeeping no longer reverts rotated OpenAI OAuth credentials. Related #102430. Thanks @obviyus.
- **PR #102125** fix(gateway): finish plugin HTTP responses after post-header failures. Thanks @mushuiyu886.
- **PR #102451** fix(memory-host): reject queued worker requests on shutdown. Thanks @QiuYuang.
- **PR #102276** fix(agent-core): stop canceled parallel tools from starting. Related #102252. Thanks @harjothkhara and @yetval.
- **PR #101739** fix(secrets): reject inherited exec response ids. Thanks @Alix-007.
- **PR #102089** fix(twilio): redact webhook turnToken diagnostics. Thanks @Alix-007.
- **PR #102403** fix(backup): write backup archive with owner-only 0o600 permissions. Thanks @yetval.
- **PR #102398** fix(plugins): terminate git clone args so git: specs cannot inject options. Thanks @yetval.
- **PR #38290** Gateway: allow extension origins in browser allowlist. Related #46520. Thanks @brunowowk and @mosidevv.
- **PR #102013** fix(gateway): bound sessions.usage all-agent session discovery concurrency. Thanks @masatohoshino.
- **PR #102825** fix(gateway): parse image data URLs linearly. Related #102393. Thanks @wangyan2026 and @yetval.
- **PR #102426** fix: redact diagnostic config fields with schema hints [AI]. Thanks @pgondhi987.
- **PR #101000** fix(plugins): bound hosted catalog feed reads on non-streaming responses. Thanks @hugenshen and @cursoragent.
- **PR #104625** fix(gateway): demote startup close transport races.
- **PR #104540** fix(sessions): prevent corrupted Unicode in persisted tool details. Thanks @zhangguiping-xydt.
- **PR #104734** fix(models): redact synthetic auth credentials from models status --json. Related #104713. Thanks @ObliviateRickLin and @davefano.
- **PR #104811** fix(gateway): keep channels stopped during shutdown and reload. Thanks @ShiroKSH.
- **PR #102881** fix(gateway): reject disallowed browser Origin before accepting auth.mode=none on HTTP (#102834). Thanks @wangyan2026 and @yetval.
- **PR #101469** fix(hooks): bound HOOK.md reads during hook install validation. Thanks @cxbAsDev.
- **PR #103562** fix(discord): retry reply session init conflicts to prevent silent message loss. Related #102381. Thanks @cxbAsDev and @zuofengboss.
- **PR #113700** fix: recover outbound messages after the correct retry delay.
- **PR #113703** fix: preserve distinct imported CLI session messages.
- **PR #113697** fix: repair tool-call transcripts when plugins block results.
- **PR #114134** fix: require approval for escaped newline shell words [AI]. Thanks @pgondhi987.
- **PR #102331** fix(google-meet): keep Meet sessions on the agent that joined them. Thanks @steipete-oai.
- **PR #101630** fix(mattermost): truncate inbound preview on code-point boundary. Thanks @hugenshen and @cursoragent.
- **PR #101736** fix(agents): keep steering metadata truncation UTF-16 safe. Thanks @chengzhichao-xydt and @Alix-007.
- **PR #101617** fix(discord): prevent stale gateway error listeners after restart. Thanks @zhangguiping-xydt.
- **PR #102246** fix(discord): keep gateway close reasons UTF-16 safe. Thanks @mushuiyu886.
- **PR #102332** fix(agents): keep truncation surrogate-safe. Thanks @QiuYuang.
- **PR #101815** fix(discord): split encoded video URLs from captions. Thanks @VectorPeak.
- **PR #102090** fix(gateway): keep session title and preview text truncation UTF-16 safe. Thanks @wm0018.
- **PR #101976** fix(acp): keep background-task summaries UTF-16 safe at truncation boundaries. Thanks @MoerAI.
- **PR #102378** fix(acp): keep session update text truncation surrogate-safe. Thanks @zw-xysk.
- **PR #102085** fix(agents): keep chunkString and buildResumeMessage truncation UTF-16 safe. Thanks @wm0018.
- **PR #102105** fix(google-meet): handle stdout/stderr stream errors in node host. Thanks @wangmiao0668000666.
- **PR #102157** fix(google-meet): bound Calendar v3 events.list request deadline. Thanks @wangmiao0668000666.
- **PR #102395** fix(matrix): keep HTTP error and tool-progress truncations UTF-16 safe. Thanks @wangmiao0668000666.
- **PR #102266** fix(security): keep channel-metadata and install-policy truncation surrogate-safe. Thanks @zw-xysk.
- **PR #101781** fix(telegram): keep DM topic auto-rename user message UTF-16 safe. Thanks @hugenshen and @cursoragent.
- **PR #101934** fix: keep task title truncation UTF-16 safe in restart/diagnostic output. Thanks @wm0018.
- **PR #102407** fix(channels): keep inbound log previews UTF-16 safe. Thanks @miorbnli.
- **PR #102466** fix(agents): keep tool-result context guard truncation UTF-16 safe. Thanks @chengzhichao-xydt.
- **PR #102464** fix(tool-policy-audit): use truncateUtf16Safe for audit field truncation. Thanks @lsr911.
- **PR #102467** fix(native-hook-relay): use truncateUtf16Safe for hook display text truncation. Thanks @lsr911.
- **PR #102470** fix(gateway): keep chat history display text truncation surrogate-safe. Thanks @zw-xysk.
- **PR #102483** fix(auto-reply,infra): keep startup context and heartbeat event text UTF-16 safe. Thanks @wings1029.
- **PR #102478** fix(memory): snippets split emoji when truncated. Thanks @qingminglong.
- **PR #101649** fix(zalouser): clear probe timeout after auth resolves. Thanks @Alix-007.
- **PR #101506** fix(browser): bound Chrome launch stderr diagnostics. Thanks @mikasa0818.
- **PR #102484** fix(gateway): keep live chat assistant buffer tail truncation UTF-16 safe. Thanks @wings1029.
- **PR #102477** fix(talk): use truncateUtf16Safe for LLM-prompt-facing text truncation. Thanks @xydt-tanshanshan.
- **PR #102496** fix(agents): keep provider error detail truncation UTF-16 safe. Thanks @chengzhichao-xydt.
- **PR #102500** fix(mcp-runtime): use truncateUtf16Safe for MCP metadata text truncation. Thanks @lsr911.
- **PR #102515** fix(compaction): use truncateUtf16Safe for post-compaction context text. Thanks @lsr911.
- **PR #102525** fix(discord): use truncateUtf16Safe for deploy error body truncation. Thanks @lsr911.
- **PR #102527** fix(oc-path): use truncateUtf16Safe for error message path truncation. Thanks @lsr911.
- **PR #102536** fix(nodes): restore Mac app allowlist execution. Related #102528.
- **PR #102149** fix(google-meet): bound Meet v2 + Drive files.export request deadlines. Thanks @wangmiao0668000666.
- **PR #102524** fix(memory-core): use truncateUtf16Safe for diary context truncation. Thanks @lsr911.
- **PR #102389** fix(web-fetch): report exact-limit response bodies as complete, not truncated [AI-assisted]. Related #101837. Thanks @Supsumintong and @qingminglong.
- **PR #101832** fix: keep Gemini thinking disabled after clamp. Related #101785. Thanks @MonkeyLeeT and @aniruddhaadak80.
- **PR #104049** fix: installer removes temporary files after failed commands.
- **PR #97828** fix(telegram): clear reasoning preview before forceNewMessage rotation (#80862). Thanks @ly-wang19 and @kyle20026.
- **PR #102859** fix(nextcloud-talk): add timeout to room info lookup. Thanks @Alix-007 and @Leon-SK668.
- **PR #102862** fix(minimax): add timeouts to OAuth HTTP requests. Thanks @Alix-007 and @Leon-SK668.
- **PR #103547** fix(voice-call): redact phone numbers in event logs via subsystem logger. Thanks @xialonglee.
- **PR #103555** fix(voice-call): consolidate webhook logs on the injected plugin logger and assert transcript privacy boundary. Thanks @xialonglee.
- **PR #104229** fix: live updater builds complete runtime assets.
- **PR #104306** fix: start local embedding services on demand. Related #104214. Thanks @vincentkoc.
- **PR #102965** fix(inworld): add timeout to voices list request. Thanks @chengzhichao-xydt.
- **PR #103752** fix(google-meet): validate chrome node policy params. Thanks @Leon-SK668.
- **PR #103728** fix(memory): skip blank search provider bootstrap. Thanks @Leon-SK668 and @vincentkoc.
- **PR #104426** fix(commitments): isolate extraction batches by agent. Related #104425.
- **PR #103731** fix(plugins): honor empty document extractor scope. Thanks @Leon-SK668 and @vincentkoc.
- **PR #104263** fix(gateway): cap history when numeric limit is huge. Thanks @qingminglong.
- **PR #104156** fix(agents): truncate multibyte middleware details at byte limit. Thanks @qingminglong.
- **PR #104173** fix(onboard): wait for gateway warnings before installing service. Thanks @qingminglong.
- **PR #104110** fix(agents): cancel pending bundle LSP requests when the agent stops. Thanks @zhangguiping-xydt and @vincentkoc.
- **PR #104404** fix(agents): preserve UTF-16 boundaries in context pruning. Thanks @mushuiyu886 and @vincentkoc.
- **PR #104440** fix(browser): reject hex click coordinates in act route. Thanks @qingminglong.
- **PR #104260** fix(voice-call): use sliceUtf16Safe for bounded child output tail cap. Thanks @hugenshen.
- **PR #104151** fix(file-transfer): keep bounded stderr tail UTF-16 safe. Thanks @hugenshen.
- **PR #104148** fix(agents): keep scp stderr tail UTF-16 safe. Thanks @hugenshen.
- **PR #104414** fix(nodes): reject malformed media payloads when base64 is invalid. Thanks @qingminglong.
- **PR #104556** fix(file-transfer): reject oversized inline file writes before node dispatch. Thanks @qingminglong.
- **PR #102974** fix(google): stream Gemini batch JSONL output instead of res.text(). Thanks @hugenshen.
- **PR #104610** fix(gateway): demote expected startup socket aborts.
- **PR #104301** fix(utils): use UTF-16 safe truncation for long URL timeout logs. Thanks @whiteyzy.
- **PR #103445** fix(slack): preserve unrelated action rows after interactions. Thanks @zw-xysk and @cursoragent.
- **PR #104677** fix(browser): run mutation guard before JSON parsing. Thanks @Leon-SK668.
- **PR #104423** fix(agents): preserve UTF-16 boundaries in bootstrap context. Thanks @mushuiyu886.
- **PR #104560** fix(write): report actual UTF-8 byte count in success message. Thanks @wings1029.
- **PR #104454** fix(attempt-execution): use truncateUtf16Safe for summary text truncation. Thanks @chenyangjun-xy.
- **PR #104715** fix(browser): apply profile proxy policy to tab list redaction. Thanks @Leon-SK668.
- **PR #104470** fix(ai): reject non-finite tool schema numbers. Related #104469. Thanks @VectorPeak.
- **PR #104498** fix(feishu): avoid logging raw duplicate card-action tokens. Thanks @VectorPeak.
- **PR #113259** fix(gateway): reject incomplete usage date ranges. Thanks @lzw112.
- **PR #112855** fix: doctor preserves locks owned by exact gateway process title. Related #112854. Thanks @fr-meyer.
- **PR #113609** fix(gateway): return 404 for disabled OpenAI API routes.
- **PR #113683** fix: route skill verification through the managed proxy.
- **PR #113685** fix: preserve child process signal exit codes.
- **PR #113106** fix(xiaomi): reject malformed base64 audio in TTS responses. Thanks @zenglingbiao.
- **PR #113109** fix(volcengine): reject malformed base64 audio in TTS responses. Thanks @zenglingbiao.
- **PR #113790** fix: recognize Bash completion installed in login profiles.
- **PR #113897** fix(models): keep empty model lists machine-readable.
- **PR #114051** fix(agents): prevent session stalls under concurrent load.
- **PR #114061** fix(gateway): prevent missing assets on nested dashboard routes.
- **PR #114280** fix(gateway): keep failed account stops from stranding siblings. Thanks @yangxiansheng.
- **PR #114325** fix: report unavailable system Node versions accurately. Thanks @RomneyDa.
- **PR #93516** fix(matrix): reverse-proxy path support for Matrix homeserver URLs. Related #102885. Thanks @Papilionidae.
- **PR #114450** fix(zalo): deliver text when optional media is blank. Related #105078. Thanks @VectorPeak.
- **PR #114512** fix(cron): avoid false agent timeouts while execution lanes are busy. Thanks @hugin-bot.
- **PR #112352** fix(model): report the model change before the thinking remap it triggers. Thanks @kesava500.
- **PR #114540** fix(cron): prevent local model preflight socket leaks. Thanks @hugenshen.
- **PR #114500** fix(auto-reply): normalize newline-delimited silent tokens. Related #103735. Thanks @Maless88.
- **PR #97024** fix(session-delivery): propagate non-ENOENT retry persistence failures. Thanks @0xghost42.
- **PR #114076** fix: debug proxy respects response backpressure (issue #105701). Thanks @qingminglong and @aniruddhaadak80.
- **PR #128799** fix(ai): preserve root properties when flattening root-level anyOf tool schemas. Related #128743. Thanks @LiuwqGit and @Patrick-Erichsen and @schaba21.
- **PR #131546** fix(copilot): own BYOK response stream lifecycles. Related #131544.
- **PR #131195** fix(line): /card splits an action, list item, or receipt entry at a comma inside its data. Related #129349. Thanks @edenfunf and @obviyus.
- **PR #131783** fix(agents): keep dangling symlinks visible in ls listings.
- **PR #132014** fix(line): give the agent the selection a postback carries. Related #132000. Thanks @edenfunf and @obviyus.
- **PR #102636** fix(handoff): skip orchestrator framing for solo agents without subagents. Related #102628. Thanks @Gary-Jia-new and @altaywtf and @Joakim-Emanuelson.
- **PR #132545** fix(plugins): keep compiled plugin aliases on the built runtime.
- **PR #102160** fix(agents): run-lifecycle reliability — bounded release, evidence-based liveness, watchdog semantics. Related #85826, #96168. Thanks @obviyus and @kiagentkronos-cell and @alvelda.
🔗 相关链接
- GitHub Release: https://github.com/openclaw/openclaw/releases/tag/v2026.7.33
- 官方文档:docs.openclaw.ai
- GitHub 仓库:github.com/openclaw/openclaw
- NPM 包:npmjs.com/package/openclaw