diff --git a/claudetool/about_sketch.txt b/claudetool/about_sketch.txt
index fada880..63ab2e0 100644
--- a/claudetool/about_sketch.txt
+++ b/claudetool/about_sketch.txt
@@ -6,7 +6,7 @@
 ## How to Use Sketch
 - Interact with Sketch by describing what you want it to do or answer.
 - Sketch runs tools and processes your request, mostly autonomously. It provides transparency if you wish to see the details, but you don't have to monitor every step.
-- Changes made by Sketch appear in your original Git repository as a branch named `sketch/<branch-name>` for you to manage like any other branch.
+- Changes made by Sketch appear in your original Git repository as a branch for you to manage like any other branch.
 - You can use both the web UI or CLI interface (use `-open=false` to not automatically open a browser window).
 - Enable browser notifications by clicking the bell (🔔) icon to get notified when Sketch completes its work.
 
@@ -46,7 +46,7 @@
   In the terminal UI, you may prefix any line with an exclamation mark for it to be interpreted as a command (e.g. !ls).
 
 ## Git Integration
-{{ $branch := "foo" }}
+{{ $branch := "sketch/example-branch-name" }}
 {{ if .Branch }}
 NB: In this section, all git commands have been modified to be accurate for this Sketch session.
 {{ $branch = .Branch}}
@@ -57,9 +57,9 @@
 - The UI keeps track of the latest branch it pushed and displays it prominently.
 - You can integrate Sketch's changes using:
   ```
-  git cherry-pick $(git merge-base origin/main sketch/{{$branch}})
-  git merge sketch/{{$branch}}
-  git reset --hard sketch/{{$branch}}
+  git cherry-pick $(git merge-base origin/main {{$branch}})
+  git merge {{$branch}}
+  git reset --hard {{$branch}}
   ```
 - You can ask Sketch to `git fetch sketch-host` and rebase onto another commit.
 - Sketch is good at helping you rebase, merge/squash commits, rewrite commit messages, and other Git operations.
diff --git a/loop/agent.go b/loop/agent.go
index 949682b..0d32420 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -1,7 +1,6 @@
 package loop
 
 import (
-	"cmp"
 	"context"
 	_ "embed"
 	"encoding/json"
@@ -12,7 +11,6 @@
 	"os"
 	"os/exec"
 	"path/filepath"
-	"regexp"
 	"runtime/debug"
 	"slices"
 	"strconv"
@@ -98,12 +96,15 @@
 	// (Typically, this is "sketch-base")
 	SketchGitBaseRef() string
 
-	// Title returns the current title of the conversation.
-	Title() string
+	// Slug returns the slug identifier for this session.
+	Slug() string
 
 	// BranchName returns the git branch name for the conversation.
 	BranchName() string
 
+	// IncrementRetryNumber increments the retry number for branch naming conflicts.
+	IncrementRetryNumber()
+
 	// OS returns the operating system of the client.
 	OS() string
 
@@ -322,19 +323,58 @@
 	gitRemoteAddr string          // HTTP URL of the host git repo
 	upstream      string          // upstream branch for git work
 	seenCommits   map[string]bool // Track git commits we've already seen (by hash)
-	branchName    string
+	slug          string          // Human-readable session identifier
+	retryNumber   int             // Number to append when branch conflicts occur
 }
 
