Claude Code v2.1.301 の主要アップデート - auto mode の判定を OpenTelemetry で区別可能に

Claude Code v2.1.301 の主要アップデート - auto mode の判定を OpenTelemetry で区別可能に

Claude Code v2.1.301がリリースされました。OpenTelemetry対応の強化やバイナリファイル判定の修正など、運用環境に大きく関わる51件の変更について、注目アップデートと試した内容をまとめます。本日は、Read のバイナリ判定修正を試してみました。
2026.10.16

クラウド事業統括本部の石川です。Claude Code の v2.1.301(2026 年 10 月 15 日公開)がリリースされました。OpenTelemetry で Claude Code を監視している方や、mod を作成している方に関係する変更を含むリリースだと感じます。本日は、Read のバイナリ判定修正を試してみました。

前回のアップデート記事はこちらです。

https://dev.classmethod.jp/articles/20261015-cc-updates-v2-1-300/

アップデートサマリー

v2.1.301 では 51 件の変更が入りました。公式ドキュメントの changelog では Added 8 件、Changed 2 件、Improved 4 件、Bug fixes 37 件に分かれています。本記事では内容に応じて分類し直し、修正 36 件、新機能 8 件、改善 3 件、破壊的変更 2 件、セキュリティ 1 件、パフォーマンス 1 件として紹介します。

新機能は OpenTelemetry の tool_decision イベントの属性、vim モード、mod の API、VS Code 拡張機能に関するものです。修正には、vim モード、Self-hosted runner、VS Code 拡張機能、モデルの切り替えとコンパクト化に関するものが多く含まれます。破壊的変更の 2 件は、いずれも mods API の挙動の変更です。

また、公式のXで2つの大きなアップデートが発表されました。1つ目は、Claude PlatformのOpus 5.5高速モードが研究プレビュー終了、最大2.5倍高速で、100万トークンあたり$8 / $40で利用可能です。2つ目は、Code Preview が、Claude TeamおよびEnterpriseプランの一般提供が開始されました。

https://x.com/ClaudeDevs/status/2110825294655562048

https://x.com/ClaudeDevs/status/2110866210573386065

注目のアップデート

auto mode の分類器の判定を tool_decision イベントに記録(新機能)

OpenTelemetry の tool_decision イベントに classifier_verdict と permission_mode が追加されました。auto mode の分類器(classifier)による判定と、パーミッションルールによる判定を区別できます。

あわせて classifier_category も追加されました。OTEL_LOG_TOOL_DETAILS=1 のとき、分類器がブロックした際に一致した組み込みルールの名前が記録されます。

なお、2026 年 10 月 16 日時点では、公式ドキュメントの Monitoring ページにある tool_decision イベントの属性一覧には、これら 3 つの属性はまだ記載されていません。本記事は CHANGELOG の記載に基づいています。

auto mode で運用しながら OpenTelemetry でツールの許可・拒否を収集している管理者には、分類器による判定とパーミッションルールによる判定を分けて集計できるため、ルールの見直しや監査に使える情報が増えると感じます。

未プッシュのコミットがある worktree の削除確認(不具合解消)

WorktreeCreate フックで作成された worktree に未プッシュのコミットが残っている可能性がある場合でも、終了時に確認なしで worktree が削除される不具合が修正されました。

WorktreeCreate フックで worktree を作る運用をしている方は、未プッシュのコミットを確認なしで失う状況を避けられるため、早めにアップデートしておきたい修正だと感じます。

Grep / Glob の検索失敗の扱い(不具合解消)

検索プログラムが結果を返す前に予期せず失敗した場合に、Grep と Glob が「一致なし」と報告していた不具合が修正されました。検索に失敗した旨のエラーを返すようになりました。

検索の失敗が「一致なし」として扱われると、Claude が実在するコードを無いものとして作業を進めるおそれがあるため、作業結果の信頼性に関わる修正だと見ています。

Read ツールのバイナリファイルの扱い(不具合解消)

