Bug Description
When memorySearch.experimental.sessionMemory is enabled with sources: ["memory", "sessions"], historical sessions in ~/.clawdbot/agents/*/sessions/*.jsonl are not indexed on first startup. Only the active session gets indexed.
Expected: All 42 session files indexed
Actual: Only memory files (5) indexed, sessions (0)
Root Cause
Two issues in src/memory/manager.ts:
Issue 1: Missing sessionsDirty initialization (constructor, line ~144)
// Current:
this.dirty = this.sources.has("memory");
// Missing:
this.sessionsDirty = this.sources.has("sessions");
Without this, sessionsDirty stays false on startup and historical sessions are never marked for indexing.
Issue 2: Incorrect condition order in shouldSyncSessions() (lines ~759-765)
// Current (broken):
const reason = params?.reason;
if (reason === "session-start" || reason === "watch")
return false; // ← Short-circuits before needsFullReindex!
if (needsFullReindex)
return true;
// Fixed:
if (needsFullReindex)
return true; // ← Check this FIRST
const reason = params?.reason;
if (reason === "session-start" || reason === "watch")
return false;
On first startup with empty/missing DB, needsFullReindex=true but the session-start reason returns false before it's evaluated.
Proposed Fix
Change 1: Add to constructor after this.dirty = ...:
this.sessionsDirty = this.sources.has("sessions");
Change 2: In shouldSyncSessions(), move needsFullReindex check before reason check.
Testing
After fix:
SELECT source, COUNT(*) FROM files GROUP BY source;
-- memory|5
-- sessions|42 ✅
Environment
- Clawdbot: 2026.1.24-3
- Node: v22.22.0
- OS: Ubuntu 24.04 LTS
Review
Fix reviewed and approved by:
- Claude Opus 4.5 (2 independent reviews)
- Gemini 3 Pro
All confirmed: minimal, correct, no side effects.
Bug Description
When
memorySearch.experimental.sessionMemoryis enabled withsources: ["memory", "sessions"], historical sessions in~/.clawdbot/agents/*/sessions/*.jsonlare not indexed on first startup. Only the active session gets indexed.Expected: All 42 session files indexed
Actual: Only memory files (5) indexed, sessions (0)
Root Cause
Two issues in
src/memory/manager.ts:Issue 1: Missing
sessionsDirtyinitialization (constructor, line ~144)Without this,
sessionsDirtystaysfalseon startup and historical sessions are never marked for indexing.Issue 2: Incorrect condition order in
shouldSyncSessions()(lines ~759-765)On first startup with empty/missing DB,
needsFullReindex=truebut thesession-startreason returnsfalsebefore it's evaluated.Proposed Fix
Change 1: Add to constructor after
this.dirty = ...:Change 2: In
shouldSyncSessions(), moveneedsFullReindexcheck before reason check.Testing
After fix:
Environment
Review
Fix reviewed and approved by:
All confirmed: minimal, correct, no side effects.