-
Notifications
You must be signed in to change notification settings - Fork 67
Description
Summary
Manual supermemory_store writes are acknowledged as successful, but they are not reliably discoverable afterwards via supermemory_search, and therefore also not reliably removable via supermemory_forget(query).
This appears to be more than simple indexing delay. In my testing, the stored text exists in the underlying Supermemory document and the document is already in status: done, but the text is still not returned by supermemory_search.
Why this matters
For passive auto-recall this may be acceptable, but for explicit/manual memory operations the tool semantics become misleading:
supermemory_storesuggests “this was saved and can be recalled later”supermemory_searchcannot reliably find that exact stored itemsupermemory_forget(query)depends on the same search path, so it also fails
This makes manual memory control unreliable.
Reproduction
Environment
- OpenClaw Supermemory plugin:
@supermemory/openclaw-supermemory2.0.2 - Repo:
supermemoryai/openclaw-supermemory - Container tag: default OpenClaw container
- Auto-recall / auto-capture enabled
Steps
- Call:
{
"text": "Supermemory smoke test marker — created by Pi on 2026-03-09 in Discord #ops. Unique token: SMOKE-1480601243586920520."
}via supermemory_store
- Observe successful response:
Stored: "Supermemory smoke test marker — created by Pi on 2026-03-09 in Discord #ops. Uni…"
- Immediately call:
{
"query": "SMOKE-1480601243586920520"
}via supermemory_search
- Result:
No relevant memories found.
-
Wait a bit and retry
supermemory_search- still no result
-
Call
supermemory_forgetwith the same query:
{
"query": "SMOKE-1480601243586920520"
}- Result:
No matching memory found to forget.
Important observation: the data was actually stored
Using the underlying SDK / API directly, I can confirm that the unique token is present in the raw stored document:
- the document exists
- it is in
status: done - the token appears in the raw document content
- but it is still not returned by
search.memories(...)
In my case, the token was appended to a large session document with:
customId = session_agent_main_discord_channel_1478191885863354563
and the raw document content did contain:
Supermemory smoke test marker — created by Pi on 2026-03-09 in Discord #ops. Unique token: SMOKE-1480601243586920520.
Suspected root cause
From reading the plugin source:
supermemory_storeusesbuildDocumentId(sessionKey)and writes with a session-levelcustomId- this means manual stores are effectively merged into a session document
supermemory_searchusesclient.search.memories(...)supermemory_forget(query)also depends onsearch.memories(...)
So there seems to be a mismatch between:
- store path → document/session update
- search path → extracted memories only
- forget-by-query path → same extracted-memory search
If the extraction layer does not promote the stored text into a memory entity, the text is effectively “stored but not roundtrip-addressable” through the plugin tools.
Expected behavior
At least one of these should be true:
Option A
Manual supermemory_store writes should become reliably retrievable via supermemory_search, and removable via supermemory_forget(query).
Option B
If manual stores are intentionally document-level only, the tool semantics / docs should make that explicit, because right now the interface implies a stronger guarantee than the implementation provides.
Possible fixes
A few possible directions:
-
Do not reuse session-level
customIdfor manualsupermemory_store- create a separate document / memory entity for explicit manual stores
-
Add fallback search behavior
- if
search.memories(...)returns nothing, optionally fall back to a document/hybrid search path
- if
-
Improve
supermemory_forget(query)- support exact content deletion / document-aware fallback when a query is clearly targeting a manual store
-
Clarify docs
- if current behavior is intended, document that
supermemory_storeis not guaranteed to be exact-roundtrip searchable/deletable
- if current behavior is intended, document that
Additional note
This does not seem to be simple processing lag in my case, because:
- the document had already finished processing (
status: done) - the raw content contained the token
- only the memory-search path failed to surface it