Please see my post below on this as sooon as possible! https://gist.github.com/joeblackwaslike/752b26ce92e3699084e1ecfc790f74b2?permalink_comment_id=5716065#gistcomment-5716065
These instructions should work with the latest versions of cursor which requires a much different strategy than the older versions where you could simply point cursor to the MS extension marketplace and call it a day.
Tested and verified w/ the following version
Version: 1.5.5
VSCode Version: 1.99.3
Commit: 823f58d4f60b795a6aefb9955933f3a2f0331d70
Date: 2025-08-25T17:40:25.290Z
Electron: 34.5.8
Chromium: 132.0.6834.210
Node.js: 20.19.1
V8: 13.2.152.41-electron.0
OS: Darwin arm64 24.6.0
-
Download latest from cursor-ai-downloads
-
# Make backup (optional) sudo mv /Applications/Cursor.app/ /Applications/Cursor_backup.app cd /tmp wget https://downloads.cursor.com/production/823f58d4f60b795a6aefb9955933f3a2f0331d7b/darwin/universal/Cursor-darwin-universal.dmg hdiutil mount Cursor-darwin-*.dmg sudo cp -R /Volumes/Cursor\ Installer/Cursor.app /Applications/ hdiutil unmount /Volumes/Cursor\ Installer rm -f Cursor-darwin-*.dmg popd
-
force the code signature check to pass and get cached
/Applications/Cursor.app/Contents/Resources/app/bin/cursor --version
-
Download the
package.jsonpatcher by @realdimas and execute it. For the security minded feel free to review the contentscurl -sL "https://gist.githubusercontent.com/realdimas/e58723564cfada8efd93adab6efb747c/raw/d6c0ff85ce979637b4d6fb0033b0a736fbe332cf/fix-product-json.sh" | sudo bash
-
Create a new text file named
cursor-exts.txt. The contents should be a list of all the extensionIds you use from the cursor marketplace. I've provided an example of mine to serve as an example. Any lines beginning with # are comments and will be ignored when parsing this file. -
Create another new text file named
vscode-exts.txt. The contents should be a list of all the extensionIds you use that exist only in the official Microsoft marketplace. I've provided an example of mine to serve as an example. Any lines beginning with # are comments and will be ignored when parsing this file.Note: do not add the the pylance extensionId (
ms-python.vscode-pylance) or python extension (ms-python.python) Pylance will fail to install and needs to be specially patched which we will do later. The patched pylance will require a newer version of ms-python than the one installed through traditional means. -
At this point close
Cursor.appif it's still running. -
Run the following commands in the same shell and path where you created both extension text files:
# Clear existing extensions including the problematic `anysphere.cursorpyright`. Do this after you've completed both extension lists above /bin/rm -rf ~/.cursor/extensions/* # Install all your cursor extensions curl -sL "https://gist.githubusercontent.com/joeblackwaslike/802b9ddc135ba85d31a14b21b341807a/raw/c698a2e3fa73296bdd61258b5faf1f2dc37e174f/get-cursor-exts.sh" | bash -s -- --input-file cursor-exts.txt # the following script has a required dependency for only MacOS users which lack gnu grep. if [[ "$(uname -s)" == "Darwin" ]]; then brew install grep fi # Install all your microsoft marketplace extensions curl -sL "https://gist.githubusercontent.com/joeblackwaslike/306d6c7548f0c01f6626891d3d125066/raw/1448e70705e2eca8bb1154d5972cc8b756153e10/get-ms-exts.sh" | bash -s -- --input-file vscode-exts.txt # we have to manually download and install the ms-python vsix file because pylance requires a newer version than would be installed through cursor and even my scripts. This is very important to ensure pylance works correctly in the latest cursor builds. curl https://ms-python.gallery.vsassets.io/_apis/public/gallery/publisher/ms-python/extension/python/2025.13.2025080801/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage -o ms-python.python_2025.13.2025080801.vsix cursor --install-extension ms-python.python_*.vsix uv run --script https://gist.githubusercontent.com/realdimas/c025cdba50cc05e0f644eb71bf7efbb9/raw/pylance_patcher.py cursor --install-extension ms-python.vscode-pylance-*-patched.vsix
-
Add some required settings like disabling autoupdate and setting pylance as the python language server:
jq '.["update.enableWindowsBackgroundUpdates"] = false' ~/Library/Application\ Support/Cursor/User/settings.json > temp.json && mv temp.json ~/Library/Application\ Support/Cursor/User/settings.json jq '.["update.mode"] = "none"' ~/Library/Application\ Support/Cursor/User/settings.json > temp.json && mv temp.json ~/Library/Application\ Support/Cursor/User/settings.json jq '.["python.languageServer"] = "Pylance"' ~/Library/Application\ Support/Cursor/User/settings.json > temp.json && mv temp.json ~/Library/Application\ Support/Cursor/User/settings.json
-
Open Cursor.app and then close
# We need to manually delete the anysphere.cursorpyright extension using rm or it will keep reenabling and reinstalling itself. We need to run the command again too because it doesn't always work the first time. /bin/rm -rf ~/.cursor/extensions/anysphere.cursorpyright-* || /bin/rm -rf ~/.cursor/extensions/anysphere.cursorpyright-*

