
Claude Code v2.1.296 の主要アップデート - サブエージェントの autoCompactWindow と Read の allow_large 追加
クラウド事業統括本部の石川です。Claude Code の v2.1.296(2026-10-09 公開)がリリースされました。本記事では変更点を種類別に整理し、注目の 1 件として allow_large を Opus 5.5 と Haiku 5.5 で実際に試した結果を紹介します。
前回のアップデート記事はこちらです。
アップデートサマリー
v2.1.296 では 79 件の変更が入りました。内訳は、修正 47 件、セキュリティ 8 件、新機能 7 件、改善 7 件、開発者体験 5 件、破壊的変更 3 件、パフォーマンス 2 件です。サブエージェントとワークフロー向けの設定の追加に加え、フックや権限チェックに関する修正が多く含まれています。VS Code 拡張機能(5 件)や Claude Tag(7 件)など、CLI 以外の変更もあります。
注目のアップデート
サブエージェントの autoCompactWindow(新機能)
サブエージェントの frontmatter と --agents の定義で autoCompactWindow を指定できるようになりました。サブエージェントを、メイン会話のウィンドウより早い段階で自動コンパクトさせられます。
メイン会話向けには同じ名前の autoCompactWindow 設定が既にあり、"autoCompactWindow": 200000 のようにトークン数で指定します。サブエージェントの frontmatter で指定する値の形式は、執筆時点(2026-10-10)の公式ドキュメントにはまだ記載がありません。
調査系のサブエージェントに大量のファイルやログを読ませる使い方をしている方は、サブエージェントだけをメイン会話より早く自動コンパクトさせる設定を試してみるとよいと感じます。
CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL(新機能)
環境変数 CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL を設定すると、ワークフローのエージェントをすべて 1 つのモデルで実行できます。ワークフロー以外のサブエージェントは、それぞれに設定したモデルのまま動きます。
ワークフローのエージェントだけを別のモデルにそろえ、通常のサブエージェントの設定は変えずにおく、という使い分けがしやすくなると感じます。
Read ツールの allow_large(新機能)
Read ツールに allow_large オプションが追加されました。ファイル全体が必要で、コンテキストに余裕がある場合に、通常のサイズ上限を超えるテキストファイルを 1 回の呼び出しで読めます。動作は後述の「Read の allow_large を試してみた」で、Opus 5.5 と Haiku 5.5 のそれぞれについて確認しています。
大きなログや生成ファイルを丸ごと確認させたい場面で、Read の呼び出し回数を減らせると感じます。
非 UTF-8 ファイルでの Edit / NotebookEdit の不具合修正(不具合解消)
有効な UTF-8 ではないファイル(Windows-1252、Shift-JIS、GBK)を Edit や NotebookEdit で編集すると、ファイル内のすべての非 ASCII 文字が置き換えられる不具合が修正されました。今後、こうしたファイルへの編集は拒否されます。変更前後は「破壊的変更」の節で整理しています。
Shift-JIS のファイルが残る日本のプロジェクトでは、Edit が拒否される場面が出てくると見ています。
BASH_ARGV0 を使うコマンドの権限チェック修正(セキュリティ)
BASH_ARGV0 シェル変数に代入してからそれを使う一部のコマンドを、Bash の権限チェックが自動承認していました。修正後、これらのコマンドは承認を求めます。
権限確認を前提に Claude Code を使っている方には、早めにアップデートしておきたい修正だと感じます。
シークレットのマスキング漏れの修正(セキュリティ)
共有トランスクリプトとデバッグログのシークレットのマスキングで、値を持たないキーの後に続く一部の値がマスキングされていませんでした。シェル文字列の中に書かれた JSON も対象に含めて修正されています。
トランスクリプトを共有したり、デバッグログを社内外に渡したりする機会がある方には、関係の深い修正だと感じます。
アップデート内容
新機能
- サブエージェントの frontmatter と
--agentsの定義にautoCompactWindowが追加されました。サブエージェントを、メイン会話のウィンドウより早い段階で自動コンパクトさせられます。 - 環境変数
CLAUDE_CODE_WORKFLOW_SUBAGENT_MODELが追加されました。ほかのサブエージェントのモデルはそのままで、ワークフローのエージェントをすべて 1 つのモデルで実行できます。 - Read ツールに
allow_largeオプションが追加されました。ファイル全体が必要でコンテキストに余裕がある場合に、通常のサイズ上限を超えるテキストファイルを 1 回の呼び出しで読めます。 - 環境変数
CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MSが追加されました。過負荷(529)となったリクエストを再試行する際の、バックオフの最大遅延を長く設定できます。 - Claude apps gateway の
managed.policies[]にcodeキーが追加されました。cliと同じ設定を Claude Desktop の Code タブにも適用し、desktopと併記すると Claude Desktop のゲートウェイモードが有効になります。 - [Cloud sessions] 管理設定の self-hosted 環境の Activity タブで、Sessions と Runners の一覧にステータスフィルターが追加されました。複数のステータスを同時に選択できます。
- [Claude Tag] Claude Tag Admin 権限を持つメンバーが、Activity ページの Memory タブで、ワークスペースとチャンネルのメモリファイルを作成・編集・削除できるようになりました。
改善
- 事前に送信する MCP ツールの説明と MCP サーバーの instructions の既定の上限が、2,048 文字から 4,096 文字に変更されました。
/cost、ステータスライン、--max-budget-usd、SDK のコスト計算で、Sonnet 5.5 のキャッシュ読み取りを 100 万トークンあたり $0.10(従来は $0.20)として計算するようになりました。- フックの
--debug出力が改善されました。ツール呼び出し・プロンプト・SessionStart・Stop のコマンドフックが、終了時にコマンド・プラグイン・結果・所要時間を記録するため、遅いフックを特定できます。 --debug出力で、カスタムエージェントファイル内の認識できない frontmatter フィールドを名前で示し、タイプミスの可能性があればヒントを表示するようになりました。- シンタックスハイライト済みのコードブロックをキャッシュし、コードの多い会話でのトランスクリプト切り替え(ctrl+o)の応答性が改善されました。
CLAUDE_CODE_TRANSCRIPT_LOCAL_GCで、解放できる容量が 10% 未満の場合は大きなトランスクリプトファイルを書き換えないようになりました。- 同名の別プラグインが有効なためにフックが除外されたプラグインについて、
/pluginに注記が表示されるようになりました。 - auto mode で、チェックが有効な回答を得られず実行されなかったツール呼び出しが、赤いエラーではなく薄い「Not run」行で表示されるようになりました。
- フルスクリーンモードで、マウスポインターの下にあるリンクに下線が表示されるようになりました。
- Claude apps gateway 配下の Claude Desktop の Code タブで、セッションを開始できない場合(ゲートウェイの
code設定に対応していないマシンを含む)に、その理由が返信として表示されるようになりました。 - クラウドセッションが拒否された際のエラーで、組織のポリシーを読み込めなかった理由と、claude.ai のログインを上書きしている API キーや認証トークンが示されるようになりました。
- 同梱の dataviz スキルが更新されました(ライトモードの 7 番目の系列を明るい紫に、ダークモードの主要テキストを柔らかい色に、y 軸ラベルを 1K のような短縮表記に)。
- [Claude Tag] Claude in Slack で、セッションリンク・モデル・コストを含むフッターが、スレッド内の最新の返信にのみ表示されるようになりました。
- [Code Review] Code Review の管理設定で、設定を保存できなかった理由(ポリシーによる制限など)が、汎用的な失敗メッセージではなく具体的に示されるようになりました。
セキュリティ
- Bash 権限チェックの BASH_ARGV0 による自動承認を修正:
BASH_ARGV0シェル変数に代入してからそれを使う一部のコマンドが自動承認されていました。これらは承認を求めるようになりました。 - シークレットのマスキング漏れを修正: 共有トランスクリプトとデバッグログで、値を持たないキーの後に続く一部の値(シェル文字列内に書かれた JSON を含む)がマスキングされていませんでした。
- クラウドセッションで auto mode のチェックがスキップされる問題を修正: 機能フラグが読み込まれていない場合に、保存済みの許可で許可された Claude in Chrome の操作に対する auto mode のチェックがスキップされていました。
- Windows の bypass permissions モードで rm -rf が確認を求めない問題を修正: Git Bash の
rm -rf /c/Users/<name>が、bypass permissions モードで確認を求めていませんでした。 - headless セッションで無効化した MCP サーバーが起動する問題を修正: ディレクトリの移動やプラグインのリロードの後に、そのフォルダで無効化していた
.mcp.jsonやプラグインの MCP サーバーが起動していました。 - UserPromptSubmit フック実行中の割り込みでチェック前のプロンプトが通る問題を修正:
UserPromptSubmitフックや mod のprompt.submitフックの実行中に Esc や割り込みを行うと、headless セッションが終了する、入力したプロンプトが消える、またはチェックを経ていないプロンプトがそのまま通ることがありました。 - managed settings のフックによる拒否でターンが終了しない問題を修正: managed settings の
PreToolUseフックが"continue": falseでツール呼び出しを拒否した場合や、managed のpromptフックがブロックした場合に、呼び出しは拒否されるもののターンが終了していませんでした。 - managed settings の PostToolUse フックで updatedMCPToolOutput が適用されない問題を修正: 一部のセッションで
updatedMCPToolOutputが適用されていませんでした。
修正
- Claude apps gateway のサインインが無視される退行を修正: managed settings で
forceLoginMethodをgatewayにし、forceLoginGatewayUrlを指定していないマシンで、保存済みのサインインが無視されていました(2.1.295 での退行)。 - adaptive thinking 専用モデルのトークン数カウントを修正: Haiku 5.5 など adaptive thinking のみに対応するモデルで、一部のゲートウェイ経由ではカウントが失敗し、それ以外では budget thinking として計算されていました。
- 再開したサブエージェントへの誤った拒否通知を修正: セッション終了で中断されたツール呼び出しを、再開したサブエージェントに「ユーザーが拒否した」と伝えていました。
- CLAUDE_CODE_RESUME_INTERRUPTED_TURN による終了済みターンの再実行を修正: MCP ツールの結果でターンが終了していた場合に、再起動後に終了済みのターンを再実行していました。
- ← 直後のプロンプトの二重実行を修正: バックグラウンドサービスの応答が遅いとき、
←の直後に送信したプロンプトが 2 回(うち 1 回はフォアグラウンドで見えない形で)実行されていました。 - Workflow ツールが CRLF のスクリプトを拒否する問題を修正: Windows でチェックアウトしたファイルなど、CRLF 改行のスクリプトファイルを Workflow ツールが拒否していました。
- Windows で長い PowerShell コマンドが常に確認を求める問題を修正: 約 1 KB を超える PowerShell コマンドが常に権限確認を求めていました。許可ルールと読み取り専用の判定が 32 KB まで適用されるようになりました。
- 地味に嬉しい修正:
/diffのパネルやダイアログを開いている間、トーストや通知が表示されないまま待機し続ける問題が修正されました。差分を確認している間に通知を見逃さなくなるのは、地味に嬉しいと感じます。 - このほか、プラグインと mod、クラウドセッションと self-hosted runner、Claude Tag と Code Review、VS Code 拡張機能、Windows 環境など、多数の細かな不具合が修正されています。
破壊的変更・非推奨
今回、非推奨の項目はありません。挙動が変わる変更が 3 件あります。以下の変更前・変更後は、CHANGELOG の記述をもとにした説明用の例です。
Edit / NotebookEdit が非 UTF-8 ファイルの編集を拒否するように
有効な UTF-8 ではないファイル(Windows-1252、Shift-JIS、GBK)で、Edit と NotebookEdit がすべての非 ASCII 文字を置き換えてしまう不具合の修正に伴い、こうしたファイルへの編集は拒否されるようになりました。例のファイル名 legacy.c は説明用です。
変更前(〜v2.1.295):
例: Shift-JIS で保存された legacy.c を Claude Code の Edit ツールで編集する
Edit → 編集は実行される
ただし legacy.c 内のすべての非 ASCII 文字(日本語のコメントなど)が置き換えられる
変更後(v2.1.296〜):
例: Shift-JIS で保存された legacy.c を Claude Code の Edit ツールで編集する
Edit → 編集が拒否される
← でバックグラウンドへ移る間に開始したターンを停止するように
セッションがバックグラウンドに移る間に開始したターンや ! コマンドは、見えないところで最後まで実行されるのではなく、停止されるようになりました。
変更前(〜v2.1.295):
- セッションがバックグラウンドへ移る間に、ターンや ! コマンドが開始される
(← でバックグラウンドへ移す操作の途中) - そのターン / ! コマンドは、見えないところで最後まで実行される
変更後(v2.1.296〜):
- セッションがバックグラウンドへ移る間に、ターンや ! コマンドが開始される
(← でバックグラウンドへ移す操作の途中) - そのターン / ! コマンドは停止される
[VSCode] Claude in Chrome がすべてのセッションでブラウザ操作の前に確認を求めるように
VS Code 拡張機能の Claude in Chrome が、@browser で接続したセッションを含むすべてのセッションで、ターミナルと同様にブラウザ操作の前に確認を求めるようになりました。セッション中にそのサイトを許可すると、以後の確認は出なくなります。
変更前(〜v2.1.295):
@browser で接続したセッションなど、一部のセッションでは ブラウザ操作の前に確認を求めない場合があった
変更後(v2.1.296〜):
すべてのセッション(@browser で接続したセッションを含む)で、ブラウザ操作の前に確認を求める
セッション中にそのサイトを許可すると、以後の確認は出ない
Read の allow_large を試してみた
Claude Code v2.1.296 で、Read ツールに allow_large オプションが追加されました。CHANGELOG では、ファイル全体が必要でコンテキストに余裕がある場合に、通常のサイズ上限を超えるテキストファイルを 1 回の呼び出しで読めるオプションとして説明されています。
公式ドキュメントによると、Read はファイル全体を読もうとしてトークンの上限を超えると、先頭の 1 ページ分だけを返します。このハンズオンでは、上限を超える大きさのテキストファイルを用意し、allow_large を使わない場合と使う場合で、Read が返す行数がどう変わるかを claude -p で確認します。
allow_largeを使わないと、3,000 行のファイルが途中の行で打ち切られること- 「ファイル全体が必要」と伝えると Claude が
allow_large: trueを指定し、全行を 1 回で読むこと
ステップ 1: 作業用ディレクトリを作る
検証用のファイルと実行結果を置くための、空のディレクトリを作って移動します。以降のステップは、すべてこのディレクトリで実行します。
% mkdir allow-large
% cd allow-large
ステップ 2: 検証用のファイルを作る
1 行あたり 68 バイトの行を 3,000 行並べたテキストファイル big.txt を作ります。行数・バイト数と、先頭・末尾の行も確認します。
% seq -f "line %05g: The quick brown fox jumps over the lazy dog. 0123456789" 1 3000 > big.txt
% wc -l -c big.txt
3000 204000 big.txt
% head -n 2 big.txt
line 00001: The quick brown fox jumps over the lazy dog. 0123456789
line 00002: The quick brown fox jumps over the lazy dog. 0123456789
% tail -n 1 big.txt
line 03000: The quick brown fox jumps over the lazy dog. 0123456789
ステップ 3: 結果を取り出す jq フィルタを用意する
claude -p を --output-format stream-json で実行すると、実行中のメッセージが 1 行に 1 つの JSON として出力されますが、そこから必要な値だけを取り出すフィルタを filter.jq として用意します。
% cat > filter.jq <<'EOF'
if .type == "system" and .subtype == "init" then {claude_code_version, model}
elif .type == "assistant" then (.message.content[] | select(.type == "tool_use") | {tool: .name, allow_large: .input.allow_large})
elif .type == "user" then (.tool_use_result.file | {numLines, totalLines, truncatedByTokenCap})
elif .type == "result" then {subtype, num_turns, total_cost_usd}
else empty end
EOF
このフィルタは、メッセージの種類ごとに次の値を取り出します。
| メッセージ | 取り出す値 | 意味 |
|---|---|---|
system(init) |
claude_code_version, model |
実行した Claude Code のバージョンと、使われたモデル |
assistant |
tool, allow_large |
Claude が呼び出したツールの名前と、Read に渡した allow_large の値 |
user |
numLines, totalLines, truncatedByTokenCap |
Read が返した行数、ファイル全体の行数、トークン上限で打ち切られたかどうか |
result |
subtype, num_turns, total_cost_usd |
終了の種類、ターン数、費用(USD) |
ステップ 4: allow_large を使わずに読ませる(検証 1)
allow_large を使わないよう指示して、big.txt を Read で読ませます。echo "exit code: $?" で、claude コマンドの終了コードが表示を確認します。
% claude -p --max-turns 1 --no-session-persistence --setting-sources project --strict-mcp-config \
--allowedTools Read --output-format stream-json --verbose \
"big.txt を Read ツールで読んでください。allow_large は使わないでください。" > run1.jsonl
% echo "exit code: $?"
exit code: 1
終了コードが 1 になるのは、--max-turns 1 で指定したターン数の上限に達して終了するためです。Read ツール自体は実行され、結果は run1.jsonl に出力されています。
各オプションの役割は次のとおりです。
| オプション | 役割 |
|---|---|
-p |
非対話モードで実行し、結果を出力して終了する |
--max-turns 1 |
1 ターンで終了させる。Read の結果をモデルに返す前に止まります |
--no-session-persistence |
セッションをディスクに保存しない(-p のときのみ有効) |
--setting-sources project |
読み込む設定をプロジェクト設定だけにする。ユーザー設定(~/.claude/settings.json)のフックなどは読み込まれません |
--strict-mcp-config |
--mcp-config で指定した MCP サーバーだけを使い、ほかの MCP 設定はすべて無視する。今回は --mcp-config を指定しないため、MCP サーバーを使いません |
--allowedTools Read |
Read ツールを確認なしで使えるようにする |
--output-format stream-json |
実行中のメッセージを 1 行に 1 つの JSON で出力する |
--verbose |
-p で stream-json を使う場合に必要。付けないと Error: When using --print, --output-format=stream-json requires --verbose で終了します |
ステップ 3 のフィルタで、検証 1 の結果を取り出します。
% jq -c -f filter.jq run1.jsonl
{"claude_code_version":"2.1.296","model":"claude-opus-5-5"}
{"tool":"Read","allow_large":null}
{"numLines":732,"totalLines":3001,"truncatedByTokenCap":true}
{"subtype":"error_max_turns","num_turns":2,"total_cost_usd":0.0643468}
- Read の入力に
allow_largeは含まれていません(null)。 - ファイル全体の 3,001 行のうち、返ってきたのは 732 行です。
truncatedByTokenCapがtrueなので、トークンの上限で打ち切られたことがわかります。
Read が返した内容の最後の 2 行も確認します。
% jq -r 'select(.type == "user") | .message.content[] | select(.type == "tool_result") | .content' run1.jsonl | tail -n 2
731 line 00731: The quick brown fox jumps over the lazy dog. 0123456789
732 line 00732: The quick brown fox jumps over the lazy dog. 0123456789
732 行目で終わっており、733 行目以降は返っていません。
ステップ 5: ファイル全体が必要だと伝えて読ませる(検証 2)
次は allow_large には触れず、ファイル全体が必要だと伝えます。オプションはステップ 4 と同じで、プロンプトと出力先のファイル名だけが異なります。
% claude -p --max-turns 1 --no-session-persistence --setting-sources project --strict-mcp-config \
--allowedTools Read --output-format stream-json --verbose \
"big.txt はファイル全体が必要です。省略せず、1 回の Read でファイル全体を読んでください。" > run2.jsonl
% echo "exit code: $?"
exit code: 1
検証 1 と同じく、ターン数の上限に達して終了するため終了コードは 1 です。
% jq -c -f filter.jq run2.jsonl
{"claude_code_version":"2.1.296","model":"claude-opus-5-5"}
{"tool":"Read","allow_large":true}
{"numLines":3001,"totalLines":3001,"truncatedByTokenCap":null}
{"subtype":"error_max_turns","num_turns":2,"total_cost_usd":0.052076}
- Claude が Read の入力に
allow_large: trueを指定しています。 - 3,001 行すべてが返り、
truncatedByTokenCapは含まれていません(null)。
最後の 2 行も確認します。
jq -r 'select(.type == "user") | .message.content[] | select(.type == "tool_result") | .content' run2.jsonl | tail -n 2
実行例:
% jq -r 'select(.type == "user") | .message.content[] | select(.type == "tool_result") | .content' run2.jsonl | tail -n 2
3000 line 03000: The quick brown fox jumps over the lazy dog. 0123456789
3001
3,000 行目まで返っています。wc -l では 3,000 行ですが totalLines は 3,001 で、Read の出力ではファイル末尾の改行の後ろが空の 3,001 行目として表示されています。
ステップ 6: 2 つの結果を比べる
| 項目 | 検証 1(allow_large を使わない) | 検証 2(ファイル全体が必要と指示) |
|---|---|---|
Read の入力の allow_large |
なし(null) |
true |
返った行数(numLines) |
732 | 3,001 |
ファイル全体の行数(totalLines) |
3,001 | 3,001 |
truncatedByTokenCap |
true |
なし(null) |
| 最後に返った行 | 732 行目 | 3,001 行目(空行) |
allow_large を使わない場合、Read は 3,001 行中 732 行で打ち切られました。ファイル全体が必要だと伝えた場合は、Claude が allow_large: true を指定し、1 回の Read で全行を読みました。
補足: Opus 5.5 と Haiku 5.5 で追加検証する
Claude Code v2.1.296 で Opus 5.5 と Haiku 5.5 にそれぞれ Read させた結果を比べます。Haiku 5.5 でも、allow_large の値、返った行数、終了理由は Opus 5.5 と同じで、今回取得した項目で違いがあったのはコストだけでした。
コストの比較
| 検証 | Opus 5.5 | Haiku 5.5 | 倍率(Opus 5.5 ÷ Haiku 5.5) |
|---|---|---|---|
| 検証 1 | 0.0643468 USD | 0.00186747 USD | 約 34.5 倍 |
| 検証 2 | 0.052076 USD | 0.00142273 USD | 約 36.6 倍 |
同じモデル内では、検証 2 のコストが検証 1 より低くなりました。
- Opus 5.5: 検証 2 は検証 1 より 19.1% 低い
- Haiku 5.5: 検証 2 は検証 1 より 23.8% 低い
検証 2 の方が返却行数は多いのに、コストは両モデルとも低くなっています。
今回の条件では、「ファイル全体が必要」と伝えると Claude が自ら allow_large: true を指定しました。全体を読ませたいときは、プロンプトでその意図を明示するのが基本の使い方になりそうだと感じます。このアップデートはサブエージェントのHaiku 5.5 と組み合わせることでコストを効果的に抑えることができそうです。
最後に
Shift-JIS などの非 UTF-8 ファイルが Edit / NotebookEdit で編集できなくなった点は、こうしたファイルを扱う日本のプロジェクトでは確認しておきたい変更だと感じます。文字コードの変換を含めた扱いを事前に決めておくとよいと考えます。
非 UTF-8 のファイルを扱っている方や、サブエージェント・ワークフローを使っている方は、アップデートして試してみてはいかがでしょうか。
参考文献








