这是一个仅面向网关的 `extended-stable` 版本,相当于我们目前的 LTS。此版本基于 2026 年 7 月底的 OpenClaw,并加入了关键安全更新、可靠性和性能修复,以及新模型支持等功能。此版本发布时,OpenClaw 的最新版本是 [2026.9.5](https://github.com/openclaw/openclaw/releases#release-v2026.9.5)
## 2026.7.35
### 修复
- **Doctor 插件注册表:** 当 Doctor 创建或修复注册表状态时,保留完整的内置插件清单,以确保默认的 Browser、Canvas、配对、文件传输、手机控制、Talk 语音和 Bonjour 插件在重启后仍然可用。状态迁移发现机制现在还能从 2026.7.34 写入的不完整注册表中恢复,同时保留外部插件的安装记录。从 #136045 回移。感谢 @wangmiao0668000666。
### 完整贡献记录
此次 extended-stable 后续版本是在上一轮 2026.7.34 审计游标之后,对完整的 1,418 个提交进行审计后选定的。在全新安装或从 2026.6.35 升级期间,没有发现其他需要回移到 7 月版本线的缺陷。
## 7 月 extended-stable 累积说明
OpenClaw 2026.7.33 和 2026.7.34 是不稳定的 extended-stable 构建,因此有意未作为 GitHub Release 发布。由于 2026.7.35 是 7 月维护版本线的第一个 GitHub Release,所以下面包含了这两个版本的完整变更日志。
## 2026.7.33
### 亮点
- **安全性和凭据安全:** 在 Gateway 和官方插件中加强命令解析、浏览器来源检查、插件 Git 安装、诊断、服务凭据和 Webhook 日志记录。
- **消息和会话完整性:** 在重试、钩子、恢复和频道生命周期转换期间,保留排队、导入、流式传输和工具结果消息。
- **Gateway 可靠性:** 关闭失败的 HTTP 和 Responses 流,限制高开销读取和历史记录查询,并在报告关闭完成之前完成关闭任务。感谢 @RomneyDa。
- **频道投递:** 修复 Discord、Matrix、Telegram、Slack、WhatsApp、LINE、飞书、Zalo 和会议插件中可能导致消息丢失、损坏或停滞的边缘情况。
- **提供商和媒体稳健性:** 限制提供商请求和诊断,拒绝格式错误的载荷,并保留有效的工具架构和响应生命周期。感谢 @RomneyDa。
### 变更
- **Extended-stable 发布工具:** 引入当前的 Docker 频道分类器、提升工具、验证策略和测试,使 `v2026.7.33` 只能移动 `extended-stable*` 别名。感谢 @RomneyDa。
### 修复
- **安全边界:** 拒绝包含转义换行符的命令单词、来源不完全匹配、注入的 Git 选项参数、继承的秘密响应标识符、不安全的浏览器变更,以及格式错误或过大的节点载荷。
- **投递和记录恢复:** 保持重试延迟准确,保留导入的消息和被插件阻止的工具结果,保留已分离的准入信息,并避免静默丢弃频道操作或恢复任务。感谢 @RomneyDa。
- **资源和生命周期安全:** 限制目录、历史记录、媒体、stderr、API 和提供商等待;停止已取消的并行工具;排空频道关闭任务;并在关闭后拒绝排队的工作进程请求。感谢 @RomneyDa。
- **文本和架构正确性:** 在面向用户的截断路径中保留 UTF-16 边界,保留工具根架构属性,拒绝非有限架构值,并报告准确的 UTF-8 写入大小。
- **官方插件:** 修复通过 npm 发布的插件清单中的消息解析、代理路径、请求超时、媒体处理、隐私安全日志记录和运行时别名。
### 完整贡献记录
此审计记录涵盖完整的 v2026.7.1-2..42625327f91254cfe66cbeb6d7a1812780b1a694 历史:共合并 126 个 PR。生成清单还将直接提交作为编辑输入;以上分组说明优先体现对用户的影响。
#### 拉取请求
- **PR #102438** 修复:身份验证记录不再还原已轮换的 OpenAI OAuth 凭据。相关:#102430。感谢 @obviyus。
- **PR #102125** 修复(gateway):在发送响应头后发生故障时,正确结束插件 HTTP 响应。感谢 @mushuiyu886。
- **PR #102451** 修复(memory-host):关闭时拒绝排队的工作进程请求。感谢 @QiuYuang。
- **PR #102276** 修复(agent-core):阻止已取消的并行工具启动。相关:#102252。感谢 @harjothkhara 和 @yetval。
- **PR #101739** 修复(secrets):拒绝继承的 exec 响应 ID。感谢 @Alix-007。
- **PR #102089** 修复(twilio):在 Webhook 诊断中隐去 turnToken。感谢 @Alix-007。
- **PR #102403** 修复(backup):以仅所有者可访问的 0o600 权限写入备份归档。感谢 @yetval。
- **PR #102398** 修复(plugins):终止 git clone 参数,防止 `git:` 规范注入选项。感谢 @yetval。
- **PR #38290** Gateway:在浏览器允许列表中允许扩展来源。相关:#46520。感谢 @brunowowk 和 @mosidevv。
- **PR #102013** 修复(gateway):限制 sessions.usage 的全代理会话发现并发数。感谢 @masatohoshino。
- **PR #102825** 修复(gateway):以线性方式解析图片数据 URL。相关:#102393。感谢 @wangyan2026 和 @yetval。
- **PR #102426** 修复:使用架构提示隐去诊断配置字段 [AI]。感谢 @pgondhi987。
- **PR #101000** 修复(plugins):限制非流式响应中的托管目录源读取。感谢 @hugenshen 和 @cursoragent。
- **PR #104625** 修复(gateway):降低启动关闭传输竞态问题的严重级别。
- **PR #104540** 修复(sessions):防止持久化工具详细信息中的 Unicode 损坏。感谢 @zhangguiping-xydt。
- **PR #104734** 修复(models):从 `models status --json` 中隐去合成身份验证凭据。相关:#104713。感谢 @ObliviateRickLin 和 @davefano。
- **PR #104811** 修复(gateway):在关闭和重新加载期间保持频道停止状态。感谢 @ShiroKSH。
- **PR #102881** 修复(gateway):在 HTTP 上接受 `auth.mode=none` 之前,拒绝不允许的浏览器 Origin(#102834)。感谢 @wangyan2026 和 @yetval。
- **PR #101469** 修复(hooks):在钩子安装验证期间限制 HOOK.md 的读取。感谢 @cxbAsDev。
- **PR #103562** 修复(discord):重试回复会话初始化冲突,以防止消息静默丢失。相关:#102381。感谢 @cxbAsDev 和 @zuofengboss。
- **PR #113700** 修复:在正确的重试延迟后恢复出站消息。
- **PR #113703** 修复:保留彼此独立的已导入 CLI 会话消息。
- **PR #113697** 修复:当插件阻止结果时,修复工具调用记录。
- **PR #114134** 修复:对包含转义换行符的 Shell 单词要求审批 [AI]。感谢 @pgondhi987。
- **PR #102331** 修复(google-meet):将 Meet 会话保留在加入该会话的代理上。感谢 @steipete-oai。
- **PR #101630** 修复(mattermost):在代码点边界处截断入站预览。感谢 @hugenshen 和 @cursoragent。
- **PR #101736** 修复(agents):确保控制元数据截断符合 UTF-16 安全要求。感谢 @chengzhichao-xydt 和 @Alix-007。
- **PR #101617** 修复(discord):防止重启后残留过期的 Gateway 错误监听器。感谢 @zhangguiping-xydt。
- **PR #102246** 修复(discord):确保 Gateway 关闭原因符合 UTF-16 安全要求。感谢 @mushuiyu886。
- **PR #102332** 修复(agents):确保截断不会破坏代理项。感谢 @QiuYuang。
- **PR #101815** 修复(discord):将编码后的视频 URL 与说明文字分离。感谢 @VectorPeak。
- **PR #102090** 修复(gateway):确保会话标题和预览文本截断符合 UTF-16 安全要求。感谢 @wm0018。
- **PR #101976** 修复(acp):确保后台任务摘要在截断边界处符合 UTF-16 安全要求。感谢 @MoerAI。
- **PR #102378** 修复(acp):确保会话更新文本截断不会破坏代理项。感谢 @zw-xysk。
- **PR #102085** 修复(agents):确保 `chunkString` 和 `buildResumeMessage` 截断符合 UTF-16 安全要求。感谢 @wm0018。
- **PR #102105** 修复(google-meet):处理节点主机中的 stdout/stderr 流错误。感谢 @wangmiao0668000666。
- **PR #102157** 修复(google-meet):限制 Calendar v3 `events.list` 请求的截止时间。感谢 @wangmiao0668000666。
- **PR #102395** 修复(matrix):确保 HTTP 错误和工具进度截断符合 UTF-16 安全要求。感谢 @wangmiao0668000666。
- **PR #102266** 修复(security):确保频道元数据和安装策略截断不会破坏代理项。感谢 @zw-xysk。
- **PR #101781** 修复(telegram):确保私信主题自动重命名中的用户消息符合 UTF-16 安全要求。感谢 @hugenshen 和 @cursoragent。
- **PR #101934** 修复:确保重启/诊断输出中的任务标题截断符合 UTF-16 安全要求。感谢 @wm0018。
- **PR #102407** 修复(channels):确保入站日志预览截断符合 UTF-16 安全要求。感谢 @miorbnli。
- **PR #102466** 修复(agents):确保工具结果上下文保护截断符合 UTF-16 安全要求。感谢 @chengzhichao-xydt。
- **PR #102464** 修复(tool-policy-audit):使用 `truncateUtf16Safe` 截断审计字段。感谢 @lsr911。
- **PR #102467** 修复(native-hook-relay):使用 `truncateUtf16Safe` 截断钩子显示文本。感谢 @lsr911。
- **PR #102470** 修复(gateway):确保聊天历史记录显示文本截断不会破坏代理项。感谢 @zw-xysk。
- **PR #102483** 修复(auto-reply、infra):确保启动上下文和心跳事件文本符合 UTF-16 安全要求。感谢 @wings1029。
- **PR #102478** 修复(memory):解决代码片段在截断时拆分表情符号的问题。感谢 @qingminglong。
- **PR #101649** 修复(zalouser):身份验证完成后清除探测超时。感谢 @Alix-007。
- **PR #101506** 修复(browser):限制 Chrome 启动时的 stderr 诊断信息。感谢 @mikasa0818。
- **PR #102484** 修复(gateway):确保实时聊天助手缓冲区尾部截断符合 UTF-16 安全要求。感谢 @wings1029。
- **PR #102477** 修复(talk):对面向 LLM 提示词的文本使用 `truncateUtf16Safe` 进行截断。感谢 @xydt-tanshanshan。
- **PR #102496** 修复(agents):确保提供商错误详细信息截断符合 UTF-16 安全要求。感谢 @chengzhichao-xydt。
- **PR #102500** 修复(mcp-runtime):使用 `truncateUtf16Safe` 截断 MCP 元数据文本。感谢 @lsr911。
- **PR #102515** 修复(compaction):对压缩后的上下文文本使用 `truncateUtf16Safe`。感谢 @lsr911。
- **PR #102525** 修复(discord):使用 `truncateUtf16Safe` 截断部署错误正文。感谢 @lsr911。
- **PR #102527** 修复(oc-path):使用 `truncateUtf16Safe` 截断错误消息中的路径。感谢 @lsr911。
- **PR #102536** 修复(nodes):恢复 Mac 应用允许列表执行。相关:#102528。
- **PR #102149** 修复(google-meet):限制 Meet v2 和 Drive `files.export` 请求的截止时间。感谢 @wangmiao0668000666。
- **PR #102524** 修复(memory-core):使用 `truncateUtf16Safe` 截断日记上下文。感谢 @lsr911。
- **PR #102389** 修复(web-fetch):将恰好达到限制大小的响应正文报告为完整,而非已截断 [AI 辅助]。相关:#101837。感谢 @Supsumintong 和 @qingminglong。
- **PR #101832** 修复:在执行限制后继续禁用 Gemini 思考功能。相关:#101785。感谢 @MonkeyLeeT 和 @aniruddhaadak80。
- **PR #104049** 修复:安装程序在命令失败后删除临时文件。
- **PR #97828** 修复(telegram):在 `forceNewMessage` 轮换之前清除推理预览(#80862)。感谢 @ly-wang19 和 @kyle20026。
- **PR #102859** 修复(nextcloud-talk):为房间信息查询添加超时。感谢 @Alix-007 和 @Leon-SK668。
- **PR #102862** 修复(minimax):为 OAuth HTTP 请求添加超时。感谢 @Alix-007 和 @Leon-SK668。
- **PR #103547** 修复(voice-call):通过子系统日志记录器隐去事件日志中的电话号码。感谢 @xialonglee。
- **PR #103555** 修复(voice-call):将 Webhook 日志统一到注入的插件日志记录器上,并明确记录文本的隐私边界。感谢 @xialonglee。
- **PR #104229** 修复:实时更新程序构建完整的运行时资源。
- **PR #104306** 修复:按需启动本地嵌入服务。相关:#104214。感谢 @vincentkoc。
- **PR #102965** 修复(inworld):为语音列表请求添加超时。感谢 @chengzhichao-xydt。
- **PR #103752** 修复(google-meet):验证 Chrome 节点策略参数。感谢 @Leon-SK668。
- **PR #103728** 修复(memory):跳过空白搜索提供商的引导启动。感谢 @Leon-SK668 和 @vincentkoc。
- **PR #104426** 修复(commitments):按代理隔离提取批次。相关:#104425。
- **PR #103731** 修复(plugins):遵循空文档提取器作用域。感谢 @Leon-SK668 和 @vincentkoc。
- **PR #104263** 修复(gateway):当数值限制极大时,对历史记录设置上限。感谢 @qingminglong。
- **PR #104156** 修复(agents):按照字节限制截断多字节中间件详细信息。感谢 @qingminglong。
- **PR #104173** 修复(onboard):安装服务前等待 Gateway 警告。感谢 @qingminglong。
- **PR #104110** 修复(agents):代理停止时取消待处理的捆绑包 LSP 请求。感谢 @zhangguiping-xydt 和 @vincentkoc。
- **PR #104404** 修复(agents):在上下文剪枝中保留 UTF-16 边界。感谢 @mushuiyu886 和 @vincentkoc。
- **PR #104440** 修复(browser):在 act 路由中拒绝十六进制点击坐标。感谢 @qingminglong。
- **PR #104260** 修复(voice-call):对受限子进程输出尾部使用 `sliceUtf16Safe`。感谢 @hugenshen。
- **PR #104151** 修复(file-transfer):确保受限的 stderr 尾部符合 UTF-16 安全要求。感谢 @hugenshen。
- **PR #104148** 修复(agents):确保 scp stderr 尾部符合 UTF-16 安全要求。感谢 @hugenshen。
- **PR #104414** 修复(nodes):当 Base64 无效时拒绝格式错误的媒体载荷。感谢 @qingminglong。
- **PR #104556** 修复(file-transfer):在分派给节点之前拒绝过大的内联文件写入。感谢 @qingminglong。
- **PR #102974** 修复(google):以流式方式处理 Gemini 批处理 JSONL 输出,而非使用 `res.text()`。感谢 @hugenshen。
- **PR #104610** 修复(gateway):降低预期的启动套接字中止事件的严重级别。
- **PR #104301** 修复(utils):对长 URL 超时日志使用 UTF-16 安全截断。感谢 @whiteyzy。
- **PR #103445** 修复(slack):交互后保留不相关的操作行。感谢 @zw-xysk 和 @cursoragent。
- **PR #104677** 修复(browser):在解析 JSON 之前运行变更保护。感谢 @Leon-SK668。
- **PR #104423** 修复(agents):在引导上下文中保留 UTF-16 边界。感谢 @mushuiyu886。
- **PR #104560** 修复(write):在成功消息中报告实际的 UTF-8 字节数。感谢 @wings1029。
- **PR #104454** 修复(attempt-execution):使用 `truncateUtf16Safe` 截断摘要文本。感谢 @chenyangjun-xy。
- **PR #104715** 修复(browser):将配置文件代理策略应用于标签页列表的信息隐去。感谢 @Leon-SK668。
- **PR #104470** 修复(ai):拒绝工具架构中的非有限数值。相关:#104469。感谢 @VectorPeak。
- **PR #104498** 修复(feishu):避免记录原始的重复卡片操作令牌。感谢 @VectorPeak。
- **PR #113259** 修复(gateway):拒绝不完整的使用情况日期范围。感谢 @lzw112。
- **PR #112855** 修复:Doctor 保留由标题完全匹配的 Gateway 进程持有的锁。相关:#112854。感谢 @fr-meyer。
- **PR #113609** 修复(gateway):为已禁用的 OpenAI API 路由返回 404。
- **PR #113683** 修复:通过托管代理路由技能验证。
- **PR #113685** 修复:保留子进程信号退出代码。
- **PR #113106** 修复(xiaomi):拒绝 TTS 响应中格式错误的 Base64 音频。感谢 @zenglingbiao。
- **PR #113109** 修复(volcengine):拒绝 TTS 响应中格式错误的 Base64 音频。感谢 @zenglingbiao。
- **PR #113790** 修复:识别安装在登录配置文件中的 Bash 补全。
- **PR #113897** 修复(models):确保空模型列表仍可被机器读取。
- **PR #114051** 修复(agents):防止会话在并发负载下停滞。
- **PR #114061** 修复(gateway):防止嵌套仪表板路由中缺少资源。
- **PR #114280** 修复(gateway):防止账户停止失败导致其他同级账户陷入停滞。感谢 @yangxiansheng。
- **PR #114325** 修复:准确报告不可用的系统 Node 版本。感谢 @RomneyDa。
- **PR #93516** 修复(matrix):支持 Matrix 主服务器 URL 的反向代理路径。相关:#102885。感谢 @Papilionidae。
- **PR #114450** 修复(zalo):当可选媒体为空时仍投递文本。相关:#105078。感谢 @VectorPeak。
- **PR #114512** 修复(cron):避免执行通道繁忙时误报代理超时。感谢 @hugin-bot。
- **PR #112352** 修复(model):在模型变更触发思考模式重新映射之前报告该变更。感谢 @kesava500。
- **PR #114540** 修复(cron):防止本地模型预检发生套接字泄漏。感谢 @hugenshen。
- **PR #114500** 修复(auto-reply):规范化以换行符分隔的静默令牌。相关:#103735。感谢 @Maless88。
- **PR #97024** 修复(session-delivery):传播非 ENOENT 的重试持久化失败。感谢 @0xghost42。
- **PR #114076** 修复:调试代理遵循响应背压(问题 #105701)。感谢 @qingminglong 和 @aniruddhaadak80。
- **PR #128799** 修复(ai):展平根级 `anyOf` 工具架构时保留根属性。相关:#128743。感谢 @LiuwqGit、@Patrick-Erichsen 和 @schaba21。
- **PR #131546** 修复(copilot):管理 BYOK 响应流生命周期。相关:#131544。
- **PR #131195** 修复(line):修复 `/card` 因数据内部的逗号而拆分操作、列表项或收据条目的问题。相关:#129349。感谢 @edenfunf 和 @obviyus。
- **PR #131783** 修复(agents):在 `ls` 列表中保持悬空符号链接可见。
- **PR #132014** 修复(line):将回传数据携带的选择内容提供给代理。相关:#132000。感谢 @edenfunf 和 @obviyus。
- **PR #102636** 修复(handoff):对于没有子代理的单一代理,跳过编排器框架。相关:#102628。感谢 @Gary-Jia-new、@altaywtf 和 @Joakim-Emanuelson。
- **PR #132545** 修复(plugins):在构建后的运行时中保留已编译的插件别名。
- **PR #102160** 修复(agents):运行生命周期可靠性——有界释放、基于证据的存活状态和看门狗语义。相关:#85826、#96168。感谢 @obviyus、@kiagentkronos-cell 和 @alvelda。
## 2026.7.34
### 亮点
- **当前模型系列:** 在 extended stable 随附的提供商目录和运行时策略中,新增对 GPT-6 Astra、GPT Image 2.5 Flare/Sunburst、Muse Spark 1.3、Claude Opus 5、Gemini 3.6/3.7 Flash、Grok 4.6、Kimi K3、GLM 5.3、Qwen 3.8、DeepSeek V4 Flash Vision Experimental 和 Nemotron 3.5 Lightning 的支持。Fable 5.1 仍被推迟,因为其前缀绑定的推理契约需要更新的仅追加重放生命周期。
- **GPT-5.6 兼容性:** 在 OpenAI 直连和 Codex OAuth 路由、推理控制、定价、上下文和视觉元数据中,保留并验证完整的 GPT-5.6 Sol、Terra 和 Luna 系列。
### 修复
- **安装程序恢复:** 当安装修复尝试也失败时,保留原始 npm 恢复诊断信息,使运维人员看到可采取行动的软件包管理器错误,而不是次生的清理失败。
### 完整贡献记录
此 extended-stable 候选版本是在 `v2026.7.33` 之后,对完整的 11,198 个提交进行审计后选定的。它将经批准的提供商和安装程序变更部分适配到 7.33 SDK 和配置界面,而没有引入后续的架构重构。
### 发布验证
- npm 软件包:https://www.npmjs.com/package/openclaw/v/2026.7.35
- 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.35.tgz
- 完整性:`sha512-2ZzpVrK4sOzKLRyS5S6rHjkXQS11FHe361FQSvUy8CBBG0TkzZUisBCmCZ0PLfK8Hpym2ZPHHpknZQaD4WONGQ==`
- 发布 SHA:`aa94808cb05668cdf1c10bc8f034a8176deba483`
- 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/35574936025/attempts/2
- 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/35595949221
- OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/35597355437 — npm 已接受发布;任务失败的唯一原因是,在传播完成之前,受限的注册表回读操作已超时。
- Docker 发布恢复:https://github.com/openclaw/openclaw/actions/runs/35598889849
- 手动最终确认:在独立验证 npm 签名和来源、`extended-stable` 选择器、全部 70 个插件的回读结果、Docker 摘要和证明,以及 npm/OCM/Gateway/容器冒烟测试后,经所有者批准。
This is a gateway-only `extended-stable` release, which is our current equivalent to LTS. This release is OpenClaw from the end of July 2026, plus critical security updates, reliability and performance fixes, and features like new model support. The latest version of OpenClaw at the time of this release is [2026.9.5](https://github.com/openclaw/openclaw/releases#release-v2026.9.5)
## 2026.7.35
### Fixes
- **Doctor plugin registry:** preserve the complete bundled plugin inventory when Doctor creates or repairs registry state, so default Browser, Canvas, pairing, file-transfer, phone-control, Talk voice, and Bonjour plugins remain available after restart. State-migration discovery now also recovers from the partial registry written by 2026.7.34 while retaining external plugin install records. Backported from #136045. Thanks @wangmiao0668000666.
### Complete contribution record
This extended-stable follow-up was selected from a complete 1,418-commit audit after the prior 2026.7.34 audit cursor. No other defect observed during clean install or the 2026.6.35 upgrade required a July-line backport.
## Cumulative July extended-stable notes
OpenClaw 2026.7.33 and 2026.7.34 were unstable extended-stable builds and were intentionally not published as GitHub Releases. Because 2026.7.35 is the first GitHub Release for the July maintenance line, it includes their complete changelogs below.
## 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.33` can move only the `extended-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
This audited record covers the complete v2026.7.1-2..42625327f91254cfe66cbeb6d7a1812780b1a694 history: 126 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact.
#### 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.
## 2026.7.34
### Highlights
- **Current model families:** add GPT-6 Astra, GPT Image 2.5 Flare/Sunburst, Muse Spark 1.3, Claude Opus 5, Gemini 3.6/3.7 Flash, Grok 4.6, Kimi K3, GLM 5.3, Qwen 3.8, DeepSeek V4 Flash Vision Experimental, and Nemotron 3.5 Lightning support across the provider catalogs and runtime policies that ship on extended stable. Fable 5.1 remains deferred because its prefix-bound reasoning contract requires the newer append-only replay lifecycle.
- **GPT-5.6 compatibility:** retain and verify the complete GPT-5.6 Sol, Terra, and Luna family across direct OpenAI and Codex OAuth routing, reasoning controls, pricing, context, and vision metadata.
### Fixes
- **Installer recovery:** preserve the original npm recovery diagnostics when an install repair attempt also fails, so operators see the actionable package-manager error instead of a secondary cleanup failure.
### Complete contribution record
This extended-stable candidate was selected from a complete 11,198-commit audit after `v2026.7.33`. It adapts the approved provider and installer slices to the 7.33 SDK and configuration surface without importing later architectural refactors.
### Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.7.35
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.7.35.tgz
- integrity: `sha512-2ZzpVrK4sOzKLRyS5S6rHjkXQS11FHe361FQSvUy8CBBG0TkzZUisBCmCZ0PLfK8Hpym2ZPHHpknZQaD4WONGQ==`
- release SHA: `aa94808cb05668cdf1c10bc8f034a8176deba483`
- full release validation: https://github.com/openclaw/openclaw/actions/runs/35574936025/attempts/2
- plugin npm publication: https://github.com/openclaw/openclaw/actions/runs/35595949221
- OpenClaw npm publication: https://github.com/openclaw/openclaw/actions/runs/35597355437 — npm accepted publication; the job failed only because bounded registry readback expired before propagation completed.
- Docker publication recovery: https://github.com/openclaw/openclaw/actions/runs/35598889849
- Manual finalization: owner-approved after independent verification of npm signatures and provenance, the `extended-stable` selector, all 70 plugin readbacks, Docker digests and attestations, and npm/OCM/Gateway/container smoke tests.