Most of the time you don’t need to quit VS Code at all. Developer: Reload Window reloads a single window. Developer: Restart Extension Host is narrower and touches only the extensions. A full quit and relaunch is the big one, since it resets the whole application.
Closing one window doesn’t count as a full restart if others are still open. Every VS Code instance after the first inherits its environment from the instance already running, so a changed PATH stays invisible until every window is closed (VS Code CLI documentation).
Which Restart Does VS Code Need: Reload Window, Extension Host or Full Restart?

Relaunching the whole application is the obvious restart, but VS Code also lets you reload a single window or restart only the extension host, the separate process that runs your extensions.
Pick the lightest one that clears the problem.
| Restart level | How to run it | What it resets | Use it when |
|---|---|---|---|
| Extension host | Developer: Restart Extension Host | Extensions only | The Restart Extensions prompt appears |
| Reload Window | Developer: Reload Window | The current window and its extensions | One window misbehaves |
| Full quit and relaunch | Quit the app, open it again | Every window and the inherited environment | PATH changed, or the app is frozen |
The VS Code team runs extensions in a process of their own, which keeps the editor running when an extension misbehaves (VS Code blog, 2021). So a hung extension calls for the extension host restart, not a full quit.
In practice the choice usually comes down to what you were just doing:
- Uninstalling or updating an extension, or disabling one, brings up a Restart Extensions prompt, which restarts the extension host (VS Code Extension Marketplace docs, October 2026 revision).
- If IntelliSense stalls in one language, restart that language server and nothing else.
- A setting that needs a restart means quitting and relaunching. The VS Code FAQ says this for the telemetry level setting.
- A new PATH or environment variable needs every window quit before you relaunch.
- A frozen interface starts at reload and ends at force quit.
When the cause is unclear, work down the table one row at a time.
How to Reload the Window or Restart the Extension Host From the Command Palette

Open the Command Palette and type the command name. Both restarts live under the Developer prefix, and neither one closes the application.
- Press Ctrl+Shift+P on Windows and Linux, or Cmd+Shift+P on macOS (F1 also opens the palette).
- Type “Reload Window” and select Developer: Reload Window to reload the current window.
- For an extensions-only reset, type “Restart Extension Host” and select Developer: Restart Extension Host.
- Check that the feature that failed now responds.
The Restart Extensions prompt you get after changing an extension does the same extension host restart, just in one click.
If you reload a lot, bind Developer: Reload Window to a key. The Keyboard Shortcuts editor will find the command, and you only need a combination nothing else uses.
Restarting the TypeScript server or another language server
IntelliSense and diagnostics come from a language server, and so does go to definition. When they stall in one language, restart that server and leave the rest of the editor alone.
- TypeScript and JavaScript use TypeScript: Restart TS Server
- For Python it’s Python: Restart Language Server
Typing “Restart” in the Command Palette lists every server you can restart this way.
If the TypeScript command is missing, check that the built-in TypeScript and JavaScript Language Features extension has not been disabled.
How to Quit and Relaunch VS Code on Windows, macOS and Linux
Quit every VS Code window, then open the app again. On macOS that means Cmd+Q, because closing the last window does not quit the app, while on Windows and Linux closing the last window does (VS Code wiki, Performance Issues page).
A full quit is the only restart that resets the main process and the environment VS Code inherited at launch.
Windows
Close every window or choose File > Exit, then relaunch from the Start menu or a pinned taskbar icon. If VS Code still shows up under Processes in Task Manager, end the task.
The installer normally adds the VS Code binaries folder to the system path, so “code .” also works from Command Prompt.
macOS
Cmd+Q or the Code menu quits the app. The red window button only closes a window.
Relaunch from the Dock or Spotlight (Launchpad works too).
The “code” terminal command needs one-time setup. Run Shell Command: Install ‘code’ command in PATH from the Command Palette, per the official CLI documentation.
Linux
Close the last window and start VS Code again, either from the application launcher or by typing “code” in a terminal.
If the process survives the close, find its ID with “ps aux | grep code” and end it with “kill”.
From the terminal
Quit first, then run “code .” from a terminal opened in your project folder. A fresh launch from a terminal picks up that shell’s environment, including values from .bashrc or .zshrc (VS Code FAQ).
If an instance is still running, the CLI documentation says the new window inherits that instance’s environment, so a changed PATH may not show up. A few flags change how the new window opens:
- -n or –new-window opens a new session instead of restoring the previous one
- -r or –reuse-window puts the file or folder in the last active window
- –disable-extensions starts with every installed extension disabled
SysAdminSage’s guide lists “code –restart” as an option on some installs. The official CLI reference, revised October 7, 2026, lists no restart flag, so quit and relaunch in two steps.
How to Restart a Frozen VS Code

