microsoft / microsoft/agent-framework

.NET: Add `ConversationStoreFactory` API for custom DevUI storage implementations

Open
#3,000 5 comments 0 reactions 1 assignee View on GitHub

@westey-m is already working on this.

Since Jan 5, 2026.

.NET memory
Dominant language
Python
Stars
13.6k
Forks
2.3k
Avg merge
2d 45m
Merged PRs (30d)
358

Description

When using DevUI with a custom ChatMessageStoreFactory for persistent thread storage, conversations are not persisted across application restarts because there's no equivalent factory API for the conversation listing functionality.

The framework provides an elegant factory pattern for customizing thread message storage: However, DevUI's conversation listing (GET /v1/conversations?agent_id=X) relies on separate internal services IConversationStorage, IAgentConversationIndex that only have in-memory implementations and no equivalent factory API for customization.

UPDATE: The problem is more complex than initially expected.

Sub-Issue 1: Conversation ID
Is conversation preservation actually supported? When messages are saved to a custom store, there's no way for the store to know the associated Conversation ID. The store serialization is not used, nor is there another way to know the current thread from within the message store.

Sub-Issue 2: Application Restarts
Even if messages are persisted, there's no public or supported way to hook into the IConversationStorage interfaces - they're internal. This creates a disconnect: a message store can save messages, but when DevUI requests chat history, there's no API endpoint to attach to, so nothing responds.

I'd appreciate input here cause now I am questioning if this is even intended or just not yet implemented. It kind of feels like that attaching a message store is probably not the use-case at all for DevUI.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.