diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index 637aaab..5ca3395 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -519,6 +519,12 @@
 func setupAndRunAgent(ctx context.Context, flags CLIFlags, modelURL, apiKey, pubKey string, inInsideSketch bool, logFile *os.File) error {
 	var client *http.Client
 
+	// Set the public key environment variable if provided
+	// This is needed for MCP server authentication placeholder replacement
+	if pubKey != "" {
+		os.Setenv("SKETCH_PUB_KEY", pubKey)
+	}
+
 	wd, err := os.Getwd()
 	if err != nil {
 		return err
diff --git a/cmd/sketch/main_test.go b/cmd/sketch/main_test.go
index 3ebd05d..10ca1e0 100644
--- a/cmd/sketch/main_test.go
+++ b/cmd/sketch/main_test.go
@@ -1,6 +1,7 @@
 package main
 
 import (
+	"context"
 	"os"
 	"testing"
 )
@@ -35,3 +36,77 @@
 		})
 	}
 }
+
+func TestSetupAndRunAgent_SetsPubKeyEnvVar(t *testing.T) {
+	// Save original environment
+	originalPubKey := os.Getenv("SKETCH_PUB_KEY")
+	defer func() {
+		if originalPubKey == "" {
+			os.Unsetenv("SKETCH_PUB_KEY")
+		} else {
+			os.Setenv("SKETCH_PUB_KEY", originalPubKey)
+		}
+	}()
+
+	// Clear the environment variable first
+	os.Unsetenv("SKETCH_PUB_KEY")
+
+	// Verify it's not set
+	if os.Getenv("SKETCH_PUB_KEY") != "" {
+		t.Fatal("SKETCH_PUB_KEY should not be set initially")
+	}
+
+	// Test data
+	testPubKey := "test-public-key-123"
+
+	// Create a minimal flags struct
+	flags := CLIFlags{
+		modelName: "claude",
+	}
+
+	// This should fail due to missing API key, but should still set the environment variable
+	err := setupAndRunAgent(context.TODO(), flags, "", "", testPubKey, false, nil)
+
+	// Check that the environment variable was set correctly
+	if os.Getenv("SKETCH_PUB_KEY") != testPubKey {
+		t.Errorf("Expected SKETCH_PUB_KEY to be %q, got %q", testPubKey, os.Getenv("SKETCH_PUB_KEY"))
+	}
+
+	// We expect this to fail due to missing API key, but that's fine for this test
+	if err == nil {
+		t.Error("Expected setupAndRunAgent to fail due to missing API key")
+	}
+}
+
+func TestSetupAndRunAgent_DoesNotSetEmptyPubKey(t *testing.T) {
+	// Save original environment
+	originalPubKey := os.Getenv("SKETCH_PUB_KEY")
+	defer func() {
+		if originalPubKey == "" {
+			os.Unsetenv("SKETCH_PUB_KEY")
+		} else {
+			os.Setenv("SKETCH_PUB_KEY", originalPubKey)
+		}
+	}()
+
+	// Set a value first
+	os.Setenv("SKETCH_PUB_KEY", "existing-value")
+
+	// Create a minimal flags struct
+	flags := CLIFlags{
+		modelName: "claude",
+	}
+
+	// This should fail due to missing API key, but should not change the environment variable
+	err := setupAndRunAgent(context.TODO(), flags, "", "", "", false, nil)
+
+	// Check that the environment variable was not changed
+	if os.Getenv("SKETCH_PUB_KEY") != "existing-value" {
+		t.Errorf("Expected SKETCH_PUB_KEY to remain %q, got %q", "existing-value", os.Getenv("SKETCH_PUB_KEY"))
+	}
+
+	// We expect this to fail due to missing API key, but that's fine for this test
+	if err == nil {
+		t.Error("Expected setupAndRunAgent to fail due to missing API key")
+	}
+}
