diff --git a/server/tm/git_tm/git_task_manager.go b/server/tm/git_tm/git_task_manager.go
index cca9da8..add69ef 100644
--- a/server/tm/git_tm/git_task_manager.go
+++ b/server/tm/git_tm/git_task_manager.go
@@ -534,12 +534,12 @@
 }
 
 // GenerateSubtaskPR creates a PR with the proposed subtasks
-func (gtm *GitTaskManager) ProposeSubTasks(ctx context.Context, task *tm.Task, analysis *tm.SubtaskAnalysis) (string, error) {
+func (gtm *GitTaskManager) ProposeSubTasks(ctx context.Context, task *tm.Task, analysis *tm.SubtaskAnalysis, agentName string) (string, error) {
 	branchName := generateBranchName("subtasks", task)
 	gtm.logger.Info("Creating subtask PR", slog.String("branch", branchName))
 
 	// Create Git branch and commit subtask proposal
-	if err := gtm.createSubtaskBranch(ctx, analysis, branchName); err != nil {
+	if err := gtm.createSubtaskBranch(ctx, analysis, branchName, agentName); err != nil {
 		return "", fmt.Errorf("failed to create subtask branch: %w", err)
 	}
 
@@ -556,7 +556,7 @@
 	}
 
 	// Determine base branch (try main first, fallback to master)
-	baseBranch := gtm.determineBaseBranch(ctx)
+	baseBranch := gtm.determineBaseBranch(ctx, agentName)
 	gtm.logger.Info("Using base branch", slog.String("base_branch", baseBranch))
 
 	// Create the pull request
@@ -611,9 +611,13 @@
 	return pr.URL, nil
 }
 
+func (gtm *GitTaskManager) Close() error {
+	return gtm.git.CleanupAllClones()
+}
+
 // createSubtaskBranch creates a Git branch with subtask proposal content
-func (gtm *GitTaskManager) createSubtaskBranch(ctx context.Context, analysis *tm.SubtaskAnalysis, branchName string) error {
-	clonePath, err := gtm.git.GetAgentClonePath("subtask-service")
+func (gtm *GitTaskManager) createSubtaskBranch(ctx context.Context, analysis *tm.SubtaskAnalysis, branchName, agentName string) error {
+	clonePath, err := gtm.git.GetAgentClonePath(agentName)
 	if err != nil {
 		return fmt.Errorf("failed to get clone path: %w", err)
 	}
@@ -932,9 +936,9 @@
 	return content.String()
 }
 
-func (gtm *GitTaskManager) determineBaseBranch(ctx context.Context) string {
+func (gtm *GitTaskManager) determineBaseBranch(ctx context.Context, agentName string) string {
 	// Get clone path to check branches
-	clonePath, err := gtm.git.GetAgentClonePath("subtask-service")
+	clonePath, err := gtm.git.GetAgentClonePath(agentName)
 	if err != nil {
 		gtm.logger.Warn("Failed to get clone path for base branch detection", slog.String("error", err.Error()))
 		return "main"
