Windows 11標準curl 8.21.0の確認方法と互換性|7月更新のKB・注意点

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実務上の扱い
23H2KB509941422631.73768.21.0curl.exe --versionで確認
24H2KB510165026100.88758.21.0一部の対象端末はKB5121767で26100.8894
25H2KB510165026200.88758.21.0一部の対象端末はKB5121767で26200.8894
26H1KB510164928000.25258.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では、次の順番で更新します。

  1. 「設定」を開く
  2. 「Windows Update」を選択する
  3. 「更新プログラムのチェック」を実行する
  4. 表示された2026年7月の累積更新をインストールする
  5. 再起動を求められた場合は再起動する
  6. 「更新の履歴」で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通信で、GETPOST、ファイルダウンロードなどを行うスクリプトは、大きな修正なしで動作する可能性が高いでしょう。ただし、curlのバージョン更新にはセキュリティ修正や入力検証の厳格化も含まれるため、「同じコマンドなら必ず同じ結果になる」とは限りません。

用途別の確認ポイントは次のとおりです。

利用方法互換性リスク更新後に確認すること
一般的なHTTPSのGET・POSTHTTPステータス、レスポンス本文、終了コード
ファイルの自動ダウンロード低~中ファイルサイズ、ハッシュ値、リダイレクト
社内プロキシ経由の通信プロキシ認証、環境変数、NTLM・Kerberosの動作
プライベートCAやクライアント証明書SchannelとWindows証明書ストアでの認証
{}[]を使うURLグロブ展開されるURL、出力ファイル名、引用符
HTTP/2・HTTP/3や特定圧縮方式への依存Protocols:Features:の実際の出力
SFTP・SCPなどHTTP以外の転送Windows標準版が必要プロトコルを持つか
--versionの全文を文字列比較バージョン番号だけを抽出するよう修正
実行ファイルのハッシュ値を固定更新後の正規ファイルを再登録
ベンダー製品に同梱されたcurl・libcurl別管理Windows標準curlの更新対象ではない可能性

プロキシ環境は実通信で確認する

curlが起動できることと、社内ネットワークで正常に通信できることは別問題です。

次の要素を使っている場合は、テスト端末で実際の接続先にアクセスしてください。

  • HTTP_PROXYHTTPS_PROXYNO_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-outresponse_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を利用している場合は、すべての端末へ同時配信せず、次の順番で進めると安全です。

  1. IT管理者の検証端末
  2. 開発・テスト環境
  3. curlを利用する部門の代表端末
  4. 一般端末
  5. 重要業務端末

各段階で、バージョン、実行パス、主要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

ただし、確実に判断するには、次の順番で確認してください。

  1. winverまたはPowerShellでWindowsのバージョンとOSビルドを確認する
  2. 23H2はKB5099414、24H2・25H2はKB5101650の適用状況を確認する
  3. curl.exe --versionで実際のバージョンを確認する
  4. Get-Command curl.exe -Allで実行ファイルの場所を確認する
  5. Protocols:Features:で必要機能を確認する
  6. 業務で使用するAPI、プロキシ、証明書認証を実通信でテストする

特に26H1のOSビルド28000.2525は、8.21.0への更新対象として扱わない点に注意が必要です。KB番号やバージョン番号だけで判断せず、実際に呼び出されるcurl.exeと、そのビルドで有効になっている機能を確認することが、互換性トラブルを防ぐ最も確実な方法です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次