Claude Codeを安全に使いたい——クライアントから受け取ったばかりのリポジトリや、素性のよく分からないOSSを読ませるとき、勝手にシェルコマンドを実行されたり、リポジトリ内の設定ファイルで権限を広げられたりしないか不安だった方は多いはずです。結論から言えば、2026年8月27日公開のClaude Code v2.1.248で追加された--restricted(制限モード)を使うと、コマンド実行・コード実行・WebFetchのツールをそもそも取り除き、ファイル操作を作業ディレクトリ内に閉じ込め、bypassPermissionsを拒否し、ユーザー・プロジェクト・ローカルの設定ファイルを無視した状態でClaude Codeを起動できます。この記事では、制限モードが何を封じる機能なのか、これまでの権限モードやサンドボックスと何が違うのか、--restrictedとCLAUDE_CODE_RESTRICTED=1の使い方、そして筆者がサイト制作や自社ツール開発で未知のコードを安全に扱うためにどう使っているかまで、コマンド例つきでまとめます。
この記事の要点
- Claude Code v2.1.248(2026-08-27)で
--restricted(環境変数はCLAUDE_CODE_RESTRICTED=1)が追加され、コマンド実行・コード実行・WebFetchのツールを外し、ファイル操作を作業ディレクトリ内に限定して起動できるようになりました。 - 権限モードが「実行前に聞くかどうか」を切り替えるのに対し、制限モードは危険なツールそのものを取り除き、設定ファイルも無視します。リポジトリ側の
.claude/settings.jsonで権限を広げ返される心配がありません。 - 必要なツールだけは
--toolsで名指しして通せます。筆者は未知のクライアントリポジトリを読むときと、ファイル編集だけをさせたい自動化で使い分けています。
01Claude Codeの制限モード(–restricted)とは
制限モードが封じるのは、コマンド実行・コード実行・WebFetchの3つのツールです。起動時に--restricted(または環境変数CLAUDE_CODE_RESTRICTED=1)を付けると、これらの組み込みツールを取り除き、ファイル操作を作業ディレクトリの中だけに閉じ込めた状態でClaude Codeを立ち上げます。あわせてbypassPermissions(すべての確認を飛ばすモード)を拒否し、ユーザー・プロジェクト・ローカルの設定ファイルを読み込みません。ひとことで言えば、「読んで書くことはできるが、勝手にコマンドを走らせたり外に出たりはできない」Claude Codeを、その場だけ用意するための起動オプションです。
読み書きの機能は残る
封じられるのは実行と外部取得だけで、ファイルの読み取りと編集は残ります。コードレビューやドキュメント作成のように「ファイルを見て、必要なら直す」用途は、制限モードのままで問題なく回せます。
v2.1.248(2026-08-27)で追加された
公式のchangelogでは、2026年8月27日のv2.1.248のエントリに「Added --restricted (or CLAUDE_CODE_RESTRICTED=1): removes the built-in tools that run commands or code and WebFetch (unless named in --tools), keeps file tools inside the working directory, refuses bypassPermissions, and ignores user, project and local settings files」と記載されています。制限モードはこのバージョン以降のClaude Codeで使えます。
制限モードが無効化するものは何か?
制限モードをオンにすると、Claude Codeの手札から次の4つが同時に外れます。読み書きは残るため、コードレビューやドキュメント作成のように「ファイルを見て、必要なら直す」用途はそのまま使えます。
| 制限モードで変わること | 通常起動 | –restricted起動 |
|---|---|---|
| シェルコマンド実行(Bash等) | 使える(モードにより確認あり) | ツールごと除去(--toolsで明示しない限り) |
| コード実行系ツール | 使える | ツールごと除去 |
| WebFetch(外部URL取得) | 使える | ツールごと除去 |
| ファイル読み書きの範囲 | 設定次第で作業ディレクトリ外も可 | 作業ディレクトリ内に限定 |
| bypassPermissions | コンテナ等で使える | 拒否される |
| 設定ファイル(user/project/local) | 読み込む | 無視する |
ポイントは最後の2行です。制限モードは、実行するあなた自身がbypassPermissionsを選ぶことも禁じ、リポジトリに置かれた.claude/settings.jsonのような設定も読みません。つまり「開いた相手のコードが、こちらの権限をこっそり広げてくる」経路を塞いだ状態になります。Claude Codeの権限そのものの考え方はClaude Code 権限バイパスとは?修正内容と対処でも整理しています。
02これまでの権限モード・サンドボックスと何が違うか【比較表】
Claude Codeにはもともと「実行前に確認するか」を切り替える権限モードと、コマンドが触れる範囲を絞るサンドボックスがあります。制限モードはそのどちらとも役割が違い、ツールの有無そのものを起動時に決めてしまう点が新しい仕組みです。まずは3つの層を並べて整理します。
権限モードは「聞くかどうか」を切り替える仕組み
権限モードは、Claudeが行動する前にあなたへ確認するかどうかを決めるものです。公式ドキュメントによると、確認の厳しさが異なる6つのモードがあります。いずれも「そのツールを使ってよいか聞くか・聞かないか」を変えるだけで、ツール自体はセッションに存在し続けます。
6つの権限モードの一覧
それぞれ「確認なしで動く範囲」が違います。制限モードと比べるうえで、まず既存の6モードを押さえておきます。
| モード | 確認なしで動く範囲 | 向いている場面 |
|---|---|---|
default(Manual) |
読み取りのみ | すべての操作を自分で確認したいとき |
acceptEdits |
読み取り・ファイル編集・基本的なファイル操作 | レビューしながらコードを直すとき |
plan |
読み取りと、計画承認までの範囲 | 変更前にコードベースを調べるとき |
auto |
分類器が裏で審査したうえでほぼ全部 | 長い作業・確認疲れを減らしたいとき |
dontAsk |
事前承認したツールだけ | ロックダウンしたCI・スクリプト |
bypassPermissions |
すべて素通り | 隔離したコンテナ・VMの中だけ |
制限モードは「ツールごと外す」点が違う
制限モードはここが決定的に異なります。dontAskが「事前承認したツールだけ確認なしで動かす」のに対し、--restrictedはコマンド実行・コード実行・WebFetchを手札から取り除くため、承認しようがしまいがそもそも呼べません。さらに設定ファイルを無視するので、プロジェクト側の許可ルールで穴を開け直すこともできません。「確認を厳しくする」のではなく「危険な道具を持たせない」という考え方です。
Bashサンドボックスとの違いは何か?
Bashサンドボックスは、コマンドが実行された後に「そのコマンドが何に触れるか」(ファイルシステムやネットワークの到達範囲)を制限する仕組みで、macOS・Linux・WSL2で使えます。制限モードは実行される前の段階で、コマンド実行ツール自体を外します。両者は目的が別で、組み合わせれば「実行系は原則持たせず、どうしても必要な範囲だけサンドボックス内で動かす」という多層防御にできます。次の表は3層の関係です。
| 層 | 作用する段階 | 何を制御するか | OSレベルの隔離 |
|---|---|---|---|
| 権限モード | 実行の前 | そのツールを使う前に確認するか(default/dontAsk/bypassPermissions ほか)。ツール自体は残る | なし |
| 制限モード(–restricted) | 起動時 | 危険なツールを外す・設定ファイルを無視・作業ディレクトリに限定 | なし |
| サンドボックス/隔離 | 実行の後 | 実行されたコマンドの到達範囲(ファイル・ネットワーク)を絞る | あり(Bashサンドボックス・コンテナ/VM) |
この差でアウトプット・運用はどう変わると想定されるか
権限モードだけで安全を担保する場合、実行者は毎回の確認プロンプトに集中し続けるか、承認を自動化して穴が開くリスクを負うかの二択になりがちでした。制限モードを使うと、確認の集中力に頼らずに「そもそもコマンドを実行できないClaude」を渡せるため、未知のコードを読む作業では、想定として、誤って破壊的コマンドを承認してしまう事故が構造的に起きにくくなります。あわせて設定ファイルを無視する仕様から、他人のリポジトリを開いても手元の権限が広がらない前提で作業を組めると考えられます。ここは実際に未知リポジトリの調査で使い、確認プロンプトの数が明確に減ることを確認しています。
03制限モードの使い方|–restrictedとCLAUDE_CODE_RESTRICTED=1
使い方は難しくありません。起動時にフラグを付けるか、環境変数を立てるだけです。ここからは3つの起動パターンを紹介します。
①CLIフラグで一時的にオンにする
その場のセッションだけ制限したいときは、フラグを足して起動します。
claude --restricted
この状態では、Claudeはファイルの読み書き(作業ディレクトリ内)はできますが、シェルコマンドやコード実行、WebFetchは呼べません。未知のリポジトリを開いてまず全体を読ませたい、といった調査の入り口に向いています。
②–toolsで必要なツールだけ通す
「基本は封じたいが、この作業ではファイル検索だけは動かしたい」という場合、--toolsでツールを名指しすると、制限モードでもそのツールは残せます。
claude --restricted --tools "Read" "Grep"
名前を挙げていないコマンド実行系やWebFetchは引き続き外れたままです。許可の起点を「全部禁止、必要な分だけ足す」に反転できるため、許可ルールを積み上げるより穴が生まれにくい設計にできます。
③環境変数で常時オンにする
特定の端末やコンテナで常に制限したいときは、環境変数を立てておきます。
export CLAUDE_CODE_RESTRICTED=1
claude
この場合も設定ファイルは無視されるため、その環境で起動したClaude Codeは、プロジェクト側の設定に関係なく制限された状態になります。共有端末や、非エンジニアに渡す社内ラッパーの内側で有効にしておくと、うっかり危険な操作が走る余地を減らせます。
04未知のクライアントリポジトリを安全に読む【実践・サイト制作】
制作会社の実務では、引き継いだサイトや他社が作ったWordPressテーマ、素性の分からないプラグインのコードを読む場面が頻繁にあります。筆者はこうした「中身が信用しきれないコード」をClaude Codeに読ませるとき、制限モードで起動しています。手順はシンプルです。
- リポジトリを作業ディレクトリとして開き、
claude --restricted --tools "Read" "Grep" "Glob"で起動する。 - 「このリポジトリの構成と、外部通信・ファイル書き込みを行う箇所を洗い出して」と依頼する。
- Claudeはファイルを読んで報告しますが、コマンド実行や外部取得はできないため、リポジトリ内のスクリプトが勝手に走ることはありません。
この使い方の利点は、リポジトリに.claude/settings.jsonが同梱されていても無視される点です。他人の設定で権限を広げ返される経路がないため、素性の分からないコードでも、読む作業に限れば安心して任せられます。調査が終わって実際に手を入れる段になったら、制限を外して通常モードに切り替えます。安全な運用の考え方はClaude Securityとは?脆弱性をコミット前に止める条件とあわせて設計すると、読む段階と直す段階で守りの層を変えられます。
05ファイル編集専用でCI・自社ツールに組み込む【実践】
自社の自動化でも制限モードは役立ちます。この記事では、記事や設定ファイルをまとめて整形する定期実行のスクリプトから、Claude Codeを「ファイルの編集だけができる状態」で呼び出しています。コマンドを走らせる必要のない整形・置換・原稿修正のような作業では、実行系ツールを持たせない方が安全だからです。
ヘッドレス実行で編集だけ許可する
非対話(-p)でプロンプトを渡す自動処理に、環境変数を組み合わせます。
CLAUDE_CODE_RESTRICTED=1 claude -p "docs配下のMarkdownの表記ゆれを統一して保存して"
この呼び出しでは、Claudeは作業ディレクトリ内のファイルを読み書きできますが、シェルコマンドや外部取得はできません。CIやcronから回す処理で「ファイルを直す以上のことはさせない」と決められるため、パイプラインが予期しないコマンドを実行してしまう事故を避けられます。使用量の上限にあたったときの挙動はClaude Code usage limit reachedの対処法と再開手順も参考にしてください。
非エンジニアに渡す社内ツールの内側で有効にする
社内の非エンジニア向けに「フォルダを指定して原稿を整えるだけ」の簡易ツールを配るとき、ラッパーの内側でCLAUDE_CODE_RESTRICTED=1を立てておくと、利用者がどんな指示を書いても、コマンド実行や作業ディレクトリ外への書き込みは起きません。渡す側が権限設計を毎回説明しなくても、道具立ての時点で危険な操作を不可能にできるのが利点です。スラッシュコマンドで定型作業をまとめる工夫は非エンジニアのClaude Codeスラッシュコマンド12選で紹介しています。
06制限モードを使うときの注意点
コマンド実行が要る作業には向かない
便利な反面、制限モードは「できないこと」を増やす機能なので、向かない場面もあります。コマンド実行が要る作業(テスト実行、ビルド、gitの操作、パッケージのインストールなど)はそのままではできません。必要なら--toolsで個別に通すか、その作業だけ通常モードに戻します。
隔離環境の代わりにはならない
制限モードはコンテナやVMのような隔離の代わりにはなりません。あくまでClaude Codeが持つツールと設定の読み込みを絞る仕組みで、OSレベルの隔離は別途サンドボックスや隔離環境が担います。完全に信頼できないコードを実行まで含めて扱うなら、制限モードに加えて隔離環境を併用するのが安全です。最後に、設定ファイルを無視する仕様は「意図した設定も適用されない」ことを意味します。普段使っている許可ルールやフックが必要な作業では、制限モードを外して運用してください。
FAQよくある質問
制限モードはどのバージョンから使えますか?
--restrictedおよびCLAUDE_CODE_RESTRICTED=1は、2026年8月27日公開のClaude Code v2.1.248から使えます。それ以前のバージョンでは、権限モードやサンドボックスで安全性を調整します。
制限モードでもファイルは編集できますか?
できます。ファイル操作のツールは残り、作業ディレクトリの中に限定されます。外れるのはコマンド実行・コード実行・WebFetchで、読み書き自体は可能です。
制限モードと権限モードは何が違いますか?
権限モードは「実行前に確認するか」を切り替えるもので、ツール自体は残ります。制限モードは危険なツールをそもそも取り除き、さらに設定ファイルを無視します。確認を厳しくするのではなく、道具を持たせない考え方です。
制限モード中に一部のツールだけ使いたいときは?
--toolsでツール名を挙げると、そのツールは制限モードでも残せます。たとえばclaude --restricted --tools "Read" "Grep"のように、必要なものだけを名指しで通します。
制限モードはサンドボックスの代わりになりますか?
なりません。制限モードはツールと設定の読み込みを絞る仕組みで、OSレベルの隔離はサンドボックスや隔離環境が担います。信頼できないコードを実行まで含めて扱うなら、両方を併用してください。
08まとめ:制限モードを使うかの判断基準
制限モードを使うかは、「その作業でClaudeにコマンドを実行させる必要があるか」で決まります。未知のコードを読む・原稿や設定ファイルを整えるだけ、といった読み書き中心の作業なら、--restrictedで危険なツールを外しておくのが失敗しない進め方です。逆にテストやビルド、gitの操作が要るなら、必要なツールを--toolsで通すか、通常モードに戻して権限モードとサンドボックスで守ります。まずは信用しきれないリポジトリを1つ、claude --restrictedで開いてみて、読む作業がそのまま回るか確かめるのがおすすめです。権限設計の全体像はClaude Code 権限バイパスとは?修正内容と対処、最近の更新はClaude Code 2.1.243の新機能|キーレスサインインと変更点でまとめています。
09出典
- Anthropic「Claude Code changelog」v2.1.248(2026-08-27)https://code.claude.com/docs/en/changelog
- Anthropic「Choose a permission mode」https://code.claude.com/docs/en/permission-modes
- Anthropic「Bash sandboxing」https://code.claude.com/docs/en/sandboxing