Windowsで azd extension install を実行した際、拡張機能の実行ファイルを置き換える処理で「Access is denied」が断続的に発生することがあります。
この症状は、Azureのアクセス権やPowerShellの管理者権限ではなく、Windowsが終了直後の実行ファイルを一時的にロックし続けることが原因となる既知の問題です。修正はAzure Developer CLI 1.28.1に取り込まれており、2026年7月のロールアップに含まれる1.29.0へ更新すれば解消できます。(Microsoft for Developers)
まず azd version で現在のバージョンを確認し、1.28.0以前を使用している場合はAzure Developer CLIを更新してください。
Windowsでazd extension installがAccess is deniedになる問題は修正済み
今回修正された問題の概要は次のとおりです。
| 項目 | 内容 |
|---|---|
| 対象 | Windows上で動作するAzure Developer CLI |
| 発生コマンド | azd extension install など、拡張実行ファイルを置換する処理 |
| 主なエラー | failed to remove extension: ... Access is denied |
| 発生頻度 | 常にではなく断続的 |
| 原因 | 終了した拡張実行ファイルにWindowsの一時的なロックが残る |
| 修正内容 | 一時的な共有違反やアクセス違反が発生した場合にファイル操作を再試行する |
| 修正版 | Azure Developer CLI 1.28.1以降 |
| 推奨バージョン | 2026年7月ロールアップの1.29.0以降 |
PR #9161では、Windowsが拡張機能のプロセス終了後も実行ファイルのロックを短時間保持することがあると説明されています。従来の azd は、その間にファイルを削除または置換しようとすると、処理を即座に失敗させていました。
修正版では、Windows固有の一時的な共有違反やアクセス違反をファイルシステム処理の共通部分で検出し、再試行する仕組みが追加されています。そのため、特定の拡張機能だけを対象にした修正ではなく、拡張実行ファイルを置換する処理全体に効果があります。(GitHub)
最初にazdのバージョンを確認する
PowerShellまたはコマンドプロンプトを開き、次のコマンドを実行します。
azd version
出力例は次のようになります。
azd version 1.29.0 (commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
確認結果に応じて、次のように判断してください。
| 確認結果 | 対応 |
|---|---|
| 1.28.0以前 | 修正が含まれていないため更新する |
| 1.28.1 | PR #9161の修正を含む |
| 1.29.0以降 | 既知問題の修正を含む状態 |
azd が見つからない | Azure Developer CLIのインストールまたはPATHを確認する |
| 更新したのに古いバージョンが表示される | 複数の azd.exe がインストールされていないか確認する |
PR #9161の修正は2026年7月22日付の1.28.1リリースノートに明記されています。その後、2026年7月29日に1.29.0が公開され、翌7月30日の公式ロールアップ記事でWindowsの「Access is denied」修正が案内されました。(GitHub)
Azure Developer CLIを修正版へ更新する
azd updateで更新する
最も簡単なのは、Azure Developer CLIに組み込まれている更新コマンドを使う方法です。
azd update
azd update は、最初にどの方法で azd がインストールされたかを検出し、winget、Chocolatey、MSI、インストールスクリプトなどの適切な更新処理へ引き渡します。
ただし、azd update は現時点でベータ機能です。組織でパッケージ管理方法が決められている場合は、インストール時と同じ方法で更新したほうが管理しやすくなります。(Microsoft Learn)
wingetでインストールした場合
Windowsパッケージマネージャーの winget を利用している場合は、次のコマンドで更新できます。
winget upgrade Microsoft.Azd
更新候補が表示されない場合は、まず現在の登録状態を確認します。
winget list Microsoft.Azd
Chocolateyでインストールした場合
Chocolateyを利用している場合は、次のコマンドを実行します。
choco upgrade azd
管理者権限が必要かどうかは、Chocolateyのインストール方法や社内端末の管理方針によって異なります。
MSIまたはインストールスクリプトを利用している場合
MSIや公式インストールスクリプトで導入している場合も、基本的には次のコマンドを利用できます。
azd update
公式ドキュメントによると、WindowsのMSIまたはスクリプトによるインストールでは、更新時にバックアップと復元を伴うインストール処理が実行されます。(Microsoft Learn)
更新後に修正版が使われているか確認する
更新が完了したら、もう一度バージョンを確認します。
azd version
少なくとも次のいずれかになっていれば、PR #9161の修正を含むバージョンです。
1.28.1
1.29.0
1.29.0より新しいバージョン
2026年7月ロールアップを基準に環境をそろえる場合は、1.29.0以上を推奨します。
その後、失敗していた拡張機能のインストールを再実行します。
azd extension install <extension-id>
たとえば拡張機能IDが example.extension の場合は、次のようになります。
azd extension install example.extension
インストール結果は次のコマンドで確認できます。
azd extension list
更新しても古いazdが起動する場合の確認方法
Windowsでは、MSI、winget、Chocolatey、インストールスクリプトなどを併用した結果、複数の azd.exe がPATHに存在することがあります。
更新に成功したように見えるのに azd version が変わらない場合は、PowerShellで次のコマンドを実行してください。
Get-Command azd -All | Select-Object CommandType, Source
コマンドプロンプトから確認する場合は、次のコマンドも利用できます。
where.exe azd
複数のパスが表示された場合、更新した azd.exe とは別のファイルが先に読み込まれている可能性があります。
たとえば、次のように異なる場所が表示されるケースです。
C:\Program Files\Azure Dev CLI\azd.exe
C:\Users\user-name\bin\azd.exe
この場合は、使用していない古いインストールを整理するか、PATHの優先順位を修正します。ファイルを直接削除するのではなく、可能な限り導入時に使用したパッケージマネージャーやアンインストーラーから削除してください。
管理者として実行するだけでは根本解決にならない
「Access is denied」と表示されると、PowerShellを管理者として起動したくなります。しかし、今回の既知問題で重要なのはNTFSのアクセス許可ではなく、実行ファイルに残った一時的なロックです。
管理者権限を付与しても、別のプロセスが保持しているファイルハンドルは自動的に解放されません。そのため、管理者として再実行すると偶然成功することはあっても、根本的な修正方法にはなりません。
次の条件に当てはまる場合は、まずバージョン更新を優先してください。
- Windowsでのみ発生する
- 毎回ではなく、ときどき失敗する
- 拡張機能の新規インストール、再インストール、更新時に発生する
- エラー内に拡張機能の実行ファイルや削除処理が表示される
- 同じコマンドを時間を置いて再実行すると成功することがある
これらは、PR #9161で説明されている一時的なファイルロックの症状と一致します。(GitHub)
AzureのRBACエラーとは切り分けて考える
今回の「Access is denied」は、Azure上のリソースへアクセスする前に発生するローカルファイル操作のエラーです。
そのため、Azureサブスクリプションの所有者、共同作成者、閲覧者などのロールを追加しても、この既知問題は解消しません。
| エラーの出方 | 主に確認する場所 |
|---|---|
拡張実行ファイルの削除や置換で Access is denied | azd のバージョン、Windowsのファイルロック |
| HTTP 401、認証が必要というエラー | azd auth login、認証情報 |
| HTTP 403、権限不足というエラー | Azure RBAC、対象リソースのスコープ |
| 同じローカルファイルで毎回拒否される | NTFSアクセス許可、EDR、ウイルス対策ソフト |
| 更新後も古い動作が続く | PATH上にある複数の azd.exe |
また、今回更新するのはAzure CLIの az ではなく、Azure Developer CLIの azd です。両者は別のコマンドラインツールなので、Azure CLIだけを更新しても azd extension install の問題は修正されません。(Microsoft Learn)
すぐにazdを更新できない場合の一時的な対処
社内端末の更新申請が必要など、すぐに修正版へ更新できない場合は、次の順序で一時的に対処します。
- 対象の拡張機能を使用しているターミナルや処理を終了する
- 拡張機能に関連するプロセスが終了したことを確認する
- 少し時間を置いてからインストールを再実行する
- 解消しなければターミナルを開き直す
- それでもロックが残る場合はWindowsを再起動する
これは一時的な回避策です。再発を防ぐには、PR #9161を含む1.28.1以降へ更新する必要があります。
拡張機能の保存フォルダーを手動で削除したり、ウイルス対策ソフトを無効にしたりする方法は、最初の対処としては推奨できません。拡張機能の状態を壊したり、端末のセキュリティポリシーに抵触したりする可能性があるためです。
1.28.1以降でもAccess is deniedが続く場合
修正版への更新後も毎回同じ場所で失敗する場合は、PR #9161とは別の原因を調査します。
デバッグログを有効にする
azd には診断ログを有効にする --debug オプションがあります。
azd extension install <extension-id> --debug
PowerShellで出力をファイルへ保存する場合は、次のように実行できます。
azd extension install <extension-id> --debug *> azd-extension-install.log
デバッグログにはユーザー名、ローカルパス、環境情報などが含まれる可能性があります。外部へ共有する場合は、機密情報が含まれていないか確認してください。Microsoftも、予期しない問題が起きた場合は --debug を付けて再実行し、診断情報を取得する方法を案内しています。(Microsoft Learn)
エラーが発生しているファイルを確認する
ログ内のパスを確認し、次のどの段階で失敗しているかを切り分けます。
- ダウンロードしたZIPファイルの展開
- 既存実行ファイルの削除
- 新しい実行ファイルへの置換
- 拡張機能設定の保存
- 拡張機能プロセスの起動
既存実行ファイルの削除または置換で失敗している場合は、ファイルロック、ウイルス対策ソフト、EDR製品の監視を確認します。
フォルダー作成や設定ファイルの書き込みで毎回失敗する場合は、NTFSアクセス許可、フォルダー所有者、企業のフォルダーリダイレクトなどを確認します。
同時実行されているazdを終了する
別のターミナル、Visual Studio Codeのタスク、CIエージェントなどで azd が同時に動作していないか確認します。
特に次の処理が重なると、同じ拡張機能を同時に操作する可能性があります。
azd extension installazd extension upgrade- 拡張機能を必要とするプロジェクトコマンド
- 複数ジョブによる並列セットアップ
同一端末で拡張機能を更新する処理は、可能な限り直列化してください。
CIや社内端末では最低バージョンを検査する
複数のWindows端末やセルフホステッドCIエージェントを運用している場合は、担当者へ手動更新を依頼するだけでなく、起動時に最低バージョンを検査すると再発を防げます。
次のPowerShell例では、azd が1.28.1未満の場合に処理を停止します。
$requiredVersion = [version]"1.28.1"
$versionText = azd version
if ($LASTEXITCODE -ne 0) {
throw "Azure Developer CLIを実行できません。azdのインストールとPATHを確認してください。"
}
if ($versionText -notmatch 'azd version\s+(\d+\.\d+\.\d+)') {
throw "azdのバージョンを判定できませんでした: $versionText"
}
$currentVersion = [version]$Matches[1]
if ($currentVersion -lt $requiredVersion) {
throw "azd $currentVersion は古いため更新が必要です。必要バージョン: $requiredVersion 以降"
}
Write-Host "azdのバージョン要件を満たしています: $currentVersion"
2026年7月ロールアップを組織の標準にする場合は、次のように最低バージョンを1.29.0へ変更します。
$requiredVersion = [version]"1.29.0"
これにより、新しく追加されたWindowsエージェントだけ古い azd を使用していた、といった環境差による再発を検出できます。
よくある疑問
1.28.1へ更新すれば十分か
PR #9161の修正だけを目的とする場合は、1.28.1で対応済みです。実際に1.28.1のリリースノートには、Windowsで拡張実行ファイルを置換する際の「Access is denied」修正が明記されています。(GitHub)
ただし、新規に更新するのであれば、追加修正を含む1.29.0以降へ更新するのが現実的です。
Windows Defenderを無効にする必要はあるか
今回の既知問題を直すためにWindows Defenderを無効にする必要はありません。まず azd を修正版へ更新してください。
1.28.1以降でも特定端末だけ毎回失敗する場合は、Defenderや組織のEDR製品によるファイル監視が関係している可能性を切り分けます。その場合も、保護機能を勝手に無効化せず、ログと対象ファイルを確認したうえで管理者へ相談します。
azd extension uninstallを実行してから入れ直すべきか
既存実行ファイルがロックされている場合、アンインストールも同じファイル操作で失敗する可能性があります。先に azd 本体を更新し、その後でインストールまたはアップグレードを再実行してください。
PCの再起動は必要か
修正版へ更新するだけで、通常はWindowsの再起動を必要としません。
更新直後も古いバージョンが表示される場合は、新しいターミナルを開いて再確認します。一時的なロックが長く残っている場合に限り、再起動を回避策として検討します。
WindowsのAccess is deniedはazd更新を最優先する
Windowsで azd extension install が断続的に「Access is denied」となる問題は、拡張実行ファイルに残る一時的なロックが原因の既知問題です。
対応手順は次のとおりです。
azd versionで現在のバージョンを確認する- 1.28.0以前なら
azd updateなどで更新する - 2026年7月ロールアップの1.29.0以降を利用する
- 更新後に
azd extension installを再実行する - 改善しない場合は
--debugでログを取得する - PATHの重複、別プロセス、EDR、NTFSアクセス許可を順番に確認する
この症状では、Azure RBACの変更や管理者実行を先に試すのではなく、PR #9161を含むAzure Developer CLIへ更新することが最短の解決策です。
参考情報
- Azure Developer CLI 2026年7月ロールアップ。1.27.0から1.29.0までの変更と、Windows上の拡張機能インストール修正がまとめられています。(Microsoft for Developers)
- PR #9161。Windowsの一時的な実行ファイルロックと、共有違反・アクセス違反の再試行処理が説明されています。(GitHub)
- Azure Developer CLI 1.28.1リリースノート。PR #9161が修正項目として明記されています。(GitHub)
- Azure Developer CLIの公式更新手順。
azd update、winget、Chocolateyなどの更新方法を確認できます。(Microsoft Learn)

コメント