package main import ( "context" "fmt" "log" copilot "github.com/github/copilot-sdk/go" ) func main() { ctx := context.Background() client := copilot.NewClient(nil) if err := client.Start(ctx); err != nil { log.Fatal(err) } defer client.Stop() // Create multiple independent sessions session1, err := client.CreateSession(ctx, &copilot.SessionConfig{ OnPermissionRequest: copilot.PermissionHandler.ApproveAll, Model: "gpt-5.4", }) if err != nil { log.Fatal(err) } defer session1.Disconnect() session2, err := client.CreateSession(ctx, &copilot.SessionConfig{ OnPermissionRequest: copilot.PermissionHandler.ApproveAll, Model: "gpt-5.4", }) if err != nil { log.Fatal(err) } defer session2.Disconnect() session3, err := client.CreateSession(ctx, &copilot.SessionConfig{ OnPermissionRequest: copilot.PermissionHandler.ApproveAll, Model: "claude-sonnet-4.6", }) if err != nil { log.Fatal(err) } defer session3.Disconnect() fmt.Println("Created 3 independent sessions") // Each session maintains its own conversation history session1.Send(ctx, copilot.MessageOptions{Prompt: "You are helping with a Python project"}) session2.Send(ctx, copilot.MessageOptions{Prompt: "You are helping with a TypeScript project"}) session3.Send(ctx, copilot.MessageOptions{Prompt: "You are helping with a Go project"}) fmt.Println("Sent initial context to all sessions") // Follow-up messages stay in their respective contexts session1.Send(ctx, copilot.MessageOptions{Prompt: "How do I create a virtual environment?"}) session2.Send(ctx, copilot.MessageOptions{Prompt: "How do I set up tsconfig?"}) session3.Send(ctx, copilot.MessageOptions{Prompt: "How do I initialize a module?"}) fmt.Println("Sent follow-up questions to each session") fmt.Println("All sessions will be disconnected on exit") }