diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index 4df1271..02ae66c 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -195,6 +195,7 @@
 	dumpDist     string
 	sshPort      int
 	forceRebuild bool
+	linkToGitHub bool
 
 	gitUsername       string
 	gitEmail          string
@@ -263,6 +264,7 @@
 	internalFlags.StringVar(&flags.upstream, "upstream", "", "(internal) upstream branch for git work")
 	internalFlags.StringVar(&flags.commit, "commit", "", "(internal) the git commit reference to check out from git remote url")
 	internalFlags.StringVar(&flags.outsideHTTP, "outside-http", "", "(internal) host for outside sketch")
+	internalFlags.BoolVar(&flags.linkToGitHub, "link-to-github", false, "(internal) enable GitHub branch linking in UI")
 
 	// Developer flags
 	internalFlags.StringVar(&flags.httprrFile, "httprr", "", "if set, record HTTP interactions to file")
@@ -410,6 +412,7 @@
 		TermUI:         flags.termUI,
 		MaxDollars:     flags.maxDollars,
 		BranchPrefix:   flags.branchPrefix,
+		LinkToGitHub:   flags.linkToGitHub,
 	}
 
 	if err := dockerimg.LaunchContainer(ctx, config); err != nil {
@@ -527,6 +530,7 @@
 		OutsideHTTP:   flags.outsideHTTP,
 		Commit:        flags.commit,
 		BranchPrefix:  flags.branchPrefix,
+		LinkToGitHub:  flags.linkToGitHub,
 	}
 
 	// Create SkabandClient if skaband address is provided
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index f423bb9..12c65f3 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -121,6 +121,9 @@
 
 	// Prefix for git branches created by sketch
 	BranchPrefix string
+
+	// LinkToGitHub enables GitHub branch linking in UI
+	LinkToGitHub bool
 }
 
 // LaunchContainer creates a docker container for a project, installs sketch and opens a connection to it.
@@ -556,6 +559,7 @@
 		"-verbose="+fmt.Sprintf("%t", config.Verbose),
 		"-x="+config.ExperimentFlag,
 		"-branch-prefix="+config.BranchPrefix,
+		"-link-to-github="+fmt.Sprintf("%t", config.LinkToGitHub),
 	)
 	if config.Model != "" {
 		cmdArgs = append(cmdArgs, "-model="+config.Model)
diff --git a/loop/agent.go b/loop/agent.go
index 2cf2e4c..6282705 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -68,6 +68,9 @@
 	// BranchPrefix returns the configured branch prefix
 	BranchPrefix() string
 
+	// LinkToGitHub returns whether GitHub branch linking is enabled
+	LinkToGitHub() bool
+
 	CancelTurn(cause error)
 
 	CancelToolUse(toolUseID string, cause error) error
@@ -992,6 +995,8 @@
 	Commit string
 	// Prefix for git branches created by sketch
 	BranchPrefix string
+	// LinkToGitHub enables GitHub branch linking in UI
+	LinkToGitHub bool
 	// Skaband client for session history (optional)
 	SkabandClient *skabandclient.SkabandClient
 }
@@ -1377,6 +1382,11 @@
 	return a.config.BranchPrefix
 }
 
+// LinkToGitHub returns whether GitHub branch linking is enabled
+func (a *Agent) LinkToGitHub() bool {
+	return a.config.LinkToGitHub
+}
+
 func (a *Agent) UserMessage(ctx context.Context, msg string) {
 	a.pushToOutbox(ctx, AgentMessage{Type: UserMessageType, Content: msg})
 	a.inbox <- msg
diff --git a/loop/server/loophttp.go b/loop/server/loophttp.go
index cc5ccc3..6c2debc 100644
--- a/loop/server/loophttp.go
+++ b/loop/server/loophttp.go
@@ -95,8 +95,9 @@
 	InsideOS             string                        `json:"inside_os,omitempty"`
 	OutsideWorkingDir    string                        `json:"outside_working_dir,omitempty"`
 	InsideWorkingDir     string                        `json:"inside_working_dir,omitempty"`
-	TodoContent          string                        `json:"todo_content,omitempty"` // Contains todo list JSON data
-	SkabandAddr          string                        `json:"skaband_addr,omitempty"` // URL of the skaband server
+	TodoContent          string                        `json:"todo_content,omitempty"`   // Contains todo list JSON data
+	SkabandAddr          string                        `json:"skaband_addr,omitempty"`   // URL of the skaband server
+	LinkToGitHub         bool                          `json:"link_to_github,omitempty"` // Enable GitHub branch linking in UI
 }
 
 type InitRequest struct {
@@ -1306,6 +1307,7 @@
 		AgentState:           s.agent.CurrentStateName(),
 		TodoContent:          s.agent.CurrentTodoContent(),
 		SkabandAddr:          s.agent.SkabandAddr(),
+		LinkToGitHub:         s.agent.LinkToGitHub(),
 	}
 }
 
