2026年7月14日の累積更新を適用したWindows 11では、標準搭載のcurl(Windows inbox curl)が、23H2・24H2・25H2でバージョン8.21.0になります。対象は23H2のKB5099414と、24H2・25H2のKB5101650です。更新後は、PowerShellまたはコマンドプロンプトでcurl.exe --versionを実行すれば確認できます。(Microsoftサポート)
ただし、Windows 11 26H1は例外です。KB5101649でOSビルド28000.2525になりますが、リリースノートにはcurl 8.21.0への更新が記載されていません。同ページから取得できるMicrosoft公式のファイル情報でも、curl.exeのファイルバージョンは8.19.0.0です。したがって、26H1を含むすべてのWindows 11で一律に8.21.0になるわけではありません。(Microsoftサポート)
また、KB5101650は一部のIntel Innovation Platform Framework(Intel IPF)ドライバー搭載Dell製デバイスで一時的に配信されない問題がありました。Microsoftは2026年7月18日の緊急更新KB5121767で修正しています。これはcurl 8.21.0そのものの不具合ではなく、Windows更新の適用可否やシステム動作に関する互換性問題です。(Microsoftサポート)
7月更新後のWindows 11標準curlのバージョン一覧
2026年7月の更新とWindows標準curlの関係を整理すると、次のようになります。
| Windows 11のバージョン | 2026年7月の更新 | 更新後のOSビルド | Windows標準curl | 実務上の扱い |
|---|---|---|---|---|
| 23H2 | KB5099414 | 22631.7376 | 8.21.0 | curl.exe --versionで確認 |
| 24H2 | KB5101650 | 26100.8875 | 8.21.0 | 一部の対象端末はKB5121767で26100.8894 |
| 25H2 | KB5101650 | 26200.8875 | 8.21.0 | 一部の対象端末はKB5121767で26200.8894 |
| 26H1 | KB5101649 | 28000.2525 | 8.19.0.0(公式ファイル情報) | 8.21.0を前提にせず実機確認 |
重要なのは、KB5101650だけを全Windows 11共通の判定条件にしないことです。
23H2ではKB5099414、24H2・25H2ではKB5101650、26H1ではKB5101649が使われます。資産管理ツールやPowerShellで確認する場合も、KB番号だけでなく、Windowsのバージョン、OSビルド、実際のcurl.exeの出力を組み合わせて判定してください。(Microsoftサポート)
KB5121767を適用した場合もcurl 8.21.0は維持される
KB5121767は24H2・25H2向けの累積的な緊急更新です。KB5101650までの改善内容を含んだうえで、Intel IPF関連の修正が追加されています。
そのため、対象端末でKB5121767を適用してOSビルドが26100.8894または26200.8894になった場合も、KB5101650で導入されたcurl 8.21.0は引き継がれます。KB5121767はIntel IPF問題の影響を受ける端末にのみ推奨され、影響を受けていない端末では追加対応は不要です。(Microsoftサポート)
Windows標準curl 8.21.0を確認する手順
Windows 11のバージョンとOSビルドを確認する
最初に、自分のPCが23H2、24H2、25H2、26H1のどれに該当するかを確認します。
簡単な方法は、Windowsキー+Rを押して次のコマンドを実行することです。
winver
「Windowsのバージョン情報」に、バージョンとOSビルドが表示されます。
PowerShellで正確なビルド番号まで取得する場合は、次のコマンドを実行します。
$cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
[pscustomobject]@{
DisplayVersion = $cv.DisplayVersion
OSBuild = "$($cv.CurrentBuild).$($cv.UBR)"
}
たとえば24H2でKB5101650が適用済みなら、次のように表示されます。
DisplayVersion OSBuild
-------------- -------
24H2 26100.8875
OSビルドが表の値より古い場合は、curlの確認前にWindows Updateの適用状況を確認してください。
7月の累積更新を適用する
一般的なPCでは、次の順番で更新します。
- 「設定」を開く
- 「Windows Update」を選択する
- 「更新プログラムのチェック」を実行する
- 表示された2026年7月の累積更新をインストールする
- 再起動を求められた場合は再起動する
- 「更新の履歴」でKB番号を確認する
組織管理端末では、Windows Update for Business、WSUS、Microsoft Intuneなどの更新延期ポリシーにより、更新がすぐに表示されないことがあります。その場合は、端末側で手動インストールを繰り返すのではなく、管理者が設定した展開リングや承認状況を確認します。
curl.exe --versionを実行する
更新後、PowerShellまたはコマンドプロンプトで次のコマンドを実行します。
curl.exe --version
23H2・24H2・25H2では、先頭行に概ね次のように表示されれば確認完了です。
curl 8.21.0 (Windows) libcurl/8.21.0 ...
確認するポイントは、先頭に表示されるcurl 8.21.0です。後半のTLSライブラリや圧縮ライブラリの表示は、curlのビルド構成によって異なることがあります。
26H1のOSビルド28000.2525では、8.21.0が表示されなくても、直ちに更新失敗とは判断できません。KB5101649は8.21.0への更新対象として明記されていないため、実際に表示されたバージョンを記録し、Windowsのバージョンとセットで管理します。
curlではなくcurl.exeを使うべき理由
Windows PowerShell 5.1では、curlという名前がInvoke-WebRequestのエイリアスとして登録されています。そのため、次のように実行すると、curlではなくPowerShellのコマンドが呼び出されることがあります。
curl --version
実際のWindows標準curlを確実に呼び出すには、拡張子を付けて実行します。
curl.exe --version
Microsoftも、Windows PowerShell 5.1で実際のcurlを利用する場合は、curl.exeと明示的に呼び出す方法を案内しています。PowerShell 7以降では通常このエイリアスはありませんが、スクリプトの実行環境を問わず動作させるなら、最初からcurl.exeと記述するのが安全です。(Microsoft Learn)
現在のcurlが何を指しているかは、次のコマンドで確認できます。
Get-Command curl
Get-Command curl.exe -All
Windows PowerShell 5.1でエイリアスが有効な場合、Get-Command curlでは次のような結果が表示されます。
CommandType Name Version Source
----------- ---- ------- ------
Alias curl -> Invoke-WebRequest
一方、Get-Command curl.exe -Allでは、実行可能ファイルとして存在するcurlの一覧を確認できます。
実行しているcurl.exeの場所を確認する
Git for Windows、開発ツール、パッケージマネージャーなどで別のcurlをインストールしていると、Windows標準curlとは異なる実行ファイルが呼び出されることがあります。
PowerShellでは次のコマンドを実行します。
Get-Command curl.exe -All |
Select-Object Name, Source
コマンドプロンプトまたはPowerShellでは、次の方法でも確認できます。
where.exe curl
Windows標準curlは通常、次の場所にあります。
C:\Windows\System32\curl.exe
複数のパスが表示された場合は、先頭にある実行ファイルが通常のコマンド実行で選ばれます。
Windows標準curlを直接確認したい場合は、フルパスで実行します。
& "$env:SystemRoot\System32\curl.exe" --version
たとえば通常のcurl.exe --versionでは8.19.0、フルパスで実行すると8.21.0になる場合、Windows Updateの問題ではなく、PATH上にある別のcurlが優先されています。
バージョン番号だけでなくProtocolsとFeaturesも確認する
curl.exe --versionは、バージョン番号のほかに次の情報も表示します。
Protocols: ...
Features: ...
互換性を判断するときは、8.21.0という数字だけでなく、利用するプロトコルや機能が含まれているかも確認してください。
Windows標準curlはMicrosoftがビルド、管理しているものであり、curlプロジェクトが配布しているWindows向け公式バイナリとは別のビルドです。同じcurl 8.21.0でも、TLSバックエンド、同梱ライブラリ、対応プロトコル、圧縮方式などが同一とは限りません。Windows標準版ではSchannelがTLSバックエンドとして使われます。(Curl)
たとえば、curl 8.21.0のアップストリーム版にHTTP/3関連の変更が含まれていても、Windows標準curlでHTTP/3が使えるとは限りません。次のように、実機の出力を確認する必要があります。
curl.exe --version |
Select-String 'Protocols:|Features:'
スクリプトが特定機能に依存している場合は、次のような判定を避けてください。
# バージョンが8.21.0なのでHTTP/3も使えるはず、という判定はしない
代わりに、実際のProtocols:とFeatures:を展開前後で比較します。
curl 8.21.0の主な変更点
Microsoftは、2026年7月のWindows更新について、curlを8.21.0へ更新し、デバイス保護に役立つセキュリティ改善を含むと説明しています。(Microsoftサポート)
curlプロジェクトの8.21.0は2026年6月24日に公開され、主に次の変更が含まれています。
| 変更内容 | Windows標準curlへの影響を見るポイント |
|---|---|
| 名前付きURLグロブの追加 | {}や[]を使って複数URLを処理するスクリプトをテストする |
| HTTP/3のプロキシCONNECT、MASQUE CONNECT-UDP対応 | Microsoftのビルドで必要機能が有効とは限らない |
| HTTP/2内部処理の変更 | HTTP/2対応ビルドを利用している場合に接続試験を行う |
CURLAUTH_DIGEST_IEサポート終了 | libcurl APIを直接利用するアプリで確認が必要 |
| libsshでSHA-256ホスト公開鍵に対応 | SSH関連機能が組み込まれた別ビルドで影響する |
| Cookie、チャンク転送、コンテンツエンコーディングなどの修正 | 不正または境界的なレスポンスへの挙動が変わる可能性がある |
アップストリームの変更一覧には、名前付きグロブ、HTTP/3プロキシ関連、HTTP/2内部処理、認証API、Cookieやチャンク形式の厳格化を含む多数の修正が記載されています。(Curl)
ただし、アップストリームの変更がすべてWindows標準curlの機能として利用できるわけではありません。Microsoftが有効にしている機能と、利用している外部ライブラリに依存します。
既存スクリプトとの互換性を判断する基準
通常のHTTPS通信で、GET、POST、ファイルダウンロードなどを行うスクリプトは、大きな修正なしで動作する可能性が高いでしょう。ただし、curlのバージョン更新にはセキュリティ修正や入力検証の厳格化も含まれるため、「同じコマンドなら必ず同じ結果になる」とは限りません。
用途別の確認ポイントは次のとおりです。
| 利用方法 | 互換性リスク | 更新後に確認すること |
|---|---|---|
| 一般的なHTTPSのGET・POST | 低 | HTTPステータス、レスポンス本文、終了コード |
| ファイルの自動ダウンロード | 低~中 | ファイルサイズ、ハッシュ値、リダイレクト |
| 社内プロキシ経由の通信 | 中 | プロキシ認証、環境変数、NTLM・Kerberosの動作 |
| プライベートCAやクライアント証明書 | 中 | SchannelとWindows証明書ストアでの認証 |
{}や[]を使うURLグロブ | 中 | 展開されるURL、出力ファイル名、引用符 |
| HTTP/2・HTTP/3や特定圧縮方式への依存 | 高 | Protocols:とFeatures:の実際の出力 |
| SFTP・SCPなどHTTP以外の転送 | 高 | Windows標準版が必要プロトコルを持つか |
--versionの全文を文字列比較 | 高 | バージョン番号だけを抽出するよう修正 |
| 実行ファイルのハッシュ値を固定 | 高 | 更新後の正規ファイルを再登録 |
| ベンダー製品に同梱されたcurl・libcurl | 別管理 | Windows標準curlの更新対象ではない可能性 |
プロキシ環境は実通信で確認する
curlが起動できることと、社内ネットワークで正常に通信できることは別問題です。
次の要素を使っている場合は、テスト端末で実際の接続先にアクセスしてください。
HTTP_PROXY、HTTPS_PROXY、NO_PROXYなどの環境変数- NTLMやKerberosによるプロキシ認証
- プロキシ用の独自CA証明書
- 宛先ごとのプロキシ除外
- 認証情報を保存したcurl設定ファイル
確認時は、インターネット上の一般サイトだけでなく、実際の業務APIやファイル配布サーバーを使うことが重要です。
証明書エラーを--insecureで回避しない
更新後に証明書エラーが発生した場合、すぐに--insecureまたは-kを追加するのは避けてください。
Windows標準curlはSchannelを利用するため、まず次の点を確認します。
- Windowsの信頼されたルート証明機関に社内CAが登録されているか
- プロキシがTLS通信を検査していないか
- サーバー証明書の有効期限やホスト名が正しいか
- グループポリシーで暗号化方式が制限されていないか
- クライアント証明書の指定方法が正しいか
--insecureは証明書検証を無効にするため、一時的な切り分け以外では使用しないのが安全です。
--versionの全文一致判定を避ける
次のような実装は、curl本体以外のライブラリ表示が変わっただけでも失敗します。
if ((curl.exe --version) -eq 'curl 8.21.0 ...') {
# 処理
}
先頭行からバージョン番号だけを抽出して判定します。
$versionLine = curl.exe --version | Select-Object -First 1
if ($versionLine -match '^curl\s+(\d+\.\d+\.\d+)') {
$curlVersion = [version]$Matches[1]
}
$curlVersion
ただし、バージョン番号だけでは機能の有無を判定できません。必要に応じてProtocols:とFeatures:も別に取得してください。
更新前後の情報をまとめて取得するPowerShell
複数端末の確認や、更新前後の比較には次のスクリプトを利用できます。
$cv = Get-ItemProperty `
'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
$curlCommand = Get-Command curl.exe -ErrorAction Stop
$curlOutput = @(& $curlCommand.Source --version)
$versionLine = $curlOutput | Select-Object -First 1
$curlVersion = if ($versionLine -match '^curl\s+(\d+\.\d+\.\d+)') {
$Matches[1]
}
else {
'Unknown'
}
[pscustomobject]@{
ComputerName = $env:COMPUTERNAME
DisplayVersion = $cv.DisplayVersion
OSBuild = "$($cv.CurrentBuild).$($cv.UBR)"
CurlPath = $curlCommand.Source
CurlVersion = $curlVersion
VersionLine = $versionLine
Protocols = (
$curlOutput |
Where-Object { $_ -like 'Protocols:*' }
) -join ' '
Features = (
$curlOutput |
Where-Object { $_ -like 'Features:*' }
) -join ' '
}
この結果をCSVに保存する場合は、最後に次の処理を追加します。
$result = [pscustomobject]@{
ComputerName = $env:COMPUTERNAME
DisplayVersion = $cv.DisplayVersion
OSBuild = "$($cv.CurrentBuild).$($cv.UBR)"
CurlPath = $curlCommand.Source
CurlVersion = $curlVersion
VersionLine = $versionLine
Protocols = (
$curlOutput |
Where-Object { $_ -like 'Protocols:*' }
) -join ' '
Features = (
$curlOutput |
Where-Object { $_ -like 'Features:*' }
) -join ' '
}
$result | Export-Csv `
-Path '.\curl-inventory.csv' `
-NoTypeInformation `
-Encoding UTF8
組織内で確認する場合は、OSビルドとcurlバージョンを同じ台帳に記録すると、26H1の例外や別のcurl実行ファイルを見分けやすくなります。
更新後に行う実通信テスト
バージョン確認だけでは、プロキシ、DNS、TLS、認証、接続先との互換性までは判断できません。
実際の監視用URLやAPIのヘルスチェックURLに置き換えて、次のようなテストを実行します。
curl.exe `
--silent `
--show-error `
--fail `
--output NUL `
--write-out "HTTP %{response_code}`n" `
"https://api.example.com/health"
$LASTEXITCODE
正常であれば、HTTPステータスと終了コード0が表示されます。
HTTP 200
0
--failを指定すると、HTTP 400以上の応答をエラーとして扱えます。--write-outのresponse_codeでは、最後に受信したHTTPステータスコードを取得できます。(Curl)
実際の業務スクリプトでリダイレクト、POST、ヘッダー、認証、ファイルアップロードを使用している場合は、本番と同じオプションでテストしてください。
詳細な通信内容を確認する場合は、次のように--verboseを付けます。
curl.exe --verbose "https://api.example.com/health"
ただし、詳細ログには接続先、ヘッダー、証明書情報などが含まれます。外部へ共有するときは、トークン、Cookie、認証情報、社内ホスト名を削除してください。
更新前に確認しておくべき項目
組織内でWindows標準curlを利用している場合は、累積更新を一斉配信する前に次の項目を確認します。
現在の実行ファイルとバージョンを記録する
最低限、次の情報を保存します。
- Windowsのバージョン
- OSビルド
- curlのバージョン
curl.exeのパスProtocols:の内容Features:の内容- 主要スクリプトの実行結果
これにより、更新後の不具合がcurl本体の変更なのか、Windows更新全体の影響なのかを切り分けやすくなります。
curlを利用しているスクリプトを洗い出す
PowerShellスクリプト、バッチファイル、コマンドファイルからcurlの利用箇所を検索する例です。
Get-ChildItem 'C:\Scripts' `
-Recurse `
-File `
-Include *.ps1,*.cmd,*.bat |
Select-String -Pattern '\bcurl(\.exe)?\b'
特に注意したいのは、次のようなスクリプトです。
curlとだけ記述している- 実行ファイルのパスを指定していない
--versionの全文を比較している- HTTPステータスを確認していない
{}や[]を使ったURLグロブを利用している- 証明書エラーを
--insecureで回避している - 独自のcurl設定ファイルに依存している
段階的に更新する
数百台以上の端末でcurlを利用している場合は、すべての端末へ同時配信せず、次の順番で進めると安全です。
- IT管理者の検証端末
- 開発・テスト環境
- curlを利用する部門の代表端末
- 一般端末
- 重要業務端末
各段階で、バージョン、実行パス、主要APIへの通信、プロキシ認証、証明書認証を確認します。
Windows標準curlを手動で置き換えない
Windows標準のC:\Windows\System32\curl.exeは、WindowsのコンポーネントとしてMicrosoftが管理しています。curl 8.21.0への更新も、Windowsの累積更新を通じて行うのが基本です。curlプロジェクトも、Windowsに同梱されたcurlはMicrosoftが構築、管理する別ビルドであると説明しています。(Curl)
HTTP/2、HTTP/3、SFTPなど、Windows標準版にない機能が必要な場合は、System32のファイルを直接上書きするのではなく、別のディレクトリにcurlをインストールします。
C:\Tools\curl\curl.exe
スクリプトではフルパスを指定すると、Windows UpdateやPATHの順序に左右されにくくなります。
$CurlExe = 'C:\Tools\curl\curl.exe'
& $CurlExe --version
Windows標準版を使うスクリプトも、必要に応じてフルパスを固定できます。
$CurlExe = "$env:SystemRoot\System32\curl.exe"
& $CurlExe --version
どちらを利用する場合も、Windows標準版と外部配布版を同じものとして管理しないことが重要です。
curl 8.21.0にならない場合の確認ポイント
| 症状 | 主な原因 | 対処方法 |
|---|---|---|
curl --versionでPowerShellのエラーになる | Windows PowerShell 5.1のエイリアス | curl.exe --versionを実行する |
| 更新後も古いバージョンが表示される | 別のcurlがPATHで優先されている | Get-Command curl.exe -Allでパスを確認する |
| System32のcurlも古い | 累積更新が未適用、再起動待ち | OSビルドと更新履歴を確認する |
| 26H1で8.19.0が表示される | KB5101649は8.21.0への更新対象として明記されていない | 異常と決めつけずOSビルドとセットで記録する |
| 一部のDell端末にKB5101650が表示されない | Intel IPF関連の互換性問題 | 対象端末ではKB5121767の配信状況を確認する |
| 8.21.0だが必要なプロトコルがない | Microsoft版と別配布版のビルド差 | Protocols:とFeatures:を確認する |
| 更新後にAPI通信だけ失敗する | プロキシ、証明書、認証、応答の厳格化 | 本番と同じオプションで詳細ログを取得する |
Intel IPF関連でKB5101650が一時的に提供されなかった問題は、KB5121767で解決済みです。ただし、KB5121767は影響を受ける端末向けの更新であり、すべての24H2・25H2端末へ手動適用する必要はありません。(Microsoftサポート)
Windows標準curlの確認はOSビルド・パス・機能の3点で行う
2026年7月のWindows 11更新後は、23H2・24H2・25H2のWindows標準curlが8.21.0になります。確認コマンドは次のとおりです。
curl.exe --version
ただし、確実に判断するには、次の順番で確認してください。
winverまたはPowerShellでWindowsのバージョンとOSビルドを確認する- 23H2はKB5099414、24H2・25H2はKB5101650の適用状況を確認する
curl.exe --versionで実際のバージョンを確認するGet-Command curl.exe -Allで実行ファイルの場所を確認するProtocols:とFeatures:で必要機能を確認する- 業務で使用するAPI、プロキシ、証明書認証を実通信でテストする
特に26H1のOSビルド28000.2525は、8.21.0への更新対象として扱わない点に注意が必要です。KB番号やバージョン番号だけで判断せず、実際に呼び出されるcurl.exeと、そのビルドで有効になっている機能を確認することが、互換性トラブルを防ぐ最も確実な方法です。

コメント