With a frozen editor, start with the gentlest option that still works and move up from there.
- If menus still open, run Developer: Reload Window.
- Open Help > Open Process Explorer for a live list of VS Code processes. Running “code –status” in a terminal prints a snapshot of the same data.
- Run Developer: Restart Extension Host, or start Extension Bisect.
- If the window ignores input, force quit. That’s End task in Task Manager on Windows, Force Quit (Cmd+Option+Esc) on macOS, or on Linux you find the process ID with “ps aux | grep code” and kill it.
- Relaunch with “code –disable-extensions”. If the freeze is gone, an extension caused it.
Finding the extension behind the freeze
A busy extensionHost process in Process Explorer is very likely an extension problem, according to the maintainers of the ESLint extension.
Help: Start Extension Bisect then does the narrowing. In the VS Code team’s own example, 24 extensions split into two halves of 12 and the second half is disabled. You say “I can’t reproduce” if the problem disappears and “I can reproduce” if it persists.
Each answer halves the suspects until one extension remains. The 2021 blog post labels these answers “Good now” and “This is bad”. InfoWorld reported the tool as new in VS Code 1.52, the November 2020 release.
When a restart does not fix the problem
If the freeze returns after every relaunch, an extension or a very large folder is the usual cause. Opening a folder with many files can make VS Code slow to respond while it searches for project files, and the files.exclude setting removes the heavy folder from that search (VS Code FAQ).
A blank main window usually points at GPU acceleration, and launching with “code –disable-gpu” tests it.
Seeing [Unsupported] in the title bar means the installation was modified or files were quarantined. A reinstall repairs it.
A restart clears state, but it doesn’t remove whatever put VS Code in that state.
Why the Integrated Terminal Does Not See a New PATH After a Restart

A restart that leaves any VS Code window open keeps the old environment alive. The integrated terminal inherits what VS Code itself holds, so a changed PATH shows up only after the last window closes and the app starts again.
The documentation puts it plainly. A first instance inherits from its parent process, and later instances take the environment of the instance already running.
What you need to do depends on what you changed:
- After editing .zshrc, .bashrc or a PowerShell profile, open a new integrated terminal. Each terminal starts its own shell, and that shell reads the file again.
- A system-wide variable needs every window quit, then a relaunch.
- Anything read by tasks and debug targets, or by extensions, also needs a quit and relaunch, since those inherit the editor’s environment and not a terminal tab’s.
Look for a second VS Code window before you relaunch. One minimized window is enough to keep the old environment in place.
To run two projects with different variables on purpose, start each one with its own –user-data-dir. Each instance then keeps separate environment variables and settings, plus its own extensions, which have to be reinstalled per directory (VS Code CLI documentation).
There’s a startup failure worth knowing about too. Launched from the macOS Dock or a Linux launcher, VS Code runs a background shell to read your shell files. If that takes longer than the application.shellEnvironmentResolutionTimeout setting, which defaults to 10 seconds, VS Code starts without your shell environment and shows an error (VS Code FAQ).
Slow nvm initialization is a common culprit. Launching from a terminal that is already initialized skips the step, and scripts can detect it through the VSCODE\_RESOLVING\_ENVIRONMENT variable, which VS Code sets to 1.
What Happens to Unsaved Files and Open Windows When VS Code Restarts?
VS Code backs up unsaved files on exit through a feature called hot exit, so a restart normally costs no work. Which windows come back depends on a second setting, window.restoreWindows.
Both settings live in settings.json and also show up in the Settings editor.
Unsaved files and files.hotExit
| Value | Unsaved files are backed up when | Notes |
|---|---|---|
| off | Never | VS Code asks you to save or discard on exit |
| onExit (default) | The last window closes on Windows and Linux, or the quit command runs | Windows without folders return on the next launch; windows with folders and unsaved files are listed under File > Open Recent > More… |
| onExitAndWindowClose | Same, plus any window with a folder open when it closes | Same restore behavior; folder windows return only if window.restoreWindows reopens them |
The values and descriptions come from VS Code’s own setting text. Under onExit, closing one of several windows triggers no backup, and VS Code prompts you to save instead.
Reopening windows with window.restoreWindows
- preserve reopens every window from the last session, even when VS Code is asked to open a specific folder or file
- all, the default, reopens everything unless a folder, workspace or file is opened, for example from the command line
- folders only brings back windows that had a folder or workspace
- one reopens just the last active window
- none reopens nothing
The setting controls how windows and the editors within them are restored. A 2021 report in the microsoft/vscode repository (version 1.53.2) describes files from the previous session coming back with none set once the same folder was opened again.
Restarting VS Code for an Update or an Extension Install

