GitHub Enterprise ServerでClaude Codeを使う — 管理者設定とネットワーク要件
GitHub Enterprise Server(GHES)にClaude Codeを接続する管理者セットアップ・GitHub App権限・ネットワーク要件・github.comとの機能差をまとめます。
GitHub Enterprise ServerでClaude Codeを使うとは
GitHub Enterprise Server(GHES)は組織が自社管理するGitHubインスタンスで、Team / Enterpriseプランで使えます。Claude組織のOwnerが一度GHESインスタンスを接続すれば、開発者側の追加設定なしにクラウドセッション(Webセッション)と自動コードレビューが使えます。
自動コードレビューの中身はgithub.comと共通で、設定方法はClaude Codeコードレビューにまとめています。GHESで増えるのは、接続の手間と一部の機能差です。
機能ごとの対応は次のとおりです。
| 機能 | GHES対応 | 条件・注意 |
|---|---|---|
| クラウドセッション / Teleport | GHES対応対応 | 条件・注意Ownerの接続後はclaude --cloudと--teleportがそのまま使える |
| コードレビュー / contribution metrics | GHES対応対応 | 条件・注意github.comと同じ設定方法 |
| Claude Security | GHES対応対応 | 条件・注意Enterpriseプラン向けのパブリックベータ |
| プラグインマーケットプレイス | GHES対応対応 | 条件・注意追加する場所によって必要な認証情報が変わる |
| GitHub Actions | GHES対応対応 | 条件・注意/install-github-appはgithub.com専用。ワークフローは手動で作る |
| GitHub MCPサーバー | GHES対応非対応 | 条件・注意GHESインスタンスでは動作しない |
クラウドプロバイダー経由でActionsを回す構成はGitHub Actions Bedrock連携に書いています。
接続の前に決めること — どの経路で接続するか
接続前に確認しておくと手戻りが減る判断が2つあります。
接続方法の選び分け
ガイド付きセットアップ
GitHub Appのマニフェストを自動生成し、GHESへのリダイレクトで1クリック作成します。認証情報はClaude側に自動保存されます。ブラウザからGHESへのリダイレクトが通る環境向けです。
手動セットアップ
Add manuallyでGitHub Appを自分で作り、App ID・クライアントID・各種シークレット・秘密鍵をフォームに入力します。webhook URLの貼り付けも手作業です。
判断の分かれ目は2つあります。1つ目はネットワーク構成で、リダイレクトがブロックされるなら手動一択です。2つ目は権限の持ち主で、接続するのはClaude組織のOwnerまたはPrimary Ownerであり、さらにGHES上でGitHub Appを作成できる権限も同じ人に要ります。両方を満たす人がいなければ、GHES管理者を同席させる運用になります。
管理者セットアップの手順
ガイド付きセットアップの流れです。画面の入口はclaude.ai/admin-settings/claude-codeです。
GHES接続の5ステップ
- 1
GitHub Enterprise Serverのセクションを開く
管理画面でGitHub Enterprise Serverのセクションを探します。
- 2
Connectで接続情報を入力する
表示名(20文字以内)とGHESのホスト名(例:
github.example.com)を入力します。自己署名証明書やプライベートCAなら、任意欄にCA証明書を貼り付けます。 - 3
GitHub Appを作成する
Continue to GitHub Enterpriseで事前入力済みのマニフェストとともにGHESへ移動します。内容を確認してCreate GitHub Appを押すと、認証情報が自動でClaudeに保存されます。
- 4
リポジトリにアプリをインストールする
GHES上のGitHub Appページから、Claudeにアクセスさせたいリポジトリか組織へインストールします。最初は一部だけで構いません。
- 5
機能を有効化する
管理画面に戻り、GHESリポジトリ向けにコードレビューとcontribution metricsを有効化します。Claude Securityも同じ画面にあり、Enterpriseプラン向けのパブリックベータです。
GitHub App権限の中身
マニフェストが設定する権限は、クラウドセッション・コードレビュー・Claude Security・プラグインマーケットプレイス・contribution metricsをまとめてカバーします。
| 権限 | アクセス | 用途 |
|---|---|---|
| Contents | アクセス読み書き | 用途リポジトリのクローンとブランチのプッシュ |
| Pull requests | アクセス読み書き | 用途PR作成とレビューコメント投稿 |
| Issues | アクセス読み書き | 用途Issueメンションへの応答 |
| Checks | アクセス読み書き | 用途コードレビューのcheck run投稿 |
| Actions | アクセス読み取り | 用途auto-fix用のCIステータス確認 |
| Commit statuses | アクセス読み取り | 用途check runでなくcommit statusでCI結果を報告するプロバイダー向け |
| Repository hooks | アクセス読み書き | 用途マーケットプレイスでSync automaticallyを有効にしたときのwebhook作成 |
| Metadata | アクセス読み取り | 用途GitHubが全アプリに要求する必須権限 |
| Organization members | アクセス読み取り | 用途インストール連携時に接続ユーザーの組織ロールを確認(github.com側のClaude GitHub Appに合わせた権限) |
購読するwebhookイベントは次の6種類です。
pull_requestissue_commentpull_request_review_commentpull_request_reviewcheck_runstatus
注意したいのは、GitHubがマニフェストを適用するのはアプリ作成時だけという点です。古いマニフェストで作った既存アプリは、その時点の権限とイベントのままです。不足分はGHES上のアプリ設定に自分で足します。すると各インストールのOwnerに承認が求められ、承認されるまで旧権限で動き続けます。権限追加後に挙動が変わらないときは、承認待ちを疑うのが近道です。
リダイレクトが使えないときの手動セットアップ
ガイド付きフローがネットワーク設定で塞がれている場合は、Add manuallyを使います。GHES上で上の権限とイベントを持つGitHub Appを作り、次の項目をフォームに入力します。
- 表示名、GHESのホスト名とポート
- App ID、クライアントID、クライアントシークレット
- webhookシークレット、秘密鍵
- 任意項目として、カスタムCA証明書とread replicaのホスト名
接続を保存するとClaudeがwebhook URLを生成します。Add configurationを押し、接続のMore optionsメニューからCopy webhook URLを選んで、GHES上のアプリのwebhook設定に貼り付けます。webhookシークレットはフォームに入れたものと同じ値にします。
ネットワーク要件 — どこから到達できれば動くか
セッションの動く場所で、GHESに求められる到達性が変わります。
セッションの実行場所と到達性
Anthropicがホストするセッション
WebセッションとコードレビューはAnthropicのインフラからGHESへ到達できる必要があります。ファイアウォールの内側なら、Anthropicのoutbound IPアドレスを許可リストに加えます。
自社環境のセッション
セルフホストランナーのセッションは自社ネットワークの内側からクローンします。ただしランナーがAnthropic git proxyを使う設定だと、Anthropic側からフェッチするので同じ到達性が必要です。
見落としやすいのが、セッション開始前にAnthropic側で動く処理です。リポジトリ選択画面などがこれにあたり、セッション自体をセルフホスト環境で動かしても、GHESがAnthropicから到達できなければ動きません。SCMコネクタはGHESでは使えないため、社内からしか到達できないGHESホストでは、これらの画面が使えなくなります。
開発者の使い方
Ownerの接続後、開発者側の設定は要りません。Claude Codeは作業ディレクトリのgitリモートからGHESホスト名を自動検出します。
git clone git@github.example.com:platform/api-service.git
cd api-service
claude --cloud "決済webhookハンドラーにリトライ処理を追加して"セッションはGHESからクローンし、変更をブランチにプッシュして返します。進捗は/tasksまたはclaude.ai/codeで見られます。
手元のv2.1.287でclaude --helpを見ると、--cloudは次の形です。
--cloud [description|session_id|url] Create a cloud session with the given
description, or attach to an existing
one by session ID or claude.ai/code URL
--teleport [session] Resume a teleport session, optionally
specify session ID引数は新規セッションの説明文だけではありません。既存セッションのIDやclaude.ai/codeのURLを渡すと、そのセッションに接続し直せます。
Teleportでローカルへ引き継ぐ
claude --teleportはWebセッションをローカルのターミナルに引き継ぎます。同じGHESリポジトリのチェックアウト内にいることを確認してから、ブランチとセッション履歴を取得します。要件の全体はClaude Code teleportの使い方にあります。
プラグインマーケットプレイスをGHESで配る
GHES上のマーケットプレイスは、追加する場所ごとに「誰の認証情報で取得するか」が違います。ここを取り違えると、追加したのにプラグインが見つからない状態になります。
マーケットプレイスの取得経路
CLI・デスクトップ・managed settings
そのマシンのgit認証情報でクローンします。必要なのは、各ユーザーのマシンからGHESへのgitアクセスだけです。claude.aiの接続は経由しません。
claude.aiの組織プラグイン設定
OwnerがGHESを選ぶと、AnthropicのバックエンドがGitHub Appで取得・同期します。ユーザー側の作業は不要ですが、追加するOwnerは自分のGitHub Enterpriseアカウントを接続している必要があります。マーケットプレイスのリポジトリにGitHub Appが入っている必要もあります。
claude.aiのユーザー設定
追加した本人のGitHub Enterprise接続で取得します。接続は個人ごとで、Ownerの接続は他の人の分を肩代わりしません。
クラウドセッションの中でGHES上のマーケットプレイスを入れる方法は、確実ではないとされています。サンドボックスから届くのはセッションのリポジトリと同じインスタンスだけで、同じインスタンスでも失敗しうるためです。CLI、managed settings、claude.aiのいずれかを使います。
GHES上のマーケットプレイスはowner/repoの短縮形が使えません。この形は常にgithub.comへ解決されるので、完全なgit URLを指定します。
claude plugin marketplace add https://github.example.com/platform/claude-plugins.gitSSH URLも使えますが、Claude Codeはgitを非対話で実行するため、known_hostsに無いホストへのSSH接続は拒否されます。HTTPS URLとgit認証情報ヘルパーの組み合わせなら、この問題を避けられます。
v2.1.287のclaude plugin marketplace add --helpには、置き場所を決める--scope <scope>があります。値はuser(既定)・project・localです。モノレポ向けには--sparse <paths...>も使えます。
チーム全員に配るなら、リポジトリの.claude/settings.jsonやmanaged settingsのextraKnownMarketplacesに書く方法もあります。.claude/settings.jsonの場合は、各メンバーがフォルダーを信頼するまで適用されず、それまでプラグインは届きません。
{
"extraKnownMarketplaces": {
"internal-tools": {
"source": {
"source": "git",
"url": "https://github.example.com/platform/claude-plugins.git"
}
}
}
}このキーはどの設定ファイルからでも読まれ、managed settingsなら組織全体に届きます。注意点は、認証情報の無いマシンではマーケットプレイスが登録だけされてインストールされず、プラグインは認証を求められずに「見つからない」と表示されることです。配布前に、対象マシンからGHESをクローンできるか確認します。managed settingsのファイルは配布先のマシンにしか効かないため、MDMなどでの展開も要ります。
追加できるマーケットプレイスを制限している組織もあります。その場合はstrictKnownMarketplacesにhostPatternを足すと、GHESインスタンス上のマーケットプレイスをまとめて許可できます。
{
"strictKnownMarketplaces": [
{
"source": "hostPattern",
"hostPattern": "^github\\.example\\.com$"
}
]
}許可リストを使った運用の詳細はGHESプラグインマーケットプレイスを許可リストで運用するにあります。
github.comとの機能差への対処
/install-github-app: GHESでは使えません。管理者セットアップを使い、GitHub Actionsも欲しい場合はサンプルワークフローを手動で調整します- GitHub MCPサーバー: GHESでは動きません。GHES向けに設定した
ghCLIで代替し、gh auth login --hostname github.example.comで認証すればセッション内でghコマンドが使えます
つまずきを症状から切り分ける
- クラウドセッションがクローンに失敗する: Ownerが対象GHESのセットアップを終えているか、作業中のリポジトリにGitHub Appが入っているかを見ます。Claude設定のホスト名とgitリモートのホスト名が一致しているかも、接続したOwnerに確認してもらいます
Unable to get organization UUIDでセッションが始まらない: claude.aiアカウントでのサインインが前提です。claude --cloudとclaude --teleportはどちらも該当します。APIキー認証や古いアカウント情報だと失敗するので、/loginでTeamまたはEnterprise組織のアカウントに入り直します。APIキー認証のまま--teleportをセッションID無しで実行すると、このメッセージではなくセッション一覧のError loading Claude Code sessionsが出ます- レビューやクラウドセッションがタイムアウトする: ファイアウォールがAnthropicのoutbound IPアドレスからの受信を許可しているかを確認します。セルフホスト環境のセッションなら、ランナー自身のネットワーク経路を見ます
- claude.aiで「Marketplace couldn't be added」と出る: 自分のGitHub Enterpriseアカウントが未接続のときに出る汎用エラーです。ダイアログに接続フローへの案内は出ず、Browseタブの「Connect to GitHub」はgithub.comにサインインするだけで、GHESへのアクセスは付きません。claude.ai/codeのリポジトリ選択画面にGHESインスタンスごとの接続オプションがあるので、そこから接続して追加し直します。Ownerに組織プラグイン設定から追加してもらえば、個人接続は不要になります
/plugin marketplace addがポリシーエラーで止まる: 組織が追加元を制限しています。管理者にGHESホスト名のhostPatternを足してもらいます- claude.aiの画面に
Repository not foundと出る: 非公開リポジトリでGitHubアクセスが必要なときの表示で、上と同じ未接続を示します。Ownerは管理画面のGitHub Enterpriseセクションからも接続できます - managed settingsや
.claude/settings.jsonで配ったのにプラグインが見つからない: そのマシンがGHESをクローンできていません。HTTPS URLとgit認証情報ヘルパーを確認します
まとめ
GHES対応のコストは、Ownerの1回の接続と、到達性・認証情報の経路の見極めに集約されます。接続自体は短い手順ですが、Anthropicホスト型は「GHESがAnthropicから見えるか」、マーケットプレイスは「誰の認証情報で取るか」で成否が決まります。