日本語

プラグイン管理

GitHub からワークスペースのプラグインをインポートして同期する

始める前に

ワークスペース管理者は、GitHub からプラグインマーケットプレイスをインポートし、そのリポジトリからプラグインを最新の状態に保つことができます。マーケットプレイスとは、インポートするプラグインの一覧を記載した JSON カタログです。

このページでは、ワークスペースへのインポートと同期について説明します。マーケットプレイスを直接設定するには、 ローカルクライアントでクラウド管理またはシステムの config.toml を使用します。詳しくは、 プラグインのマーケットプレイスとデフォルト設定を構成するを参照してください。 特定のプロジェクトでプラグインを有効または無効にするには、リポジトリでプラグインを 有効または無効にするを参照してください。

マーケットプレイスのリポジトリと、そこから参照されるその他のすべてのリポジトリを読み取れる GitHub アカウントを使用してください。公開および非公開の GitHub リポジトリに対応しています。インポートする前に、リポジトリへのアクセスに必要な GitHub 組織の承認を完了してください。

インポートする前に、リポジトリの内容を確認してください。新しいプラグインは、インストールポリシーが 利用可能 で、認証はインストール時に行う状態で作成されます。新しいマーケットプレイスでは、毎日の自動同期が有効になります。インポートでは有効なすべてのエントリが処理され、以降の同期ではリポジトリに追加された新しいプラグインが自動的に追加されます。

マーケットプレイスの同期を設定する

  1. 管理 > プラグイン を開き、追加 > マーケットプレイスをインポート を選択します。
  2. ソース に、https://github.com/example/team-plugins などのリポジトリ URL を入力します。ブランチやフォルダーの URL ではなく、リポジトリの URL のみを使用してください。
  3. マーケットプレイスがサブディレクトリにある場合は、そのディレクトリを パス に入力します。たとえば、team-tools/.agents/plugins/marketplace.json には team-tools を使用します。リポジトリのルートを使用する場合は、パス を空のままにします。マニフェストのファイル名は入力しないでください。
  4. 必要に応じて ブランチ、タグ、またはコミット を入力します。リポジトリのデフォルトブランチを使用する場合は、空のままにします。今後のコミットを受け取るにはブランチを使用します。特定のコミットを指定すると、そのリビジョンのままになります。
  5. マーケットプレイスをインポート を選択し、求められたら GitHub へのアクセスを承認します。非常に大規模なマーケットプレイスでは、最初のインポートに最長 1 時間かかることがあります。それ以降の毎日の同期は、通常数分で完了します。
  6. インポート結果 を確認し、インポートされた各プラグインを開いて、インストールポリシーと必要なアプリを設定します。

毎日の同期を待たずに更新をリクエストするには、管理 > プラグイン > マーケットプレイス でマーケットプレイスを開き、今すぐ同期 を選択します。

対応形式

選択したディレクトリには、次のいずれかのファイルが含まれている必要があります。

ファイル 形式
.agents/plugins/marketplace.json plugins 配列を持つ Codex マーケットプレイス。
.claude-plugin/marketplace.json plugins 配列を持つ Claude 互換マーケットプレイス。
.claude-plugin/plugin.json マーケットプレイスマニフェストが存在しない場合の、スタンドアロンの Claude プラグイン。

マーケットプレイスのエントリでは、.codex-plugin/plugin.json を使用するネイティブプラグイン、Claude 互換プラグイン、Agent Plugins 1.0 パッケージ、または対応するスキルパッケージを参照できます。

Codex マーケットプレイスでは、同じリポジトリ内のプラグインにローカルパスを使用します。

{
  "name": "team-plugins",
  "interface": {
    "displayName": "Team plugins"
  },
  "plugins": [
    {
      "name": "team-tools",
      "source": {
        "source": "local",
        "path": "./plugins/team-tools"
      }
    }
  ]
}

このパスは、.agents/plugins/ ではなく、選択したマーケットプレイスのルートを基準とします。

Claude 互換マーケットプレイスでは、各ローカルプラグインにパス文字列を使用できます。

{
  "name": "team-plugins",
  "plugins": [
    {
      "name": "team-tools",
      "source": "./plugins/team-tools"
    }
  ]
}

Codex マーケットプレイスのエントリでは、GitHub リポジトリのルートにあるプラグイン用の source: "url" と、GitHub のサブディレクトリにあるプラグイン用の source: "git-subdir" にも対応しています。例:

{
  "name": "team-tools",
  "source": {
    "source": "git-subdir",
    "url": "https://github.com/example/team-tools.git",
    "path": "./plugins/team-tools",
    "ref": "main"
  }
}

Git ソースでは、ref または完全な 40 文字のコミット sha を選択できます。承認に使用する GitHub アカウントには、参照されるすべてのリポジトリの読み取り権限が必要です。現在、ワークスペースへのインポートで対応しているのは GitHub リポジトリのみです。

ワークスペースへのアクセスを設定する

GitHub のインポートと同期では、AVAILABLEINSTALLED_BY_DEFAULTNOT_AVAILABLEON_INSTALLON_USE など、リポジトリ内のインストールポリシーや認証ポリシーは適用されません。ワークスペース管理者が、各プラグインについてこれらの設定を構成します。更新を同期した場合や、既存のプラグインを GitHub 管理に移行した場合も、そのワークスペースポリシーは維持されます。

