Claude Media
Claude Code v2.1.300 — AWSでadvisorが使え、キャッシュ書き込みを寿命別に計測

Claude Code v2.1.300 — AWSでadvisorが使え、キャッシュ書き込みを寿命別に計測

Claude Code v2.1.300は、Claude Platform on AWSで/advisorが使え、OpenTelemetryがキャッシュ書き込みを5分と1時間に分けて報告します。modのフックも増えました。

このリリースで何ができるようになるか

Claude Code v2.1.300は、修正と挙動の変更が大半で、追加は計測とmodに集中している更新です。日々の使い方に響くのは次の3つです。

  • Claude Platform on AWSで /advisor が使える: 自動では有効になりません。/advisor、advisorModel、--advisor のいずれかで選ぶまで、advisorは動きません
  • OpenTelemetryがキャッシュ書き込みを寿命別に分ける: api_request イベントに cache_creation_5m_tokens と cache_creation_1h_tokens が加わり、5分キャッシュと1時間キャッシュの書き込み量を別々に集計できます
  • modが書き換えられる範囲が広がる: agent.spawn でワークフローのエージェントの prompt と model を書き換えられ、prompt.change と $.ui.view が新しく入りました

ほかに、gitのreftable形式のリポジトリで --worktree が壊れていた問題、終了時にバックグラウンドコマンドが残る問題、hookの updatedInput の検証など、運用側が気づきにくい修正が並びます。

あなたの開発フローはどう変わるか

AWS経由でClaude Codeを使うとき

advisorは、主モデルが難所で別のモデルに相談する仕組みです。今回の更新で、Claude Platform on AWSのセッションでも /advisor が使えるようになりました。

ただし、有効になるのは選んだときだけです。

/advisor opus

引数なしの /advisor はモデルの選択画面を開き、/advisor off で止められます。環境変数 CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 を設定すると、/advisor コマンドそのものが使えなくなり、保存済みの advisorModel も無視されます。この変数を設定したセッションでは、--advisor フラグは受け付けられるだけで効果がなく、既存のスクリプトが渡していてもエラーにはなりません。

advisorのドキュメントの要件節は、Claude Platform on AWSを対象外のプロバイダーとして挙げたままです。今回の更新履歴の記述とずれているので、AWS経由の環境に導入するときは、実際に /advisor を開いて選択肢が出るかを先に確かめるのが確実です。設定キーの使い分けはadvisorModelでAdvisorの既定モデルを指定するにあります。

トークンコストをOpenTelemetryで集計しているとき

これまで api_request イベントのキャッシュ書き込みは cache_creation_tokens の1本だけでした。5分キャッシュの書き込みは基本の入力単価の1.25倍、1時間キャッシュは2倍です。合算値からは、どちらにどれだけ書いたかが分かりませんでした。

今回、イベントに次の2つが加わります。

属性中身
cache_creation_5m_tokens中身5分の寿命でキャッシュに書いたトークン
cache_creation_1h_tokens中身1時間の寿命でキャッシュに書いたトークン

監視ドキュメントの api_request の属性一覧には、現時点で cache_creation_tokens しか載っていません。新しい2つは、更新履歴が唯一の記述です。ダッシュボードを組むときは、cache_creation_tokens との関係を自分のデータで確かめてから使うのが確実です。

トレースのスパンには、GenAIセマンティック規約の属性として gen_ai.provider.name、gen_ai.conversation.id、gen_ai.tool.name、error.type などが加わりました。llm_request スパンには以前から gen_ai.system と gen_ai.request.model があり、これらは規約への対応を厚くする流れの続きです。入力トークンの換算はOpenTelemetryの入力トークンをGenAI規約に合わせる換算で扱っています。

modが書き換えたプロンプトの扱いも直りました。prompt.submit フックが書き換えた、または捨てたプロンプトが、OpenTelemetryの user_prompt イベント、インタラクションのスパン、セッション名のリクエストに、入力されたままの形で記録されていました。この修正で、記録は書き換え後の実態に合います。

modを書いているとき

modのフックまわりで、追加が5つ、挙動の修正が3つあります。

