diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index ce5646e..6e3cfbe 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -202,6 +202,7 @@
 	mounts            StringSliceFlag
 	termUI            bool
 	gitRemoteURL      string
+	upstream          string
 	commit            string
 	outsideHTTP       string
 	branchPrefix      string
@@ -250,6 +251,7 @@
 	internalFlags.StringVar(&flags.outsideWorkingDir, "outside-working-dir", "", "(internal) working dir on the outside system")
 	internalFlags.StringVar(&flags.sketchBinaryLinux, "sketch-binary-linux", "", "(development) path to a pre-built sketch binary for linux")
 	internalFlags.StringVar(&flags.gitRemoteURL, "git-remote-url", "", "(internal) git remote for outside sketch")
+	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")
 
@@ -509,6 +511,7 @@
 		InDocker:      flags.outsideHostname != "",
 		OneShot:       flags.oneShot,
 		GitRemoteAddr: flags.gitRemoteURL,
+		Upstream:      flags.upstream,
 		OutsideHTTP:   flags.outsideHTTP,
 		Commit:        flags.commit,
 		BranchPrefix:  flags.branchPrefix,
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index da3ccbb..42d9e14 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -110,6 +110,9 @@
 
 	GitRemoteUrl string
 
+	// Upstream branch for git work
+	Upstream string
+
 	// Commit hash to checkout from GetRemoteUrl
 	Commit string
 
@@ -201,6 +204,13 @@
 	} else {
 		commit = strings.TrimSpace(string(out))
 	}
+
+	var upstream string
+	if out, err := combinedOutput(ctx, "git", "branch", "--show-current"); err != nil {
+		slog.DebugContext(ctx, "git branch --show-current failed (continuing)", "error", err)
+	} else {
+		upstream = strings.TrimSpace(string(out))
+	}
 	if out, err := combinedOutput(ctx, "git", "config", "http.receivepack", "true"); err != nil {
 		return fmt.Errorf("git config http.receivepack true: %s: %w", out, err)
 	}
@@ -212,6 +222,7 @@
 
 	config.OutsideHTTP = fmt.Sprintf("http://sketch:%s@host.docker.internal:%s", gitSrv.pass, gitSrv.gitPort)
 	config.GitRemoteUrl = fmt.Sprintf("http://sketch:%s@host.docker.internal:%s/.git", gitSrv.pass, gitSrv.gitPort)
+	config.Upstream = upstream
 	config.Commit = commit
 
 	// Create the sketch container
@@ -555,6 +566,7 @@
 			panic("Commit should have been set when GitRemoteUrl was set")
 		}
 		cmdArgs = append(cmdArgs, "-commit="+config.Commit)
+		cmdArgs = append(cmdArgs, "-upstream="+config.Upstream)
 	}
 	if config.OutsideHTTP != "" {
 		cmdArgs = append(cmdArgs, "-outside-http="+config.OutsideHTTP)
diff --git a/loop/agent.go b/loop/agent.go
index fd01f33..466cec0 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -320,6 +320,7 @@
 	mu            sync.Mutex      // protects following
 	lastHEAD      string          // hash of the last HEAD that was pushed to the host
 	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
 }
@@ -336,6 +337,12 @@
 	return ags.branchName
 }
 
+func (ags *AgentGitState) Upstream() string {
+	ags.mu.Lock()
+	defer ags.mu.Unlock()
+	return ags.upstream
+}
+
 type Agent struct {
 	convo             ConvoInterface
 	config            AgentConfig // config for this agent
@@ -914,6 +921,11 @@
 	return a.originalBudget
 }
 
+// Upstream returns the upstream branch for git work
+func (a *Agent) Upstream() string {
+	return a.gitState.Upstream()
+}
+
 // AgentConfig contains configuration for creating a new Agent.
 type AgentConfig struct {
 	Context      context.Context
@@ -936,6 +948,8 @@
 	OutsideHTTP string
 	// Outtie's Git server
 	GitRemoteAddr string
+	// Upstream branch for git work
+	Upstream string
 	// Commit to checkout from Outtie
 	Commit string
 	// Prefix for git branches created by sketch
@@ -960,6 +974,7 @@
 		gitState: AgentGitState{
 			seenCommits:   make(map[string]bool),
 			gitRemoteAddr: config.GitRemoteAddr,
+			upstream:      config.Upstream,
 		},
 		outsideHostname:      config.OutsideHostname,
 		outsideOS:            config.OutsideOS,
