Summary
memory_search is currently returning the disabled response in agent sessions. The memory index was built with a different embedding provider/model/settings than the current configuration, so retrieval is paused.
Observed behavior
In the current session (Sat 2026-06-13 18:52 UTC), calling memory_search returns:
{
"results": [],
"disabled": true,
"unavailable": true,
"error": "index metadata is missing",
"warning": "Tell the user: memory search is paused because the memory index was built with a different embedding provider/model/settings.",
"action": "Tell the user to run: openclaw memory status --index or openclaw memory index --force.",
"debug": {
"warning": "Tell the user: memory search is paused because the memory index was built with a different embedding provider/model/settings.",
"action": "Tell the user to run: openclaw memory status --index or openclaw memory index --force.",
"error": "index metadata is missing"
}
}
Specifically: error: "index metadata is missing" — the index file is on disk but its .meta sidecar is not, or the sidecar was written by a different indexer version. Retrieval is hard-disabled in this state (it cannot fall back to keyword search), so all memory_search calls return empty results and no corpus=memory content is available to the agent.
Steps to reproduce
- Start an agent session on the prod bot (
@coder) or any other environment.
- Call
memory_search with any query — e.g. memory_search(query: "linux-desktop-setup h2 layered architecture split").
- Observe the disabled response above.
The exact same query was working in prior sessions (e.g. 2026-06-09 and earlier), so this is a recent regression, not a long-standing configuration gap.
Probable cause
One of:
- Embedding provider/model change. A model swap in the gateway config (or upstream OpenRouter routing) caused the active embedding model to differ from the one used to build the index. The indexer's metadata check fails closed.
- Index metadata lost. The on-disk index exists but the
.meta file is missing or was written by a different indexer version. Possible causes: incomplete openclaw memory index run, manual cleanup, or storage drop-in that strips dotfiles.
- Storage path change. The configured memory storage path now points to a different volume where the previous index is not present, so the loader sees an empty index directory and produces the "metadata is missing" diagnostic.
The hint text in the error explicitly says to run openclaw memory status --index or openclaw memory index --force, which is the documented recovery path.
Suggested fix
Short-term: run openclaw memory index --force on the affected VM(s) to rebuild the index with the current embedding provider/model. Verify with openclaw memory status --index that metadata is present and consistent. Validate by re-running the prior memory_search query and confirming a non-empty result.
Medium-term: prevent the regression from recurring:
- Detect the provider/model mismatch in the gateway config-validation path and either (a) auto-reindex, (b) refuse to start, or (c) emit a clear warning at startup. Right now the failure mode is silent — the search tool just returns empty.
- Persist the active embedding provider/model into the index metadata at build time so a future config change can be detected, not just a missing sidecar.
- Consider falling back to keyword/BM25 search when embeddings are unavailable, rather than hard-disabling retrieval. The hard-disable mode means an agent in a session immediately after a model change cannot recall any prior work — exactly the failure shape that hurts most in incident response.
Environment
- Host: prod bot VM (host:
ubuntu-8gb-hel1-1)
- Agent:
linux_desktop_seed
- First observed: 2026-06-13 18:52 UTC
- Active gateway version: 2026.6.5 (per current
linux-desktop-seed pin; verify in /usr/lib/node_modules/openclaw/package.json)
- OpenRouter key:
OPENROUTER_API_KEY (single repo secret, used for both chat and embeddings — verify in the embedding path that the same key is accepted by the active embedding provider)
Workaround
Until the index is rebuilt, agents cannot use memory_search for recall. Session-startup behavior (which AGENTS.md lists as: read IDENTITY.md, SOUL.md, USER.md, MEMORY.md, latest memory/YYYY-MM-DD.md) is unaffected because those are file reads, not search.
Summary
memory_searchis currently returning the disabled response in agent sessions. The memory index was built with a different embedding provider/model/settings than the current configuration, so retrieval is paused.Observed behavior
In the current session (Sat 2026-06-13 18:52 UTC), calling
memory_searchreturns:{ "results": [], "disabled": true, "unavailable": true, "error": "index metadata is missing", "warning": "Tell the user: memory search is paused because the memory index was built with a different embedding provider/model/settings.", "action": "Tell the user to run: openclaw memory status --index or openclaw memory index --force.", "debug": { "warning": "Tell the user: memory search is paused because the memory index was built with a different embedding provider/model/settings.", "action": "Tell the user to run: openclaw memory status --index or openclaw memory index --force.", "error": "index metadata is missing" } }Specifically:
error: "index metadata is missing"— the index file is on disk but its.metasidecar is not, or the sidecar was written by a different indexer version. Retrieval is hard-disabled in this state (it cannot fall back to keyword search), so allmemory_searchcalls return empty results and nocorpus=memorycontent is available to the agent.Steps to reproduce
@coder) or any other environment.memory_searchwith any query — e.g.memory_search(query: "linux-desktop-setup h2 layered architecture split").The exact same query was working in prior sessions (e.g. 2026-06-09 and earlier), so this is a recent regression, not a long-standing configuration gap.
Probable cause
One of:
.metafile is missing or was written by a different indexer version. Possible causes: incompleteopenclaw memory indexrun, manual cleanup, or storage drop-in that strips dotfiles.The hint text in the error explicitly says to run
openclaw memory status --indexoropenclaw memory index --force, which is the documented recovery path.Suggested fix
Short-term: run
openclaw memory index --forceon the affected VM(s) to rebuild the index with the current embedding provider/model. Verify withopenclaw memory status --indexthat metadata is present and consistent. Validate by re-running the priormemory_searchquery and confirming a non-empty result.Medium-term: prevent the regression from recurring:
Environment
ubuntu-8gb-hel1-1)linux_desktop_seedlinux-desktop-seedpin; verify in/usr/lib/node_modules/openclaw/package.json)OPENROUTER_API_KEY(single repo secret, used for both chat and embeddings — verify in the embedding path that the same key is accepted by the active embedding provider)Workaround
Until the index is rebuilt, agents cannot use
memory_searchfor recall. Session-startup behavior (whichAGENTS.mdlists as: readIDENTITY.md,SOUL.md,USER.md,MEMORY.md, latestmemory/YYYY-MM-DD.md) is unaffected because those are file reads, not search.