VSCode 1.57+ 默认启用工作区信任机制,未手动信任的文件夹会静默禁用自动运行功能(如代码运行、ESLint、Prettier、Git 面板等),需通过右下角横幅确认信任或配置 security.workspace.trust.untrustedFolders。

工作区信任功能默认开启,不手动确认就拒绝执行代码
VSCode 1.57+ 默认启用工作区信任(Workspace Trust),打开未明确标记为“受信任”的文件夹时,所有自动运行类功能会被静默禁用——不是报错,而是“没反应”。比如你点了 Run Code 插件的播放按钮,控制台空空如也;eslint 不再标红;prettier 格式化快捷键失效;甚至 git 面板里都看不到暂存区变化。这不是插件坏了,是 VSCode 主动拦下了。
触发条件很直接:首次打开一个本地路径(尤其是从邮件、下载目录、U 盘拷来的项目),右下角会弹出横幅,带「Trust Folder」和「Don’t Trust」两个按钮。一旦选了后者,或点了叉,这个文件夹就进入 .vscode/settings.json 的 "security.workspace.trust.untrustedFolders" 列表,后续打开永远受限。
- 信任状态存在用户级配置中,不随项目提交,也不被
.vscode/文件夹同步 - 多根工作区(multi-root workspace)下,每个文件夹单独判断信任状态,不能一键全信
- 远程开发(SSH / WSL / Containers)场景中,信任由本地 VSCode 控制,和远端系统权限无关
如何临时绕过限制快速验证是否是信任问题
别急着改设置,先用最轻量方式确认是不是信任机制在作祟:按 Ctrl+Shift+P(macOS 是 Cmd+Shift+P),输入并执行 Developer: Toggle Developer Tools,切换到 Console 标签页,然后尝试触发一个失效操作(比如保存一个 .js 文件)。如果看到类似 Running extensions in untrusted workspaces is not allowed 的提示,就是它了。
- 信任状态可在命令面板中通过
Workspaces: Manage Workspace Trust查看和重置 - 想临时放行单个功能(比如只允许 ESLint 运行),可在弹出的信任横幅里点「Manage」→ 勾选对应扩展,但不推荐长期这么做——扩展行为可能依赖其他被禁功能
-
settings.json中设"security.workspace.trust.enabled": false可全局关闭,但仅限离线学习环境,生产机器上等于拆掉安全围栏
自动化脚本或 CI 场景下如何避免信任拦截
CI 流水线或本地自动化任务(比如用 code --goto 跳转、code --diff 比较)若涉及未信任路径,会卡住或静默失败。VSCode 不提供命令行参数跳过信任检查,但有两个可靠解法:
- 提前用
code --new-window --disable-extensions /path/to/project启动,禁用扩展后信任限制不生效(适合纯编辑/查看场景) - 在项目根目录手动创建
.vscode/settings.json,写入{"security.workspace.trust.untrustedFolders": []}——注意这是“告诉 VSCode:此项目已声明自己可信”,不是绕过校验,而是主动申明 - 使用
code --reuse-window时,信任状态继承自已有窗口,可先手动信任一次,后续脚本复用该窗口即可
切记:.vscode/settings.json 里的信任声明只对当前文件夹生效,子文件夹不会自动继承;跨平台共享项目时,Windows 和 macOS 的路径格式差异可能导致信任记录错位。
信任误判导致插件功能残缺的典型表现
不是所有插件都会明确提示“不受信任”,很多只是悄悄降级:比如 Prettier 仍能格式化,但跳过 prettier.config.js 加载,退回到内置默认规则;ESLint 显示“no config found”,实际是因为无法读取 .eslintrc.cjs 里的 require();Python 扩展不启动语言服务器,IntelliSense 全灭,但终端还能跑 python main.py。
- 检查插件文档,找 “workspace trust support” 或 “untrusted workspace” 关键词,确认是否适配(例如
GitLens12.0+ 支持受限模式下的基础 Git 操作) - 扩展作者可通过
activationEvents声明onWorkspaceTrust来响应信任变更,但大量旧插件没做这层适配 - 如果你在公司内网或私有 Git 仓库里频繁遇到误判,可把常用路径加进用户设置里的
"security.workspace.trust.untrustedFolders"并清空数组,实现“默认全信”策略
信任机制本身没有 bug,问题常出在“人以为它只是个开关,其实它是个执行沙箱”。哪怕你 100% 确认文件夹安全,VSCode 也不会替你做决定——它只等你点那个按钮,或者在配置里白纸黑字写清楚。