変更内容
prompt.change内容入力欄の文字が、タイプ以外の理由で変わったときに発火する。履歴の呼び出し、クリア、取り消し、プラグインによる入力が該当
agent.spawn内容ワークフローのエージェントの prompt と model を書き換えられる。以前はワークフローのエージェントを拒否することしかできなかった
$.ui.view({ agentId })内容指定したエージェントのトランスクリプトを、メインの表示に出す。$.ui.view({}) で元に戻る
virtualText内容プロンプト欄に描くが、下書きにも送信内容にも入らない文字
Text の dir内容右から左へ書く文字向け。WindowsとVS Codeのターミナルで、行が右詰めになる

挙動の修正は次の3つです。

  • chat:newline キーバインド(Ctrl+J、または割り当て直したEnter)で入れた改行が、prompt.edit フックを起こしていませんでした
  • modをホットリロードしたときにClaudeへ渡す注記が、ユーザーの入力としてトランスクリプトに表示されていました
  • prompt.submit が書き換えたプロンプトの記録(前節)

modのフックリファレンスのイベント表には、prompt.fill と prompt.edit はありますが、prompt.change はありません。agent.spawn の行も、サブエージェントとteammateの記述にとどまります。今回の追加分を使うときは、型定義ファイルが頼りです。modを --plugin-dir で読み込むと、対話型のセッションでは .claude-plugin/types/ に、動かしているバージョンのイベントとAPIの型が書き出されます。

prompt.submit の書き換えと停止はmodのprompt.submitにまとめています。

--worktree でセッションを始めるとき

worktree関連の修正が4つ入っています。

修正

worktreeまわりの修正4件

  • 開始コミットの取り違え

    タグやブランチ名がコミットIDのような形をしていると、--worktree のセッションが違うコミットから始まることがありました。開始時のgitステータスも、新しいworktreeでなく別のブランチを指していました

  • reftableの再オープン

    gitのreftable形式のリポジトリで、ブランチ名が .invalid と表示され、--worktree が既存のworktreeを開き直せませんでした

  • bareリポジトリの起点

    bareリポジトリのworktreeで、originの既定ブランチを取得できないと --worktree が失敗していました。代わりの起点は、メインリポジトリのHEADでなく、いま作業しているチェックアウトのHEADになります

  • WorktreeCreate / WorktreeRemove

    プラグインの WorktreeCreate と WorktreeRemove フックが、--worktree で起動したときに動いていませんでした。--tmux との組み合わせは、この修正の対象外です

reftableは、gitが参照を保存する新しい形式です。reftableを使うリポジトリでは、上の .invalid の表示に加えて、OpenTelemetryの tool_result イベントが、git commit -q のあとで git_commit_id を欠いていた問題も直りました。起点の指定はworktree.baseRefとsparsePathsで扱っています。

終了時にバックグラウンドコマンドが残っていたとき

終了を求めてから1.5秒経ってもバックグラウンドのコマンドが動いていれば、強制終了します。全画面表示では、これまで走ったまま残ることがありました。バックグラウンドコマンドの実行中にセッションを終了すると、SessionEndフックが動かないことがある問題も直っています。

長く走るコマンドを頼んだまま閉じる使い方では、終了のたびに子プロセスが片づきます。閉じたあとも動かしたい処理は、終了のたびに止められる前提で考える必要があります。

hookとmanaged settingsを運用しているとき

  • PreToolUseとPermissionRequestのhookが返す updatedInput は、Claude自身の入力と同じ基準で検証されます。知らないキーは捨てられ、ツールが受け付けない入力になった場合は、呼び出しが拒否されます
  • エージェントhookが、指定した model を無視していました。haiku のような別名も解決され、サブエージェントが使うモデルに上書きされることもなくなりました。指定したモデルが使えないときは、処理を許可して通すのではなく、呼び出し元のモデルで動きます
  • Coworkのクラウドセッションでは、PermissionRequest フックのallowに入れた setMode の更新が無視されます。承認そのものは、それ以外の部分が有効です
  • CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST が設定されたセッションでは、設定ファイルに書かれた次の変数を無視します。CAバンドル(SSL_CERT_FILE など)、ツールのプロキシ、gitのTLS、gitの設定です。Claude Desktopの下で無視されるのは、プロジェクトの設定に書いた分だけです
  • Claude DesktopのCodeタブは、forceLoginGatewayUrl がAnthropic運営のゲートウェイを指し、そのゲートウェイがセッションのホスト名に対応しているとき、managed settingsを適用するようになりました。ゲートウェイは起動時に到達できる必要があります
  • claude gateway は、Claude Desktopがゲートウェイから使えない desktop: ポリシーのキーがあると、起動時にキー名を示して止まります。以前は警告を出して起動していました

