
Claude Codeプラグインを更新して「already at the latest version」と表示されているのに古いままだった原因
Claude CodeのプラグインをGitHubで管理しているのですが、mainに変更を反映してアップデートを行ったにもかかわらず、何度プラグインのアップデートを試しても古いままという状態になりました。
最終的にドキュメントと実際の挙動から理由がわかりましたので、その調査結果を残しておきます。
症状
/plugin からマーケットプレイスのアップデートを行い、続けて対象プラグインのアップデートを実行しました。どちらも already at the latest version と表示され、エラーもなく完了します。また、セッションで/reload-pluginsも実行しました。
ところが実際にスキルを呼び出してみると、明らかに変更前の動きをしていました。同じ手順を踏み直しても結果は変わらず、Claude Code自体を再起動しても同様でした。
原因
結論から書くと、plugin.json のversionを上げていなかったためキャッシュが効いたままになっていました。
マーケットプレイス経由でインストールしたプラグインは、その場で実行されるのではなく ~/.claude/plugins/cache にコピーされます。実際、手元では以下のようなパスになっていました。
~/.claude/plugins/cache/<マーケットプレイス名>/<プラグイン名>/<バージョン>/
インストールされたバージョンごとに、キャッシュ内の別ディレクトリとして置かれることがわかります。ディレクトリ名がバージョンそのものなので、versionが同じであれば参照先も変わりません。
更新の判定についても同様で、versionを据え置いたまま新しいコミットをpushしている限り、/plugin update は最新版である旨を報告するだけでした。
改めてplugins.jsonのバージョンを変更しアップデートしたところ、変更内容が反映できました。
versionを省略するとコミットごとに更新扱いになる
調べていて意外だったのがこの点で、gitソースにおいてplugin.json とマーケットプレイスエントリの両方から version を省略すると、バージョンがソースのコミットSHAから解決されるようになります。ドキュメントにはバージョンの解決順が示されており、plugin.json、marketplace.json の順に参照し、どちらにも無ければ github などのソースのコミットSHAが使われるとあります。
この形にすると、新しいコミットをpushした時点でアップデート扱いになるため、バージョンの上げ忘れという事象そのものが起きなくなります。ドキュメント上でも、開発が活発な内部向け・チーム向けプラグインに適した方式として挙げられており、今回のように個人でのみ使用しているものであれば有用な選択肢なのではないかと思います。
一方で、どの程度変更が入ったのかやリリースコミットであることをセマンティックバージョンで示せなくなりますので、リリースサイクルが定まっているプラグインでは、versionを明示する運用のほうが適しているかと思います。
参考
- Create and distribute a plugin marketplace - Version resolution and release channels
- Plugins reference - Plugin caching and file resolution
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイトをぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました








