diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index 74571f7..5c9436a 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -264,28 +264,29 @@
 }
 
 type CLIFlags struct {
-	addr         string
-	skabandAddr  string
-	unsafe       bool
-	openBrowser  bool
-	httprrFile   string
-	maxDollars   float64
-	oneShot      bool
-	prompt       string
-	modelName    string
-	llmAPIKey    string
-	listModels   bool
-	verbose      bool
-	version      bool
-	workingDir   string
-	dumpDist     string
-	sshPort      int
-	forceRebuild bool
-	baseImage    string
-	linkToGitHub bool
-	ignoreSig    bool
-	doUpdate     bool
-	checkVersion bool
+	addr          string
+	skabandAddr   string
+	unsafe        bool
+	openBrowser   bool
+	httprrFile    string
+	maxDollars    float64
+	oneShot       bool
+	prompt        string
+	modelName     string
+	llmAPIKey     string
+	listModels    bool
+	verbose       bool
+	version       bool
+	workingDir    string
+	dumpDist      string
+	sshPort       int
+	forceRebuild  bool
+	baseImage     string
+	linkToGitHub  bool
+	ignoreSig     bool
+	doUpdate      bool
+	checkVersion  bool
+	fetchOnLaunch bool
 
 	gitUsername         string
 	gitEmail            string
@@ -344,6 +345,7 @@
 	userFlags.BoolVar(&flags.version, "version", false, "print the version and exit")
 	userFlags.BoolVar(&flags.doUpdate, "update", false, "update to the latest version of sketch")
 	userFlags.BoolVar(&flags.checkVersion, "version-check", true, "do version upgrade check (please leave this on)")
+	userFlags.BoolVar(&flags.fetchOnLaunch, "fetch-on-launch", true, "do a git fetch when sketch starts")
 	userFlags.IntVar(&flags.sshPort, "ssh-port", 0, "the host port number that the container's ssh server will listen on, or a randomly chosen port if this value is 0")
 	userFlags.BoolVar(&flags.forceRebuild, "force-rebuild-container", false, "rebuild Docker container")
 	userFlags.BoolVar(&flags.forceRebuild, "rebuild", false, "rebuild Docker container (alias for -force-rebuild-container)")
@@ -555,6 +557,7 @@
 		MCPServers:          flags.mcpServers,
 		PassthroughUpstream: flags.passthroughUpstream,
 		DumpLLM:             flags.dumpLLM,
+		FetchOnLaunch:       flags.fetchOnLaunch,
 	}
 
 	if err := dockerimg.LaunchContainer(ctx, config); err != nil {
@@ -699,6 +702,7 @@
 		SSHConnectionString: flags.sshConnectionString,
 		MCPServers:          flags.mcpServers,
 		PassthroughUpstream: flags.passthroughUpstream,
+		FetchOnLaunch:       flags.fetchOnLaunch,
 	}
 
 	// Parse timeout configuration
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index 49dafa0..ba93ed0 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -142,6 +142,9 @@
 
 	// DumpLLM requests dumping of raw communications with LLM services to files
 	DumpLLM bool
+
+	// FetchOnLaunch enables git fetch during initialization
+	FetchOnLaunch bool
 }
 
 // LaunchContainer creates a docker container for a project, installs sketch and opens a connection to it.
@@ -646,6 +649,9 @@
 	if config.DumpLLM {
 		cmdArgs = append(cmdArgs, "-dump-llm")
 	}
+	if !config.FetchOnLaunch {
+		cmdArgs = append(cmdArgs, "-fetch-on-launch=false")
+	}
 
 	// Add additional docker arguments if provided
 	if config.DockerArgs != "" {
diff --git a/loop/agent.go b/loop/agent.go
index 872f77f..da0f847 100644
--- a/loop/agent.go
+++ b/loop/agent.go
@@ -1130,6 +1130,8 @@
 	BashTimeouts *claudetool.Timeouts
 	// PassthroughUpstream configures upstream remote for passthrough to innie
 	PassthroughUpstream bool
+	// FetchOnLaunch enables git fetch during initialization
+	FetchOnLaunch bool
 }
 
 // NewAgent creates a new Agent.
@@ -1242,15 +1244,16 @@
 
 	// If a commit was specified, we fetch and reset to it.
 	if a.config.Commit != "" && a.gitState.gitRemoteAddr != "" {
-		slog.InfoContext(ctx, "updating git repo", "commit", a.config.Commit)
-
-		cmd := exec.CommandContext(ctx, "git", "fetch", "--prune", "origin")
-		cmd.Dir = a.workingDir
-		if out, err := cmd.CombinedOutput(); err != nil {
-			return fmt.Errorf("git fetch: %s: %w", out, err)
+		if a.config.FetchOnLaunch {
+			slog.InfoContext(ctx, "updating git repo", "commit", a.config.Commit)
+			cmd := exec.CommandContext(ctx, "git", "fetch", "--prune", "origin")
+			cmd.Dir = a.workingDir
+			if out, err := cmd.CombinedOutput(); err != nil {
+				return fmt.Errorf("git fetch: %s: %w", out, err)
+			}
 		}
 		// The -B resets the branch if it already exists (or creates it if it doesn't)
-		cmd = exec.CommandContext(ctx, "git", "checkout", "-f", "-B", "sketch-wip", a.config.Commit)
+		cmd := exec.CommandContext(ctx, "git", "checkout", "-f", "-B", "sketch-wip", a.config.Commit)
 		cmd.Dir = a.workingDir
 		if checkoutOut, err := cmd.CombinedOutput(); err != nil {
 			// Remove git hooks if they exist and retry
