miseで入れたClaude Codeに更新通知が出続ける理由と止め方
miseで最新バージョンを入れたのに「Update available! Run: mise upgrade claude」が消えない現象の仕組みと、通知を無視してよい条件、止め方をまとめます。
miseで入れたClaude Codeの画面右下に「Update available! Run: mise upgrade claude」と出続け、指示どおりmise upgrade claudeを実行しても何も起きません。この現象はGitHub issue #95103で報告されています。結論から書くと、miseでアップデートしても上がるバージョンがまだ無い間に、Claude Code側が先に通知を出している状態です。claude --versionとmise latest claudeが同じ数字なら、待てば足ります。通知を消したいときはDISABLE_AUTOUPDATERを設定します。
「Update available! Run: mise upgrade claude」は何を知らせているのか
報告者の環境はArch Linux、Claude Code 2.1.273、mise 2026.9.1です。グローバル設定にclaude = "latest"を書き、バックエンドはaqua:anthropics/claude-codeでした。
# ~/.config/mise/config.toml(報告者の設定)
[tools]
claude = "latest"通知が出ている状態で、報告者は次の3つを実行しています。
claude --version
MISE_FETCH_REMOTE_VERSIONS_CACHE=0 mise latest claude
npm view @anthropic-ai/claude-code dist-tags.latest返ってきた値は次のとおりです。
| コマンド | 結果 | 意味 |
|---|---|---|
claude --version | 結果2.1.273 | 意味手元のバージョン |
mise latest claude(キャッシュ無効) | 結果2.1.273 | 意味miseが把握している最新バージョン |
npm view … dist-tags.latest | 結果2.1.274 | 意味npmで公開済みの最新バージョン |
手元のバージョンとmiseの最新バージョンが同じなので、mise upgrade claudeは「更新なし」で終わります。一方でnpmのlatestタグは1つ先に進んでいました。
なぜ「最新なのに更新あり」と表示されるのか
報告者は、通知の判定がnpmのlatestタグとの比較で行われ、miseはGitHub Releasesからバージョンを取得するため反映が少し遅れる、と見ています。新バージョンがほぼ毎日出るので、通知もほぼ常時出ます。
ここは報告者の推測で、Anthropic側が判定元を説明しているわけではありません。ただ、セットアップ手順にも同じ型の注意書きがあります。Homebrew、WinGet、apt、dnf、apkを扱う注意書きに、次のknown issueが載っています。
Claude Code may notify you of updates before the new version is available in these package managers.
つまり「通知が先に出て、パッケージマネージャー側の反映が遅れる」ことは既知の挙動として書かれています。同じ注意書きは「更新に失敗したら、少し待ってから再試行する」とも案内しています。miseでも、手元とmiseの最新が同じなら、待つのが基本の対処になります。セットアップ手順が挙げるのはHomebrew、WinGet、apt、dnf、apkで、miseはこの一覧に含まれません。miseで入れた場合の挙動を伝えているのは#95103の報告です。
issueには同型の報告として、apt(#87197)、Homebrew(#49590)、winget(#46550)が挙げられています。パッケージマネージャーで入れたClaude Codeは、どれも同じ構造でつまずきます。
この通知を無視してよい条件
通知が出たときの確認
- 1
手元のバージョンを見る
claude --versionを実行します。報告では2.1.273でした。 - 2
miseが把握する最新バージョンを見る
mise latest claudeを実行します。mise側の最新が手元と同じなら、mise upgrade claudeで上がるバージョンはまだありません。 - 3
結果で分かれる
2つが同じなら通知は先走りで、無視して構いません。miseに新バージョンが届けば
mise upgrade claudeで更新できます。2つが違うなら通知のとおり、更新が可能です。
もう1つ、更新が必要かどうかを終了コードで返す方法もあります。mise upgradeの--dry-run-codeは--dry-runと同じく何も変更せず、古いツールがあれば終了コード1で終わります。スクリプトから確かめたいときに使えます。
MISE_FETCH_REMOTE_VERSIONS_CACHEは、miseがリモートのバージョン一覧を保持する期間の設定で、既定は1時間です。報告者はこれを0にしてmise latest claudeを実行し、キャッシュの影響を避けた値を見ていました。ただしmiseのドキュメントでは、hook-env・exec・ls・shimsのような高速コマンドの一覧は常にキャッシュされると説明されています。mise latestがこれに当たるかはドキュメントに書かれていないため、この環境変数が効くかは実機で比べて確かめます。
# キャッシュを使わずにmiseの最新バージョンを確認する
MISE_FETCH_REMOTE_VERSIONS_CACHE=0 mise latest claude
# 更新が必要かだけを終了コードで見る(変更はしない)
mise upgrade claude --dry-run-code
# 新しいバージョンが見えたら更新する
mise upgrade claudemise upgradeは古くなったツールを更新するコマンド、mise latestはバージョン指定にあてはまる最新バージョンを解決するコマンドです。役割が違うので、通知の判定と同じ数字がmise latestに出るとは限りません。
通知を止めたいときの選択肢
報告者はDISABLE_AUTOUPDATER=1を設定して通知を消しています。手順書では、settings.jsonのenvキーに書きます。
{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}止める範囲が違う設定が2つあります。
更新を止める2つの環境変数
DISABLE_AUTOUPDATER
バックグラウンドの更新チェックだけを止めます。claude updateとclaude installは使えるままです。
DISABLE_UPDATES
手動のclaude updateとclaude installを含めて、すべての更新経路を止めます。自社の配布経路でバージョンを固定したい場合の設定です。
miseで入れた場合は、更新の主導権はmiseにあります。通知が消えても困らない人は、DISABLE_AUTOUPDATERで止めるのが簡単です。ただし、止めると通知が出なくなるため、新バージョンが出ていること自体に気づけなくなります。定期的にmise latest claudeで確認してmise upgrade claudeを回す運用と組み合わせる形になります。
設定の反映はclaude doctorで確かめます。公式の手順では、ネイティブ版とnpm版でAuto-updatesの行がdisabled (set by env: DISABLE_AUTOUPDATER)になれば有効とされています。
DISABLE_AUTOUPDATER=1 claude doctorv2.1.289のネイティブ版で、環境変数を付けて実行した出力の抜粋です(パスは~に置き換えています)。
Running: native (2.1.289)
Path: ~/.local/share/claude/versions/2.1.289
Config install method: native
Auto-updates: disabled (set by env: DISABLE_AUTOUPDATER)
Auto-update channel: latest
Last update attempt: success → 2.1.289 (2026-10-03)環境変数を付けずに実行すると、同じ行はAuto-updates: enabledと表示されました。Last update attemptの行は、直近の更新試行の結果を示します。claude doctorはこのとき、設定ファイルの検証やSearch: OK (bundled)のような診断も並べますが、更新まわりの切り分けで見るのはこの3行です。claude update --helpが表示するオプションは-h, --helpだけで、チャネルやバージョンを指定する引数は持ちません。
DISABLE_AUTOUPDATERとautoUpdates設定の違い、止めたときの注意はautoUpdatesが無視されるという報告と確実な止め方にまとめています。更新コマンド全般はClaude Codeアップデートの方法が扱っています。
通知が出続けたときに疑う原因の切り分け
「最新のはずなのに通知が消えない」原因は、miseの反映遅れだけとは限りません。
| 状況 | 疑うこと | 確認方法 |
|---|---|---|
| 手元のバージョンとmiseの最新バージョンが同じ | 疑うことmiseへの反映待ち | 確認方法時間を置いてmise latest claudeを再実行 |
| 手元のバージョンがmiseの最新より古い | 疑うこと更新が未実施 | 確認方法mise upgrade claude |
| 新バージョンが出たはずなのにmiseに出ない | 疑うこと反映遅れ、またはキャッシュ | 確認方法MISE_FETCH_REMOTE_VERSIONS_CACHE=0を付けて確認(報告者と同じ方法) |
claudeが別の場所の実行ファイルを指している | 疑うことPATH上の別インストール | 確認方法which -a claude |
最後の行は、miseに限らずasdfのshimでも起きます。実際に、asdfのshim経由で古いバージョンを掴み続ける問題はClaude Codeがasdfのshimで古いバージョンを掴み続ける問題を直すで扱っています。なお、v2.1.47ではclaude doctorがmiseやasdf管理下の環境をネイティブインストールと誤判定するバグが修正されています。
which -a claude複数のclaudeが出てきたら、優先されているものがmise管理下かを見ます。インストール方法ごとの違いはClaude Codeのインストールガイドにあります。
miseの最新バージョンが遅れて見えるのは最小リリース経過日数のためか
miseにはminimum_release_ageという設定があり、公開から指定期間が過ぎていないバージョンを解決の候補から外します。ドキュメントでの既定値は24hです。バックエンドが公開日を持つ場合、何も設定していなくても、公開から約1日はmise latest claudeに新バージョンが出ないことがあります。
通知とのずれを縮めたいなら、0sを指定して遅延をなくします。逆に新しい版を避けたいときは、7dのように期間を延ばせます。
# ~/.config/mise/config.toml
[settings]
# 公開直後のバージョンも候補にする(遅延なし)
minimum_release_age = "0s"
# 公開から7日たったバージョンだけを候補にする場合
# minimum_release_age = "7d"対象はlatestやnode@22のように範囲で指定したバージョンで、2.1.274のような固定指定は絞られません。バックエンドが公開日を持たない場合は絞り込めないと、ドキュメントにあります。
コマンド単位なら、mise latestの--minimum-release-ageフラグで期間を指定できます。インストール済みのバージョンだけに解決を絞る--installedもあります。
mise latest claude --installed
mise latest claude --minimum-release-age 0s
mise latest claude --minimum-release-age 7d7dを付けると公開直後のバージョンが外れるので、「通知は出たがmiseにまだ無い」状態と見比べる材料になります。通知の判定そのものは変わりません。
公式のリリースチャネル設定はmise環境の通知を変えるか
セットアップ手順には、更新の追い方を選ぶ設定が2つあります。autoUpdatesChannelは"latest"(既定、公開されたらすぐ受け取る)と"stable"(およそ1週間遅れで、大きな不具合のあるリリースを飛ばす)を切り替え、自動更新とclaude updateに効きます。minimumVersionは、それより古いバージョンへの更新を拒む下限です。/configでlatestからstableに切り替えると、いまのバージョンに留まるかダウングレードを許すかを尋ねられ、留まる方を選ぶとそのバージョンがminimumVersionに入ります。latestへ戻せばこの値は消えます。Homebrewだけは設定ではなく、cask名でclaude-code(stable)とclaude-code@latest(latest)を選びます。ネイティブインストーラーの側でも、インストール時にバージョン番号かチャネルを引数で渡せて、選んだチャネルがその後の自動更新の既定になります(bash -s stableやbash -s 2.1.89の形です)。つまり公式が想定する固定の方法は、インストーラーへの引数か設定ファイルです。
これらは、Claude Code自身が行う自動更新とclaude updateの挙動を決める設定です。miseのmise upgradeが入れるバージョンは、mise.tomlの指定に従います。通知を消す手段として#95103の報告者が使ったのはDISABLE_AUTOUPDATERでした。
mise側でバージョンの見え方を変える設定は、前の節で扱ったminimum_release_ageです。
報告の状態と、今後の見通し
issue #95103は2026年9月17日に報告されました。報告者が求めているのは、パッケージマネージャーが新バージョンを持っているときだけ通知を出すか、少なくとも「まだ効かないコマンド」を案内しないことです。
当面は、通知を「miseに新バージョンが届いたかもしれない合図」として扱い、実際に更新が要るかをmise latest claudeで確かめる形が現実的です。
よくある質問
miseの反映は、どれくらい遅れるのですか
報告者の例では、npmが2.1.274、miseが2.1.273という1バージョンの差でした。
Homebrewなら自動更新できますか
公式の手順では、HomebrewとWinGetはCLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATEを1にすると、Claude Codeが更新コマンドを代わりに実行します。環境変数の説明によれば、ほかのパッケージマネージャーは更新コマンドの表示にとどまり、実行はされません。
まとめ
claude --versionとmise latest claudeが同じ数字なら、通知は先走りで、待てば足ります。消したいときはDISABLE_AUTOUPDATERを使い、代わりに新バージョンを自分で見に行く運用にします。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。