--disable-slash-commandsでスキルとコマンドを丸ごと無効化する
Claude Codeの--disable-slash-commandsはスキルとコマンドを止めるCLIフラグです。--bare・--safe-mode・--restrictedとの守備範囲の違いを公式説明文で比べます。
Claude Codeの--disable-slash-commandsは、起動時に付けるだけでそのセッション中のスキルとコマンドの実行経路をまとめて塞ぐCLIフラグです。公式リファレンスの説明は「Disable all skills and commands for this session」の一文のみで、--bareや--safe-modeのようにhooksやMCPサーバー、CLAUDE.mdの読み込みまで対象に含むとは書かれていません。似た働きの無効化フラグ・設定が複数あるため、何がどこまで止まるかを公式の説明文どうしで突き合わせておく価値があります。
--disable-slash-commandsが対象にするのはスキルとコマンドだけ
Claude Codeの/メニューは一様ではありません。バンドルスキルと組み込みコマンドの違いで扱っているとおり、/clearや/modelのようにCLI本体に固定ロジックとして実装された組み込みコマンド、Anthropicが同梱するバンドルスキル(/code-reviewなど)、バンドルワークフロー(/deep-research)、そしてユーザーが.claude/commands/や.claude/skills/に置く自作コマンド・自作スキルが、同じ/メニューに並びます。--disable-slash-commandsの説明文はこれらを「skills and commands」とひとまとめに表現しており、--bareの説明が「custom commands」と自作コマンドに明示的に限定しているのとは語の選び方が違います。組み込みコマンドそのものまで含めて止まるのか、バンドルスキル・自作コマンドに限られるのかは、この一文だけでは判別できません。
.claude/commands/や.claude/skills/は、クローンしてきたリポジトリの持ち主が用意したファイルをそのまま読み込む仕組みです。信頼していないリポジトリで一時的にセッションを開くときや、CIコンテナで想定外のスキルを実行させたくないときに、実行経路そのものを塞ぐ手段として--disable-slash-commandsが使えます。近い目的の仕組みとして、組織全体で配布する管理者向けスキルだけを読み込ませたくない場合はCLAUDE_CODE_DISABLE_POLICY_SKILLSという環境変数もあり、こちらはシステム全体の管理スキルディレクトリだけをスキップする、対象範囲が逆方向の手段です。
CLIリファレンスの表では、--restrictedのように新しめのフラグには「Requires Claude Code v2.1.248 or later」のようなバージョン要件が明記される行がありますが、--disable-slash-commandsの行にはそうした要件の記載がありません。このフラグにはsettings.json側のキーや対応する環境変数も見当たりません。バンドルスキルのみを対象にするdisableBundledSkillsにはCLAUDE_CODE_DISABLE_BUNDLED_SKILLSという、同じ効果を環境変数だけで呼び出せる仕組みが用意されています。--disable-slash-commandsにはこれに相当するキーがなく、CLI起動時のフラグとしてだけ提供されています。恒久的な設定として敷くものではなく、そのセッション限りで止めたいときに使う位置づけと読めます。ちなみにdisableBundledSkillsとCLAUDE_CODE_DISABLE_BUNDLED_SKILLSはどちらか一方が無効化した状態を、もう一方で有効に戻すことはできません。
もうひとつの副作用として、ファイルベースで定義したサブエージェントの監視があります。新規ディレクトリに置いたサブエージェント定義はセッション開始後のファイル監視の対象外ですが、Agent SDKのサブエージェント定義では--disable-slash-commands付きで起動したセッションはこの監視自体を行わないとされています。スキルとコマンドを止める操作が、関連する周辺機能の挙動にも波及する一例です。
使い方 — フラグを1つ付けて起動するだけ
追加の設定ファイルは不要で、コマンドラインにフラグを渡すだけで有効になります。
claude --disable-slash-commands非対話モードと組み合わせて、スクリプトから叩く1回限りの問い合わせに使うこともできます。
claude --disable-slash-commands -p "このリポジトリの構成を説明して"claude --helpには載らないフラグも存在するため、--helpに出てこないことをそのフラグが使えない根拠にはしないという注意書きが公式リファレンス自体に添えられています。フラグの有無や挙動が変わっていないかは、バージョンを上げたタイミングでchangelogを確認して照合しておくと安全です。
似た無効化フラグ・設定との使い分け
スキルとコマンドだけを止めたいのか、ツール全体まで絞りたいのか、それとも設定不具合の切り分けをしたいのかで選ぶべき手段が変わります。
| 手段 | 対象範囲 | 設定方法 | 向く場面 |
|---|---|---|---|
--disable-slash-commands | 対象範囲スキルと自作コマンドの実行経路 | 設定方法CLI起動時のフラグ | 向く場面セッション単位でスキル・コマンドの実行だけを塞ぎたい |
disableBundledSkills / CLAUDE_CODE_DISABLE_BUNDLED_SKILLS | 対象範囲バンドルスキル・バンドルワークフローのみ(プラグイン・自作スキルは対象外) | 設定方法settings.jsonまたは環境変数 | 向く場面自作スキルは残しつつバンドル分だけ止めたい |
--bare / CLAUDE_CODE_SIMPLE | 対象範囲hooks・スキル・自作コマンド・サブエージェント・プラグイン・MCPサーバー・自動メモリ(auto memory)・CLAUDE.md | 設定方法CLI起動時のフラグ | 向く場面Bash / Read / Editだけの最小構成で起動を高速化したい |
--safe-mode / CLAUDE_CODE_SAFE_MODE | 対象範囲CLAUDE.md・スキル・プラグイン・hook・MCPサーバー・自作コマンド・出力スタイル・テーマ・キーバインド等 | 設定方法CLI起動時のフラグ | 向く場面設定起因の不具合を切り分けたい(ツールと権限は通常通り動く) |
--restricted | 対象範囲コマンド実行系・コード実行系のツールとWebFetch、ファイルアクセスを作業ディレクトリに限定 | 設定方法CLI起動時のフラグ | 向く場面評価ハーネスなど共有マシンでの実行を封じ込めたい |
CLAUDE_CODE_DISABLE_POLICY_SKILLS | 対象範囲システム全体の管理者向けスキルディレクトリのみ | 設定方法環境変数 | 向く場面コンテナやCIでオペレーターが用意したスキルだけを読み込みたくない |
disableBundledSkillsの説明文は特に丁寧で、バンドルスキルとバンドルワークフローを削除する一方、/initのような組み込みコマンドはモデルからは見えなくなっても引き続きタイプできる、/doctorはさらに別扱いで隠れない、プラグインや自作スキルは対象外、という3段階の例外まで明記しています。個別の1つだけを隠すskillOverridesの設定値と具体例は、skillOverridesの記事で詳しく扱っています。--disable-slash-commandsの一文だけの説明にはこうした除外規定が書かれておらず、プラグインが提供するスキルを対象外にするとも読めません。文字通りに読むなら、プラグインのスキルも含めてそのセッションのスキル・コマンドをまとめて止める側の挙動と考えるのが自然です。情報量の粒度が違うぶん、恒久的な運用ルールとして敷くならdisableBundledSkills側、その場限りで全部止めるなら--disable-slash-commands側という向き不向きが分かれます。
ツールの実行そのものを絞る方法もあります。スキルはSkillという組み込みツールを経由して動くため、allowedTools/disallowedToolsで起動時に権限を絞る方法でも--disallowedTools "Skill"のようにツール単位で止められます。--toolsで使える組み込みツールの一覧そのものを絞る方法もありますが、こちらはMCP経由のツールには影響せず、MCPツールも含めて塞ぐには別途--disallowedTools "mcp__*"を重ねる必要があります。スキルやコマンドという単位で一括に止めたいのか、ツール名を個別に指定して絞りたいのかで、--disable-slash-commandsと--tools / --disallowedToolsのどちらが手早いかが変わります。
共有マシンや評価環境での使いどころ
--restrictedの公式説明には「evaluation harnessが共有マシン上でclaudeを動かし、そのマシンのユーザー設定やプロジェクト設定を読ませたくない場合に使う」という具体的な利用シーンが書かれています。Claude Code v2.1.248以降で使えるフラグで、bypassPermissionsモードの起動やクラウドセッションの作成も拒否します。ただし--restrictedが止めるのはコマンド実行系のツールとWebFetch、それにファイルアクセスの範囲であって、スキルや自作コマンドそのものへの言及はありません。プロジェクトが用意したスキルや自作コマンドをそのまま動かしたくない評価環境では、--restrictedに--disable-slash-commandsを重ねることで、ツール制限とスキル・コマンド制限の両方を一度に敷けます。
claude --restricted --disable-slash-commands --strict-mcp-config --mcp-config ./eval-mcp.json -p "query"MCPツールはmcp__サーバー名__ツール名という形式の名前になるため、--disallowedTools "mcp__*"と書けば接続中の全MCPサーバーのツールをまとめて拒否できます。個別のサーバーだけ止めたいならmcp__サーバー名__*のように途中まで指定します。MCPサーバー自体の読み込みを--mcp-configで渡したものだけに絞りたい場合は、上のコマンド例のように--strict-mcp-configを重ねる方法もあります。
逆に、スキルや自作コマンドの実行自体は許可しつつ、その中でシェルコマンドを直接実行する!`...`記法だけを止めたいなら、disableSkillShellExecutionという設定キーが該当します。これは実行そのものを[shell command execution disabled by policy]という文字列に置き換える形の制限で、--disable-slash-commandsのようにスキルの起動自体を止めるものではありません。用途に応じて、セッション単位のフラグとポリシー単位の設定を組み合わせて考える必要があります。
よくある質問
スキルを1つだけ無効化する方法はありますか
--disable-slash-commandsはセッション内のスキルとコマンドを一括で止める全か無かの操作です。1つのスキルだけを止めたいなら、そのスキル自身のfrontmatterにdisable-model-invocation: trueを書くか、skillOverridesで対象を個別に指定する方法があります。frontmatterの書き方はClaude Code Skills完全ガイドで扱っています。
セッションの途中から有効にできますか
公式リファレンス上、--disable-slash-commandsは起動時に渡すCLIフラグとして説明されており、セッションを実行したまま途中で切り替える方法は記載されていません。途中から止めたい場合は、いったんセッションを終了し、フラグを付けて再度起動する必要があります。
まとめ
--disable-slash-commandsは、そのセッション限りでスキルと自作コマンドの実行経路をまとめて塞ぐための、CLIフラグとしてだけ提供された機能です。恒久的にバンドルスキルだけを止めたいならdisableBundledSkills、Bash/Read/Editだけの最小構成で起動を速くしたいなら--bare、設定不具合を切り分けたいなら--safe-mode、評価ハーネスなど共有マシンでの実行を封じ込めたいなら--restrictedとの組み合わせが向いています。スキル単位ではなくツール単位で絞りたい場合は、Skillツールへの--disallowedTools指定や--toolsでの組み込みツール制限も選択肢に入ります。1つのスキルだけを止めたいなら、--disable-slash-commandsではなくdisable-model-invocation: trueやskillOverridesの出番です。どれも公式リファレンス上の説明文の粒度が異なるため、対象範囲を正確に知りたいときは実際の説明文を読み比べるのが確実です。