If a project task in VS Code suddenly fails—formatting, linting, debugging, or file navigation—use Extension Bisect to narrow down which enabled extension is involved. On Mac, open the Command Palette with ⇧⌘P, run Help: Start Extension Bisect, and repeat the same task after each change. If the problem persists, choose This is bad; if it disappears, choose Good now. VS Code tests groups of extensions and narrows the search based on those answers. VS Code’s Extension Bisect guide
Reproduce the same failure before you test
First write down the shortest sequence that reliably triggers the problem: for example, open a particular file, save it, and check whether formatting runs. Record what you expected and what happened. Keep the same project, file, and steps during each bisect round. This gives each answer a consistent basis; if the symptom is intermittent or you change the task, the result may not identify the cause reliably.
Check whether the behavior is limited to one workspace or happens in several. An extension can be disabled globally or only for the current workspace, so a project-specific failure may be tested and later addressed at workspace scope. The Extensions view is available with ⇧⌘X. VS Code documents workspace and global extension controls.
Run Extension Bisect from the Command Palette
On macOS, press ⇧⌘P, type Help: Start Extension Bisect, and select the command. VS Code disables groups of extensions and prompts you to judge whether the problem remains. Perform your recorded reproduction steps before selecting This is bad or Good now. Bisect uses those responses to select the next group; keep answering based on the same symptom until VS Code identifies an extension or finishes without finding one. The official guide explains the group-by-group process.
With many enabled extensions, narrowing the search by halves can take far fewer checks than disabling them one at a time. The process depends on accurate feedback: reporting “Good now” when the problem still exists, or “This is bad” when it has stopped, can misdirect the search. The bisect guide also notes it starts by checking whether the issue remains with extensions disabled, since the cause may be VS Code itself.
Confirm the result before changing your setup
When VS Code identifies a candidate, repeat the original task with that extension enabled and disabled. In the Extensions view, find the extension, select its gear menu, and choose the relevant disable option. VS Code may ask to restart the extension host; complete that prompt, then reproduce the issue. Re-enable the extension and check again. If the symptom reliably returns when enabled and disappears when disabled, you have stronger evidence that the extension is involved. Disabling is reversible; uninstalling is not needed for diagnosis. VS Code documents disabling and enabling extensions.
An extension may be involved without being the only cause. Its settings, dependencies, or interaction with another extension can matter. Read its Marketplace details and README for contributed settings and dependencies, then check whether a recent update or configuration change matches when the workflow changed. If you need to keep the extension installed, disable it only for the affected workspace where possible; otherwise, leave it enabled and report the reproducible steps and extension ID to its publisher.
If bisect does not find an extension
Try a clean comparison. VS Code profiles can isolate extensions and settings: create an Empty Profile from the Profiles editor, open the affected project with it, and repeat the task. An Empty Profile disables extensions and modified settings, so if the failure remains, the cause may be VS Code core, project tooling, or another part of the environment. If it disappears, extensions or customized settings are implicated, but the empty profile alone does not prove which one. VS Code profiles documentation.
You can also launch a diagnostic window from Terminal with code --disable-extensions . while the terminal is in the project directory. On Mac, Terminal’s default shell is zsh; the command contains no shell metacharacters requiring special quoting. This disables extensions for that launch, which makes it useful as a quick comparison. It does not identify a specific extension; use Bisect or workspace-level disabling for that. The code command must be available in your shell’s PATH. VS Code documents this launch option; Apple documents Terminal’s default shell.
When the project behaves the same with extensions disabled, check the project’s own scripts and tools, VS Code settings, and whether the issue also occurs in another editor or environment. Treat these as next diagnostic leads rather than proof that a specific component is responsible.
Sources
Resolving extension issues with bisect — Visual Studio Code
Extension Marketplace — Visual Studio Code
Profiles in Visual Studio Code — Visual Studio Code
Visual Studio Code tips and tricks — Visual Studio Code
Change the default shell in Terminal on Mac — Apple Support