Claude Codeの制限モード(--restricted)とは|共有マシンで安全に動かす新機能
先に結論:
--restrictedは評価ハーネスなどが共有マシンでClaude Codeを動かす際に、コマンド実行系ツールとWebFetchを除去し、そのマシンのユーザー・プロジェクト設定も読ませずに安全へ隔離して実行するv2.1.248以降の起動フラグです。
Claude Codeを自分の管理外のマシン、たとえば共有の評価環境や一時的に借りたマシンで動かしたいことがあります。
そのまま起動すると、そのマシンに保存された設定やコマンド実行権限までClaude Codeに渡ってしまいます。
本記事では2026年8月時点の公式ドキュメント(code.claude.com/docs)に基づき、この課題に対応する新フラグ--restricted(制限モード)の制限内容と使い方、似た機能である--safe-modeとの違いを整理します。
この記事の要点
--restrictedはClaude Code v2.1.248以降で使える起動フラグで、claude --restricted -p "query"のように指定します。- コマンド・コード実行系の組み込みツールとWebFetchが除去され、
--toolsで個別に名指しした場合のみ再有効化できます(defaultプリセット経由では不可)。- 設定はmanaged settingsと
--settingsだけが読み込まれ、そのマシンのユーザー・プロジェクトのsettings.jsonは無視されます。bypassPermissionsモードの指定とクラウドセッションの作成は、--restricted下では拒否されます。- 似た名前の
--safe-modeはCLAUDE.md・skills・hooksなどカスタマイズを丸ごと無効化するトラブルシュート用フラグで、目的が異なります。
前提・動作環境
この記事はターミナル版のClaude Code v2.1.248以降を前提にしています。
--restrictedはそれより古いバージョンでは使えないため、まず手元のバージョンを確認してください。
claude --version
2.1.248 (Claude Code)
npm版・WinGet版は自動更新の対象外です。表示されたバージョンが古い場合は、先にアップデート方法の手順で最新化してください。
—restrictedとは何か: 制限される範囲
--restrictedは、評価ハーネスが共有マシン上でclaudeを駆動するような場面向けの起動フラグです。
「コマンドを実行させたくない」「そのマシンのユーザー・プロジェクト設定を読ませたくない」という2つの要求に応えるために、通常起動と比べて次の6点が変わります。
| 項目 | 通常のClaude Code | --restricted起動時 |
|---|---|---|
| コマンド・コード実行系の組み込みツール | 利用可能 | 除去(--toolsで個別に名指しした場合のみ再有効化可) |
| WebFetch | 利用可能 | 除去(同上) |
| 組み込みファイルツールの範囲 | 設定次第で作業ディレクトリ外も参照可 | working directories内に限定 |
| 読み込む設定 | ユーザー設定・プロジェクト設定・managed settings | managed settingsと--settingsのみ |
bypassPermissionsモード | 選択可能 | 拒否される |
| クラウドセッションの作成 | 可能 | 拒否される |
ファイルの読み書き自体は禁止されるわけではなく、作業ディレクトリ内に閉じ込められる点がポイントです。
除去されるのはコマンド・コード実行系のツールとWebFetchで、ファイル編集や検索のような組み込みツールは範囲を絞ったうえで引き続き使えます。
どんな場面で使うか
公式ドキュメントが想定する典型例は、評価ハーネス(ベンチマークやテストの自動実行基盤)が共有マシン上でclaudeを繰り返し起動するケースです。
このほか、次のような場面でも安全側に倒す選択肢になります。
- CI・評価環境: 複数のジョブが同じマシンを使い回し、ジョブ間で設定や実行権限を持ち越したくないとき
- 一時的に借りたマシン: 自分のホームディレクトリの設定を読ませたくない、他人のマシンで一時的にClaude Codeを動かすとき
- 外部から渡されたプロンプトを扱うとき: WebFetchやコマンド実行を止めておき、被害範囲を作業ディレクトリ内に限定したいとき
普段の自分専用マシンでの開発作業では、後述する通常のpermissions設定やSandboxの方が使い勝手がよい場面が多いです。
使い方: 起動方法と—toolsでの個別許可
基本の起動方法は、-p(print mode)と組み合わせてワンショットで実行する形です。
claude --restricted -p "query"
除去されたコマンド実行系ツールやWebFetchをどうしても使いたい場合は、--toolsフラグでツール名を個別に指定すると再有効化できます。
--toolsにdefaultのようなプリセット名を渡しても、--restricted下のツール除去は解除されません。
必ずBashのような個別のツール名で指定する必要があり、正確な指定方法は公式ドキュメントで確認してください。
—safe-mode・通常の権限設定・Sandboxとの違い
Claude Codeには名前が紛らわしい--safe-modeという別フラグもあります。
こちらは「設定が壊れた時の切り分け」が目的で、CLAUDE.md・skills・プラグイン・hooks・MCPサーバー・カスタムコマンドやエージェント・出力スタイル・ワークフロー・カスタムテーマ・カスタムキーバインド・ステータスラインやファイル候補コマンド・LSPサーバー・auto memoryを丸ごと無効化して起動します。
一方で認証・モデル選択・組み込みツール・権限まわりは通常通り動作し、モデルが自動フォールバックする原因がカスタマイズ側にあるかどうかを切り分ける用途などで使います。
managed settingsのポリシーは--safe-modeでも適用され続けますが、managed pluginsやmanaged skills、managed CLAUDE.mdは読み込まれません。
つまり--restrictedが「安全な隔離実行」、--safe-modeが「カスタマイズの切り分け」という目的の違いがあります。
普段の権限管理や自動実行のチューニングには、この2つのフラグよりも権限設定(permissions)やSandbox、settings.jsonの使い分けの方が日常的な選択肢です。
| 項目 | --restricted | --safe-mode | 通常のpermissions設定 | Sandbox |
|---|---|---|---|---|
| 目的 | 評価ハーネス等での安全な隔離実行 | 設定崩れのトラブルシュート | 実行前の確認プロンプト調整 | OSレベルでコマンドの到達範囲を制限 |
| 無効化・除去される対象 | コマンド実行系ツール・WebFetch・ユーザー/プロジェクト設定 | CLAUDE.md・skills・plugins・hooks・MCP・カスタムコマンド等 | なし(確認要否の調整のみ) | なし(触れる範囲を制限するだけ) |
| 認証・モデル選択 | 通常通り | 通常通り | 通常通り | 通常通り |
| 主な利用シーン | 共有マシン・評価環境 | 動作がおかしい時の切り分け | 日常のセキュリティ調整 | 確認なしでの自動実行 |
つまずきポイント/よくあるエラー
間違っていませんが、仕様上`default`というプリセット名を渡しても解除されないのです。`Bash`のように個別のツール名を`--tools`へ指定してください。
--tools defaultと書いてもコマンド実行が戻らない: プリセット名経由の再有効化はできない仕様です。個別のツール名を指定してください。- いつものallow/denyルールが効かない:
--restricted下ではユーザー・プロジェクトのsettings.jsonが読み込まれず、managed settingsと--settingsだけが有効です。普段のルールを反映させたい場合は--settingsでファイルを明示的に渡す必要があります。 --dangerously-skip-permissionsやbypassPermissionsを付けても拒否される:--restrictedはbypassPermissions自体を拒否する仕様なので、確認スキップと併用はできません。- クラウドセッションを作ろうとして失敗する:
--restricted下ではクラウドセッションの作成が拒否されます。ローカルでの実行に限定されます。
よくある質問
—restrictedと—safe-modeはどちらを使えばいいですか?
共有マシンでの安全な隔離実行が目的なら--restricted、CLAUDE.mdやhooksなどのカスタマイズが原因で動作がおかしいときの切り分けが目的なら--safe-modeを使います。名前は似ていますが目的が異なるフラグです。
—restricted中でもファイル編集はできますか?
はい、できます。除去されるのはコマンド・コード実行系のツールとWebFetchで、組み込みのファイルツールは作業ディレクトリ(working directories)内に範囲を絞ったうえで引き続き使えます。
v2.1.248より前のバージョンでも—restrictedは使えますか?
使えません。--restrictedはClaude Code v2.1.248以降でのみ利用できるフラグなので、claude --versionで手元のバージョンを確認し、古い場合はアップデートしてください。
まとめ
--restrictedは、評価ハーネスなどが共有マシンでClaude Codeを駆動する場面向けに、コマンド実行系ツールとWebFetchの除去・設定の非読み込み・bypassPermissionsとクラウドセッション作成の拒否をまとめて行うv2.1.248以降の起動フラグです。
除去されたツールは--toolsで個別のツール名を指定すれば再有効化できますが、defaultプリセット経由では解除できない点に注意してください。
似た名前の--safe-modeは目的が異なり、カスタマイズを丸ごと無効化して設定崩れを切り分けるためのフラグです。
日常の権限管理には権限設定(permissions)やSandbox、settings.jsonの使い分けもあわせてご覧ください。
Claude Code全体の使い方は「Claude Codeの使い方完全ガイド」、2026年8月の他のアップデートは「Claude Code最新アップデートまとめ【2026年8月】」で確認できます。
--restrictedで起動したあと--tools defaultって書けばBashが戻ると思ったのに、コマンド実行がずっと使えないままです…ぼくの書き方、間違ってますか?