Claude Code 2.1.89:40件超の修正と新機能でDX・安定性を大幅強化
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 -nやcatを使って参照したファイルに対して、別途Read呼び出しなしで動作するようになり、ツール呼び出し回数を削減できます。
フック出力が50,000文字を超える場合、コンテキストへの直接注入ではなくディスクへの保存(ファイルパス+プレビューの形式)に変更されました。大量のフック出力によるコンテキストウィンドウの圧迫を防ぐ判断です。
設定面では、cleanupPeriodDays: 0がバリデーションエラーで拒否されるようになりました。これまではトランスクリプト永続化をサイレントに無効化するという直感に反する動作をしていましたが、明示的なエラーに変わります。また、インタラクティブセッションでの思考サマリーがデフォルトで生成されなくなり、showThinkingSummaries: trueを設定することで従来の動作に戻せます。
まとめ
2.1.89は、新機能の追加よりも実運用での信頼性確保を重視したリリースです。defer権限決定によるヘッドレス/インタラクティブのハイブリッド制御、autocompactスラッシュループ解消、Windows/macOS固有バグの大量修正という3軸の改善が、長時間・マルチエージェント・クロスプラットフォームというClaude Codeの実運用シナリオを着実に底上げしています。