diff --git a/loop/server/loophttp_test.go b/loop/server/loophttp_test.go
index bb5bd21..5d054fc 100644
--- a/loop/server/loophttp_test.go
+++ b/loop/server/loophttp_test.go
@@ -260,6 +260,7 @@
 
 func (m *mockAgent) GetPortMonitor() *loop.PortMonitor { return loop.NewPortMonitor() }
 func (m *mockAgent) SkabandAddr() string               { return m.skabandAddr }
+func (m *mockAgent) LinkToGitHub() bool                { return false }
 
 // TestSSEStream tests the SSE stream endpoint
 func TestSSEStream(t *testing.T) {
diff --git a/termui/termui.go b/termui/termui.go
index 512fa65..48c5f53 100644
--- a/termui/termui.go
+++ b/termui/termui.go
@@ -10,6 +10,7 @@
 	"os"
 	"os/exec"
 	"os/signal"
+	"regexp"
 	"strings"
 	"sync"
 	"syscall"
@@ -207,7 +208,13 @@
 			// Display each commit in the terminal
 			for _, commit := range resp.Commits {
 				if commit.PushedBranch != "" {
-					ui.AppendSystemMessage("🔄 new commit: [%s] %s\npushed to: %s", commit.Hash[:8], commit.Subject, bold(commit.PushedBranch))
+					// Check if we should show a GitHub link
+					githubURL := ui.getGitHubBranchURL(commit.PushedBranch)
+					if githubURL != "" {
+						ui.AppendSystemMessage("🔄 new commit: [%s] %s\npushed to: %s\n🔗 %s", commit.Hash[:8], commit.Subject, bold(commit.PushedBranch), githubURL)
+					} else {
+						ui.AppendSystemMessage("🔄 new commit: [%s] %s\npushed to: %s", commit.Hash[:8], commit.Subject, bold(commit.PushedBranch))
+					}
 
 					// Track the pushed branch in our map
 					ui.mu.Lock()
@@ -291,6 +298,10 @@
 				initialCommitRef := getShortSHA(ui.agent.SketchGitBase())
 				if len(branches) == 1 {
 					ui.AppendSystemMessage("\n🔄 Branch pushed during session: %s", branches[0])
+					// Add GitHub link if available
+					if githubURL := ui.getGitHubBranchURL(branches[0]); githubURL != "" {
+						ui.AppendSystemMessage("🔗 %s", githubURL)
+					}
 					ui.AppendSystemMessage("🍒 Cherry-pick those changes: git cherry-pick %s..%s", initialCommitRef, branches[0])
 					ui.AppendSystemMessage("🔀 Merge those changes:       git merge %s", branches[0])
 					ui.AppendSystemMessage("🗑️  Delete the branch:         git branch -D %s", branches[0])
@@ -298,6 +309,10 @@
 					ui.AppendSystemMessage("\n🔄 Branches pushed during session:")
 					for _, branch := range branches {
 						ui.AppendSystemMessage("- %s", branch)
+						// Add GitHub link if available
+						if githubURL := ui.getGitHubBranchURL(branch); githubURL != "" {
+							ui.AppendSystemMessage("  🔗 %s", githubURL)
+						}
 					}
 					ui.AppendSystemMessage("\n🍒 To add all those changes to your branch:")
 					for _, branch := range branches {
@@ -488,3 +503,55 @@
 	}
 	return sha
 }
+
+// isGitHubRepo checks if the git origin URL is a GitHub repository
+func (ui *TermUI) isGitHubRepo() bool {
+	gitOrigin := ui.agent.GitOrigin()
+	if gitOrigin == "" {
+		return false
+	}
+
+	// Common GitHub URL patterns
+	patterns := []string{
+		`^https://github\.com/[^/]+/[^/\s.]+(?:\.git)?`,
+		`^git@github\.com:[^/]+/[^/\s.]+(?:\.git)?`,
+		`^git://github\.com/[^/]+/[^/\s.]+(?:\.git)?`,
+	}
+
+	for _, pattern := range patterns {
+		if matched, _ := regexp.MatchString(pattern, gitOrigin); matched {
+			return true
+		}
+	}
+	return false
+}
+
+// getGitHubBranchURL generates a GitHub branch URL if conditions are met
+func (ui *TermUI) getGitHubBranchURL(branchName string) string {
+	if !ui.agent.LinkToGitHub() || branchName == "" {
+		return ""
+	}
+
+	gitOrigin := ui.agent.GitOrigin()
+	if gitOrigin == "" || !ui.isGitHubRepo() {
+		return ""
+	}
+
+	// Extract owner and repo from GitHub URL
+	patterns := []string{
+		`^https://github\.com/([^/]+)/([^/\s.]+)(?:\.git)?`,
+		`^git@github\.com:([^/]+)/([^/\s.]+)(?:\.git)?`,
+		`^git://github\.com/([^/]+)/([^/\s.]+)(?:\.git)?`,
+	}
+
+	for _, pattern := range patterns {
+		re := regexp.MustCompile(pattern)
+		matches := re.FindStringSubmatch(gitOrigin)
+		if len(matches) == 3 {
+			owner := matches[1]
+			repo := matches[2]
+			return fmt.Sprintf("https://github.com/%s/%s/tree/%s", owner, repo, branchName)
+		}
+	}
+	return ""
+}
diff --git a/webui/src/types.ts b/webui/src/types.ts
index 2ecd412..f79e35d 100644
--- a/webui/src/types.ts
+++ b/webui/src/types.ts
@@ -89,6 +89,7 @@
 	inside_working_dir?: string;
 	todo_content?: string;
 	skaband_addr?: string;
+	link_to_github?: boolean;
 }
 
 export interface TodoItem {
diff --git a/webui/src/web-components/sketch-app-shell.ts b/webui/src/web-components/sketch-app-shell.ts
index 967f502..29e12ba 100644
--- a/webui/src/web-components/sketch-app-shell.ts
+++ b/webui/src/web-components/sketch-app-shell.ts
@@ -1352,6 +1352,7 @@
                 .toolCalls=${this.containerState?.outstanding_tool_calls || []}
                 .firstMessageIndex=${this.containerState?.first_message_index ||
                 0}
+                .state=${this.containerState}
               ></sketch-timeline>
             </div>
           </div>
diff --git a/webui/src/web-components/sketch-container-status.test.ts b/webui/src/web-components/sketch-container-status.test.ts
index 0e93604..dd37d1f 100644
--- a/webui/src/web-components/sketch-container-status.test.ts
+++ b/webui/src/web-components/sketch-container-status.test.ts
@@ -44,7 +44,7 @@
   );
 
   // Show details to access the popup elements
-  component.locator(".info-toggle").click();
+  await component.locator(".info-toggle").click();
 
   await expect(component.locator("#initialCommit")).toContainText(
     mockCompleteState.initial_commit.substring(0, 8),
@@ -99,7 +99,7 @@
   await expect(component.locator("#hostname")).toContainText("partial-host");
 
   // Show details to access the popup elements
-  component.locator(".info-toggle").click();
+  await component.locator(".info-toggle").click();
   await expect(component.locator("#messageCount")).toContainText("10");
 
   const expectedTotalInputTokens =
diff --git a/webui/src/web-components/sketch-container-status.ts b/webui/src/web-components/sketch-container-status.ts
index 2199342..560044a 100644
--- a/webui/src/web-components/sketch-container-status.ts
+++ b/webui/src/web-components/sketch-container-status.ts
@@ -336,6 +336,43 @@
     .github-link:hover {
       text-decoration: underline;
     }
+
+    .commit-info-container {
+      display: flex;
+      align-items: center;
+      gap: 6px;
+    }
+
+    .commit-info-container .copy-icon {
+      opacity: 0.7;
+      display: flex;
+      align-items: center;
+    }
+
+    .commit-info-container .copy-icon svg {
+      vertical-align: middle;
+    }
+
+    .commit-info-container:hover .copy-icon {
+      opacity: 1;
+    }
+
+    .octocat-link {
+      color: #586069;
+      text-decoration: none;
+      display: flex;
+      align-items: center;
+      transition: color 0.2s ease;
+    }
+
+    .octocat-link:hover {
+      color: #0366d6;
+    }
+
+    .octocat-icon {
+      width: 16px;
+      height: 16px;
+    }
   `;
 
   constructor() {
@@ -533,6 +570,8 @@
         return {
           formatted: `${match[1]}/${match[2]}`,
           url: `https://github.com/${match[1]}/${match[2]}`,
+          owner: match[1],
+          repo: match[2],
         };
       }
     }