If you have a local workspace or project then you'll notice sometimes cursor will disable pylance. Check your local settings.json or the settings key of your local *.code-workspace file for the following:
{
"python.languageServer": "None"
}You have a few options, either remove the local setting which defaults to the value for your user setting or change the value locally from None to Pylance
Version: 0.49.6
VSCode Version: 1.96.2
Commit: 0781e811de386a0c5bcb07ceb259df8ff8246a50
Date: 2025-04-25T05:07:16.071Z (3 mos ago)
We are going to edit cursors settings to point to the microsoft extensions marketplace.
- Remove all extensions and exit Cursor.
- Locate your Cursor
project.jsonfile depending on your platform and open it.- On MacOS:
/Applications/Cursor.app/Contents/Resources/app/product.json - On Windows:
C:\Users\<user_name>\AppData\Local\Programs\cursor\resources\app\product.json - On Linux:
/usr/lib/code/product.json
- On MacOS:
- Locate the object value for key
extensionsGalleryin the json document.
{
"galleryId": "cursor",
"serviceUrl": "https://marketplace.cursorapi.com/_apis/public/gallery",
"itemUrl": "https://marketplace.cursorapi.com/items",
"resourceUrlTemplate": "https://marketplace.cursorapi.com/{publisher}/{name}/{version}/{path}",
"controlUrl": "",
"recommendationsUrl": "",
"nlsBaseUrl": "",
"publisherUrl": ""
}- Edit it to look like this:
{
"galleryId": "cursor",
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"itemUrl": "https://marketplace.visualstudio.com/items",
"resourceUrlTemplate": "https://{publisher}.vscode-unpkg.net/{publisher}/{name}/{version}/{path}",
"controlUrl": "",
"recommendationsUrl": "",
"nlsBaseUrl": "",
"publisherUrl": ""
}- Reopen Cursor.app and install the following extensions:
ms-python.pythonms-python.vscode-pylancems-python.debugpy
- Make sure in your settings that
python.languageServeris set to "Pylance" - Re-sign Cursor.app (for MacOS)
codesign --force --deep --sign - /Applications/Cursor.appEnjoy!
PS: you may need to goto your settings.json to remove any theme settings, because having a broken theme looks exactly like this same problem. In my case cursor had copied over my settings from vscode and they pointed to a theme that wasn't yet installed in cursor, removing and then setting the theme manually worked when I though for sure I had broken it again.




It seems that in a devcontainer, where I set my extensions (and pylance is one of them), it's ignoring it and installing the cursoer pyright one all the time, do you have any idea about this issue?
Thanks!