Skip to content

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

@ceo-nada

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions