ワークスペースの信頼
Visual Studio Code はセキュリティを重視しており、ソースや作成者に関係なく、安全にコードを閲覧および編集できるよう支援したいと考えています。ワークスペースの信頼機能により、プロジェクトフォルダー内のコードが、明示的な承認なしに VS Code と拡張機能によって実行されるべきかどうかを決定できます。

安全なコードの閲覧
公開リポジトリやファイル共有で利用できる膨大な量のソースコードがあることは素晴らしいことです。コーディングのタスクや問題が何であれ、おそらくどこかに良い解決策がすでに利用可能です。コードを理解し、デバッグし、最適化するのに役立つ非常に多くの強力なコーディングツールが利用できることも素晴らしいことです。しかし、オープンソースのコードやツールを使用することにはリスクがあり、悪意のあるコードの実行やエクスプロイトにさらされる可能性があります。
ワークスペースの信頼機能は、ワークスペースが「制限付きモード」で開かれている場合、ワークスペース内のコードの自動実行を防止することにより、慣れないコードを操作する際にセキュリティの追加レイヤーを提供します。
注: 「ワークスペース」と「フォルダー」という用語は、VS Code の UI およびドキュメントで広く使用されています。「ワークスペース」は、VS Code によって作成および使用される追加のメタデータを持つフォルダーと考えることができます。
制限付きモード
ワークスペースの信頼ダイアログが表示されたときに「いいえ、作者を信頼しません」を選択すると、VS Code はコードの実行を防止するために制限付きモードに入ります。
ワークベンチには、ワークスペースの信頼エディターを介してフォルダーを管理するためのリンクを含むバナーが上部に表示されます。ステータスバーには、ワークスペースが制限付きモードであることを示すバッジも表示されます。

制限付きモードでは、タスク、デバッグ、ワークスペース設定、拡張機能など、いくつかの VS Code 機能の動作を無効または制限することにより、自動コード実行を防止しようとします。
制限付きモードで無効になっている機能の完全なリストを確認するには、バナーの管理リンクを介して、またはステータスバーの制限付きモードバッジを選択して、ワークスペースの信頼エディターを開くことができます。

重要: ワークスペースの信頼機能は、悪意のある拡張機能がコードを実行し、制限付きモードを無視することを防止することはできません。信頼できる既知のパブリッシャーから提供された拡張機能のみをインストールして実行する必要があります。
タスク
VS Code のタスクはスクリプトやツールバイナリを実行できます。タスク定義はワークスペースの.vscodeフォルダーで定義されているため、リポジトリのコミットされたソースコードの一部であり、そのリポジトリのすべてのユーザーに共有されます。誰かが悪意のあるタスクを作成した場合、そのリポジトリをクローンした誰もが知らずに実行してしまう可能性があります。
制限付きモードでタスクを実行しようとしたり、列挙しようとしたりした場合 (タスク > タスクの実行)、VS Code はフォルダーを信頼していることを確認し、タスクの実行を続行できるかどうかを尋ねるプロンプトを表示します。ダイアログをキャンセルすると、VS Code は制限付きモードのままになります。

デバッグ
VS Code タスクの実行と同様に、デバッグ拡張機能はデバッグセッションの開始時にデバッガーバイナリを実行できます。そのため、フォルダーが制限付きモードで開かれている場合、デバッグも無効になります。
制限付きモードでデバッグセッションを開始しようとした場合 (デバッグ > デバッグの開始)、VS Code はフォルダーを信頼していることを確認し、デバッガーの起動を続行できるかどうかを尋ねるプロンプトを表示します。ダイアログをキャンセルすると、VS Code は制限付きモードのままになり、デバッグセッションは開始されません。

ワークスペース設定
ワークスペースの設定はワークスペースのルートにある.vscodeフォルダーに保存されるため、ワークスペースリポジトリをクローンした全員と共有されます。一部の設定には実行可能ファイルへのパス(たとえば、リンターのバイナリ)が含まれており、これらが悪意のあるコードを指すように設定されている場合、損害を引き起こす可能性があります。このため、VS Code は制限付きモードで実行されている場合、一連のワークスペース設定を無効にします。

ワークスペースの信頼エディターで、適用されていないワークスペース設定のリンクを選択すると、@tag:requireTrustedWorkspaceタグでスコープされた設定エディターが表示されます。

拡張機能
VS Code の拡張機能のエコシステムは信じられないほど豊かで多様です。あらゆるプログラミングタスクやエディターのカスタマイズを支援するために、人々は拡張機能を作成してきました。一部の拡張機能は完全なプログラミング言語サポート (IntelliSense、デバッグ、コード分析) を提供し、その他は音楽を再生したり、仮想ペットを飼ったりすることができます。
ほとんどの拡張機能はユーザーに代わってコードを実行し、潜在的に害を及ぼす可能性があります。一部の拡張機能には、予期しない実行可能ファイルを起動するように構成されている場合、悪意を持って動作する可能性がある設定があります。このため、ワークスペースの信頼に明示的にオプトインしていない拡張機能は、制限付きモードではデフォルトで無効になっています。

インストールされている拡張機能のステータスを確認するには、ワークスペースの信頼エディターで拡張機能が無効になっているか、機能が制限されていますリンクを選択します。これにより、@workspaceUnsupportedフィルターでスコープされた拡張機能ビューが表示されます。

ワークスペースの信頼にオプトインしていない拡張機能は、制限付きモードでは無効になるか、機能が制限されます。
制限付きモードで無効
制限付きモードでの実行を明示的にサポートしないと宣言した拡張機能は、制限付きモードで無効セクションに表示されます。拡張機能の作者は、ワークスペースの変更 (設定またはファイル) によって拡張機能が誤用される可能性があると判断した場合、制限付きモードで有効にしたくないと示すこともできます。
制限付きモードで機能が制限されている
拡張機能の作者は、潜在的なセキュリティ脆弱性について拡張機能を評価し、制限付きモードで実行する際に制限付きサポートがあると宣言することもできます。このモードは、拡張機能が潜在的なエクスプロイトを防止するために、一部の機能または機能を無効にする可能性があることを意味します。
拡張機能は、信頼されていないフォルダーで実行される場合の制限を説明するカスタムテキストを拡張機能ビューのワークスペース信頼バッジに追加できます。たとえば、VS Code の組み込み PHP 拡張機能は、php.validate.executablePath 設定の使用を信頼されたフォルダーに制限しています。これは、この設定を上書きすると悪意のあるプログラムが実行される可能性があるためです。

以下の拡張機能の有効化セクションで説明されているextensions.supportUntrustedWorkspaces設定を使用して、拡張機能のワークスペース信頼サポートレベルを上書きできます。
制限付きモードで拡張機能をインストールしようとすると、ワークスペースを信頼するか、拡張機能をインストールするかのどちらかを尋ねられます。拡張機能がワークスペースの信頼をサポートしていない場合、拡張機能はインストールされますが、無効になるか、機能が制限された状態で実行されます。

注: 拡張機能の作者は、ワークスペースの信頼拡張機能ガイドを読んで、ワークスペースの信頼をサポートするように拡張機能を更新する方法を学ぶことができます。
ワークスペースを信頼する
プロジェクトの作者とメンテナーを信頼している場合、ローカルマシン上のプロジェクトフォルダーを信頼できます。たとえば、github.com/microsoft や github.com/docker など、よく知られている GitHub 組織のリポジトリを信頼することは通常安全です。
新しいフォルダーを開くと、最初のワークスペース信頼プロンプトにより、そのフォルダーとそのサブフォルダーを信頼できます。

ワークスペースエディターを開いて、信頼または親を信頼ボタンを選択することで、フォルダーの信頼状態をすばやく切り替えることもできます。

ワークスペースの信頼エディターダイアログを表示する方法はいくつかあります。
制限付きモードの場合
- 制限付きモードのバナーの管理リンク
- 制限付きモードのステータスバー項目
いつでも使用できます
- コマンドパレットからワークスペース: ワークスペースの信頼を管理コマンド (⇧⌘P (Windows, Linux Ctrl+Shift+P))
フォルダーを選択する
フォルダーを信頼すると、ワークスペースの信頼エディターに表示される信頼されたフォルダーとワークスペースリストに追加されます。

このリストからフォルダーを手動で追加、編集、削除して、ワークスペースの信頼を有効または無効にできます。アクティブなフォルダーは、このリストで太字で強調表示されます。
親フォルダーを選択する
ワークスペースの信頼エディターを介してフォルダーを信頼すると、親フォルダーも信頼するオプションがあります。これにより、親フォルダーとそのすべてのサブフォルダーに信頼が適用されます。

信頼されたコンテンツを含む多くのフォルダーが1つのフォルダーの下に共存している場合、親フォルダーを信頼することは役立ちます。
信頼された親の下にあるサブフォルダーを開くと、制限付きモードに戻す通常の信頼しないボタンは表示されません。代わりに、フォルダーが別のフォルダーによって信頼されていることを示すテキストが表示されます。
信頼されたフォルダーとワークスペースリストから親フォルダーエントリを追加、変更、削除できます。
フォルダー構成
親フォルダーを信頼すると、すべてのサブフォルダーが信頼され、ディスク上のリポジトリの場所を介してワークスペースの信頼を制御できるようになります。
たとえば、すべての信頼されたリポジトリを「TrustedRepos」親フォルダーの下に配置し、慣れないリポジトリを「ForEvaluation」などの別の親フォルダーの下に配置できます。「TrustedRepos」フォルダーを信頼し、「ForEvaluation」の下のフォルダーを選択的に信頼することになります。
├── TrustedRepos - Clone trusted repositories under this parent folder
└── ForEvaluation - Clone experimental or unfamiliar repositories under this parent folder
組織固有の親フォルダーの下にグループ化することで、リポジトリをグループ化して信頼を設定することもできます。
├── github/microsoft - Clone a specific organization's repositories under this parent folder
├── github/{myforks} - Place your forked repositories under this parent folder
└── local - Local un-published repositories
拡張機能の有効化
制限付きモードを使用したいが、お気に入りの拡張機能がワークスペースの信頼をサポートしていない場合はどうなりますか?これは、拡張機能が有用で機能的であっても、活発にメンテナンスされておらず、ワークスペースの信頼サポートを宣言していない場合に発生する可能性があります。このシナリオを処理するために、extensions.supportUntrustedWorkspaces 設定で拡張機能の信頼状態を上書きできます。
重要: 拡張機能のワークスペース信頼サポートを上書きする場合は注意が必要です。拡張機能の作者が制限付きモードで拡張機能を無効にする正当な理由がある可能性があります。疑わしい場合は、拡張機能の作者に問い合わせるか、最近の変更ログを確認して詳細を確認してください。
設定エディター (⌘, (Windows, Linux Ctrl+,)) で、拡張機能: 信頼されていないワークスペースをサポート設定 (extensions.supportUntrustedWorkspaces) を介して、個々の拡張機能のワークスペース信頼を上書きできます。

settings.json で編集リンクを選択して、拡張機能 ID のリストとそのサポートステータスおよびバージョンを管理します。IntelliSense の提案を介して、インストールされている拡張機能のいずれかを選択できます。
以下に、Prettier 拡張機能のsettings.jsonエントリを示します。
"extensions.supportUntrustedWorkspaces": {
"esbenp.prettier-vscode": {
"supported": true,
"version": "6.4.0"
},
},
supported属性でワークスペースの信頼サポートを有効または無効にできます。version属性は適用可能な正確な拡張機能バージョンを指定し、すべてのバージョンに対して状態を設定したい場合はバージョンフィールドを削除できます。
拡張機能の作成者が制限付きモードで制限する機能をどのように評価し、決定するかについて詳しく知りたい場合は、ワークスペースの信頼拡張機能ガイドをお読みください。
信頼されていないファイルを開く
信頼されたフォルダーの外にあるファイルを開くと、VS Code はそのファイルがフォルダーのルートの外から来ていることを検出し、ファイルを開き続けるか、制限付きモードの新しいウィンドウでファイルを開くかを選択するようプロンプトを表示します。制限付きモードで開くのが最も安全なオプションであり、ファイルが信頼できると判断したら、いつでも元の VS Code ウィンドウでファイルを開き直すことができます。

信頼されていないワークスペース外のファイルを開くときにプロンプトを表示したくない場合は、security.workspace.trust.untrustedFiles をopenに設定できます。また、常に制限付きモードで新しいウィンドウを作成するには、security.workspace.trust.untrustedFiles をnewWindowに設定できます。信頼されていないファイルダイアログですべてのワークスペースで私の決定を記憶するオプションをチェックすると、選択内容がsecurity.workspace.trust.untrustedFilesユーザー設定に適用されます。
信頼されていないフォルダーを開く
マルチルートワークスペースを複数のフォルダーで操作しているときに、信頼されたマルチルートワークスペースに新しいフォルダーを追加しようとすると、そのフォルダー内のファイルを信頼するかどうか、または信頼しない場合はワークスペース全体が制限付きモードに切り替わるかどうかを決定するようプロンプトが表示されます。