Read ツールが .xlsm、.parquet、.epub、.heic などのバイナリファイルをテキストとして読み込む不具合が修正されました。動作は次の「試してみた」で確認します。

.parquet や .xlsm などのデータファイルを含むリポジトリで Claude Code を使っている方に関係の深い修正だと感じます。

パーミッションプロンプトにフックのプラグイン・スキルを表示(セキュリティ)

プラグインまたはスキルのフックが ask を返したときのパーミッションプロンプトに、そのフックがどのプラグイン・スキルのものかが表示されない不具合が修正されました。

複数のプラグインやスキルを導入している環境では、どのフックが確認を求めているのかが分かることで、許可するかどうかを判断しやすくなると感じます。

アップデート内容

新機能

  • OpenTelemetry の tool_decision イベントに classifier_verdict、permission_mode、classifier_category が追加されました(注目のアップデートを参照)。
  • 無人リトライモード(CLAUDE_CODE_RETRY_WATCHDOG)向けに CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS が追加されました。使用量上限に達したとき、上限のリセットまでの時間が長すぎる場合は待機せずにリクエストを終了します。
  • vim モードに % モーションが追加されました。対応する括弧へジャンプでき、単独でも d/c/y と組み合わせても使えます。
  • mod の Input に rows が追加されました。ターミナルで複数行のテキストフィールドを表示でき、Enter で送信、Shift+Enter または Enter の直前のバックスラッシュで改行します。
  • claude-api スキルに OpenTelemetry トレーシングのガイダンスが追加されました。ant CLI によるトレース送信先の設定方法も含まれます。
  • [VSCode] Claude の応答で LaTeX の数式を表示できるようになりました。$$ ブロック、複数行の \[ … \] ブロック、インラインの $…$ と \(…\) に対応します。
  • [VSCode] VS Code と JetBrains のパネルで、Pro・Max プランの使用量上限バナーに「Get more usage」リンクが追加されました。

改善・パフォーマンス

  • コンテキストウィンドウの小さいモデルへの切り替えを改善しました。新しいモデルには長すぎる会話は、先に切り替え前のモデルで要約されるようになりました。
  • 長時間実行されるサブエージェントの作業中の描画パフォーマンスを改善しました。進捗表示が描画のたびに全体を再処理せず、差分で更新されるようになりました。
  • artifact で、Claude が作成するページの固定ヘッダー(sticky header)の上の帯が塗られるようになりました。モバイルアプリで、スクロールしたテキストがそこに表示されなくなります。
  • mod で、VS Code、デスクトップアプリ、モバイルアプリでは、質問ダイアログの上に描画するツリーに Markdown を含められ、最大 48 行まで表示できるようになりました。ターミナルは引き続きプレーンテキスト 12 行です。

セキュリティ

  • プラグインまたはスキルのフックが ask を返したときのパーミッションプロンプトに、そのフックがどのプラグイン・スキルのものかが表示されない不具合が修正されました(注目のアップデートを参照)。

