When saving a file, several pop-up windows appear showing that the extension is running, but it keeps loading without actually working, and the file isn’t saved. It returns to normal after a few minutes. I encounter this frequently; I’ve been using Cursor for a year and have experienced it at least 20 times.
Steps to Reproduce
Install “Remove Unused Import”, “Auto Import - ES6, TS, JS”, and “Tailwind CSS IntelliSense”, and save the file.
Expected Behavior
Several pop-up windows are currently displaying “Waiting for code actions from {{extension}}”. They keep loading and disappear after a few minutes.
The “Waiting for code actions” pop-ups appear when extensions are slow to respond during save. With “Remove Unused Import”, “Auto Import”, and “Tailwind CSS IntelliSense” all installed, each registers on-save actions, and the save waits for all of them to finish.
To fix this:
Open Settings (JSON) and check your editor.codeActionsOnSave setting. Try setting it to {} temporarily to confirm it resolves the issue, then add back only what you need.
Disable extensions one at a time to identify the slow one. “Remove Unused Import” and “Auto Import” may overlap with TypeScript’s built-in import organization.
When the pop-up appears, you can click “Skip” to cancel it and let the save complete.
Thank you very much for your reply. I checked editor.codeActionsOnSave, and it only contains “source.removeUnusedImports”: “explicit”. Also, clicking the “Skip” file doesn’t save it; after saving the file again, the pop-up window reappears.
The setting "source.removeUnusedImports": "explicit" does still run on manual saves (Ctrl+S). “Explicit” means “run when I manually save” as opposed to “always” (which also runs on focus changes). So every time you press Ctrl+S, Cursor queries all registered code action providers for that action, and if any extension is slow to respond (>1.25 seconds), the “Waiting for code actions” pop-up appears.
Regarding Skip: clicking the “Skip” button on the notification should cancel the slow extension’s processing and let the save complete normally. If the file still isn’t saving after clicking Skip, you may be inadvertently clicking the cancel button in the status bar (bottom of the window) instead, which does abort the save.
To resolve this:
Set editor.codeActionsOnSave to {} (completely empty, removing the removeUnusedImports entry). This will stop all code action processing on save and should eliminate the pop-ups entirely. You can remove unused imports manually when needed using Shift+Alt+O (Organize Imports).
If the pop-ups persist even with an empty codeActionsOnSave, also check whether editor.formatOnSave is enabled. If so, try disabling it temporarily to confirm whether a formatter is the bottleneck.