-func (ags *AgentGitState) SetBranchName(branchName string) {
+func (ags *AgentGitState) SetSlug(slug string) {
 	ags.mu.Lock()
 	defer ags.mu.Unlock()
-	ags.branchName = branchName
+	if ags.slug != slug {
+		ags.retryNumber = 0
+	}
+	ags.slug = slug
 }
 
-func (ags *AgentGitState) BranchName() string {
+func (ags *AgentGitState) Slug() string {
 	ags.mu.Lock()
 	defer ags.mu.Unlock()
-	return ags.branchName
+	return ags.slug
+}
+
+func (ags *AgentGitState) IncrementRetryNumber() {
+	ags.mu.Lock()
+	defer ags.mu.Unlock()
+	ags.retryNumber++
+}
+
+// HasSeenCommits returns true if any commits have been processed
+func (ags *AgentGitState) HasSeenCommits() bool {
+	ags.mu.Lock()
+	defer ags.mu.Unlock()
+	return len(ags.seenCommits) > 0
+}
+
+func (ags *AgentGitState) RetryNumber() int {
+	ags.mu.Lock()
+	defer ags.mu.Unlock()
+	return ags.retryNumber
+}
+
+func (ags *AgentGitState) BranchName(prefix string) string {
+	ags.mu.Lock()
+	defer ags.mu.Unlock()
+	return ags.branchNameLocked(prefix)
+}
+
+func (ags *AgentGitState) branchNameLocked(prefix string) string {
+	if ags.slug == "" {
+		return ""
+	}
+	if ags.retryNumber == 0 {
+		return prefix + ags.slug
+	}
+	return fmt.Sprintf("%s%s%d", prefix, ags.slug, ags.retryNumber)
 }
 
 func (ags *AgentGitState) Upstream() string {
@@ -356,7 +396,6 @@
 	codebase          *onstart.Codebase
 	startedAt         time.Time
 	originalBudget    conversation.Budget
-	title             string
 	codereview        *codereview.CodeReviewer
 	// State machine to track agent state
 	stateMachine *StateMachine
@@ -590,17 +629,19 @@
 
 func (a *Agent) URL() string { return a.url }
 
-// Title returns the current title of the conversation.
-// If no title has been set, returns an empty string.
-func (a *Agent) Title() string {
-	a.mu.Lock()
-	defer a.mu.Unlock()
-	return a.title
-}
-
 // BranchName returns the git branch name for the conversation.
 func (a *Agent) BranchName() string {
-	return a.gitState.BranchName()
+	return a.gitState.BranchName(a.config.BranchPrefix)
+}
+
+// Slug returns the slug identifier for this conversation.
+func (a *Agent) Slug() string {
+	return a.gitState.Slug()
+}
+
+// IncrementRetryNumber increments the retry number for branch naming conflicts
+func (a *Agent) IncrementRetryNumber() {
+	a.gitState.IncrementRetryNumber()
 }
 
 // OutstandingLLMCallCount returns the number of outstanding LLM calls.
@@ -688,21 +729,15 @@
 	return a.firstMessageIndex
 }
 
-// SetTitle sets the title of the conversation.
-func (a *Agent) SetTitle(title string) {
+// SetSlug sets a human-readable identifier for the conversation.
+func (a *Agent) SetSlug(slug string) {
 	a.mu.Lock()
 	defer a.mu.Unlock()
-	a.title = title
-}
 
-// SetBranch sets the branch name of the conversation.
-func (a *Agent) SetBranch(branchName string) {
-	a.mu.Lock()
-	defer a.mu.Unlock()
-	a.gitState.SetBranchName(branchName)
+	a.gitState.SetSlug(slug)
 	convo, ok := a.convo.(*conversation.Convo)
 	if ok {
-		convo.ExtraData["branch"] = branchName
+		convo.ExtraData["branch"] = a.BranchName()
 	}
 }
 
@@ -1132,28 +1167,16 @@
 
 	// Define a permission callback for the bash tool to check if the branch name is set before allowing git commits
 	bashPermissionCheck := func(command string) error {
-		// Check if branch name is set
-		a.mu.Lock()
-		branchSet := a.gitState.BranchName() != ""
-		a.mu.Unlock()
-
-		// If branch is set, all commands are allowed
-		if branchSet {
-			return nil
+		if a.gitState.Slug() != "" {
+			return nil // branch is set up
 		}
-
-		// If branch is not set, check if this is a git commit command
 		willCommit, err := bashkit.WillRunGitCommit(command)
 		if err != nil {
-			// If there's an error checking, we should allow the command to proceed
-			return nil
+			return nil // fail open
 		}
-
-		// If it's a git commit and branch is not set, return an error
 		if willCommit {
-			return fmt.Errorf("you must use the precommit tool before making git commits")
+			return fmt.Errorf("you must use the set-slug tool before making git commits")
 		}
-
 		return nil
 	}
 
@@ -1178,7 +1201,7 @@
 
 	convo.Tools = []*llm.Tool{
 		bashTool, claudetool.Keyword, claudetool.Patch,
-		claudetool.Think, claudetool.TodoRead, claudetool.TodoWrite, a.titleTool(), a.precommitTool(), makeDoneTool(a.codereview),
+		claudetool.Think, claudetool.TodoRead, claudetool.TodoWrite, a.setSlugTool(), a.commitMessageStyleTool(), makeDoneTool(a.codereview),
 		a.codereview.Tool(), claudetool.AboutSketch,
 	}
 
@@ -1261,99 +1284,62 @@
 	return false
 }
 
-func (a *Agent) titleTool() *llm.Tool {
-	description := `Sets the conversation title.`
-	titleTool := &llm.Tool{
-		Name:        "title",
-		Description: description,
+func (a *Agent) setSlugTool() *llm.Tool {
+	return &llm.Tool{
+		Name:        "set-slug",
+		Description: `Set a short slug as an identifier for this conversation.`,
 		InputSchema: json.RawMessage(`{
 	"type": "object",
 	"properties": {
-		"title": {
+		"slug": {
 			"type": "string",
-			"description": "Brief title (3-6 words) in imperative tense. Focus on core action/component."
+			"description": "A 2-3 word alphanumeric hyphenated slug, imperative tense"
 		}
 	},
-	"required": ["title"]
+	"required": ["slug"]
 }`),
 		Run: func(ctx context.Context, input json.RawMessage) ([]llm.Content, error) {
 			var params struct {
-				Title string `json:"title"`
+				Slug string `json:"slug"`
 			}
 			if err := json.Unmarshal(input, &params); err != nil {
 				return nil, err
 			}
-
-			// We don't allow changing the title once set to be consistent with the previous behavior
-			// and to prevent accidental title changes
-			t := a.Title()
-			if t != "" {
-				return nil, fmt.Errorf("title already set to: %s", t)
+			// Prevent slug changes if there have been git changes
+			// This lets the agent change its mind about a good slug,
+			// while ensuring that once a branch has been pushed, it remains stable.
+			if s := a.Slug(); s != "" && s != params.Slug && a.gitState.HasSeenCommits() {
+				return nil, fmt.Errorf("slug already set to %q", s)
 			}
-
-			if params.Title == "" {
-				return nil, fmt.Errorf("title parameter cannot be empty")
+			if params.Slug == "" {
+				return nil, fmt.Errorf("slug parameter cannot be empty")
 			}
-
-			a.SetTitle(params.Title)
-			response := fmt.Sprintf("Title set to %q", params.Title)
-			return llm.TextContent(response), nil
+			slug := cleanSlugName(params.Slug)
+			if slug == "" {
+				return nil, fmt.Errorf("slug parameter could not be converted to a valid slug")
+			}
+			a.SetSlug(slug)
+			// TODO: do this by a call to outie, rather than semi-guessing from innie
+			if branchExists(a.workingDir, a.BranchName()) {
+				return nil, fmt.Errorf("slug %q already exists; please choose a different slug", slug)
+			}
+			return llm.TextContent("OK"), nil
 		},
 	}
-	return titleTool
 }
 
-func (a *Agent) precommitTool() *llm.Tool {
-	description := `Creates a git branch for tracking work and provides git commit message style guidance. MANDATORY: You must use this tool before making any git commits.`
+func (a *Agent) commitMessageStyleTool() *llm.Tool {
+	description := `Provides git commit message style guidance. MANDATORY: You must use this tool before making any git commits.`
 	preCommit := &llm.Tool{
-		Name:        "precommit",
+		Name:        "commit-message-style",
 		Description: description,
-		InputSchema: json.RawMessage(`{
-	"type": "object",
-	"properties": {
-		"branch_name": {
-			"type": "string",
-			"description": "A 2-3 word alphanumeric hyphenated slug for the git branch name"
-		}
-	},
-	"required": ["branch_name"]
-}`),
+		InputSchema: llm.EmptySchema(),
 		Run: func(ctx context.Context, input json.RawMessage) ([]llm.Content, error) {
-			var params struct {
-				BranchName string `json:"branch_name"`
-			}
-			if err := json.Unmarshal(input, &params); err != nil {
-				return nil, err
-			}
-
-			b := a.BranchName()
-			if b != "" {
-				return nil, fmt.Errorf("branch already set to %s; do not create a new branch", b)
-			}
-
-			if params.BranchName == "" {
-				return nil, fmt.Errorf("branch_name must not be empty")
-			}
-			if params.BranchName != cleanBranchName(params.BranchName) {
-				return nil, fmt.Errorf("branch_name parameter must be alphanumeric hyphenated slug")
-			}
-			branchName := a.config.BranchPrefix + params.BranchName
-			if branchExists(a.workingDir, branchName) {
-				return nil, fmt.Errorf("branch %q already exists; please choose a different branch name", branchName)
-			}
-
-			a.SetBranch(branchName)
-			response := fmt.Sprintf("switched to branch %q - DO NOT change branches unless explicitly requested", branchName)
-
 			styleHint, err := claudetool.CommitMessageStyleHint(ctx, a.repoRoot)
 			if err != nil {
 				slog.DebugContext(ctx, "failed to get commit message style hint", "err", err)
 			}
-			if len(styleHint) > 0 {
-				response += "\n\n" + styleHint
-			}
-
-			return llm.TextContent(response), nil
+			return llm.TextContent(styleHint), nil
 		},
 	}
 	return preCommit
@@ -1853,7 +1839,7 @@
 }
 
 // handleGitCommits() highlights new commits to the user. When running
-// under docker, new HEADs are pushed to a branch according to the title.
+// under docker, new HEADs are pushed to a branch according to the slug.
 func (ags *AgentGitState) handleGitCommits(ctx context.Context, sessionID string, repoRoot string, baseRef string, branchPrefix string) ([]AgentMessage, []*GitCommit, error) {
 	ags.mu.Lock()
 	defer ags.mu.Unlock()
@@ -1922,25 +1908,21 @@
 			commits = append(commits, headCommit)
 		}
 
-		originalBranch := cmp.Or(ags.branchName, branchPrefix+sessionID)
-		branch := originalBranch
-
 		// TODO: I don't love the force push here. We could see if the push is a fast-forward, and,
 		// if it's not, we could make a backup with a unique name (perhaps append a timestamp) and
 		// then use push with lease to replace.
 
-		// Parse the original branch name to extract base name and starting number
-		baseBranch, startNum := parseBranchNameAndNumber(originalBranch)
-
-		// Try up to 10 times with different branch names if the branch is checked out on the remote
+		// Try up to 10 times with incrementing retry numbers if the branch is checked out on the remote
 		var out []byte
 		var err error
+		originalRetryNumber := ags.retryNumber
+		originalBranchName := ags.branchNameLocked(branchPrefix)
 		for retries := range 10 {
 			if retries > 0 {
-				// Increment from the starting number (foo1->foo2, foo2->foo3, etc.)
-				branch = fmt.Sprintf("%s%d", baseBranch, startNum+retries)
+				ags.IncrementRetryNumber()
 			}
 
+			branch := ags.branchNameLocked(branchPrefix)
 			cmd = exec.Command("git", "push", "--force", ags.gitRemoteAddr, "HEAD:refs/heads/"+branch)
 			cmd.Dir = repoRoot
 			out, err = cmd.CombinedOutput()
@@ -1955,25 +1937,19 @@
 				// This is a different error, so don't retry
 				break
 			}
-
-			// If we're on the last retry, we'll report the error
-			if retries == 9 {
-				break
-			}
 		}
 
 		if err != nil {
 			msgs = append(msgs, errorMessage(fmt.Errorf("git push to host: %s: %v", out, err)))
 		} else {
-			headCommit.PushedBranch = branch
-			// Update the agent's branch name if we ended up using a different one
-			if branch != originalBranch {
-				ags.branchName = branch
-				// Notify user why the branch name was changed
+			finalBranch := ags.branchNameLocked(branchPrefix)
+			headCommit.PushedBranch = finalBranch
+			if ags.retryNumber != originalRetryNumber {
+				// Notify user that the branch name was changed, and why
 				msgs = append(msgs, AgentMessage{
 					Type:      AutoMessageType,
 					Timestamp: time.Now(),
-					Content:   fmt.Sprintf("Branch renamed from %s to %s because the original branch is currently checked out on the remote.", originalBranch, branch),
+					Content:   fmt.Sprintf("Branch renamed from %s to %s because the original branch is currently checked out on the remote.", originalBranchName, finalBranch),
 				})
 			}
 		}
@@ -1991,7 +1967,7 @@
 	return msgs, commits, nil
 }
 
-func cleanBranchName(s string) string {
+func cleanSlugName(s string) string {
 	return strings.Map(func(r rune) rune {
 		// lowercase
 		if r >= 'A' && r <= 'Z' {
@@ -2009,27 +1985,6 @@
 	}, s)
 }
 
-// parseBranchNameAndNumber extracts the base branch name and starting number.
-// For "sketch/foo1" returns ("sketch/foo", 1)
-// For "sketch/foo" returns ("sketch/foo", 0)
-func parseBranchNameAndNumber(branchName string) (baseBranch string, startNum int) {
-	re := regexp.MustCompile(`^(.+?)(\d+)$`)
-	matches := re.FindStringSubmatch(branchName)
-
-	if len(matches) != 3 {
-		// No trailing digits found
-		return branchName, 0
-	}
-
-	num, err := strconv.Atoi(matches[2])
-	if err != nil {
-		// If parsing fails, treat as no number
-		return branchName, 0
-	}
-
-	return matches[1], num
-}
-
 // parseGitLog parses the output of git log with format '%H%x00%s%x00%b%x00'
 // and returns an array of GitCommit structs.
 func parseGitLog(output string) []GitCommit {
diff --git a/loop/agent_system_prompt.txt b/loop/agent_system_prompt.txt
index 1eccb61..1a3e633 100644
--- a/loop/agent_system_prompt.txt
+++ b/loop/agent_system_prompt.txt
@@ -8,7 +8,7 @@
 Aim for a small diff size while thoroughly completing the requested task.
 Prioritize thoughtful analysis and critical engagement over agreeability.
 
-Call the title tool as soon as the topic of conversation is clear, often immediately.
+Call the set-slug tool as soon as the topic of conversation is clear, often immediately.
 
 Break down the overall goal into a series of smaller steps.
 Use the todo_read and todo_write tools to organize and track your work systematically.
diff --git a/loop/agent_test.go b/loop/agent_test.go
index 30affbe..1fa6a9e 100644
--- a/loop/agent_test.go
+++ b/loop/agent_test.go
@@ -91,7 +91,7 @@
 	}
 
 	// Setup a test message that will trigger a simple, predictable response
-	userMessage := "What tools are available to you? Please just list them briefly. (Do not call the title tool.)"
+	userMessage := "What tools are available to you? Please just list them briefly. (Do not call the set-slug tool.)"
 
 	// Send the message to the agent
 	agent.UserMessage(ctx, userMessage)
@@ -807,94 +807,3 @@
 		t.Errorf("Expected Content to be %q, got %q", expected, received.Content)
 	}
 }
-
-func TestBranchNamingIncrement(t *testing.T) {
-	testCases := []struct {
-		name             string
-		originalBranch   string
-		expectedBranches []string
-	}{
-		{
-			name:           "base branch without number",
-			originalBranch: "sketch/test-branch",
-			expectedBranches: []string{
-				"sketch/test-branch",  // retries = 0
-				"sketch/test-branch1", // retries = 1
-				"sketch/test-branch2", // retries = 2
-				"sketch/test-branch3", // retries = 3
-			},
-		},
-		{
-			name:           "branch already has number",
-			originalBranch: "sketch/test-branch1",
-			expectedBranches: []string{
-				"sketch/test-branch1", // retries = 0
-				"sketch/test-branch2", // retries = 1
-				"sketch/test-branch3", // retries = 2
-				"sketch/test-branch4", // retries = 3
-			},
-		},
-		{
-			name:           "branch with larger number",
-			originalBranch: "sketch/test-branch42",
-			expectedBranches: []string{
-				"sketch/test-branch42", // retries = 0
-				"sketch/test-branch43", // retries = 1
-				"sketch/test-branch44", // retries = 2
-				"sketch/test-branch45", // retries = 3
-			},
-		},
-	}
-
-	for _, tc := range testCases {
-		t.Run(tc.name, func(t *testing.T) {
-			// Parse the original branch name to extract base name and starting number
-			baseBranch, startNum := parseBranchNameAndNumber(tc.originalBranch)
-
-			// Simulate the retry logic
-			for retries := range len(tc.expectedBranches) {
-				var branch string
-				if retries > 0 {
-					// This is the same logic used in the actual code
-					branch = fmt.Sprintf("%s%d", baseBranch, startNum+retries)
-				} else {
-					branch = tc.originalBranch
-				}
-
-				if branch != tc.expectedBranches[retries] {
-					t.Errorf("Retry %d: expected %s, got %s", retries, tc.expectedBranches[retries], branch)
-				}
-			}
-		})
-	}
-}
-
-func TestParseBranchNameAndNumber(t *testing.T) {
-	testCases := []struct {
-		branchName     string
-		expectedBase   string
-		expectedNumber int
-	}{
-		{"sketch/test-branch", "sketch/test-branch", 0},
-		{"sketch/test-branch1", "sketch/test-branch", 1},
-		{"sketch/test-branch42", "sketch/test-branch", 42},
-		{"sketch/test-branch-foo", "sketch/test-branch-foo", 0},
-		{"sketch/test-branch-foo123", "sketch/test-branch-foo", 123},
-		{"main", "main", 0},
-		{"main2", "main", 2},
-		{"feature/abc123def", "feature/abc123def", 0},      // number in middle, not at end
-		{"feature/abc123def456", "feature/abc123def", 456}, // number at end
-	}
-
-	for _, tc := range testCases {
-		t.Run(tc.branchName, func(t *testing.T) {
-			base, num := parseBranchNameAndNumber(tc.branchName)
-			if base != tc.expectedBase {
-				t.Errorf("Base: expected %s, got %s", tc.expectedBase, base)
-			}
-			if num != tc.expectedNumber {
-				t.Errorf("Number: expected %d, got %d", tc.expectedNumber, num)
-			}
-		})
-	}
-}
diff --git a/loop/server/loophttp.go b/loop/server/loophttp.go
index 94d1037..5a657f8 100644
--- a/loop/server/loophttp.go
+++ b/loop/server/loophttp.go
@@ -74,7 +74,7 @@
 	MessageCount         int                           `json:"message_count"`
 	TotalUsage           *conversation.CumulativeUsage `json:"total_usage,omitempty"`
 	InitialCommit        string                        `json:"initial_commit"`
-	Title                string                        `json:"title"`
+	Slug                 string                        `json:"slug,omitempty"`
 	BranchName           string                        `json:"branch_name,omitempty"`
 	BranchPrefix         string                        `json:"branch_prefix,omitempty"`
 	Hostname             string                        `json:"hostname"`    // deprecated
@@ -1266,7 +1266,7 @@
 		WorkingDir:   getWorkingDir(),
 		// TODO: Rename this field to sketch-base?
 		InitialCommit:        s.agent.SketchGitBase(),
-		Title:                s.agent.Title(),
+		Slug:                 s.agent.Slug(),
 		BranchName:           s.agent.BranchName(),
 		BranchPrefix:         s.agent.BranchPrefix(),
 		OS:                   s.agent.OS(),
diff --git a/loop/server/loophttp_test.go b/loop/server/loophttp_test.go
index 59c5ac9..0d28fca 100644
--- a/loop/server/loophttp_test.go
+++ b/loop/server/loophttp_test.go
@@ -26,11 +26,12 @@
 	subscribers              []chan *loop.AgentMessage
 	stateTransitionListeners []chan loop.StateTransition
 	initialCommit            string
-	title                    string
 	branchName               string
 	branchPrefix             string
 	workingDir               string
 	sessionID                string
+	slug                     string
+	retryNumber              int
 }
 
 func (m *mockAgent) NewIterator(ctx context.Context, nextMessageIdx int) loop.MessageIterator {
@@ -206,12 +207,6 @@
 	return "sketch-base-test-session"
 }
 
-func (m *mockAgent) Title() string {
-	m.mu.RLock()
-	defer m.mu.RUnlock()
-	return m.title
-}
-
 func (m *mockAgent) BranchName() string {
 	m.mu.RLock()
 	defer m.mu.RUnlock()
@@ -250,6 +245,18 @@
 func (m *mockAgent) FirstMessageIndex() int                     { return 0 }
 func (m *mockAgent) DetectGitChanges(ctx context.Context) error { return nil }
 
+func (m *mockAgent) Slug() string {
+	m.mu.RLock()
+	defer m.mu.RUnlock()
+	return m.slug
+}
+
+func (m *mockAgent) IncrementRetryNumber() {
+	m.mu.Lock()
+	defer m.mu.Unlock()
+	m.retryNumber++
+}
+
 func (m *mockAgent) GetPortMonitor() *loop.PortMonitor { return loop.NewPortMonitor() }
 
 // TestSSEStream tests the SSE stream endpoint
@@ -262,9 +269,9 @@
 		subscribers:              []chan *loop.AgentMessage{},
 		stateTransitionListeners: []chan loop.StateTransition{},
 		initialCommit:            "abcd1234",
-		title:                    "Test Title",
 		branchName:               "sketch/test-branch",
 		branchPrefix:             "sketch/",
+		slug:                     "test-slug",
 	}
 
 	// Add the initial messages before creating the server
diff --git a/loop/testdata/agent_loop.httprr b/loop/testdata/agent_loop.httprr
index 90076da..d986b0f 100644
--- a/loop/testdata/agent_loop.httprr
+++ b/loop/testdata/agent_loop.httprr
@@ -1,9 +1,9 @@
 httprr trace v1
-20569 2572
+20364 2575
 POST https://api.anthropic.com/v1/messages HTTP/1.1
 Host: api.anthropic.com
 User-Agent: Go-http-client/1.1
-Content-Length: 20371
+Content-Length: 20166
 Anthropic-Version: 2023-06-01
 Content-Type: application/json
 
@@ -15,7 +15,7 @@
    "content": [
     {
      "type": "text",
-     "text": "What tools are available to you? Please just list them briefly. (Do not call the title tool.)",
+     "text": "What tools are available to you? Please just list them briefly. (Do not call the set-slug tool.)",
      "cache_control": {
       "type": "ephemeral"
      }
@@ -189,35 +189,27 @@
    }
   },
   {
-   "name": "title",
-   "description": "Sets the conversation title.",
+   "name": "set-slug",
+   "description": "Set a short slug as an identifier for this conversation.",
    "input_schema": {
     "type": "object",
     "properties": {
-     "title": {
+     "slug": {
       "type": "string",
-      "description": "Brief title (3-6 words) in imperative tense. Focus on core action/component."
+      "description": "A 2-3 word alphanumeric hyphenated slug, imperative tense"
      }
     },
     "required": [
-     "title"
+     "slug"
     ]
    }
   },
   {
-   "name": "precommit",
-   "description": "Creates a git branch for tracking work and provides git commit message style guidance. MANDATORY: You must use this tool before making any git commits.",
+   "name": "commit-message-style",
+   "description": "Provides git commit message style guidance. MANDATORY: You must use this tool before making any git commits.",
    "input_schema": {
     "type": "object",
-    "properties": {
-     "branch_name": {
-      "type": "string",
-      "description": "A 2-3 word alphanumeric hyphenated slug for the git branch name"
-     }
-    },
-    "required": [
-     "branch_name"
-    ]
+    "properties": {}
    }
   },
   {
@@ -594,7 +586,7 @@
  ],
  "system": [
   {
-   "text": "You are the expert software engineer and architect powering Sketch,\nan agentic coding environment that helps users accomplish coding tasks through autonomous analysis and implementation.\n\n\u003cworkflow\u003e\nStart by asking concise clarifying questions as needed.\nOnce the intent is clear, work autonomously.\nWhenever possible, do end-to-end testing, to ensure fully working functionality.\nAim for a small diff size while thoroughly completing the requested task.\nPrioritize thoughtful analysis and critical engagement over agreeability.\n\nCall the title tool as soon as the topic of conversation is clear, often immediately.\n\nBreak down the overall goal into a series of smaller steps.\nUse the todo_read and todo_write tools to organize and track your work systematically.\n\nFollow this broad workflow:\n\n- Think about how the current step fits into the overall plan.\n- Do research. Good tool choices: bash, think, keyword_search\n- Make edits.\n- If you have completed a standalone chunk of work, make a git commit.\n- Update your todo task list.\n- Repeat.\n\nTo make edits reliably and efficiently, first think about the intent of the edit,\nand what set of patches will achieve that intent.\nThen use the patch tool to make those edits. Combine all edits to any given file into a single patch tool call.\n\nYou may run tool calls in parallel.\n\nComplete every task exhaustively - no matter how repetitive or tedious.\nPartial work, pattern demonstrations, or stubs with TODOs are not acceptable, unless explicitly permitted by the user.\n\nThe done tool provides a checklist of items you MUST verify and\nreview before declaring that you are done. Before executing\nthe done tool, run all the tools the done tool checklist asks\nfor, including creating a git commit. Do not forget to run tests.\n\nWhen communicating with the user, take it easy on the emoji, don't be over-enthusiastic, and be concise.\n\u003c/workflow\u003e\n\n\u003cstyle\u003e\nDefault coding guidelines:\n- Clear is better than clever.\n- Minimal inline comments: non-obvious logic and key decisions only.\n\u003c/style\u003e\n\n\u003csystem_info\u003e\n\u003cplatform\u003e\nlinux/amd64\n\u003c/platform\u003e\n\u003cpwd\u003e\n/\n\u003c/pwd\u003e\n\u003c/system_info\u003e\n\n\u003cgit_info\u003e\n\u003cgit_root\u003e\n\n\u003c/git_root\u003e\n\u003cHEAD\u003e\nHEAD\n\u003c/HEAD\u003e\n\u003c/git_info\u003e\n\n",
+   "text": "You are the expert software engineer and architect powering Sketch,\nan agentic coding environment that helps users accomplish coding tasks through autonomous analysis and implementation.\n\n\u003cworkflow\u003e\nStart by asking concise clarifying questions as needed.\nOnce the intent is clear, work autonomously.\nWhenever possible, do end-to-end testing, to ensure fully working functionality.\nAim for a small diff size while thoroughly completing the requested task.\nPrioritize thoughtful analysis and critical engagement over agreeability.\n\nCall the set-slug tool as soon as the topic of conversation is clear, often immediately.\n\nBreak down the overall goal into a series of smaller steps.\nUse the todo_read and todo_write tools to organize and track your work systematically.\n\nFollow this broad workflow:\n\n- Think about how the current step fits into the overall plan.\n- Do research. Good tool choices: bash, think, keyword_search\n- Make edits.\n- If you have completed a standalone chunk of work, make a git commit.\n- Update your todo task list.\n- Repeat.\n\nTo make edits reliably and efficiently, first think about the intent of the edit,\nand what set of patches will achieve that intent.\nThen use the patch tool to make those edits. Combine all edits to any given file into a single patch tool call.\n\nYou may run tool calls in parallel.\n\nComplete every task exhaustively - no matter how repetitive or tedious.\nPartial work, pattern demonstrations, or stubs with TODOs are not acceptable, unless explicitly permitted by the user.\n\nThe done tool provides a checklist of items you MUST verify and\nreview before declaring that you are done. Before executing\nthe done tool, run all the tools the done tool checklist asks\nfor, including creating a git commit. Do not forget to run tests.\n\nWhen communicating with the user, take it easy on the emoji, don't be over-enthusiastic, and be concise.\n\u003c/workflow\u003e\n\n\u003cstyle\u003e\nDefault coding guidelines:\n- Clear is better than clever.\n- Minimal inline comments: non-obvious logic and key decisions only.\n\u003c/style\u003e\n\n\u003csystem_info\u003e\n\u003cplatform\u003e\nlinux/amd64\n\u003c/platform\u003e\n\u003cpwd\u003e\n/\n\u003c/pwd\u003e\n\u003c/system_info\u003e\n\n\u003cgit_info\u003e\n\u003cgit_root\u003e\n\n\u003c/git_root\u003e\n\u003cHEAD\u003e\nHEAD\n\u003c/HEAD\u003e\n\u003c/git_info\u003e\n\n",
    "type": "text",
    "cache_control": {
     "type": "ephemeral"
@@ -605,24 +597,24 @@
 Anthropic-Organization-Id: 3c473a21-7208-450a-a9f8-80aebda45c1b
 Anthropic-Ratelimit-Input-Tokens-Limit: 200000
 Anthropic-Ratelimit-Input-Tokens-Remaining: 200000
-Anthropic-Ratelimit-Input-Tokens-Reset: 2025-06-04T23:55:09Z
+Anthropic-Ratelimit-Input-Tokens-Reset: 2025-06-05T21:18:00Z
 Anthropic-Ratelimit-Output-Tokens-Limit: 80000
 Anthropic-Ratelimit-Output-Tokens-Remaining: 80000
-Anthropic-Ratelimit-Output-Tokens-Reset: 2025-06-04T23:55:16Z
+Anthropic-Ratelimit-Output-Tokens-Reset: 2025-06-05T21:18:07Z
 Anthropic-Ratelimit-Requests-Limit: 4000
 Anthropic-Ratelimit-Requests-Remaining: 3999
-Anthropic-Ratelimit-Requests-Reset: 2025-06-04T23:55:08Z
+Anthropic-Ratelimit-Requests-Reset: 2025-06-05T21:17:58Z
 Anthropic-Ratelimit-Tokens-Limit: 280000
 Anthropic-Ratelimit-Tokens-Remaining: 280000
-Anthropic-Ratelimit-Tokens-Reset: 2025-06-04T23:55:09Z
+Anthropic-Ratelimit-Tokens-Reset: 2025-06-05T21:18:00Z
 Cf-Cache-Status: DYNAMIC
-Cf-Ray: 94ab5bfea943eb2c-SJC
+Cf-Ray: 94b2b328b80e5c22-SJC
 Content-Type: application/json
-Date: Wed, 04 Jun 2025 23:55:16 GMT
-Request-Id: req_011CPp5pL9yqF3sECoqpoFcU
+Date: Thu, 05 Jun 2025 21:18:07 GMT
+Request-Id: req_011CPqmeAPjukVrzXpwQzJNv
 Server: cloudflare
 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
 Via: 1.1 google
 X-Robots-Tag: none
 
-{"id":"msg_01PHE4acFzybzgXUasdBDqoq","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"Here are the tools available to me:\n\n**File & Code Management:**\n- `bash` - Execute shell commands\n- `patch` - Modify files with precise text edits\n- `keyword_search` - Search for files/code with conceptual queries\n\n**Task Management:**\n- `todo_read` / `todo_write` - Manage structured task lists\n- `think` - Record thoughts, notes, and plans\n\n**Git & Development:**\n- `precommit` - Create git branch and get commit guidance\n- `codereview` - Run automated code review\n- `done` - Complete work with verification checklist\n\n**Browser Automation:**\n- `browser_navigate` - Navigate to URLs\n- `browser_click` - Click elements\n- `browser_type` - Type into input fields\n- `browser_wait_for` - Wait for elements\n- `browser_get_text` - Read page text\n- `browser_eval` - Execute JavaScript\n- `browser_scroll_into_view` - Scroll to elements\n- `browser_resize` - Resize browser window\n- `browser_take_screenshot` - Capture screenshots\n- `browser_read_image` - Read image files\n- `browser_recent_console_logs` / `browser_clear_console_logs` - Manage console logs\n\n**Utilities:**\n- `title` - Set conversation title\n- `about_sketch` - Get info about Sketch environment\n- `multiplechoice` - Present multiple choice questions to user"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":4709,"cache_read_input_tokens":0,"output_tokens":338,"service_tier":"standard"}}
\ No newline at end of file
+{"id":"msg_0147wxZbm7bkJ7gxhgALTjJb","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"Here are the tools available to me:\n\n**File & Code Operations:**\n- `bash` - Execute shell commands\n- `keyword_search` - Search for files/code with keywords\n- `patch` - Make precise text edits to files\n\n**Task Management:**\n- `think` - Take notes and form plans\n- `todo_read` / `todo_write` - Track and manage task lists\n\n**Git & Code Quality:**\n- `commit-message-style` - Get git commit message guidance\n- `codereview` - Run automated code review\n- `done` - Complete work with verification checklist\n\n**Browser Automation:**\n- `browser_navigate` - Navigate to URLs\n- `browser_click` - Click elements\n- `browser_type` - Type into form fields\n- `browser_wait_for` - Wait for elements\n- `browser_get_text` - Read page content\n- `browser_eval` - Execute JavaScript\n- `browser_scroll_into_view` - Scroll to elements\n- `browser_resize` - Resize browser window\n- `browser_recent_console_logs` - Get console logs\n- `browser_clear_console_logs` - Clear console logs\n- `browser_take_screenshot` - Capture screenshots\n- `browser_read_image` - Read image files\n\n**Interaction:**\n- `set-slug` - Set conversation identifier\n- `about_sketch` - Get help with Sketch functionality\n- `multiplechoice` - Present multiple choice questions"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":4672,"cache_read_input_tokens":0,"output_tokens":338,"service_tier":"standard"}}
\ No newline at end of file
diff --git a/termui/termui.go b/termui/termui.go
index 24f663b..bbe04b4 100644
--- a/termui/termui.go
+++ b/termui/termui.go
@@ -44,10 +44,10 @@
  ⌨️  {{.input.path -}}
 {{else if eq .msg.ToolName "done" -}}
 {{/* nothing to show here, the agent will write more in its next message */}}
-{{else if eq .msg.ToolName "title" -}}
-🏷️  {{.input.title}}
-{{else if eq .msg.ToolName "precommit" -}}
-🌱 git branch: {{.branch_prefix}}{{.input.branch_name}}
+{{else if eq .msg.ToolName "set-slug" -}}
+🐌 {{.input.slug}}
+{{else if eq .msg.ToolName "commit-message-style" -}}
+🌱 learn git commit message style
 {{else if eq .msg.ToolName "about_sketch" -}}
 📚 About Sketch
 {{else if eq .msg.ToolName "codereview" -}}
diff --git a/webui/src/fixtures/dummy.ts b/webui/src/fixtures/dummy.ts
index 39148cd..9eeb320 100644
--- a/webui/src/fixtures/dummy.ts
+++ b/webui/src/fixtures/dummy.ts
@@ -358,11 +358,11 @@
       codereview: 1,
       done: 2,
       patch: 1,
-      title: 1,
+
     },
   },
   initial_commit: "a6c5a08a451ef1082774a7affb6af58775e7bc16",
-  title: "Add a line to dummy.txt and commit the change",
+  slug: "add-line-dummy-commit",
   hostname: "MacBook-Pro-9.local",
   session_id: "dummy-session",
   ssh_available: false,
diff --git a/webui/src/types.ts b/webui/src/types.ts
index 713f9f6..81d2d1d 100644
--- a/webui/src/types.ts
+++ b/webui/src/types.ts
@@ -66,7 +66,7 @@
 	message_count: number;
 	total_usage?: CumulativeUsage | null;
 	initial_commit: string;
-	title: string;
+	slug?: string;
 	branch_name?: string;
 	branch_prefix?: string;
 	hostname: string;
diff --git a/webui/src/web-components/DEAR_LLM.md b/webui/src/web-components/DEAR_LLM.md
index d0cf3d7..13fd9d1 100644
--- a/webui/src/web-components/DEAR_LLM.md
+++ b/webui/src/web-components/DEAR_LLM.md
@@ -17,8 +17,8 @@
            - **sketch-tool-card-done**
            - **sketch-tool-card-patch**
            - **sketch-tool-card-take-screenshot**
-           - **sketch-tool-card-title**
-           - **sketch-tool-card-precommit**
+           - **sketch-tool-card-set-slug**
+           - **sketch-tool-card-commit-message-style**
            - **sketch-tool-card-multiple-choice**
            - **sketch-tool-card-generic** (fallback for unknown tools)
              - All of these specialized components **contain** or **compose with** the base **sketch-tool-card**
diff --git a/webui/src/web-components/sketch-app-shell.ts b/webui/src/web-components/sketch-app-shell.ts
index 07c355d..89ebcd5 100644
--- a/webui/src/web-components/sketch-app-shell.ts
+++ b/webui/src/web-components/sketch-app-shell.ts
@@ -164,7 +164,7 @@
       text-overflow: ellipsis;
     }
 
-    .chat-title {
+    .slug-title {
       margin: 0;
       padding: 0;
       color: rgba(82, 82, 82, 0.85);
@@ -448,26 +448,26 @@
   messages: AgentMessage[] = [];
 
   @property()
-  set title(value: string) {
-    const oldValue = this._title;
-    this._title = value;
-    this.requestUpdate("title", oldValue);
-    // Update document title when title property changes
+  set slug(value: string) {
+    const oldValue = this._slug;
+    this._slug = value;
+    this.requestUpdate("slug", oldValue);
+    // Update document title when slug property changes
     this.updateDocumentTitle();
   }
 
-  get title(): string {
-    return this._title;
+  get slug(): string {
+    return this._slug;
   }
 
-  private _title: string = "";
+  private _slug: string = "";
 
   private dataManager = new DataManager();
 
   @property({ attribute: false })
   containerState: State = {
     state_version: 2,
-    title: "",
+    slug: "",
     os: "",
     message_count: 0,
     hostname: "",
@@ -769,10 +769,10 @@
   }
 
   /**
-   * Updates the document title based on current title and connection status
+   * Updates the document title based on current slug and connection status
    */
   private updateDocumentTitle(): void {
-    let docTitle = `sk: ${this.title || "untitled"}`;
+    let docTitle = `sk: ${this.slug || "untitled"}`;
 
     // Add red circle emoji if disconnected
     if (this.connectionStatus === "disconnected") {
@@ -856,8 +856,8 @@
     )
       return;
 
-    // Create a title that includes the sketch title
-    const notificationTitle = `Sketch: ${this.title || "untitled"}`;
+    // Create a title that includes the sketch slug
+    const notificationTitle = `Sketch: ${this.slug || "untitled"}`;
 
     // Extract the beginning of the message content (first 100 chars)
     const messagePreview = message.content
@@ -937,9 +937,9 @@
       }
 
       this.containerState = state;
-      this.title = state.title;
+      this.slug = state.slug || "";
 
-      // Update document title when sketch title changes
+      // Update document title when sketch slug changes
       this.updateDocumentTitle();
     }
 
@@ -1161,7 +1161,7 @@
       <div id="top-banner">
         <div class="title-container">
           <h1 class="banner-title">sketch</h1>
-          <h2 id="chatTitle" class="chat-title">${this.title}</h2>
+          <h2 class="slug-title">${this.slug}</h2>
         </div>
 
         <!-- Container status info moved above tabs -->
diff --git a/webui/src/web-components/sketch-container-status.test.ts b/webui/src/web-components/sketch-container-status.test.ts
index eca625b..ded2917 100644
--- a/webui/src/web-components/sketch-container-status.test.ts
+++ b/webui/src/web-components/sketch-container-status.test.ts
@@ -10,7 +10,7 @@
   initial_commit: "abcdef1234567890",
   message_count: 42,
   os: "linux",
-  title: "Test Session",
+  slug: "test-session",
   total_usage: {
     input_tokens: 1000,
     output_tokens: 2000,
@@ -76,7 +76,7 @@
     hostname: "partial-host",
     message_count: 10,
     os: "linux",
-    title: "Partial Test",
+    slug: "partial-test",
     session_id: "partial-session",
     ssh_available: false,
     total_usage: {
diff --git a/webui/src/web-components/sketch-tool-calls.ts b/webui/src/web-components/sketch-tool-calls.ts
index 792e893..270213e 100644
--- a/webui/src/web-components/sketch-tool-calls.ts
+++ b/webui/src/web-components/sketch-tool-calls.ts
@@ -1,7 +1,7 @@
 import { css, html, LitElement } from "lit";
 import { customElement, property, state } from "lit/decorators.js";
 import { repeat } from "lit/directives/repeat.js";
-import { ToolCall } from "../types";
+import { State, ToolCall } from "../types";
 import "./sketch-tool-card";
 import "./sketch-tool-card-take-screenshot";
 import "./sketch-tool-card-about-sketch";
@@ -25,6 +25,9 @@
   @property()
   open: boolean = false;
 
+  @property()
+  state: State;
+
   @state()
   expanded: boolean = false;
 
@@ -124,16 +127,17 @@
           .open=${open}
           .toolCall=${toolCall}
         ></sketch-tool-card-think>`;
-      case "title":
-        return html`<sketch-tool-card-title
+      case "set-slug":
+        return html`<sketch-tool-card-set-slug
           .open=${open}
           .toolCall=${toolCall}
-        ></sketch-tool-card-title>`;
-      case "precommit":
-        return html`<sketch-tool-card-precommit
+        ></sketch-tool-card-set-slug>`;
+      case "commit-message-style":
+        return html`<sketch-tool-card-commit-message-style
           .open=${open}
           .toolCall=${toolCall}
-        ></sketch-tool-card-precommit>`;
+          .state=${this.state}
+        ></sketch-tool-card-commit-message-style>`;
       case "browser_take_screenshot":
         return html`<sketch-tool-card-take-screenshot
           .open=${open}
diff --git a/webui/src/web-components/sketch-tool-card.ts b/webui/src/web-components/sketch-tool-card.ts
index 28edf3c..c12f722 100644
--- a/webui/src/web-components/sketch-tool-card.ts
+++ b/webui/src/web-components/sketch-tool-card.ts
@@ -563,8 +563,8 @@
   }
 }
 
-@customElement("sketch-tool-card-title")
-export class SketchToolCardTitle extends LitElement {
+@customElement("sketch-tool-card-set-slug")
+export class SketchToolCardSetSlug extends LitElement {
   @property() toolCall: ToolCall;
   @property() open: boolean;
 
@@ -587,18 +587,18 @@
     return html`
       <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
         <span slot="summary" class="summary-text">
-          Title: "${inputData.title}"
+          Slug: "${inputData.slug}"
         </span>
         <div slot="input">
-          <div>Set title to: <b>${inputData.title}</b></div>
+          <div>Set slug to: <b>${inputData.slug}</b></div>
         </div>
       </sketch-tool-card>
     `;
   }
 }
 
-@customElement("sketch-tool-card-precommit")
-export class SketchToolCardPrecommit extends LitElement {
+@customElement("sketch-tool-card-commit-message-style")
+export class SketchToolCardCommitMessageStyle extends LitElement {
   @property()
   toolCall: ToolCall;
 
@@ -634,18 +634,8 @@
   }
 
   render() {
-    const inputData = JSON.parse(this.toolCall?.input || "{}");
     return html`
       <sketch-tool-card .open=${this.open} .toolCall=${this.toolCall}>
-        <span slot="summary" class="summary-text">
-          Branch: ${this.state?.branch_prefix}${inputData.branch_name}
-        </span>
-        <div slot="input">
-          <div>
-            Set branch to:
-            <code>${this.state?.branch_prefix}${inputData.branch_name}</code>
-          </div>
-        </div>
       </sketch-tool-card>
     `;
   }
@@ -960,8 +950,8 @@
     "sketch-tool-card-done": SketchToolCardDone;
     "sketch-tool-card-patch": SketchToolCardPatch;
     "sketch-tool-card-think": SketchToolCardThink;
-    "sketch-tool-card-title": SketchToolCardTitle;
-    "sketch-tool-card-precommit": SketchToolCardPrecommit;
+    "sketch-tool-card-set-slug": SketchToolCardSetSlug;
+    "sketch-tool-card-commit-message-style": SketchToolCardCommitMessageStyle;
     "sketch-tool-card-multiple-choice": SketchToolCardMultipleChoice;
     "sketch-tool-card-todo-write": SketchToolCardTodoWrite;
     "sketch-tool-card-todo-read": SketchToolCardTodoRead;
