Claude Codeをnative で動かしているのに /Users/name/.claude/local の警告が出続ける

内容

claude update のたびに npm-local at /Users/ryo/.claude/local が出る。native at /Users/ryo/.local/bin/claude を利用して、警告が出ていたときの対処法通りに rm -rf /Users/ryo/.claude/local したのに、また復活するという状態だった。これについて「誰が復活させてるのか」を codex に確認してもらった

調査の内容

結論としては、以前npm経由でインストールしたときに設定した – ~/.claude.json の設定を更新していなくて"installMethod": "local" が残ったままとなってしまっていた。

## 仮説

  この時点で、わたしが立てた仮説は次の2本だった。

  1. 設定値が local のまま残っていて、更新時に警告が出続けている
  2. 常駐プロセスや自動更新経路が ~/.claude/local を再作成している

  ———

  ## 調査で最初に当たりをつけたポイント

  ### 1. 現在の実行実体と local ディレクトリの実在確認

  - which claude と実体確認で、起動元は native 側(/Users/ryo/.local/
    bin/claude → version binary)を確認
  - それと同時に ~/.claude/local が実際に存在していることも確認

  ### 2. 文字列検索で「local復活の痕跡」を集める

  - ~/.claude/debug 全体を検索して、以下のログを発見
      - Config install method: local
      - Running native installation but config install method is
        'local'
      - Leftover npm local installation at /Users/ryo/.claude/local

  この時点で、**「native実行なのに設定はlocal」**が明確になった。

  ### 3. 設定ファイルの一次ソース確認

  - ~/.claude.json を直接読んで、
      - "installMethod": "local" を確認(ここが核心)
  - ~/.claude/settings.json や settings.local.json も確認したけど、今
    回の原因値は ~/.claude.json 側だった

  ### 4. なぜ戻るか(再発経路)を時系列で検証

  - debugログの時系列で、~/.claude.json が繰り返し更新されている痕跡
    を確認
  - AutoUpdater: Detected installation type: npm-local の定期実行ログ
    が残っていて、過去の local 系状態が長く残存していたことを確認
  - rm -rf ~/.claude/local 単体では、設定値が直らない限り再発しうると
    いう結論に至った

  ———

  ## 結論

  根本原因はこの2点。

  1. ~/.claude.json の installMethod が local のままだった
  2. その状態で update/auto-update が走るため、~/.claude/local 警告と
     再作成条件が維持されていた

  つまり、ディレクトリ削除だけでは不十分で、設定値の是正が必須だっ
  た。

  ———

  ## 結論から導いた対処法

  実施した対処は次の順。

  1. ~/.claude.json の installMethod を native に変更
  2. ~/.claude/local を削除
  3. claude update / claude doctor で確認

  ———

  ## 実行後どうなったか

  - ~/.claude.json は "installMethod": "native" になった
  - ~/.claude/local は削除後に存在しない状態
  - claude doctor では
      - Currently running: native
      - Config install method: native
        を確認できた
  - その後の体感でも、りょうの報告どおり 警告は再発していない

  補足として、こっちの実行環境はネットワーク制限があって update fetch
  に ECONNREFUSED が出たけど、これは今回の根因とは別件(通信制限由
  来)だった。
  本件の主問題だった「local警告ループ」は、設定是正で解消できてる。

補足

この質問をClaude Sonnet 4.6 と Codex 5.3 に依頼をかけたがCodexがこの結論に2分程度でたどり着いたのに対して、Claude Code は15分程度かかっていてかつ概ねの結論にたどり着いているものの調査はまだ実行中という形だった。このあたりがCodexは強いなと思う。

ちなみにわたしが調べたら多分だいぶ時間を溶かしていた自信がある。