diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 7bb4539684..938c53af3f 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -1326,7 +1326,7 @@ settings.protect_merge_whitelist_committers_desc = Allow only whitelisted users
 settings.protect_merge_whitelist_users = Whitelisted users for merging:
 settings.protect_merge_whitelist_teams = Whitelisted teams for merging:
 settings.protect_check_status_contexts = Enable Status Check
-settings.protect_check_status_contexts_desc = Require status checks to pass before merging Choose which status checks must pass before branches can be merged into a branch that matches this rule. When enabled, commits must first be pushed to another branch, then merged or pushed directly to a branch that matches this rule after status checks have passed.
+settings.protect_check_status_contexts_desc = Require status checks to pass before merging Choose which status checks must pass before branches can be merged into a branch that matches this rule. When enabled, commits must first be pushed to another branch, then merged or pushed directly to a branch that matches this rule after status checks have passed. If no contexts are selected, the last commit must be successful regardless of context.
 settings.protect_check_status_contexts_list = Status checks found in the last week for this repository
 settings.protect_required_approvals = Required approvals:
 settings.protect_required_approvals_desc = Allow only to merge pull request with enough positive reviews of whitelisted users or teams.
diff --git a/services/pull/commit_status.go b/services/pull/commit_status.go
index bdadc329d6..2872db7bd2 100644
--- a/services/pull/commit_status.go
+++ b/services/pull/commit_status.go
@@ -8,12 +8,20 @@ package pull
 import (
 	"code.gitea.io/gitea/models"
 	"code.gitea.io/gitea/modules/git"
-
 	"github.com/pkg/errors"
 )
 
 // IsCommitStatusContextSuccess returns true if all required status check contexts succeed.
 func IsCommitStatusContextSuccess(commitStatuses []*models.CommitStatus, requiredContexts []string) bool {
+	// If no specific context is required, require that last commit status is a success
+	if len(requiredContexts) == 0 {
+		status := models.CalcCommitStatus(commitStatuses)
+		if status == nil || status.State != models.CommitStatusSuccess {
+			return false
+		}
+		return true
+	}
+
 	for _, ctx := range requiredContexts {
 		var found bool
 		for _, commitStatus := range commitStatuses {