
Claude Code の CLI と Claude Desktop の Code タブは MDM で個別に無効化できるか試してみた
はじめに
Claude Enterprise を導入した組織では、部門ごとに Claude Code を利用可否を使い分けたいという要望がよくあります。開発部門には使わせたいが、非エンジニア部門には使わせたくないといったケースです。部門ごとの制御は管理コンソールのカスタムロールで設定できます。そこはよいとしてこの部分の MDM を使った制限はどうなのか気になったので試してみました。

確認結果
試した結果を整理すると次の 4 パターンになります。
| やりたいこと | 手段 | 可否 |
|---|---|---|
| 部門ごとに利用可否を分ける | カスタムロール(管理コンソール) | 可 |
| CLI と Claude Desktop の Code タブをまとめて無効化する | requiredMaximumVersion を低い値に固定(MDM) |
可 |
| Claude Desktop の Code タブだけ無効化する | isClaudeCodeForDesktopEnabled を false(MDM) |
可 |
| CLI だけ無効化して Claude Desktop の Code タブは残す | この設定はなかった | 不可 |
カスタムロールでは Cladue Code CLI と Claude Desktop の Code タブを区別できません。ユーザーの PC 単位で分けたいときは MDM を使います。ただ、CLI だけを制限とするという設定はできませんでした。
検証環境
確認は 2026 年 7 月 27 日時点です。管理設定の UI や挙動は変わる可能性が高いため検証時のバージョンは以下です。
| 項目 | 値 |
|---|---|
| OS | macOS 26.5.2 |
| Claude Desktop | 1.24012.9 |
| Claude Code CLI | 2.1.220 |
| プラン | Claude Enterprise |
| MDM の再現方法 | /Library/Managed Preferences/ にファイル保存 |
今回は Jamf や Intune といった MDM ツールは用意できませんでした。代わりに MDM がファイルを配布する先のパス(/Library/Managed Preferences/)に直接ファイルを保存して検証しました。
検証をはじめる前
検証開始時点では Claude Code CLI と Claude Desktop の Code タブがどちらも通常どおり使えていました。

Code タブも同様です。

Claude Code を設定できる場所は 3 つある
Claude Code の有効と無効を切り替える設定は、大きく 3 つの場所にあります。
| 区分 | 設定場所 | 粒度 | CLI と Code タブの制限を分けられるか |
|---|---|---|---|
| カスタムロール | 管理コンソール > ロール編集 > 機能タブ | ロール単位 | 不可 |
| 組織設定 | 管理コンソール > Claude Code 設定 | 組織全体 | 一部(デスクトップ、Web のトグルがある) |
| MDM によるファイル配布 | 各 PC にファイル保存 | PC 単位 | 一部(Code タブのみ制限可) |
カスタムロールの設定は CLI と Code タブを区別しない
管理コンソールのカスタムロール編集画面(機能タブ)には「Claude Code」というチェックボックスが 1 つあるだけで、「Claude Code Desktop」という独立した項目はありません。

このチェックを外すと CLI と Code タブの両方が使えなくなることは次の記事で検証しています。この 1 つのフラグが CLI と Code タブをまとめて制限するため、ロール単位で片方だけを制御できません。
Claude Code CLI と Claude Desktop を別ドメインで管理している
MDM では、2 つのドメインが役割を分担しています。
| ドメイン | 役割 |
|---|---|
com.anthropic.claudefordesktop(Windows: SOFTWARE\Policies\Claude) |
Claude Desktop 自体の機能。Code タブの有効と無効、自動更新など |
com.anthropic.claudecode(Windows: HKLM\SOFTWARE\Policies\ClaudeCode) |
Claude Code エンジンのポリシー。バージョン範囲や権限など |
com.anthropic.claudefordesktop は Claude Desktop の機能トグルで、Code タブだけを独立して制限できます。com.anthropic.claudecode はエンジンのポリシーで、CLI だけでなく、Code タブが内部で起動する同じエンジンにも影響があります。
なお com.anthropic.claudecode への配信方法は公式ドキュメントに優先順位付きで 4 経路が挙げられています。サーバー管理設定、plist やレジストリでの配信、ファイル配置、Windows ユーザーレジストリの 4 つです。今回試すのは、このうちの plist によるレジストリ配信です。
参考: Decide how settings reach devices / Desktop application
Claude Desktop の Code タブだけ無効化する
Claude Desktop には、Code タブの有効と無効を切り替えるマシンレベルのポリシーがあります。公式ドキュメントには、MDM で Claude Desktop の Code タブを有効、無効にできると記載されています。キー名までは記載されていませんが検証では isClaudeCodeForDesktopEnabled を false にして配置したところ、Code タブが無効化されました。
/Library/Managed Preferences/com.anthropic.claudefordesktop.plist を次の内容で用意します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>isClaudeCodeForDesktopEnabled</key>
<false/>
</dict>
</plist>
ファイルを保存し Claude Desktop を再起動します。
sudo cp com.anthropic.claudefordesktop.plist /Library/Managed\ Preferences/
設定ファイルを保存して再起動すると Code タブは無効化され、画面には「Code は組織の管理者によって無効化されています」と表示されました。

