結論: Claude Code v2.1.248(2026年8月27日公開)で追加された --restricted フラグは、評価ハーネスや共有マシン、外部委託先の作業環境でClaude Codeを動かすときに、①コマンド実行系ツールとWebFetchの剥奪、②ファイル操作の作業ディレクトリ限定、③ユーザー・プロジェクト・ローカル設定を無視しmanaged settingsと--settingsのみ読み込む、④bypassPermissions拒否とクラウドセッション作成拒否、という4つの制限を同時に強制する起動モードです。
- 公式CLIリファレンスに明記された起動コマンドは
claude --restricted -p "query"。v2.1.248以降が必須です。 - 実行系ツール・WebFetchはデフォルトで削除され、復活させるには
--toolsで個別指定する必要があります(defaultプリセット経由では復活できません)。 - 2026年8月時点で、環境変数だけで同等の制御ができるかどうかは公式ドキュメントで確認できていません。フラグ指定が確認済みの唯一の方法です。
対象読者: Claude Codeを共有環境・CI/CD・第三者評価パイプライン・監査対象環境で動かしている開発者、セキュリティ担当、情報システム部門
今日やること: 自社のCIジョブや外部委託先向け環境の1つを選び、--restricted を試験導入して挙動を確認する
2026年8月時点のスナップショット — 何が確定していて何が未確認か
まず日付を明確にしておきます。この記事は2026年8月31日時点の公式情報にもとづいています。--restricted はClaude Code v2.1.248(2026年8月27日リリース)で追加された機能で、公式チェンジログには次のように記載されています。
“Added
--restricted: removes the built-in tools that run commands or code andWebFetch(unless named in--tools), keeps file tools inside the working directory, refusesbypassPermissions, and ignores user, project and local settings files”
さらに公式CLIリファレンスには、より詳しい説明が載っています。
“Start in restricted mode. Use it when an evaluation harness drives
claudeon a shared machine and Claude Code must not run commands or read that machine’s user and project settings.”
つまり公式が想定している一次ユースケースは「評価ハーネス(ベンチマークやテストの自動実行基盤)が、共有マシン上でClaude Codeを動かす」場面です。この記事ではこれを起点に、CI/CDや外部委託、監査対応環境への応用を整理します。
未確認事項の明記: 一部の二次情報源では「CLAUDE_CODE_RESTRICTED=1 という環境変数でも同じ効果が得られる」という記載が見られましたが、2026年8月31日時点で公式CLIリファレンス(code.claude.com/docs/en/cli-reference)を直接確認したところ、この環境変数についての記載は見当たりませんでした。本記事では公式ドキュメントで直接確認できた --restricted フラグのみを実装方法として扱い、環境変数指定は「未確認」として扱います。
–restrictedモードが強制する4つの制限
公式ドキュメントの記述を分解すると、--restricted は次の4点を同時に強制します。
1. 実行系ツールとWebFetchの剥奪
Bashなど「コマンドやコードを実行する組み込みツール」と WebFetch がデフォルトで取り除かれます。公式リファレンスは「--tools で個別に名前を指定しない限り」復活しない、かつ「default プリセット経由では復活できない」と明記しています。つまり、うっかり --tools default のような指定をしても実行系ツールは戻ってきません。
2. ファイル操作の作業ディレクトリ限定
組み込みのファイルツールは「作業ディレクトリ(working directories)」の中に閉じ込められます。通常モードでも読み取り専用アクセスは作業ディレクトリ+追加ディレクトリの範囲で承認不要になる仕組みがありますが、--restricted ではこの範囲そのものが上限として機能し、範囲外への読み書きができなくなります。
3. 設定ファイルの読み込み制限
ユーザー設定・プロジェクト設定・ローカル設定は無視され、読み込まれるのはmanaged settingsと--settingsで明示的に渡した値だけになります。managed settingsは公式ドキュメントで「組織が全開発者のマシンに配布する設定で、Claude Codeはこれを他のどのレベルよりも優先して適用し、ユーザー・プロジェクト・ローカル・--settingsの値では上書きできない」と説明されている、IT管理者側が統制するレイヤーです。--restricted はこのmanaged settingsレイヤーだけを信頼する設計になっています。
4. bypassPermissions拒否とクラウドセッション作成拒否
--restricted は bypassPermissions(いわゆる全チェックスキップモード)の指定を拒否します。「制限を外して速く進める」という組み合わせ自体ができない設計です。加えて、restrictedセッションから新規クラウドセッションを作成することも拒否されると公式エラーリファレンスに記載があります。ローカル・CI実行を前提にしたモードであり、クラウド実行の入口ではないと理解しておく必要があります。