修正(主要なもの)

  • WorktreeCreate フックの worktree を確認なしで削除する問題を修正: 未プッシュのコミットが残っている可能性がある場合でも、終了時に確認なしで削除されていました(注目のアップデートを参照)。
  • Grep / Glob が検索の失敗を「一致なし」と報告する問題を修正: 検索プログラムが結果を返す前に失敗した場合に、検索に失敗した旨のエラーを返すようになりました(注目のアップデートを参照)。
  • Read ツールがバイナリファイルをテキストとして読む問題を修正: .xlsm、.parquet、.epub、.heic などが対象です(注目のアップデートを参照)。
  • fable / best モデルエイリアスがエラーになる問題を修正: 最新の Fable モデルが組織で利用できない場合に、Anthropic API でエラーになっていました。一つ前の Fable モデルで 1 回リトライするようになりました。
  • 短時間のコマンドの後にサインアウトされる問題を修正: claude auth status や claude plugin list などの短時間で終わるコマンドがトークン更新の途中で終了した後に、サインイン更新のタイムアウトや予期しないサインアウトが発生していました。
  • ワークフローエージェントがステップを飛ばしても成功と報告される問題を修正: 「タスク文にはユーザー権限がない」というハーネスの注記を読んだワークフローエージェントが自身のステップを飛ばし、それでも実行が成功と報告されることがありました。
  • 引数名の多いスキル・コマンドの呼び出しが止まる問題を修正: 引数名が非常に多い、または非常に長いスキル・コマンドを呼び出すと数秒間止まっていました。引数名は先頭 64 個、各 64 文字までが埋め込まれるようになりました。
  • ターン途中のメッセージで中断したツール呼び出しが拒否扱いになる問題を修正: パーミッションチェック中にターンの途中で送信されたメッセージによってツール呼び出しが中断された場合に、ユーザーが拒否したものとしてモデルに伝えられていました。
  • モデル切り替え時に確認なしでクレジットを消費する問題を修正: コンテキストウィンドウの小さいモデルへ切り替える際に、事前の確認なしで切り替え前のモデルによる要約に使用量クレジットを消費することがありました。
  • LLM ゲートウェイ経由で会話が繰り返しコンパクト化される問題を修正: リクエストしたモデルとは異なるモデル名を応答に含める LLM ゲートウェイ経由で利用している場合に、選んでいないモデルで会話が繰り返しコンパクト化されていました。
  • /rewind の後にスキルがモデルに渡されなくなる問題を修正: /rewind を使用した後に、スキルの一覧がモデルに渡されなくなっていました。
  • VS Code 拡張機能で問題のある会話がリロードのたびに開かれる問題を修正: パネルをクラッシュまたはフリーズさせる会話が、リロードのたびに再度開かれていました。
  • このほか、vim モード、Self-hosted runner、VS Code 拡張機能、ターミナルの表示、コンパクト化の表示など、多数の細かな不具合が修正されています。

破壊的変更(mods API を利用している場合)

mods API の 2 件の挙動が変わりました。mod を作成している方が対象です。

mod のフックの .catch ハンドラーが呼ばれる場面

mod のフックの .catch ハンドラーは、フックが例外を投げたかタイムアウトした場合にのみ実行されるようになりました。フック自身の呼び出しの配下で発生したイベントは、.catch を呼ばずにそのフックをスキップします。

以下は、公式ドキュメントの「Handle a hook that fails」に掲載されている .catch の例です。guard はフック関数です。

// on returns a registration, and .catch attaches a handler to that one hook
on('tool.call', { tool: 'Bash' }, guard).catch(async ($, e, next) => {
  // guard had already called next, so return what came back
  if (next.called) return next(e)
  // next.error.kind says why the handler was asked, such as 'throw' or 'timeout'
  return { deny: 'The command guard failed, so this command was not run: ' + next.error.kind }
})

2026 年 10 月 16 日時点の Mods reference では、.catch ハンドラー内の next.error.kind として、throw と timeout のほかに、フック自身の mods API 呼び出しの内部からイベントが発生したためにフックがスキップされた場合の re-entry(v2.1.292 以降)が記載されています。v2.1.301 の変更は、この re-entry の場面で .catch を呼ばないようにするものと読めます(推測)。

.catch が呼ばれる場面 〜v2.1.300 v2.1.301〜
フックが例外を投げた(throw) 呼ばれる 呼ばれる
フックがタイムアウトした(timeout) 呼ばれる 呼ばれる
フック自身の呼び出しの配下で発生したイベント 呼ばれる(next.error.kind が re-entry。推測) 呼ばれず、フックがスキップされる

mod の $.env.set の解決値

mod の $.env.set は、変数の設定または削除が完了すると {} で、書き込みが行われなかった場合は理由を示す { deny } で解決(resolve)されるようになりました。$.env.set は、Claude Code と、その後に Claude Code が起動するコマンドや MCP サーバーの環境変数を設定するメソッドです(公式ドキュメントの記載)。

