diff --git a/CHANGELOG b/CHANGELOG
index 3fad823c80038c23760ecc132a97745728a008a8..3504c6c74e4ae9a9970545d2b675a402a1e4fb62 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -17,6 +17,7 @@ v 8.9.1
   - Fix unwanted label unassignment when doing bulk action on issues page
   - Fix 404 when accessing pipelines as guest user on public projects
   - Fix mobile Safari bug where horizontal nav arrows would flicker on scroll
+  - Fix in auto merge when pipeline is nil
 
 v 8.9.0
   - Fix builds API response not including commit data
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 6c26c7f76586d877990a04382c59904f21a1b66e..089669841d30d1088c78df86e70e38d330a878f6 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -204,8 +204,13 @@ class Projects::MergeRequestsController < Projects::ApplicationController
 
     @merge_request.update(merge_error: nil)
 
-    if params[:merge_when_build_succeeds].present? 
-      if @merge_request.pipeline && @merge_request.pipeline.active?
+    if params[:merge_when_build_succeeds].present?
+      unless @merge_request.pipeline
+        @status = :failed
+        return
+      end
+
+      if @merge_request.pipeline.active?
         MergeRequests::MergeWhenBuildSucceedsService.new(@project, current_user, merge_params)
                                                         .execute(@merge_request)
         @status = :merge_when_build_succeeds