なぜ今このモードが必要になったか
Claude Codeはこれまでも sandbox や auto mode、--safe-mode など、権限まわりの機能を段階的に追加してきました(関連: Claude Codeサンドボックスで安全に自動実行【2026】)。ただ、これらの多くは「開発者本人が自分のマシンで安全に使う」ための機構でした。
--restricted が公式に想定しているのは、それとは違う場面です。評価ハーネスのように人が張り付いて監督していない自動実行基盤が、共有マシンの上でClaude Codeを動かすケース。ここでは「そのマシンのユーザー設定やプロジェクト設定を読ませない」こと自体が安全要件になります。設定ファイルを読ませてしまうと、そのマシンに以前ログインした別ユーザーの許可ルールやフックが意図せず引き継がれるリスクがあるためです。
この考え方は、監査ログの提出やアクセス範囲の証跡が必要になる業務——たとえば外部委託先に一時的にリポジトリ作業を任せる場面や、規制業界でのPoC環境——にもそのまま当てはまります。すでに公開しているClaude Code監査ログAPI対応やClaude Code支出上限のgateway設定と組み合わせることで、「誰が」「どの範囲で」「いくら使って」Claude Codeを動かしたかを一段階厳しく統制できます。
実装コマンド例
公式ドキュメントで確認できた範囲のコマンド例を示します。実際のキー名・構文は必ず自環境で claude --help や公式ドキュメントを確認してから使ってください。
例1: 基本の起動
claude --restricted -p "query"
非対話(-p)でクエリを渡す形が公式の例です。実行系ツール・WebFetchが剥奪された状態でエージェントが動きます。
例2: 一部ツールだけを個別に復活させる
# --tools に個別名を指定した分だけ復活する(default プリセットでは復活しない)
claude --restricted --tools Bash -p "テストスイートだけ実行して結果を要約して"
復活させるツールは最小限にとどめ、「なぜそのツールが必要か」をレビュー記録に残すことを推奨します(後述の失敗パターン参照)。
例3: managed settings + –restricted の組み合わせイメージ
# IT管理者が配布した managed-settings.json のみが読み込まれる
claude --restricted --settings ./ci-settings.json -p "query"
公式ドキュメントによれば、managed settingsは「組織が配布し、ユーザー・プロジェクト・ローカル・--settingsより優先される」レイヤーです。--restricted 下では、この管理された設定と --settings で明示的に渡した内容だけが有効になります。managed-settings.json自体の具体的なキー構造・配布方法は環境ごとに異なるため、詳細は必ず公式ドキュメント(Deploy managed settings)を参照してください。
例4: CI上でのラップスクリプト例
#!/usr/bin/env bash
set -euo pipefail
# 共有CIランナー上で評価ハーネスからClaude Codeを呼び出す想定
claude --restricted \
--settings "$CI_CLAUDE_SETTINGS_PATH" \
-p "$TASK_PROMPT" \
> "$OUTPUT_LOG"
echo "restricted session finished: exit=$?"
公式が例示する「共有マシン上で評価ハーネスがclaudeを駆動する」場面に最も近い使い方です。CI変数からタスクプロンプトを渡し、ログをファイルへ書き出す構成にしておくと、後から監査ログAPIと突き合わせやすくなります。
例5: 委託先マシンへの配布を想定した起動ラッパー
#!/usr/bin/env bash
# 外部委託先の端末に配布する起動スクリプト(想定パターン)
# ユーザー独自設定・過去セッションの許可ルールを一切引き継がせない
exec claude --restricted --settings /opt/company/claude/vendor-settings.json "$@"
このラッパーを配布しておけば、委託先の担当者が普段使っている個人設定を意図せず引き継ぐ事故を防げます。

