### 亮点
- Agent 和 Codex 运行时恢复更加稳定:子代理保持 cwd/工作空间分离,钩子上下文保持提示词本地化,会话锁在超时中止时释放,而活动的 OpenClaw 锁在清理后仍存在,避免了过期的重启延续,且 Codex 应用服务器/辅助程序故障不再破坏共享运行时状态。(#87218, #86875, #87409, #87399, #87375, #88129)
- 频道投递和会话身份在出站插件钩子、Matrix 房间 ID、iMessage 反应/批准、Slack 最终回复、Discord 恢复工具警告、运行时配置消息操作、WhatsApp 配置文件认证根、Telegram 轮询以及 Microsoft Teams 服务 URL 信任检查中变得更加安全。(#73706, #75670, #87366, #87451, #87334, #84535, #82492, #83304, #87160)
- 移动端和聊天界面得到了更广泛的更新:iOS Pro 界面、托管推送中继默认设置、实时 Talk 选项卡播放、Gateway 聊天传输、入门引导、Talk 权限、WebChat 重连投递以及会话选择器行为现在在重连和空搜索中保留更多状态。(#87367, #87531, #87682, #88096, #88105)感谢 @ngutman 和 @BunsDev。
- 浏览器、频道和自动化输入更加严格:浏览器工具超时、视口/标签索引、Gateway 端口、cron 重试处理、Discord 组件 ID、模式数组引用、Telegram 回调页面以及频道进度回调现在更早地拒绝格式错误的值,并保留预期的投递上下文。(#82887)
- 提供商、媒体和文档覆盖范围扩大,新增 Claude Opus 4.8、Fal Krea 图像模式、NVIDIA 特色模型、MiniMax 流式音乐响应、加密 PDF 提取、语音模型目录、GitHub Copilot 代理运行时支持,以及 Codex Supervisor 插件路径用于委托的 Codex 工作流。(#87845, #87890, #80775, #84764, #87751, #87794)
- CLI、认证、诊断和提供商路径更快失败并更清晰地恢复:拒绝格式错误的数字/版本选项,忽略工作区 dotenv 提供商凭据,心跳默认值、OAuth/令牌生命周期和本地服务启动请求受限,代理认证健康标签更清晰,旧版 `api_key` 认证配置文件迁移到规范形式,重启指导可操作。(#87398, #86281, #87361, #88133, #83655, #87559, #88088, #85924)感谢 @vincentkoc 和 @giodl73-repo。
- 插件和 Gateway 热路径减少重复工作,同时保持缓存正确性,涉及安装记录、配置 JSON 解析、工具搜索目录、会话存储、清单模型行、自动启用插件配置、浏览器令牌、查看器资产以及发布拆分的外部插件包。(#86699)
- 发布、质量保证和端到端验证现在对更多日志、工件、工作台和跨操作系统等待进行限制,使失败的任务生成证据而不是挂起或虚假通过。
### 变更
- 状态:在状态输出中显示活跃子代理的详细信息。
- Diffs:拆分默认语言包并扩展默认 Diffs 语言覆盖范围,同时保持主机基础对齐。(#87370, #87372)感谢 @RomneyDa。
- ClawHub:添加插件显示名称以及技能验证和信任界面。(#87354, #86699)感谢 @thewilloftheshadow 和 @Patrick-Erichsen。
- iOS:刷新开发应用,新增 Pro Command、Chat、Agents、Settings、托管推送中继默认值,以及实时 Talk 播放连接到网关会话、诊断、聊天和实时 Talk。(#87367, #88096, #88105)感谢 @Solvely-Colin 和 @ngutman。
- 文档:澄清 Codex 计算机使用设置、粘贴令牌 stdin 认证设置、macOS Gateway 睡眠故障排除、原生 Codex 钩子中继恢复、容器模型认证、安装部署卡片、设备令牌管理门控、CLI 设置流程兼容性、Notte 云浏览器 CDP 设置以及反向移植目标。(#87313, #63050, #87685)感谢 @bdjben、@liaoandi 和 @thewilloftheshadow。
- PDF/工具:使用 ClawPDF 进行 PDF 提取,支持加密 PDF 提取,并在代理工具结果中展示 MCP 结构化内容。(#87670, #87751)
- 提供商:新增 Claude Opus 4.8 支持、Fal Krea 图像模型架构、NVIDIA 特色模型目录、MiniMax 流式音乐响应以及提供商支持的语音模型目录。(#87845, #87890, #80775, #84764, #87794)感谢 @eleqtrizit 和 @vincentkoc。
- Codex/GitHub:添加 GitHub Copilot 代理运行时和 Codex Supervisor 插件包。
- 插件:将 GitHub Copilot 和 Tokenjuice 外部化为官方按需安装插件,并附带 npm 和 ClawHub 发布元数据。
- 工作面板:添加代理协调工具,用于跟踪和交接活跃的代理工作。
- Discord:在进度草稿中显示注释,使实时 Discord 运行暴露有用的进行中上下文。(#85200)
- 插件 SDK:为需要投递频道拥有回复的插件添加回复负载发送钩子,并展平 SDK 声明的包类型。(#82823, #87165)感谢 @piersonr 和 @RomneyDa。
- 策略:添加策略比较、入站通道一致性以及沙箱姿态一致性检查。(#85572, #85744, #86768)
### 修复
- Agents:当可选的 `agents delete` Gateway 探测无法认证时,回退到本地配置修剪,以便离线安装仍可删除代理而不删除共享工作空间。
- 收紧手机控制变更授权 [AI]。(#87150)感谢 @pgondhi987。
- 澄清指令持久化授权策略 [AI]。(#86369)感谢 @pgondhi987。
- Agents/Codex:保持生成的代理 cwd/工作空间状态分离,转发 ACP 生成附件,保持钩子上下文提示词本地化,在超时中止和运行时拆除时释放会话锁而不删除活动 OpenClaw 拥有的锁,避免会话事件队列自等待,清理执行中止监听器,增量流式传输助手增量,恢复原始缺失线程压缩失败,保留轮转压缩会话身份,保持压缩超时快照可继续,在启动或辅助程序故障时保留共享应用服务器状态,在重启后保持原生钩子中继存活并清理过期的桥接文件,关闭原生钩子中继替换竞争,使 Claude 实时工具进度对看门狗恢复可见,抑制被放弃的请求者完成交接,通过工具路由工作空间内存,首先解析 Codex 运行时模型,报告隔离的动态工具,格式化 `skills` 命令输出,将节点自动审查绑定到准备好的计划,重试 Claude CLI 转录探测,并限制压缩/转向重试。(#87218, #86875, #86123, #88129, #87399, #87375, #72574, #87383, #87400, #83022, #87671, #87738, #87747, #87706, #87546, #87541, #81048)感谢 @mbelinky、@Alix-007、@luoyanglang、@yetval、@sjf、@joshavant、@benjamin1492、@c19354837、@fuller-stack-dev、@pfrederiksen 和 @dodge1218。
- Codex Supervisor:在加载状态路径上保持真实主目录应用服务器 MCP 会话列表,限制存储历史扫描,并干净地关闭 WebSocket 探测。
- 频道:将规范会话密钥线程化到出站钩子,保留 Matrix 房间 ID 大小写,保持回退工具警告免于提及,在延迟清理期间保留已投递的 Slack 最终回复,在拒绝反应后继续 iMessage 轮询,抑制重复的原生执行批准,针对活动运行时配置解析 Gateway 消息操作,保留 Telegram SecretRef 提示配置和轮询保持活动,保留 WhatsApp 配置文件认证根、QR 显示、文档文件名和插件钩子配置,抑制 Discord 恢复工具警告,保留 Discord 语音出站助手,限制 Discord/Signal/Zalo 频道请求和容器超时,并阻止不受信任的 Teams 服务 URL,同时保持 TeamsSDK 模式对齐。(#73706, #75670, #87366, #87451, #87465, #87334, #84535, #76262, #83304, #82492, #87581, #77114, #86426, #85529, #87160)感谢 @zeroaltitude、@lukeboyett、@jarvis-mns1、@xiaotian、@funmerlin、@joshavant、@eleqtrizit、@heyitsaamir、@amittell、@lidge-jun、@liorb-mountapps、@masatohoshino、@bladin 和 @giodl73-repo。
- CLI/认证/诊断/提供商:拒绝格式错误的数字/超时/子命令版本输入,忽略工作区 dotenv 提供商凭据,等待子进程重启关闭,限制心跳默认值以及 Codex、GitHub Copilot、OpenAI、Anthropic、Google、飞书、LM Studio、MiniMax、小米 TTS 和本地提供商的 OAuth/令牌/模型请求,强化 Codex 认证探测,按代理标记认证健康,在 Codex 模型迁移期间保留显式的 agentRuntime 引脚,在主线程外预热提供商认证,遵循 Codex 响应超时,停止将当前 Claude Haiku 4.5 配置文件迁移到 Sonnet,限制本地服务启动,解析 GPT-5.5 而不使用缓存目录,迁移旧版内存自动提供商配置,重写非规范 `api_key` 认证配置文件,并使诊断重启后续操作可操作。(#87398, #86281, #87361, #88133, #83655, #87559, #87719, #88088, #85924, #84362)感谢 @Patrick-Erichsen、@samzong、@giodl73-repo、@alkor2000、@mmaps、@nxmxbbd 和 @vincentkoc。
- Gateway/安全/会话状态:在认证轮转后使浏览器令牌过期,限定助手幂等去重范围,排空探测客户端关闭,避免重用过期的重启延续,保留重试后回退和过期速率限制冷却探测,限制 webchat 图像和工件转录扫描,在入站元数据时间戳中包含秒数,清除完成的会话活动运行,清除过期的聊天流缓冲区,并在行上限时驱逐当前插件状态命名空间。(#87810, #87833, #75089)感谢 @joshavant 和 @litang9。
- 配置/解析/网络:拒绝部分数字解析,严格解析提供商/Discord 重试头和日期,支持 IPv6 和裸 IPv6 `no_proxy` 条目,保留空插件允许列表,规范化秘密目标数组索引,并拒绝格式错误的内容长度、检查过的 TCP 端口、市场内容长度、cron 纪元、沙箱状态字段、不安全的持续时间值、空配置路径段、非规范模式数组引用、不安全的 Telegram 回调页面以及无效的 Teams 附件获取 DNS 目标。(#87883)感谢 @zhangguiping-xydt。
- 浏览器/输入强化:拒绝无效的标签索引、过大的视口调整、显式零 CDP 端口、格式错误的地理位置选项、不安全的截图或权限授予超时、宽松的响应体限制、无效的 Cookie 过期以及非有限的浏览器工具延迟/超时。
- Cron/自动化:在临时模型速率限制后重试定期作业,然后等待下一个预定时段,并在跳过预定工作前预检模型回退。(#82887)感谢 @chen-zhang-cs-code。
- 自动回复/指令:在指令持久化期间尊重提供商和中继频道元数据,以便频道起源的决策保持其预期上下文。(#87683)
- WhatsApp:从活动配置文件解析认证目录,以便配置文件范围的 WhatsApp 安装不会漂移到错误的凭据根目录。(#82492)感谢 @lidge-jun。
- Gateway/会话状态:清除完成的会话活动运行,避免为 MCP 清单冷加载提供商,缓存单会话子索引,限制握手定时器,并限定预认证、认证守卫、媒体、转录、就绪状态和端口选项。
- 频道/回复:在详细输出关闭时保留频道拥有的进度回调,保持群组房间进度抑制不变,优先使用外部会话投递上下文,转义 Discord 组件 ID 分隔符,强制最终 TUI 聊天重绘,显示 Slack 推理预览,并规范化 Discord/Matrix/Mattermost 频道数值选项。(#87476, #87423)
- Agents/工具参数:强化智能引号参数修复,用于编辑数组和精确转义参数,以便模型产生的工具调用在不破坏有效输入的情况下恢复。(#86611)感谢 @ferminquant。
- 提供商/代理:保留种子 Anthropic 签名,保留签名思考负载,连接签名增量块,在层级后缀间保留 DeepSeek `reasoning_content` 重放,将 OpenRouter strict9 ID 应用于 Mistral 路由,提升 Ollama 纯文本工具调用,加载 NVIDIA 特色模型目录,流式传输 MiniMax 音乐生成响应,并恢复空预检压缩。(#87593, #87493, #80775, #84764)感谢 @Pluviobyte 和 @eleqtrizit。
- 媒体/图像:在解析生成图像时跳过 CLI 图像缓存引用,允许受信任的生成 HTML 附件,并限制生成视频下载,以便过期引用和慢速提供商干净地失败。(#87523, #87982)
- 文件传输:处理延迟的 tar 标准输入管道错误,当归档验证或解包已完成后。
- 性能:在重载之间信任安装记录缓存,优先使用原生 JSON 解析,重用未更改的工具搜索目录,重用网关会话和插件元数据路径,跳过未更改的存储序列化,修补单条目会话写入,添加预计算会话补丁写入器,减少存储克隆分配,缓存清单模型目录行和自动启用插件配置,避免为条目读取进行完整会话快照,推迟配置的 Slack 完整启动,优先使用捆绑的插件分发条目,并精简当前元数据身份缓存。(#87760)
- Docker/发布/质量保证:打包运行时工作空间模板,流式传输跨操作系统服务工件,保留稀疏 Crabbox 运行工件,按包隔离 npm 插件安装,拒绝不兼容的包插件 API 安装,在 Rastermill 迁移后从包清单中删除遗留的根 Sharp 依赖,限制 OpenClaw 实例日志、插件挑战中继日志、MCP 通道缓冲区、厨房水槽扫描、代理回合断言、QA-Lab 凭据代理调用、QA Matrix 基板请求和发布场景日志,并保持发布/Google 活动守卫最新。(#87647, #87477)感谢 @rohitjavvadi 和 @vincentkoc。
- 发布/CI:限制手动 git 获取、ClawHub 验证器响应、ClawHub 所有者元数据、依赖守卫错误体、Parallels 限制、启动/测试/内存预算解析以及 diffs 查看器构建警告,以便发布任务生成有用证据而不是挂起。(#87839)
## 发布验证
- npm 包:https://www.npmjs.com/package/openclaw/v/2026.5.28
- 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.5.28.tgz
- 完整性校验:`sha512-p7jGN9wzCrqEvHNI6Y7+eh6DWoYDzJ1iQGKTm8xqQ2uQ9/2mY1CCf87WoZeb0+m3eHKSGchlI3tN33fE1lMtEA==`
- npm 预检:https://github.com/openclaw/openclaw/actions/runs/26692293231
- 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/26692292739
- 发布检查:https://github.com/openclaw/openclaw/actions/runs/26692419552
- npm Telegram 包端到端测试:https://github.com/openclaw/openclaw/actions/runs/26692496669
- 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/26693306143
- 插件 ClawHub 发布:https://github.com/openclaw/openclaw/actions/runs/26693807853
- OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/26693561375
- macOS 预检/签名/公证:https://github.com/openclaw/releases/actions/runs/26694473893
- macOS 验证:https://github.com/openclaw/releases/actions/runs/26695381614
- macOS 发布/应用广播:https://github.com/openclaw/releases/actions/runs/26695523506
- 应用广播:https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
- macOS zip:https://github.com/openclaw/openclaw/releases/download/v2026.5.28/OpenClaw-2026.5.28.zip
- macOS dmg:https://github.com/openclaw/openclaw/releases/download/v2026.5.28/OpenClaw-2026.5.28.dmg
- macOS dSYM:https://github.com/openclaw/openclaw/releases/download/v2026.5.28/OpenClaw-2026.5.28.dSYM.zip
### Highlights
- Agent and Codex runtime recovery is steadier: subagents keep cwd/workspace separation, hook context stays prompt-local, session locks release on timeout abort while live OpenClaw locks survive cleanup, stale restart continuations are avoided, and Codex app-server/helper failures no longer tear down shared runtime state. (#87218, #86875, #87409, #87399, #87375, #88129)
- Channel delivery and session identity got safer across outbound plugin hooks, Matrix room ids, iMessage reactions/approvals, Slack final replies, Discord recovered tool warnings, runtime-config message actions, WhatsApp profile auth roots, Telegram polling, and Microsoft Teams service URL trust checks. (#73706, #75670, #87366, #87451, #87334, #84535, #82492, #83304, #87160)
- Mobile and chat surfaces got a broader refresh: the iOS Pro UI, hosted push relay default, realtime Talk tab playback, Gateway chat transport, onboarding, Talk permissions, WebChat reconnect delivery, and session picker behavior now preserve more state across reconnects and empty searches. (#87367, #87531, #87682, #88096, #88105) Thanks @ngutman and @BunsDev.
- Browser, channel, and automation inputs are stricter: Browser tool timeouts, viewport/tab indices, Gateway ports, cron retry handling, Discord component ids, schema array refs, Telegram callback pages, and channel progress callbacks now reject malformed values earlier and preserve the intended delivery context. (#82887)
- Provider, media, and document coverage expands with Claude Opus 4.8, Fal Krea image schemas, NVIDIA featured models, MiniMax streaming music responses, encrypted PDF extraction, voice model catalogs, GitHub Copilot agent runtime support, and a Codex Supervisor plugin path for delegated Codex workflows. (#87845, #87890, #80775, #84764, #87751, #87794)
- CLI, auth, doctor, and provider paths fail faster and recover more clearly: malformed numeric/version options are rejected, workspace dotenv provider credentials are ignored, heartbeat defaults, OAuth/token lifetimes, and local service startup requests are bounded, agent auth health labels are clearer, legacy `api_key` auth profiles migrate to canonical form, and restart guidance is actionable. (#87398, #86281, #87361, #88133, #83655, #87559, #88088, #85924) Thanks @vincentkoc and @giodl73-repo.
- Plugin and Gateway hot paths do less repeated work while preserving cache correctness for install records, config JSON parsing, tool search catalogs, session stores, manifest model rows, auto-enabled plugin config, browser tokens, viewer assets, and release-split external plugin packages. (#86699)
- Release, QA, and E2E validation now bound more log, artifact, harness, and cross-OS waits so failing lanes produce proof instead of hanging or false-greening.
### Changes
- Status: show active subagent details in status output.
- Diffs: split the default language pack and expand default Diffs language coverage while keeping the host floor aligned. (#87370, #87372) Thanks @RomneyDa.
- ClawHub: add plugin display names plus skill verification and trust surfaces. (#87354, #86699) Thanks @thewilloftheshadow and @Patrick-Erichsen.
- iOS: refresh the dev app with Pro Command, Chat, Agents, Settings, hosted push relay defaults, and realtime Talk playback wired to gateway sessions, diagnostics, chat, and realtime Talk. (#87367, #88096, #88105) Thanks @Solvely-Colin and @ngutman.
- Docs: clarify Codex computer-use setup, paste-token stdin auth setup, macOS gateway sleep troubleshooting, native Codex hook relay recovery, container model auth, install deployment cards, device-token admin gating, CLI setup flow compatibility, Notte cloud browser CDP setup, and backport targets. (#87313, #63050, #87685) Thanks @bdjben, @liaoandi, and @thewilloftheshadow.
- PDF/tools: use ClawPDF for PDF extraction, support encrypted PDF extraction, and surface MCP structured content in agent tool results. (#87670, #87751)
- Providers: add Claude Opus 4.8 support, Fal Krea image model schemas, NVIDIA featured model catalogs, MiniMax streaming music responses, and provider-backed voice model catalogs. (#87845, #87890, #80775, #84764, #87794) Thanks @eleqtrizit and @vincentkoc.
- Codex/GitHub: add the GitHub Copilot agent runtime and the Codex Supervisor plugin package.
- Plugins: externalize GitHub Copilot and Tokenjuice as official install-on-demand plugins with npm and ClawHub publish metadata.
- Workboard: add agent coordination tools for tracking and handing off active agent work.
- Discord: show commentary in progress drafts so live Discord runs expose useful in-progress context. (#85200)
- Plugin SDK: add a reply payload sending hook for plugins that need to deliver channel-owned replies and flatten package types for SDK declarations. (#82823, #87165) Thanks @piersonr and @RomneyDa.
- Policy: add policy comparison, ingress-channel conformance, and sandbox-posture conformance checks. (#85572, #85744, #86768)
### Fixes
- Agents: fall back to local config pruning when the optional `agents delete` Gateway probe cannot authenticate, so offline installs can still delete agents without removing shared workspaces.
- Tighten phone-control mutation authorization [AI]. (#87150) Thanks @pgondhi987.
- Clarify directive persistence authorization policy [AI]. (#86369) Thanks @pgondhi987.
- Agents/Codex: keep spawned agent cwd/workspace state separated, forward ACP spawn attachments, keep hook context prompt-local, release session locks on timeout abort and runtime teardown without deleting live OpenClaw-owned locks during cleanup, avoid session event queue self-wait, clean up exec abort listeners, stream assistant deltas incrementally, recover raw missing-thread compaction failures, preserve rotated compaction session identity, keep compaction-timeout snapshots continuable, preserve shared app-server state across startup or helper failures, keep native hook relay alive across restarts and prune stale bridge files, close native hook relay replacement races, keep Claude live tool progress visible for watchdog recovery, suppress abandoned requester completion handoff, route workspace memory through tools, resolve Codex runtime models first, report quarantined dynamic tools, format `skills` command output, bind node auto-review to prepared plans, retry Claude CLI transcript probes, and bound compaction/steering retries. (#87218, #86875, #86123, #88129, #87399, #87375, #72574, #87383, #87400, #83022, #87671, #87738, #87747, #87706, #87546, #87541, #81048) Thanks @mbelinky, @Alix-007, @luoyanglang, @yetval, @sjf, @joshavant, @benjamin1492, @c19354837, @fuller-stack-dev, @pfrederiksen, and @dodge1218.
- Codex Supervisor: keep real-home app-server MCP session listing on the loaded state path, bound stored history scans, and close WebSocket probes cleanly.
- Channels: thread canonical session keys into outbound hooks, preserve Matrix room-id case, keep fallback tool warnings mention-inert, retain delivered Slack final replies during late cleanup, continue iMessage polling after denied reactions, suppress duplicate native exec approvals, resolve Gateway message actions against the active runtime config, preserve Telegram SecretRef prompt config and polling keepalives, preserve WhatsApp profile auth roots, QR display, document filenames, and plugin hook config, suppress Discord recovered tool warnings, preserve the Discord voice outbound helper, cap Discord/Signal/Zalo channel request and container timeouts, and block untrusted Teams service URLs while keeping TeamsSDK patterns aligned. (#73706, #75670, #87366, #87451, #87465, #87334, #84535, #76262, #83304, #82492, #87581, #77114, #86426, #85529, #87160) Thanks @zeroaltitude, @lukeboyett, @jarvis-mns1, @xiaotian, @funmerlin, @joshavant, @eleqtrizit, @heyitsaamir, @amittell, @lidge-jun, @liorb-mountapps, @masatohoshino, @bladin, and @giodl73-repo.
- CLI/auth/doctor/providers: reject malformed numeric/timeout/subcommand-version inputs, ignore workspace dotenv provider credentials, wait for respawn child shutdown, bound heartbeat defaults plus Codex, GitHub Copilot, OpenAI, Anthropic, Google, Feishu, LM Studio, MiniMax, Xiaomi TTS, and local-provider OAuth/token/model requests, harden Codex auth probes, label auth health by agent, preserve explicit agentRuntime pins during Codex model migration, warm provider auth off the main thread, honor Codex response timeouts, stop migrating current Claude Haiku 4.5 profiles to Sonnet, bound local service startup, resolve GPT-5.5 without cached catalog, migrate legacy memory auto-provider config, rewrite non-canonical `api_key` auth profiles, and make doctor restart follow-ups actionable. (#87398, #86281, #87361, #88133, #83655, #87559, #87719, #88088, #85924, #84362) Thanks @Patrick-Erichsen, @samzong, @giodl73-repo, @alkor2000, @mmaps, @nxmxbbd, and @vincentkoc.
- Gateway/security/session state: expire browser tokens after auth rotation, scope assistant idempotency dedupe, drain probe client closes, avoid stale restart continuation reuse, preserve retry-after fallbacks and stale rate-limit cooldown probes, bound webchat image and artifact transcript scans, include seconds in inbound metadata timestamps, clear completed session active runs, clear stale chat stream buffers, and evict current plugin-state namespaces at row caps. (#87810, #87833, #75089) Thanks @joshavant and @litang9.
- Config/parsing/network: reject partial numeric parsing, parse provider/Discord retry headers and dates strictly, honor IPv6 and bare IPv6 `no_proxy` entries, preserve empty plugin allowlists, canonicalize secret target array indexes, and reject malformed media content lengths, inspected TCP ports, marketplace content lengths, cron epochs, sandbox stat fields, unsafe duration values, empty config path segments, noncanonical schema array refs, unsafe Telegram callback pages, and invalid Teams attachment-fetch DNS targets. (#87883) Thanks @zhangguiping-xydt.
- Browser/input hardening: reject invalid tab indexes, excessive viewport resizes, explicit zero CDP ports, malformed geolocation options, unsafe screenshot or permission-grant timeouts, loose response-body limits, invalid cookie expiries, and non-finite Browser tool delays/timeouts.
- Cron/automation: retry recurring jobs after transient model rate limits before waiting for the next scheduled slot, and preflight model fallbacks before skipping scheduled work. (#82887) Thanks @chen-zhang-cs-code.
- Auto-reply/directives: respect provider and relayed channel metadata during directive persistence so channel-originated decisions keep their intended context. (#87683)
- WhatsApp: resolve the auth directory from the active profile so profile-scoped WhatsApp installs do not drift to the wrong credential root. (#82492) Thanks @lidge-jun.
- Gateway/session state: clear completed session active runs, avoid cold-loading providers for MCP inventory, cache single-session child indexes, cap handshake timers, and bound preauth, auth-guard, media, transcript, readiness, and port options.
- Channels/replies: preserve channel-owned progress callbacks when verbose output is off, keep group-room progress suppression intact, prefer external session delivery context, escape Discord component id delimiters, force final TUI chat repaints, show Slack reasoning previews, and normalize Discord/Matrix/Mattermost channel numeric options. (#87476, #87423)
- Agents/tool args: harden smart-quoted argument repair for edit arrays and exact escaped arguments so model-produced tool calls recover without corrupting valid input. (#86611) Thanks @ferminquant.
- Providers/agents: preserve seeded Anthropic signatures, preserve signed thinking payloads, concatenate signature-delta chunks, preserve DeepSeek `reasoning_content` replay across tier suffixes, apply OpenRouter strict9 ids to Mistral routes, promote Ollama plain-text tool calls, load NVIDIA featured model catalogs, stream MiniMax music generation responses, and recover empty preflight compaction. (#87593, #87493, #80775, #84764) Thanks @Pluviobyte and @eleqtrizit.
- Media/images: skip CLI image cache refs when resolving generated images, allow trusted generated HTML attachments, and bound generated video downloads so stale refs and slow providers fail cleanly. (#87523, #87982)
- File transfer: handle late tar stdin pipe errors after archive validation or unpacking has already settled.
- Performance: trust install-record caches between reloads, prefer native JSON parsing, reuse unchanged tool-search catalogs, reuse gateway session and plugin metadata paths, skip unchanged store serialization, patch single-entry session writes, add precomputed session patch writers, reduce store clone allocations, cache manifest model catalog rows and auto-enabled plugin config, avoid full session snapshots for entry reads, defer configured Slack full startup, prefer bundled plugin dist entries, and slim current metadata identity caches. (#87760)
- Docker/release/QA: package runtime workspace templates, stream cross-OS served artifacts, preserve sparse Crabbox run artifacts, isolate npm plugin installs per package, reject incompatible package plugin API installs, drop the leftover root Sharp dependency from package manifests after the Rastermill migration, bound OpenClaw instance logs, plugin gauntlet relay logs, MCP channel buffers, kitchen-sink scans, agent-turn assertions, QA-Lab credential broker calls, QA Matrix substrate requests, and release scenario logs, and keep release/google live guards current. (#87647, #87477) Thanks @rohitjavvadi and @vincentkoc.
- Release/CI: bound manual git fetches, ClawHub verifier responses, ClawHub owner metadata, dependency-guard error bodies, Parallels limits, startup/test/memory budget parsing, and diffs viewer build warnings so release lanes fail with useful proof instead of hanging. (#87839)
## Release verification
- npm package: https://www.npmjs.com/package/openclaw/v/2026.5.28
- registry tarball: https://registry.npmjs.org/openclaw/-/openclaw-2026.5.28.tgz
- integrity: `sha512-p7jGN9wzCrqEvHNI6Y7+eh6DWoYDzJ1iQGKTm8xqQ2uQ9/2mY1CCf87WoZeb0+m3eHKSGchlI3tN33fE1lMtEA==`
- npm preflight: https://github.com/openclaw/openclaw/actions/runs/26692293231
- full release validation: https://github.com/openclaw/openclaw/actions/runs/26692292739
- release checks: https://github.com/openclaw/openclaw/actions/runs/26692419552
- npm Telegram package E2E: https://github.com/openclaw/openclaw/actions/runs/26692496669
- plugin npm publish: https://github.com/openclaw/openclaw/actions/runs/26693306143
- plugin ClawHub publish: https://github.com/openclaw/openclaw/actions/runs/26693807853
- OpenClaw npm publish: https://github.com/openclaw/openclaw/actions/runs/26693561375
- macOS preflight/sign/notarize: https://github.com/openclaw/releases/actions/runs/26694473893
- macOS validation: https://github.com/openclaw/releases/actions/runs/26695381614
- macOS publish/appcast: https://github.com/openclaw/releases/actions/runs/26695523506
- appcast: https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
- macOS zip: https://github.com/openclaw/openclaw/releases/download/v2026.5.28/OpenClaw-2026.5.28.zip
- macOS dmg: https://github.com/openclaw/openclaw/releases/download/v2026.5.28/OpenClaw-2026.5.28.dmg
- macOS dSYM: https://github.com/openclaw/openclaw/releases/download/v2026.5.28/OpenClaw-2026.5.28.dSYM.zip