Skip to content

[Bug]: memory_search returns empty for freshly indexed chunks (local provider + hybrid mode) on 2026.2.26 #29112

Description

@ceo-nada

Summary

On OpenClaw 2026.2.26, memory_search returns empty results for newly added memory text even after successful forced reindex.
Evidence shows the new text is present in the memory DB (chunks table), so ingestion/indexing succeeded but retrieval does not surface it.

Steps to reproduce

  1. Add unique canary text to workspace/memory/2026-02-27.md, e.g.:
    • you know you need unique New York
    • hey that’s my car
    • qzv91-lime-orbit
  2. Run:
    openclaw memory index --force
  3. Verify status:
    openclaw memory status --json
    Indexed counts increased (observed 20/38 -> 21/40).
  4. Query:
    • memory_search("you know you need unique New York")
    • memory_search("hey that's my car")
    • memory_search("qzv91-lime-orbit")

Expected behavior

Exact/near-exact canary queries should return the newly indexed chunk(s), including path/line references.

Actual behavior

All canary queries return results: [].

OpenClaw version

2026.2.26

Operating system

macOS 15.7.4 (x64)

Install method

nom global

Logs, screenshots, and evidence

### Relevant config

{
  "agents": {
    "defaults": {
      "memorySearch": {
        "provider": "local",
        "fallback": "none",
        "model": "hf:ggml-org/embeddinggemma-300m-qat-q8_0-GGUF/embeddinggemma-300m-qat-Q8_0.gguf",
        "sync": { "watch": true }
      }
    }
  }
}


### Additional evidence
SQLite confirms canary text exists in indexed chunks:

sqlite3 ~/.openclaw/memory/main.sqlite \
"select path,start_line,end_line from chunks where text like '%qzv91-lime-orbit%';"

Returns:
`memory/2026-02-27.md|1|7`

So indexing/ingestion succeeded; retrieval path appears to drop or fail to surface matching chunks.


### Minimal Repro Commands

# 1) add canary to memory file
echo '- canary: qzv91-lime-orbit' >> ~/.openclaw/workspace/memory/2026-02-27.md

# 2) force reindex
openclaw memory index --force

# 3) verify index counts/provider
openclaw memory status --json

# 4) search (returns empty unexpectedly)
openclaw memory search --query "qzv91-lime-orbit"

# 5) DB proof chunk exists
sqlite3 ~/.openclaw/memory/main.sqlite \
"select path,start_line,end_line from chunks where text like '%qzv91-lime-orbit%';"

Impact and severity

Affected: assume everybody who hasn't self-patched
Severity: very concerning
Frequency: always
Consequences: forgetfulness, poor decision making, escape guardrails, etc.

Additional information

MC-023-openclaw-memory-search-bug-report.md

Why this matters

This is a silent recall reliability failure: memory appears healthy (vector/fts ready, index updated) but fresh memory cannot be retrieved.

Potential relation

May be related to prior retrieval/hybrid regressions:

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