openclaw - 💡(How to fix) Fix Bug: Active Memory resolveDefaultToolsAllow does not match memory-lancedb-pro slot, sub-agent gets wrong tools

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

When plugins.slots.memory is set to "memory-lancedb-pro" (the third-party enhanced LanceDB plugin from CortexReach), Active Memory sub-agent is granted ["memory_search", "memory_get"] instead of ["memory_recall"], causing the sub-agent to fail silently with "no configured memory tools available; skipping sub-agent".

Root Cause

In dist/extensions/active-memory/index.js, resolveDefaultToolsAllow:

function resolveDefaultToolsAllow(cfg) {
    return cfg?.plugins?.slots?.memory === "memory-lancedb"
        ? ["memory_recall"]
        : ["memory_search", "memory_get"];
}

The exact string match === "memory-lancedb" does not match "memory-lancedb-pro". The -pro suffix causes the function to fall through to the else branch, granting memory_search and memory_get — tools that memory-lancedb-pro does not register (it registers memory_recall instead).

Fix Action

Workaround

Explicitly set toolsAllow in active-memory config:

"active-memory": {
  "config": {
    "toolsAllow": ["memory_recall"]
  }
}

Code Example

function resolveDefaultToolsAllow(cfg) {
    return cfg?.plugins?.slots?.memory === "memory-lancedb"
        ? ["memory_recall"]
        : ["memory_search", "memory_get"];
}

---

"active-memory": {
  "config": {
    "toolsAllow": ["memory_recall"]
  }
}

---

function resolveDefaultToolsAllow(cfg) {
    const slot = cfg?.plugins?.slots?.memory;
    return (slot === "memory-lancedb" || slot === "memory-lancedb-pro")
        ? ["memory_recall"]
        : ["memory_search", "memory_get"];
}
RAW_BUFFERClick to expand / collapse

Summary

When plugins.slots.memory is set to "memory-lancedb-pro" (the third-party enhanced LanceDB plugin from CortexReach), Active Memory sub-agent is granted ["memory_search", "memory_get"] instead of ["memory_recall"], causing the sub-agent to fail silently with "no configured memory tools available; skipping sub-agent".

Root Cause

In dist/extensions/active-memory/index.js, resolveDefaultToolsAllow:

function resolveDefaultToolsAllow(cfg) {
    return cfg?.plugins?.slots?.memory === "memory-lancedb"
        ? ["memory_recall"]
        : ["memory_search", "memory_get"];
}

The exact string match === "memory-lancedb" does not match "memory-lancedb-pro". The -pro suffix causes the function to fall through to the else branch, granting memory_search and memory_get — tools that memory-lancedb-pro does not register (it registers memory_recall instead).

Steps to Reproduce

  1. Install memory-lancedb-pro plugin
  2. Set plugins.slots.memory = "memory-lancedb-pro"
  3. Enable active-memory plugin with default config (no toolsAllow override)
  4. Send a message to an agent with active-memory enabled
  5. Observe debug log: active-memory: no configured memory tools available; skipping sub-agent

Expected Behavior

When plugins.slots.memory is "memory-lancedb-pro", Active Memory should default to ["memory_recall"] (the same tools as for "memory-lancedb"), since memory-lancedb-pro is a drop-in replacement that uses memory_recall as its search tool.

Workaround

Explicitly set toolsAllow in active-memory config:

"active-memory": {
  "config": {
    "toolsAllow": ["memory_recall"]
  }
}

Proposed Fix

The condition should check for both "memory-lancedb" and "memory-lancedb-pro":

function resolveDefaultToolsAllow(cfg) {
    const slot = cfg?.plugins?.slots?.memory;
    return (slot === "memory-lancedb" || slot === "memory-lancedb-pro")
        ? ["memory_recall"]
        : ["memory_search", "memory_get"];
}

Or more generally use startsWith("memory-lancedb") to be forward-compatible.

Impact

Active Memory sub-agent silently fails for all users of memory-lancedb-pro who do not manually set toolsAllow. Since the failure is logged at debug level only and returns rawReply: "NONE", users have no visible indication that memory search is broken — it simply appears as if no relevant memories exist.

Environment

  • OpenClaw 2026.5.22
  • memory-lancedb-pro 1.1.0-beta.10
  • macOS arm64

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING