diff --git a/.vscode/launch.json b/.vscode/launch.json
index d273789..9cd3e58 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -5,6 +5,16 @@
   "version": "0.2.0",
   "configurations": [
     {
+      "name": "debug go run sketch -unsafe",
+      "type": "go",
+      "request": "launch",
+      "mode": "debug",
+      "program": "${workspaceFolder}/cmd/sketch",
+      "args": ["-unsafe", "-verbose"],
+      "cwd": "${workspaceFolder}",
+      "console": "integratedTerminal"
+    },
+    {
       "type": "chrome",
       "request": "launch",
       "name": "Launch Chrome against localhost",
diff --git a/claudetool/codereview/codereview.go b/claudetool/codereview/codereview.go
index 8051bf7..2745957 100644
--- a/claudetool/codereview/codereview.go
+++ b/claudetool/codereview/codereview.go
@@ -17,7 +17,7 @@
 // A CodeReviewer manages quality checks.
 type CodeReviewer struct {
 	repoRoot        string
-	initialCommit   string
+	sketchBaseRef   string
 	initialStatus   []fileStatus // git status of files at initial commit, absolute paths
 	reviewed        []string     // history of all commits which have been reviewed
 	initialWorktree string       // git worktree at initial commit, absolute path
@@ -29,17 +29,17 @@
 	DoLLMReview = true
 )
 
-func NewCodeReviewer(ctx context.Context, repoRoot, initialCommit string, llmReview bool) (*CodeReviewer, error) {
+func NewCodeReviewer(ctx context.Context, repoRoot, sketchBaseRef string, llmReview bool) (*CodeReviewer, error) {
 	r := &CodeReviewer{
 		repoRoot:      repoRoot,
-		initialCommit: initialCommit,
+		sketchBaseRef: sketchBaseRef,
 		llmReview:     llmReview,
 	}
 	if r.repoRoot == "" {
 		return nil, fmt.Errorf("NewCodeReviewer: repoRoot must be non-empty")
 	}
-	if r.initialCommit == "" {
-		return nil, fmt.Errorf("NewCodeReviewer: initialCommit must be non-empty")
+	if r.sketchBaseRef == "" {
+		return nil, fmt.Errorf("NewCodeReviewer: sketchBaseRef must be non-empty")
 	}
 	// Confirm that root is in fact the git repo root.
 	root, err := claudetool.FindRepoRoot(r.repoRoot)
@@ -65,7 +65,7 @@
 // It is best-effort only.
 func (r *CodeReviewer) autoformat(ctx context.Context) []string {
 	// Refuse to format if initial commit is not an ancestor of HEAD
-	err := r.requireHEADDescendantOfInitialCommit(ctx)
+	err := r.requireHEADDescendantOfSketchBaseRef(ctx)
 	if err != nil {
 		slog.WarnContext(ctx, "CodeReviewer.Autoformat refusing to format", "err", err)
 		return nil
@@ -83,7 +83,7 @@
 	}
 	// Retrieve a list of all files changed
 	// TODO: instead of one git diff --name-only and then N --name-status, do one --name-status.
-	changedFiles, err := r.changedFiles(ctx, r.initialCommit, head)
+	changedFiles, err := r.changedFiles(ctx, r.sketchBaseRef, head)
 	if err != nil {
 		slog.WarnContext(ctx, "CodeReviewer.Autoformat unable to get changed files", "err", err)
 		return nil
@@ -252,7 +252,7 @@
 
 // gitFileStatus returns the status of a file (A for added, M for modified, D for deleted, etc.)
 func (r *CodeReviewer) gitFileStatus(ctx context.Context, file string) (string, error) {
-	cmd := exec.CommandContext(ctx, "git", "diff", "--name-status", r.initialCommit, "HEAD", "--", file)
+	cmd := exec.CommandContext(ctx, "git", "diff", "--name-status", r.sketchBaseRef, "HEAD", "--", file)
 	cmd.Dir = r.repoRoot
 	out, err := cmd.CombinedOutput()
 	if err != nil {
@@ -361,7 +361,7 @@
 // ModTidy runs go mod tidy if go module files have changed.
 // Returns a list of files changed by go mod tidy (empty if none).
 func (r *CodeReviewer) ModTidy(ctx context.Context) ([]string, error) {
-	err := r.requireHEADDescendantOfInitialCommit(ctx)
+	err := r.requireHEADDescendantOfSketchBaseRef(ctx)
 	if err != nil {
 		return nil, fmt.Errorf("cannot run ModTidy: %w", err)
 	}
@@ -372,7 +372,7 @@
 		return nil, fmt.Errorf("failed to get current commit: %w", err)
 	}
 
-	changedFiles, err := r.changedFiles(ctx, r.initialCommit, currentCommit)
+	changedFiles, err := r.changedFiles(ctx, r.sketchBaseRef, currentCommit)
 	if err != nil {
 		return nil, fmt.Errorf("failed to get changed files: %w", err)
 	}
diff --git a/claudetool/codereview/differential.go b/claudetool/codereview/differential.go
index 37728d4..f12b4f0 100644
--- a/claudetool/codereview/differential.go
+++ b/claudetool/codereview/differential.go
@@ -64,7 +64,7 @@
 	// This should help avoid the model getting blocked by a broken code review tool.
 	r.reviewed = append(r.reviewed, currentCommit)
 
-	changedFiles, err := r.changedFiles(ctx, r.initialCommit, currentCommit)
+	changedFiles, err := r.changedFiles(ctx, r.sketchBaseRef, currentCommit)
 	if err != nil {
 		slog.DebugContext(ctx, "CodeReviewer.Run: failed to get changed files", "err", err)
 		return nil, err
@@ -154,7 +154,7 @@
 	if err != nil {
 		return err
 	}
-	worktreeCmd := exec.CommandContext(ctx, "git", "worktree", "add", "--detach", tmpDir, r.initialCommit)
+	worktreeCmd := exec.CommandContext(ctx, "git", "worktree", "add", "--detach", tmpDir, r.sketchBaseRef)
 	worktreeCmd.Dir = r.repoRoot
 	out, err := worktreeCmd.CombinedOutput()
 	if err != nil {
@@ -274,7 +274,7 @@
 		}
 
 		// Check if the file exists in the initial commit
-		checkCmd := exec.CommandContext(ctx, "git", "cat-file", "-e", fmt.Sprintf("%s:%s", r.initialCommit, relFile))
+		checkCmd := exec.CommandContext(ctx, "git", "cat-file", "-e", fmt.Sprintf("%s:%s", r.sketchBaseRef, relFile))
 		checkCmd.Dir = r.repoRoot
 		if err := checkCmd.Run(); err == nil {
 			// File exists in initial commit
@@ -491,21 +491,21 @@
 }
 
 func (r *CodeReviewer) IsInitialCommit(commit string) bool {
-	return commit == r.initialCommit
+	return commit == r.sketchBaseRef
 }
 
-// requireHEADDescendantOfInitialCommit returns an error if HEAD is not a descendant of r.initialCommit.
+// requireHEADDescendantOfSketchBaseRef returns an error if HEAD is not a descendant of r.initialCommit.
 // This serves two purposes:
 //   - ensures we're not still on the initial commit
 //   - ensures we're not on a separate branch or upstream somewhere, which would be confusing
-func (r *CodeReviewer) requireHEADDescendantOfInitialCommit(ctx context.Context) error {
+func (r *CodeReviewer) requireHEADDescendantOfSketchBaseRef(ctx context.Context) error {
 	head, err := r.CurrentCommit(ctx)
 	if err != nil {
 		return err
 	}
 
 	// Note: Git's merge-base --is-ancestor checks strict ancestry (i.e., <), so a commit is NOT an ancestor of itself.
-	cmd := exec.CommandContext(ctx, "git", "merge-base", "--is-ancestor", r.initialCommit, head)
+	cmd := exec.CommandContext(ctx, "git", "merge-base", "--is-ancestor", r.sketchBaseRef, head)
 	cmd.Dir = r.repoRoot
 	err = cmd.Run()
 	if err != nil {
@@ -890,7 +890,7 @@
 	}
 
 	buf := new(strings.Builder)
-	fmt.Fprintf(buf, "Test regressions detected between initial commit (%s) and HEAD:\n\n", r.initialCommit)
+	fmt.Fprintf(buf, "Test regressions detected between initial commit (%s) and HEAD:\n\n", r.sketchBaseRef)
 
 	for i, reg := range regressions {
 		fmt.Fprintf(buf, "%d: %v: ", i+1, reg.Source())
diff --git a/claudetool/codereview/llm_review.go b/claudetool/codereview/llm_review.go
index 32a8e00..df8af9b 100644
--- a/claudetool/codereview/llm_review.go
+++ b/claudetool/codereview/llm_review.go
@@ -17,7 +17,7 @@
 // doLLMReview analyzes the diff using an LLM subagent.
 func (r *CodeReviewer) doLLMReview(ctx context.Context) (string, error) {
 	// Get the full diff between initial commit and HEAD
-	cmd := exec.CommandContext(ctx, "git", "diff", r.initialCommit, "HEAD")
+	cmd := exec.CommandContext(ctx, "git", "diff", r.sketchBaseRef, "HEAD")
 	cmd.Dir = r.repoRoot
 	out, err := cmd.CombinedOutput()
 	if err != nil {
diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index d12adbb..ad81b74 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -394,8 +394,10 @@
 		OutsideHostname:   flags.outsideHostname,
 		OutsideOS:         flags.outsideOS,
 		OutsideWorkingDir: flags.outsideWorkingDir,
-		InDocker:          true, // This is true when we're in container mode or simulating it in unsafe mode
-		OneShot:           flags.oneShot,
+		// Ultimately this is a subtle flag because it's trying to distinguish
+		// between unsafe-on-host and inside sketch, and should probably be renamed/simplified.
+		InDocker: flags.outsideHostname != "",
+		OneShot:  flags.oneShot,
 	}
 	agent := loop.NewAgent(agentConfig)
 
diff --git a/loop/agent.go b/loop/agent.go
index a0f981d..41a22f5 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -84,8 +84,10 @@
 	// If commit is non-nil, it shows the diff for just that specific commit.
 	Diff(commit *string) (string, error)
 
-	// InitialCommit returns the Git commit hash that was saved when the agent was instantiated.
-	InitialCommit() string
+	// SketchGitBase returns the commit that's the "base" for Sketch's work. It
+	// starts out as the commit where sketch started, but a user can move it if need
+	// be, for example in the case of a rebase. It is stored as a git tag.
+	SketchGitBase() string
 
 	// Title returns the current title of the conversation.
 	Title() string
@@ -298,7 +300,6 @@
 	url               string
 	firstMessageIndex int           // index of the first message in the current conversation
 	lastHEAD          string        // hash of the last HEAD that was pushed to the host (only when under docker)
-	initialCommit     string        // hash of the Git HEAD when the agent was instantiated or Init()
 	gitRemoteAddr     string        // HTTP URL of the host git repo (only when under docker)
 	outsideHTTP       string        // base address of the outside webserver (only when under docker)
 	ready             chan struct{} // closed when the agent is initialized (only when under docker)
@@ -833,10 +834,8 @@
 				return fmt.Errorf("git checkout %s: %s: %w", ini.Commit, checkoutOut, err)
 			}
 		}
-		a.lastHEAD = ini.Commit
 		a.gitRemoteAddr = ini.GitRemoteAddr
 		a.outsideHTTP = ini.OutsideHTTP
-		a.initialCommit = ini.Commit
 		if ini.HostAddr != "" {
 			a.url = "http://" + ini.HostAddr
 		}
@@ -850,11 +849,16 @@
 		}
 		a.repoRoot = repoRoot
 
-		commitHash, err := resolveRef(ctx, a.repoRoot, "HEAD")
 		if err != nil {
 			return fmt.Errorf("resolveRef: %w", err)
 		}
-		a.initialCommit = commitHash
+
+		cmd := exec.CommandContext(ctx, "git", "tag", "-f", a.SketchGitBaseRef(), "HEAD")
+		cmd.Dir = repoRoot
+		if out, err := cmd.CombinedOutput(); err != nil {
+			return fmt.Errorf("git tag -f %s %s: %s: %w", a.SketchGitBaseRef(), "HEAD", out, err)
+		}
+		a.lastHEAD = ini.Commit
 
 		if experiment.Enabled("memory") {
 			slog.Info("running codebase analysis")
@@ -869,7 +873,7 @@
 		if experiment.Enabled("llm_review") {
 			llmCodeReview = codereview.DoLLMReview
 		}
-		codereview, err := codereview.NewCodeReviewer(ctx, a.repoRoot, a.initialCommit, llmCodeReview)
+		codereview, err := codereview.NewCodeReviewer(ctx, a.repoRoot, a.SketchGitBaseRef(), llmCodeReview)
 		if err != nil {
 			return fmt.Errorf("Agent.Init: codereview.NewCodeReviewer: %w", err)
 		}
@@ -877,7 +881,7 @@
 
 		a.gitOrigin = getGitOrigin(ctx, ini.WorkingDir)
 	}
-	a.lastHEAD = a.initialCommit
+	a.lastHEAD = a.SketchGitBase()
 	a.convo = a.initConvo()
 	close(a.ready)
 	return nil
@@ -1505,7 +1509,7 @@
 
 // Diff returns a unified diff of changes made since the agent was instantiated.
 func (a *Agent) Diff(commit *string) (string, error) {
-	if a.initialCommit == "" {
+	if a.SketchGitBase() == "" {
 		return "", fmt.Errorf("no initial commit reference available")
 	}
 
@@ -1530,7 +1534,7 @@
 	}
 
 	// Otherwise, get the diff between the initial commit and the current state using exec.Command
-	cmd := exec.CommandContext(ctx, "git", "diff", "--unified=10", a.initialCommit)
+	cmd := exec.CommandContext(ctx, "git", "diff", "--unified=10", a.SketchGitBaseRef())
 	cmd.Dir = a.repoRoot
 	output, err := cmd.CombinedOutput()
 	if err != nil {
@@ -1540,9 +1544,26 @@
 	return string(output), nil
 }
 
-// InitialCommit returns the Git commit hash that was saved when the agent was instantiated.
-func (a *Agent) InitialCommit() string {
-	return a.initialCommit
+// SketchGitBaseRef distinguishes between the typical container version, where sketch-base is
+// unambiguous, and the "unsafe" version, where we need to use a session id to disambiguate.
+func (a *Agent) SketchGitBaseRef() string {
+	if a.IsInContainer() {
+		return "sketch-base"
+	} else {
+		return "sketch-base-" + a.SessionID()
+	}
+}
+
+// SketchGitBase returns the Git commit hash that was saved when the agent was instantiated.
+func (a *Agent) SketchGitBase() string {
+	cmd := exec.CommandContext(context.Background(), "git", "rev-parse", a.SketchGitBaseRef())
+	cmd.Dir = a.repoRoot
+	output, err := cmd.CombinedOutput()
+	if err != nil {
+		slog.Warn("could not identify sketch-base", slog.String("error", err.Error()))
+		return "HEAD"
+	}
+	return string(strings.TrimSpace(string(output)))
 }
 
 // removeGitHooks removes the Git hooks directory from the repository
@@ -1597,7 +1618,7 @@
 	// Format: <hash>\0<subject>\0<body>\0
 	// This uses NULL bytes as separators to avoid issues with newlines in commit messages
 	// Limit to 100 commits to avoid overwhelming the user
-	cmd := exec.CommandContext(ctx, "git", "log", "-n", "100", "--pretty=format:%H%x00%s%x00%b%x00", "^"+a.initialCommit, head)
+	cmd := exec.CommandContext(ctx, "git", "log", "-n", "100", "--pretty=format:%H%x00%s%x00%b%x00", "^"+a.SketchGitBaseRef(), head)
 	cmd.Dir = a.repoRoot
 	output, err := cmd.Output()
 	if err != nil {
@@ -1837,7 +1858,6 @@
 		return fmt.Errorf("git checkout %s: %s: %w", revision, out, err)
 	}
 	a.lastHEAD = revision
-	a.initialCommit = revision
 	return nil
 }
 
@@ -1923,7 +1943,7 @@
 		ClientGOARCH:  a.config.ClientGOARCH,
 		WorkingDir:    a.workingDir,
 		RepoRoot:      a.repoRoot,
-		InitialCommit: a.initialCommit,
+		InitialCommit: a.SketchGitBase(),
 		Codebase:      a.codebase,
 	}
 
diff --git a/loop/agent_git_test.go b/loop/agent_git_test.go
index 47899a0..a1ca128 100644
--- a/loop/agent_git_test.go
+++ b/loop/agent_git_test.go
@@ -53,22 +53,26 @@
 		t.Fatalf("Failed to create initial commit: %v", err)
 	}
 
-	// Get the initial commit hash
-	cmd = exec.Command("git", "rev-parse", "HEAD")
-	cmd.Dir = tempDir
-	initialCommitOutput, err := cmd.Output()
-	if err != nil {
-		t.Fatalf("Failed to get initial commit hash: %v", err)
-	}
-	initialCommit := strings.TrimSpace(string(initialCommitOutput))
+	// Note: The initial commit will be tagged as sketch-base later
 
 	// Create agent with the temp repo
 	agent := &Agent{
-		workingDir:    tempDir,
-		repoRoot:      tempDir, // Set repoRoot to same as workingDir for this test
-		seenCommits:   make(map[string]bool),
-		initialCommit: initialCommit,
-		subscribers:   []chan *AgentMessage{},
+		workingDir:  tempDir,
+		repoRoot:    tempDir, // Set repoRoot to same as workingDir for this test
+		seenCommits: make(map[string]bool),
+		subscribers: []chan *AgentMessage{},
+		config: AgentConfig{
+			SessionID: "test-session",
+			InDocker:  false,
+		},
+		history: []AgentMessage{},
+	}
+
+	// Create sketch-base-test-session tag at current HEAD to serve as the base commit
+	cmd = exec.Command("git", "tag", "-f", "sketch-base-test-session", "HEAD")
+	cmd.Dir = tempDir
+	if err := cmd.Run(); err != nil {
+		t.Fatalf("Failed to create sketch-base tag: %v", err)
 	}
 
 	// Make a new commit
@@ -90,9 +94,9 @@
 
 	// Call handleGitCommits and verify we get a commit message
 	ctx := context.Background()
-	_, err = agent.handleGitCommits(ctx)
-	if err != nil {
-		t.Fatalf("handleGitCommits failed: %v", err)
+	_, gitErr := agent.handleGitCommits(ctx)
+	if gitErr != nil {
+		t.Fatalf("handleGitCommits failed: %v", gitErr)
 	}
 
 	// Check if we received a commit message
@@ -171,9 +175,9 @@
 	agent.seenCommits = make(map[string]bool)
 
 	// Call handleGitCommits again - it should show up to 20 commits (or whatever git defaults to)
-	_, err = agent.handleGitCommits(ctx)
-	if err != nil {
-		t.Fatalf("handleGitCommits failed: %v", err)
+	_, handleErr := agent.handleGitCommits(ctx)
+	if handleErr != nil {
+		t.Fatalf("handleGitCommits failed: %v", handleErr)
 	}
 
 	// Check if we received a commit message
diff --git a/loop/server/loophttp.go b/loop/server/loophttp.go
index b186760..a89557d 100644
--- a/loop/server/loophttp.go
+++ b/loop/server/loophttp.go
@@ -1112,12 +1112,13 @@
 	totalUsage := s.agent.TotalUsage()
 
 	return State{
-		StateVersion:         2,
-		MessageCount:         serverMessageCount,
-		TotalUsage:           &totalUsage,
-		Hostname:             s.hostname,
-		WorkingDir:           getWorkingDir(),
-		InitialCommit:        s.agent.InitialCommit(),
+		StateVersion: 2,
+		MessageCount: serverMessageCount,
+		TotalUsage:   &totalUsage,
+		Hostname:     s.hostname,
+		WorkingDir:   getWorkingDir(),
+		// TODO: Rename this field to sketch-base?
+		InitialCommit:        s.agent.SketchGitBase(),
 		Title:                s.agent.Title(),
 		BranchName:           s.agent.BranchName(),
 		OS:                   s.agent.OS(),
diff --git a/loop/server/loophttp_test.go b/loop/server/loophttp_test.go
index cb50642..d68928e 100644
--- a/loop/server/loophttp_test.go
+++ b/loop/server/loophttp_test.go
@@ -192,6 +192,12 @@
 	return m.initialCommit
 }
 
+func (m *mockAgent) SketchGitBase() string {
+	m.mu.RLock()
+	defer m.mu.RUnlock()
+	return m.initialCommit
+}
+
 func (m *mockAgent) Title() string {
 	m.mu.RLock()
 	defer m.mu.RUnlock()
diff --git a/loop/testdata/agent_loop.httprr b/loop/testdata/agent_loop.httprr
index c5c9474..80114d1 100644
--- a/loop/testdata/agent_loop.httprr
+++ b/loop/testdata/agent_loop.httprr
@@ -1,9 +1,9 @@
 httprr trace v1
-16931 2233
+16935 2032
 POST https://api.anthropic.com/v1/messages HTTP/1.1
 Host: api.anthropic.com
 User-Agent: Go-http-client/1.1
-Content-Length: 16733
+Content-Length: 16737
 Anthropic-Version: 2023-06-01
 Content-Type: application/json
 
@@ -535,7 +535,7 @@
  ],
  "system": [
   {
-   "text": "You are the expert coding assistant 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.\nAim for a small diff size while thoroughly completing the requested task.\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.\n(The first step is often: \"Make a plan.\")\nThen execute each step using tools.\nUpdate the plan if you have encountered problems or learned new information.\n\nWhen in doubt about a step, follow 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- 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\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\u003c/workflow\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\n\n\u003c/HEAD\u003e\n\u003c/git_info\u003e\n\n",
+   "text": "You are the expert coding assistant 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.\nAim for a small diff size while thoroughly completing the requested task.\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.\n(The first step is often: \"Make a plan.\")\nThen execute each step using tools.\nUpdate the plan if you have encountered problems or learned new information.\n\nWhen in doubt about a step, follow 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- 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\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\u003c/workflow\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"
@@ -546,24 +546,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-05-14T00:18:00Z
+Anthropic-Ratelimit-Input-Tokens-Reset: 2025-05-14T16:36:00Z
 Anthropic-Ratelimit-Output-Tokens-Limit: 80000
 Anthropic-Ratelimit-Output-Tokens-Remaining: 80000
-Anthropic-Ratelimit-Output-Tokens-Reset: 2025-05-14T00:18:04Z
+Anthropic-Ratelimit-Output-Tokens-Reset: 2025-05-14T16:36:03Z
 Anthropic-Ratelimit-Requests-Limit: 4000
 Anthropic-Ratelimit-Requests-Remaining: 3999
-Anthropic-Ratelimit-Requests-Reset: 2025-05-14T00:17:59Z
+Anthropic-Ratelimit-Requests-Reset: 2025-05-14T16:35:58Z
 Anthropic-Ratelimit-Tokens-Limit: 280000
 Anthropic-Ratelimit-Tokens-Remaining: 280000
-Anthropic-Ratelimit-Tokens-Reset: 2025-05-14T00:18:00Z
+Anthropic-Ratelimit-Tokens-Reset: 2025-05-14T16:36:00Z
 Cf-Cache-Status: DYNAMIC
-Cf-Ray: 93f6373918bc7afd-SJC
+Cf-Ray: 93fbcfd2ac34236d-SJC
 Content-Type: application/json
-Date: Wed, 14 May 2025 00:18:04 GMT
-Request-Id: req_011CP6TmGW2vmPmS7JfqFK5U
+Date: Wed, 14 May 2025 16:36:03 GMT
+Request-Id: req_011CP7kLmfzqYMjT1roGU6g3
 Server: cloudflare
 Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
 Via: 1.1 google
 X-Robots-Tag: none
 
-{"id":"msg_01K2J8Qx4ZGm7pds3aQd83SV","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"Here are the tools available to me:\n\n1. bash - Executes shell commands\n2. keyword_search - Searches files using keywords\n3. think - For thinking out loud, taking notes, or planning\n4. title - Sets conversation title\n5. precommit - Creates git branches and provides commit guidance\n6. done - Indicates task completion with a checklist\n7. codereview - Runs automated code review\n8. multiplechoice - Presents multiple choice questions to users\n9. Browser tools:\n   - browser_navigate, browser_click, browser_type, browser_wait_for\n   - browser_get_text, browser_eval, browser_scroll_into_view\n   - browser_resize, browser_recent_console_logs, browser_clear_console_logs\n   - browser_take_screenshot, browser_read_image\n10. patch - Modifies files with precise text edits\n\nThese tools allow me to perform tasks like executing code, searching files, interacting with browsers, editing files, and managing git repositories."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":4,"cache_creation_input_tokens":3888,"cache_read_input_tokens":0,"output_tokens":234}}
\ No newline at end of file
+{"id":"msg_01SDrU5LWSJHPMGMWk8rrTcX","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"I can provide you with a brief list of the tools available to me:\n\n1. bash - Execute shell commands\n2. keyword_search - Find files with search terms\n3. think - Record thoughts and plans (no external effects)\n4. title - Set conversation title\n5. precommit - Create git branch for work\n6. done - Mark completion with checklist verification\n7. codereview - Run automated code review\n8. multiplechoice - Present options for user to choose from\n9. browser_* tools - Various browser automation functions (navigate, click, type, etc.)\n10. patch - Make precise text edits to files\n\nThese tools allow me to help with coding tasks, navigate codebases, make edits, run commands, interact with web pages, and plan/document my work."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":4,"cache_creation_input_tokens":3890,"cache_read_input_tokens":0,"output_tokens":177}}
\ No newline at end of file
diff --git a/termui/termui.go b/termui/termui.go
index 1575473..6dc5f87 100644
--- a/termui/termui.go
+++ b/termui/termui.go
@@ -262,10 +262,11 @@
 					branches = append(branches, branch)
 				}
 
-				initialCommitRef := getShortSHA(ui.agent.InitialCommit())
+				initialCommitRef := getShortSHA(ui.agent.SketchGitBase())
 				if len(branches) == 1 {
 					ui.AppendSystemMessage("\n🔄 Branch pushed during session: %s", branches[0])
 					ui.AppendSystemMessage("🍒 To add those changes to your branch: git cherry-pick %s..%s", initialCommitRef, branches[0])
+					ui.AppendSystemMessage("🔀                                   or git merge %s", branches[0])
 				} else {
 					ui.AppendSystemMessage("\n🔄 Branches pushed during session:")
 					for _, branch := range branches {
@@ -275,6 +276,14 @@
 					for _, branch := range branches {
 						ui.AppendSystemMessage("git cherry-pick %s..%s", initialCommitRef, branch)
 					}
+					ui.AppendSystemMessage("\n🍒 To add all those changes to your branch:")
+					for _, branch := range branches {
+						ui.AppendSystemMessage("git cherry-pick %s..%s", initialCommitRef, branch)
+					}
+					ui.AppendSystemMessage("\n🔀                              or:")
+					for _, branch := range branches {
+						ui.AppendSystemMessage("git merge %s", branch)
+					}
 				}
 			}
 			ui.mu.Unlock()
