8
New Features
22
Bug Fixes
34
Total Changes
25
Contributors
⭐ Biggest changes

iOS Node App (alpha) — Pair your iPhone as an OpenClaw node. Camera snaps, location, notifications, and device control from your agents. Combined with the new device pairing plugins, this is the foundation for agents that interact with the physical world. Note: The iOS app is currently in internal preview via Apple TestFlight and is not publicly available yet.

Post-Compaction Amnesia Fix — Agents were losing memory of everything before compaction. Injected transcript writes now preserve the session parentId chain correctly. If you've had agents "forget" mid-conversation, this is the fix.

🚀 New Features 8

iOS node app (alpha — TestFlight only)

A native iOS app for pairing your iPhone as an OpenClaw node. Uses a setup-code onboarding flow to connect your phone to your agent fleet. This opens up camera snaps, location, notifications, and eventually full device control from your agents.

Availability: The iOS app is currently in internal preview, distributed via Apple's TestFlight. It is not publicly available on the App Store yet. The gateway-side pairing infrastructure (the /pair command and device-pair plugin) is fully shipped and ready — once the app goes public, you'll be able to pair immediately.

#11756

Device pairing & phone control plugins

New plugin system for pairing devices via Telegram (/pair command) with full iOS and Android node controls. Pairs with the iOS node app to give agents real-world device interaction — take photos, read sensors, push notifications, and more.

#11755

Grok (xAI) as a web search provider

You can now use xAI's Grok as a web_search provider, complete with inline citations. Adds another option alongside Perplexity and other search backends.

#12419

Agent management via Web UI

The Gateway now exposes agents.create, agents.update, and agents.delete RPC methods, enabling full agent lifecycle management directly from the Control UI. No more hand-editing config files to add or modify agents.

#11045

BlueBubbles channel support

Comprehensive BlueBubbles integration and channel cleanup. BlueBubbles is a self-hosted iMessage bridge for non-Mac setups, widening iMessage access for agents running on Linux or Docker hosts.

#11093

OPENCLAW_HOME environment variable

New OPENCLAW_HOME env var lets you override the home directory used by internal path resolution. Useful for containerized deployments, multi-user setups, or non-standard directory layouts.

#12091

Compaction divider in Web UI

Chat history now shows a visual divider where compaction occurred, making it clear when context was summarized. Helpful when reviewing long conversations.

#11341

Runtime shell in agent envelopes

Agent envelopes now include runtime shell information, giving downstream tools and skills better awareness of the execution environment.

#1835

🔒 Security 1

Exec approvals render in monospace

Forwarded commands in exec approval prompts are now rendered in monospace, making it easier and safer to scan what you're approving. Reduces the risk of visually ambiguous or misleading command strings.

#11937

🐛 Critical Bug Fixes 4

Post-compaction amnesia fixed

Injected transcript writes after compaction were breaking the session's parentId chain, causing agents to lose memory of everything before compaction. Now fixed — agents remember again after context is compacted.

#12283

Context overflow from oversized tool results

Oversized tool results could blow past the context window and crash the session. Now there's pre-emptive capping of tool output size plus a fallback truncation mechanism if something still slips through.

#11579

Model failover on HTTP 400

HTTP 400 errors are now treated as failover-eligible, so automatic model fallback kicks in for a wider range of failures — not just 5xx errors.

#1879

False positive context overflow detection

If a conversation mentioned "context overflow" as a topic (e.g., discussing it), the system could falsely trigger overflow handling. Fixed to only detect actual overflow conditions.

#2078

💬 Telegram Fixes 5

Quote parsing hardened

Major overhaul of quote/reply handling: preserves quote context properly, avoids QUOTE_TEXT_INVALID errors, and prevents nested reply quotes from being misclassified.

#12156

Stale topic thread recovery

Proactive sends that fail due to stale topic thread_ids now automatically retry without the message_thread_id, recovering gracefully instead of silently failing.

#11620

Markdown spoiler rendering

Spoilers now render correctly using HTML tags instead of broken markdown syntax.

#11543

Command registration capped at 100

Bot command registration is now truncated to 100 entries to avoid Telegram's BOT_COMMANDS_TOO_MUCH error on startup — relevant for multi-agent setups with many custom commands.

#12356

DM allowFrom matching fixed

allowFrom now correctly matches against the sender's user ID (with fallback to chat ID), fixing cases where DM access control wasn't working as expected.

#12779

⚙️ Infrastructure & Reliability 6

Binding changes apply without restart

Routing bindings are now refreshed per-message by reloading config at route resolution time. You can change agent bindings in the config and they'll take effect immediately — no restart needed.

#11372

Bundled hooks fixed (broken since 2026.2.2)

Hooks have been broken since the 2026.2.2 tsdown migration. Now fixed. If you had custom hooks that stopped working, they should be back.

#9295

Cron scheduling and delivery hardened

Multiple hardening fixes: scheduling/delivery reliability improved, announce flow shared with isolated sessions, and the cron tool now recovers flat parameters when the LLM forgets to wrap them in the job object.

#11641 · #12124

Sub-agent announce timing stabilized

Announce timing for sub-agents is stabilized, and compaction metrics are now preserved across retries instead of being lost.

#11664

Multi-agent session usage fixed

sessions.usage discovery for multi-agent setups is fixed — usage stats now correctly reflect all agents.

#11523

LAN binding uses correct IP

When gateway.bind=lan, probe URLs and Control UI links now correctly use a LAN IP instead of 127.0.0.1.

#11448

🔍 Search & Memory 4

Web search cache keys include provider settings

Provider-specific settings are now included in the web search cache key, preventing cross-provider result contamination. Grok's inlineCitations are passed through correctly.

#12419

Perplexity model ID normalization

Direct Perplexity model IDs are now normalized correctly while OpenRouter model IDs are left unchanged. Fixes routing issues when using Perplexity both directly and via OpenRouter.

#12795

Voyage embeddings improved

Voyage AI embeddings now set the input_type parameter, improving retrieval accuracy for memory search.

#10818

Shared model cache across agents

The default QMD (memory) model cache is now shared across agents instead of re-downloading per agent. Saves disk space and startup time in multi-agent setups.

#12114

🎨 UX & Platform 6

Chat refresh scroll and badge fix

Manual refresh now smoothly scrolls to the latest messages and suppresses the new-messages badge flash that occurred during refresh.

Auto shell completion in QuickStart

QuickStart mode now auto-installs shell completion (previously manual-only). Also strips embedded line breaks from pasted API keys — no more invisible whitespace breaking auth.

Discord forum thread support

Forum and media thread-create starter messages are now supported, with message thread create --message wired up and routing hardened.

#10062

xhigh thinking for GitHub Copilot models

xhigh thinking level is now allowed for github-copilot/gpt-5.2-codex and github-copilot/gpt-5.2.

#11646

.caf audio transcription

.caf audio attachments (Apple's Core Audio Format) are now recognized for transcription. Relevant for iOS voice memos and macOS audio recordings.

#10982

OPENCLAW_STATE_DIR honored

OPENCLAW_STATE_DIR is now honored for default device identity and canvas storage paths.

#4824

Upgrade now
$ brew upgrade openclaw
$ npm update -g openclaw