OpenClaw v2026.2.9 发布
发布日期: 2026-02-09
Added
- Commands: add
commands.allowFromconfig for separate command authorization, allowing operators to restrict slash commands to specific users while keeping chat open to others. (#12430) Thanks @thewilloftheshadow. - Docker: add ClawDock shell helpers for Docker workflows. (#12817) Thanks @Olshansk.
- Gateway: periodic channel health monitor auto-restarts stuck, crashed, or silently-stopped channels. Configurable via
gateway.channelHealthCheckMinutes(default: 5, set to 0 to disable). (#7053, #4302) - iOS: alpha node app + setup-code onboarding. (#11756) Thanks @mbelinky.
- Channels: comprehensive BlueBubbles and channel cleanup. (#11093) Thanks @tyler6204.
- Channels: IRC first-class channel support. (#11482) Thanks @vignesh07.
- Plugins: device pairing + phone control plugins (Telegram
/pair, iOS/Android node controls). (#11755) Thanks @mbelinky. - Tools: add Grok (xAI) as a
web_searchprovider. (#12419) Thanks @tmchow. - Gateway: add agent management RPC methods for the web UI (
agents.create,agents.update,agents.delete). (#11045) Thanks @advaitpaliwal. - Gateway: stream thinking events to WS clients and broadcast tool events independent of verbose level. (#10568) Thanks @nk1tz.
- Web UI: show a Compaction divider in chat history. (#11341) Thanks @Takhoffman.
- Agents: include runtime shell in agent envelopes. (#1835) Thanks @Takhoffman.
- Agents: auto-select
zai/glm-4.6vfor image understanding when ZAI is primary provider. (#10267) Thanks @liuy. - Paths: add
OPENCLAW_HOMEfor overriding the home directory used by internal path resolution. (#12091) Thanks @sebslight. - Onboarding: add Custom Provider flow for OpenAI and Anthropic-compatible endpoints. (#11106) Thanks @MackDing.
- Hooks: route webhook agent runs to specific
agentIds, addhooks.allowedAgentIdscontrols, and fall back to default agent when unknown IDs are provided. (#13672) Thanks @BillChirico.
Fixes
- Cron: prevent one-shot
atjobs from re-firing on gateway restart when previously skipped or errored. (#13845) - Discord: add exec approval cleanup option to delete DMs after approval/denial/timeout. (#13205) Thanks @thewilloftheshadow.
- Sessions: prune stale entries, cap session store size, rotate large stores, accept duration/size thresholds, default to warn-only maintenance, and prune cron run sessions after retention windows. (#13083) Thanks @skyfallsin, @gumadeiras.
- CI: Implement pipeline and workflow order. Thanks @quotentiroler.
- WhatsApp: preserve original filenames for inbound documents. (#12691) Thanks @akramcodez.
- Telegram: harden quote parsing; preserve quote context; avoid QUOTE_TEXT_INVALID; avoid nested reply quote misclassification. (#12156) Thanks @rybnikov.
- Security/Telegram: breaking default-behavior change — standalone canvas host + Telegram webhook listeners now bind loopback (
127.0.0.1) instead of0.0.0.0; setchannels.telegram.webhookHostwhen external ingress is required. (#13184) Thanks @davidrudduck. - Telegram: recover proactive sends when stale topic thread IDs are used by retrying without
message_thread_id. (#11620) - Discord: auto-create forum/media thread posts on send, with chunked follow-up replies and media handling for forum sends. (#12380) Thanks @magendary, @thewilloftheshadow.
- Discord: cap gateway reconnect attempts to avoid infinite retry loops. (#12230) Thanks @Yida-Dev.
- Telegram: render markdown spoilers with
<tg-spoiler>HTML tags. (#11543) Thanks @ezhikkk. - Telegram: truncate command registration to 100 entries to avoid
BOT_COMMANDS_TOO_MUCHfailures on startup. (#12356) Thanks @arosstale. - Telegram: match DM
allowFromagainst sender user id (fallback to chat id) and clarify pairing logs. (#12779) Thanks @liuxiaopai-ai. - Pairing/Telegram: include the actual pairing code in approve commands, route Telegram pairing replies through the shared pairing message builder, and add regression checks to prevent
<code>placeholder drift. - Onboarding: QuickStart now auto-installs shell completion (prompt only in Manual).
- Onboarding/Providers: add LiteLLM provider onboarding and preserve custom LiteLLM proxy base URLs while enforcing API-key auth mode. (#12823) Thanks @ryan-crabbe.
- Docker: make
docker-setup.shcompatible with macOS Bash 3.2 and empty extra mounts. (#9441) Thanks @mateusz-michalik. - Auth: strip embedded line breaks from pasted API keys and tokens before storing/resolving credentials.
- Agents: strip reasoning tags and downgraded tool markers from messaging tool and streaming output to prevent leakage. (#11053, #13453) Thanks @liebertar, @meaadore1221-afk, @gumadeiras.
- Browser: prevent stuck
act:evaluatefrom wedging the browser tool, and make cancellation stop waiting promptly. (#13498) Thanks @onutc. - Security/Gateway: default-deny missing connect
scopes(no implicitoperator.admin). - Web UI: make chat refresh smoothly scroll to the latest messages and suppress new-messages badge flash during manual refresh.
- Web UI: coerce Form Editor values to schema types before
config.setandconfig.apply, preventing numeric and boolean fields from being serialized as strings. (#13468) Thanks @mcaxtr. - Tools/web_search: include provider-specific settings in the web search cache key, and pass
inlineCitationsfor Grok. (#12419) Thanks @tmchow. - Tools/web_search: fix Grok response parsing for xAI Responses API output blocks. (#13049) Thanks @ereid7.
- Tools/web_search: normalize direct Perplexity model IDs while keeping OpenRouter model IDs unchanged. (#12795) Thanks @cdorsey.
- Model failover: treat HTTP 400 errors as failover-eligible, enabling automatic model fallback. (#1879) Thanks @orenyomtov.
- Errors: prevent false positive context overflow detection when conversation mentions "context overflow" topic. (#2078) Thanks @sbking.
- Errors: avoid rewriting/swallowing normal assistant replies that mention error keywords by scoping
sanitizeUserFacingTextrewrites to error-context. (#12988) Thanks @Takhoffman. - Config: re-hydrate state-dir
.envduring runtime config loads so${VAR}substitutions remain resolvable. (#12748) Thanks @rodrigouroz. - Gateway: no more post-compaction amnesia; injected transcript writes now preserve Pi session
parentIdchain so agents can remember again. (#12283) Thanks @Takhoffman. - Gateway: fix multi-agent sessions.usage discovery. (#11523) Thanks @Takhoffman.
- Agents: recover from context overflow caused by oversized tool results (pre-emptive capping + fallback truncation). (#11579) Thanks @tyler6204.
- Subagents/compaction: stabilize announce timing and preserve compaction metrics across retries. (#11664) Thanks @tyler6204.
- Subagents: report timeout-aborted runs as timed out instead of completed successfully in parent-session announcements. (#13996) Thanks @dario-github.
- Cron: share isolated announce flow and harden scheduling/delivery reliability. (#11641) Thanks @tyler6204.
- Cron tool: recover flat params when LLM omits the
jobwrapper for add requests. (#12124) Thanks @tyler6204. - Gateway/CLI: when
gateway.bind=lan, use a LAN IP for probe URLs and Control UI links. (#11448) Thanks @AnonO6. - CLI: make
openclaw plugins listoutput scannable by hoisting source roots and shortening bundled/global/workspace plugin paths. - Hooks: fix bundled hooks broken since 2026.2.2 (tsdown migration). (#9295) Thanks @patrickshao.
- Security/Plugins: install plugin and hook dependencies with
--ignore-scriptsto prevent lifecycle script execution. - Routing: refresh bindings per message by loading config at route resolution so binding changes apply without restart. (#11372) Thanks @juanpablodlc.
- Exec approvals: render forwarded commands in monospace for safer approval scanning. (#11937) Thanks @sebslight.
- Config: clamp
maxTokenstocontextWindowto prevent invalid model configs. (#5516) Thanks @lailoo. - Thinking: allow xhigh for
github-copilot/gpt-5.2-codexandgithub-copilot/gpt-5.2. (#11646) Thanks @LatencyTDH. - Thinking: honor
/think offfor reasoning-capable models. (#9564) Thanks @liuy. - Discord: support forum/media thread-create starter messages, wire
message thread create --message, and harden routing. (#10062) Thanks @jarvis89757. - Discord: download attachments from forwarded messages. (#17049) Thanks @pip-nomel, @thewilloftheshadow.
- Paths: structurally resolve
OPENCLAW_HOME-derived home paths and fix Windows drive-letter handling in tool meta shortening. (#12125) Thanks @mcaxtr. - Memory: set Voyage embeddings
input_typefor improved retrieval. (#10818) Thanks @mcinteerj. - Memory: disable async batch embeddings by default for memory indexing (opt-in via
agents.defaults.memorySearch.remote.batch.enabled). (#13069) Thanks @mcinteerj. - Memory/QMD: reuse default model cache across agents instead of re-downloading per agent. (#12114) Thanks @tyler6204.
- Memory/QMD: run boot refresh in background by default, add configurable QMD maintenance timeouts, retry QMD after fallback failures, and scope QMD queries to OpenClaw-managed collections. (#9690, #9705, #10042) Thanks @vignesh07.
- Memory/QMD: initialize QMD backend on gateway startup so background update timers restart after process reloads. (#10797) Thanks @vignesh07.
- Config/Memory: auto-migrate legacy top-level
memorySearchsettings intoagents.defaults.memorySearch. (#11278, #9143) Thanks @vignesh07. - Memory/QMD: treat plain-text
No results foundoutput from QMD as an empty result instead of throwing invalid JSON errors. (#9824) - Memory/QMD: add
memory.qmd.searchModeto choosequery,search, orvsearchrecall mode. (#9967, #10084) - Media understanding: recognize
.cafaudio attachments for transcription. (#10982) Thanks @succ985. - State dir: honor
OPENCLAW_STATE_DIRfor default device identity and canvas storage paths. (#4824) Thanks @kossoy. - Doctor/State dir: suppress repeated legacy migration warnings only for valid symlink mirrors, while keeping warnings for empty or invalid legacy trees. (#11709) Thanks @gumadeiras.
- Tests: harden flaky hotspots by removing timer sleeps, consolidating onboarding provider-auth coverage, and improving memory test realism. (#11598) Thanks @gumadeiras.
- macOS: honor Nix-managed defaults suite (
ai.openclaw.mac) for nixMode to prevent onboarding from reappearing after bundle-id churn. (#12205) Thanks @joshp123. - Matrix: add multi-account support via
channels.matrix.accounts; use per-account config for dm policy, allowFrom, groups, and other settings; serialize account startup to avoid race condition. (#7286, #3165, #3085) Thanks @emonty.