@@ -540,6 +579,20 @@
     return null;
   }
 
+  // Generate GitHub branch URL if linking is enabled
+  getGitHubBranchLink(branchName) {
+    if (!this.state?.link_to_github || !branchName) {
+      return null;
+    }
+
+    const github = this.formatGitHubRepo(this.state?.git_origin);
+    if (!github) {
+      return null;
+    }
+
+    return `https://github.com/${github.owner}/${github.repo}/tree/${branchName}`;
+  }
+
   renderSSHSection() {
     // Only show SSH section if we're in a Docker container and have session ID
     if (!this.state?.session_id) {
@@ -665,52 +718,88 @@
             >
               ${this.lastCommit
                 ? this.lastCommit.pushedBranch
-                  ? html`<span class="commit-branch-indicator main-grid-commit"
-                      >${this.lastCommit.pushedBranch}</span
-                    >`
+                  ? (() => {
+                      const githubLink = this.getGitHubBranchLink(
+                        this.lastCommit.pushedBranch,
+                      );
+                      return html`
+                        <div class="commit-info-container">
+                          <span
+                            class="commit-branch-indicator main-grid-commit"
+                            title="Click to copy: ${this.lastCommit
+                              .pushedBranch}"
+                            @click=${(e) => this.copyCommitInfo(e)}
+                            >${this.lastCommit.pushedBranch}</span
+                          >
+                          <span class="copy-icon">
+                            ${this.lastCommitCopied
+                              ? html`<svg
+                                  xmlns="http://www.w3.org/2000/svg"
+                                  width="16"
+                                  height="16"
+                                  viewBox="0 0 24 24"
+                                  fill="none"
+                                  stroke="currentColor"
+                                  stroke-width="2"
+                                  stroke-linecap="round"
+                                  stroke-linejoin="round"
+                                >
+                                  <path d="M20 6L9 17l-5-5"></path>
+                                </svg>`
+                              : html`<svg
+                                  xmlns="http://www.w3.org/2000/svg"
+                                  width="16"
+                                  height="16"
+                                  viewBox="0 0 24 24"
+                                  fill="none"
+                                  stroke="currentColor"
+                                  stroke-width="2"
+                                  stroke-linecap="round"
+                                  stroke-linejoin="round"
+                                >
+                                  <rect
+                                    x="9"
+                                    y="9"
+                                    width="13"
+                                    height="13"
+                                    rx="2"
+                                    ry="2"
+                                  ></rect>
+                                  <path
+                                    d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
+                                  ></path>
+                                </svg>`}
+                          </span>
+                          ${githubLink
+                            ? html`<a
+                                href="${githubLink}"
+                                target="_blank"
+                                rel="noopener noreferrer"
+                                class="octocat-link"
+                                title="Open ${this.lastCommit
+                                  .pushedBranch} on GitHub"
+                                @click=${(e) => e.stopPropagation()}
+                              >
+                                <svg
+                                  class="octocat-icon"
+                                  viewBox="0 0 16 16"
+                                  width="16"
+                                  height="16"
+                                >
+                                  <path
+                                    fill="currentColor"
+                                    d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"
+                                  />
+                                </svg>
+                              </a>`
+                            : ""}
+                        </div>
+                      `;
+                    })()
                   : html`<span class="commit-hash-indicator main-grid-commit"
                       >${this.lastCommit.hash.substring(0, 8)}</span
                     >`
                 : html`<span class="no-commit-indicator">N/A</span>`}
-              <span class="copy-icon">
-                ${this.lastCommitCopied
-                  ? html`<svg
-                      xmlns="http://www.w3.org/2000/svg"
-                      width="16"
-                      height="16"
-                      viewBox="0 0 24 24"
-                      fill="none"
-                      stroke="currentColor"
-                      stroke-width="2"
-                      stroke-linecap="round"
-                      stroke-linejoin="round"
-                    >
-                      <path d="M20 6L9 17l-5-5"></path>
-                    </svg>`
-                  : html`<svg
-                      xmlns="http://www.w3.org/2000/svg"
-                      width="16"
-                      height="16"
-                      viewBox="0 0 24 24"
-                      fill="none"
-                      stroke="currentColor"
-                      stroke-width="2"
-                      stroke-linecap="round"
-                      stroke-linejoin="round"
-                    >
-                      <rect
-                        x="9"
-                        y="9"
-                        width="13"
-                        height="13"
-                        rx="2"
-                        ry="2"
-                      ></rect>
-                      <path
-                        d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
-                      ></path>
-                    </svg>`}
-              </span>
             </div>
           </div>
         </div>
diff --git a/webui/src/web-components/sketch-timeline-message.ts b/webui/src/web-components/sketch-timeline-message.ts
index 3fe519f..9ea1ced 100644
--- a/webui/src/web-components/sketch-timeline-message.ts
+++ b/webui/src/web-components/sketch-timeline-message.ts
@@ -1,7 +1,7 @@
 import { css, html, LitElement, render } from "lit";
 import { unsafeHTML } from "lit/directives/unsafe-html.js";
 import { customElement, property, state } from "lit/decorators.js";
-import { AgentMessage } from "../types";
+import { AgentMessage, State } from "../types";
 import { marked, MarkedOptions, Renderer, Tokens } from "marked";
 import mermaid from "mermaid";
 import DOMPurify from "dompurify";
@@ -12,6 +12,9 @@
   message: AgentMessage;
 
   @property()
+  state: State;
+
+  @property()
   previousMessage: AgentMessage;
 
   @property()
@@ -501,6 +504,43 @@
       background-color: rgba(40, 167, 69, 0.15);
     }
 
