GitLab Duo IDE拡張機能ガイド — VS Code / Visual Studio / JetBrainsで「まず使える」ようになる
GitLab DuoはIDEの中で使えるAI機能ですが、VS Code・Visual Studio・JetBrainsそれぞれに専用の拡張機能があり、インストール方法や設定項目がIDEごとに微妙に違います。この記事では、公式マニュアルの内容をもとに、インストールから日常的な使い方、CI/CD・セキュリティスキャン、トラブルシューティングまでを一通りまとめました。
VS Code拡張機能を中心に解説し、Visual StudioとJetBrainsは手順が異なる箇所だけ補足しています。実務経験1〜3年程度で、GitLabのissueやmerge requestといった基本概念は理解している方を想定しています。
目次
1. GitLab Duo IDE拡張機能とは
1.1 全体像
GitLab Duo IDE拡張機能は、GitLab DuoやGitLabの各種機能をIDEに直接統合するツールです。GitLab for VS Code拡張機能はその代表で、GitLab DuoをはじめとするGitLabの機能をVS Codeに直接組み込みます。同様の拡張機能は、Visual StudioとJetBrains系IDEにも用意されています。
GitLab for Visual Studio拡張機能は、Windows版Visual StudioにGitLabを統合します。Agentic ChatやSoftware Development Flow、Code Suggestionsを含むGitLab Duo Agent Platformと、非エージェント型のGitLab Duo(ChatとCode Suggestions)の両方に対応しています。GitLab Duoプラグインは、IntelliJ、PyCharm、GoLand、Webstorm、Rubymineといった主なJetBrains系IDEにGitLab Duoを統合します。
これらの拡張機能はそれぞれ独立したソフトウェアですが、裏側では共通の仕組みを利用しています。GitLab Language Serverは、IDE向けの各種GitLabエディタ拡張機能を支える共通基盤です。つまり、VS Code・Visual Studio・JetBrains IDEのどれを使っても、GitLab Duoの中核機能は同じLanguage Serverによって動いています。
この記事では、機能が最も充実しているVS Code拡張機能を中心に解説します。Visual StudioやJetBrains向けの手順で大きく異なる箇所は、その都度補足します。
1.2 拡張機能が提供する機能
VS Code拡張機能を例にすると、設定を済ませたIDEには次の機能が追加されます。
- プロジェクトで作業する: issueで作業を計画・追跡し、merge requestで変更をレビュー・議論し、コードスニペットを共有できます。GitLab Duoを使ったAIネイティブな計画・コーディングも可能です。
- CI/CDパイプラインの監視とテスト: パイプライン設定をテストし、パイプラインのステータスやジョブの出力を確認できます。
- アプリケーションのセキュリティ確保: セキュリティ検出結果を確認し、プロジェクトのSASTスキャンを実行できます。
- リポジトリの閲覧: クローンしなくても、読み取り専用モードでGitLabリポジトリにアクセスできます。
さらに、現在開いているブランチについて、最新のCI/CDパイプラインのステータス、そのブランチに対応するmerge requestへのリンクが表示されます。merge requestにissueクローズパターンが含まれる場合は、issueへのリンクも表示されます。
1.3 パネル構成
VS Code拡張機能は、IDEの中に複数のパネルを追加します。
- 左サイドバーのGitLabアイコン: issueとmerge requestの管理、CI/CDコマンドの実行、パイプラインステータスの表示、セキュリティスキャンの実行ができます。カスタムクエリを使えば、表示内容をさらに拡張できます。
- 左サイドバーのGitLab Duo Agent Platform: chatタブではGitLab Duo Agentic Chatを操作でき、New chatドロップダウンから基盤エージェントやカスタムエージェントを選べます。flowsタブではSoftware Development Flowを使えます。
- ステータスバーのDuoアイコン: GitLab Duo Code Suggestionsの機能ステータスを確認し、コード作成中に提案内容を確認できます。
- 左サイドバーのGitLab Duo Chat: 非エージェント型のGitLab Duo Chatを操作できます。
Visual StudioやJetBrains IDEでも、名称や配置に多少の違いはあるものの、同様のチャット機能とステータス表示が用意されています。たとえばJetBrains向けプラグインでは、右側のツールウィンドウバーにGitLab Duo Agent Platformが表示されます。chatタブでAgentic Chatを、flowsタブでSoftware Development Flowを使え、ステータスバーのDuoアイコンでCode Suggestionsの状態を確認できる点はVS Code版と共通です。
2. インストールと接続
2.1 インストールから接続までの流れ
GitLab for VS Code拡張機能を使うまでの流れは、インストール、GitLabへの認証、リポジトリとの接続という3ステップです。認証にはOAuthとPAT(個人アクセストークン)の2つの方法があり、いずれもGitLabインスタンスのURLと紐づけて管理されます。
2.2 VS Code拡張機能のインストール
インストール方法は、利用環境に応じて次から選びます。
- 標準のVS Codeを使っている場合は、Visual Studio Marketplaceからインストールします。
- 非公式版のVS Codeを使っている場合は、Open VSX Registryからインストールします。
- セキュリティを重視したローカル開発を行う場合は、VS Code Dev Containerの中にインストールします。
Dev Containerへのインストール
Dev Containerを使う場合、事前にDockerが起動していることと、VS CodeにDev Containers拡張機能がインストールされていることが必要です。
- コマンドパレットから
Dev Containers: Add Dev Container Configuration Filesコマンドを実行します。 - 設定ファイルにGitLab拡張機能を追加します。
// .devcontainer/devcontainer.json
{
"name": "My Project",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"customizations": {
"vscode": {
"extensions": [
"GitLab.gitlab-workflow"
]
}
}
}
- コマンドパレットから
Dev Containers: Open Folder in Containerコマンドを実行し、プロジェクトをDev Container内で開きます。VS Codeが自動的にコンテナ内に拡張機能をインストールします。
2.3 GitLabへの認証
拡張機能をインストールしたら、GitLabアカウントで認証します。GitLab.comを使う場合、PAT認証には api スコープを持つ個人アクセストークンが必要です。
- コマンドパレットを開きます(macOSは
Command+Shift+P、WindowsまたはLinuxはControl+Shift+P)。 -
GitLab: Authenticateと入力し、Enterを押します。 - GitLabインスタンスのURLを選択、または手動で入力します。手動入力の場合は
http://またはhttps://を含む完全なURLを入力し、Enterで確定します。 - 認証方法としてOAuthまたはPATを選びます。OAuthの場合は画面の指示に従ってサインインします。PATの場合はトークンを新規作成するか、既存のトークンを入力します。
GitLab Self-ManagedやGitLab Dedicatedでは、OAuth認証を使う前の準備が必要です。設定エディタのExtensions > GitLab > Authentication > OAuth Client IDsに、GitLabインスタンスのURLとOAuthアプリケーションIDを登録しておきます。
拡張機能は、指定したトークンに紐づくGitLabインスタンスのURLと、Gitリポジトリのリモートを照合します。複数のアカウントやプロジェクトがある場合は、使用するものを選択できます。
2.4 リポジトリへの接続
GitLabリポジトリに接続する手順は次のとおりです。
- VS Codeの上部メニューからTerminal > New Terminalを選びます。
-
git clone <repository>でリポジトリをクローンします。 - クローンしたディレクトリに移動し、
git checkout <branch_name>でブランチをチェックアウトします。 - 左サイドバーのGitLabアイコンを選択し、プロジェクト名を確認します。複数のプロジェクトがある場合は使用するものを選びます。
- ターミナルで
git remote -vを実行し、リモートが設定されていることを確認します。結果は次のような形式になります。
origin git@gitlab.com:gitlab-org/gitlab.git (fetch)
origin git@gitlab.com:gitlab-org/gitlab.git (push)
リモートが未設定、または複数ある場合は、左サイドバーのSource Controlからリポジトリの一覧を開きます。そこからRemote > Add RemoteでGitLab上のリモートを追加できます。
接続が完了すると、VS Codeのステータスバーに情報が表示されます。表示されるのは、直前のコミットにパイプラインがあり、かつ現在のブランチにmerge requestが紐づいている場合です。
2.5 GitLab Duoを使うための設定
GitLab Duoの機能は、いくつかの前提条件を満たしていれば既定で有効になります。主な条件は次のとおりです。
- GitLab Duo Agent Platformの前提条件を満たしていること(エージェント機能を使う場合)。
- GitLab Duoが自身の環境で有効になっていること。
- プロジェクトがグループ名前空間に属していること。
- 既定のGitLab Duo名前空間が設定されているか、GitLab Duoにアクセスできるプロジェクトを開いていること。
GitLab Duoの機能を個別にオフにしたい場合は、設定エディタでExtensions > GitLab > GitLab Duoを開き、該当する項目のチェックを外します。
2.6 Visual Studio・JetBrains IDEでの接続の違い
Visual StudioとJetBrains IDE向けの拡張機能も、基本的な流れ(インストール→認証→GitLab Duo設定)はVS Code版と共通です。ただし、次の点が異なります。
Visual Studio
- Visual Studio 2022 バージョン17.6以降と、IntelliCodeコンポーネントが必要です。GitLabは16.1以降が必要で、Code SuggestionsにはGitLab 16.8以降が必要です。
- 認証はOAuthを使いません。個人アクセストークン(
apiとread_userスコープ)を作成し、Tools > Options > GitLab画面のAccess Tokenに貼り付ける方式です。あわせてGitLab URLも入力します。
JetBrains IDE
- JetBrains IDE 2025.1以降と、GitLab 16.8以降が必要です。JetBrains Plugin MarketplaceからGitLab Duoプラグインをインストールします。
- 認証はSettings内のTools > GitLab Duo画面で行います。GitLabインスタンスのURLを入力し、OAuth・PAT・1Password CLIのいずれかの方法を選びます。設定後はVerify setupを選んで接続を確認します。
3. 日常業務でGitLab Duoを使う
3.1 VS Code拡張機能でできる作業の範囲
拡張機能を使うと、issueで作業を計画・追跡し、GitLab DuoでAIネイティブな計画・コーディングを行い、merge requestで変更をレビュー・議論できます。ブランチの比較やファイル閲覧、スニペットでのコード保存・共有もできます。issueの作成やmerge requestの作成など一部の作業はブラウザでGitLabの画面が開きますが、レビューやDuo Chatの利用などはVS Code内で完結します。
3.2 GitLab Duoを作業中に使う
拡張機能では、GitLab Duo Agent PlatformとGitLab Duo(非エージェント型)の両方を利用できます。
GitLab Duo Agent Platform(Premium・Ultimateプランで利用可)を使うには、左サイドバーのGitLab Duo Agent Platformを選びます。chatタブでAgentic Chatにプロンプトを入力するか、New chatドロップダウンから基盤エージェントやカスタムエージェントを選んで対話します。flowsタブではSoftware Development Flowにプロンプトを入力して使います。
GitLab Duo(非エージェント型のChat)を使うには、左サイドバーのGitLab Duo Chatを選びます。メッセージ欄に質問を入力してEnterキーまたはSendを選びます。
どちらの方式でも、Code SuggestionsはステータスバーのDuoアイコンから機能ステータスを確認できます。コードを書いている最中に、インラインで提案を確認・採用できます。
3.3 issueとmerge requestの作成
issueを作成するには、コマンドパレットでGitLab: Create New Issue on Current Projectを実行します。GitLabがブラウザのNew issueページを開きます。
merge requestを作成するには、ステータスバーのCreate MRを選ぶか、コマンドパレットでGitLab: Create New Merge Request on Current Projectを実行します。こちらもブラウザのNew merge requestページが開きます。
3.4 issueとmerge requestの一覧表示・検索
一覧を見るには、左サイドバーのGitLabを選び、issueとmerge requestのセクションを展開し、対象プロジェクトを選びます。次の項目、またはカスタムクエリの中から表示したい項目を選べます。
- 自分にアサインされたissue
- 自分が作成したissue
- 自分にアサインされたmerge request
- 自分がレビュー中のmerge request
- 自分が作成したmerge request
- プロジェクトの全merge request
選んだissueやmerge requestは、新しいVS Codeタブで開きます。
より詳しく絞り込みたい場合は、コマンドパレットからGitLab: Search Project Issues (Supports Filters)やGitLab: Search Project Merge Requests (Supports Filters)を実行し、検索条件を入力します。フィルタにはassignee:(担当者)、author:(作成者)、label:(ラベル)、milestone:(マイルストーン)、title:(タイトル)などのトークンが使えます。次のように複数のトークンを組み合わせられます。
title: new merge request widget author: zwei assignee: sjones labels: frontend, performance milestone: 17.5
検索結果はブラウザのタブで開きます。
デフォルトで表示される項目とは別の条件を常に表示したい場合は、settings.jsonにgitlab.customQueriesを定義します。パネルに表示する検索条件をカスタマイズできます。カスタムクエリはgitlab.customQueries配列内の1エントリとして、次のように書きます。
{
"gitlab.customQueries": [
{
"name": "Issues assigned to me",
"type": "issues",
"scope": "assigned_to_me",
"noItemText": "No issues assigned to you.",
"state": "opened"
}
]
}
よく使うパラメータは次のとおりです(すべて任意項目です)。
| パラメータ | 既定値 | 内容 |
|---|---|---|
type |
merge_requests |
取得する種類。issues、merge_requests、epics、snippets、vulnerabilitiesから選びます。 |
scope |
all |
対象範囲。assigned_to_me(自分にアサイン)、created_by_me(自分が作成)、all(すべて)から選びます。epicsには使えません。 |
state |
opened |
状態。all、opened、closedから選びます。 |
labels |
[] |
指定した配列のラベルをすべて持つ項目を返します。Noneはラベルなし、Anyは1つ以上ラベルがある項目を返します。 |
author |
なし | 指定したユーザー名で作成された項目を返します。 |
assignee |
なし | 指定したユーザー名にアサインされた項目を返します。epicsとvulnerabilitiesには使えません。 |
maxResults |
20 | 表示する結果の最大件数です。 |
この他にも、マイルストーンや作成日・更新日での絞り込み、脆弱性レポート専用のパラメータ(重要度や検出タイプなど)が用意されています。詳細は原文のCustom queriesページを参照してください。
3.5 merge requestのレビュー
merge requestをレビューするには、左サイドバーのGitLabからissueとmerge requestのセクションを展開してプロジェクトを選び、対象のmerge requestを選びます。Overviewでmerge requestの概要を確認できます。変更されたファイルを一覧から選ぶと、VS Codeのタブに差分が表示されます。削除されたファイルは一覧内で赤色で示されます。差分表示では、ディスカッションの作成・解決・再オープン、個別コメントの削除・編集ができます。
3.6 クイックアクションの利用
issueやmerge requestのコメント欄では、GitLabのクイックアクションを使えます。コメント欄に/label bugのように入力してEnterを押すと、そのissueにbugラベルが追加されます。コメント入力だけで、こうした操作を実行できます。
3.7 その他の便利な操作
デフォルトブランチとの比較には、コマンドパレットでGitLab: Compare Current Branch with Default Branchを実行します。ブラウザに、自分のブランチの最新コミットとデフォルトブランチの最新コミットの差分が表示されます。
現在編集中のファイルをGitLabのUIで開きたい場合は、対象の行を選択したうえでGitLab: Open Active File on GitLabを実行します。該当行がハイライトされた状態でブラウザに表示されます。
3.8 スニペットの作成
コードやテキストの一部を保存・共有するには、スニペットを使います。ファイル全体、または選択した範囲を対象にできます。コマンドパレットでGitLab: Create Snippetを実行し、公開範囲(Private/Public)を選びます。
複数ファイルにまたがる変更を提案したい場合は、変更後(未コミット)の状態でGitLab: Create Snippet Patchを実行します。git diffをもとにしたパッチファイルのスニペットが作成されます。パッチ名を入力すると、その名前がタイトルになり、ファイル名には.patchが付与されます。
既存のスニペットを挿入したい場合は、挿入したい位置にカーソルを置き、GitLab: Insert Snippetを実行してプロジェクトとスニペットを選びます。
4. CI/CDパイプラインとセキュリティスキャン
4.1 パイプラインの監視
プロジェクトがCI/CDパイプラインを使っている場合、拡張機能でパイプラインの起動・監視・更新をIDE内から行えます。監視には、次の前提条件があります。
- プロジェクトがCI/CDパイプラインを使っていること
- 現在のGitブランチにmerge requestが存在すること
- 直近のコミットにパイプラインがあること
パイプラインステータスの確認
ブランチのパイプラインステータスは、VS Codeの下部ステータスバーで確認できます。表示されるステータスには、キャンセル済み、失敗、成功、保留中、実行中、スキップ済み、パイプライン未実行があります。
パイプラインの操作
ステータスバーのパイプラインステータスを選ぶとコマンドパレットが開き、次の操作を選べます。
- Create New Pipeline from Current Branch(現在のブランチから新しいパイプラインを作成)
- Cancel Last Pipeline(直近のパイプラインをキャンセル)
- Download Artifacts from Latest Pipeline(最新パイプラインの成果物をダウンロード)
- Retry Last Pipeline(直近のパイプラインを再試行)
- View Latest Pipeline on GitLab(最新パイプラインをGitLabで表示)
CI/CDジョブの出力確認
現在のブランチのジョブ出力を見るには、左サイドバーのGitLabを選び、For current branchを展開して最新のパイプラインを確認します。ジョブを選ぶと、新しいVS Codeタブでログが開きます。ダウンストリームパイプラインがある場合は、一覧の矢印アイコンで展開・折りたたみができます。選択すると、そのジョブログが新しいタブで開きます。
パイプラインの通知設定
拡張機能は、現在のブランチのパイプラインが完了したときにVS Code内でアラートを表示できます。この通知のオン・オフは、設定エディタでExtensions > GitLab > Otherを開き、GitLab: Show Pipeline Update Notificationsのチェックボックスで切り替えます。
4.2 CI/CD設定ファイルの編集支援
拡張機能は、プロジェクトのCI/CD設定を作成・管理するための機能も提供します。
変数の自動補完: ファイル名が.gitlab-ciで始まり.ymlまたは.yamlで終わる設定ファイルを開いている状態で変数名を入力し始めると、候補が自動で表示されます。
設定の検証: .gitlab-ci.ymlを開いた状態でコマンドパレットからGitLab: Validate GitLab CI Configを実行します。設定に問題があればアラートで知らせてくれます。
マージ後の設定確認: .gitlab-ci.ymlを開いた状態で右上のShow Merged GitLab CI/CD Configurationを選びます。includeや参照がすべて解決された状態の設定を、.gitlab-ci (Merged).ymlという新しいタブで確認できます。
4.3 セキュリティ検出結果の確認
セキュリティ検出結果の確認にはUltimateプランが必要です。SAST・DAST・コンテナスキャン・依存関係スキャンなどのセキュリティリスク管理が、プロジェクトに設定されている必要もあります。
確認手順は次のとおりです。
- 左サイドバーのGitLabを選びます。
- 現在のブランチのセクションでSecurity scanningを展開します。
- New findings(新規検出)またはFixed findings(修正済み)を選びます。
- 重要度レベルを選びます。
- 検出結果を選ぶと、VS Codeのタブで詳細が開きます。
4.4 SAST(静的アプリケーションセキュリティテスト)
VS Code内のSASTは、編集中のファイルの脆弱性を検出します。早期に検出できるため、default branchにマージする前に脆弱性を修正できます。スキャンを実行すると、編集中のファイルの内容がGitLabに送られ、SASTの脆弱性ルールと照合されます。結果はGitLab拡張機能パネルに表示されます。このSAST機能はGitLab.comでExperimentステータスとして提供されています。
リアルタイムSASTスキャンの有効化
- Extensions > GitLabを選びます。
- Manageを選び、Settings > Code Securityを開きます。
- Enable Real-time SAST scanのチェックボックスを選びます。
- 任意で、ファイル保存時にもスキャンしたい場合はEnable scanning on file saveを選びます。
SASTスキャンの実行
リアルタイムSASTスキャンを有効にしたうえで、次のいずれかの方法でファイルのスキャンを実行できます。
- ファイルを保存する(保存時スキャンを有効にしている場合)。
- 左サイドバーのGitLabから**GitLab remote scan (SAST)**を開き、Scan current fileボタンを選ぶ。
- コマンドパレットで
GitLab: Run Remote Scan (SAST)を実行する。
スキャン結果は、左サイドバーのGitLabから**GitLab remote scan (SAST)**セクションを展開すると、重要度の高い順に一覧表示されます。検出結果を選ぶと詳細を確認できます。
5. トラブルシューティングとセキュリティ対策
5.1 ログの確認方法
問題が起きたときは、まずログを確認します。GitLab for VS Code拡張機能と、それを支えるGitLab Language Serverの両方がログを出力します。
デバッグログを有効にするには、設定エディタでExtensions > GitLab > Otherを開き、GitLab: Debugのチェックボックスを選びます。設定後、コマンドパレットでDeveloper: Reload Windowを実行してウィンドウを再読み込みします。
ログを見るには、View > Outputを選びます。出力パネル右上のドロップダウンでGitLabまたはGitLab Language Serverを選び、エラー、警告、接続の問題、認証の問題がないか確認します。
5.2 認証まわりのトラブル
OSキーチェーンにアクセスできないエラー(macOSやUbuntu)は、拡張機能が認証情報の保存にOSキーチェーンを使えない場合に発生します。macOSでは、Keychain Accessからvscodegitlab.gitlab-workflowを削除します。その後、コマンドパレットでGitLab: Remove Account from VS Codeを実行し、再度GitLab: Authenticateで認証をやり直します。Ubuntuでsnap版VS Codeを使っている場合は、同様にキーチェーンのエントリを削除してアカウントを再作成するか、.debパッケージ版のVS Codeへの切り替えを検討します。
GDK利用時のTLS接続エラーは、ローカルのGDKをhttpで動かしているのに、GitLabインスタンスをhttpsとして認証しようとすると起こります。この場合は、GitLab: Authenticateを実行する際に、httpのURLを手動で入力し直します。
5.3 プロジェクト・ネットワークのトラブル
アカウントやプロジェクトが特定できないエラーは、どのリポジトリ・アカウント・プロジェクトを使うべきか拡張機能が判断できない場合に表示されます。リモートが未設定または複数ある場合はリポジトリの接続手順を、複数アカウントがある場合はアカウントの切り替え手順を、複数プロジェクトがある場合はプロジェクトの選択手順を確認します。
認証済みプロキシでの407 Access Deniedエラーは、認証が必要なプロキシを使っている場合に発生することがあります。GitLab Language Server側でプロキシ認証を有効にすることで解決します。
証明書関連のエラーは、自己署名証明書などのカスタム証明書を使っている場合に発生することがあります。誤って「証明書の期限切れ」エラーが出る場合は、設定エディタのApplication > ProxyでProxy Strict SSLとSystem Certificatesを無効にすると解決することがあります。
5.4 GitLab Duoが使えないときの対処
GitLab Duoの機能が表示されない、または動かない場合は、次の順で確認します。
- GitLab Duoを使うための前提条件と、関連する設定が有効になっているか確認します。
- 管理者モードが無効になっているか確認します。
- コマンドパレットで
GitLab: Diagnosticsを実行し、失敗しているチェック項目がないか確認します。 - 診断結果で機能がオフになっていることが分かれば、設定エディタのExtensions > GitLab > GitLab Duoで該当する項目を有効にします。
- Agentic Chatが現在のプロジェクトでサポートされていないと診断された場合は、既定のGitLab Duo名前空間を設定します。
- すべてのチェックが通っているのにパネルが表示されない場合は、カスタムレイアウトでパネルが隠れている可能性があります。コマンドパレットで
View: Show GitLab Duo Agent Platformを実行します。
5.5 Visual Studio・JetBrains IDEのよくある問題
ここまではVS Codeを中心に解説してきましたが、Visual StudioとJetBrains IDEでも似た傾向の問題が起こります。
GitLab Duoの機能が表示されない場合は、VS Codeと同様にまず前提条件と管理者モードの設定を確認します。そのうえで、Visual StudioではTools > Options > GitLab > Generalを確認します。Enable Agentic Duo ChatがTrueになっているか、ステータスバーのGitLabアイコンのツールチップでCode Suggestionsの状態を確認します。JetBrains IDEではTools > GitLab > Diagnosticsで失敗しているチェック項目を確認し、Settings > Tools > GitLab Duoで該当機能を有効にします。JetBrains Remote Developmentを使っている場合は、プラグインをホストマシンとクライアントマシンの両方にインストールしていないか確認します。両方にある場合は、クライアント側からアンインストールします。
WebSocket接続に関するエラーは、ログに/-/cableではなくHTTP/1.1が記録される場合に起こります。VS Code・Visual Studio・JetBrainsのいずれでも同じ原因で発生します。GitLabインスタンスがIDEクライアントからのWebSocket接続を許可している必要があるため、心当たりがあればネットワーク管理者に許可を依頼します。
IDEコマンドが失敗する、または終わらない場合は、Oh My ZSH!やpowerlevel10kといったシェルテーマ・拡張が原因になっていることがあります。GitLab Duoエージェントがターミナルを起動する際、これらのテーマが干渉してコマンドが正常に実行されないことがあります。エージェントが送るコマンドにはよりシンプルなテーマを使うことが回避策になります。この点はVS CodeとJetBrains IDEの両方で共通の対処です。
5.6 エディタ拡張機能・CLIツールのセキュリティ対策
GitLab Duoの拡張機能やCLIツールは、AIエージェントをローカル環境で実行できます。エージェントがコンテナによる隔離なしにローカルで実行される場合、システムリソースへ直接アクセスできる点を理解しておく必要があります。
エージェントは、Gitリポジトリ内のファイルに対して読み取り・書き込み・編集・検索・一覧表示ができます。対象は.gitignoreに除外されていないもの、およびリポジトリ内を指す有効なシンボリックリンクです。一方、エージェントが実行するシェルコマンドは、すべてのファイルにアクセスできます。Gitリポジトリの外にあるファイルや、.gitignoreに一致するファイルも対象です。また、シェルセッション内のほぼすべての環境変数にアクセスできます。除外されるのはCI_JOB_TOKEN・GITLAB_OAUTH_TOKEN・DUO_WORKFLOW_SERVICE_TOKENのみです。ネットワークリクエストの送信やシェルコマンドの実行も可能です。
この隔離がない構成では、いくつかの脅威が起こり得ます。プロンプトインジェクション、エージェントの侵害、パスワードやソースコードなど機微なデータの窃取、侵害された認証情報を使った他システムへの侵入などです。
推奨される対策は次のとおりです。
- ツール呼び出しを承認前に確認する: エージェントが操作の承認を求めてきたら、コマンドやファイル操作が意図したタスクと一致しているか確認します。ファイルパスが想定したディレクトリ内にあるか、コマンド引数に想定外のフラグが含まれていないかも確認します。GitLab Duo CLIをヘッドレスモードで使う場合はツール呼び出しが自動承認されるため、開発コンテナのような隔離された環境でのみ使用します。
- MCPサーバーの提供元と権限を確認する: 信頼できる提供元のMCPサーバーのみを有効にします。各サーバーが要求する権限や、アクセスできるデータを事前に確認し、有効化しているMCPサーバーを定期的に見直します。
- 開発コンテナで隔離する: 開発コンテナを使うと、プロセスの隔離、ファイルシステムアクセスの制限、認証情報の分離、ネットワークアクセスの制限ができます。GitLab Duo CLIのヘッドレスモードを使う場合は手動でのツール承認を経ないため、開発コンテナによる隔離が特に重要です。GitLab for VS Code拡張機能はVS Code Dev Containerと組み合わせて使えます。
まとめ
GitLab Duo IDE拡張機能は、VS Code・Visual Studio・JetBrains IDEのいずれでも、共通のGitLab Language Serverを基盤に動いています。VS Code拡張機能を軸に、インストールから接続、issueやmerge requestを使った日常業務、CI/CD・セキュリティスキャン、トラブル対応までの流れを押さえれば、まず動かして使い始めるには十分です。
ローカルでAIエージェントを実行する以上、ツール呼び出しの確認・MCPサーバーの精査・開発コンテナによる隔離といったセキュリティ対策も忘れずに行ってください。
より詳しい設定やオプションについては、GitLabの公式ドキュメントを参照してください。