VSCode 如何禁用不受信任的工作区自动执行脚本功能

文章导读
VSCode 默认在不受信任的工作区中已禁用脚本自动执行功能。若需在特定场景下解除该限制以便脚本静默运行,需调整工作区信任机制。请注意,全局关闭信任检查会绕过安全边界,仅建议用于完全可控的本地环境。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

VSCode 如何关闭工作区信任限制以允许脚本自动执行

VSCode 默认在不受信任的工作区中已禁用脚本自动执行功能。若需在特定场景下解除该限制以便脚本静默运行,需调整工作区信任机制。请注意,全局关闭信任检查会绕过安全边界,仅建议用于完全可控的本地环境。

先说结论:不受信任的工作区默认无法自动执行脚本。若需解除限制,可关闭信任检查或信任特定文件夹;若需确保安全,则保持默认不信任状态。

  • 先判断:确认右下角是否显示“受限模式”提示,明确是需要放行脚本还是加强限制。
  • 优先做:通过设置项 security.workspace.trust.enabled 控制全局信任机制,或通过信任文件夹按需授权。
  • 再验证:观察状态栏提示消失且 tasks.json 任务可正常触发,即表示限制已解除。

命令速用版

安全警告:全局禁用信任机制会导致所有项目默认受信任,包括陌生人发送的代码包,恶意脚本可能静默运行。仅建议在离线或完全私有的开发机操作。

若需全局禁用工作区信任检查(允许所有脚本运行),可在用户设置文件中添加以下配置:

{
  "security.workspace.trust.enabled": false
}

若需仅信任特定目录而不关闭全局保护,可配置受信任文件夹列表:

{
  "security.workspace.trust.trustedFolders": [
    "file:///D:/Projects/MyApp"
  ]
}

为什么会这样

VSCode 引入工作区信任(Workspace Trust)机制的核心目的是防止未知代码在未经许可的情况下自动执行。当打开来自外部来源(如下载的 ZIP、克隆的仓库)的文件夹时,编辑器会默认将其标记为不受信任。在此状态下,tasks.json 定义的构建任务、launch.json 中的调试启动项以及部分扩展的后台脚本都会被拦截,以避免恶意 shell 命令注入或配置文件篡改。该机制没有中间状态,要么完全信任并允许执行,要么受限并禁止执行。

分步处理

1. 确认当前信任状态

VSCode 如何禁用不受信任的工作区自动执行脚本功能

打开项目后,查看窗口右下角状态栏。若显示 Restricted Mode 或受限模式字样,说明当前脚本执行功能被禁用。

2. 修改全局设置(慎用)

按下 Ctrl + ,(Windows/Linux)或 Cmd + ,(macOS)打开设置,搜索 security.workspace.trust.enabled。取消勾选该选项,或直接打开 settings.json 文件写入上述配置代码。修改后必须重启 VSCode 才能生效。

3. 按需信任文件夹(推荐)

若不想关闭全局保护,可点击右下角受限模式提示,选择 Trust Folder and Enable Extensions。VSCode 会记录该路径的信任状态,下次打开不再询问,且其他未信任项目仍受保护。

怎么验证是否生效

1. 检查状态栏

VSCode 如何禁用不受信任的工作区自动执行脚本功能

重启后,右下角不再出现受限模式提示,且打开任意新文件夹均无信任弹窗。

2. 测试任务执行

在项目根目录创建 .vscode/tasks.json 并配置以下测试代码。按下 Ctrl + Shift + B 触发任务,若终端直接输出结果而无安全警告,说明脚本执行限制已解除。

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "echo test",
      "type": "shell",
      "command": "echo 'Workspace Trust Enabled'",
      "problemMatcher": []
    }
  ]
}

3. 检查扩展行为

观察 ESLint、Prettier 等依赖文件监听的扩展是否正常激活,未信任状态下这些扩展通常会暂停后台分析。

VSCode 如何禁用不受信任的工作区自动执行脚本功能

常见坑

1. 全局关闭的风险

禁用 security.workspace.trust.enabled 后,所有工作区默认受信任,包括陌生人发送的代码包,恶意脚本可能静默运行,仅建议在离线或完全私有的开发机操作。

2. 信任状态不继承

信任了父目录不代表子目录自动受信任,若单独打开 node_modules 等子文件夹,仍可能触发受限模式。

3. 插件独立弹窗

部分弹窗并非 VSCode 原生信任机制触发,而是插件调用终端时的二次确认,此类提示需单独在插件设置中关闭,与工作区信任设置无关。

参考来源