diff --git a/server/cmd/commands/generate_subtasks.go b/server/cmd/commands/generate_subtasks.go
deleted file mode 100644
index c907b82..0000000
--- a/server/cmd/commands/generate_subtasks.go
+++ /dev/null
@@ -1,95 +0,0 @@
-package commands
-
-import (
-	"fmt"
-	"log"
-
-	"github.com/spf13/cobra"
-)
-
-var generateSubtasksCmd = &cobra.Command{
-	Use:   "generate-subtasks [task-id]",
-	Short: "Generate subtasks for a given task using LLM analysis",
-	Long: `Analyze a task and generate proposed subtasks using LLM analysis.
-This creates a PR with the proposed subtasks that can be reviewed and merged.
-
-Example:
-  staff generate-subtasks task-123456-abcdef`,
-	Args: cobra.ExactArgs(1),
-	RunE: runGenerateSubtasks,
-}
-
-func init() {
-	rootCmd.AddCommand(generateSubtasksCmd)
-}
-
-func runGenerateSubtasks(cmd *cobra.Command, args []string) error {
-	taskID := args[0]
-
-	// Get the task
-	task, err := taskManager.GetTask(taskID)
-	if err != nil {
-		return fmt.Errorf("failed to get task: %w", err)
-	}
-
-	fmt.Printf("Generating subtasks for task: %s\n", task.Title)
-	fmt.Printf("Description: %s\n", task.Description)
-	fmt.Printf("Priority: %s\n\n", task.Priority)
-
-	// Check if subtasks already generated
-	if task.SubtasksGenerated {
-		fmt.Printf("⚠️ Subtasks already generated for this task\n")
-		if task.SubtasksPRURL != "" {
-			fmt.Printf("PR URL: %s\n", task.SubtasksPRURL)
-		}
-		return nil
-	}
-
-	// Force subtask generation by temporarily marking as high priority
-	originalPriority := task.Priority
-	task.Priority = "high"
-
-	// Get the manager's subtask service and generate
-	if agentManager == nil {
-		return fmt.Errorf("agent manager not initialized")
-	}
-
-	// This is a bit of a hack to access private method, but for testing...
-	log.Printf("Starting subtask analysis for task %s...", taskID)
-	
-	// We'll call this through the normal task processing flow
-	// by creating a dummy agent to trigger the subtask generation
-	agentStatus := agentManager.GetAgentStatus()
-	if len(agentStatus) == 0 {
-		return fmt.Errorf("no agents available")
-	}
-
-	// Get first available agent
-	var agentName string
-	for name := range agentStatus {
-		agentName = name
-		break
-	}
-
-	fmt.Printf("🤖 Using agent '%s' for subtask analysis...\n\n", agentName)
-
-	// Create a simple approach: assign task to agent and let it process
-	task.Assignee = agentName
-	task.Priority = originalPriority // Restore original priority
-	
-	if err := taskManager.UpdateTask(task); err != nil {
-		return fmt.Errorf("failed to update task assignment: %w", err)
-	}
-
-	fmt.Printf("✅ Task assigned to agent '%s' for subtask generation\n", agentName)
-	fmt.Printf("💡 Start the server to see subtask generation in action:\n")
-	fmt.Printf("   staff server --config config-fake.yaml\n\n")
-	fmt.Printf("📋 The agent will:\n")
-	fmt.Printf("   1. Analyze the task requirements\n")
-	fmt.Printf("   2. Generate proposed subtasks with LLM\n")
-	fmt.Printf("   3. Create a PR with subtask proposals\n")
-	fmt.Printf("   4. Wait for PR review and approval\n")
-	fmt.Printf("   5. Create actual subtasks when PR is merged\n")
-
-	return nil
-}
\ No newline at end of file
diff --git a/server/cmd/commands/root.go b/server/cmd/commands/root.go
index ade7c53..e75e134 100644
--- a/server/cmd/commands/root.go
+++ b/server/cmd/commands/root.go
@@ -75,8 +75,8 @@
 		Level: slog.LevelInfo,
 	}))
 
-	gitInterface := git.DefaultGit("../")
-	taskManager = git_tm.NewGitTaskManagerWithLogger(gitInterface, "../", logger)
+	gitInterface := git.New(cfg, logger)
+	taskManager = git_tm.NewGitTaskManager(gitInterface, cfg, logger)
 
 	// Initialize agent manager
 	agentManager, err = agent.NewManager(cfg, taskManager, logger)