VS Code applies an update only on a fresh launch. Restart to Update quits and reopens the app on the new build, while Reload Window keeps the old build running.
To confirm the new build, open About from Help > About on Windows and Linux, or Code > About Visual Studio Code on macOS. The version reads major.minor.release (VS Code FAQ).
The update.mode setting decides how VS Code looks for updates, according to the enterprise documentation.
- default leaves automatic checking running in the background
- start checks only when VS Code starts
- manual turns automatic checking off, so you check by hand
- none disables updates entirely
Sources disagree on manual. Kinda Code’s guide says VS Code still checks but does not download or install on its own, while the official page says automatic checking is disabled.
Recent builds apply a change to update.mode without a restart, while older builds needed one. On macOS and Windows auto-update is on by default, and on Linux the package manager handles it (VS Code FAQ).
Extensions are less fussy. The Marketplace walkthrough shows a new extension working as soon as Install turns into Manage, with no restart. Auto-update then waits 12 hours after publication by default (extensions.autoUpdateDelay), and extensions installed from a VSIX file have auto-update off by default.
How to Restart the VS Code Server in Remote – SSH Sessions

Run Remote-SSH: Kill VS Code Server on Host from the Command Palette, then reconnect. Restarting the local app does not touch the server, because it keeps running after the connection closes (Intel oneAPI VS Code guide, 2024).
From the Command Palette
Kill VS Code Server on Host removes the running server, and the official tips page names it as the general fix for errors such as “The VS Code Server failed to start”. Uninstall VS Code Server from Host goes further. It kills the server processes and deletes the folder where the server was installed.
Close the remote connection first, because Intel’s guide says the kill command works only after that. It stops only the servers that belong to the user who connected.
Restart the server after changing environment variables on the remote machine, since it reads them at startup. The Remote.SSH: Remote Server Listen On Socket setting also takes effect only after the kill command (VS Code Remote Development tips, October 2026 revision).
When the kill command leaves processes behind
The command does not always finish the job.
Users in the vscode-remote-release repository report leftover vscode-server and file watcher processes after running it, on VS Code 1.88.1 with Remote SSH 0.110.1. One reporter ended the parent bash process and then ran pkill -f vscode-server.
The official tips page gives a manual script that kills your user’s vscode-server processes and removes ~/.vscode-server (~/.vscode-server-insiders for Insiders). Older installs used ~/.vscode-remote.
The server downloads again on the next connection, so the remote machine needs internet access.
WSL sessions
The WSL extension installs the VS Code Server inside the distribution, and the server starts without running any shell startup scripts. Extra environment setup goes in ~/.vscode-server/server-env-setup, which runs before the server starts. The remote extension host, on the other hand, takes its environment from an interactive login shell of the default shell.
The official WSL pages say to restart the remote server after changing environment variables. They document no dedicated restart command for it.
Restarting VS Code FAQ
How do I restart VS Code Insiders?
Quit Insiders and relaunch it like the stable build, or run code-insiders from a terminal. Insiders installs side by side with stable and keeps isolated settings and configuration, plus its own extensions, so restarting one never affects the other (VS Code FAQ).
Does restarting VS Code delete my settings or extensions?
No. Settings stay in settings.json, and extensions stay in a per-user folder (%USERPROFILE%\.vscode\extensions on Windows, ~/.vscode/extensions on macOS and Linux).
Launching with –disable-extensions only stops them from activating.
Does restarting VS Code clear its cache?
No documented behavior says it does. The VS Code FAQ treats cache cleanup as a manual job. After an update leaves a blank window, deleting the GPUCache directory (~/.config/Code/GPUCache on Linux) can fix it.
Where can I find restart steps for Dev Containers and Codespaces?
In their own docs. The Remote Development tips page sends Dev Containers questions to the Dev Containers tips article, and for Codespaces you want the GitHub Codespaces documentation.
What to Do When VS Code Keeps Needing a Restart
Restarting VS Code more than once a day points to one misbehaving extension, and the lasting fix is to remove or replace that extension.
Get the problem to happen on demand first, then run Extension Bisect until one extension is left. Disable that one for the workspace and report it.
The order matters because each bisect round asks whether the problem still appears. A fault you cannot trigger on demand gives unreliable answers.
Disabling an extension costs its features. The Marketplace documentation allows a disable for the current workspace only, which limits the loss to the project that needs it.
File the report from the Developer: Show Running Extensions editor, as the VS Code wiki directs.
A May 2026 pull request (microsoft/vscode #316792) proposes that bisect keep eliminated extensions disabled so it can still converge when more than one extension is faulty, although it identifies one culprit per run. Until your build carries that change, rerun bisect after each removal (position verified October 14, 2026).
- How to Restart VS Code Without Losing Your Work - November 5, 2026
- How Businesses Can Build a Smarter and More Secure File Storage Strategy - November 4, 2026
- C cheat sheet - November 3, 2026




