始める前に
ワークスペース管理者は、GitHub からプラグインマーケットプレイスをインポートし、リポジトリの内容に合わせてプラグインを最新の状態に保つことができます。マーケットプレイスは、インポートするプラグインを一覧にした JSON カタログです。
このページでは、ワークスペースへのインポートと同期について説明します。クラウド管理またはシステムの config.toml を通じて、
ローカルクライアント上のマーケットプレイスを直接構成する方法については、
プラグインマーケットプレイスとデフォルト設定の構成をご覧ください。
特定のプロジェクトでプラグインを有効または無効にする方法については、リポジトリでのプラグインの
有効化と無効化をご覧ください。
マーケットプレイスのリポジトリと、そこから参照されるすべてのリポジトリを読み取れる GitHub アカウントを使用してください。GitHub の公開リポジトリとプライベートリポジトリに対応しています。リポジトリへのアクセスに GitHub 組織の承認が必要な場合は、インポート前に承認を済ませてください。
インポート前にリポジトリの内容を確認してください。新しいプラグインの初期設定では、インストールポリシーが 利用可能 に設定され、インストール時に認証が行われます。新しいマーケットプレイスでは、毎日の自動同期が有効になっています。インポートでは有効なエントリがすべて処理され、以降の同期ではリポジトリ内の新しいプラグインが自動的に追加されます。
マーケットプレイス同期の構成
- 管理 > プラグイン を開き、 追加 > マーケットプレイスをインポートを選択します。
- ソースに、
https://github.com/example/team-pluginsなどのリポジトリ URL を入力します。ブランチやフォルダの URL ではなく、リポジトリの URL のみを使用してください。 - マーケットプレイスがサブディレクトリにある場合は、 パスにそのディレクトリを入力します。たとえば、
team-tools/.agents/plugins/marketplace.jsonの場合はteam-toolsを使用します。リポジトリのルートを使用する場合は、 パス を空欄にします。マニフェストのファイル名は入力しないでください。 - 必要に応じて、 ブランチ、タグ、またはコミットを入力します。リポジトリのデフォルトブランチを使用する場合は、空欄にします。今後のコミットを取り込むにはブランチを使用してください。特定のコミットを指定すると、そのリビジョンに固定されます。
- マーケットプレイスをインポート を選択し、求められたら GitHub へのアクセスを許可します。非常に大規模なマーケットプレイスでは、初回のインポートに最大 1 時間かかることがあります。その後の毎日の同期は、通常数分で完了します。
- インポート結果を確認し、インポートされた各プラグインを開いて、インストールポリシーと必要なアプリを構成します。
毎日の同期を待たずに更新をリクエストするには、 管理 > プラグイン > マーケットプレイス から対象のマーケットプレイスを開き、 今すぐ同期を選択します。
対応形式
選択したディレクトリには、次のいずれかのファイルが必要です。
| ファイル | 形式 |
|---|---|
.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 からのインポートと同期では、AVAILABLE、INSTALLED_BY_DEFAULT、NOT_AVAILABLE、ON_INSTALL、ON_USE など、リポジトリに定義されたインストールポリシーや認証ポリシーは適用されません。これらの設定は、ワークスペース管理者がプラグインごとに構成します。更新の同期や、既存のプラグインの GitHub 管理への移行を行っても、ワークスペースのポリシーは保持されます。
インストールポリシー で、対象となるロールごとに 利用可能 または インストール済み を選択します。必要なアプリも有効にする必要があり、メンバーには接続先サービスへのアクセス権が必要です。プラグインをインポートしても、アプリへのアクセス権の付与やメンバーのアカウントの接続は行われません。ロール、アプリ、アクションの制御については、プラグインの制御をご覧ください。
既存プラグインの GitHub 管理への移行
既存のプラグインのマーケットプレイスエントリに pluginId を追加します。
{
"name": "team-tools",
"pluginId": "plugin_0123456789abcdef0123456789abcdef",
"source": {
"source": "local",
"path": "./plugins/team-tools"
}
}
管理 > プラグイン から対象のプラグインを開き、URL 内の /admin/plugins/ の後にある ID をコピーします。マーケットプレイスのエントリ内で、name および source と同じ階層に pluginId を配置します。既存のプラグインは同じワークスペース内にある必要があります。
これにより、アップロードしたプラグインなど、GitHub で管理されていないワークスペースプラグインを GitHub 管理に移行できます。プラグインの ID、共有設定、ワークスペースのポリシーは保持されます。以降の更新は GitHub から取り込まれ、アーカイブのアップロードで管理対象のプラグインを置き換えることはできなくなります。すでに別の GitHub ソースで管理されているプラグインは、この方法では管理を引き継げません。
デスクトップ専用プラグイン
mcp.json または .mcp.json で MCP サーバーを宣言しているインポート済みプラグインは、すべて デスクトップ専用 と表示され、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 は、このファイル内での参照名です。プラグインがそのアプリに依存する場合は、required を true に設定します。エントリを追加して、ほかの既存アプリを参照することもできます。
ネイティブプラグインの場合は、.codex-plugin/plugin.json 内の apps を ./.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 アカウントが、対象のリポジトリとすべての参照先リポジトリに引き続きアクセスできることを確認します。その後、最初にマーケットプレイスをインポートした管理者が、ChatGPT で GitHub プラグインを開き、自分のアカウントを再接続してください。マーケットプレイスの同期には、その管理者の GitHub 接続が使用されるためです。
新しい所有者に移管するには、新しいワークスペース管理者が 管理 > プラグイン > 追加 > マーケットプレイスをインポート を開き、 ソース、 パス、 ブランチ、タグ、またはコミット に同じ値を指定して、同じマーケットプレイスをインポートします。以降の同期には、新しい管理者の GitHub 接続が使用されます。
再接続や所有者の変更だけを目的にマーケットプレイスを削除しないでください。削除すると、インポートされたプラグインも削除されます。