Claude Code 2.1.89:40件超の修正と新機能でDX・安定性を大幅強化

anthropics/claude-code

Claude Code 2.1.89は、defer権限決定やフリッカーフリーレンダリングなどの新機能に加え、Windows環境でのCRLF二重化・メモリリーク・LSPゾンビ状態といった実環境で踏みやすいバグを40件以上修正したリリースです。

背景

今回のCHANGELOG更新は、Claude Codeが複雑な並列エージェント処理・長時間セッション・クロスプラットフォーム動作といった実運用シナリオで露わになった課題群に正面から対処したものです。特にWindows PowerShell・macOS・WSL・tmuxといった多様な実行環境への対応と、長時間稼働時のメモリ・コンテキスト管理が重点的に改善されています。

新機能

ヘッドレス実行とインタラクティブ操作の橋渡し機能が強化されました。PreToolUseフック"defer"権限決定が追加され、ヘッドレスセッション(-pモード)中でもツール呼び出し手前でセッションを一時停止し、-p --resumeで再開した際にフックが再評価されるようになりました。これにより、完全自動実行とヒューマンインザループの切り替えが柔軟になります。

新たにPermissionDeniedフックが追加され、autoモードの分類器が操作を拒否した後に発火します。フックが{retry: true}を返すとモデルにリトライ指示が送られ、拒否ポリシーのカスタマイズが可能です。また、拒否されたコマンドは通知として表示され、/permissionsの「Recent」タブに記録されてrキーでリトライできます。

MCP接続まわりでは、MCP_CONNECTION_NONBLOCKING=true環境変数が追加されました。-pモードでMCP接続待ちをスキップし、--mcp-configサーバー接続も最大5秒でタイムアウトするようになり、低速なMCPサーバーによるブロッキングが解消されます。

レンダリング面では、CLAUDE_CODE_NO_FLICKER=1環境変数でフリッカーフリーなオルタネートスクリーンレンダリング(仮想スクロールバック付き)をオプトインできるようになりました。iTerm2+tmux環境でのストリーミング中UIジッターの修正と組み合わせて、ターミナルUIの品質が向上しています。

修正:長時間セッションとメモリ管理

長時間セッションでの安定性に関わるバグが複数修正されました。大きな課題だったautocompactのスラッシュループが解消されています。コンテキストが3回連続でコンパクト直後に上限まで戻る状況を検出し、無限にAPIコールを消費し続ける代わりにアクション可能なエラーで停止するようになりました。

メモリリークも修正されています。大きなJSONインプットがLRUキャッシュのキーとして長時間セッション中に保持され続ける問題で、長時間稼働のエージェントセッションで特に顕在化していたものです。また、50MBを超える大規模セッションファイルからメッセージを削除する際のクラッシュと、1GiBを超えるファイルへのEditツール使用時のOOMクラッシュの可能性も修正されました。

コンテキスト注入の非効率も改善されました。ネストされたCLAUDE.mdファイルが多数のファイルを読み込む長時間セッションで数十回再注入されるバグ、ツールスキーマバイト数がセッション途中で変化することによるプロンプトキャッシュミス、セッション統計が30日を超える過去データを失う問題がいずれも修正されています。

修正:クロスプラットフォームと入力処理

Windows環境での動作品質が大きく改善されました。Edit/Writeツールによるウィンドウズ改行(CRLF)二重化とMarkdownハードラインブレーク(末尾の2スペース)の削除という、テキスト編集の正確性に関わる問題が修正されています。PowerShellツールについては、git pushがstderrに進捗を書いたときにWindows PowerShell 5.1で誤って失敗報告する問題を修正し、5.1と7+で適切にバージョン別の構文ガイダンスを提供するよう改善されました。

キーボード・音声入力の問題も解消されています。修飾キー組み合わせの音声プッシュトゥトーククが一部環境で反応しない問題、Windows での音声モードの"WebSocket upgrade rejected with HTTP 101"エラー、Windows Terminal Preview 1.25でShift+Enterが改行挿入ではなくサブミットされる問題がそれぞれ修正されました。

CJKや絵文字を含むプロンプト履歴エントリ~/.claude/history.jsonlの4KBバウンダリ上に落ちると無音で欠落するバグも修正されています。デーヴァナーガリーや他の結合マーク文字がアシスタント出力で切り詰められる問題も解消されました。

修正:フック・権限・ツール動作

フックシステムの正確性が向上しました。PreToolUse/PostToolUseフックがWrite/Edit/Readツールに対してfile_pathを絶対パスで受け取るようになり、ドキュメントに記載された挙動と一致します。また、フックのif条件フィルタリングがls && git pushのような複合コマンドやFOO=bar git pushのような環境変数プレフィックス付きコマンドにマッチしない問題が修正されています。

`Edit(//path/)Read(//path/)`のallowルールが、要求されたパスではなく解決されたシンボリックリンクターゲットをチェックするよう修正されました。シンボリックリンクを使ったパス制限の回避が防がれる、セキュリティ上重要な修正です。

StructuredOutputスキーマキャッシュのバグも修正されています。複数スキーマ使用時に約50%の失敗率を引き起こしていた問題で、マルチスキーマを使うエージェントワークフローへの影響が大きいものでした。

動作変更

いくつかの挙動が意図的に変更されました。EditツールBashツールでsed -ncatを使って参照したファイルに対して、別途Read呼び出しなしで動作するようになり、ツール呼び出し回数を削減できます。

フック出力が50,000文字を超える場合、コンテキストへの直接注入ではなくディスクへの保存(ファイルパス+プレビューの形式)に変更されました。大量のフック出力によるコンテキストウィンドウの圧迫を防ぐ判断です。

設定面では、cleanupPeriodDays: 0がバリデーションエラーで拒否されるようになりました。これまではトランスクリプト永続化をサイレントに無効化するという直感に反する動作をしていましたが、明示的なエラーに変わります。また、インタラクティブセッションでの思考サマリーがデフォルトで生成されなくなり、showThinkingSummaries: trueを設定することで従来の動作に戻せます。

まとめ

2.1.89は、新機能の追加よりも実運用での信頼性確保を重視したリリースです。defer権限決定によるヘッドレス/インタラクティブのハイブリッド制御、autocompactスラッシュループ解消、Windows/macOS固有バグの大量修正という3軸の改善が、長時間・マルチエージェント・クロスプラットフォームというClaude Codeの実運用シナリオを着実に底上げしています。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
7cab7cfc

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

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

リード文(総論)、背景・新機能・修正(各論)、まとめ(結論)という「総論→各論→結論」の構成が明確で、読者が変更の全体像と詳細を理解しやすい。

カスタムMarkdown構文 ✓ PASS

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

コミットハッシュが指定された形式([b4fa5f8](URL))で正しくリンクされており、カスタムMarkdown構文のルールを遵守している。

対象読者への適合性 ✓ PASS

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

`LSP`, `CRLF`, `autocompact`などの専門用語を前提として解説しており、対象読者であるエンジニアにとって冗長でなく、的確な内容となっている。

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

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

各セクションが適切な粒度で分割され、各段落もトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が守られており、非常に読みやすい。

Diff内容との照合 ✓ PASS

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

記事で言及されている新機能や修正点は、すべて提供されたCHANGELOGのDiff内容と一致している。コードブロックは存在しないが、機能名や設定値の引用は正確である。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

`PreToolUse`フック、`シンボリックリンク`、`LSPゾンビ状態`といった技術用語は、CHANGELOGの内容に即しており、正確に使用されている。

説明の技術的正確性 ✓ PASS

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

`autocompactスラッシュループ`の発生条件や`シンボリックリンク`の脆弱性対応など、CHANGELOGの箇条書きから一歩踏み込んだ説明が、技術的に正確かつ論理的に展開されている。

事実の突合 ✓ PASS

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

「40件超の修正」という表現はCHANGELOGの項目数を考慮すると妥当な要約であり、その他の主張もすべてCHANGELOGの内容に基づいている。ハルシネーションは見られない。

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

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

バージョン番号`2.1.89`や、`50MB`, `1GiB`, `50,000文字`といった具体的な数値は、すべてCHANGELOGと正確に一致している。コミットハッシュ`b4fa5f8`も正しい。

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

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

タイトル「Claude Code 2.1.89:40件超の修正と新機能でDX・安定性を大幅強化」は、CHANGELOGで示された多数の修正と機能追加というPR内容の本質を的確に要約している。

外部知識の正確性 ✓ PASS

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

記事の内容はすべて提供されたCHANGELOGの範囲内に留まっており、サポート状況やリリース予定といった外部知識の不適切な追加はない。

時間表現の正確性 ✓ PASS

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

「〜が追加されました」「〜が修正されました」といった過去・完了形の表現は、リリース済みの変更点を記述するCHANGELOGの内容と整合性が取れている。