本文へスキップ
Claude Media
Claude Code v2.1.85 — フックの条件分岐とAskUserQuestion連携、MCP OAuthがRFC9728準拠に

Claude Code v2.1.85 — フックの条件分岐とAskUserQuestion連携、MCP OAuthがRFC9728準拠に

Claude Code v2.1.85はhooksのif条件、MCP OAuthのRFC9728対応、/compactの自己救済、Kittyキーボード抜け漏れ修正など30項目の整備リリースです。

読了目安 約8

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

Claude Code v2.1.85は変更30項目の整備リリースで、単独の目玉機能というより、hooks・MCP・OpenTelemetry・端末互換性まわりを一気に磨き込んだ構成です。

  • hooksにif条件(Bash(git *)のような権限ルール構文)が追加され、不要なプロセス起動を避けて条件実行できるようになる
  • MCP OAuthがRFC9728(OAuth保護リソース仕様)に準拠し、認可サーバー探索の挙動が標準化される
  • /compactが「圧縮自体がコンテキストに収まらない」ケースで詰まる問題と、Kitty / Ghostty / WezTermでCtrl+C/Ctrl+Dが効かなくなる不具合が解消する

つまり「フックが毎回起動するコストでセッションが重かった」「MCPの再認可で止まっていた」「Kitty系端末でClaude Code終了後にCtrl+Cが効かなくなる地雷を踏んでいた」のいずれかに該当する場合は、本版で運用が落ち着きます。

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

hooksを本番運用しているチーム

PreToolUseをはじめとするフックに条件フィールドifが入りました。書式は既存の権限ルール構文と同じで、Bash(git *)のように記述すればgit系のbashだけフックを動かすことができます。

{
  "hooks": {
    "PreToolUse": [
      {
        "if": "Bash(git *)",
        "command": ".claude/hooks/git-guard.sh"
      }
    ]
  }
}

従来は「フックをとりあえず起動して、中で条件判定してすぐreturn」という書き方が普通でしたが、そのプロセス起動コストがそのまま体感レイテンシに乗っていました。ifで弾けばそもそもプロセスを立てないため、セッション全体の軽量化に効きます。

ヘッドレス統合でClaude Codeを使うチーム

PreToolUseフックがpermissionDecision: "allow"と一緒にupdatedInputを返すことでAskUserQuestionを満たせるようになりました。ヘッドレス統合で独自UIから回答を集めるユースケースに効きます。CIやWeb UIからClaude Codeを操作する構成で、質問をClaudeに戻さず外側で処理できるようになる形です。

合わせて、ヘッドレス・SSH周りの入力不具合も束で修正されました。

  • SSH越しやVS Code統合ターミナルで生のキーシーケンスがプロンプトに出てしまう現象
  • Shift+Enter / Meta+Enterがタイプアヘッド候補に吸われて改行が入らない問題
  • 特定スラッシュコマンド後にプロンプトがキューに詰まり、キーでも戻せなくなる問題

リモート開発でClaude Codeを使うときの「なぜか改行できない」「なぜかキーシーケンスが見える」系のつまずきがまとめて解消されています。

MCPを本番運用しているチーム

MCPのOAuth処理がRFC9728(OAuth保護リソース仕様)のProtected Resource Metadata discoveryに従い、保護されたリソースのメタデータから認可サーバーを特定するようになりました。加えてステップアップ認証(403 insufficient_scopeで上位スコープを要求されるケース)も、リフレッシュトークンが残っていても正しく再認可フローに入るように修正されました。MCPサーバーを自作して外部SaaSの権限を昇格させる構成では、手動で再ログインさせていた運用が不要になるケースが多そうです。

加えて、headersHelperスクリプトにCLAUDE_CODE_MCP_SERVER_NAME / CLAUDE_CODE_MCP_SERVER_URL環境変数が渡るようになり、1本のヘルパーで複数サーバーを捌けるようになりました。deniedMcpServers設定がclaude.ai側のMCPサーバーをブロックできていなかった問題も修正されています。

Kitty / Ghostty / WezTerm常用ユーザー

Kittyキーボードプロトコル対応の端末(Ghostty / Kitty / WezTermなど)でClaude Codeを終了したあと、ターミナルが拡張キーボードモードに置き去りになりCtrl+CCtrl+Dが効かなくなる不具合が修正されました。日常の開発で地雷化しやすかった挙動なので、これらの端末を使っている人は更新で楽になります。

長時間セッションを常用するユーザー

/compact実行時、コンパクト要求自体がコンテキストに収まらないほど会話が膨らんでいるケースでcontext exceededエラーになっていたのが修正されました。長時間走らせたセッションで「圧縮しようとしたら圧縮できない」という鶏と卵の状態に陥っていた人には、このまま効く修正です。

合わせて、大規模リポジトリでの@メンションファイル自動補完が高速化、大きなトランスクリプトでのスクロール性能をWASMのyoga-layoutから純TypeScript実装に置き換えて改善、大規模セッションでコンパクション発火時のUIスタッター低減も入りました。

OpenTelemetry監視を組んでいるチーム

tool_resultイベント内のtool_parametersが、OTEL_LOG_TOOL_DETAILS=1でのみ出力されるようになりました(既定は出さない)。監視基盤側に機微パラメータが意図せず流出するのを既定で抑える方向の整理です。社内可観測性を組んでいるチームには重要な変更で、必要なログ粒度を残したい場合は明示的に1を設定する運用に切り替える必要があります。OTEL_LOGS_EXPORTER / OTEL_METRICS_EXPORTER / OTEL_TRACES_EXPORTERnoneを指定するとクラッシュしていた問題も修正されています。

主な変更点

hooks拡張

  • if条件フィールド: 権限ルール構文(Bash(git *)等)で実行条件を絞り込み、無駄なプロセス起動を避ける
  • PreToolUseがAskUserQuestionを引き受けられる: permissionDecision: "allow"updatedInputを返すことでヘッドレス統合の独自UI回答が成立

MCP OAuth

  • RFC9728(Protected Resource Metadata discovery)に準拠して認可サーバを探索
  • リフレッシュトークン存在時のステップアップ認証(403 insufficient_scope)が正しく再認可フローに入るように

MCP headersHelperスクリプト

CLAUDE_CODE_MCP_SERVER_NAME / CLAUDE_CODE_MCP_SERVER_URL環境変数が渡り、1本のヘルパーで複数サーバを捌ける形に。

ディープリンクとスケジュール実行

  • claude-cli://open?q=…のディープリンククエリが最大5,000文字まで拡張、長文プロンプト埋め込み時に「スクロールしてレビューを」警告
  • スケジュール実行(/loopCronCreate)発火時にトランスクリプトへタイムスタンプマーカー
  • 画像貼り付け時の[Image #N]プレースホルダ末尾に半角スペースを自動付与

組織ポリシーとOpenTelemetry

  • 組織ポリシー(managed-settings.json)でブロックされたプラグインはインストール / 有効化が不可になり、マーケットプレイス一覧からも非表示
  • OpenTelemetryのtool_parametersOTEL_LOG_TOOL_DETAILS=1でのみ出力(既定は出さない)

性能改善

  • 大規模リポジトリでの@メンションファイル自動補完が高速化
  • 大きなトランスクリプトでのスクロール性能をWASMのyoga-layoutから純TypeScript実装に置き換え
  • 大規模セッションでコンパクション発火時のUIスタッター低減
  • PowerShellの危険コマンド検出を強化

主要な修正

  • /compactが「コンパクト要求自体がコンテキストに収まらない」ケースでcontext exceededエラーになっていた問題
  • Kitty / Ghostty / WezTerm等でCtrl+C / Ctrl+Dが効かなくなる不具合(終了後に拡張キーボードモードに置き去り)
  • SSH越しやVS Code統合ターミナルで生のキーシーケンスがプロンプトに出てしまう現象
  • Shift+Enter / Meta+Enterがタイプアヘッド候補に吸われて改行が入らない問題
  • 特定スラッシュコマンド後にプロンプトがキューに詰まりキーでも戻せない問題
  • 接続churn時の慢性的なECONNRESETをリトライ時に新しいTCP接続を使って回避
  • ストリーミング応答を中断した際のリモートセッションのメモリリーク
  • deniedMcpServers設定がclaude.ai側のMCPサーバーをブロックできていなかった問題
  • Python Agent SDKで--mcp-config経由のtype:'sdk'指定MCPサーバーが起動時に落ちていた問題
  • Remote Controlセッションが権限解決後も「Requires Action」のまま止まる不具合
  • /plugin enable / /plugin disableがプラグインのインストール場所と設定宣言がズレるケースで失敗する問題
  • --worktreeが非gitリポジトリでWorktreeCreateフック発火前にエラー終了する問題
  • ストリーミング中に上方向スクロールすると古い描画が透ける不具合
  • 非ネイティブビルドでのdiff構文ハイライトが機能していなかった問題
  • OTEL_LOGS_EXPORTER / OTEL_METRICS_EXPORTER / OTEL_TRACES_EXPORTERnoneを指定するとクラッシュしていた問題
  • コンピューター使用ツールのswitch_displayがマルチモニター環境で「not available in this session」になる問題

30項目の追加・修正を「誰に効くか」で見る

個々の変更だけ見るとバラバラですが、変更の受益者で並べると全体像が掴みやすくなります。本版は大きく3つの層に効くリリースです。

  • hooks / ヘッドレスを運用する開発者層: if条件、AskUserQuestionupdatedInput対応、キーシーケンス表示の修正など、CI・Web UI・自動化との統合で効率と信頼性が上がる
  • MCPを本番運用している層: RFC9728準拠、ステップアップ認証の修正、deniedMcpServersの対応拡張、headersHelperの環境変数拡張など、複数サーバー構成とOAuthの作法が整う
  • 端末UI・観測性に敏感な層: Kitty系端末の復帰、yoga-layout置換によるスクロール性能、OTel tool_parametersのゲート、/compactの自己救済など、長時間セッションの使い勝手と既定の安全性が上がる

単独の目玉がないぶん、「どこに効くか」を把握しているチームほど恩恵が大きい整備リリースという解釈ができます。v2.1.83の76項目で広げた面の角を削る作業を続けている局面とも言えそうです。

まとめ

  • hooksを本番運用しているなら推奨: if条件で無駄なプロセス起動を避けられる、AskUserQuestionの独自UI連携も解禁
  • MCPサーバー自作 / 複数サーバー運用なら推奨: RFC9728準拠とステップアップ認証修正で再ログインの手間が減る
  • Kitty / Ghostty / WezTermで常用する環境では本版が効く: 終了後にCtrl+C / Ctrl+Dが効かなくなる地雷が解消されます
  • OpenTelemetryで監視しているなら推奨: tool_parametersのゲート、exporter noneクラッシュ修正

直前のv2.1.83で広がった面の角を削り、次のv2.1.89でヘッドレス運用とhooks設計をさらに組み替えていく流れの、橋渡しにあたるリリースと位置付けると読み解きやすい版です。hooksやMCPを実運用に組み込んでいるチームほど効く整備リリースという性格になっています。

この記事を共有:XLinkedIn