以下は構築例です(引数は省略しています)。

// 構築例: v2.1.301 以降の解決値を確認する
const result = await $.env.set(/* ... */)
if (result.deny) {
  // 書き込まれなかった理由が入る
}
$.env.set の結果 〜v2.1.300 v2.1.301〜
変数を設定または削除できた CHANGELOG に記載なし {} で解決
書き込みが行われなかった CHANGELOG に記載なし 理由を示す { deny } で解決

Read のバイナリ判定修正を試してみた

Read ツールが .xlsm、.parquet、.epub、.heic などのバイナリファイルをテキストとして読まず、エラーを返すようになりました。そのため、意味のない文字列がコンテキストに入らなくなり、Claude がデータの中身を読み違えるおそれも減ると考えられます。エラー文がスキルやシェルコマンドを使うよう指示するので、DuckDB などで読み直す流れになりやすいと見ています。

.parquet や .xlsm などのデータファイルを含むリポジトリで Claude Code を使っている方に関係の深い修正だと感じます。

本日は、Read ツールが .parquet ファイルをテキストとして読み込まないことを確認します。まず、作業用のディレクトリを作成して、 DuckDB で .parquet ファイルを作成します。

% mkdir binary_read && cd binary_read

% duckdb -c "COPY (SELECT range AS id, 'row_' || range AS name FROM range(5)) TO 'sample.parquet' (FORMAT parquet)"
file sample.parquet
sample.parquet: Apache Parquet

次に、claude -p でこのファイルを Read ツールで読むよう依頼します。出力は stream-json 形式にして、jq でツールの呼び出し(tool_use)と結果(tool_result)の行だけを取り出しています。

% claude -p --max-turns 1 --output-format stream-json --verbose "sample.parquet を Read ツールで読み込んでください" | jq -c '.message.content[]? | select(.type=="tool_use" or .type=="tool_result") | {type, name, is_error, content}'
{"type":"tool_use","name":"Read","is_error":null,"content":null}
{"type":"tool_result","name":null,"is_error":true,"content":"<tool_use_error>This tool cannot read binary files. The file appears to be a binary .parquet file. Use a skill for this file type if one is available, or a shell command or script that can read the format.</tool_use_error>"}

Claude は Read ツールを呼び出し、その結果は is_error: true のエラーでした。エラーメッセージには、バイナリファイルは読めないこと、ファイルが .parquet のバイナリと判断されたこと、その形式を扱えるスキルやシェルコマンド、スクリプトを使うことが書かれています。\

データ分析のリポジトリでは .parquet や .xlsm がコードと同じディレクトリに置かれていることが多く、これらがテキストとして読み込まれると、意味のない文字列がコンテキストに入ってしまうと考えられます。v2.1.301 ではエラーとして返り、スキルやシェルコマンドなど代わりの読み方まで示されるため、Claude が次の手を選びやすくなったと感じます。

最後に

auto mode を既定にして運用している組織にとっては、OpenTelemetry の tool_decision イベントで分類器とパーミッションルールの判定を区別できるようになった点が、監査の観点で大きな変更だと感じます。修正では、未プッシュのコミットを含む worktree の削除や Grep / Glob の失敗の扱いなど、作業結果の信頼性に関わるものが目立ちました。

OpenTelemetry で Claude Code を監視している方、WorktreeCreate フックを使っている方、mod を作成している方は、アップデートして試してみてはいかがでしょうか。

参考文献

https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md

https://code.claude.com/docs/en/changelog

https://dev.classmethod.jp/articles/20261015-cc-updates-v2-1-300/


Claudeならクラスメソッドにお任せください

クラスメソッドは、Anthropic社とリセラー契約を締結しています。各種製品ガイドから、業種別の活用法、フェーズごとのお悩み解決などサービス支援ページにまとめております。まずはご覧いただき、お気軽にご相談ください。

サービス詳細を見る

この記事をシェアする

AI白書

関連記事