Claude Media
Local environment isn't availableの原因と対処 — Claude Desktop

Local environment isn't availableの原因と対処 — Claude Desktop

Claude DesktopのCodeタブで保存済みのLocal環境を選ぶと出るエラーの正体は、管理者が端末上のセッションを止める設定です。画面での見分け方、SSH・クラウドへの切り替え、管理者側の設定確認までまとめます。

Claude DesktopのCodeタブで保存済みの環境を選ぶと、Couldn't switch environments: the Local environment isn't available anymore. と表示されて切り替わらない。この表示は、組織の管理者が「端末上でのセッション」を無効にしているときに出ます。アプリの不具合でも、ログイン状態の問題でもありません。

ユーザー側でできるのは、環境をSSHかクラウドに切り替えることです。管理者側で意図した設定かどうかを確かめたいときは、disableDesktopLocalSessions というキーを見ます。以下では、画面での見分け方、切り替え先、管理者の確認ポイントを順に説明します。

このエラーが出る条件

Desktopのドキュメントには、このメッセージの出る条件が1つだけ書かれています。管理者が端末上のセッションを止めた端末で、保存済みのLocal環境を選んだときです。同じ設定の影響は、画面のほかの場所にも現れます。

場所起きること
環境セレクタの自分のPCのエントリ起きることグレーアウトして選べず、ツールチップに「Disabled by your organization」と出る
保存済みのLocal環境を選ぶ操作起きることCouldn't switch environments: the Local environment isn't available anymore. が出る
既存のローカルセッションを続ける操作起きることこの端末ではローカルセッションを使えないという趣旨のメッセージが出る
新規セッション起きること設定済みのSSH接続があれば、最初のSSH接続が既定になる

エラー文だけを見ると環境が壊れたように読めますが、環境の定義はそのまま残っています。使えなくなったのは「この端末でClaude Codeを走らせる」という行き先です。

なぜ保存済みのLocal環境が残っているのか

禁止されているのに、選べる状態のLocal環境がなぜ並んでいるのか。理由は2つあります。

  1. 自分で作った環境が、禁止より前から残っている。環境セレクタの下部にある「New environment」から作ったLocal環境は、削除するまで一覧に残ります
  2. Desktopが自動で作った環境が混じっている。現行レイアウトでCodeタブを初めて開くと、直近1か月に使ったLocalとSSHのフォルダから、最大8つの環境が作られます

どちらも作った時点では端末上のセッションが許可されていたはずで、管理者がポリシーを配った後に「選ぶとエラーになる項目」として残ります。一覧に並んでいること自体は、使えることを意味しません。

なお、保存済みのLocal環境とSSH環境は、現行レイアウトの機能です。環境セレクタが入力欄の上にある旧レイアウトのDesktopには保存済みの環境がなく、このエラーは出ません。プロンプト欄の下に環境セレクタが無いときは、Desktopのバージョンがv2.37337.0より前の可能性があります。macOSなら「Claude > Check for Updates…」、Windowsなら「Help > Check for Updates…」で更新できます。更新メニューが見当たらない場合は、管理者に新しいバージョンの配布を依頼します。

原因を切り分ける

画面を見れば、管理者設定によるものかを短時間で判断できます。

切り分け

Local environmentエラーの切り分け

  1. Q環境セレクタの、自分のPCのエントリがグレーで、ホバーすると「Disabled by your organization」と出ますか?
    答えが管理者設定以外の原因です

    ドキュメントに載っているこのエラーの原因は、管理者による無効化だけです。グレーになっていないのにエラーが出るなら、Desktopのバージョンと、会社のIT部門が入れている設定の有無を添えて相談してください。

    答えがはい
  2. Q環境セレクタのSSH配下に、管理者が配った接続が並んでいますか?
    答えがSSH接続が配られていません

    管理者が sshConfigs を配っていない場合、使える接続が最初から用意されていません。SSHの接続先はユーザー自身で追加するか、クラウド環境を選びます。接続先が許可リスト外だと、Desktopは接続を拒否します。

    答えがはい

SSHかクラウドの環境で始める

セッションはSSH接続またはクラウド環境で始めます。端末上のセッションに戻したい場合は、管理者に設定を見直してもらいます。

この切り分けで「管理者設定による無効化」と分かった場合、ユーザー側の操作でLocalを復活させる手段はありません。このキーはmanaged settingsからしか読まれないと明記されており、手元の ~/.claude/settings.json に書いても反映されないためです。

使える行き先はSSHとクラウド

無効化の対象は、端末上で動くセッションだけです。SSHで別のホストに接続するセッションと、クラウドセッションは影響を受けません。

  • SSH: 環境セレクタの「New environment」から、SSHタブで接続とリモート側のフォルダを選びます。管理者が sshConfigs を配っていれば、その接続が最初から並びます
  • クラウド: 環境セレクタの「Cloud」配下から選びます。クラウドセッションはAnthropic管理のインフラで動き、アプリを閉じても続きます

