Claude Code 2.1.85 リリース — フック強化・MCP改善・多数のバグ修正

anthropics/claude-code

Claude Code 2.1.85では、フックの条件実行やMCPのOAuth改善など、開発者向けのインフラ機能が強化されるとともに、ターミナル互換性・メモリリーク・UI描画に関する20件超のバグ修正が含まれています。

技術的な変更

フックの条件実行

フックに ifフィールド が追加され、パーミッションルール構文(例: Bash(git *))を使ってフックの発火条件を絞り込めるようになりました。これにより、特定のコマンドパターンにマッチしたときだけフックを起動でき、不要なプロセス生成を抑制できます。

if: "Bash(git *)" のような条件を付与することで、Gitコマンドにのみ反応するフックを宣言的に記述できます。CHANGELOGには「reducing process spawning overhead」とあり、この変更の主な目的はパフォーマンス改善です。

PreToolUseフックによるAskUserQuestionの充足

PreToolUseフックupdatedInputpermissionDecision: "allow" を同時に返せるようになり、AskUserQuestion への回答をフック側で提供できるようになりました。これにより、独自UIを持つヘッドレス統合環境が、Claude Codeのインタラクティブなプロンプトを介さずにユーザーへの質問に答えられます。

MCP関連の改善

CLAUDE_CODE_MCP_SERVER_NAME および CLAUDE_CODE_MCP_SERVER_URL 環境変数が headersHelper スクリプトに渡されるようになり、1つのヘルパースクリプトで複数のMCPサーバーを識別・処理できるようになりました。

MCP OAuthは RFC 9728 Protected Resource Metadata ディスカバリーに対応し、認可サーバーの検出が標準化されました。また、リフレッシュトークンが存在する状態でのステップアップ認可の失敗も修正されています。403 insufficient_scope を受けたサーバーが正しく再認可フローをトリガーするようになります。

OpenTelemetry出力の制御

tool_parameters のOpenTelemetryイベントへの出力が OTEL_LOG_TOOL_DETAILS=1 フラグで制御されるようになりました。このフラグが設定されていない場合、tool_parameters はOpenTelemetryのtool_resultイベントに含まれません。

スクロール・描画パフォーマンスの改善

大きなトランスクリプトのスクロールパフォーマンスを改善するため、WASMベースのyoga-layout純TypeScript実装 に置き換えられました。また、大きなセッションでコンパクション(会話圧縮)が発火する際のUIのスタッターも低減されています。

ターミナル互換性の修正

Ghostty・Kitty・WezTermなど Kittyキーボードプロトコル に対応するターミナルで、Claude Code終了後にターミナルが拡張キーボードモードのまま残るバグが修正されました。この問題により、終了後もCtrl+CやCtrl+Dが正常に動作しないケースがありました。SSH接続時やVS Code統合ターミナルで生のキーシーケンスがプロンプトに表示される問題も合わせて修正されています。

その他の主要なバグ修正

今回のリリースに含まれる主要なバグ修正は以下のとおりです:

  • /compact が会話の肥大化により「context exceeded」で失敗する問題を修正
  • リモートセッションでストリーミングが中断された際のメモリリークを修正
  • エッジ接続の再接続時に新規TCP接続を使用するようにして、ECONNRESET の繰り返しエラーを修正
  • deniedMcpServers 設定がclaude.ai MCPサーバーをブロックしない問題を修正
  • Python Agent SDK: --mcp-config 経由の type:'sdk' MCPサーバーが起動時に破棄される問題を修正
  • Remote Controlセッションが権限解決後も「Requires Action」のままになる問題を修正
  • スラッシュコマンド実行後にプロンプトがキューに詰まり、上矢印で取得できなくなる問題を修正
  • /plugin enable および /plugin disable が、プラグインのインストール場所と設定での宣言場所が異なる場合に失敗する問題を修正
  • --worktree が非gitリポジトリで WorktreeCreate フックの実行前にエラー終了する問題を修正

まとめ

2.1.85は、MCPの標準準拠・フックの精緻化・ターミナルプロトコルへの正確な対応という三つの軸で、Claude Codeの実運用環境での信頼性を高めるリリースです。特にフックの条件実行とPreToolUseによるAskUserQuestion充足は、ヘッドレス環境や自動化パイプラインでの組み込みユースケースを広げる拡張点として注目されます。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
428238bd

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
2回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文(総論)→技術的な変更(各論)→まとめ(結論)という「総論→各論→結論」の構成が明確で、ガイドラインに準拠しています。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

コミットIDの短縮形リンクが正しく使用されています。ファイル名付きシンタックスハイライトは記事の性質上不要であり、使用されている構文に誤りはありません。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

フック、MCP、OAuth、Kittyキーボードプロトコルなどの専門用語が適切に使用されており、専門知識を持つエンジニアという対象読者に適合した内容です。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクション、各パラグラフが要点を先に述べる構成になっており、1段落1トピックの原則も守られています。段落の長さも適切で、非常に読みやすい構成です。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事はCHANGELOGの変更点を解説するものであり、言及されている設定名やコードスニペット(`if: "Bash(git *)"`など)は、提供されたCHANGELOGのdiff内容と正確に一致しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

MCP、RFC 9728、WASM、ECONNRESETなど、使用されている技術用語はすべてCHANGELOGに基づいており、文脈上も正確です。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

各変更点の説明(フックの条件実行の目的、PreToolUseフックのユースケースなど)は、CHANGELOGの記述に忠実で、技術的に正確です。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内のすべての主張(「20件超のバグ修正」を含む)は、提供されたCHANGELOGのdiff情報によって裏付けられており、ハルシネーションは検出されませんでした。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

バージョン番号「2.1.85」、コミットID「f75b613」、各種設定値など、記事に含まれる数値や固有名詞はすべて正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトルは、PRで更新されたCHANGELOGの内容(Claude Code 2.1.85の主要な変更点)を的確に要約しており、内容との整合性が取れています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事の内容はすべて提供されたCHANGELOGに基づいており、サポート状況やリリース予定など、PR情報にない外部知識の追記はありません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

リリースノートとして完了形の表現(「〜されました」)が一貫して使われており、CHANGELOGの内容と時間表現が一致しています。