This beta release focuses on system stability, enhanced agent recovery, and a significant migration of core state—including cron jobs and ACP metadata—to SQLite for improved reliability.
OpenClaw v2026.5.31-beta.3 introduces critical stability improvements and a fundamental shift in how the system handles persistence. By migrating several legacy JSON-based state stores to SQLite and refining the recovery paths for interrupted agent runs, this release significantly reduces the likelihood of state corruption and 'stalled' sessions.
Beyond infrastructure, this update expands the capabilities of the Control UI, enhances mobile delivery for iOS, and introduces a more robust framework for skill management via the new Skill Workshop.
Key Changes
Core Infrastructure & Persistence
To improve reliability and concurrency, OpenClaw is moving away from flat-file state management:
- Cron Persistence Migration: Cron jobs, runtime state, and run history have been moved from legacy JSON/JSONL files to the shared OpenClaw SQLite database. This includes a migration path that archives legacy files only after a durable import is confirmed (#88285).
- ACP Metadata Migration: Agent Control Plane (ACP) session metadata and event ledgers are now persisted in SQLite, ensuring that session state survives restarts and updates more reliably than the previous file-backed approach (#88724).
- Voice Call Logs: Call records for the voice-call extension have been migrated to plugin-state SQLite, with a doctor-led migration path for legacy
calls.jsonl data (#88731).
- Memory Lock Contention: A new per-store cross-process write lock (
qmd-write.lock) has been implemented to prevent SQLITE_BUSY errors when the Gateway and CLI concurrently access the same memory store (#85931).
Agent Reliability & Tooling
- Interrupted Run Recovery: Agents and CLI-backed runtimes now recover more cleanly from interrupted tool calls, stale session bindings, and compaction handoffs. This includes a centralized terminal outcome helper to ensure that hard timeouts and explicit cancellations are not overwritten by late-arriving events (#88136, #88162).
- Media Generation Routing: Generated images, videos, and music now route completions back through the requester agent. This allows the agent's visible-reply configuration to determine the final delivery method, rather than forcing a generic message-tool delivery (#88141).
- Code Mode Namespaces: A new internal namespace registry allows host-owned globals to be exposed inside
exec via a QuickJS bridge, enabling more powerful plugin integrations while maintaining strict security and policy hooks (#88043).
- Session Goals: Core-owned session goals are now supported, allowing agents to track, update, and complete specific objectives via
/goal controls and dedicated model tools (#87469).
Control UI & User Experience
- Dreaming Tab Enhancements: The Dreaming tab now includes an agent selector, allowing users to switch between different agent contexts to inspect their specific dreaming status and diaries (#78748).
- Communication Settings: The "Communication Notifications" settings tab is now explicitly exposed in the UI for easier access to notification controls (#74715).
- Codex Streaming: For
openai-codex providers, final answer partials are now streamed to live reply previews, resolving an issue where Telegram users only saw the final block of text (#88730).
Mobile & Channel Stability
- iOS Improvements: The iOS app now defaults to a hosted push relay (
ios-push-relay.openclaw.ai) for APNs sends and introduces a dedicated "Talk" tab for realtime voice playback with echo suppression (#88096, #88105).
- WebSocket Stability: A guard has been added to iOS/macOS WebSocket ping continuations to prevent crashes caused by duplicate callback resumes (#88231).
- Channel Progress Recovery: A fix ensures that failed progress draft starts (across Discord, Telegram, Slack, Matrix, and Teams) are recovered rather than leaving the stream in a permanently stalled state (#88749).
Impact
Fixed Issues
- Multi-Agent Setup: Fixed a bug where
openclaw agents add would hang due to unnecessary live model catalog validation (#88314).
- A2A Messaging: Resolved a critical failure where Anthropic/Pi agents could not send messages to other tasks because of a schema mismatch between
SendMessage and message aliases (#88229).
- Skill Snapshots: Fixed a bug where disabled skills could still trigger
SecretRef resolution failures during channel turns if they existed in a stale snapshot (#79173).
- Media Sends: Local media sends now support validated TXT, JSON, and YAML documents while continuing to reject binary-disguised text files (#79658).
Performance & CI
- LLM Core Extraction: Shared LLM contracts and runtime code have been extracted into
packages/llm-core and packages/llm-runtime to reduce duplication and improve build times (#88117).
- Vitest Optimization: The test wrapper now routes explicit-file invocations through a project router, preventing the loading of the full project matrix and eliminating hangs during single-file agent proofs (#88127).
Upgrade Guide
State Migration
Users upgrading from previous versions will experience an automatic migration of cron and ACP state to SQLite. While this is designed to be seamless, it is recommended to:
- Backup your state directory before upgrading, as legacy JSON files will be archived upon successful SQLite import.
- Run
openclaw doctor after the upgrade to verify that all legacy cron and voice-call logs have been successfully migrated.
Docker Users
This release updates the pinned Node.js base image digests (node:24-bookworm) to ensure compatibility with the latest multi-arch manifests (#84988). If you are building custom images, please update your Dockerfile pins to match the latest release.