diff --git a/app/assets/javascripts/issues/constants.js b/app/assets/javascripts/issues/constants.js
index 96cd9741f619025f26328e3f2e2991aa5f4b77b8..4f5086fcd7639efed9e92e0a5330c7331a0b6fe1 100644
--- a/app/assets/javascripts/issues/constants.js
+++ b/app/assets/javascripts/issues/constants.js
@@ -51,3 +51,40 @@ export const issuableTypeText = {
   [WORK_ITEM_TYPE_VALUE_OBJECTIVE]: __('objective'),
   [WORK_ITEM_TYPE_VALUE_TASK]: __('task'),
 };
+
+const SHIFT_KEY = 16;
+const CTRL_KEY = 17;
+const ALT_KEY = 18;
+const ESC_KEY = 27;
+const LEFT_ARROW_KEY = 37;
+const UP_ARROW_KEY = 38;
+const RIGHT_ARROW_KEY = 39;
+const DOWN_ARROW_KEY = 40;
+const WIN_CMD_KEY = 91;
+const CONTEXT_MENU_KEY = 93;
+
+export const NON_INPUT_KEY_EVENTS = [
+  { keyCode: SHIFT_KEY, label: 'shift' },
+  { keyCode: CTRL_KEY, label: 'control' },
+  { keyCode: ALT_KEY, label: 'alt' },
+  { keyCode: ESC_KEY, label: 'escape' },
+  { keyCode: LEFT_ARROW_KEY, label: 'left' },
+  { keyCode: UP_ARROW_KEY, label: 'up' },
+  { keyCode: RIGHT_ARROW_KEY, label: 'right' },
+  { keyCode: DOWN_ARROW_KEY, label: 'down' },
+  { keyCode: WIN_CMD_KEY, label: 'Windows/Command' },
+  { keyCode: CONTEXT_MENU_KEY, label: 'ContextMenu' },
+];
+
+export const NON_INPUT_KEYS = [
+  SHIFT_KEY,
+  CTRL_KEY,
+  ALT_KEY,
+  ESC_KEY,
+  LEFT_ARROW_KEY,
+  UP_ARROW_KEY,
+  RIGHT_ARROW_KEY,
+  DOWN_ARROW_KEY,
+  WIN_CMD_KEY,
+  CONTEXT_MENU_KEY,
+];
diff --git a/app/assets/javascripts/issues/create_merge_request_dropdown.js b/app/assets/javascripts/issues/create_merge_request_dropdown.js
index 3ef3ff205b9bc5d87bc8f245ffbfa5e85ea7c322..b21955a5773ade2b314fd429a0f1835433cbe843 100644
--- a/app/assets/javascripts/issues/create_merge_request_dropdown.js
+++ b/app/assets/javascripts/issues/create_merge_request_dropdown.js
@@ -16,6 +16,7 @@ import {
   humanizeBranchValidationErrors,
 } from '~/lib/utils/text_utility';
 import api from '~/api';
+import { NON_INPUT_KEYS } from './constants';
 
 // Todo: Remove this when fixing issue in input_setter plugin
 const InputSetter = { ...ISetter };
@@ -378,6 +379,17 @@ export default class CreateMergeRequestDropdown {
   }
 
   onChangeInput(event) {
+    // If the user was holding a meta key, released a meta key, or released or pressed esc, do nothing.
+    if (
+      event.altKey ||
+      event.ctrlKey ||
+      event.metaKey ||
+      event.shiftKey ||
+      NON_INPUT_KEYS.includes(event.keyCode)
+    ) {
+      return undefined;
+    }
+
     this.disable();
     let target;
     let value;
diff --git a/spec/frontend/issues/create_merge_request_dropdown_spec.js b/spec/frontend/issues/create_merge_request_dropdown_spec.js
index a925195fc5e20d75e9b30c1c95aebb301f4bcb27..d1dedb4354da64d9df53fd9899eb027783cea78a 100644
--- a/spec/frontend/issues/create_merge_request_dropdown_spec.js
+++ b/spec/frontend/issues/create_merge_request_dropdown_spec.js
@@ -1,6 +1,7 @@
 import MockAdapter from 'axios-mock-adapter';
 import { TEST_HOST } from 'helpers/test_constants';
 import confidentialState from '~/confidential_merge_request/state';
+import { NON_INPUT_KEY_EVENTS } from '~/issues/constants';
 import CreateMergeRequestDropdown from '~/issues/create_merge_request_dropdown';
 import axios from '~/lib/utils/axios_utils';
 
@@ -97,4 +98,28 @@ describe('CreateMergeRequestDropdown', () => {
       );
     });
   });
+
+  describe('onChangeInput', () => {
+    it('returns early if the user copies the branch name', () => {
+      const ctrlEvent = {
+        keyCode: 67, // 'c' key
+        ctrlKey: true,
+      };
+      expect(dropdown.onChangeInput(ctrlEvent)).toBe(undefined);
+      const cmdEvent = {
+        keyCode: 67, // 'c' key
+        metaKey: true,
+      };
+      expect(dropdown.onChangeInput(cmdEvent)).toBe(undefined);
+    });
+    it.each(NON_INPUT_KEY_EVENTS)(
+      'returns early when the user releases $label key',
+      ({ keyCode }) => {
+        const event = {
+          keyCode,
+        };
+        expect(dropdown.onChangeInput(event)).toBe(undefined);
+      },
+    );
+  });
 });