diff --git a/loop/server/loophttp.go b/loop/server/loophttp.go
index 0819459..94d1037 100644
--- a/loop/server/loophttp.go
+++ b/loop/server/loophttp.go
@@ -76,6 +76,7 @@
 	InitialCommit        string                        `json:"initial_commit"`
 	Title                string                        `json:"title"`
 	BranchName           string                        `json:"branch_name,omitempty"`
+	BranchPrefix         string                        `json:"branch_prefix,omitempty"`
 	Hostname             string                        `json:"hostname"`    // deprecated
 	WorkingDir           string                        `json:"working_dir"` // deprecated
 	OS                   string                        `json:"os"`          // deprecated
@@ -1267,6 +1268,7 @@
 		InitialCommit:        s.agent.SketchGitBase(),
 		Title:                s.agent.Title(),
 		BranchName:           s.agent.BranchName(),
+		BranchPrefix:         s.agent.BranchPrefix(),
 		OS:                   s.agent.OS(),
 		OutsideHostname:      s.agent.OutsideHostname(),
 		InsideHostname:       s.hostname,
diff --git a/loop/server/loophttp_test.go b/loop/server/loophttp_test.go
index 8575253..59c5ac9 100644
--- a/loop/server/loophttp_test.go
+++ b/loop/server/loophttp_test.go
@@ -28,6 +28,7 @@
 	initialCommit            string
 	title                    string
 	branchName               string
+	branchPrefix             string
 	workingDir               string
 	sessionID                string
 }
@@ -232,6 +233,7 @@
 func (m *mockAgent) Diff(commit *string) (string, error)         { return "", nil }
 func (m *mockAgent) OS() string                                  { return "linux" }
 func (m *mockAgent) SessionID() string                           { return m.sessionID }
+func (m *mockAgent) BranchPrefix() string                        { return m.branchPrefix }
 func (m *mockAgent) CurrentTodoContent() string                  { return "" } // Mock returns empty for simplicity
 func (m *mockAgent) OutstandingLLMCallCount() int                { return 0 }
 func (m *mockAgent) OutstandingToolCalls() []string              { return nil }
@@ -262,6 +264,7 @@
 		initialCommit:            "abcd1234",
 		title:                    "Test Title",
 		branchName:               "sketch/test-branch",
+		branchPrefix:             "sketch/",
 	}
 
 	// Add the initial messages before creating the server
@@ -395,7 +398,8 @@
 func TestGitRawDiffHandler(t *testing.T) {
 	// Create a mock agent
 	mockAgent := &mockAgent{
-		workingDir: t.TempDir(), // Use a temp directory
+		workingDir:   t.TempDir(), // Use a temp directory
+		branchPrefix: "sketch/",
 	}
 
 	// Create the server with the mock agent
@@ -441,7 +445,8 @@
 func TestGitShowHandler(t *testing.T) {
 	// Create a mock agent
 	mockAgent := &mockAgent{
-		workingDir: t.TempDir(), // Use a temp directory
+		workingDir:   t.TempDir(), // Use a temp directory
+		branchPrefix: "sketch/",
 	}
 
 	// Create the server with the mock agent
@@ -480,6 +485,7 @@
 		messages:     []loop.AgentMessage{},
 		messageCount: 0,
 		sessionID:    "test-session",
+		branchPrefix: "sketch/",
 	}
 
 	ctx := context.Background()
@@ -495,7 +501,9 @@
 // TestPortEventsEndpoint tests the /port-events HTTP endpoint
 func TestPortEventsEndpoint(t *testing.T) {
 	// Create a mock agent that implements the CodingAgent interface
-	agent := &mockAgent{}
+	agent := &mockAgent{
+		branchPrefix: "sketch/",
+	}
 
 	// Create a server with the mock agent
 	server, err := server.New(agent, nil)
@@ -537,7 +545,9 @@
 
 // TestPortEventsEndpointMethodNotAllowed tests that non-GET requests are rejected
 func TestPortEventsEndpointMethodNotAllowed(t *testing.T) {
-	agent := &mockAgent{}
+	agent := &mockAgent{
+		branchPrefix: "sketch/",
+	}
 	server, err := server.New(agent, nil)
 	if err != nil {
 		t.Fatalf("Failed to create server: %v", err)
