Skip to content

Active Memory plugin + qmd update chain times out at 120s on 4.15 #68825

Description

@ocasioj

Summary

After upgrading from 2026.3.242026.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:

  1. Takes 8–12 seconds regardless of model provider
  2. Times out (or returns summaryChars=0)
  3. Correlates 1:1 with [memory] qmd update failed timeouts at the 120000ms cap
  4. 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

  1. Upgrade from 2026.3.24 → 2026.4.15 (both image pull and npm install -g --prefix /data/.npm-global openclaw@latest)
  2. Workspace with a non-trivial MEMORY.md (~160 lines) and large skills registry (~18 skills)
  3. Enable active-memory in plugins.entries with agents: ["signal-chat"]
  4. Send a DM to the agent over Signal
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions