GHESプラグインマーケットプレイスを許可リストで運用する — 管理者向け設定ガイド
GitHub Enterprise Server上のプラグインマーケットプレイスを、事前登録とhostPatternの許可リストで組織展開する設定方法をまとめます。
GHESプラグインマーケットプレイスの許可リスト運用でできること
GitHub Enterprise Server(GHES)上に社内向けプラグインマーケットプレイスをホストしている組織は、managed-settings.json(またはMDMの同等ポリシー)に1行のhostPattern設定を足すだけで、GHESインスタンス上の全リポジトリをマーケットプレイスとして許可できます。個々のリポジトリを1件ずつ許可リストへ列挙する必要はありません。構造自体はgithub.comホストのマーケットプレイスと同じですが、GHESではインストール方法と必要な認証情報が使う面(surface)ごとに変わるため、CLIだけを想定した設計だとclaude.aiやWebセッションで失敗します。
managed settingsでマーケットプレイスを制限している組織がこの許可リストを設定していないと、開発者が/plugin marketplace addを実行してもポリシーエラーで弾かれます。逆に言えば、社内マーケットプレイスを配布したいなら許可リストの設定は前提条件です。
面ごとに何が必要か
同じGHESマーケットプレイスでも、どこから追加するかでインストールの仕組みと開発者に必要なものが変わります。
| 面 | インストールの仕組み | 各ユーザーに必要なもの |
|---|---|---|
| Claude Code CLI / デスクトップ | インストールの仕組みマシンの既存git認証情報でリポジトリをクローン | 各ユーザーに必要なもの自分のマシンからGHESホストへのgitアクセス |
managed settings(extraKnownMarketplaces) | インストールの仕組みClaude Codeがエントリを登録し、マシンの既存git認証情報でクローン | 各ユーザーに必要なもの同上 |
| claude.aiの組織プラグイン設定 | インストールの仕組みOwnerが選んだGHESインスタンスを、admin setupで作成したGitHub App経由でAnthropicのバックエンドが同期 | 各ユーザーに必要なもの追加した時点でのOwner自身のGitHub Enterprise接続のみ。以降のユーザーは何も要らない |
| claude.aiのユーザー設定 | インストールの仕組み登録したユーザー自身のGitHub Enterprise接続経由でAnthropicのバックエンドが取得 | 各ユーザーに必要なものユーザー自身のGitHub Enterprise接続 |
| Claude Code on the web | インストールの仕組みクラウドセッションのサンドボックス内でクローン | 各ユーザーに必要なもの信頼できない: セッションのリポジトリと別ホストのマーケットプレイスには到達できず、同一インスタンスでも失敗することがある |
Claude Code on the webでのマーケットプレイス追加は避けます。セッションのgit認証情報はそのセッションのリポジトリに限定されており、別ホストはもちろん同一GHESインスタンスでも安定してインストールできません。CLI・managed settings・claude.aiのいずれかを使います。
GHESマーケットプレイスを追加する
owner/repoの省略記法は常にgithub.comを指すため、GHESホストのマーケットプレイスはフルのgit URLで指定します。
/plugin marketplace add https://github.example.com/platform/claude-plugins.gitSSH URLもマシンが対象GHESホストを信頼済みなら使えますが、Claude Codeはgitを非対話で実行するためknown_hostsに無いホストへのSSH接続を拒否します。git credential helperと組み合わせたHTTPS URLならknown_hostsの登録が不要になり、運用が安定します。
managed settingsで組織展開する
以下はmanaged-settings.json(または各OSのMDMポリシー)に書く2つのキーに絞った説明です。managed settingsの階層構造や他の統制項目全般はClaude Code組織管理ガイドにまとめています。
事前登録(pre-register)で自動配布する
extraKnownMarketplacesは、開発者が手動で追加しなくてもマーケットプレイスを使える状態にする設定です。リポジトリの.claude/settings.jsonを含む任意の設定ファイルで有効ですが、managed settingsで配れば組織全体に届きます。
{
"extraKnownMarketplaces": {
"internal-tools": {
"source": {
"source": "git",
"url": "https://github.example.com/platform/claude-plugins.git"
}
}
}
}この経路はclaude.aiを経由しないため、per-userのGitHub Enterprise接続は不要です。Claude Codeがエントリを登録し、マシンの既存git認証情報でリポジトリをクローンします。展開を成功させるための4点です。
- フルのgit URLを使う。
owner/repoはgithub.comにしか解決できません - HTTPS URLを優先する。SSHクローンはGHESホストキーを信頼していないマシンで失敗します
- 各マシンがGHESホストからクローンできるか確認する。認証情報が無いマシンではマーケットプレイスは登録されてもインストールされず、プラグインは「見つからない」と表示されます(認証情報の入力を促す動きにはなりません)
- 設定が各マシンに届いているか確認する。managed settingsファイルはデバイス管理システム等で配布した先のマシンにしか効きません
hostPatternで許可リストを組む
managed settingsでマーケットプレイスの追加元を制限している組織は、hostPatternソースタイプを使うと、GHESインスタンスのリポジトリを1件ずつ列挙せずにまとめて許可できます。
{
"strictKnownMarketplaces": [
{
"source": "hostPattern",
"hostPattern": "^github\\.example\\.com$"
}
]
}hostPatternは正規表現で、対象ホストを厳密に指定します。GHESインスタンスが複数ある場合はパターン側で複数ホストにマッチさせるか、エントリを追加します。strictKnownMarketplacesはallowedMarketplacesという別名でも書けます(Claude Code v2.1.232以降)。
hostPatternがマッチしないgit URLの形式に注意
hostPatternはマーケットプレイスのソースからホスト名を取り出して正規表現と照合しますが、ホストを取り出せる形式は限られています。
- スキーム付きURL(
https://github.example.com/...やssh://)は、URL中のホスト名がそのまま対象になります - スキームなしのSSHアドレス(
git@github.example.com:platform/claude-plugins.gitのようなuser@host:path形式)は、@と:の間のホストが対象になります - それ以外のスキームなし形式にはホストが無く、
hostPatternエントリは一切マッチしません
fileソースとdirectoryソースにはそもそもホストが無いため、hostPatternでは絶対に許可できません(ローカルパスを許可したい場合はpathPatternを使います)。前段で「HTTPS URLを優先する」と案内したのはknown_hosts回避のためだけでなく、hostPatternによる許可リストが正しく機能する形式でもあるからです。
strictKnownMarketplacesだけでは自動登録されない
strictKnownMarketplacesは追加を許可するかどうかだけを判定する関門で、何かを登録するわけではありません。これだけを設定した場合、許可されたGHESマーケットプレイスであっても、開発者が/plugin marketplace addを自分で実行するまでは使えるようになりません。自動登録されるのは公式Anthropicマーケットプレイスだけで、それも許可リストが許可している場合に限られます。
GHESマーケットプレイスを「許可するだけでなく全員に自動配布する」には、同じmanaged-settings.jsonにextraKnownMarketplacesも設定します。
{
"strictKnownMarketplaces": [
{
"source": "hostPattern",
"hostPattern": "^github\\.example\\.com$"
}
],
"extraKnownMarketplaces": {
"internal-tools": {
"source": {
"source": "git",
"url": "https://github.example.com/platform/claude-plugins.git"
}
}
}
}strictKnownMarketplacesが制限、extraKnownMarketplacesが配布という役割分担です。前者は上書きできない最上位の設定である一方、後者はより優先度の高い設定ファイルで上書きされる余地があります。
使い分け早見表
| 目的 | 使う設定 | 向くケース |
|---|---|---|
| 開発者が自分でマーケットプレイスを選んで追加できるようにする | 使う設定hostPatternの許可リストのみ | 向くケース社内に複数のマーケットプレイスがあり、開発者に選択を任せたい |
| 全員に同じマーケットプレイスを配布する | 使う設定extraKnownMarketplaces | 向くケース標準ツール一式を組織全体に強制したい |
| 個人のGitHub Enterprise接続なしでclaude.ai上でも使えるようにする | 使う設定組織プラグイン設定でOwnerが追加 | 向くケースclaude.aiのブラウザ体験でもマーケットプレイスを見せたい |
extraKnownMarketplacesとhostPatternの許可リストは併用できます。全員に配る標準マーケットプレイスはextraKnownMarketplacesで強制し、それ以外の社内マーケットプレイスはhostPatternで許可だけしておいて開発者の任意追加に任せる、という組み合わせが実務では扱いやすい構成です。
よくあるつまずき
/plugin marketplace addがポリシーエラーで弾かれる: 組織がマーケットプレイスの追加元を制限しています。管理者にhostPatternエントリの追加を依頼します- claude.aiでの追加が「Marketplaceが追加できませんでした」と失敗する: たいていは自分自身のGitHub Enterprise接続が済んでいないことが原因です。組織のGHESインスタンス自体は設定済みで他のユーザーが使えていても、この接続は個人単位です。「Connect to GitHub」ボタンはgithub.comへのサインインなので、GHESアクセスは別に接続します
- マーケットプレイスは登録されるがプラグインが「見つからない」と出る: そのマシンにGHESホストへのgit認証情報が無い状態です。認証情報を設定するか、標準のgit credential helperを組織全体に配ります
- 許可リストを設定したら
~/.claude/skills/のスキルが読み込まれなくなった:strictKnownMarketplacesは空配列を含むどんな許可リストでも、~/.claude/skills/からの@skills-dirプラグインの読み込みを止めます。読み込みを維持したい場合は、許可リストに{ "source": "skills-dir" }エントリを追加します
まとめ
GHES上のプラグインマーケットプレイスは、hostPatternでホスト単位の許可リストを組んだうえで、必要に応じてextraKnownMarketplacesで標準マーケットプレイスを強制配布すれば組織展開できます。ポイントは「面によってインストールの仕組みと必要な認証情報が違う」ことで、CLIとmanaged settingsはマシンのgit認証情報で完結する一方、claude.aiのユーザー設定は個々人のGitHub Enterprise接続を必要とします。この違いを踏まえて設計すれば、GHESマーケットプレイスの追加に伴う問い合わせの大半は避けられます。マーケットプレイス自体の作り方はClaude Codeプラグイン完全ガイド、GHES接続の管理者セットアップはGitHub Enterprise ServerでClaude Codeを使う、MCPサーバーの組織的な許可リスト運用はManaged MCPで許可リスト・拒否リストを組織管理するで扱っています。
よくある質問
GitLabの社内サーバーでも同じhostPattern設定が使えますか
使えます。hostPatternは特定のホストへの正規表現マッチなので、GitHub Enterprise Serverに限らず、社内でホストしているGitLabサーバー等にも同じ仕組みで許可リストを組めます。GHES固有の機能ではなく、Claude Codeのmanaged settings全般の仕組みです。
空の許可リストを設定するとどうなりますか
strictKnownMarketplacesに空配列を設定すると、公式Anthropicマーケットプレイスを含むすべてのマーケットプレイスソースがブロックされる完全ロックダウンになります。何も指定しない(キー自体を書かない)場合は、誰でも任意のマーケットプレイスを追加できる既定の状態のままです。
ポリシーを設定する前に追加済みのマーケットプレイスはどうなりますか
strictKnownMarketplacesは、マーケットプレイスの追加時だけでなく、プラグインのインストール・更新・refresh・自動更新のたびに、ネットワークやファイルシステムの操作より前に評価されます。ポリシー設定前に追加されたマーケットプレイスでも、ソースが許可リストに一致しなくなった時点でプラグインの取得ができなくなります。