diff --git a/server/agent/manager.go b/server/agent/manager.go
index a302133..191d42e 100644
--- a/server/agent/manager.go
+++ b/server/agent/manager.go
@@ -275,7 +275,7 @@
 		slog.String("agent", agent.Name))
 
 	for _, task := range tasks {
-		if task.Status == tm.StatusToDo || task.Status == tm.StatusPending {
+		if task.Status == tm.StatusToDo {
 			if err := m.processTask(agent, task); err != nil {
 				m.logger.Error("Error processing task",
 					slog.String("task_id", task.ID),
@@ -315,9 +315,6 @@
 	// Mark task as in progress
 	task.Status = tm.StatusInProgress
 	agent.CurrentTask = &task.ID
-	if err := m.taskManager.UpdateTask(task); err != nil {
-		return fmt.Errorf("failed to update task status: %w", err)
-	}
 
 	// Check if this task should generate subtasks (with LLM decision)
 	if m.shouldGenerateSubtasks(task) {
@@ -326,19 +323,7 @@
 			m.logger.Warn("Failed to generate subtasks for task",
 				slog.String("task_id", task.ID),
 				slog.String("error", err.Error()))
-			// Continue with normal processing if subtask generation fails
 		} else {
-			// Task has been converted to subtask management, mark as completed
-			task.Status = tm.StatusCompleted
-			task.Solution = "Task analyzed by LLM and broken down into subtasks with potential new agent creation. See subtasks PR for details."
-			completedAt := time.Now()
-			task.CompletedAt = &completedAt
-			agent.CurrentTask = nil
-
-			if err := m.taskManager.UpdateTask(task); err != nil {
-				return fmt.Errorf("failed to update task with subtasks: %w", err)
-			}
-
 			m.logger.Info("Task converted to subtasks by agent using LLM analysis",
 				slog.String("task_id", task.ID),
 				slog.String("agent", agent.Name))
@@ -364,18 +349,6 @@
 		return fmt.Errorf("failed to create pull request: %w", err)
 	}
 
-	// Update task as completed
-	task.Status = tm.StatusCompleted
-	task.Solution = solution
-	task.PullRequestURL = prURL
-	completedAt := time.Now()
-	task.CompletedAt = &completedAt
-	agent.CurrentTask = nil
-
-	if err := m.taskManager.UpdateTask(task); err != nil {
-		return fmt.Errorf("failed to update completed task: %w", err)
-	}
-
 	// Update agent stats
 	duration := time.Since(startTime)
 	if agent.Stats.AvgTime == 0 {
@@ -717,12 +690,7 @@
 		return task.Priority == tm.PriorityHigh || len(task.Description) > 200
 	}
 
-	// Update task to mark as evaluated
 	task.SubtasksEvaluated = true
-	if err := m.taskManager.UpdateTask(task); err != nil {
-		m.logger.Warn("Failed to update task evaluation status", slog.String("error", err.Error()))
-	}
-
 	m.logger.Info("LLM subtask decision for task",
 		slog.String("task_id", task.ID),
 		slog.Bool("needs_subtasks", decision.NeedsSubtasks),