+    .commit-branch-container {
+      display: flex;
+      align-items: center;
+      gap: 6px;
+    }
+
+    .commit-branch-container .copy-icon {
+      opacity: 0.7;
+      display: flex;
+      align-items: center;
+    }
+
+    .commit-branch-container .copy-icon svg {
+      vertical-align: middle;
+    }
+
+    .commit-branch-container:hover .copy-icon {
+      opacity: 1;
+    }
+
+    .octocat-link {
+      color: #586069;
+      text-decoration: none;
+      display: flex;
+      align-items: center;
+      transition: color 0.2s ease;
+    }
+
+    .octocat-link:hover {
+      color: #0366d6;
+    }
+
+    .octocat-icon {
+      width: 14px;
+      height: 14px;
+    }
+
     .commit-subject {
       font-size: 13px;
       color: #333;
@@ -1064,6 +1104,49 @@
     }, 1500);
   }
 
+  // Format GitHub repository URL to org/repo format
+  formatGitHubRepo(url) {
+    if (!url) return null;
+
+    // Common GitHub URL patterns
+    const patterns = [
+      // HTTPS URLs
+      /https:\/\/github\.com\/([^/]+)\/([^/\s.]+)(?:\.git)?/,
+      // SSH URLs
+      /git@github\.com:([^/]+)\/([^/\s.]+)(?:\.git)?/,
+      // Git protocol
+      /git:\/\/github\.com\/([^/]+)\/([^/\s.]+)(?:\.git)?/,
+    ];
+
+    for (const pattern of patterns) {
+      const match = url.match(pattern);
+      if (match) {
+        return {
+          formatted: `${match[1]}/${match[2]}`,
+          url: `https://github.com/${match[1]}/${match[2]}`,
+          owner: match[1],
+          repo: match[2],
+        };
+      }
+    }
+
+    return null;
+  }
+
+  // Generate GitHub branch URL if linking is enabled
+  getGitHubBranchLink(branchName) {
+    if (!this.state?.link_to_github || !branchName) {
+      return null;
+    }
+
+    const github = this.formatGitHubRepo(this.state?.git_origin);
+    if (!github) {
+      return null;
+    }
+
+    return `https://github.com/${github.owner}/${github.repo}/tree/${branchName}`;
+  }
+
   render() {
     // Calculate if this is an end of turn message with no parent conversation ID
     const isEndOfTurn =
@@ -1265,18 +1348,75 @@
                               ${commit.hash.substring(0, 8)}
                             </span>
                             ${commit.pushed_branch
-                              ? html`
-                                  <span
-                                    class="commit-branch pushed-branch"
-                                    title="Click to copy: ${commit.pushed_branch}"
-                                    @click=${(e) =>
-                                      this.copyToClipboard(
-                                        commit.pushed_branch,
-                                        e,
-                                      )}
-                                    >${commit.pushed_branch}</span
-                                  >
-                                `
+                              ? (() => {
+                                  const githubLink = this.getGitHubBranchLink(
+                                    commit.pushed_branch,
+                                  );
+                                  return html`
+                                    <div class="commit-branch-container">
+                                      <span
+                                        class="commit-branch pushed-branch"
+                                        title="Click to copy: ${commit.pushed_branch}"
+                                        @click=${(e) =>
+                                          this.copyToClipboard(
+                                            commit.pushed_branch,
+                                            e,
+                                          )}
+                                        >${commit.pushed_branch}</span
+                                      >
+                                      <span class="copy-icon">
+                                        <svg
+                                          xmlns="http://www.w3.org/2000/svg"
+                                          width="14"
+                                          height="14"
+                                          viewBox="0 0 24 24"
+                                          fill="none"
+                                          stroke="currentColor"
+                                          stroke-width="2"
+                                          stroke-linecap="round"
+                                          stroke-linejoin="round"
+                                        >
+                                          <rect
+                                            x="9"
+                                            y="9"
+                                            width="13"
+                                            height="13"
+                                            rx="2"
+                                            ry="2"
+                                          ></rect>
+                                          <path
+                                            d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"
+                                          ></path>
+                                        </svg>
+                                      </span>
+                                      ${githubLink
+                                        ? html`
+                                            <a
+                                              href="${githubLink}"
+                                              target="_blank"
+                                              rel="noopener noreferrer"
+                                              class="octocat-link"
+                                              title="Open ${commit.pushed_branch} on GitHub"
+                                              @click=${(e) =>
+                                                e.stopPropagation()}
+                                            >
+                                              <svg
+                                                class="octocat-icon"
+                                                viewBox="0 0 16 16"
+                                                width="14"
+                                                height="14"
+                                              >
+                                                <path
+                                                  fill="currentColor"
+                                                  d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"
+                                                />
+                                              </svg>
+                                            </a>
+                                          `
+                                        : ""}
+                                    </div>
+                                  `;
+                                })()
                               : ``}
                             <span class="commit-subject"
                               >${commit.subject}</span
diff --git a/webui/src/web-components/sketch-timeline.ts b/webui/src/web-components/sketch-timeline.ts
index 3dd17a2..c450330 100644
--- a/webui/src/web-components/sketch-timeline.ts
+++ b/webui/src/web-components/sketch-timeline.ts
@@ -2,7 +2,7 @@
 import { PropertyValues } from "lit";
 import { repeat } from "lit/directives/repeat.js";
 import { customElement, property, state } from "lit/decorators.js";
-import { AgentMessage } from "../types";
+import { AgentMessage, State } from "../types";
 import "./sketch-timeline-message";
 import { Ref } from "lit/directives/ref";
 
@@ -31,6 +31,9 @@
   @property({ attribute: false })
   firstMessageIndex: number = 0;
 
+  @property({ attribute: false })
+  state: State | null = null;
+
   static styles = css`
     /* Hide views initially to prevent flash of content */
     .timeline-container .timeline,
@@ -402,6 +405,7 @@
                   .previousMessage=${previousMessage}
                   .open=${false}
                   .firstMessageIndex=${this.firstMessageIndex}
+                  .state=${this.state}
                 ></sketch-timeline-message>`;
               },
             )}