空のウィンドウ (フォルダーが開いていない)
デフォルトでは、フォルダーやワークスペースを開かずに新しい VS Code ウィンドウ (インスタンス) を開くと、VS Code はそのウィンドウを完全に信頼して実行します。インストールされているすべての拡張機能が有効になり、空のウィンドウを制限なしで使用できます。
ファイルを開くと、親となるフォルダーがないため、信頼されていないファイルを開きたいかどうかを尋ねられます。
コマンドパレットでワークスペース: ワークスペースの信頼を管理を選択し、信頼しないを選択することで、空のウィンドウを制限付きモードに切り替えることができます。空のウィンドウは現在のセッションでは制限付きモードのままですが、再起動するか新しいウィンドウを作成すると信頼された状態に戻ります。
すべての空のウィンドウを制限付きモードにしたい場合は、security.workspace.trust.emptyWindow をfalseに設定できます。
設定
以下は利用可能なワークスペースの信頼設定です
- security.workspace.trust.enabled - ワークスペースの信頼機能を有効にします。デフォルトは true です。
- security.workspace.trust.startupPrompt - 起動時にワークスペースの信頼ダイアログを表示するかどうか。デフォルトは、個別のフォルダーまたはワークスペースごとに一度だけ表示です。
- security.workspace.trust.emptyWindow - 空のウィンドウ (開いているフォルダーなし) を常に信頼するかどうか。デフォルトは true です。
- security.workspace.trust.untrustedFiles - ワークスペース内のばらばらのファイルの処理方法を制御します。デフォルトはプロンプトを表示です。
- extensions.supportUntrustedWorkspaces - 拡張機能のワークスペース信頼宣言を上書きします。true または false です。
- security.workspace.trust.banner - 制限付きモードのバナーが表示されるタイミングを制御します。デフォルトは
untilDismissedです。
コマンドラインスイッチ
--disable-workspace-trustを渡すことで、VS Code コマンドラインからワークスペースの信頼を無効にできます。このスイッチは現在のセッションにのみ影響します。
次のステップ
詳細はこちら
- ワークスペース信頼拡張機能ガイド - 拡張機能の作者がワークスペース信頼をサポートする方法を学びます。
- VS Code の「ワークスペース」とは? - VS Code の「ワークスペース」の概念について詳しく説明します。
- GitHub Repositories 拡張機能 - ローカルマシンにソースコードをクローンすることなく、リポジトリで直接作業します。
よくある質問
制限付きモードでもソースコードを編集できますか?
はい、制限付きモードでもソースコードを閲覧および編集できます。一部の言語機能は無効になる場合がありますが、テキスト編集は常にサポートされています。
インストールした拡張機能はどこに行ったのですか?
制限付きモードでは、ワークスペースの信頼をサポートしない拡張機能は無効になり、アクティビティバーアイコンやコマンドなどのすべてのUI要素は表示されません。
extensions.supportUntrustedWorkspaces設定で拡張機能のワークスペース信頼サポートレベルを上書きできますが、注意して行ってください。拡張機能の有効化に詳細が記載されています。
ワークスペース信頼機能を無効にできますか?
可能です。しかし、推奨されません。新しいフォルダーまたはリポジトリを開くときに VS Code がワークスペースの信頼をチェックしないようにしたい場合は、security.workspace.trust.enabledを false に設定できます。すると、VS Code は 1.57 リリース以前と同じように動作します。
フォルダー/ワークスペースの信頼を解除するにはどうすればよいですか?
ワークスペースの信頼エディター (コマンドパレットからワークスペース: ワークスペースの信頼を管理) を表示し、信頼しないボタンを選択します。また、信頼されたフォルダーとワークスペースリストからフォルダーを削除することもできます。
なぜ「信頼しない」ボタンが表示されないのですか?
ワークスペースの信頼ダイアログに信頼しないボタンが表示されない場合、フォルダーの信頼レベルは親フォルダーから継承されている可能性があります。信頼されたフォルダーとワークスペースリストを確認して、親フォルダーがワークスペースの信頼を有効にしているかどうかを確認してください。
GitHub Codespaceへの接続や実行中の Docker コンテナへのアタッチなどの一部のワークフローは、これらがすでに高いレベルの信頼性を持つ管理された環境であるため、自動的に信頼されます。
ワークスペースの信頼はどのようなものから保護してくれますか?
VS Code の多くの機能は、リンティングや保存時のフォーマット、コードのコンパイルやデバッグなどの特定の操作を実行するときなど、サードパーティのツールや拡張機能が自動的に実行されることを許可しています。悪意のある人物は、ユーザーの知らないうちに悪意のあるコードを実行し、ローカルマシンに損害を与える可能性のある、無害に見えるプロジェクトを作成する可能性があります。ワークスペースの信頼は、慣れないソースコードの安全性と整合性を評価している間、コードの実行を防止しようとすることで、セキュリティの追加のレイヤーを提供します。