注意点が2つあります。1つ目は、自分のPC自身へのSSH接続も拒否されることです。ローカルを禁止されたからといって、同じ端末にSSHで入り直す抜け道は塞がれています。2つ目は、SSH先が管理者の許可リスト(sshHostAllowlist)に載っているホストに限られる場合があることです。許可リストの仕組みは、sshHostAllowlistでClaude Code DesktopのSSH接続先を制限するで扱っています。

クラウドセッションも、組織の管理コンソールの「Cloud sessions」で止められている場合があります。この場合はSSHも使えないときに行き先がなくなるため、IT部門に利用可能な環境を確認します。

Windowsで見えるWSLのエントリ

Windowsでは、WSLのエントリも同じようにグレーになります。ただしWSLの可否は、ローカルセッションとは別のポリシーで決まります。WSL側のキーや配布方法はdisableWslSessionsでClaude Code DesktopのWSLを組織展開するにまとまっています。

管理者向け:意図した設定かを確認する

ユーザーからこのエラーの問い合わせが来たら、まず disableDesktopLocalSessions が配られているかを見ます。端末上のセッションを止め、SSHの接続先を絞る典型的な設定は、次の形です。

{
  "disableDesktopLocalSessions": true,
  "sshConfigs": [
    {
      "id": "shared-dev-vm",
      "name": "Shared Dev VM",
      "sshHost": "dev.example.com"
    }
  ],
  "sshHostAllowlist": ["dev.example.com"]
}

3つのキーを同時に配るのは、ユーザーが迷わず使える行き先を残すためです。disableDesktopLocalSessions だけを配ると、新規セッションの既定にできるSSH接続がなく、ユーザーはLocalが灰色になった画面で自分でSSHを設定することになります。

設定を配る際の確認項目は次のとおりです。

  • 値の型: JSONの真偽値 true だけが有効です。文字列の "true" や 1 は無視され、警告がログに残ります
  • Desktopのバージョン: v1.37937.0以降が必要です。それより古いと、キーを配ってもLocalが選べるままです
  • ファイルの読み取り権限: 各開発者のアカウントがmanaged settingsのファイルを読めないと、Desktopはキーを適用しません。JSONが壊れている場合も同様です
  • 配布元: 3つのキーは、配っている中で最上位のmanaged sourceに入れます。サーバー管理の設定を使う場合は、各端末の最上位のMDMポリシーかファイルにも同じ3つのキーを置いておきます。Desktopは起動時にサーバー管理の設定を取得するので、取得が済むまでは端末上のコピーが使われます

JSONが有効かどうかは、端末でファイルを構文チェックにかけると分かります。

python3 -m json.tool /path/to/managed-settings.json

エラーなく整形結果が返れば、構文は正しいです。値の型や読み込み先は別の問題なので、次の手順で画面を確認します。

設定が効いているかを端末で確かめる

Desktopを一度終了して開き直し、環境セレクタを開きます。設定が適用されていれば、次の2点が見えます。

  1. 自分のPCのエントリがグレーになっている
  2. sshConfigs で配った接続(上の例なら「Shared Dev VM」)がSSH配下に並んでいる

自分のPCのエントリがまだ選べる場合は、Desktopのバージョン、JSONの妥当性、その端末が読んでいるmanaged sourceの3点を順に確認します。SSH側の確認は、許可リストにないホスト(例: other.example.com)の接続を追加してみます。Desktopは接続を保存しますが、組織の設定が許可しない旨を出して接続を拒否します。

影響が及ばない範囲

このキーはデスクトップアプリだけが読みます。ターミナルのCLIは読みません。CoworkのセッションやCowork上のスケジュールタスクにも適用されません。クラウドセッションの可否も変わりません(止めるなら管理コンソールの「Cloud sessions」を使います)。

したがって、「Desktopでは端末上のセッションを使えないが、CLIは動く」という状態が起こりえます。これがポリシーの意図なのか抜けなのかは、設定を配った側にしか判断できません。ユーザーがIT部門に問い合わせるときは、次の3点を添えると原因が絞れます。

  1. 環境セレクタで自分のPCのエントリがグレーになっている画面と、ツールチップの表示
  2. Desktopのバージョン
  3. エラーが出たのが、保存済みのLocal環境を選んだときか、既存のセッションを続けたときか

Desktop全体のSSO必須化やデバイス管理ポリシーについては、Claude DesktopのSSO必須化とデバイス管理ポリシーの設定を参照してください。Desktopの起動や認証まわりのエラーは別の原因なので、Claude Code Desktopが起動しない・403エラーの対処法で切り分けます。

まとめ

Couldn't switch environments: the Local environment isn't available anymore. は、端末上のセッションが組織のポリシーで止められている印です。ユーザーは環境をSSHかクラウドに替えれば作業を続けられます。管理者は、止める意図があるなら sshConfigs と sshHostAllowlist を同時に配り、行き先を用意します。意図がないなら、disableDesktopLocalSessions が配られたmanaged sourceを探して外します。

この記事を共有:XはてブLinkedIn