# Reported issues for Memory Vault

Pod holds 10 of 10 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [Memory Vault](/mcp/memory-vault).

## Most discussed

### Feature Request: Add HTTP SSE transport for MCP server integration

**Is your feature request related to a problem? Please describe.**
Currently, the MCP server integration only supports the `stdio` transport. When trying to connect remote LLM harnesses (like Claude Desktop on a different machine, or Antigravity) to a `memory-vault` instance hosted in a Docker environment, it requires setting up SSH tunnels or relying on `docker exec` commands to route `stdio`. This can be cumbersome or impossible for some remote LLM clients that don't support custom execution c

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/194) · 2026-08-28 · open · external user · 1 comment

### [Bug]: synchronous embedding inference blocks async request handling

### What happened?

Synchronous embedding inference runs directly inside async request and worker paths. While the model is computing, the event-loop thread cannot serve unrelated coroutines, so one slow embedding can stall concurrent API work.

`hybrid_search` calls synchronous `embed`/`embed_batch` in [`search.py`](https://github.com/MihaiBuilds/memory-vault/blob/a0de8c6a2de75071c411cb80685703d3424383b1/src/memory_vault/services/search.py#L273-L295). File ingestion likewise calls `embed_batch`

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/116) · 2026-07-29 · closed · external user · 0 comments

### [Bug]: concurrent creation of one space can return HTTP 500

### What happened?

Two clients concurrently creating the same memory space can receive one success and one generic HTTP 500.

`create_space` first checks whether the name exists, then performs a separate insert. Both requests can observe no existing row; the first insert succeeds and the second reaches the database uniqueness constraint. That constraint error is not translated into the endpoint's documented conflict response.

The race is in [`spaces.py`](https://github.com/MihaiBuilds/memory-v

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/112) · 2026-07-29 · closed · external user · 0 comments

### [Bug]: concurrent remember calls can bypass exact-duplicate detection

### What happened?

Concurrent MCP `remember` calls with identical content can both pass the exact-duplicate check and insert separate chunks.

The tool computes a content hash, performs a read to check for that hash in the target space, then inserts in a separate operation. The database has no uniqueness constraint covering `(space_id, content_hash)`, so the check and insert are not atomic.

The check-then-insert sequence is in [`mcp/server.py`](https://github.com/MihaiBuilds/memory-vault/blob/

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/111) · 2026-07-29 · closed · external user · 0 comments

### [Bug]: MCP remember bypasses canonical ingestion and graph extraction

### What happened?

The MCP `remember` tool bypasses the canonical ingestion path. It embeds and inserts a chunk directly, but never runs entity or relationship extraction. A memory stored through MCP is searchable while remaining absent from the knowledge-graph surfaces.

The direct insert is in [`mcp/server.py`](https://github.com/MihaiBuilds/memory-vault/blob/a0de8c6a2de75071c411cb80685703d3424383b1/src/memory_vault/mcp/server.py#L243-L319). By contrast, both file ingestion and REST text inge

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/100) · 2026-07-29 · closed · external user · 0 comments

### [Bug]: chat and MCP token budgets admit an oversized first result

### What happened?

The chat and MCP token-budget helpers can each admit one arbitrarily oversized search result, so their advertised budgets are not hard caps.

- Chat intentionally keeps at least one result, but never truncates that final result. One large memory can therefore exceed `_PROMPT_TOKEN_BUDGET` by orders of magnitude in [`_apply_token_budget`](https://github.com/MihaiBuilds/memory-vault/blob/a0de8c6a2de75071c411cb80685703d3424383b1/src/memory_vault/api/routers/chat.py#L149-L177).
-

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/99) · 2026-07-29 · closed · external user · 0 comments

### [Bug]: forget tool soft-deletes only — no compaction path causes unbounded storage growth

### What happened?

The forget tool performs a soft-delete: it sets importance to 0 and marks the chunk in metadata, but the row remains in the database permanently. The docstring notes that chunks "stay in the database for potential recovery," which is a reasonable design intent — but there is currently no recovery tool exposed via MCP, and no compaction or vacuum mechanism either. The result is all cost and no benefit: every forgotten chunk is dead weight that accumulates indefinitely.
In the 

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/74) · 2026-07-14 · closed · external user · 4 comments

### [Feature]: Add to MCP Server ability to create, delete, list, status pgvector memory spaces

### What problem are you trying to solve?

For example memory-vault has spaces (namespaces), and recall filters by them: recall(query, spaces=["projectA"]) like default.  let mcp manage namespaces so we can create separate memories on a per project basis

### Proposed solution (optional)

_No response_

### Alternatives you've considered

_No response_

### Which tier should this land in?

Free / open-source core

### Pre-flight

- [x] I checked the README's Limitations section and this isn't a 

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/48) · 2026-06-19 · open · external user · 2 comments

## Most recent

### [Bug]: offset-aware since timestamps are relabelled instead of converted

### What happened?

Offset-aware `since` timestamps are relabelled as UTC rather than converted to UTC, shifting the instant used by search.

Both REST and MCP parse with `datetime.fromisoformat(...)` and then call `.replace(tzinfo=UTC)`:

- [REST search](https://github.com/MihaiBuilds/memory-vault/blob/a0de8c6a2de75071c411cb80685703d3424383b1/src/memory_vault/api/routers/search.py#L19-L31)
- [MCP recall](https://github.com/MihaiBuilds/memory-vault/blob/a0de8c6a2de75071c411cb80685703d3424383b1/s

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/105) · 2026-07-29 · closed · external user · 0 comments

### [Bug]: split </think> tags across SSE chunks can discard the final answer

### What happened?

The OpenAI-compatible SSE filter can discard the final answer when a closing `</think>` tag is split across response chunks.

While the parser is inside a thinking block, it clears the entire buffer whenever a complete closing tag is not present. That also discards a suffix such as `</thi` that could become a delimiter when the next chunk arrives. The following `nk>ANSWER` chunk is then still treated as reasoning and discarded too.

The behavior is in [`_stream_openai_compat`

[Read the thread](https://github.com/MihaiBuilds/memory-vault/issues/98) · 2026-07-29 · closed · external user · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/MihaiBuilds/memory-vault/issues).
