# Working with Multiple Sessions Manage multiple independent conversations simultaneously. > **Runnable example:** [recipe/multiple-sessions.cs](recipe/multiple-sessions.cs) > > ```bash > dotnet run recipe/multiple-sessions.cs > ``` ## Example scenario You need to run multiple conversations in parallel, each with its own context and history. ## C# ```csharp using GitHub.Copilot.SDK; await using var client = new CopilotClient(); await client.StartAsync(); // Create multiple independent sessions var session1 = await client.CreateSessionAsync(new SessionConfig { Model = "gpt-5" }); var session2 = await client.CreateSessionAsync(new SessionConfig { Model = "gpt-5" }); var session3 = await client.CreateSessionAsync(new SessionConfig { Model = "claude-sonnet-4.5" }); // Each session maintains its own conversation history await session1.SendAsync(new MessageOptions { Prompt = "You are helping with a Python project" }); await session2.SendAsync(new MessageOptions { Prompt = "You are helping with a TypeScript project" }); await session3.SendAsync(new MessageOptions { Prompt = "You are helping with a Go project" }); // Follow-up messages stay in their respective contexts await session1.SendAsync(new MessageOptions { Prompt = "How do I create a virtual environment?" }); await session2.SendAsync(new MessageOptions { Prompt = "How do I set up tsconfig?" }); await session3.SendAsync(new MessageOptions { Prompt = "How do I initialize a module?" }); // Clean up all sessions await session1.DisposeAsync(); await session2.DisposeAsync(); await session3.DisposeAsync(); ``` ## Custom session IDs Use custom IDs for easier tracking: ```csharp var session = await client.CreateSessionAsync(new SessionConfig { SessionId = "user-123-chat", Model = "gpt-5" }); Console.WriteLine(session.SessionId); // "user-123-chat" ``` ## Listing sessions ```csharp var sessions = await client.ListSessionsAsync(); foreach (var sessionInfo in sessions) { Console.WriteLine($"Session: {sessionInfo.SessionId}"); } ``` ## Deleting sessions ```csharp // Delete a specific session await client.DeleteSessionAsync("user-123-chat"); ``` ## Use cases - **Multi-user applications**: One session per user - **Multi-task workflows**: Separate sessions for different tasks - **A/B testing**: Compare responses from different models