diff --git a/services/actions/schedule_tasks.go b/services/actions/schedule_tasks.go
index 87131e0aab..12227377ab 100644
--- a/services/actions/schedule_tasks.go
+++ b/services/actions/schedule_tasks.go
@@ -10,6 +10,7 @@ import (
 
 	actions_model "code.gitea.io/gitea/models/actions"
 	"code.gitea.io/gitea/models/db"
+	"code.gitea.io/gitea/models/unit"
 	"code.gitea.io/gitea/modules/log"
 	"code.gitea.io/gitea/modules/timeutil"
 	webhook_module "code.gitea.io/gitea/modules/webhook"
@@ -44,6 +45,10 @@ func startTasks(ctx context.Context) error {
 			return fmt.Errorf("find specs: %w", err)
 		}
 
+		if err := specs.LoadRepos(); err != nil {
+			return fmt.Errorf("LoadRepos: %w", err)
+		}
+
 		// Loop through each spec and create a schedule task for it
 		for _, row := range specs {
 			// cancel running jobs if the event is push
@@ -59,6 +64,11 @@ func startTasks(ctx context.Context) error {
 				}
 			}
 
+			cfg := row.Repo.MustGetUnit(ctx, unit.TypeActions).ActionsConfig()
+			if cfg.IsWorkflowDisabled(row.Schedule.WorkflowID) {
+				continue
+			}
+
 			if err := CreateScheduleTask(ctx, row.Schedule); err != nil {
 				log.Error("CreateScheduleTask: %v", err)
 				return err