インストールポリシー を使用して、対象となる各ロールに 利用可能 または インストール済み を選択します。必要なアプリも有効にする必要があり、メンバーには接続先サービスへのアクセス権が必要です。プラグインをインポートしても、アプリへのアクセス権が付与されたり、メンバーのアカウントが接続されたりすることはありません。ロール、アプリ、アクションの制御については、プラグインの制御を参照してください。

既存のプラグインを GitHub 管理に移行する

既存のプラグインのマーケットプレイスエントリに pluginId を追加します。

{
  "name": "team-tools",
  "pluginId": "plugin_0123456789abcdef0123456789abcdef",
  "source": {
    "source": "local",
    "path": "./plugins/team-tools"
  }
}

管理 > プラグイン からプラグインを開き、その URL 内の /admin/plugins/ の後にある ID をコピーします。マーケットプレイスエントリで、pluginIdname および source と同じ階層に配置します。既存のプラグインは、同じワークスペース内にある必要があります。

これにより、アップロードされたプラグインや、それ以外の方法で管理されていないワークスペースプラグインが GitHub 管理に移行されます。プラグインの ID、共有設定、ワークスペースポリシーは維持されます。今後の更新は GitHub から取得され、アーカイブのアップロードで管理対象のプラグインを置き換えることはできなくなります。すでに別の GitHub ソースで管理されているプラグインを、この方法で引き継ぐことはできません。

デスクトップ専用プラグイン

mcp.json または .mcp.json で MCP server を宣言するインポート済みプラグインには、デスクトップ専用 と表示され、ChatGPT デスクトップアプリでのみ動作します。これには、リモート HTTPS URL を使用するサーバーも含まれます。同じ制限は、インラインのサーバー宣言など、その他の対応する MCP 設定形式にも適用されます。

.app.json で既存のアプリを参照する

プラグインのルートに .app.json を追加します。ファイル名の先頭にはドットが含まれます。ドットのない app.json には対応していません。

{
  "apps": {
    "team-tools": {
      "id": "asdk_app_example",
      "required": true
    }
  }
}

asdk_app_example を既存のアプリの ID に置き換えます。対応するアプリ ID は、asdk_app_connector_、または templated_apps_ で始まります。plugin_... ID ではなく、アプリ ID を使用してください。たとえば、plugin_asdk_app_example を含むプラグイン URL は、アプリ asdk_app_example を表します。

キー team-tools は、このファイル内で参照に付ける名前です。プラグインがそのアプリに依存する場合は、requiredtrue に設定します。他の既存アプリを参照するエントリも追加できます。

ネイティブプラグインの場合は、.codex-plugin/plugin.jsonapps./.app.json に設定します。この例の完全なマニフェストを次に示します。

{
  "name": "team-tools",
  "version": "1.0.0",
  "description": "Use the team's approved tools.",
  "author": {
    "name": "Example team"
  },
  "apps": "./.app.json",
  "interface": {
    "displayName": "Team tools",
    "shortDescription": "Use approved team tools",
    "longDescription": "Connect to the team's existing app.",
    "developerName": "Example team",
    "category": "Productivity",
    "capabilities": ["Read"]
  }
}

ファイルは次の構成で配置します。

team-plugins/
├── .agents/plugins/marketplace.json
└── plugins/team-tools/
    ├── .codex-plugin/plugin.json
    └── .app.json

この参照によってアプリが作成されたり、権限が付与されたりすることはありません。管理者は対象のロールがアプリを利用できるようにする必要があり、メンバーは必要な認証を完了する必要があります。既存のアプリ権限、アクション制御、サービスへのアクセスは引き続き適用されます。

プラグインを最新の状態に保つ

新しいマーケットプレイスでは、更新が毎日確認されます。自動同期を待たずに更新をリクエストするには、管理 > プラグイン > マーケットプレイス を開き、マーケットプレイスを選択して 今すぐ同期 を選択します。

同期では、新しいマーケットプレイスエントリを追加し、既存のプラグインを更新できます。自動同期では新しいプラグインがすべてインポートされるため、リポジトリへの変更はマージする前に確認してください。

同期後に、ステータスと保存されたレポートを確認します。完了 — N 件のエラー は、処理は完了したものの、一部のプラグインを処理できなかったことを示します。既存のプラグインに対する更新が無効な場合は、最後に動作していたバージョンが維持されます。GitHub で報告された問題を修正し、今すぐ同期 を選択して再試行してください。

リポジトリからエントリを削除しても、インポートされたワークスペース内のコピーは削除されません。コピーには ソースに存在しません と表示されます。ChatGPT でマーケットプレイスを削除すると、そこからインポートされたすべてのプラグインが削除されます。

GitHub へのアクセスを再接続または変更する

GitHub へのアクセスを再接続 するには、まずインポートに使用した GitHub アカウントが、そのリポジトリと参照されるすべてのリポジトリに引き続きアクセスできることを確認します。マーケットプレイスの同期にはその管理者の GitHub 接続が使用されるため、最初にマーケットプレイスをインポートした管理者が、ChatGPT で GitHub プラグインを開いてアカウントを再接続する必要があります。

新しい所有者に移管 するには、新しいワークスペース管理者が 管理 > プラグイン > 追加 > マーケットプレイスをインポート を開き、同じ ソースパスブランチ、タグ、またはコミット の値を使用して同じマーケットプレイスをインポートします。今後の同期では、その管理者の GitHub 接続が使用されます。

再接続や所有者の変更だけを目的として、マーケットプレイスを削除しないでください。削除すると、インポートされたプラグインも削除されます。