Remember across conversations

For a personal or fully trusted agent, enable bounded recall across its other private conversations with one per-agent setting:

{
  agents: {
    entries: {
      personal: {
        memory: {
          search: {
            rememberAcrossConversations: true,
          },
        },
      },
    },
  },
}

The setting defaults on for personal installs: global session.dmScope must be unset or "main", and no binding may override session.dmScope. Any configured DM isolation defaults it off. An explicit true or false always wins. When enabled, Apus indexes that agent's session transcripts and runs an Active Memory retrieval pass before eligible private replies. The pass can read relevant transcript excerpts from the same agent's other private conversations. It excludes the conversation already being answered.

The privacy boundary is fixed:

This does not merge transcripts, change session keys or delivery routes, widen tools.sessions.visibility, or grant broader sessions_* tool access. Shared workspace memory (MEMORY.md and memory/*.md) keeps its existing behavior.

Active Memory must remain enabled. Retrieval adds a bounded blocking step to eligible replies. An intentional no-intent skip or an unavailable search adds a short hidden outcome note instead of recalled transcript context. This tells the main model that recall did not run or could not finish without exposing provider errors. Timeout and empty results keep their existing behavior. Apus's built-in memory provider supports this protected transcript-recall path. Other memory providers keep their own recall behavior but do not automatically receive private transcript authorization. apus doctor reports an unsupported provider or missing memory_search tool.

Advanced Active Memory quick start

Paste into apus.json for an advanced safe default: plugin on, scoped to main, direct-message sessions only, model inherited from the session.

{
  plugins: {
    entries: {
      "active-memory": {
        enabled: true,
        config: {
          enabled: true,
          mode: "escalate",
          agents: ["main"],
          allowedChatTypes: ["direct"],
          modelFallback: "google/gemini-3-flash",
          queryMode: "recent",
          promptStyle: "balanced",
          timeoutMs: 15000,
          maxSummaryChars: 220,
          persistTranscripts: false,
          logging: true,
        },
      },
    },
  },
}

plugins.entries.* (including active-memory.config) is in the no-restart config category: the Gateway reloads the plugin runtime automatically and no manual restart is needed. If you want to force a full restart anyway, run:

apus gateway restart

To inspect it live in a conversation:

/verbose on
/trace on

What the key fields do: