diff --git a/app/assets/javascripts/work_items/pages/work_items_list_app.vue b/app/assets/javascripts/work_items/pages/work_items_list_app.vue
index 2ca2946930c1b010dac62db19e2d5b7c9a6469ac..93d00a6e54f4b7bcf4fc0b274cde8eb1e02098a6 100644
--- a/app/assets/javascripts/work_items/pages/work_items_list_app.vue
+++ b/app/assets/javascripts/work_items/pages/work_items_list_app.vue
@@ -139,6 +139,11 @@ export default {
       required: false,
       default: () => [],
     },
+    eeSearchTokens: {
+      type: Array,
+      required: false,
+      default: () => [],
+    },
   },
   data() {
     return {
@@ -405,6 +410,10 @@ export default {
         });
       }
 
+      if (this.eeSearchTokens.length) {
+        tokens.push(...this.eeSearchTokens);
+      }
+
       tokens.sort((a, b) => a.title.localeCompare(b.title));
 
       return tokens;
diff --git a/spec/frontend/work_items/list/components/work_items_list_app_spec.js b/spec/frontend/work_items/list/components/work_items_list_app_spec.js
index 240a6da0aa713a9b3e3e99ea2fb6708795855b02..713f1c568ba9947f2e2821207d2b887d9e5f9231 100644
--- a/spec/frontend/work_items/list/components/work_items_list_app_spec.js
+++ b/spec/frontend/work_items/list/components/work_items_list_app_spec.js
@@ -342,6 +342,45 @@ describeSkipVue3(skipReason, () => {
     });
   });
 
+  describe('custom field tokens', () => {
+    it('combines eeSearchTokens with default search tokens', async () => {
+      const customToken = {
+        type: `custom`,
+        title: 'Custom Field',
+        token: () => {},
+      };
+
+      mountComponent({
+        props: {
+          eeSearchTokens: [customToken],
+        },
+      });
+
+      await waitForPromises();
+
+      const searchTokens = findIssuableList().props('searchTokens');
+
+      expect(searchTokens).toContainEqual(
+        expect.objectContaining({
+          type: customToken.type,
+          title: customToken.title,
+        }),
+      );
+
+      // Other tokens are still included
+      expect(searchTokens).toContainEqual(
+        expect.objectContaining({
+          type: TOKEN_TYPE_ASSIGNEE,
+        }),
+      );
+      expect(searchTokens).toContainEqual(
+        expect.objectContaining({
+          type: TOKEN_TYPE_LABEL,
+        }),
+      );
+    });
+  });
+
   describe('events', () => {
     describe('when "click-tab" event is emitted by IssuableList', () => {
       beforeEach(async () => {