
Claude Code v2.1.248 の主要アップデート - ツールを制限する --restricted の追加
クラウド事業統括本部の石川です。Claude Code の v2.1.248(2026-08-27 公開)がリリースされました。新しく加わった --restricted によって、用途を限定して使いたい場面の選択肢が増えたと感じます。今日は、--restricted を試してみました。
前回のアップデート記事はこちらです。
アップデートサマリー
v2.1.248 では 49 件の変更が入りました。本記事の分類では修正が 31 件と大半を占め、改善が 8 件、新機能が 6 件、セキュリティ関連が 3 件、破壊的変更が 1 件という内訳です。修正はエージェントビュー・フック・MCP・クラウドセッションといったセッション管理まわりに集中しています。
注目のアップデート
セキュリティ
--restricted の追加
--restricted(環境変数 CLAUDE_CODE_RESTRICTED=1 でも可)が追加されました。コマンドやコードを実行する組み込みツールと WebFetch を、--tools で明示しない限り取り除きます。あわせてファイル操作ツールを作業ディレクトリ内に限定し、bypassPermissions を拒否し、ユーザー・プロジェクト・ローカルの各設定ファイルを無視します。
CI やコードレビューのように Claude Code に「読ませたいだけ」の用途では、権限ルールを個別に書き並べるよりこのフラグ 1 つで意図を表現できる場面が多いと感じます。
認証情報ファイルのアップロードを修正
/ultrareview とローカルからシードされたクラウドセッションが、prod.env 形式のファイルや *.tfvars、資格情報ファイルのエディタ用スワップ・一時・バックアップコピー(key.pem.tmp、id_rsa.swo など)の未コミット編集をアップロードしていた問題が修正されました。これらはローカルに留まるようになりました。
/ultrareview を使っている方は、対象リポジトリに *.tfvars や prod.env 形式のファイルを置いているほど効いてくる修正だと感じます。
新機能
セッション間メッセージングの対応拡大
同一マシン上のセッション間メッセージング(SendMessage / ListAgents)が、Bedrock・Vertex・Foundry の利用時と、テレメトリを無効にしている場合にも使えるようになりました。
Bedrock や Vertex 経由で使っているチームでも、複数セッションを並行させる使い方が現実的になってきたと感じます。
不具合解消
長時間セッションのプロンプトキャッシュミス
長時間セッションでおよそ 1 時間に 1 回発生していたプロンプトキャッシュミス(および拡張思考コンテキストの消失)が修正されました。OAuth トークンの更新後にツール定義が再レンダリングされていたことが原因です。
1 つのセッションを何時間も開いたまま作業する方ほど、気づかないうちに損をしていた部分ではないでしょうか。
Claude Desktop・Cowork のセッションが 30 日で消える問題
Claude Desktop と Cowork のセッションが 30 日後に消えてしまう問題が修正されました。トランスクリプトのクリーンアップは、アプリ内にあるデスクトップ作成セッションを保持するようになりました(組織ポリシーが保持期間を管理している場合を除く)。新設の desktopSessionCleanupPeriodDays 設定でこの例外に上限を設けられます。
Claude Desktop や Cowork に作業ログを残している方は、あわせて desktopSessionCleanupPeriodDays の値も確認しておくとよいと感じます。
バックグラウンド worktree セッションのチェックアウト消失
バックグラウンド化した worktree セッションがチェックアウトを失う問題が修正されました。バックグラウンドセッションは実行中に worktree のロックを保持するようになり、クリーンアップや git worktree remove の対象から外れます。
worktree を切ってバックグラウンドセッションを走らせている方には、地味ながら効きの大きい修正だと感じます。
アップデート内容
セキュリティ
--restricted(CLAUDE_CODE_RESTRICTED=1)が追加されました。/ultrareviewとクラウドセッションによる、認証情報を含みうるファイルの未コミット編集のアップロードが修正されました(前述)。- Linux のユーザー名前空間におけるセッション間メッセージングで、マッピングされていない所有者に対する root 相当の信頼が、正規のシステムディレクトリに限定されました。
新機能
- セッション間メッセージングが Bedrock・Vertex・Foundry とテレメトリ無効時にも対応しました(前述)。
- エージェントのフロントマターに
experimental.cacheTtl("5m"または"1h")が追加されました。サブエージェントの TTL 設定が無い場合に使われる、エージェント単位のプロンプトキャッシュ TTL です。 - サーバー管理設定の診断が追加されました。読み込み失敗時の起動時警告に加え、失敗の理由や取得されなかった理由(Bedrock/Vertex/サードパーティプロバイダー、カスタム
ANTHROPIC_BASE_URL)を示す行が/doctorと/statusに表示されます。 /usage-creditsが追加されました。AWS Marketplace 経由で課金される Enterprise 組織・セルフサーブ Enterprise・Enterprise トライアルで、メンバーが管理者に利用上限の引き上げを依頼できます。claude self-hosted-runner --client-label <label>(SELF_HOSTED_RUNNER_CLIENT_LABEL)が追加され、ランナーが登録するラベル(既定はホスト名)を上書きできるようになりました。/web-setupで、GitHub CLI のトークンにworkflowスコープが無い場合の警告が追加されました。
改善
- Workflow ツールの説明が約 5.7k トークンから約 1k トークンに縮小し、スクリプト作成のリファレンスは同梱の
workflow-authoringスキルへ移動しました。 /loopの自己ペース(dynamic)モードとプロンプト無しの autonomous 既定が、Bedrock/Vertex/Foundry を含めて常に利用できるようになりました。- セッション間メッセージングが、既定のディレクトリを使えない場合にユーザーごとのプライベートな
/tmpディレクトリへフォールバックするようになりました。通知と/statusに対処すべきディレクトリ名が示されます。 /ultrareview <PR#>が、接続された GitHub アカウントでリポジトリにアクセスできるかを起動前に確認するようになりました(従来はクラウドセッションの開始後に失敗していました)。- 管理設定で、クライアント側タイムアウト・MCP 起動モード・ストリームウォッチドッグの環境変数が設定承認プロンプトを発生させなくなりました。
- プロンプトフッターの PR バッジが、プルリクエストに変更が無い間は GitHub への問い合わせ頻度を下げるようになりました。push や
gh prコマンドの実行時は即座に更新されます。 - Anthropic のテレメトリのエクスポート失敗が、
[Anthropic telemetry]としてデバッグレベルで記録されるようになりました(従来は[3P telemetry] OTEL diag error)。 - サブエージェントから別セッションへ
SendMessageを送った場合、返信が親セッションの会話に届くことが結果に明記されるようになりました。
修正
- 長時間セッションのプロンプトキャッシュミスを修正(前述)
- Claude Desktop・Cowork のセッション消失を修正(前述)
- バックグラウンド worktree セッションのチェックアウト消失を修正(前述)
- トークン更新時のログイン画面への遷移を修正: 別の Claude Code プロセスがトークン更新のロックを保持している間にセッショントークンが期限切れになると、ログイン画面に飛ばされていました。リトライ可能なエラーとして失敗するようになりました。
- CI 環境での信頼確認スキップを修正:
CI環境変数が設定されているときに、claude agentsがワークスペースの信頼確認プロンプトをスキップしていました。 - フックの不正応答による無言待機を修正:
PermissionRequestやPreToolUseのフックが不正な応答を出力すると、バックグラウンドセッションが黙って待ち続けていました。claude agentsの行にフック名とスキーマエラーが表示されます。 - フック出力の JSON パースエラーの握りつぶしを修正: 標準出力に出した
{…}オブジェクトが有効な JSON でない場合、プレーンテキスト扱いにせずパースメッセージ付きのフックエラーとして報告されます。 /mcpのスコープ表示を修正:.mcp.jsonで claude.ai コネクタ型を宣言したエントリが、信頼済みの「claude.ai」見出しではなく本来のスコープの下に表示されます。- MCP の
headersHelperの再試行を修正:Authorizationヘッダーを供給するサーバーで 401 応答を受けた際、OAuth ディスカバリーに入らずヘルパーを再実行して呼び出しを再試行します。 - worktree ブランチのセッション削除拒否を修正: チェックアウト中の既定ブランチにマージ済みで未 push の場合に、
claude agentsとclaude rmが「push されていないコミットがある」として削除を拒否していました。 - VS Code のチャットタブの固まりを修正: 一度も保存されていないセッションのタブが「No conversation found」のまま固まらず、新しい会話を開始するようになりました。
- 地味に嬉しい修正:
/modelと fast モード切り替え通知のモデル名がコードとして表示され、[1m]のようなサフィックスがリンクではなくそのまま表示されるようになりました。1M コンテキスト版のように[1m]付きのモデルを使い分けている方には、地味にありがたい変更だと感じます。 - このほか、
claude agentsの一覧表示・Remote Control・クラウドセッションの起動・ターミナル表示の乱れ・Windows でのキーボード操作など、多数の細かな不具合が修正されています。
破壊的変更
エージェントビューのディスパッチ入力で、shift+enter が改行を挿入するように変更されました(プロンプト入力と同じ挙動)。ディスパッチと添付は ctrl+enter が担います。
変更後(v2.1.248〜)
- shift+enter: 改行は挿入されない(プロンプト入力とは異なる挙動)→ 改行を挿入する(プロンプト入力と同じ挙動)
- ctrl+enter : CHANGELOG に記載なし → ディスパッチして、そのセッションにアタッチする
変更前の挙動は CHANGELOG に明記されていません。上記は「shift+enter が改行を挿入するようになった」という記述から確定できる範囲のみを示したものです。
なお、非推奨(deprecated)の変更は今回ありません。
--restricted を試してみた
--restricted を付けると実際に何が外れるのかを、通常起動時と比較して確認しました。一時ディレクトリ内で通常モードと --restricted をそれぞれ起動し、--output-format stream-json の起動イベント(system / init)に含まれるツール一覧と設定の読み込み状況を比べています。
# 通常モード
claude -p "OK とだけ返してください。" --strict-mcp-config \
--output-format stream-json --verbose > normal.jsonl
# --restricted(MCP の有無で差が出ないよう、両方に --strict-mcp-config を付ける)
claude --restricted --strict-mcp-config -p "OK とだけ返してください。" \
--output-format stream-json --verbose > restricted.jsonl
$ diff <(grep -m1 '"subtype":"init"' normal.jsonl | jq -r '.tools[]' | sort) \
<(grep -m1 '"subtype":"init"' restricted.jsonl | jq -r '.tools[]' | sort)
1,2d0
< Bash
< CronCreate
8a7,8
> Glob
> Grep
10d9
< Monitor
14d12
< RemoteTrigger
23d20
< WebFetch
25d21
< Workflow
< が通常モードにのみ存在するツールです。Bash と WebFetch に加えて、CronCreate・Monitor・RemoteTrigger・Workflow も外れていました。Glob と Grep が --restricted 側にだけ現れているのは、通常モード側の設定でツールの遅延読み込みが有効になっているためで、--restricted で機能が増えたわけではないと見ています。
設定ファイルの読み込み状況も比べてみます。
$ for f in normal.jsonl restricted.jsonl; do grep -m1 '"subtype":"init"' $f | jq -r "\"$f: permissionMode=\(.permissionMode) plugins=\(.plugins|length) skills=\(.skills|length)\""; done
normal.jsonl: permissionMode=auto plugins=6 skills=91
restricted.jsonl: permissionMode=default plugins=0 skills=17
ユーザー設定を無視するという記述のとおり、権限モードが auto から既定に戻り、プラグインは読み込まれず、スキルも組み込みのものだけになりました。
上のコマンドで両方に --strict-mcp-config を付けているのは、--restricted だけでは MCP サーバーが残るためです。試しにこれを外して --restricted のみで起動したところ、筆者の環境では claude.ai コネクタ経由の MCP サーバーが接続されたままになり、その MCP ツールがツール一覧に並びました。claude --help の説明にあるとおり、外部接続まで含めて絞りたい場合は 2 つのフラグを併用することになります。なお管理設定(managed settings)と --settings は --restricted でも引き続き適用されます。
--restricted を付けるだけで Bash や WebFetch といったコマンド実行系のツールが一覧から消え、ユーザー設定のプラグインやスキルも読み込まれなくなることを確認できました。CI やコードレビューのように「読ませたいだけ」の用途では、権限ルールを細かく書くよりこのフラグ 1 つで足りる場面が多いと感じます。
最後に
v2.1.248 は、--restricted という分かりやすい入口が加わった一方で、修正の多くはセッション管理・フック・MCP といった足回りに集中しており、日常の使い勝手を底上げする回だと感じます。プロンプトキャッシュミスや worktree のチェックアウト消失のように、気づかないまま損をしていた種類の不具合が含まれている点も見逃せないと感じます。
Claude Code を業務で常用している方は、アップデートしたうえで --restricted の挙動を手元で確認してみてはいかがでしょうか。
参考文献








