OpenClaw v2026.5.12-beta.7 发布摘要
OpenClaw v2026.5.12-beta.7 发布摘要
关键变更
核心基础设施与安全
- 安全加固: 实施了更严格的 Windows 沙箱绑定验证,以阻止携带凭据的根目录(例如
.ssh、.codex),即使在HOME被重定向的情况下也是如此。此外,沙箱浏览器 CDP relay 现在需要应用层凭据,取代了之前对网络源过滤的依赖。 - 设备配对与身份验证: 通过要求对设置代码设备配对和浏览器源 Control UI 会话进行显式批准,增强了配对过程。受信任代理身份验证现在会拒绝来自主机本地非回环接口的对等端,以防止通过网关主机自身的地址进行未经授权的访问。
- 配置管理: 集中化配置文件的变更,以防止并发写入期间的数据丢失。新的预更新快照机制现在可以保护
openclaw.json不在版本升级期间被抹除,特别修复了doctor --fix会在迁移前剥离未知键的问题。 - 构建系统: 将工作区升级到 pnpm 11,使 Docker、安装和更新工作流与新的包管理器界面保持一致。
Agent 与运行时增强
- Codex Harness: 通过将原生子 Agent 生命周期事件镜像到 Task Registry 中,改进了 Codex app-server,并轮换不兼容的 context-engine 线程,以防止陈旧的历史记录导致 context-window 溢出。Codex cron turns 现在直接执行自动化负载,跳过不必要的 workspace bootstrap 读取,以避免超时。
- ACP (Agent Client Protocol): 为
UNAVAILABLE错误添加了后端提供商故障转移,允许 ACP turns 尝试配置的备份后端。ACP bridge 现在在_meta字段中公开了会话线性关系元数据(例如parentSessionId、spawnDepth),以便进行更好的客户端侧会话图谱分析。 - 工具与执行: 通过
toolsBySender引入了按发送者划分的工具能力层级,允许操作员在模式(schema)级别为特定用户限制危险工具(如exec)。系统现在还通过添加宽容的items: {}来规范化数组工具模式,以防止 OpenAI-compatible providers 拒绝工具提交。
通道与集成更新
- Telegram: 通过将入口(ingress)移至带有持久化本地暂存区的隔离 worker,显著提高了轮询(polling)的弹性,确保在主事件循环停滞时消息不会丢失。增加了对本地化命令菜单描述的支持,并修复了一个关键 bug,即 bot token 轮换导致轮询器因陈旧的 offset 而静默地丢弃新消息。
- Slack: 为线程回复添加了
replyBroadcast支持,并改进了对私有文件重定向标头的处理,以防止媒体下载失败。 - iMessage: 修复了一个媒体仅发送包含可见
<media:image>占位符文本的 bug,并改进了对粘贴链接的处理,通过忽略 Apple 的内部预览 blob。 - WhatsApp: 将 WhatsApp 通道外部化为 ClawHub/npm 插件,以减少核心运行时依赖并更新了底层的 Baileys 库。
UI 与诊断
- Control UI: 为 WebChat 添加了持久化的自动滚动模式选择器,并在会话选择器中将嵌套的子 Agent 会话在视觉上嵌套在其父级会话下。新增的
/context map命令提供了一个 WinDirStat 风格的会话上下文贡献者树状图图像。 - Diagnostics: 引入了
startupGraceMs窗口,以在冷启动期间抑制虚假的存活状态警告,同时仍为基准分析进行采样指标。
影响
本次发布主要影响运行高并发 Agent 的操作员,或使用 Codex 和 ACP 运行时的用户。转向 Telegram 轮询的隔离 worker 模式可以防止在事件循环饱和时发生灾难性的消息丢失。对于注重安全性的部署,加固的沙箱和配对要求将使系统向设备和浏览器访问的“故障关闭(fail-closed)”安全模型迈进。
对于插件开发者,扩展后的 SDK 现在支持类型化的会话动作、主机介导的附件以及计划的会话 turns,从而能够在不需要内部 runner 访问权限的情况下实现更复杂的异步工作流。
升级指南
Breaking Changes & 迁移
- iMessage 发送者允许列表: 发送者允许列表匹配现在严格要求规范化的发送者句柄(handles)。对话范围的 ID(chat IDs/GUIDs)不再被接受作为发送者身份的证明。用户必须更新其
allowFrom配置以使用发送者句柄。 - Trusted Proxy 配置: 在
gateway.trustedProxies中列出网关主机自身的非回环接口地址的部署,将会发现这些请求被拒绝。请使用一个不同的代理对等端地址或回环接口受信任代理路径。 - Plugin 安装: 如果安装的依赖运行时文件包含关键代码模式,某些插件安装现在可能会被内置扫描器拦截。如有必要,请使用
--force或受信任安装标志来覆盖这些拦截。
Sources
- Releasev2026.5.12-beta.7 — openclaw 2026.5.12-beta.7
- PRfix(security): classify dangerous Windows sandbox binds first
- PRfeat(acp): add backend provider failover for UNAVAILABLE errors
- PRfix(security): add session transcript redaction guards at bare appendMessage call sites
- PRfix(config): serialize concurrent config mutations
- PRfix(imessage): keep pasted links, ignore Apple preview blobs
- PRfix(sessions): classify spawn-child sessions correctly; extract shared classifier
- PRfix(sessions): report ACP-runtime metadata for ACP-keyed sessions
- PRfix(security): inline redact into appendSessionTranscriptMessage
- PRfix: prevent config data loss during version upgrade
- PR[AI-assisted] fix(channel): refresh WeCom onboarding install
- PR[security] redact persisted tool result details
- PRfix(agents): escalate LLM idle timeout to model fallback after profile rotation
- PRfix(telegram): detect same-bot token rotation via fingerprinted offset state
- PR[Fix] Add incremental chat delta payloads
- PRGate node surfaces on pairing approval
- PRfix(acp): drop unsupported timeout config option for claude-agent-acp
- PRRestrict chat sender allowlist matching [AI]
- PRfix(anthropic): enable Claude CLI session-expired history reseed
- PRInherit tool restrictions for delegated sessions [AI]
- PRfix: scan plugin runtime entries during install [AI]
- PRfix: detect carried exec command forms [AI]
- PRReject truncated exec approval commands [AI]
- PRRequire auth for sandbox browser CDP relay [AI]
- PRLimit hook CLI tool authority [AI]
- PRfix(plugins): scan installed dependency runtime code [AI]
- PRRequire admin scope for node device token management [AI]
- PRbrowser: enforce navigation checks for act interactions [AI]
- PRValidate node exec event provenance [AI]
- PR[AI-assisted] fix(docker): pin setup-time container paths
- PRfix(imessage): avoid visible media placeholder text
- PR[AI-assisted] fix(agents): normalize array tool schemas
- PRfix(codex): rotate incompatible context-engine threads
- PRfix(gateway): forward temperature and top_p through OpenAI-compatible HTTP APIs
- PRRequire Control UI pairing before proxy-scoped access [AI]
- PRRequire explicit browser device pairing [AI]
- PRHarden trusted-proxy source validation [AI]
- PRRequire approval for setup-code device pairing [AI]
- PRFix stale diagnostic lanes for reply runs
- PRfeat(telegram): localized command menu descriptions
- PRgateway: pass Talk session scope to resolver [AI]
- PR[Fix] Carry transcript update sequence
- PRfix: restore Codex cron automation compatibility
- PRfix: route plugin LLM completions through Codex runtime
- PR[AI-assisted] fix(plugins): discover setup provider env vars
- PRRoute Codex message tool replies back to WebChat and TUI
- PRfix(onboard): forward provider auth flags through wizard
- PRfix(gateway): suppress startup liveness warnings
- PRfix(migrate): drop trailing periods from migrate item messages
- PRfix(browser): request admin scope for CLI control
- PRFix Telegram polling ingress under event-loop stalls
- PRHandle generic provider internal errors
- PRfeat(session): raise maxPingPongTurns ceiling from 5 to 20 (#52382)
- PRfeat(slack): add replyBroadcast parameter for thread reply channel broadcast
- PRfix(exec): skip heartbeat wake for subagent sessions
- PRfeat(tools): per-sender tool capability tiers via toolsBySender
- PR[plugin sdk] Consolidate workflow seams and fixtures
- PR[Feat] expose session lineage metadata
- PR[Feat] Add upload archive install RPC
- PR[Feat] Add single-job cron get path
- PRfix(ui): prevent webchat sends into isolated heartbeat sessions
- PRdocs(subagents): document announce timeout
- PR[plugin sdk] Add session action gateway protocol
- PRControl UI/sessions: nest subagent sessions under parent with visual prefix
- PREnable realtime Talk instructions config
- PRfix(agents): preserve active exec references across compaction
- PRMake exec command highlighting optional
- PRbuild(pnpm): upgrade workspace to pnpm 11
- PRfix(agents): forward explicit per-run timeout to LLM idle watchdog
- PRMirror Codex native subagents into task registry
- PRAdd /context map treemap
- PRfix(runtime): detect Fly Machines as containers
- PRchore(pnpm): align pnpm 11 follow-up surfaces
- PRDocs: announce BlueBubbles to iMessage migration
- PREnforce gateway command scopes by caller context [AI]
- PRfix(qqbot): authorize approval button callbacks [AI]
- PRRecognize PowerShell -ec inline commands [AI]
- PRfix(node-pairing): replace changed pending requests [AI]
- PRfix(memory-wiki): require admin scope for ingest [AI]
- PREnforce Slack plugin approval button authorization [AI]
- PRValidate Control UI loopback retry endpoints [AI]
- PRHarden exported markdown link rendering [AI]
- PRfix(gateway): honor minimal discovery mode for wide-area DNS-SD [AI]
- PRmemory-wiki: require write scope for Obsidian search [AI]
- PRScrub streamable MCP redirect headers [AI]
- PRslack: enforce reaction notification policy [AI]
- PRfix(onboard): accept Codex auth in model check
- PRfix: surface silent model fallback failures
- PRfix: skip metadata for build-excluded bundled plugins
- PRfix(azure):Drain split provider stream frames
- PRRate limit Google Chat webhook requests [AI]
- PRfix(feishu): normalize webhook rate-limit client keys [AI]
- PRfix(auth): prevent bootstrap pairing scope changes [AI]
- PRfix(telegram): render supported HTML replies
- PREnforce inline shell wrapper payload matching [AI]
- PRPersist Docker auth profile key mount
- PRfix(telegram): fall back to root groups on empty account allowlist
- PRfix(commitments): write json output to stdout
- PRfix(whatsapp): drain debounced inbound before close
- PRAllow pnpm source updates to build OpenClaw
- PRfix(codex): keep post-tool watchdog armed
- PRfix(slack): forward agent identity to draft stream initial message
- PRfeat(imessage): add tapback reaction support as inbound agent events
- PRfeat(slack): add allowBots "mentions" mode (parity with Discord)
- PRfix(slack): fetch fresh download URL via files.info for DM file attachments
- PRfix(slack): add mrkdwn formatting hints to messageToolHints
- PRfix(skills): normalize backslashes in compacted skill paths on Windows
- PRfix(microsoft-foundry): replace unsafe non-null assertion in subscription lookup
- PRfix(gateway): resolve inflight deduplication race for send and poll
- PRfix(infra): keep retryAsync delays above server-supplied Retry-After
- PRfix(auto-reply): guard FOLLOWUP_QUEUES delete against late drain finally
- PRfix(gateway): clear nodeWakeById on no-registration early-return
- PRfix(feishu): accept nested schema 2 card identity
- PRfix(memory): preserve session corpus labels
- PRfix(agents): restore compaction gateway logs
- PRfix(memory-search): label session hits with sessions corpus
- PR[AI-assisted] fix(providers): use llama.cpp runtime context cap
- PRfix(memory-core): cap MEMORY.md size during dreaming promotions to pr…
- PRfix(bonjour): cap advertiser restarts in a sliding window (#74209)
- PRfix(doctor): don't flag the live compatibility agent dir as orphan
- PRfix(bonjour): avoid probing watchdog repair loops
- PRFix TUI exit after gateway disconnect
- PRfix(agents): use run workspace for post-compaction context
- PRfix(agents): recover read offsets beyond EOF
- PRfix(memory): skip cron warnings without gateway context
- PRfix(tasks): route group acp completions through parent
- PRfix(doctor): repair managed plugin openclaw peer links
- PRfix: preserve gateway install env sources
- PRfix(doctor): surface GH_CONFIG_DIR hint when gh auth lives at a different HOME
- PRfix(cron): mark active-jobs on manual-run path to suppress transient lost marker
- PRbuild: clean up Node.js 26 deprecation warnings
- PRfix(doctor): consolidate Gateway service config panels into a single note (#80287)
- PRRedact persisted secret-shaped payloads [AI]
- PRfix(matrix): gate name-based allowlist resolution [AI]
- PR[Fix] Scope session resolve store loads
- PRfix(yuanbao) support sourceReplyDeliveryMode: "automatic" for group chat
- PR[codex] Fix Codex app-server OAuth harness auth
- PRfix(codex): mark native tools active for diagnostics
- PRfix(browser): add pageReady to Chrome MCP existing-session status
- PR[Fix] Share streaming event envelopes
- PR[Fix] Block memory extra path symlink traversal
- PR[Fix] Cache selected channel registry lookups
- PRFix Telegram thinking status defaults
- PRExpose native tool completions to plugin hooks
- PRfix(telegram): honor force document for videos
- PR[codex] fix update v-prefixed version verify
- PRFix Telegram legacy message cache recovery
- PRfix: stabilize code-mode follow-up tool display and replay
- PRfix: honor configured media generation timeouts
- PRTelegram: keep topic context after reset boundary
- PRfix(matrix): default markdown tables to bullets across Matrix clients
- PRfix(slack): retain channel history when requireMention is false
- PRfix(doctor): case-insensitive safe-bin trusted dir matching on macOS/Windows
- PRCron: honor server_error retries
- PRfix(delivery): track and log silent delivery failures
- PRfix(slack): include API error details in log messages
- PRfix(agents): replace blank tool names with sentinel to prevent dispatch loops
- PRfeat(delivery): surface deliveryStatus in --json output
- PRfix(acpx): add windowsHide to MCP proxy spawn on Windows
- PRfix(gateway): restore runtime-postbuild sync in watch mode
- PRfix(gateway): reject malformed session kill paths
- PRfix(telegram): show full provider/model label for nested OpenRouter ids
- PRfix(infra): dedupe system events by (text, contextKey)
- PRfix(slack): respect dmScope when updating main session route for DMs
- PRfix(slack): honor configured ACP bindings
- PRfix(slack): make download-file fileId requirement self-evident to LLMs
- PRfix(moonshot): accept moonshotai/<model> as direct-API alias
- PRfix(slack): harden thread continuation gating
- PRfix(gateway): redact fast-path console logs
- PRfix(exec-approvals): lazy-load command explainer
- PRfix(whatsapp): downgrade recovered watchdog disconnects
- PRfix(feishu): keep group_topic message-tool replies inside the topic
- PRfix(browser): extend existing-session status probe
- PRfix(telegram): keep no-response DM turns quiet (no silent-reply rewrite)
- PR[Fix] Remove reverted plugin allow entries
- PRFix agent model override gateway scope
- PR[AI-assisted] fix(whatsapp): delta repeated tool preambles
- PRfix(whatsapp): pass routing ctx to transcribeFirstAudio so echoTranscript can deliver (#79778)
- PRfix: handle Telegram select callbacks safely
- PRfix(slack): wake interactive reply sessions
- PRfix(imessage): wire reply attachments through send-rich --file (with feature gate)
- PRtest: sandbox audit-exec-surface under HOME tempdir
- PRfix(onboard): custom provider context window vs compaction floor (#79428)
- PR[codex] Map ACP thinking to advertised effort key
- PRfix(agents): surface exec failures after claimed success
- PRfix(imessage): WARN-log when private API bridge is unavailable
- PRfix(telegram): preserve debounce for partial draft fragments
- PRFix Copilot token integration identity
- PRfix(config): persist explicit default values
- PRfix(cli): return null for unknown non-plugin commands instead of suggesting plugins.allow
- PRfix(doctor): invalidate persisted plugin registry when a diagnostic source path no longer exists
- PRfix(codex): normalize thread id/sessionId cross-fill before schema validation
- PR[Fix] Wait for Pi abort settle before cleanup
- PRTelegram: keep verbose tool results separate from final answers
- PRSupport Kimi Anthropic thinking streams
- PRfix(plugins): retry npm alias override installs
- PRDisable non-POSIX command approval highlights
- PRfix: abort generic no-progress tool loops
- PRfix: enable native require fast path on Windows for plugin-sdk root alias