diff --git a/app/assets/javascripts/behaviors/shortcuts/keybindings.js b/app/assets/javascripts/behaviors/shortcuts/keybindings.js
index 10c22609858cbdd97807c68b73282f8cda28c398..c7ee7699d9ca5848818cdc0b7caf64421da79694 100644
--- a/app/assets/javascripts/behaviors/shortcuts/keybindings.js
+++ b/app/assets/javascripts/behaviors/shortcuts/keybindings.js
@@ -388,9 +388,12 @@ export const PROJECT_FILES_GO_BACK = {
   defaultKeys: ['esc'],
 };
 
+const { blobOverflowMenu } = gon.features ?? {};
 export const PROJECT_FILES_GO_TO_PERMALINK = {
   id: 'projectFiles.goToFilePermalink',
-  description: __('Go to file permalink (while viewing a file)'),
+  description: blobOverflowMenu
+    ? __('Copy file permalink')
+    : __('Go to file permalink (while viewing a file)'),
   defaultKeys: ['y'],
 };
 
diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js
index 9f8d7272e5c52e9afca92f48934fc8844a9ab850..13ecfaf1a5493dff78cdeeceef43a29c28ae1388 100644
--- a/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js
+++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts_blob.js
@@ -3,6 +3,12 @@ import { moveToFilePermalink } from '~/blob/utils';
 
 export default class ShortcutsBlob {
   constructor(shortcuts) {
+    const { blobOverflowMenu } = gon.features ?? {};
+    if (blobOverflowMenu) {
+      // TODO: Remove ShortcutsBlob entirely once these feature flags are removed.
+      return;
+    }
+
     shortcuts.add(PROJECT_FILES_GO_TO_PERMALINK, moveToFilePermalink);
   }
 }
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index dda9e0349d59211b0b97778575cb2f094ec9633c..1c648d7eff94def6a862a3b34583b3aee8f091e7 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -16881,6 +16881,9 @@ msgstr ""
 msgid "Copy file path"
 msgstr ""
 
+msgid "Copy file permalink"
+msgstr ""
+
 msgid "Copy image URL"
 msgstr ""
 
diff --git a/spec/frontend/behaviors/shortcuts/shortcuts_blob_spec.js b/spec/frontend/behaviors/shortcuts/shortcuts_blob_spec.js
new file mode 100644
index 0000000000000000000000000000000000000000..3bb992636ee0753061ba2e9bd01de98c90676d2a
--- /dev/null
+++ b/spec/frontend/behaviors/shortcuts/shortcuts_blob_spec.js
@@ -0,0 +1,56 @@
+import ShortcutsBlob from '~/behaviors/shortcuts/shortcuts_blob';
+import { PROJECT_FILES_GO_TO_PERMALINK } from '~/behaviors/shortcuts/keybindings';
+import { moveToFilePermalink } from '~/blob/utils';
+
+describe('ShortcutsBlob', () => {
+  const shortcuts = {
+    add: jest.fn(),
+  };
+
+  const init = () => {
+    return new ShortcutsBlob(shortcuts);
+  };
+
+  beforeEach(() => {
+    shortcuts.add.mockClear();
+    window.gon = {};
+  });
+
+  describe('constructor', () => {
+    describe('when shortcuts should be added', () => {
+      it('adds the permalink shortcut when gon.features is undefined', () => {
+        init();
+
+        expect(shortcuts.add).toHaveBeenCalledWith(
+          PROJECT_FILES_GO_TO_PERMALINK,
+          moveToFilePermalink,
+        );
+      });
+
+      it('adds shortcuts when blobOverflowMenu is false', () => {
+        window.gon.features = {
+          blobOverflowMenu: false,
+        };
+
+        init();
+
+        expect(shortcuts.add).toHaveBeenCalledWith(
+          PROJECT_FILES_GO_TO_PERMALINK,
+          moveToFilePermalink,
+        );
+      });
+    });
+
+    describe('when shortcuts should not be added', () => {
+      it('does not add shortcuts when blobOverflowMenu is true', () => {
+        window.gon.features = {
+          blobOverflowMenu: true,
+        };
+
+        init();
+
+        expect(shortcuts.add).not.toHaveBeenCalled();
+      });
+    });
+  });
+});