始める前に
ワークスペース管理者は、GitHub からプラグインのマーケットプレイスをインポートし、リポジトリから更新を取り込んでプラグインを最新の状態に保てます。マーケットプレイスは、インポートするプラグインを一覧にした JSON カタログです。
マーケットプレイスのリポジトリと、そのリポジトリが参照する他のすべてのリポジトリを読み取れる 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 接続が使用されます。
再接続や所有者の変更だけが目的の場合、マーケットプレイスを削除しないでください。削除すると、そのマーケットプレイスからインポートしたプラグインも削除されます。