Skip to content
Guides

OpenClaw active memory

The escalate default that spends a blocking recall call only on recall intent, which surfaces are eligible, the two targeting paths, chat type and chat id controls, and the privacy boundary of remembering across conversations

7 min read

Most memory features answer the question of what to store. Active memory answers a narrower one: when is it worth paying for a second model call before replying. Its default is to escalate, meaning the deep-recall sub-agent runs only when the message actually asks about the past and the fast deterministic lane found nothing strong. Here is when it runs, who it can read, and how to scope it.

The flow and the surfaces

  • A user message first hits deterministic trigger recall; a strong trusted match injects bounded hidden context, while a weak or empty result checks for recall intent; no intent injects a bounded outcome note, and intent starts the blocking deep-recall sub-agent, which can call only the configured recall tools and returns a relevant summary or the literal none.
  • It runs on control-interface and web chat persistent sessions and on other interactive channel sessions on the same persistent path when either targeting path allows the conversation; it does not run on headless one-shot runs, heartbeat or background runs, generic internal agent-command paths, or sub-agent and internal helper execution.
  • Inter-session messages and child completion deliveries never run it even when they land in a visible conversation, because OpenClaw skips recall on their typed delivery origin; later human messages in the same conversation stay eligible under the usual rules.
  • Two targeting paths exist: the remember-across-conversations setting automatically targets agents where it is enabled, but only for private direct or persistent explicit interface conversations, while the advanced plugin path targets listed agent ids and applies its own chat type and chat id controls; both need the plugin enabled and an eligible persistent conversation, and a session-scoped off command pauses both.
It is a poor fit for automation, internal workers, one-shot API tasks, or anywhere hidden personalization would be surprising.

Modes, chat types and ids

The mode key decides when a targeted turn starts the blocking sub-agent: escalate is the default and runs only for recall intent without a strong deterministic hit, always preserves the older behaviour of running on every eligible targeted turn, and off disables deep recall without unloading the plugin while the deterministic trusted-trigger lane keeps working. The allowed chat types key controls which conversations the advanced path may use, defaulting to direct messages, with group, channel and explicit portal sessions opted in explicitly; it cannot widen the product setting, which stays private-only. For a narrower rollout, an allowed chat id list narrows every allowed chat type at once, including direct messages, and a denied list always wins. Ids come from the persistent channel session key, matching is case-insensitive, and when the list is non-empty and no conversation id resolves, the turn is skipped rather than guessed.

Turning it on

  • For a personal or fully trusted agent, the per-agent remember-across-conversations setting enables bounded recall across that agent's other private conversations; it defaults on for personal installs, any configured direct-message isolation defaults it off, and an explicit value always wins.
  • The privacy boundary is fixed: private direct and persistent explicit interface conversations can recall one another, groups and channels are neither sources nor destinations, another agent's transcripts are never eligible, and unknown or archived transcripts without enough metadata are rejected; it does not merge transcripts, change session keys or routes, widen session visibility, or grant broader session tool access.
  • The advanced starter config turns the plugin on, scopes it to one agent and direct messages, keeps escalate mode, sets a recall model fallback, a recent query mode, a balanced prompt style, a 15 second timeout, a 220 character summary cap and transcript persistence off; plugin entries are in the no-restart config category, so the gateway reloads the plugin runtime without a manual restart.

OpenClaw memory search and OpenClaw session search are the deterministic lanes this feature escalates from.

Why escalate is the default

Flat retrieval is strongest on direct fact matches and weakest on temporal and multi-session questions, which is exactly where a second pass earns its latency. Escalating by default spends the blocking call where those harder recall shapes actually appear and leaves ordinary replies fast. The honest trade is visible in the failure modes too: an intentional no-intent skip or an unavailable search adds only a short hidden outcome note, so the main model knows recall did not run without seeing provider errors. OpenClaw configuration covers the configuration surface around it and The OpenClaw heartbeat the background turns that deliberately do not trigger it.

On Diali

On Diali each customer runs their own assistant with its state on a persistent volume, so recall stays inside that one runtime; daily snapshots and one-click restore are available through the Backups add-on (included on Max). Hosted OpenClaw on Diali describes the hosted assistant and Diali pricing the plans it ships in.

  • Escalate spends the blocking call only on recall intent.
  • Persistent user-facing sessions only, never headless or heartbeat.
  • Groups and channels are never recall sources or destinations.
Get started

Stop reading about it, build one

Set up an agent, pick a channel, and have it working inside the app you already keep open.