Chocolatey(チョコレティ)は、Windowsのソフトウェアをコマンド1行でインストール・更新・削除できるパッケージマネージャーです。本体のChocolatey CLIはApache 2.0ライセンスのオープンソースで、2026年10月時点の最新安定版は2026年8月19日公開の2.7.4です。安全性については、公開リポジトリのパッケージは自動検証・VirusTotal・人手レビューを経て公開されます。ただし、ダウンロード数上位25件の最新版を調べると17件は人手レビューを省く「Trusted」扱いで、審査が保証するのも「公式の配布元から取得しているか」までです。この記事では、審査の中身と残るリスクを公式ドキュメント・ソースコード・リポジトリのAPIで確かめ、インストール手順・主要コマンド・アンインストール・商用利用の条件まで整理します。
まとめ:Chocolateyの安全性と使い方の要点
- 正体:NuGetの仕組みの上に作られたWindows用のパッケージマネージャー。CLIは無料・オープンソースで、会社のPCでも台数の制限なく使えます。
- 安全性:コミュニティリポジトリの全バージョンは公開前に審査されます。ただしTrustedパッケージは人手レビューを通らず、HTTPSで配布元から落とすファイルはチェックサムが無くても既定で実行されます。
- 安全に使う設定:
allowEmptyChecksumsSecureを無効化し、チェックサムの無いHTTPSダウンロードを止めるのが最初の一手です。インストールスクリプトは保存して署名を確かめてから実行します。 - 組織利用:公式自身が「組織はコミュニティリポジトリを直接使わず、社内リポジトリへ取り込む」前提を示しています。
- v2の変更:2.0.0で
choco listがローカル専用になり、cinst・clist・cupは削除されました。古い記事のコマンドはそのままでは動きません。
Chocolateyの仕組みと読み方
NuGetの上に作られたWindows用パッケージマネージャー
公式ドキュメントは、Chocolateyを「Windows版のapt-getのようなもの」で、NuGetの基盤の上に作られたマシン単位のパッケージマネージャーだと説明しています。NuGetが開発者向けのライブラリを配るのに対し、Chocolateyはアプリケーションとツールを配ります。
パッケージの実体は .nupkg ファイルで、インストール用のPowerShellスクリプトや依存関係の情報を格納します。Windowsのソフトウェアは再配布が認められていないものが多く、多くのパッケージはインストーラを同梱せず、スクリプトが配布元のURLからダウンロードして実行します。この構造が、後述する安全性の論点の出発点です。
読み方・意味と公開パッケージの規模
英語の chocolatey は「チョコレートのような」を意味する形容詞で、日本語では「チョコレティ」または「チョコラティ」と表記されます。公式の日本語表記はありません。名前はNuGetをお菓子のヌガー(nougat)に掛けた冗談から始まったと、公式の沿革ページに書かれています。2026年10月16日時点で、コミュニティリポジトリには11,955件の安定版パッケージが公開されています。Visual Studio Code、Git、Google Chrome、7-Zipなど、開発環境でよく使うソフトウェアはおおむね揃っています。
入れた覚えがないのにある場合:Node.jsのインストーラ経由
自分で入れた覚えがないのに choco コマンドがある場合、Node.jsのWindows用インストーラが原因のことがあります。インストーラの途中に「Tools for Native Modules」という画面があり、「Automatically install the necessary tools. Note that this will also install Chocolatey.」にチェックを入れると、インストール完了後に別ウィンドウでスクリプトが走ります。
Node.jsのリポジトリにあるinstall_tools.batを読むと、Chocolateyを入れたうえで choco upgrade -y python visualstudio2026-workload-vctools を実行し、C/C++で書かれたnpmモジュールのビルドに要るPythonとVisual Studio Build Toolsを導入します。必要な空き容量は約7GiBと表示されます。ネイティブモジュールをビルドしないなら、このチェックは外したままで構いません。
Chocolateyの安全性:審査の中身と保証されない範囲
コミュニティリポジトリの3段階の審査
コミュニティリポジトリでは2014年10月から審査(moderation)が有効になっており、すべてのパッケージの全バージョンが公開前にチェックされます。公式のセキュリティページと審査手順のページによると、中身は次の3つです。
- validator:パッケージの品質を要件・ガイドラインに照らして自動確認します。
- verifier:インストールとアンインストールが正しく動くか、依存関係がそろっているかを自動で試します。
- VirusTotalでのスキャンと人手レビュー:パッケージと、パッケージがダウンロードする外部ファイルをVirusTotalにかけ、最後にモデレーターが配布元の正しさとスクリプトの悪意の有無を確認して承認します。
結果はパッケージページの「Validation Testing」「Verification Testing」「Scan Testing」に表示されます。インストール前に、ここが「Passed」「No detections found」になっているかを確認してください。ただし、検出が無いことは安全の保証ではありません。
審査が保証しない3つの範囲
公式のセキュリティページは「完全な安全は誰も保証できない」と書いたうえで、限界を明示しています。
- Trustedパッケージは人手レビューを通らない:ソフトウェアの開発元や実績のあるメンテナーのパッケージは「Trusted」に切り替えられ、自動審査だけで公開されます。2021年の公式ブログによると、VirusTotalの検出が1〜5件のファイルを含むパッケージは「誤検知の可能性が高い」として、Trustedなら自動承認されます。
- 審査は審査時点のもの:審査とウイルスチェックは「最初に審査した時点のパッケージとリンク」を表すだけで、配布元がURLの中身を差し替えた場合、チェックサムが無ければ防げないと公式は明記しています。パッケージスキャナが既定で検査するのはen-USのインストーラだけです。
- HTTPSならチェックサム無しでも既定で実行される:2.7.4タグのソース(
ConfigurationBuilder.cs)では、HTTP・FTPのダウンロードでチェックサムの省略を許すallowEmptyChecksumsは既定で無効ですが、HTTPSで省略を許すallowEmptyChecksumsSecureは既定で有効です。公式ページには「HTTPSでも2017年中にチェックサムを必須にしたい」と書かれたままですが、2026年の最新版でも既定値は変わっていません。
実行時のウイルスチェック(virusCheck)も既定は無効で、ソース上の説明は「Licensed versions only」です。無料版で使える防御は、パッケージに記載されたチェックサム、または利用者が実行時に指定したチェックサムとの照合です。
人気上位25パッケージで確かめたTrustedとチェックサムの実態
「Trustedは人手レビューを省く」が実際にどの程度の範囲に当たるのかを、2026年10月16日にコミュニティリポジトリのAPI(OData)で確かめました。累計ダウンロード数の多い順に25件の最新版を取り、承認記録を見ると、モデレーター名が入っているのは8件で、残る17件はTrustedとして自動承認されていました(承認者欄が空の版をTrustedとして数え、3件のパッケージページの表示と一致することを確認)。Google Chrome・Firefox・Microsoft Edge・Zoom・TeamViewer・Python・Notepad++・7-Zipがこの17件に含まれます。パッケージページでも、例えばgooglechromeは「approved as a trusted package on 15 Oct 2026」と表示されます。少なくともこの25件では、最新版の3分の2以上が人の目を通らずに公開されていました。
一方、チェックサムの記載は人気パッケージでは徹底されていました。上の25件から拡張機能・Windows更新プログラム・サポート終了品・重複を除いた12件に、VS Code・Git・Node.jsを加えた15件の .nupkg を展開すると、配布元からダウンロードする10件(Adobe Reader・Chrome・Firefox・Edge・Zoom・Visual C++再頒布可能パッケージ・Teams・TeamViewer・Microsoft 365・VS Code)はすべてSHA256のチェックサムを書いていました。7-Zip・Notepad++・Node.jsのパッケージはインストーラ自体を同梱し、同梱物のSHA256を VERIFICATION.txt に載せています。PythonとGitは依存関係だけのメタパッケージでした。ただし調べたのは15件だけで、残る1万件余りのパッケージがチェックサムを書いているかは個別に確かめるしかありません。allowEmptyChecksumsSecure を無効にしておけば、書いていないパッケージに当たった時点でインストールが止まり、気づけます。
注意したい例もあります。最もダウンロードの多いadobereaderの最新版は、モデレーターが承認していますが、Scan Testingは「the scanner only fetched the nupkg (expected 2 downloads, got 1)」としてこの版だけ免除されていました。スキャナがインストーラを取得できず、外部ファイルはスキャンされていないという意味です。また上位25件には、サポートが終わったFlash Player(flashplayerplugin・2020年12月31日終了)やSilverlightも残っています。リポジトリにあることは、今使ってよいソフトウェアであることを意味しません。
パッケージ由来の脆弱性とChocolatey本体の更新
Chocolatey本体ではなく、個々のパッケージの作りが原因の脆弱性も登録されています。2022年11月29日にNVDへ公開されたCVE-2022-45301・45304・45305・45306・45307は、Ruby・Cmder・Python3・Azure-Pipelines-Agent・PHPの各パッケージが C:\tools などにインストールした際、Authenticated Usersグループに書き込み権限が付いていた問題です(CVSS 3.1基本値はいずれも4.3)。本体の既定のインストール先 C:\ProgramData\chocolatey は書き込みを管理者に絞っていますが、パッケージがどこに何を置くかまでは本体の設定では縛れません。
本体側も依存ライブラリの更新でセキュリティ修正が入ります。2.7.4のリリースノートには「[Security]」として、同梱の7-Zip実行ファイルを26.02へ、log4netを3.3.1へ上げた変更が載っています。7-Zipの修正内容は7-Zipの脆弱性と最新版で直るCVEの一覧で解説しています。Chocolatey自体も choco upgrade chocolatey で更新対象に含めてください。
安全に使うための設定と確認手順
個人のPCでも、次の設定でダウンロードファイルの差し替えリスクを減らせます。ただし、スクリプトの悪意やソフトウェア自体の脆弱性、インストール先の権限問題は別に確認が必要です。
# HTTPSでもチェックサムの無いダウンロードを実行させない
choco feature disable --name="allowEmptyChecksumsSecure"
# 入れる前にパッケージの情報を確認する
choco info vscode
# 64ビット版の例。<SHA256> は自分で確認したVS Code(Windows x64)インストーラのSHA256値に置き換える
choco install vscode.install --checksum64="<SHA256>" --checksumtype64="sha256"
1つ目を無効にすると、Chocolateyのダウンロード用ヘルパーがHTTPSで取得するファイルにチェックサムが指定されていない場合、インストールが止まります。インストーラを同梱するパッケージや、依存関係だけのメタパッケージには影響しません。止まったパッケージは、パッケージページのファイル一覧でスクリプトと取得先URLを読んでから、個別に許可するか判断します。3つ目の実行時チェックサムは0.10.0から使える機能で、パッケージが書いたハッシュではなく自分で確認した値で照合できます。配布元からダウンロードするパッケージ向けの機能なので、7zip.installのようにインストーラを同梱するパッケージには使えません。
組織でコミュニティリポジトリを直接使わない理由
公式ドキュメントの「community.chocolatey.org Packages Disclaimer」は、個人なら何か壊れても困りにくいのでコミュニティリポジトリで一般に問題ないが、組織は信頼性・管理・信頼を求めるなら社内でホストしたパッケージを使うべきだ、と結論を先に書いています。さらに「Organizational use of the community repository is not recommended.」と明記し、コミュニティに還元しない組織的な利用はサポートしないとしています。
理由は信頼性だけではありません。コミュニティリポジトリにはレート制限があり、Chocolatey本体のダウンロードは1IPあたり毎分約5回、その他のパッケージは毎分約20回を超えると 429 Too Many Requests で1時間止められます。平均して1時間あたり100回を超えるインストール・更新が続くと、過剰利用としてブロックされる場合があります。こちらは1時間で解けるレート制限と違って自動では解除されず、運営チームへ連絡して解除を依頼する必要があります。社内の全PCが同じグローバルIPから一斉に choco upgrade all を走らせると、この上限に届きかねません。商用ライセンスを買ってもこの制限は緩和されないと公式は書いています。
開発者が自分のPCを整える用途ならコミュニティリポジトリを直接使ってかまいません。社内の複数台へ配る用途では、Nexus・ProGetなどで社内リポジトリを立て、パッケージを取り込んでから配ってください。公式は「キャッシュ」と「内部化(internalize)」を区別しています。キャッシュは .nupkg を手元に置くだけで、スクリプトは実行時に配布元へ取りに行きます。内部化はインストーラまで社内に取り込み、インターネットに出ずに完結させる方式です。内部化を自動で行うPackage InternalizerはC4Bの機能です。
Chocolateyの商用利用とエディションの違い
公式FAQは、ChocolateyはApache 2.0ライセンスで「非常にビジネスフレンドリー」であり、組織でも本体と基盤の大部分を無料で使えると回答しています。料金ページでもオープンソース版は「For Everyone (Organizations as well)」「No Limit on Machines」と明記されています。
| エディション | 料金(2026年10月時点) | 対象 | 主な追加機能 |
|---|---|---|---|
| Open Source | 無料 | 個人・組織とも台数無制限 | CLI・社内リポジトリの構築 |
| Pro | 年96ドル | 個人名義・最大8台 | 実行時のウイルス検査・CDNキャッシュ |
| Chocolatey for Business(C4B) | 1ノード年18ドル〜 | 組織(最小100ノード) | パッケージ内部化・Central Management |
C4Bは最小100ノードからなので、年1,800ドルが入口です。数十台規模で社内リポジトリへの取り込みを手作業で回せるなら無料版で足ります。パッケージの内部化を自動化したくなった段階でC4Bを検討する順番が現実的です。
Chocolateyのインストール手順と動作要件
動作要件:.NET Framework 4.8と管理者権限
Chocolatey CLI 2.0以降は.NET Framework 4.8が必要で、入っていなければインストールスクリプトが導入を試みます。1.x系も1.4.7(2026年8月19日)のように保守リリースが続いていますが、新しく入れるなら2.x系を選んでください。インストールは管理者権限のPowerShellで行います。
PowerShellでのインストールコマンド
管理者として開いたPowerShellで Get-ExecutionPolicy を実行し、Restricted と返る場合は実行ポリシーを緩めてから、公式のセットアップ手順にある次のコマンドを実行します。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
完了後にPowerShellを開き直し、choco --version で 2.7.4 と表示されれば導入完了です。PowerShell 7を先に入れたい場合はPowerShellのインストール手順を参照してください。
install.ps1の署名確認と保存してからの実行手順
上のワンライナーは、インターネット上のスクリプトを文字列として取得し、iex でそのまま実行します。この形では実行ポリシーの署名検証が働きません。同じ「ダウンロードして即実行」の形は攻撃にも使われており、手口はClickFixの手口と防御で解説しています。
install.ps1の末尾にはAuthenticode署名が付いており、署名者は「Chocolatey Software, Inc」(DigiCertが発行したコード署名証明書)です。公式も実行ポリシーは Bypass より AllSigned のほうが安全だと書いています。慎重に進めるなら、ファイルに保存して署名を確かめてから実行します。
Invoke-WebRequest -Uri 'https://community.chocolatey.org/install.ps1' -OutFile .\install.ps1
Get-AuthenticodeSignature .\install.ps1 | Format-List Status, SignerCertificate
# Status が Valid で、署名者が CN=Chocolatey Software, Inc であることを確認してから実行する
Set-ExecutionPolicy AllSigned -Scope Process -Force
.\install.ps1
なお、install.ps1は本体のchocolatey.nupkgをHTTPSでダウンロードして展開しますが、そのファイルのハッシュ照合はスクリプト内で行っていません。守られているのはHTTPSの通信と、install.ps1自体の署名までです。
プロキシ環境での設定
社内プロキシを経由する環境では、Chocolatey本体のインストールで (407) Proxy Authentication Required などのエラーになることがあります。公式のプロキシ設定ガイドどおり、install.ps1を保存し、同じPowerShellで環境変数を設定してから実行します。
# 導入前:install.ps1 を実行するのと同じPowerShellで設定する
$env:chocolateyProxyLocation = 'http://proxy.example.local:8080'
# 資格情報を明示しない場合は、Windowsの既定の資格情報を使わせる
[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials
# 資格情報を明示する場合は、上の行の代わりに次の2行を設定する
$env:chocolateyProxyUser = '<ユーザー名>'
$env:chocolateyProxyPassword = '<パスワード>'
.\install.ps1
導入後は choco config set でプロキシを登録します。パスワードは設定ファイル内で暗号化されて保存されます。
choco config set --name="proxy" --value="http://proxy.example.local:8080"
choco config set --name="proxyUser" --value="<ユーザー名>"
choco config set --name="proxyPassword" --value="<パスワード>"
chocoコマンドの使い方とv2での変更点
よく使うchocoコマンド一覧
日常的に使うのは次のコマンドです。-y は確認プロンプトをすべて「はい」で進めるオプションです。
| 目的 | コマンド例 |
|---|---|
| インストール | choco install git vscode -y |
| リポジトリを検索 | choco search nodejs |
| インストール済み一覧 | choco list |
| 更新の有無を確認 | choco outdated |
| すべて更新 | choco upgrade all -y |
| 一部を除いて更新 | choco upgrade all --except="skype,conemu" |
| 版を固定 | choco pin add -n git |
| アンインストール | choco uninstall git -y |
choco pin add で固定したパッケージは choco upgrade all の対象から外れます。業務で版を合わせる必要があるソフトウェアだけ固定し、それ以外は一括更新する運用が扱いやすい形です。
v2.0.0で動かなくなったコマンド
2023年5月30日公開の2.0.0には破壊的変更が入っています。ネット上の古い解説どおりに打つと動かないのは、主に次の2点です。
choco listの既定がローカル専用になりました。以前のchoco list -lに相当し、リポジトリを検索するにはchoco searchを使います。- 非推奨だった短縮コマンド
cinst・clist・cup・cuninst・cpushが削除されました。cinst gitはchoco install gitに書き換えます。
スクリプトで更新の有無を判定する終了コード
更新の自動化では、機能 useEnhancedExitCodes を有効にすると終了コードで結果を分岐できます。choco outdated は更新対象なしで0、更新対象ありで2を返します。choco upgrade は2.3.0以降、更新するものが無いときに2を返します。
choco feature enable --name="useEnhancedExitCodes"
choco outdated
if ($LASTEXITCODE -eq 2) {
choco upgrade all -y
# 0=成功、2=更新なし、1641=成功して再起動を開始、3010=成功・要再起動
if ($LASTEXITCODE -notin 0, 2, 1641, 3010) {
throw "choco upgrade が失敗しました。終了コード: $LASTEXITCODE"
}
} elseif ($LASTEXITCODE -ne 0) {
throw "choco outdated が失敗しました。終了コード: $LASTEXITCODE"
}
Chocolateyのアンインストール手順
パッケージのアンインストール
個別のソフトウェアは choco uninstall <パッケージ名> で削除します。機能 autoUninstaller はソース上で既定有効になっており、パッケージに削除用スクリプトが無くても「プログラムと機能」の登録情報からアンインストーラを呼び出します。
Chocolatey本体を削除する手順
公式のアンインストール手順では、Chocolatey本体は「プログラムと機能」に登録されていないため、フォルダと環境変数を消して削除します。
- 必要なら、先に
choco uninstallで各ソフトウェアを削除します。本体フォルダの外にインストールされたソフトウェアは通常残りますが、本体フォルダ内にあるポータブル版のツールはフォルダの削除とともに消えます。 C:\ProgramData\chocolatey(または環境変数ChocolateyInstallが指す場所)を削除します。ポータブル版のツールはlibとbinの中にあるため、公式はこの2つを先にバックアップするよう勧めています。- 環境変数
ChocolateyInstall・ChocolateyToolsLocation・ChocolateyLastPathUpdateを削除し、PATHからChocolateyのパスを外します。
3つ目の ChocolateyLastPathUpdate は、Chocolateyが PATH を書き換えたときに setx で現在時刻を書き込み、Windowsに環境変数の再読み込みを促すためのユーザー環境変数です。ソースのコメントには「パッケージ作成では特に何にも使われない」とあり、本体を消すなら一緒に消して問題ありません。公式ページには一括削除用のスクリプトも載っていますが、「マシンの再構築が必要になり得る」と警告付きです。環境変数の編集手順は環境変数の設定方法の解説を参照してください。
wingetとの違いと使い分け
Windows標準のパッケージマネージャーであるwingetは、Windows 11と、Windows 10 1809以降、Windows Server 2025で「アプリ インストーラー」の一部として提供されます。Chocolateyと比べたときの違いは、インストールの手間よりも検証の仕組みにあります。
| 項目 | Chocolatey | winget |
|---|---|---|
| 導入 | 別途インストール | App Installer経由で提供 |
| 公開リポジトリの審査 | 自動検証+VirusTotal+人手 | 自動検証+モデレーター確認 |
| インストーラのハッシュ | HTTPSなら省略可(既定) | マニフェストで必須 |
| 社内リポジトリ | NuGet互換で構築可 | RESTソースで構築可 |
| 版の固定 | choco pin |
winget pin |
wingetのマニフェストスキーマは最新の1.28.0でも、インストーラごとに InstallerSha256 を必須項目にしています。配布元での差し替えへの耐性は、構造上wingetのほうが高いといえます。一方、ChocolateyはPowerShellスクリプトでインストール後の設定まで書けます。winget-pkgsは .bat や .ps1 をインストーラとするスクリプト型のアプリケーションを受け付けないため、この種の処理が要るソフトウェアはChocolateyのほうが扱いやすい場面があります。新しく始めるならまずwingetで足りるかを確かめ、足りないソフトウェアだけChocolateyで補う使い分けを勧めます。wingetを使った全社配布の具体例はPowerToysをwingetで全社展開する手順で紹介しています。
Chocolateyに関するよくある質問
Chocolateyは会社のPCで無料で使えますか?
使えます。Chocolatey CLIはApache 2.0ライセンスで、料金ページでもオープンソース版は組織を含めて台数無制限と明記されています。ただし、組織がコミュニティリポジトリを直接参照し続けることは公式が推奨しておらず、レート制限の対象にもなります。
GUIで操作できますか?
できます。公式のChocolatey GUIがあり、choco install chocolateygui で導入できます。2026年9月16日に3.3.0が公開されています。検索・インストール・更新・版の固定をウィンドウ上で操作できます。
Chocolateyで入れたソフトにウイルスが入っていることはありますか?
公開前にVirusTotalでスキャンされますが、検出があれば必ず止まるわけではありません。Trustedパッケージは検出が1〜5件なら自動承認されます。スキャンは審査時点のもので、スキャナがインストーラを取得できずに免除される版もあります。配布元のファイルが後から差し替えられた場合、チェックサムが無いと検知できません。パッケージページのScan Testingの結果を確認し、allowEmptyChecksumsSecure を無効化しておくと防げる範囲が広がります。
Chocolateyで入れたソフトを一括で更新するには?
管理者権限のPowerShellで choco upgrade all -y を実行します。対象はChocolateyで管理しているパッケージだけで、ほかの方法で入れたソフトは更新されません。特定のソフトウェアを更新から外すときは --except で指定するか、choco pin add で版を固定します。
GitHub CLIなどの開発ツールもChocolateyで入れられますか?
入れられます。例えばGitHub CLIは choco install gh で導入できます。ghの初期設定と使い方はGitHub CLIのインストール方法と使い方で解説しています。