同じマシンのターミナルでは claude コマンドが通常どおり起動しました。Code タブだけをピンポイントで止められることが確認できました。

検証後、設定ファイルを削除すれば元の状態に戻りました。
CLI だけ無効化できるのかチャレンジ
では逆に CLI だけを止めるにはどうするか。Claude Desktop の isClaudeCodeForDesktopEnabled に相当する「CLI を単体で停止するキー」は見当たりませんでした。
これから使う requiredMaximumVersion は本来のバージョン統制機能を流用して制御してみたものです。公式な無効化手段ではありません。そして、すべてのサブコマンドを止めるわけではなかったのでどのみち完全な制御にはなりませんでした。
requiredMaximumVersion は本来、組織が承認したバージョン範囲外の Claude Code を起動させないための設定です。公式ドキュメントには次のように記載されています。
Refuse to start at all when the running version is outside an org-approved range. Stronger than
minimumVersion, which only blocks downgrades.
これを流用して許可する最大バージョンを極端に低いバージョン(例: 0.0.1)を指定します。すると現行の CLI のバージョンは「新しすぎる」と判定され、なにか起きるはずです。
/Library/Managed Preferences/com.anthropic.claudecode.plist を次の内容で用意します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>requiredMaximumVersion</key>
<string>0.0.1</string>
</dict>
</plist>
sudo cp com.anthropic.claudecode.plist /Library/Managed\ Preferences/
新しいターミナルで claude を実行すると起動時にブロックされました。エラーには実行中のバージョン(2.1.220)と、組織が許可した最大バージョン(0.0.1)であると表示されてますね。

ブロックされた状態でも claude doctor は起動しインストール状況を確認できました。サブコマンドまでは制限できないようです。

この設定だと Claude Desktop の Code タブも影響を受ける
requiredMaximumVersion を設定した状態で、Claude Desktop の Code タブを使おうとすると同じようにブロックされました。今回は CLI 側の plist(com.anthropic.claudecode)だけを配置し、Claude Desktop 側の plist は撤去済みの状態で確認しました。クラッシュ表示と、詳細を開くと CLI と同じくバージョン制限に引っかかったエラーが表示されました。

エラーに出たバージョン(2.1.219)が、CLI 単体(2.1.220)とわずかに違います。Claude Desktop にはバンドルされた Claude Code が同梱され、別途インストールする CLI とはバージョンが独立しているようです。Code タブは内部で Claude Code のエンジンを起動しており、そのエンジンが同じバージョン制限に引っかかります。公式ドキュメントにも、Claude Desktop が CLI と同じエンジンで動くと明記されています。
Desktop runs the same engine as the CLI with a graphical interface.
結局requiredMaximumVersion は CLI だけを止めることはできなく、CLI と Code タブの両方が使えなくなります。CLI だけ止めて Claude Desktop の Code タブは残すというピンポイントの制御はできませんでした。この要件に需要があるかはまた別の話しですが。
まとめ
カスタムロールでは CLI と Code タブを区別できません。MDM なら設定ドメインが分かれているため、Claude Desktop の Code タブだけを止めて CLI を残す、といった PC 単位の制御ができました。ただし CLI 向けのバージョン制限は Code タブにも有効だったため、CLI だけを止めるといったピンポイントの制御は今回の方法では実現できませんでした。
おわりに
MDM を利用した Claude の制限の勉強に手元で試してみました。ドキュメントを読んでいてもいまいち頭に入ってこないので一度手を動かして確認していた内容の 1 つでした。





