diff --git a/bin/bitbake-setup b/bin/bitbake-setup
index 34260139c..9e5f9b31c 100755
--- a/bin/bitbake-setup
+++ b/bin/bitbake-setup
@@ -716,6 +716,11 @@ def configure_vscode(setupdir, layerdir, builddir, init_script):
     else:
         logger.debug("configure_vscode: creating new workspace file: {}".format(workspace_file))
 
+    # Update extension recommendations
+    recommendations = workspace.setdefault("extensions", {}).setdefault("recommendations", [])
+    if "yocto-project.yocto-bitbake" not in recommendations:
+        recommendations.append("yocto-project.yocto-bitbake")
+
     # Update folders
     existing_folders = workspace.get("folders", [])
     new_folders = [{"name": "conf", "path": conf_path}]
diff --git a/lib/bb/tests/setup.py b/lib/bb/tests/setup.py
index 53a07ee3a..0dfbd910e 100644
--- a/lib/bb/tests/setup.py
+++ b/lib/bb/tests/setup.py
@@ -644,6 +644,7 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
         # user-added folders and settings while still rewriting managed ones
         workspace['folders'].append({"name": "user-folder", "path": "user/custom"})
         workspace['settings']['my.user.setting'] = 'preserved'
+        workspace['extensions']['recommendations'] = ['user.example-extension']
         with open(workspace_file, 'w') as f:
             json.dump(workspace, f, indent=4)
 
@@ -658,6 +659,16 @@ print("BBPATH is {{}}".format(os.environ["BBPATH"]))
                       "User-added folder was removed during update")
         self.assertIn('my.user.setting', updated['settings'],
                       "User-added setting was removed during update")
+        self.assertIn(
+            'yocto-project.yocto-bitbake',
+            updated.get('extensions', {}).get('recommendations', []),
+            "Managed BitBake extension recommendation was not restored during update"
+        )
+        self.assertIn(
+            'user.example-extension',
+            updated.get('extensions', {}).get('recommendations', []),
+            "User-added extension recommendation was removed during update"
+        )
 
         # update with a corrupt workspace file should log an error and leave it unchanged
         self.add_file_to_testrepo('test-file', 'updated-again\n')
