外部エージェント
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLab Duo Agentは並行して動作し、コードの作成、調査結果の生成、複数タスクの同時実行を支援します。
エージェントを作成し、外部AIモデルプロバイダーと連携させることで、組織のニーズに合わせてカスタマイズできます。その後、プロジェクトのイシュー、エピック、またはマージリクエストにおいて、コメントやディスカッションでその外部エージェントにメンションし、タスクの完了を依頼できます。
外部エージェントは次のことを行います:
- 周辺のコンテキストとリポジトリ内のコードを読み取り、分析する。
- プロジェクトの権限を遵守し、監査証跡を保持しながら、実行すべき適切なアクションを判断する。
- CI/CDパイプラインを実行し、すぐにマージ可能な変更またはインラインコメントのいずれかの形でGitLab上で応答する。
前提条件
- GitLab Duo Agent Platformの前提条件を満たしていること。
- フロー実行を有効にする。
セキュリティに関する考慮事項
外部エージェントはサードパーティのAIモデルプロバイダーと統合し、GitLabに組み込まれているエージェントやフローとは異なるセキュリティ特性を持っています。外部エージェントを使用すると、以下のリスクを許容することになります:
- Prompt injection vulnerabilities: GitLabは、プロンプトインジェクションのリスクを軽減するために、サードパーティのプロンプトスキャンを実装しています。このスキャンは外部エージェントでは利用できません。
- Third-party provider dependency: 外部のAIモデルプロバイダーが、すべてのセキュリティコントロール(プロンプトスキャン、モニタリング、およびアラートを含む)を管理しており、GitLabではありません。
- Network access: 外部エージェントは、サードパーティのAIプロバイダーに対してネットワーク呼び出しを行います。これらのプロバイダーに送信されるデータは、プロバイダーのセキュリティポリシーおよびデータ処理慣行に従います。
- Limited isolation: 外部エージェントは、GitLabネイティブのエージェントやフローに適用されるものと同じレベルのネットワーク分離およびセキュリティ制限を持っていません。
組織で外部エージェントを有効にする前に、セキュリティ要件と選択したAIモデルプロバイダーが提供するセキュリティドキュメントを確認してください。
GitLab Duo Agent Platformにおけるセキュリティ上の脅威と軽減策のより広範な概要については、GitLab Duo Agent Platformのセキュリティ脅威に関するドキュメントを参照してください。
GitLab管理の外部エージェントのクイックスタート
- プラン: Premium、Ultimate
- 提供形態: GitLab.com
次のインテグレーションはGitLabによってテストされており、利用可能です:
エージェントを作成し、外部AIモデルプロバイダーと連携させるには、GitLab Duo Agent Platformの前提条件を満たしている必要があります。
管理された外部エージェントは、GitLabが管理する認証情報を使用でき、追加のエージェント設定なしでグループ内で有効にできます。
管理エージェントを有効にして使用するために必要な手順:
AIカタログでエージェントにアクセスします。エージェント名を検索するか、直接URLを使用します。
GitLabが管理する外部エージェントには、GitLabが維持管理するバッジ( )が表示されます。
イシュー、エピック、またはマージリクエストで外部エージェントを使用します。
Claudeコードエージェント
GitLabによるClaude Code Agentは、GitLabが管理する認証情報を使用し、追加の設定を必要としません。このエージェントはGitLab.comでのみ利用可能です。
Codexエージェント
GitLabによるCodex Agentは、GitLabが管理する認証情報を使用し、追加の設定を必要としません。このエージェントはGitLab.comでのみ利用可能です。
Amazon Q Developerエージェント
Amazon Q Developer Agentは、GitLabが管理する認証情報を使用しません。このエージェントを使用するには、独自の認証情報を提供する必要があります。このエージェントはGitLab.comでのみ利用可能です。
Amazon Q Developerエージェントを使用するには:
プロジェクトのCI/CD設定に次の環境変数を追加します:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION_NAMEAMAZON_Q_SIGV4
Develop with Geminiエージェント
Develop with Gemini Agentは、GitLabが管理する認証情報を使用しません。このエージェントを使用するには、独自の認証情報を提供する必要があります。このエージェントはGitLab.comでのみ利用可能です。
Develop with Geminiエージェントを使用するには:
プロジェクトのCI/CD設定に次の環境変数を追加します:
GOOGLE_CREDENTIALS- Googleの認証情報JSONファイルの場所を追加します。詳細については、GOOGLE_APPLICATION_CREDENTIALS環境変数を参照してください。GOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_LOCATION
GitLabが管理するエージェントを他のインスタンスに追加する
- 提供形態: GitLab Self-Managed、GitLab Dedicated
- ステータス: 実験的機能
管理者は、ClaudeエージェントおよびCodexエージェントをGitLabインスタンスに追加できます。
前提条件:
- 管理者である必要があります。
外部エージェントをインスタンスに追加するには:
- 右上隅で、管理者を選択します。
- GitLab Duoを選択します。
- GitLabが管理する外部エージェントで、AIカタログに追加を選択します。
また、APIを使用して外部エージェントを追加することもできます。
アクセス認証情報
外部エージェントは、AIゲートウェイを通じてGitLabが管理する認証情報を使用します。
GitLab管理の認証情報を使用する場合:
- 外部エージェントの設定で
injectGatewayToken: trueを設定します。 - 外部エージェントがGitLab AIゲートウェイプロキシエンドポイントを使用するように設定します。
injectGatewayTokenがtrueの場合、次の環境変数が自動的に挿入されます:
AI_FLOW_AI_GATEWAY_TOKEN: AIゲートウェイの認証トークンAI_FLOW_AI_GATEWAY_HEADERS: APIリクエスト用に整形されたヘッダー
GitLab管理の認証情報は、Anthropic ClaudeおよびOpenAI Codexでのみ使用できます。
サポートされているモデル
GitLabが管理する認証情報の場合、次のAIモデルがサポートされています:
Anthropic Claude:
claude-haiku-4-5-20251001claude-opus-4-5-20251101claude-opus-4-6claude-sonnet-4-20250514claude-sonnet-4-5-20250929claude-sonnet-4-6
OpenAI Codex:
gpt-5gpt-5-codexgpt-5-mini-2025-08-07gpt-5.1gpt-5.1-2025-11-13gpt-5.1-codexgpt-5.2-2025-12-11gpt-5.3-codexgpt-5.4-2026-03-05gpt-5.4-minigpt-5.4-nano
CI/CD変数を設定する
GitLabがサードパーティプロバイダーに接続する方法を決定するために、プロジェクトに変数を追加します。
前提条件:
- プロジェクトのメンテナーまたはオーナーロールが必要です。
プロジェクトの設定で変数を追加または更新するには、次の手順に従います:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > CI/CDを選択します。
- 変数を展開します。
- 変数を追加を選択し、フィールドに入力します:
タイプ: **変数(デフォルト)**を選択します。
環境: **すべて(デフォルト)**を選択します。
表示レベル: 目的の表示レベルを選択します。
APIキーおよびパーソナルアクセストークンの変数には、マスクするまたはマスクして非表示を選択します。
変数の保護チェックボックスをオフにします。
変数参照を展開チェックボックスをオフにします。
説明(オプション): 変数の説明を入力します。
キー: CI/CD変数の環境変数名(例:
GITLAB_HOST)を入力します。値: APIキー、パーソナルアクセストークン、またはホストの値を入力します。
- 変数を追加を選択します。
詳細については、プロジェクトの設定にCI/CD変数を追加する方法を参照してください。
外部エージェントのCI/CD変数
次のCI/CD変数を使用できます:
| インテグレーション | 環境変数 | 説明 |
|---|---|---|
| すべて | GITLAB_TOKEN_<integration> | サービスアカウントユーザーのパーソナルアクセストークン。 |
| すべて | GITLAB_HOST | GitLabインスタンスのホスト名(例: gitlab.com)。 |
| Amazon Q | AWS_SECRET_NAME | AWS Secret Managerのシークレット名。 |
| Amazon Q | AWS_REGION_NAME | AWSリージョン名。 |
| Amazon Q | AMAZON_Q_SIGV4 | Amazon Q Sig V4認証情報。 |
| Google Gemini CLI | GOOGLE_CREDENTIALS | JSON認証情報ファイルの内容。 |
| Google Gemini CLI | GOOGLE_CLOUD_PROJECT | Google CloudプロジェクトのID。 |
| Google Gemini CLI | GOOGLE_CLOUD_LOCATION | Google Cloudプロジェクトの場所。 |
エージェントを有効にする
エージェントを有効にすると、イシュー、マージリクエスト、またはディスカッションからそれをトリガーできます。
プロジェクトでエージェントを有効にすると、そのプロジェクトのトップレベルグループでも同時に有効になります。
前提条件:
- プロジェクトのメンテナーまたはオーナーロールが必要です。
外部エージェントを有効にするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 自動化 > エージェントを選択します。
- 管理中タブを選択し、有効にするエージェントを選択します。
- 右上隅で有効を選択します。
- プロジェクトの下で、エージェントを有効にするプロジェクトを選択します。
- トリガーを追加で、外部エージェントをトリガーするイベントタイプを選択します:
- メンション: イシューまたはマージリクエストのコメントでサービスアカウントユーザーがメンションされたとき。
- 割り当て: サービスアカウントユーザーがイシューまたはマージリクエストに割り当てられたとき。
- レビュアーを割り当てる: サービスアカウントユーザーがレビュアーとしてマージリクエストに割り当てられたとき。
- 有効化を選択します。
外部エージェントを有効にするには:
- 上部のバーで、検索または移動先 > 検索を選択します。
- AIカタログを選択し、次にエージェントタブを選択します。
- 有効にするエージェントを選択します。
- 右上隅で有効を選択します。
- プロジェクトの下で、エージェントを有効にするプロジェクトを選択します。
- トリガーを追加で、外部エージェントをトリガーするイベントタイプを選択します:
- メンション: イシューまたはマージリクエストのコメントでサービスアカウントユーザーがメンションされたとき。
- 割り当て: サービスアカウントユーザーがイシューまたはマージリクエストに割り当てられたとき。
- レビュアーを割り当てる: サービスアカウントユーザーがレビュアーとしてマージリクエストに割り当てられたとき。
- 有効化を選択します。
外部エージェントは、グループおよびプロジェクトの自動化 > エージェントページに表示されます。トップレベルグループ内の任意のプロジェクトのメンバーは、自分のプロジェクトでエージェントを有効にできるようになりました。
グループ内にサービスアカウントが作成されます。アカウント名は次の命名規則に従います: ai-<agent>-<group>。
プロジェクトで有効にする
外部エージェントがすでにトップレベルグループで有効になっている場合、そのグループのプロジェクトで有効にすることができます。
前提条件:
- プロジェクトのメンテナーまたはオーナーロールが必要です。
- プロジェクトのトップレベルグループでエージェントを有効にする必要があります。
プロジェクトで外部エージェントを有効にするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 自動化 > エージェントを選択します。
- 右上隅で、グループからのエージェントを有効にするを選択します。
- ドロップダウンリストから、有効にする外部エージェントを選択します。
- トリガーを追加で、外部エージェントをトリガーするイベントタイプを選択します:
- メンション: イシューまたはマージリクエストのコメントでサービスアカウントユーザーがメンションされたとき。
- 割り当て: サービスアカウントユーザーがイシューまたはマージリクエストに割り当てられたとき。
- レビュアーを割り当てる: サービスアカウントユーザーがレビュアーとしてマージリクエストに割り当てられたとき。
- 有効化を選択します。
プロジェクトの自動化 > エージェントリストに外部エージェントが表示されます。
トップレベルグループのサービスアカウントがプロジェクトに追加されます。このアカウントにはデベロッパーロールが割り当てられます。
外部エージェントを使用する
前提条件:
- プロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。
- GitLabが管理する外部エージェントおよびAIカタログで作成されたカスタム外部エージェントの場合、外部エージェントはプロジェクトで有効になっている必要があります。
- エージェントが作成したブランチ(^duo/(fix|feature|refactor|docs/).*で始まるブランチ)に対してエージェントがプッシュできるようにするには、ブランチルールの作成が必要になる場合があります。
プロジェクトで、イシュー、マージリクエスト、またはエピックを開きます。
サービスアカウントユーザーに対して、メンション、割り当て、またはレビューのリクエストを行います。例:
@service-account-username Can you help analyze this code change?外部エージェントがタスクを完了すると、確認メッセージが表示され、すぐにマージ可能な変更またはインラインコメントが表示されます。
カスタム外部エージェントを作成する
- 提供形態: GitLab Self-Managed
GitLab Self-Managedでは、ai_catalog_create_third_party_flows機能フラグが有効になっている場合、AIカタログを使用して外部エージェントを作成し、環境で実行するように設定できます。
GitLab.comでは、カスタム外部エージェントを作成できません。代わりに、GitLabが管理する外部エージェントを使用してください。
推奨されるワークフローは次のとおりです:
- AIカタログでエージェントを作成します。
- プロジェクトでエージェントを有効にし、エージェントを呼び出す方法を決定するトリガーを指定します。
この場合、サービスアカウントが作成されます。エージェントの実行時には、ユーザーのメンバーシップとサービスアカウントのメンバーシップの組み合わせが使用されます。この組み合わせを複合アイデンティティと呼びます。
必要に応じて、外部エージェントを手動で作成できます。
エージェントの表示レベル
カスタム外部エージェントを作成する際に、それを管理するプロジェクトを選択し、エージェントを公開するか非公開にするかを決定します。
公開エージェント:
- 誰でも閲覧でき、前提条件を満たすすべてのプロジェクトで有効にできます。
非公開エージェント:
- ゲスト、プランナー、レポーター、デベロッパー、メンテナー、またはオーナーのロールを持つ管理プロジェクトのメンバーのみが閲覧できます。
- 管理対象プロジェクト以外のプロジェクトでは有効にできません。
AIカタログでエージェントを作成する
まず、AIカタログで外部エージェントを作成します。
前提条件:
- プロジェクトのメンテナーまたはオーナーロールが必要です。
外部エージェントを作成するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 自動化 > エージェントを選択します。
- 新しいエージェントを選択します。
- 基本情報で、次の操作を行います:
- 表示名に、名前を入力します。
- 説明に、説明を入力します。
- 表示レベルとアクセスの下にある表示レベルで、非公開または公開を選択します。
- 設定で、次の操作を行います:
- 外部を選択します。
- 外部エージェントの設定を入力します。独自のYAMLを記述するか、サンプル設定を編集できます。
- エージェントを作成を選択します。
外部エージェントがAIカタログに表示されます。
外部エージェントを手動で作成する
UIのフローに従わずに作成したい場合は、外部エージェントを手動で作成できます:
- プロジェクト内に設定ファイルを作成します。
- サービスアカウントを作成します。
- エージェントの呼び出し方法を定義するトリガーを作成します。
- エージェントを使用します。
この場合、エージェントの実行に使用されるサービスアカウントを手動で作成します。
設定ファイルを作成する
設定ファイルを手動で追加して外部エージェントを作成する場合は、外部エージェントごとに異なる設定ファイルを作成する必要があります。
前提条件:
- プロジェクトのデベロッパー、メンテナー、またはオーナーロールが必要です。
設定ファイルを作成するには:
- プロジェクトで、YAMLファイルを作成します。例:
.gitlab/duo/flows/claude.yaml - 設定ファイルの例のいずれかを使用して、ファイルに入力します。
サービスアカウントを作成する
外部エージェントを使用する予定のプロジェクトへのアクセス権を持つ、サービスアカウントを作成する必要があります。
エージェントの実行時には、ユーザーのメンバーシップとサービスアカウントのメンバーシップの組み合わせが使用されます。この組み合わせを複合アイデンティティと呼びます。
前提条件:
- GitLab Self-Managedでは、次のいずれかが必要です:
- インスタンスへの管理者アクセス権。
- トップレベルグループのオーナーロールおよびサービスアカウントを作成する権限。
外部エージェントをメンションする各プロジェクトには、それぞれ一意のグループサービスアカウントが必要です。外部エージェントにタスクを割り当てる際は、サービスアカウントのユーザー名をメンションしてください。
AIカタログから外部エージェントを作成し、トップレベルグループで有効にすると、ai-<agent>-<group>という名前のサービスアカウントが自動的に作成されます。例えば、GitLab DuoグループでClaude code agentという名前のエージェントを有効にすると、サービスアカウント名はai-claude-code-agent-gitlab-duoになります。
サービスアカウントをセットアップするには、次の手順に従います。十分な権限がない場合は、インスタンス管理者またはトップレベルグループのオーナーにサポートを依頼してください。
トップレベルグループで利用するためのサービスアカウントを作成します。インスタンス用に作成されたサービスアカウントはサポートされていません。
次のスコープを指定して、サービスアカウントのパーソナルアクセストークンを作成します:
write_repositoryapiai_features
サービスアカウントをプロジェクトに追加し、デベロッパーロールを付与します。これにより、サービスアカウントに必要最小限の権限が付与されます。
サービスアカウントをプロジェクトに追加する際は、サービスアカウントの正確な名前を入力する必要があります。誤った名前を入力すると、外部エージェントは機能しません。
トリガーを作成する
次に、外部エージェントがいつ実行されるかを定義するトリガーを作成する必要があります。
たとえば、ディスカッションでサービスアカウントにメンションしたとき、またはサービスアカウントをレビュアーとして割り当てたときに、エージェントがトリガーされるよう指定できます。