Skip to content

[Bug]: active-memory sub-agent receives empty tools array, memory_search/memory_get never called #68004

Description

@parazox

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Active-memory sub-agent's LLM request includes tools=[] instead of [memory_search, memory_get], preventing the model from calling memory tools.

Steps to reproduce

  1. Upgrade from 2026.4.14 to 2026.4.15
  2. Enable active-memory plugin with any OpenAI-compatible model
  3. Send a message that should trigger memory recall (e.g. "What is my favorite programming language?")
  4. Check sub-agent transcript in ~/.openclaw/plugins/active-memory/transcripts/

Observed: transcript shows 6 lines only (no tool_use, no tool_result). Model's thinking says "tool not listed". Strict-validation providers like Qwen return 400: "[] is too short - 'tools'".

In 2026.4.14, the same query produces 8+ line transcripts with memory_search tool_use and tool_result entries.

Expected behavior

In 2026.4.14, the active-memory sub-agent transcript contains tool_use (memory_search) and tool_result entries (8+ lines), and memory recall succeeds.

Actual behavior

In 2026.4.15, the sub-agent transcript contains only 6 lines with no tool_use or tool_result. The model's thinking output says "tool not listed", confirming tools=[] was sent.
Providers with strict validation (e.g. Qwen via OpenCode Go) reject with: 400 [] is too short - 'tools'. The plugin still reports status=ok by misinterpreting the thinking text or error message as the summary (summaryChars=56), masking the failure.

OpenClaw version

2026.4.15 (041266a) — regression from 2026.4.14 (323493f)

Operating system

macOS 14.7 (Sonoma)

Install method

npm global

Model

openrouter/openai/gpt-oss-120b:free, opencode-go/qwen3.5-plus

Provider / routing chain

openclaw -> openrouter (gpt-oss-120b:free), openclaw -> opencode-go (qwen3.5-plus)

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Transcript comparison (same query: "What is my favorite programming language?"):

**2026.4.14 (working)** — 8 lines, tool call present:

L5 thinking: "Need to search memory. Use memory_search."
L5 tool_use: memory_search input={"query":"favorite programming language"}
L6 tool_result: [{path: "...", score: 0.69, snippet: "..."}]
L7 text: "User's favorite programming language is Python."


**2026.4.15 (broken)** — 6 lines, no tool call:

L5 thinking: "Need to search memory. Use memory_search tool? Not listed. Return NONE."
L5 text: "NONE"


**2026.4.15 with Qwen (strict validation)** — explicit 400 error:

L5 content: [], stopReason: "error"
L5 errorMessage: "400 [] is too short - 'tools'"


Note: plugin reports status=ok summaryChars=56 even on failure, misinterpreting thinking
text as summary.

Impact and severity

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions