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.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(クロードコード)の解説にまとめています。