Summary
After upgrading from 2026.3.24 → 2026.4.15, enabling the Active Memory plugin causes every blocking sub-agent call to time out, accompanied by correlated [memory] qmd update failed (Error: qmd update timed out after 120000ms) errors in the gateway log.
Environment
- OpenClaw:
2026.4.15 (image + npm-global binary via npm install -g --prefix /data/.npm-global openclaw@latest)
- qmd:
1.0.7 (@tobilu/qmd)
- Runtime: Docker container, Node 24, Linux x86_64, CPU-only (CUDA compile fails, falls back to CPU)
- Agent:
signal-chat, Signal DM direct chat type
- Active Memory config:
queryMode: message, promptStyle: balanced, thinking: off, timeoutMs: 12000
Observed behavior
Every active-memory blocking sub-agent call:
- Takes 8–12 seconds regardless of model provider
- Times out (or returns
summaryChars=0)
- Correlates 1:1 with
[memory] qmd update failed timeouts at the 120000ms cap
- Surfaces
⚠️ Gateway: exec failed in the user-facing chat reply
Tested with both anthropic/claude-haiku-4-5 AND google/gemini-2.5-flash-lite — identical latency, suggests the bottleneck is NOT the LLM provider.
Log excerpts
[plugins] active-memory: agent=signal-chat session=agent:signal-chat:signal:direct:+REDACTED activeProvider=anthropic activeModel=claude-haiku-4-5 start timeoutMs=3000 queryChars=404
[agent/embedded] embedded run failover decision: runId=active-memory-... stage=assistant decision=surface_error reason=timeout from=anthropic/claude-haiku-4-5
[plugins] active-memory: done status=timeout elapsedMs=9839 summaryChars=0
[memory] qmd update failed (Error: qmd update timed out after 120000ms)
[memory] qmd update failed (Error: qmd update timed out after 120000ms)
(repeats per turn; 12 within a few minutes)
qmd CLI is healthy
The qmd CLI itself responds fast when invoked directly:
qmd --help — instant
qmd status — instant
qmd collection add . --mask '*.md' — 31 files indexed in <1s
qmd embed — 84 chunks with embeddinggemma-300M in 65s on CPU
So the hang is specific to the runtime path Active Memory uses to invoke qmd, not the qmd binary.
Reproduction
- Upgrade from 2026.3.24 → 2026.4.15 (both image pull and
npm install -g --prefix /data/.npm-global openclaw@latest)
- Workspace with a non-trivial
MEMORY.md (~160 lines) and large skills registry (~18 skills)
- Enable
active-memory in plugins.entries with agents: ["signal-chat"]
- Send a DM to the agent over Signal
- Observe
⚠️ Gateway: exec failed in the reply and qmd 120s timeouts in the gateway log
Workaround
Disabling the Active Memory plugin stops all qmd timeouts and eliminates the user-facing error surface. Memory still works via session bootstrap and post-compaction re-loads — only per-turn recall is lost.
Possible causes (speculative)
- qmd update path holds a lock or semaphore that doesn't release; subsequent calls pile up
- Embedded-run setup loads oversized context (skills registry, tool definitions) before reaching the model
- Regression from the 4.12 introduction of the blocking sub-agent — the 4.7 memory-wiki / memory-core / memory-lancedb refactor didn't propagate into the active-memory plugin path
Happy to run additional diagnostics or share full log chunks if helpful.
Summary
After upgrading from
2026.3.24→2026.4.15, enabling the Active Memory plugin causes every blocking sub-agent call to time out, accompanied by correlated[memory] qmd update failed (Error: qmd update timed out after 120000ms)errors in the gateway log.Environment
2026.4.15(image + npm-global binary vianpm install -g --prefix /data/.npm-global openclaw@latest)1.0.7(@tobilu/qmd)signal-chat, Signal DMdirectchat typequeryMode: message,promptStyle: balanced,thinking: off,timeoutMs: 12000Observed behavior
Every
active-memoryblocking sub-agent call:summaryChars=0)[memory] qmd update failedtimeouts at the 120000ms cap⚠️ Gateway: exec failedin the user-facing chat replyTested with both
anthropic/claude-haiku-4-5ANDgoogle/gemini-2.5-flash-lite— identical latency, suggests the bottleneck is NOT the LLM provider.Log excerpts
qmd CLI is healthy
The
qmdCLI itself responds fast when invoked directly:qmd --help— instantqmd status— instantqmd collection add . --mask '*.md'— 31 files indexed in <1sqmd embed— 84 chunks withembeddinggemma-300Min 65s on CPUSo the hang is specific to the runtime path Active Memory uses to invoke qmd, not the qmd binary.
Reproduction
npm install -g --prefix /data/.npm-global openclaw@latest)MEMORY.md(~160 lines) and large skills registry (~18 skills)active-memoryinplugins.entrieswithagents: ["signal-chat"]⚠️ Gateway: exec failedin the reply and qmd 120s timeouts in the gateway logWorkaround
Disabling the Active Memory plugin stops all qmd timeouts and eliminates the user-facing error surface. Memory still works via session bootstrap and post-compaction re-loads — only per-turn recall is lost.
Possible causes (speculative)
Happy to run additional diagnostics or share full log chunks if helpful.