管理者の入れたmodだけに絞る設定は、allowManagedModsOnlyでユーザー導入のmodを止めるにあります。

プロキシ越しにAPIを使うとき

api.anthropic.comへの大きなリクエストは、テレメトリを切っていてもgzipで圧縮されるようになりました。無効にするには CLAUDE_CODE_GZIP_REQUEST_BODIES=0 を設定します。環境変数の一覧では、プロキシを経由する場合、クライアント証明書を設定している場合、NODE_EXTRA_CA_CERTS がある場合は、圧縮を自動で見送ると説明しています。圧縮された本文を正しく扱えないTLS検査プロキシがあるときの対処は、gzip圧縮がプロキシで壊れるときの対処法に書きました。

TLS検査プロキシの証明書がOSの証明書ストアだけで信頼されている環境では、機能フラグと段階展開が古いまま止まる不具合も直っています。

主な変更点

追加

変更内容
/advisor内容Claude Platform on AWSで使える。選ぶまで動かない
OpenTelemetry内容api_request に cache_creation_5m_tokens と cache_creation_1h_tokens
OpenTelemetry内容スパンにGenAI規約の属性(gen_ai.provider.name など)
mod内容prompt.change、$.ui.view、virtualText、Text の dir、agent.spawn の書き換え
VS Code内容claudeCode.attachSelection 設定。エディターで選んだ文字をメッセージに加えない
Claude Tag内容Slack Connectチャンネルへの対応(既定ではオフ)、承認用のAllow once / Denyカード、Slackの音声クリップの文字起こし

挙動の変更

変更内容
終了内容1.5秒経ってもバックグラウンドコマンドが動いていれば強制終了
gzip内容テレメトリ無効でも大きなリクエストを圧縮。CLAUDE_CODE_GZIP_REQUEST_BODIES=0 で解除
hookの updatedInput内容知らないキーを捨て、ツールが拒否する入力は呼び出しを拒否
ローカルのトランスクリプト内容各APIリクエストのシステムプロンプト、ツール、パラメータも記録
/sandbox内容選択肢の文言が「Sandbox BashTool」から「Sandbox commands」に
claude remote-control内容--sandbox と --no-sandbox を削除。渡すとエラーで終了
claude-api スキル内容依頼がない限り、Managed Agentsのセッションを残す
バックグラウンドセッション内容引き継いだワークフローを、Workflowツールの承認を通して再開

ローカルのトランスクリプトに、リクエストのシステムプロンプト、ツール、パラメータが入るようになった点は、共有するときの前提が変わります。共有を選んだトランスクリプトから、リクエストをそのまま再現できるようにするための変更です。共有する前に中身を見直す手順が要ります。

修正(読者に近いもの)

  • /autocompact で小さい自動圧縮ウィンドウを選んだとき、トークン使用量が多いという警告が出ていた
  • 自動ツール検索(ENABLE_TOOL_SEARCH=auto)が、MCPサーバーの再接続などで会話の途中に切れていた
  • APIが入力スキーマを拒否したMCPツールのせいで、会話が毎ターン400エラーになっていた。以後はそのツールだけ、パラメータなしで送る
  • 圧縮のあとにMCPサーバーの接続が終わると、次のツール呼び出しまでClaudeにツールと指示が伝わっていなかった
  • ヘッドレスとAgent SDKのセッションを再開すると、出力トークンの上限で切れた返信の後で、圧縮で残した直近のメッセージが失われていた(v2.1.300以降の圧縮が対象)
  • 同じく再試行や未完了の返信の後で、圧縮の要約が欠けたり、圧縮前の履歴が戻ったりしていた
  • /branch がUnicodeの行区切り(U+2028)と段落区切り(U+2029)を含むメッセージを落とし、claude purge が入れ子のプロジェクトを飛ばしていた
  • claude daemon stop --any が、停止していないのに「stopped」と表示していた。待って強制終了し、残っていれば終了コード1で知らせる
  • claude --help の --restricted の説明が、削除済みのツール名を挙げていた
  • ダークのANSIテーマと16色のターミナルで、薄い文字が通常の文字と同じ見た目になっていた
  • Claudeがバックグラウンドコマンドの出力ファイルを繰り返し見に行く、またはスリープして待つ挙動を直した
  • forceLoginOrgUUID が拒否したログインでも、拒否された組織のトークンが保存されたままになったり、/login のあとも有効だったりした
  • セッションのscratchpad内のファイルを、フルパスでなくファイル名や相対パスで呼んでいた

