GitHub Modelsは、GitHub上でOpenAIやMeta、DeepSeekなどのモデルを試し、GitHubのトークンだけでAPIから呼べたサービスです。2024年8月1日の発表から約2年で役目を終え、2026年7月30日に完全終了しました。プレイグラウンド、モデルカタログ、推論API、BYOK(自前のAPIキーの持ち込み)は、既存の利用者も含めて誰も使えません。
この記事では、終了までの経緯と止まった範囲、終了後のエンドポイントが返す応答(2026年11月5日に再測定)、Microsoft FoundryとGitHub Copilotへの移行手順を順に整理します。GitHub Copilotのモデル選択とは別のサービスなので、Copilotの利用には影響しません。Copilotで今選べるモデルと切り替え方はGitHub Copilotのモデル一覧と選び方で整理しています。
まとめ:GitHub Models終了の要点と移行先
- 2026年6月16日に新規受付を停止し、7月30日にプレイグラウンド・モデルカタログ・推論API・BYOKをすべて終了しました。再開の告知はありません。
- 2026年11月5日の測定では、
models.github.aiは HTTP 200 と本文「OK」だけを返しました。ステータスコードだけを見る監視では、止まったことに気付けません。 - アプリから呼ぶ用途の移行先としてGitHubが挙げるのはMicrosoft Foundryです。GitHubのドキュメントが推奨していたAzure AI Inference SDKはFoundry側でも2026年8月26日に退役したため、OpenAI SDKへの書き換えが必要です。
- GitHub Actionsの
actions/ai-inferenceは v3(2026年7月29日)でGitHub Copilot CLI専用になりました。権限はmodels: readからcopilot-requests: writeへ変わり、課金はCopilotのAIクレジットです。 - v3のREADMEの例は今も
@v1のままで、既定のモデルgpt-4.1はCopilotで退役済みです。そのまま写すと、終了済みのAPIか退役済みのモデルを呼びます。
GitHub Modelsの提供終了までの経緯と止まった範囲
2024年8月の発表から2026年7月30日の終了までの年表
GitHub Modelsは2年弱の間に、無料の試用環境から有料のAPIへ育ち、そこで打ち切られました。公式changelogで確認できる節目は次のとおりです。
| 日付 | 出来事 |
|---|---|
| 2024-08-01 | GitHub Modelsを発表(当初は限定公開) |
| 2024-10-29 | パブリックプレビュー。gh models 拡張を公開 |
| 2025-05-15 | REST API(models.github.ai)を公開 |
| 2025-06-24 | 無料枠を超える従量課金とBYOKを追加 |
| 2025-07-17 | 旧Azureエンドポイントを非推奨化 |
| 2025-10-17 | 旧Azureエンドポイントのサポート終了 |
| 2026-06-16 | 提供終了を表明し、新規の組織・Enterpriseの受付を停止 |
| 2026-07-01 | 7月30日の完全終了を告知 |
| 2026-07-16・23 | 予告済みのブラウンアウト(一時停止) |
| 2026-07-29 | actions/ai-inference v3 がCopilot専用に |
| 2026-07-30 | 全利用者を対象に完全終了 |
6月16日に終了の方針は示されたものの、既存の利用者には「今日の時点では何も変わらない」と案内され日程も未定でした。使い続けていたチームほど、7月1日の告知から30日弱で移行を迫られています。終了の理由は、どのchangelogにも書かれていません。
終了した4機能と周辺CLI・Actionsの提供状況
7月30日のchangelog(GitHub Models is now retired)が終了対象として挙げるのは、プレイグラウンド、モデルカタログ、推論API、BYOKの4つです。GitHub DocsのGitHub Modelsは終了を告げる1ページに集約され、クイックスタートやREST APIリファレンスなどの旧URLはそこへ転送されています。
周辺ツールの扱いは分かれました。CLI拡張の github/gh-models は最終版 v0.0.25(2025年8月4日)のままリポジトリがアーカイブされ、更新されません。一方でActions用の actions/ai-inference は、呼び出し先をGitHub Copilot CLIに切り替えて残っています。ただしv3の公開後に入ったのは依存パッケージの更新や脆弱性対応といった保守だけで、2026年11月5日時点で新しいリリースは出ていません。
GitHub Modelsの仕組みと料金(終了前の仕様)
移行作業では、既存コードのどこがGitHub Models固有だったかを知る必要があります。終了前の仕様は次のとおりです。
| 項目 | 終了前の仕様 |
|---|---|
| 推論エンドポイント | https://models.github.ai/inference |
| 組織への課金付け替え | /orgs/{org}/inference/chat/completions |
| モデル一覧 | GET /catalog/models |
| モデルの指定 | openai/gpt-4.1 のような「提供元/モデル」形式 |
| 認証 | GitHubのトークン(Actionsでは models: read) |
| 推奨されたSDK | Azure AI Inference SDK(OpenAI SDK等も可) |
| 料金 | レート制限付きの無料枠+従量課金(2025-06-24〜) |
| BYOK | OpenAIまたはAzure AIのキーを登録 |
APIはOpenAI互換のChat Completions形式でした。注目したいのはSDKの扱いです。終了直前(2026年7月9日版)のGitHub Docsのプロトタイピング手順は、すべてのモデルがAzure AI Inference SDKで使えると説明し、「モデルを簡単に切り替えたいならAzure AI Inference SDKを選ぶべき」と勧めていました。プレイグラウンドのコード例もSDKをプルダウンで選ぶ形式でした。どちらで書いたかで移行の手間が変わるので、移行前に既存コードがOpenAI SDKとAzure AI Inference SDKのどちらを使っているかを確かめてください。
CLIでは gh models list(一覧)、gh models run(推論)、gh models eval(.prompt.yml のテスト実行)、gh models generate(テストケース生成)が使えました。リポジトリに置いた .prompt.yml でプロンプトと評価条件を管理する運用は、このevalとgenerateに支えられていました。
終了後のGitHub Models APIが返す応答(2026年11月5日実測)
終了したAPIを呼ぶと、エラーではなくHTTP 200・Content-Type text/plain・本文「OK」が返ります。/inference/chat/completions、/catalog/models、ルートのいずれも同じで、トークンの有無でも変わりません。2026年9月27日の測定から挙動は変わっていませんでした。
この挙動は、移行漏れを見つけにくくします。OpenAI Python SDK 2.48.0で終了前と同じコードを動かすと、例外は送出されず、応答オブジェクトの代わりに文字列が返ってきます。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://models.github.ai/inference",
api_key=os.environ["GITHUB_TOKEN"],
)
resp = client.chat.completions.create(
model="openai/gpt-4.1-mini",
messages=[{"role": "user", "content": "hello"}],
)
print(type(resp).__name__, repr(resp))
print(resp.choices[0].message.content)
str 'OK\r\n'
Traceback (most recent call last):
File "/private/tmp/ghm2/scripts/old_client.py", line 13, in <module>
print(resp.choices[0].message.content)
AttributeError: 'str' object has no attribute 'choices'
GitHubが推奨していたAzure AI Inference SDK(azure-ai-inference 1.0.0b9)では、落ち方が変わります。ChatCompletionsClient(endpoint="https://models.github.ai/inference", ...) の complete() が、本文「OK」をJSONとして読もうとして失敗します。
Traceback (most recent call last):
File "/private/tmp/ghm2/scripts/old_aii.py", line 10, in <module>
File "/private/tmp/ghm2/aii/venv/lib/python3.9/site-packages/azure/ai/inference/_patch.py", line 743, in complete
File "/private/tmp/ghm2/aii/venv/lib/python3.9/site-packages/azure/core/rest/_http_response_impl.py", line 331, in json
(json/__init__.py と json/decoder.py の3行は省略)
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
どちらのSDKでも、失敗はAPIエラーの例外(openai.APIError や azure.core.exceptions.HttpResponseError)ではなく、AttributeError や JSONDecodeError として表に出ます。SDKのエラーだけを捕まえてリトライやフォールバックをする実装だと、想定外の場所で落ちます。アーカイブ済みの gh models list(v0.0.25)も、2026年9月27日の測定では invalid character 'O' looking for beginning of value を出して終了コード1で止まりました。2025年10月にサポートが切れた旧エンドポイント models.inference.ai.azure.com は、ホスト名自体が解決できません。
残っている依存は、リポジトリを横断して文字列で探すのが確実です。
git grep -n -E 'models\.github\.ai|models\.inference\.ai\.azure\.com|azure[.-]ai[.-]inference|@azure-rest/ai-inference|actions/ai-inference@(v[12]|[0-9a-f]{40})|provider: github-models|models: read|gh models'
URL、Azure AI Inference SDKのimportと依存定義(Pythonの azure.ai.inference と azure-ai-inference、JavaScriptの @azure-rest/ai-inference)、Actionsの旧タグとprovider指定、ワークフローの権限、CLI呼び出しをまとめて拾えます。actions/ai-inference@v3 は対象外になるよう版番号を1と2に絞ってあるので、SHAで固定した行は末尾のコメントで版を確かめてください。
用途別のGitHub Models移行先(Foundry・Copilot・各社API)
GitHubの案内は2本立てです。アプリからモデルを呼ぶならMicrosoft Foundry、GitHub上の自動化ならGitHub Copilot。分かれ目は、モデルを呼ぶのがアプリかGitHub上の自動化かの1点です。
| 終了前の使い方 | 移行先 | 課金 |
|---|---|---|
| アプリからAPI呼び出し | Microsoft Foundry(OpenAI SDK) | Azureの従量課金 |
| Actionsでの要約・分類 | actions/ai-inference v3 | CopilotのAIクレジット |
| Actionsで自前のキーを使う | ai-inference v3+Copilot CLIのBYOK | Azure等の従量課金 |
| BYOKでOpenAIを利用 | OpenAI APIを直接呼ぶ | OpenAIの従量課金 |
| プレイグラウンドでの比較 | 後継なし(自前で比較環境) | 各社API |
本番アプリをCopilot経由に寄せるのは避けてください。CopilotのAIクレジットは開発者の席(シート)か組織に計上される課金で、Copilot CLIもリポジトリを読み書きできるエージェントとして設計されています。エンドユーザー向けサービスの推論基盤には合いません。
アプリのAPI呼び出しをMicrosoft Foundryへ移す差分
Microsoft FoundryのOpenAI v1 APIは、OpenAI SDKの OpenAI() クライアントをそのまま使え、api-version も不要です。OpenAI SDKで書いていたコードの変更点は3つに収まります。
import os
from openai import OpenAI
client = OpenAI(
# 変更1: GitHubのエンドポイント → Foundryリソースの /openai/v1/
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
# 変更2: GitHubのトークン → FoundryのAPIキー
api_key=os.environ["AZURE_OPENAI_API_KEY"],
)
resp = client.chat.completions.create(
# 変更3: "openai/gpt-4.1-mini" → Foundryで作ったデプロイ名
model="my-chat-deployment",
messages=[{"role": "user", "content": "hello"}],
)
print(resp.choices[0].message.content)
つまずきやすいのは3つ目です。GitHub Modelsは「提供元/モデル名」で指定しましたが、Foundryの model に渡すのはデプロイ時に付けた名前です。openai/ を外しただけのモデル名を渡しても、デプロイ名と一致しなければ呼べません。DeepSeekなどOpenAI以外のモデルも、同じv1のルートでデプロイ名を指定して呼ぶ形です。キーを置かずに済ませるなら、Entra IDのトークン(スコープ https://ai.azure.com/.default)も使えます。
モデル選びでは退役予定も確かめてください。GitHub Models時代に定番だった gpt-4.1 と gpt-4.1-mini(2025-04-14版)は、Foundryの退役予定表(2026年9月21日更新)で非推奨(Deprecated)扱いになっており、退役日は2027年4月14日です。この退役日はベースモデルの推論向けで、ファインチューニング済みモデルのデプロイ退役日は2027年10月14日です。Microsoftのモデル退役の説明では、Deprecatedのモデルは既存の利用者だけがデプロイを作成・管理でき、新しい利用者はアクセスできません。新しく使い始めるなら、提供中の後継モデルを選んでください。なお退役日を過ぎたFoundryのモデルへの推論は 410 Gone を返すと説明されており、HTTP 200を返し続けるGitHub Modelsとは止まり方が違います。リソースの作り方と料金はMicrosoft Foundryの機能と料金の仕組みで整理しています。
BYOKでOpenAIのキーを登録していた場合は、GitHubを経由する理由がもう無いので、base_url を消してOpenAI APIを直接呼ぶのが最短です。モデル名は openai/ を外した形になります。推論基盤の選定や移行の設計から相談したい場合は、当社の生成AI導入支援でも承っています。
Azure AI Inference SDKで書いていたコードの移し方
GitHub Docsの勧めに従って azure-ai-inference で書いたコードは、エンドポイントを差し替えるだけでは移せません。MicrosoftはAzure AI Inferenceのベータ版SDKを2026年8月26日に退役させ、一般提供のOpenAI v1 APIと安定版のOpenAI SDKへ切り替えるよう案内しています(Microsoft Learnのサポート言語ページ)。Microsoftが退役と移行を案内しているSDKなので、今後の運用に向けてOpenAI SDKへ書き換えます。
| Azure AI Inference SDK | OpenAI SDK(Foundry v1) |
|---|---|
ChatCompletionsClient(endpoint, credential) |
OpenAI(base_url, api_key) |
credential=AzureKeyCredential(キー) |
api_key=キー(base_urlは …/openai/v1/) |
client.complete(model=..., messages=[...]) |
client.chat.completions.create(model=..., messages=[...]) |
SystemMessage("...")・UserMessage("...") |
{"role": "system", "content": "..."} などの辞書 |
model="openai/gpt-4.1-mini" |
model="デプロイ名" |
pip install azure-ai-inference |
pip install openai |
Pythonでは応答の読み方(resp.choices[0].message.content)が両者で同じなので、後続の処理はほぼそのまま残せます。JavaScriptの @azure-rest/ai-inference は path("/chat/completions").post() の形でREST呼び出しを組み立てる作りのため、OpenAI SDKの client.chat.completions.create() へ置き換える範囲がPythonより広くなります。
GitHub Actionsのワークフローをactions/ai-inference v3へ移す手順
v2までは models: read 権限の GITHUB_TOKEN でGitHub Modelsを呼ぶのが既定でした(v2.1.0で provider: copilot を選べるようになり、既定値は github-models のまま)。v3は provider が copilot だけになり、ランナー上のGitHub Copilot CLIを copilot -p <prompt> -s --no-ask-user で起動します。GitHubホストランナーにCopilot CLIは入っていないので、インストールの手順が1つ増えます。
name: summarize
on: workflow_dispatch
permissions:
contents: read
copilot-requests: write # 旧: models: read
jobs:
summarize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
- run: npm install -g @github/copilot
- id: ai
uses: actions/ai-inference@v3 # v1・v2は終了済みのAPIを呼ぶ
with:
prompt-file: ./.github/prompts/summary.prompt.yml
model: auto # 既定の gpt-4.1 はCopilotで退役済み
env:
GITHUB_TOKEN: ${{ github.token }}
- run: cat "${{ steps.ai.outputs.response-file }}"
上の例のように組み込みトークンで認証する場合は、env の GITHUB_TOKEN を省略しないでください。v3の token 入力は既定で github.token を受け取りますが、v3のソース(src/main.ts と src/copilot.ts)を読むとログのマスクに使うだけで、CLIへは渡していません。CLIは自分の環境変数(COPILOT_GITHUB_TOKEN・GH_TOKEN・GITHUB_TOKEN の順)から認証情報を読みます。
認証は2通りあり、課金先が違います。GITHUB_TOKEN を使うと、組織のリポジトリでは使用量が組織へ直接計上され、個人のCopilot予算は適用されません。このとき使う組織のポリシー「Allow use of Copilot CLI billed to the organization」は、Copilot CLIを有効にしている組織では既定で有効です。個人所有のリポジトリではリポジトリ所有者の席に計上されます。PAT(個人アクセストークン)を使うと、作成したユーザーの席からAIクレジットが引かれ、そのユーザーのライセンスで使えるモデルが決まります。v3のREADMEの例は COPILOT_GITHUB_TOKEN にPATを渡すこちらの形なので、組織のリポジトリで写すと課金先が個人になります。GitHub Docs(Copilot CLI in GitHub Actions)は組織のリポジトリでの自動化には GITHUB_TOKEN を推奨しています。
書き換えで漏れやすい点が4つあります。
- v3のREADMEの使用例は
uses: actions/ai-inference@v1のままです。v1とv2のタグは今もendpointの既定がhttps://models.github.ai/inferenceなので、例を写すと終了済みのAPIを呼びます。 modelの既定はgpt-4.1ですが、GPT-4.1は2026年6月1日にCopilotから退役しています。説明文に例として載るclaude-sonnet-4.5も2026年9月1日に退役しました。モデル名を固定すると退役のたびにワークフローが止まるので、Copilot CLIのautoか空文字(CLIの既定)に任せるのが無難です。さらに.prompt.ymlにmodelがあると入力のmodelより優先されるため、GitHub Models時代のopenai/gpt-4oのような値が残っていると、そのままCLIの--modelに渡ります。- v3は
.prompt.ymlのmessagesを1本のテキストにまとめてcopilot -pに渡します(systemとuserは本文をそのまま空行で連結し、assistantだけ「ASSISTANT:」の見出しを付けます)。modelParameters(temperature等)、responseFormat、jsonSchemaは型定義に残っていますが、CLIの引数には渡されません。JSONスキーマで出力形式を固定していたワークフローは、後続のパース処理を見直す必要があります。 - CLIのツールは既定で使えません。v3は
--allow-toolを1つも付けずにCLIを起動するため、シェル実行やファイル書き込みは拒否されます。要約の前にgit diffを読ませたいといった場合だけ、copilot-allow-tools: "shell(git diff:*)"のように必要な範囲を足します。
GitHub Docsは、ワークフローから copilot を直接呼ぶより、ガードレールを備えたGitHub Agentic Workflows(gh-aw)を勧めています。直接呼ぶとCLIがワークフロー環境へ広くアクセスできるため、フォークからのプルリクエストで起動するワークフローは特に危険だと警告しています。gh-awの導入はGitHub Agentic Workflowsの導入手順とsafe-outputs設計、CLI自体の動作モードと料金はGitHub Copilot CLIの解説、GITHUB_TOKEN の権限設計はGitHub Actionsのpermissionsの設計にまとめています。
Copilot CLIのBYOKによるFoundryへの直接接続
GitHub ModelsのBYOKのように、自前のAzureやOpenAIのキーで推論させたい場合は、Copilot CLIのBYOK(カスタムモデルプロバイダー)が代わりになります。copilot help providers の説明では、環境変数 COPILOT_PROVIDER_BASE_URL を設定するとCopilotのモデルではなく指定先へ送り、GitHubの認証も不要です。ai-inference v3はCLIを子プロセスとして環境変数ごと起動するので、ステップの env に書けば効きます。
- id: ai
uses: actions/ai-inference@v3
with:
prompt-file: ./.github/prompts/summary.prompt.yml
model: my-chat-deployment # Foundryのデプロイ名。空にすると止まる
env:
COPILOT_PROVIDER_BASE_URL: https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1
COPILOT_PROVIDER_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
# GPT-5系のデプロイなら COPILOT_PROVIDER_WIRE_API: responses も足す
手元でCopilot CLI 1.0.105を使い、OpenAI互換のモックサーバーへ向けて確かめた結果は次のとおりです。GitHubのトークンを環境から外した状態でも、POST /v1/chat/completions がモックへ届き、応答がそのまま標準出力に出ました。--model に渡した名前はそのまま送信先の model になります。モデルを指定しないと BYOK providers require an explicit model. を出して終了コード1で止まるので、ai-inferenceの model を空にする書き方はBYOKでは使えません。既定の gpt-4.1 のまま残すと、その名前のデプロイを探しに行きます。
この組み合わせはGitHub DocsのActions向け手順には載っていない構成です。BYOKでもCLIのツール制御は同じなので、copilot-allow-tools は必要な範囲に絞ってください。
プレイグラウンドと.prompt.ymlでの評価の置き換え
同じプロンプトを2つのモデルに投げて並べるプレイグラウンドの比較機能と、gh models eval による評価には、GitHub側に後継がありません。ai-inference v3は推論を1回実行するアクションで、testData や evaluators を読む処理を持たないためです。
評価を続けるなら、各社APIへ同じ入力を流して結果とコストを記録する仕組みを自前で持つのが現実的です。.prompt.yml の messages と testData はYAMLなので、その資産は読み替えて流用できます。手順は同じ入力を各社モデルへ流して品質とコストを測る方法で解説しています。
GitHub CopilotのモデルとGitHub Modelsの違い
GitHub CopilotのモデルとGitHub Modelsは名前が似ていますが、別のサービスです。GitHub Docsは、GitHub ModelsはGitHub Copilotとは別のサービスで、Copilotのサービスとは無関係だったと明記しています。GitHub Modelsの終了で、Copilot Chatやエージェントのモデル選択が消えたわけではありません。
ただしCopilot側では、別の理由でモデルが毎月のように入れ替わっています。2026年10月19日には、GPT-5.5・GPT-5.4(代替はGPT-6.1 Sol)、GPT-5.4 mini・GPT-5 mini(代替はGPT-6 Luna)、Gemini 3.7 Flash(代替はGemini 3.8 Flash)、Grok 4.5(代替はGrok 4.7)がほとんどの利用画面で退役しました。6月1日に退役したGPT-4.1の代替としてGitHubの退役履歴が示すのも、特定の版ではなく「最新のGPTモデル」です。Copilot Enterpriseでは、代替モデルを管理者がモデルポリシーで有効にしないと選択肢に出ないことがあります。ワークフローやエディター設定でモデル名を固定している場合は、Copilotで今選べるモデルの一覧(GitHub Copilotのモデル一覧と選び方)と突き合わせてください。
GitHub Modelsに関するよくある質問
GitHub Modelsは今も使えますか?
使えません。2026年7月30日にプレイグラウンド、モデルカタログ、推論API、BYOKが既存の利用者も含めて終了しました。新規受付は6月16日に止まっており、再開の告知はありません。
GitHub Modelsは無料で使えましたか?
終了前は、レート制限付きの無料枠があり、2025年6月24日からは無料枠を超える分を従量課金で使えました。終了した今は無料枠も有料枠もありません。GitHub上の自動化で同じ用途を続けるなら、CopilotのAIクレジットを使うactions/ai-inference v3が受け皿です。
GitHub Models APIの代わりに何を使えばよいですか?
アプリから呼ぶならMicrosoft Foundryか各社のAPIです。OpenAI SDKで書いていれば、base_url、APIキー、モデル指定が主な変更箇所です。ただし、移行先モデルが対応するAPIとパラメーターを確認し、動作を検証してください。Azure AI Inference SDKで書いていた場合は、そのSDKが2026年8月26日に退役しているため、OpenAI SDKへの書き換えが必要です。Foundryではモデル名ではなくデプロイ名を指定します。
GitHub ModelsのAPIキーやトークンはどうなりますか?
GitHub Modelsには専用のAPIキーは無く、GitHubのトークンで認証していました。トークン自体は他のGitHub APIで引き続き使えますが、models.github.ai を呼んでも本文「OK」が返るだけです。BYOKで登録したOpenAIやAzureのキーは、それぞれの提供元で直接使えます。
gh modelsコマンドはまだ動きますか?
動きません。拡張の github/gh-models はアーカイブ済みで、最終版 v0.0.25 の gh models list は invalid character 'O' のエラーで終了コード1を返します。不要なら gh extension remove models で削除できます。
GitHub Copilotで使えるモデルにも影響はありますか?
GitHub Modelsの終了による影響はありません。GitHub DocsはCopilotとは無関係の別サービスだったと説明しています。ただしCopilotでは2026年6月1日にGPT-4.1が、9月1日にClaude Sonnet 4.5などが、10月19日にGPT-5.5などが退役しました。モデル名を固定しているワークフローは確認が必要です。