Claude Code v2.1.317 — メール送信前の確認、SDKのhook失敗時ブロック、OTel属性追加
Claude Code v2.1.317は、アカウントのメールアドレスを外へ送る前の確認、Agent SDKのhook失敗時ブロック、OTelの新属性、gatewayのコスト集計APIを加えました。
このリリースで何ができるようになるか
Claude Code v2.1.317の追加は、情報の流出と運用の見通しに関わるものが中心です。残りの大半は修正で、セルフホストRunnerとクラウドセッションの項目が目立ちます。
v2.1.317で影響が大きい4つの変更
メールアドレスを外へ送る前に確認
Webツールやシェルツールがアカウントのメールアドレスをネットワークへ送る前に、確認を求めるようになりました。
SDKのhookが失敗したらブロック
Agent SDKのhookコールバックに
onFailure: "block"が加わりました。コールバックが失敗したとき、操作は実行されません。OTelにプランとプロバイダーの属性
anthropic.plan、anthropic.seat_type、anthropic.provider、anthropic.custom_base_urlがメトリクス、イベント、スパンに付きます。gatewayの過去コストをAPIで取得
管理APIの
GET /v1/organizations/analytics/costで、期間内の支出を合計、開発者別、日別、IdPグループ別に読めます。
あなたの開発フローはどう変わるか
使い方によって、効き方が大きく分かれます。
| 使い方 | 影響 | 何が変わるか |
|---|---|---|
| Agent SDKでhookコールバックをポリシー判定に使う | 影響明確な恩恵あり | 何が変わるか失敗時の挙動を「止める」側に固定できる |
| テレメトリをOTelで集めて利用状況を分析する | 影響明確な恩恵あり | 何が変わるかプランや席種、プロバイダーで切り分けられる |
| Claude apps gatewayの管理者 | 影響明確な恩恵あり | 何が変わるか過去コストのAPIとIdPグループの日次記録が加わる |
/schedule でクラウドのスケジュールタスクを作る | 影響条件次第 | 何が変わるか意図しないコネクタが付いたとき警告が出る |
セルフホストRunnerで claude -p を入れ子にする | 影響条件次第 | 何が変わるかセッションIDの扱いが変わり、環境変数で旧挙動に戻せる |
| 手元のターミナルでの通常利用 | 影響小さな改善が中心 | 何が変わるか設定変更は要らない。メール送信の確認が出ることがある |
メールアドレスをネットワークへ送る前に確認が入る
Webツールまたはシェルツールがアカウントのメールアドレスをネットワークへ送ろうとするとき、送る前に確認を求めるようになりました。どのコマンドやURLが対象になるかの判定条件は、changelogに書かれていません。
背景として、OTelのテレメトリにOAuthで認証している場合に含まれる user.email は、設定したOTelエンドポイントにだけ送られ、Anthropicには送られないと、モニタリングのドキュメントにあります。今回のチェックは、それとは別の経路です。Claudeが実行するツールの呼び出しに、メールアドレスが混ざる場合を見張ります。
確認が出たときは、送信先とコマンドの中身が判断材料になります。
Agent SDKのhookコールバックが失敗したらブロックする
onFailure: "block" は、Agent SDKのhookコールバックで使えるようになりました。コールバックが失敗したとき、トリガーになった操作を実行させず、ブロックします。
Claude Code本体のhookには、同名の onFailure が先にあります。hooksのドキュメントによれば、command と http のhookで "continue"(既定)か "block" を選べ、v2.1.295以降が対象です。既定の "continue" では、ポリシーを担うhookのパスを打ち間違えると全てが素通りになります。止めたい場合は "block" を指定します。
SDKのコールバックhookはまた別の扱いです。ドキュメントには、タイムアウトを超えたSDKのコールバックhookはツール呼び出しをブロックするとあります。今回の onFailure: "block" は、コールバックが失敗したときにも操作を止める指定です。
SDKのhookの基本はAgent SDKのHooksでエージェントの挙動を横取りするで扱っています。
OTelの属性が増え、エクスポートの詰まりも直った
OTelのメトリクス、イベント、スパンに、次の4属性が加わりました。
| 属性 | 使い道 |
|---|---|
anthropic.plan | 使い道契約プランごとの利用の切り分け |
anthropic.seat_type | 使い道席種ごとの集計 |
anthropic.provider | 使い道Anthropic API、Bedrockなど接続先別の集計 |
anthropic.custom_base_url | 使い道カスタムのベースURL経由かどうかの判別 |
各属性が取る値の一覧は、changelogの該当項目にありません。ダッシュボードで使う前に、実際のエクスポートを一度確かめてください。
あわせてエクスポート周りの修正が3件入っています。
https://エンドポイントへプロキシ経由で出すとき、別のエクスポートが進行中に始まった分が送られなかった問題http://エンドポイントへのエクスポートをHTTP 403で止めるプロキシに、接続の試行が大量に飛んだ問題- 返事を返さないプロキシの背後でエクスポートが止まり続ける問題。10秒でタイムアウトし、
OTEL_EXPORTER_OTLP_TIMEOUTで最大30秒まで延ばせる
OTelのイベントを使った別の集計例は、workflow.run_idでWorkflow実行のイベントを束ねる方法にあります。
Claude apps gatewayにコストAPIとIdPグループの記録
gatewayの管理者向けに、2つの追加があります。
| 追加 | 中身 |
|---|---|
| コストレポート | 中身GET /v1/organizations/analytics/cost。過去の支出を日付範囲で、合計、開発者別、日別、IdPグループ別に読める |
| IdPグループの日次記録 | 中身admin: を設定したgatewayで、各開発者のIdPグループを毎日記録する。保持期間は admin.identity_retention_days |
2つは対になっています。コストレポートはこの日次記録でグループ別に集計します。
修正も2件あります。1つは、グループ共有の予算が尽きたあと、ステータスラインと /usage が開発者自身の支出上限を100%使用済みと表示していた問題です。もう1つは、Amazon Bedrockの「Input is too long.」エラーをgatewayが隠し、セッションが圧縮されずに毎ターン「upstream rejected the request」で失敗していた問題です。
gatewayの設定例はforward_user_identityで自前プロキシへユーザーIDを渡す設定にあります。
セルフホストRunnerとclaude -pの入れ子
入れ子の claude -p に関する変更が3件、同じ方向で入っています。
- 修正: クラウドまたはセルフホストRunnerのセッション内で
claude -pを動かすと、そのセッションのIDを共有していた。セッションのトランスクリプトに書き込み、再起動で別の会話が再開されるおそれがあった - 修正: 同じ状況で
claude -pが独自のタイトルを作り、外側のセッションへ送っていた - 追加:
CLAUDE_CODE_DISABLE_NESTED_SESSION_ID。セルフホストRunnerで1にすると、claude -pが外側セッションのIDとトランスクリプトを使う、以前のバージョンの動きに戻る
つまり新しい既定は、入れ子の claude -p が別のセッションIDで動く形です。外側のセッションのトランスクリプトに混ざらなくなります。以前の挙動に依存していたスクリプトだけが、環境変数を設定する対象です。
# セルフホストRunnerの実行環境で設定する(手元の対話claudeではない)
# 入れ子の claude -p が外側のセッションIDを使う旧挙動に戻す
export CLAUDE_CODE_DISABLE_NESTED_SESSION_ID=1Runner側ではほかに、壊れた接続を使い回して固まる症状への対処が3件入りました。次のポーリングとセッションの通信は、5xx(501と529を除く)のあとに新しい接続を開きます。ハートビートが無応答のときも、新しい接続でセッションを戻します。
主な変更点
追加・変更
/scheduleで新しいクラウドのスケジュールタスクを作ったとき、頼んでいないコネクタが付いていれば警告が出る。外し方も示される- Claude DesktopのCodeタブに、組織のリモート管理設定が読み込めていないときの通知と、読み込めたときの通知が出る
- autoモードの判定が、サブエージェントのツール呼び出しに答えを出せないとき、メインの表示に通知が出る。以前は何も出なかった
- SendMessage: 実行中のバックグラウンドエージェントへのメッセージが早く届く。実行中のコマンドは停止せず、バックグラウンドへ移る
- メインの会話と別のモデルを使うサブエージェントとチームメイトは、そのモデルに保存されたeffortか既定値で動く。セッションのeffortは使わない
- 終了時の「Background work is running」の確認が、プラグインのモニターでは出ない
- 組み込みの
plugin-authoringスキルが、作ったmodが動いたあとで一度だけ、共有の手伝いを申し出る - Readツールの「前回のReadから変更なし」というスタブが消えた。変更のないファイルをもう一度読むと、内容がそのまま返る
- [Cloud sessions] MCPサーバーが開くよう求めるリンクを、カードで開くか辞退できる。以前は要求に気づけなかった
- [Cloud sessions]管理設定の組織の環境ダイアログが、個人用と同じ短いレイアウトになった。各セクションは行から開き、未保存の入力があれば閉じる前に確認する
- [Claude Tag] Slackに新しく貼ったartifactリンクは、シンプルなカードと「Open」ボタンで出る。ボタンはClaudeでartifactを開く。Slackのサイドパネルは使わない
修正(認証・権限・接続)
- autoモードが毎ターン失敗する問題。ベースURLに設定したLLMゲートウェイが、サーバー側の安全確認に403か422を返す場合に起きていた(apiKeyHelperを併用した403は従来どおり)
claude auth statusが、遅いトークン更新の保存前に終了し、次の実行でサインアウトされることがある問題- リージョンやネットワークによるブロック(HTTP 403)がサインインの失敗として表示される問題。ブロックだと分かるエラーになった
- 必須のgatewayに届かないときの起動エラーが、サインインでなくネットワークを指す。gatewayのTLS証明書が検証できない場合は、そう表示する
- TLSを検査するプロキシの背後で、ルート証明書の更新後に「unable to get local issuer certificate」でAPIリクエストが失敗する問題
- Microsoft Foundryで、Azureの資格情報が読み込めないときのエラーが、確認か更新を促す文になり、
cloud_credential_errorとして報告される - stdioのMCPサーバーが、envの設定で空に指定された
AWS_BEARER_TOKEN_BEDROCKを空のまま受け取る問題。変数を未設定にするので、サーバーはマシンのAWS資格情報を使える - 一部のClaude Desktopのセッションで、プロジェクトとローカルのMCPサーバーが最初のターンの後に切断される問題
- claude.aiと同期したプラグインに同じサーバーが含まれるとき、動いているclaude.aiコネクタが認可が必要、または失敗したとClaudeが述べる問題(クラウドセッション)
修正(セッション・会話・コンテキスト)
- 非常に大きなCLAUDE.mdが最後の送信から変わったセッションで、自動圧縮のあとに「Prompt is too long」が出る問題
- 長い会話で、圧縮が自分のリクエストを短くしなければならなかったとき、以前の要約が失われる問題
claude --from-prが、セッションの多いプロジェクトで、リンクされたセッションが最初のページより古いとき「No conversations found」を返す問題- プロジェクトの
effortLevelが、アプリが先に起動してから開くセッション(Claude DesktopのCodeタブの新規セッションなど)で無視される問題 - 再開したセッションが、Claudeがすでに知っているファイル変更を、もう一度伝える問題
- 再開したセッションで、前の呼び出しがツールをオフにしていて失敗したあと、Claudeが組み込みツールを使わないことがある問題
- Grep、Globの検索が時間切れになったとき、Claudeが部分的な結果を完全なものとして扱う問題
- PDF自身のメタデータにより、Readと@メンションがページ数を少なく数える問題
DISABLE_PROMPT_CACHING_OPUSとDISABLE_PROMPT_CACHING_SONNETが、既定モデルの[1m]、他リージョン、日付なしの表記に効かない問題- 起動直後の1秒ほどの間に行った設定ファイルの編集が、次に設定ファイルが変わるまで反映されない問題
- 一部の実行がクリーンアップを省くマシン(
--setting-sourcesの利用など)で、古いトランスクリプトが消えない問題
修正(エージェントチーム・バックグラウンド・ループ)
- 削除されたエージェントチームの受信箱が、チームメイトの遅れて届いたメッセージで再作成される問題
- 作り直したチームメイトが、以前のシャットダウン承認でチームから外される問題
- tmuxまたはiTerm2のペインのチームメイトが、リードがマニュアルモードなのにautoモードで始まる問題
- バックグラウンドセッションが、アップグレードや退役のとき、直前に変えた権限モードを失うことがある問題
- プロンプトで入力を消そうと押したCtrl+Cが、動いている全バックグラウンドエージェントを止める問題
- 間隔を指定しない(Claudeが次の起動時刻を決める)
/loopが、Claudeがリクエストの項目を省いたとき、次の起動を予約しないことがある問題 - 停止したシェルコマンドの子プロセスに、SIGTERMが2回送られることがある問題。プログラムによっては後片付けを飛ばす
- スケジュールタスクをオフにしたあと、保存済みのタスクを一覧も削除もできない問題
/scheduleが、タスクの作成か更新のあと、次の実行時刻とリンクを結果に出さない問題/team-onboardingのガイドを、どれかを指定せず削除するよう頼まれたとき、最後に更新したガイドを消す問題。サーバーが削除を拒んだのに、削除したとClaudeが述べる問題も直った
修正(クラウド・Remote Control・外部アプリ)
- 2つの権限プロンプトが同時に出たとき、2つ目にファイルパスもコマンドも出ない問題(claude.aiとモバイルアプリ)
- Remote ControlとSDKのホストが、modのツール呼び出しに「今後は確認しない」を出す問題
- クラウドとSDKのセッションで、タイトルの生成中に新しいメッセージかStopが来るとタイトルが失われる問題
- クラウドセッションのautoモードが、Artifactツールのアップロード、データベース書き込み、outputsフォルダーへの保存で承認待ちになる問題
- claude.aiと同期したスキルが、ディスクに書けない場合、10分ごとに失われるか再ダウンロードされる問題
- コマンドを登録するプラグインが多い、ヘッドレスセッションのメモリ使用量が多く、起動が遅い問題
/artifactsとArtifactツールの共有一覧が、自分のartifactが200件以上あると共有分を出さない問題/remote-controlが、disableRemoteControl設定でオフのとき、「Unknown command」と答える問題。オフだと伝えるようになった- セルフホストRunnerで、プランの承認待ちに再起動すると、最近のターンか会話全体が失われる問題
- セルフホストRunnerで、セッションを新しいRunnerへ移すとき、中断したツール呼び出しがClaudeに見えない問題(ターンが
CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MSより古い場合) - セルフホストRunnerで、オフにしたMCPサーバーが、セッションを新しいマシンへ移すとオンに戻る問題(セッションサービスが切り替えの保存を拒んだとき)
- [Cloud sessions]すでにあるホストにネットワークシークレットを追加すると、黙って置き換わる問題。追加フォームは拒否し、既存のシークレットを案内する
- [Cloud sessions]新しいスケジュールタスクが、組織の既定の環境を無視する問題。管理者が選んだ環境でフォームが始まる
- [Remote Control]
claude remote-controlを再起動したあと、前のメッセージから1分以内に送った次のメッセージが答えられない問題 claude -pが、ディスクの空きかクォータが尽きてトランスクリプトか~/.claude.jsonの書き込みを失っても終了コード0で終わる問題。エラーを出し、textとjsonの出力では終了コード1になる。満杯のNFSエクスポートは検出できないことがある
修正(Windows・VS Code・そのほか)
- Windows: ネイティブのパス検索が失敗する一部のボリュームで、すべてのツール呼び出しが拒否される問題。作業ディレクトリの確認はフォルダーの識別情報で比べる
- Windows: Claude Desktop以外で始めたセッションの、スクラッチパッドなどの一時パスがプロジェクトのパスの長さに応じて伸び、クローンしたリポジトリが260字のパス上限に当たる問題
- VS Code: フォークした会話でメッセージが落ちる問題。並列に走ったツール呼び出しのうち1つしか残らず、圧縮が残した最後のメッセージが失われていた
- VS Code: Claudeの起動が間に合わずメッセージが消える問題。エラーを出す前に、拡張がもう一度Claudeを起動する
- VS Code: リージョンやネットワークによるブロックでサインイン画面が開く問題
- VS Code: Accountパネルのプラン名で、2語目が小文字になる問題
- VS Code: Claudeタブのファイルリンクが、別のエディターグループでなくチャットの上に開く問題
- VS Code:
chat.fontSizeを上げても、Claudeパネルの添付チップ、メニュー、バナー、ダイアログが小さいままの問題 - VS Code: テレメトリがオフのとき、
ultrathinkがそのターンのeffortを上げず、虹色の表示も出ない問題 - 終了時の「Resume this session with」が、起動時のフラグ(
--chrome --debugなど)を--resumeの前に繰り返して示す - 画面を読み上げるモードで、実行中のサブエージェントの経過時間とトークン数が、変わるたびに読み上げられる問題
- /feedbackで、レポートを送信中に「Enter to confirm」と出る問題
- Remote Control: アプリが名前を付けないフォークの名前が、長くても「(fork)」の末尾が残る。
claude remote-controlで始めたセッションでは、「Name (fork)」のフォークが「Name (fork 2)」になる /design-syncが、デザインシステムがClaudeへ移っていると最初に伝え、アップロードの段階で失敗するのではなく、ビルドを始める前に止まる
Readの「変更なし」スタブは、何を元に戻したのか
changelogの記載は短く、「変更のないファイルをもう一度読むと内容が返る」だけです。裏返せば、直前までは同じファイルを再度読むと、内容でなく「前回のReadから変更なし」という短い返答が来る仕組みがありました。
今回のリリースで、その短縮がなくなりました。同じファイルを何度も読ませる運用では、読むたびに内容が会話に入り直す形に戻ります。
同じ流れで、CLAUDE.mdが巨大なセッションの圧縮後のエラー、圧縮が自分のリクエストを縮めたときの要約の消失も直りました。長いコンテキストを扱う運用では、読み込み側の変更と圧縮側の修正が同時に入ったリリースです。
サブエージェントのeffortはv2.1.316からv2.1.317で2段階に変わった
| バージョン | 中心の変更 |
|---|---|
| v2.1.314 | 中心の変更作業ディレクトリ外への書き込みを止める設定の追加 |
| v2.1.316 | 中心の変更Opus 4.8のfast mode廃止予告、サブエージェントの既定effort環境変数 |
| v2.1.317 | 中心の変更メール送信前の確認、SDKのhook失敗時ブロック、OTelの新属性、gatewayコストAPI |
v2.1.316では、サブエージェントの既定effortを CLAUDE_CODE_SUBAGENT_EFFORT で決められるようになりました。v2.1.317は、メインと別モデルのサブエージェントとチームメイトに、そのモデルの保存済みeffortか既定値を使わせます。サブエージェントのeffortをめぐる変更が、2つのバージョンで続いたことになります。
まとめ
v2.1.317で優先して確認したいのは、メールアドレスの送信確認が出たときの判断基準です。送信先が自分の管理下にあるかどうかが、判断の分かれ目です。SDKでhookコールバックをポリシー判定に使っているチームは、onFailure: "block" を入れると失敗時の素通りを防げます。OTelの利用者は新属性を確かめ、gatewayの管理者はコストAPIの読み出しを試す段階です。セルフホストRunnerで入れ子の claude -p を使うスクリプトは、セッションIDの扱いが変わった点だけ点検してください。
v2.1.316の変更点はv2.1.316のリリースノートに、それ以前はv2.1.314のリリースノートにまとめてあります。
関連ガイド
このバージョン単体の位置づけや前後の版とのつながりは、Claude Codeの全体像でまとめて確認できます。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。