クラウドセッションの修正も多く、組織のポリシーを読めないときに1ターンあたり5分止まる問題、回答済みのメッセージが再起動のあとにもう一度実行される問題が含まれます。Coworkのクラウドセッションでは、自分のコンピューターのパスに対するWrite、Edit、NotebookEditが、ファイルが届かないまま成功と報告していました。この報告は直っています。

VS Code、Remote Control、Code Review

  • VS Code: 常に思考するモデルでThinkingがOffに切り替わる不具合、fast modeが使用クレジットの切れた後も残る不具合、WindowsでファイルをShift+ドラッグすると、読めない /c:/… 形式のパスが入る不具合などを修正
  • Remote Control: 複数のセッションを1台で受けるコンピューターで、動いているセッションが停止と表示される問題と、一時的なサインインエラーで接続の更新を諦める問題を修正。ロックされたキーチェーンなどのあとは、再試行して claude /login が要るときに警告する
  • Code Review: GitHub組織のメンバーシップを非公開にしている書き込み権限者の @claude review が無視されていた問題を修正

前後のバージョンとの関係

バージョンこの更新とのつながり
v2.1.292この更新とのつながりCowork承認プロンプトの「Allow for this task」が消えた不具合(今回修正)の発生元
v2.1.299この更新とのつながりidle compactionとMCP許可ルールの厳密化。今回の圧縮まわりの修正は、この流れの続き
v2.1.300この更新とのつながりAWSでのadvisor、キャッシュ書き込みの寿命別計測、worktreeとreftableの修正

直前のv2.1.299は、放置した会話の圧縮とMCPの許可ルールが中心でした。今回は、機能の追加より、境界の修正が目立ちます。

利用形態別の影響

使い方影響理由
AWS経由でClaude Codeを使う影響条件次第理由/advisor が使えるようになるが、選ぶまで動かず、ドキュメントの要件節とは食い違う
OpenTelemetryでコストを集計する影響明確な恩恵あり理由キャッシュ書き込みを5分と1時間に分けて見られる
reftableのリポジトリで --worktree を使う影響明確な恩恵あり理由ブランチ名の表示と、既存worktreeの再オープンが直る
modを書いている影響明確な恩恵あり理由ワークフローのエージェントの書き換えと、プロンプト欄の変化の観測ができる
hookで updatedInput を返す影響条件次第理由知らないキーが捨てられ、受け付けられない入力は拒否される
プロキシ越しにAPIを使う影響条件次第理由gzipが自動で見送られる条件を満たさない構成では、圧縮される
claude remote-control を --sandbox つきで呼ぶスクリプト影響条件次第理由フラグを渡すとエラーで終了する
短い会話をIDEで使うだけ影響ほぼ影響なし理由変更の多くは別の面に向いている

OpenTelemetryのキャッシュ書き込みの分割は何を測れるようにするか

キャッシュ書き込みの単価は、基本の入力単価の1.25倍(5分)と2倍(1時間)です。合算された cache_creation_tokens では、1時間キャッシュに切り替えたときの効果も、5分キャッシュで足りているセッションの無駄も、見えませんでした。

寿命別の2つの属性があれば、api_request イベントの query_source や agent.name と組み合わせて「どのサブシステムが1時間キャッシュを書いているか」を問えます。長い会話を放置する使い方では、書き込みの寿命が費用に直結します。数字を出すときは、合算の属性との突き合わせを最初に1回やっておくと、集計の誤りに気づけます。

まとめ

今回の中心は、計測とmodの範囲を広げる追加と、worktreeやhookの境界の修正です。AWS経由の環境でadvisorを試すなら、有効にするのは自分で選んだときだけで、ドキュメントの要件節はまだ更新されていません。OpenTelemetryでコストを見ているチームは、cache_creation_5m_tokens と cache_creation_1h_tokens を既存のダッシュボードに足すと、キャッシュ戦略の効果を測れます。claude remote-control に --sandbox を渡しているスクリプトは、フラグを外しておく必要があります。

関連ガイド

前の更新との流れはv2.1.299で、Claude Code全体の機能はClaude Code(クロードコード)の解説にまとめています。

この記事を共有:XはてブLinkedIn