既存の安全機構との違い
Claude Codeにはすでに複数の「安全に実行するためのモード」があります。目的が違うため、混同すると設計を誤ります。
| 機能 | 主な目的(公式記述ベース) | 実行系ツールの扱い |
|---|---|---|
--restricted |
評価ハーネス・共有マシンでの実行を安全にする(v2.1.248〜) | デフォルトで剥奪、--toolsで個別復活のみ可 |
| sandbox実行 | 開発者本人のマシンでコマンド実行を隔離環境に閉じ込める | 実行は許可、隔離環境内で完結させる |
| auto mode | 安全な操作は自動承認、リスクのある操作は分類器がブロックする恒久モード | 分類器の判断に応じて許可/ブロック |
--safe-mode |
すべてのカスタマイズを無効化してトラブルシュートする起動モード | カスタマイズ無効化が目的で権限剥奪が主目的ではない |
bypassPermissions |
全ての権限チェックをスキップする(--restrictedとは併用不可) |
実行系ツールも含め全許可 |
--safe-mode は「カスタマイズを止めて素の状態でトラブルシュートする」ためのモードで、2026年6月8日〜12日週の公式アップデートで追加されたものです。「制限する」という言葉の響きは似ていますが、--restricted のようにツールそのものを剥奪する設計ではない点に注意してください。
想定シナリオ3つ
以下は公式ドキュメントが示す「評価ハーネス・共有マシン」というユースケースを、実務に置き換えた想定シナリオです。実在の特定クライアントの事例ではなく、パターンとして整理したものである点をご了承ください。
想定シナリオ1: 社内ベンチマーク基盤の運用チーム
複数のモデル・プロンプト設定を継続的に評価するベンチマーク基盤を、共有CIランナー上で回している開発チームを想定します。従来はrunnerごとにClaude Codeの設定ファイルを個別管理し、前のジョブの許可ルールが残っていないかを都度確認する運用になりがちでした。--restricted を評価ジョブの起動コマンドに組み込めば、ジョブごとにユーザー・プロジェクト設定を読ませない前提を機械的に保証できます。
想定シナリオ2: 外部委託先に一時的な作業環境を渡す場面
短期間だけ外部の開発パートナーにリポジトリ作業を委託し、委託先支給端末やVDI環境でClaude Codeを使わせる場面を想定します。委託先側の個人設定やフックを引き継がせたくない、実行できるコマンドを最小限に絞りたい、という要件と --restricted + --tools の個別指定は相性が良い組み合わせです。
想定シナリオ3: 監査ログ提出が求められる規制業界のPoC環境
金融・自治体など、PoC段階から「誰が」「どの権限で」ツールを動かしたかの証跡を求められる業界を想定します。--restricted 単体では監査ログそのものは出力されないため、既出の監査ログAPI対応やgatewayの支出上限設定と組み合わせ、「実行できる範囲を絞る(restricted)」と「実行された内容を記録する(監査ログ)」を両輪で設計する必要があります。
失敗パターン
- ❌
--toolsでBashなどを個別に復活させすぎて、実質フル権限に戻ってしまう
⭕ 復活させるツールを本当に必要な範囲だけに絞り、「なぜ復活させたか」をレビュー記録・コミットメッセージ等に残す - ❌ restrictedセッションの挙動を変えたくてプロジェクト側のローカル設定ファイルを書き換える
⭕--restricted下ではユーザー・プロジェクト・ローカル設定は無視される前提で、変更が必要ならmanaged settingsか--settings側で設計する - ❌
--dangerously-skip-permissions(bypassPermissions)と--restrictedを同時に使おうとしてつまずく
⭕ 最初から「速く進めるモード」と「制限して安全に進めるモード」は共存しない設計だと理解し、用途別にジョブを分ける - ❌ restrictedセッションからクラウドセッションを作成する前提でワークフローを組んでしまう
⭕ 公式エラーリファレンスの記載どおり、restrictedはローカル/CI実行専用と割り切り、クラウド実行が必要な工程は別のジョブに分離する
FAQ
- Q1. v2.1.248より前のバージョンでも
--restrictedは使えますか? - A. 公式リファレンスに「Requires Claude Code v2.1.248 or later」と明記されています。それより前のバージョンでは利用できません。まずは
claude --versionでバージョンを確認してください。 - Q2. sandbox実行と何が違うのですか?
- A. sandboxは開発者本人のマシンでコマンド実行を隔離環境に閉じ込める仕組みです。
--restrictedは評価ハーネスや共有マシンでの実行を想定し、実行系ツール自体を剥奪し、設定ファイルの読み込みもmanaged settingsに限定します。目的も適用範囲も別物として扱ってください。詳しくはClaude Codeサンドボックスで安全に自動実行【2026】を参照してください。 - Q3. 環境変数だけで
--restrictedと同じ効果を得られますか? - A. 2026年8月31日時点で公式CLIリファレンスを確認した範囲では、環境変数についての記載は確認できていません。確認できたのはコマンドラインフラグ
--restrictedのみです。環境変数指定を前提にした自動化を組む場合は、必ず最新の公式ドキュメントで再確認してください。 - Q4.
--toolsで実行系ツールを復活させたら、それはもう「restricted」と呼べますか? - A. 公式ドキュメントの設計上、
--toolsで個別に名前を指定した分だけは復活できます。ファイル操作の作業ディレクトリ限定・設定ファイルの読み込み制限・bypassPermissions拒否・クラウドセッション作成拒否という他の制限は残るため、「実行系ツールの範囲だけ最小限に緩めた制限モード」として扱うのが実態に近い理解です。 - Q5. Claude Codeの個別指導・導入支援ではこうした権限設計も扱いますか?
- A. Uravationの生成AI・Claude Code関連の研修/個別指導/導入コンサルでは、権限モード設計やCI組み込みを含む実装レベルの相談を受け付けています。自社のCI・委託先環境に合わせた具体的な設計は、下記の相談窓口からお問い合わせください。
Claude Codeの権限設計・CI組み込みで迷ったら
--restricted のような新しい安全機構は、公式ドキュメントの更新ペースが速く、自社のCI/委託先運用にどう組み込むかは個別の設計が必要になります。Uravationでは企業向けにClaude Codeの導入設計・個別指導・研修を行っています。まずは無料相談で現状の運用を整理してみませんか。
著者プロフィール
佐藤傑(さとう・すぐる)。株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。100社以上の企業向けAI研修・導入支援。著書『AIエージェント仕事術』(SBクリエイティブ)。SoftBank IT連載7回執筆。
1. Claude Codeの権限モード設計について相談する
2. 自社のCIパイプラインへの組み込みを個別指導で学ぶ
3. 関連記事で監査ログAPI・支出上限設定もあわせて確認する
次回は、Claude Codeのmanaged settings配布とrestrictedモードを組み合わせた、より詳細な企業導入パターンを扱う予定です。