code --disable-extensions是唯一可靠的安全模式启动方式,它在加载任何插件前跳过整个扩展注册流程,不读settings.json、不触发activate()、不加载工作区推荐插件,彻底规避早期注入导致的崩溃。

直接用 code --disable-extensions 启动,才是真安全模式 —— 其他方式(比如设置里点“禁用全部扩展”)根本拦不住早期注入的插件。
为什么 code --disable-extensions 是唯一可靠方式
VSCode 启动时,部分插件(如 ms-python.python 旧版、esbenp.prettier-vscode v9.x)会在主进程初始化前就加载原生模块或劫持语言服务器链路。此时 settings.json 里的禁用标记还没读取,GUI 都没起来,更别说生效了。
常见错误现象:
– 点击设置页“禁用全部扩展”后重启,仍报 Extension host terminated unexpectedly
– 右下角显示 Restricted Mode,但你明明没打开陌生文件夹(其实是工作区信任机制触发,和扩展无关)
真正起效的只有命令行参数:--disable-extensions 会让 VSCode 在加载任何扩展前就跳过整个扩展注册流程。
怎么避免工作区干扰,确保“彻底干净”
- 不要双击文件夹图标启动 —— 即使加了
--disable-extensions,它仍可能读取该目录下的.vscode/extensions.json或启用推荐扩展 - 终端中执行:
code --disable-extensions(打开空窗口),或code --disable-extensions /path/to/project(指定路径且禁用扩展) - Windows 用户特别注意:从开始菜单右键“以管理员身份运行”,会绕过所有命令行参数,必须用 cmd/PowerShell 启动
- 若需进一步排除 GPU 渲染或沙箱问题(比如闪退/黑屏),可叠加:
code --disable-extensions --no-sandbox --disable-gpu
安全模式下验证问题是否由扩展引起
核心判断逻辑很简单:同一台机器、同一版本 VSCode、用完全相同的文件和打开方式,只变一个条件 —— 是否加 --disable-extensions。
如果安全模式下:
– 错误消失 → 基本锁定为扩展问题,下一步用二分法排查:code --disable-extensions --extensions-dir /tmp/empty + 手动复制一半扩展测试
– 错误仍在 → 立即打开 Developer: Toggle Developer Tools,看 Console 里有没有 Uncaught Error,或检查 Help > Toggle Developer Tools 底部状态栏是否卡在 “Starting extension host…”
另一个容易被忽略的点:某些扩展(如 Live Server)会把配置写进用户级 settings.json,即使禁用扩展,files.associations 或 editor.formatOnSave 的残留仍可能导致格式化异常,日志却指向编辑器本身。
安全模式不是万能解药,但它是一把精准的手术刀 —— 能一刀切掉所有扩展干扰,让问题浮出水面。真正麻烦的,往往是那些在安全模式下依然不报错、只悄悄卡死在初始化阶段的情况,这时候得盯住任务管理器里的 Code Helper 进程,或者查 Windows 事件查看器里的 Faulting module name。


















