OpenClaw v2026.5.12-beta.7 發佈摘要
OpenClaw v2026.5.12-beta.7 發佈摘要
關鍵變更
核心基礎設施與安全性
- 安全性強化:實施了更嚴格的 Windows sandbox 綁定驗證,以阻擋攜帶憑證的根目錄(例如
.ssh、.codex),即使在HOME被重定向時也是如此。此外,sandbox browser CDP relay 現在需要應用程式層級的憑證,取代了先前對網路來源過濾的依賴。 - 裝置配對與驗證:透過要求對 setup-code 裝置配對和 browser-origin Control UI 會話進行明確批准,增強了配對流程。現在,trusted-proxy 驗證會拒絕主機本地的非迴圈介面(non-loopback interface)對等端,以防止透過閘道主機自身的地址進行未經授權的存取。
- 配置管理:集中化 config-file 變更,以防止在併發寫入時發生數據丟失。新的 pre-update snapshot 機制現在可以保護
openclaw.json不會在版本升級期間被抹除,特別是修復了doctor --fix會在遷移之前移除未知鍵值的問題。 - 建置系統:將工作區升級至 pnpm 11,使 Docker、install 和 update 工作流程與新的套件管理員介面保持一致。
Agent 與執行階段 (Runtime) 增強功能
- Codex Harness:改進了 Codex app-server,透過將原生 subagent 生命週期事件鏡像到 Task Registry 中,並輪換不相容的 context-engine 執行緒,以防止過時的歷史記錄導致 context-window 溢出。Codex cron turns 現在直接執行自動化酬載,跳過不必要的 workspace bootstrap reads 以避免超時。
- ACP (Agent Client Protocol):為
UNAVAILABLE錯誤增加了後端提供者故障轉移(failover)功能,允許 ACP turns 嘗試配置的備用後端。ACP bridge 現在在_meta欄位中公開了會話譜系(session lineage)元數據(例如parentSessionId、spawnDepth),以便於客戶端進行更好的會話圖譜分析。 - 工具與執行:透過
toolsBySender引入了針對發送者的工具能力分級,允許操作員在 schema 層級限制特定用戶的危險工具(例如exec)。系統現在也會透過添加寬鬆的items: {}來正規化 array tool schemas,以防止 OpenAI-compatible providers 拒絕工具提交。
通道與整合更新
- Telegram:透過將入口(ingress)移至具有持久化本地 spool 的隔離 worker 中,顯著提升了提升了 Telegram 輪詢(polling)的韌性,確保訊息在主事件迴圈(event-loop)停滯時不會丟失。增加了對本地化指令選單描述的支持,並修復了一個關鍵錯誤:bot token 輪換導致 poller 因過時的 offset 而靜默地丟失新訊息。
- Slack:增加了對執行緒回覆的
replyBroadcast支持,並改進了對私有檔案重定向標頭(redirect headers)的處理,以防止媒體下載失敗。 - iMessage:修復了一個媒體僅發送(media-only sends)會包含可見
<media:image>佔位符文本的錯誤,並透過忽略 Apple 的內部預覽 blob,改進了貼上連結的處理方式。 - WhatsApp:將 WhatsApp 通道外部化為 ClawHub/npm plugin,以減少核心執行階段的依賴,並更新了底層的 Baileys 函式庫。
UI 與診斷
- Control UI:為 WebChat 增加了持久化的自動捲動模式選擇器,並在會話選擇器中將嵌套的 subagent 會話在視覺上置於其父級下方。新增的
/context map指令提供了一個 WinDirStat 風格的 treemap 圖像,用於展示會話上下文貢獻者。 - Diagnostics:引入了
startupGraceMs視窗,以抑制冷啟動期間的錯誤生命力(liveness)警告,同時仍會進行指標採樣以進行基準分析。
影響範圍
此發佈主要影響運行高併發 Agent 的操作員,或是使用 Codex 和 ACP 執行階段的人員。將 Telegram 輪詢移至隔離 worker 的做法,可防止在事件迴圈飽和時發生災難性的訊息丟失。對於注重安全性的部署,強化後的 sandbox sandbox 綁定與配對要求,會使系統趨向於「故障關閉」(fail-closed)的安全性模型,用於裝置與瀏覽器存取。
對於插件開發者,擴展後的 SDK 現在支持對應型(typed)會話動作、主機中介的附件,以及預定的會話 turns,從而實現更複雜的非同步工作流程,而無需內部 runner 存取。
升級指南
破壞性變更與遷移
- iMessage Sender Allowlist:發送者白名單匹配現在嚴格要求正規化的發送者句柄(sender handles)。對話會話範圍的 ID(chat IDs/GUIDs)不再被接受作為發送者身份的證明。用戶必須更新其
allowFrom配置以使用發送者句柄。 - Trusted Proxy Configuration:在
gateway.trustedProxies中列出閘道主機自身的非迴圈介面地址的部署,將會發現這些請求被拒絕。請使用不同的代理伺服器對等端地址,或使用迴圈介面 trusted-proxy 路徑。 - Plugin Installations:如果安裝的依賴執行階段文件包含關鍵代碼模式,某些插件安裝現在可能會被內建的掃描器攔截。如有必要,請使用
--force或 trusted install 標記來覆蓋這些攔截。
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