diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index b016128..b8b674b 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -1563,7 +1563,27 @@
    * @param {?Object} edit
    */
   _processEdit(change, edit) {
+    if (
+      (change.status === this.ChangeStatus.MERGED ||
+        change.status === this.ChangeStatus.ABANDONED) &&
+      this._editMode
+    ) {
+      /* eslint-disable max-len */
+      const message =
+        'Change edits cannot be created if change is merged or abandoned. Redirected to non edit mode.';
+      this.dispatchEvent(
+          new CustomEvent('show-alert', {
+            detail: {message},
+            bubbles: true,
+            composed: true,
+          })
+      );
+      GerritNav.navigateToChange(change);
+      return;
+    }
+
     if (!edit) { return; }
+
     change.revisions[edit.commit.commit] = {
       _number: this.EDIT_NAME,
       basePatchNum: edit.base_patch_set_number,
diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js
index b766e7f..6e4d8c6 100644
--- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js
+++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js
@@ -32,6 +32,7 @@
 import {htmlTemplate} from './gr-editor-view_html.js';
 import {PatchSetBehavior} from '../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.js';
 import {PathListBehavior} from '../../../behaviors/gr-path-list-behavior/gr-path-list-behavior.js';
+import {RESTClientBehavior} from '../../../behaviors/rest-client-behavior/rest-client-behavior.js';
 import {KeyboardShortcutBehavior} from '../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.js';
 import {GerritNav} from '../../core/gr-navigation/gr-navigation.js';
 
@@ -49,6 +50,7 @@
   KeyboardShortcutBehavior,
   PatchSetBehavior,
   PathListBehavior,
+  RESTClientBehavior,
 ], GestureEventListeners(
     LegacyElementMixin(
         PolymerElement))) {
@@ -77,7 +79,10 @@
         observer: '_paramsChanged',
       },
 
-      _change: Object,
+      _change: {
+        type: Object,
+        observer: '_editChange',
+      },
       _changeEditDetail: Object,
       _changeNum: String,
       _patchNum: String,
@@ -169,6 +174,23 @@
     });
   }
 
+  _editChange(value) {
+    if (!value) return;
+    if (value.status !== this.ChangeStatus.MERGED &&
+      value.status !== this.ChangeStatus.ABANDONED) return;
+    /* eslint-disable max-len */
+    const message =
+      'Change edits cannot be created if change is merged or abandoned. Redirected to non edit mode.';
+    this.dispatchEvent(
+        new CustomEvent('show-alert', {
+          detail: {message},
+          bubbles: true,
+          composed: true,
+        })
+    );
+    GerritNav.navigateToChange(value);
+  }
+
   _handlePathChanged(e) {
     const path = e.detail;
     if (path === this._path) {
