バックナンバー · BACK ISSUE
v2.1.89
破壊的変更"defer" フック決定、NO_FLICKER レンダラー、PermissionDenied フックを追加し、権限・resume・描画・パフォーマンスの多数の修正を含む大型リリースで、cleanupPeriodDays の検証も厳格化します。
-
settings.json の
cleanupPeriodDays: 0を検証エラーで拒否するよう変更しました。以前は無言でトランスクリプトの永続化を無効化していました。詳しく
settings.json でcleanupPeriodDays: 0を指定すると、検証エラーとして拒否されるようになりました。以前は値 0 が黙ってトランスクリプト(会話記録)の保存を無効化してしまっていましたが、これは意図しにくい挙動でした。破壊的変更のため、設定にcleanupPeriodDays: 0を書いていた人はエラーになります。記録を保持したいなら 0 を消すか正の日数を指定し、保持期間を変えたい場合は明示的な日数を設定してください。
-
PreToolUseフックに"defer"の権限決定を追加しました。ヘッドレスセッションがツール呼び出しで一時停止し、-p --resumeで再開してフックを再評価できます。詳しく
ツール実行前に走るPreToolUseフックに、判断を保留する"defer"という新しい権限決定を追加しました。これにより、画面操作のない自動実行(ヘッドレス)のセッションが、あるツール呼び出しの手前で一旦止まり、後から-p --resumeで再開するとフックがもう一度評価し直してくれます。許可するかどうかをその場で決めず、外部の判断を待ってから続行したい自動化を組む人に役立ちます。 -
仮想化されたスクロールバックを伴うちらつきのない代替スクリーン描画を選ぶ
CLAUDE_CODE_NO_FLICKER=1環境変数を追加しました。詳しく
画面のちらつきを抑える新しい描画方式を有効にするCLAUDE_CODE_NO_FLICKER=1という環境変数を追加しました。これを設定すると、ターミナルの別画面(代替スクリーン)を使い、スクロール履歴を仮想化したちらつきのない表示に切り替わります。出力の更新時にチラつきが気になっていた人が、任意でこの新しいレンダラーを試せるようになります。 -
Auto モードの分類器による拒否の後に発火する
PermissionDeniedフックを追加しました。{retry: true}を返すとモデルに再試行可能と伝えます。詳しく
Auto モードの分類器(コマンドを自動で許可/拒否に振り分ける仕組み)が拒否を出した後に発火するPermissionDeniedフックを追加しました。このフックで{retry: true}を返すと、モデルに「もう一度やり直してよい」と伝えられます。自動拒否されたときの挙動を独自に制御したい人が、再試行を促すといった処理を差し込めるようになります。 -
-pモードで MCP 接続の待機を完全にスキップするMCP_CONNECTION_NONBLOCKING=trueを追加し、最も遅いサーバーでブロックせず--mcp-configのサーバー接続を 5 秒に制限しました。詳しく
外部ツール連携の仕組みである MCP の接続待ちを軽くする変更です。-pモード(非対話の一括実行)ではMCP_CONNECTION_NONBLOCKING=trueを指定すると MCP の接続完了を待たずに進めるようになり、--mcp-configで指定したサーバー接続は、最も遅いサーバーに引きずられず 5 秒で打ち切るようになりました。接続の遅い MCP サーバーのせいで起動が止まっていた人の待ち時間が短くなります。 -
4 月 1 日向けに
/buddyが登場 — あなたのコーディングを見守る小さな生き物を孵化させられます。詳しく
4 月 1 日(エイプリルフール)向けのお遊び機能として/buddyが追加され、コーディングを見守る小さな生き物を孵化させて連れ歩けます。実用機能ではなく季節のジョーク的な要素です。気分転換に楽しみたい人向けのおまけです。
-
@メンションの先読み候補に名前付きサブエージェントを追加しました。詳しく
@を入力したときに出る入力補完(先読み候補)の一覧に、名前付きのサブエージェントが含まれるようになりました。以前はファイルなどが対象でしたが、これでサブエージェントも@から素早く指定できます。専用エージェントを使い分けている人が、名前をたどって手早く呼び出せて便利になります。 -
Auto モード: 拒否されたコマンドが通知を表示し、
/permissions→ Recent タブに現れてrで再試行できるようになりました。詳しく
Auto モードで自動拒否されたコマンドが、通知として表示されるようになりました。さらに/permissionsの Recent タブに一覧で残り、そこでrキーを押すと再試行できます。コマンドが黙って拒否されて気づきにくかった状況が改善し、拒否された内容の確認とやり直しがしやすくなります。 -
折りたたまれたツールサマリーを改善し、
ls/tree/duについて「Read N files」ではなく「Listed N directories」と表示するようにしました。詳しく
折りたたみ表示時のツール要約を改善し、ls/tree/duといったコマンドについては「Read N files(N 件のファイルを読んだ)」ではなく「Listed N directories(N 件のディレクトリを一覧した)」と表示するようにしました。実際の操作内容に合った表現になり、何をしたかが一目でわかりやすくなります。これらのコマンドをよく使う人向けの表示改善です。 -
フォーマッタ/リンターのコマンドが、以前読んだファイルを変更したときに Bash ツールが警告するよう改善し、古い編集のエラーを防ぎます。
詳しく
フォーマッタやリンターのコマンドが、すでに読み込み済みのファイルを書き換えたときに、Bash ツールが警告を出すよう改善しました。これにより、古い内容のまま編集してしまって失敗する「stale-edit(古い状態での編集)」エラーを未然に防げます。整形ツールを挟みながらファイルを編集する人にとって、編集の取りこぼしや衝突が減ります。 -
@メンションの先読みを改善し、似た名前の MCP リソースよりソースファイルを上位に並べるようにしました。詳しく
@メンションの入力補完を改善し、名前が似ている場合にソースファイルを MCP リソースより上位に表示するようにしました。これで意図したファイルがより見つけやすくなります。MCP リソースとファイル名が紛らわしくて選びにくかった人に効く、候補の並び順の改善です。 -
PowerShell ツールのプロンプトを、バージョンに応じた構文ガイダンス(5.1 と 7+)で改善しました。
詳しく
PowerShell ツールに渡す指示(プロンプト)を改善し、PowerShell のバージョン(5.1 と 7 以降)に応じた構文のガイダンスを含めるようにしました。これでバージョンごとの書き方の違いを踏まえた、より正確なコマンド生成が期待できます。古い 5.1 と新しい 7+ が混在する Windows 環境で使う人に役立ちます。 -
Editが、Bashのsed -nやcatで表示したファイルに対して、先に別のRead呼び出しを要さず動作するように変更しました。詳しく
Bashツールでsed -nやcatを使ってファイルの内容を表示した場合、その後に改めてReadを呼ばなくてもEditで編集できるよう変更しました。以前は Edit の前に Read で読み込んでおく必要がありました。コマンドでファイルを覗いてからそのまま編集したい人にとって、手順が一つ減って効率が上がります。 -
5 万文字を超えるフック出力を、コンテキストに直接注入せず、ファイルパスとプレビュー付きでディスクに保存するよう変更しました。
詳しく
5 万文字を超える長大なフックの出力を、コンテキストにそのまま丸ごと差し込むのではなく、ディスク上のファイルに保存し、ファイルパスと冒頭のプレビューだけを渡すよう変更しました。これにより、巨大な出力でコンテキストが圧迫されるのを防ぎます。大量のテキストを返すフックを使っている人にとって、コンテキストの無駄遣いが減ります。 -
対話セッションで思考サマリーを既定で生成しないように変更しました。復元するには settings.json で
showThinkingSummaries: trueを設定します。詳しく
対話セッションで、思考サマリー(モデルの思考過程の要約)を既定では生成しないように変更しました。以前は自動で作られていましたが、今は省略されます。これまでどおり表示したい人は、settings.json にshowThinkingSummaries: trueを設定すると元に戻せます。 -
TaskCreatedフックイベントとそのブロック挙動を文書化しました。詳しく
TaskCreatedフックイベントと、それがタスク作成をブロック(進行を止める)できる挙動について、ドキュメントに記載しました。機能自体の変更というより、既存の挙動が正式に説明されたものです。タスク生成のタイミングにフックを差し込みたい人が、仕様を確認して使えるようになります。 -
/envが PowerShell ツールのコマンドにも適用されるようになりました(以前は Bash のみ)。詳しく
環境変数を設定する/envが、PowerShell ツールで実行するコマンドにも適用されるようになりました。以前は Bash のコマンドにしか効きませんでした。これで Windows で PowerShell を主に使う人も、/envで設定した環境変数をコマンドに反映できます。 -
/usageが、Pro と Enterprise プランで冗長な「Current week (Sonnet only)」バーを非表示にするようになりました。詳しく
利用状況を表示する/usageで、Pro と Enterprise プランの場合に冗長な「Current week (Sonnet only)」のバーを非表示にするようにしました。これらのプランでは不要な情報だったため、表示がすっきりします。Pro や Enterprise を使っていて/usageを見る人向けの表示整理です。 -
空のプロンプトに
!commandを貼り付けると、入力した!と同様に bash モードに入るようになりました。詳しく
空の入力欄に!commandの形のテキストを貼り付けると、!を手で打ったときと同じように bash モードに切り替わるようになりました。以前は貼り付けでは入力時と挙動が一致していませんでした。コマンドをコピー&ペーストして実行することが多い人にとって、操作が直感的になります。
-
Edit(//path/**)とRead(//path/**)の許可ルールが、要求されたパスだけでなく解決されたシンボリックリンク先をチェックするよう修正。詳しく
Edit(//path/**)やRead(//path/**)といった許可ルールが、要求されたパスだけでなく、シンボリックリンク(別のファイルへの参照)を解決した実際のリンク先までチェックするよう修正しました。以前はリンク先を見ていなかったため、リンク経由で意図しない場所にアクセスできてしまう恐れがありました。パス指定の許可ルールでアクセス範囲を制限している人にとって、安全性が高まる修正です。 -
一部の修飾キー組み合わせのバインドで音声プッシュ・トゥ・トークが起動しない問題と、Windows で音声モードが「WebSocket upgrade rejected with HTTP 101」で失敗する問題を修正。
詳しく
音声入力まわりの 2 つの不具合を修正しました。修飾キーを組み合わせたキー割り当てで、押している間だけ話すプッシュ・トゥ・トークが起動しなかった問題と、Windows で音声モードが「WebSocket upgrade rejected with HTTP 101」というエラーで失敗していた問題が直っています。音声入力を使う人、特に Windows 環境のユーザーに影響します。 -
Edit/Write ツールが Windows で CRLF を二重にし、Markdown のハード改行(末尾の 2 つの空白)を削る問題を修正。
詳しく
Windows で Edit/Write ツールが改行コード CRLF を二重に書き込んでしまう問題と、Markdown の強制改行(行末の半角スペース 2 つ)を削ってしまう問題を修正しました。これにより、Windows でファイルを編集しても改行が壊れず、Markdown の意図した改行も保たれます。Windows でこれらのツールを使うユーザーに関係する修正です。 -
複数のスキーマを使うときに約 50% の失敗率を引き起こす
StructuredOutputスキーマキャッシュのバグを修正。詳しく
構造化された出力を扱うStructuredOutputで、スキーマ(出力の形を定義する型情報)のキャッシュにバグがあり、複数のスキーマを使うと約半分の確率で失敗していた問題を修正しました。これで複数スキーマを切り替えても安定して動くようになります。StructuredOutputで複数の出力形式を扱う人に影響します。 -
長時間のセッションで大きな JSON 入力が LRU キャッシュのキーとして保持されるメモリリークを修正。
詳しく
大きな JSON の入力が、LRU キャッシュ(よく使うものを残し古いものを捨てる仕組み)のキーとして保持され続け、メモリが解放されないメモリリークを修正しました。長時間動かし続けるセッションほどメモリ使用量が膨らみがちでしたが、これが解消されます。セッションを長く起動したまま使う人に効く修正です。 -
非常に大きなセッションファイル(50MB 超)からメッセージを削除するときのクラッシュを修正。
詳しく
50MB を超えるような非常に大きなセッションファイルから、メッセージを 1 件削除しようとするとクラッシュする問題を修正しました。これで巨大なセッションでもメッセージ削除が安全に行えます。会話を長く続けてセッションファイルが肥大化している人に関係します。 -
クラッシュ後の LSP サーバーのゾンビ状態を修正。セッションを再起動するまで失敗し続けるのではなく、次のリクエストで再起動するようになりました。
詳しく
コード解析を担う LSP サーバー(言語サーバー)がクラッシュした後、応答しない「ゾンビ」状態になっていた問題を修正しました。以前はセッションを再起動するまで失敗し続けましたが、今は次のリクエストで自動的に再起動します。コード補完や定義参照などの言語機能を使う人が、クラッシュ後も再起動なしで復帰できるようになります。 -
~/.claude/history.jsonlの 4KB 境界に当たるとき、CJK や絵文字を含むプロンプト履歴のエントリが無言で落ちる問題を修正。詳しく
プロンプト履歴を保存する~/.claude/history.jsonlで、CJK(日中韓の文字)や絵文字を含むエントリが、ちょうど 4KB の区切り位置に当たると無言で消えてしまう問題を修正しました。これで日本語などを含む入力履歴が取りこぼされずに残ります。日本語をはじめマルチバイト文字を多用する人に影響する修正です。 -
/statsがサブエージェントの使用量を除外してトークンを少なく数える問題と、統計キャッシュの形式が変わると 30 日を超える履歴データを失う問題を修正。詳しく
使用状況を表示する/statsの 2 つの問題を修正しました。サブエージェントの使用量を数えに入れておらずトークン数が少なく出ていた問題と、統計キャッシュの形式が変わると 30 日より前の履歴データを失っていた問題が直っています。利用量を/statsで正確に把握したい人にとって、集計が正しくなり過去データも保たれるようになります。 -
遅延ツールの入力が 64KB を超えるか遅延マーカーがないときの
-p --resumeのハングと、-p --continueが遅延ツールを再開しない問題を修正。詳しく
保留(defer)したツールの再開に関する不具合を修正しました。保留したツールの入力が 64KB を超えるとき、または保留を示す目印が存在しないときに-p --resumeが固まる問題と、-p --continueが保留中のツールを再開しない問題が直っています。"defer"を使った非対話の自動化で再開処理を行う人に影響します。 -
macOS で
claude-cli://のディープリンクが開かない問題を修正。詳しく
macOS でclaude-cli://で始まるディープリンク(アプリを直接起動するための特別な URL)が開かなかった問題を修正しました。これでこの形式のリンクをクリックすると正しく Claude Code が起動します。macOS でディープリンク連携を使う人に関係します。 -
サーバーが複数要素のエラーコンテンツを返すとき、MCP のツールエラーが最初のコンテンツブロックだけに切り詰められる問題を修正。
詳しく
MCP サーバーがエラー内容を複数の要素(コンテンツブロック)に分けて返したとき、最初のブロックだけが表示され残りが切り捨てられていた問題を修正しました。これでエラーメッセージの全文が確認できるようになります。MCP サーバーを使っていて、エラーの詳細が途中で切れて困っていた人に役立ちます。 -
SDK 経由で画像付きのメッセージを送るとき、スキルのリマインダーや他のシステムコンテキストが落ちる問題を修正。
詳しく
SDK 経由で画像を添付したメッセージを送ると、スキルのリマインダーやその他のシステムコンテキスト(モデルへの内部的な補足情報)が抜け落ちていた問題を修正しました。これで画像付きメッセージでも、これらの情報が正しくモデルに渡ります。SDK を使って画像を含む処理を組んでいる開発者に影響します。 -
Write/Edit/Read ツールについて、PreToolUse/PostToolUse フックが
file_pathを絶対パスで受け取るよう修正し、文書化された挙動に合わせました。詳しく
Write/Edit/Read ツールについて、PreToolUse/PostToolUseフックに渡されるfile_pathが絶対パスになるよう修正し、ドキュメント記載の挙動に合わせました。以前は相対パスなどで届くことがあり、ドキュメントと食い違っていました。フックの中でファイルパスを使って処理を書いている人が、仕様どおりの絶対パスを前提にできるようになります。 -
自動コンパクトのスラッシュループを修正。3 回連続でコンパクトした直後にコンテキストが上限まで再充填されたことを検出し、API 呼び出しを浪費せず実行可能なエラーで停止するようになりました。
詳しく
会話履歴を自動で圧縮する自動コンパクトが、空転して繰り返し続けてしまう問題を修正しました。3 回連続でコンパクトした直後にコンテキストがまた上限まで埋まる状況を検知し、API 呼び出しを無駄に消費し続ける代わりに、対処法を示すエラーで止まるようになりました。圧縮しても収まらない巨大なコンテキストで作業していた人が、無駄な API 消費を避けられるようになります。 -
ツールスキーマのバイト列がセッション中に変わることで起きる、長いセッションでのプロンプトキャッシュミスを修正。
詳しく
長いセッションの途中でツールスキーマ(ツールの定義データ)のバイト列が変わることで、プロンプトキャッシュが効かなくなっていた問題を修正しました。プロンプトキャッシュは同じ内容の再送信を省いて高速化・コスト削減する仕組みで、これが外れると毎回処理し直しになります。長時間のセッションを使う人にとって、応答速度や費用面で改善が見込めます。 -
多くのファイルを読む長いセッションで、入れ子の CLAUDE.md が数十回再注入される問題を修正。
詳しく
多数のファイルを読むような長いセッションで、入れ子になった CLAUDE.md(プロジェクトの指示ファイル)が何十回も繰り返しコンテキストに差し込まれていた問題を修正しました。重複注入が減ることで、無駄なコンテキスト消費が抑えられます。サブディレクトリごとに CLAUDE.md を置き、ファイルを多く読む大きめのプロジェクトで作業する人に効きます。 -
トランスクリプトに古い CLI バージョンのツール結果や中断された書き込みが含まれるとき、
--resumeがクラッシュする問題を修正。詳しく
セッションを再開する--resumeで、トランスクリプト(会話の記録)に古い CLI バージョンが書いたツール結果や、途中で中断された書き込みが含まれているとクラッシュする問題を修正しました。これで過去の不完全な記録があっても再開できるようになります。バージョンをまたいで古いセッションを再開する人に関係します。 -
API がエンタイトルメントエラーを返したときに誤った「Rate limit reached」メッセージが出る問題を修正。実際のエラーを実行可能なヒント付きで表示するようになりました。
詳しく
API が利用権限(エンタイトルメント)に関するエラーを返したのに、実際とは違う「Rate limit reached(レート上限到達)」というメッセージが表示されていた問題を修正しました。今は本来のエラー内容を、対処の手がかりとともに表示します。利用権限の問題に遭遇したとき、原因を正しく把握できて無用な待機を避けられます。 -
フックの
if条件のフィルタが、複合コマンド(ls && git push)や環境変数の接頭辞付きコマンド(FOO=bar git push)にマッチしない問題を修正。詳しく
フックのif条件によるフィルタが、ls && git pushのように複数つなげたコマンドや、FOO=bar git pushのように環境変数を先頭に付けたコマンドにマッチしなかった問題を修正しました。これでこうした形のコマンドにも条件が正しく当たります。if条件で特定コマンドにフックを限定している人に影響する修正です。 -
並列ツールを多用するとき、折りたたまれた検索/読み取りグループのバッジがターミナルのスクロールバックで重複する問題を修正。
詳しく
ツールを多数同時に走らせたとき、折りたたまれた検索/読み取りのまとまりを示すバッジが、ターミナルのスクロール履歴で重複表示される問題を修正しました。これで履歴をさかのぼっても同じバッジが二重に出なくなります。並列でツールを多用する人が見やすくなる、表示上の修正です。 -
通知の
invalidatesが、現在表示中の通知をすぐにクリアしない問題を修正。詳しく
通知のinvalidates(別の通知を無効化して消す指定)が、すでに画面に表示中の通知をすぐには消せなかった問題を修正しました。これで対象の通知が即座に消えるようになります。通知の差し替えや取り消しを行う仕組みに依存している人に関係します。 -
処理中にバックグラウンドメッセージが届くと、送信後にプロンプトが一瞬消える問題を修正。
詳しく
処理中にバックグラウンドからのメッセージが届くと、送信直後にプロンプト(入力欄)が一瞬消えてしまう表示上の問題を修正しました。これで送信後も入力欄が安定して表示され続けます。バックグラウンドで動くタスクと並行して操作する人が体感する、ちらつきの改善です。 -
アシスタントの出力で、デーヴァナーガリーなどの結合文字のテキストが切り詰められる問題を修正。
詳しく
アシスタントの出力で、デーヴァナーガリー文字(ヒンディー語などで使う文字)をはじめとする結合文字を含むテキストが、途中で切り詰められる問題を修正しました。これでこうした文字も欠けずに表示されます。結合文字を使う言語のテキストを扱う人に関係する修正です。 -
レイアウトの変化後に、メインスクリーンのターミナルで描画アーティファクトが出る問題を修正。
詳しく
画面のレイアウトが変化した後、メインスクリーン(別画面に切り替えない通常表示)のターミナルで、表示の崩れ(描画アーティファクト)が残る問題を修正しました。これで再描画後も画面が乱れずきれいに保たれます。ターミナルの表示崩れが気になっていた人に効く修正です。 -
macOS の Apple Silicon で音声モードがマイク権限を要求しない問題を修正。
詳しく
Apple Silicon 搭載の macOS で、音声モードがマイクの使用許可を要求しないため使えなかった問題を修正しました。これで初回利用時に正しく許可ダイアログが出て、音声入力が使えるようになります。Apple シリコン Mac で音声機能を使いたい人に関係します。 -
Windows Terminal Preview 1.25 で Shift+Enter が改行を挿入せず送信する問題を修正。
詳しく
Windows Terminal Preview 1.25 で、Shift+Enter を押すと改行が入らず、そのまま送信されてしまう問題を修正しました。これで本来どおり Shift+Enter で改行を入れて、複数行の入力ができます。この特定のターミナルを使う Windows ユーザーに影響する修正です。 -
tmux 内で実行している iTerm2 で、ストリーミング中に UI が周期的に揺れる問題を修正。
詳しく
tmux の中で iTerm2 を動かしているとき、応答のストリーミング表示中に画面が周期的に揺れる(ちらつく)問題を修正しました。これで出力が流れている間も表示が安定します。tmux と iTerm2 の組み合わせで使っている人が快適になる修正です。 -
Windows PowerShell 5.1 で
git pushなどのコマンドが進捗を stderr に書くとき、PowerShell ツールが誤って失敗を報告する問題を修正。詳しく
Windows PowerShell 5.1 で、git pushのようなコマンドが進捗表示を標準エラー出力(stderr)に書くと、PowerShell ツールがそれを失敗とみなして誤報告していた問題を修正しました。stderr への出力は必ずしもエラーではないため、正常終了が正しく扱われるようになります。Windows PowerShell 5.1 で Git などを操作する人に影響します。 -
非常に大きなファイル(1 GiB 超)で Edit ツールを使ったときの、メモリ不足クラッシュの可能性を修正。
詳しく
1 GiB を超えるような非常に大きなファイルに Edit ツールを使うと、メモリ不足でクラッシュする可能性があった問題を修正しました。これで巨大ファイルの編集でもメモリ枯渇を起こしにくくなります。ログや生成物など大容量ファイルを編集することがある人に関係する修正です。 -
Ctrl+B で実行中のコマンドをバックグラウンド化したとき、タスク通知を保持するようにしました。
詳しく
実行中のコマンドを Ctrl+B でバックグラウンドに回したときに、そのタスクの通知が消えずに保持されるようになりました。これでバックグラウンド化しても、完了などの通知を引き続き受け取れます。長く動くコマンドを裏で走らせながら作業する人に便利な改善です。 -
Windows の PowerShell ツール: 二重引用符と空白の両方を含む外部コマンドの引数が、自動許可されずプロンプトを出すようになりました(PS 5.1 の引数分割の強化)。
詳しく
Windows の PowerShell ツールで、外部コマンドに渡す引数に二重引用符と空白の両方が含まれる場合、自動的に許可せず確認のプロンプトを出すようになりました。これは PowerShell 5.1 の引数分割の挙動が紛らわしく、意図しない解釈を招きうるための安全強化です。Windows で PowerShell ツールを自動許可で使っている人は、この条件で許可を求められるようになります。 -
画像の貼り付けが末尾に空白を挿入しなくなりました。
詳しく
画像を貼り付けたときに、末尾に余計な空白が入らなくなりました。以前は貼り付け後に不要なスペースが残っていました。画像を入力に貼ることが多い人にとって、細かいながら入力が整う改善です。
原文 Markdown を表示
## 2.1.89
- Added `"defer"` permission decision to `PreToolUse` hooks — headless sessions can pause at a tool call and resume with `-p --resume` to have the hook re-evaluate
- Added `CLAUDE_CODE_NO_FLICKER=1` environment variable to opt into flicker-free alt-screen rendering with virtualized scrollback
- Added `PermissionDenied` hook that fires after auto mode classifier denials — return `{retry: true}` to tell the model it can retry
- Added named subagents to `@` mention typeahead suggestions
- Added `MCP_CONNECTION_NONBLOCKING=true` for `-p` mode to skip the MCP connection wait entirely, and bounded `--mcp-config` server connections at 5s instead of blocking on the slowest server
- Auto mode: denied commands now show a notification and appear in `/permissions` → Recent tab where you can retry with `r`
- Fixed `Edit(//path/**)` and `Read(//path/**)` allow rules to check the resolved symlink target, not just the requested path
- Fixed voice push-to-talk not activating for some modifier-combo bindings, and voice mode on Windows failing with "WebSocket upgrade rejected with HTTP 101"
- Fixed Edit/Write tools doubling CRLF on Windows and stripping Markdown hard line breaks (two trailing spaces)
- Fixed `StructuredOutput` schema cache bug causing ~50% failure rate when using multiple schemas
- Fixed memory leak where large JSON inputs were retained as LRU cache keys in long-running sessions
- Fixed a crash when removing a message from very large session files (over 50MB)
- Fixed LSP server zombie state after crash — server now restarts on next request instead of failing until session restart
- Fixed prompt history entries containing CJK or emoji being silently dropped when they fall on a 4KB boundary in `~/.claude/history.jsonl`
- Fixed `/stats` undercounting tokens by excluding subagent usage, and losing historical data beyond 30 days when the stats cache format changes
- Fixed `-p --resume` hangs when the deferred tool input exceeds 64KB or no deferred marker exists, and `-p --continue` not resuming deferred tools
- Fixed `claude-cli://` deep links not opening on macOS
- Fixed MCP tool errors truncating to only the first content block when the server returns multi-element error content
- Fixed skill reminders and other system context being dropped when sending messages with images via the SDK
- Fixed PreToolUse/PostToolUse hooks to receive `file_path` as an absolute path for Write/Edit/Read tools, matching the documented behavior
- Fixed autocompact thrash loop — now detects when context refills to the limit immediately after compacting three times in a row and stops with an actionable error instead of burning API calls
- Fixed prompt cache misses in long sessions caused by tool schema bytes changing mid-session
- Fixed nested CLAUDE.md files being re-injected dozens of times in long sessions that read many files
- Fixed `--resume` crash when transcript contains a tool result from an older CLI version or interrupted write
- Fixed misleading "Rate limit reached" message when the API returned an entitlement error — now shows the actual error with actionable hints
- Fixed hooks `if` condition filtering not matching compound commands (`ls && git push`) or commands with env-var prefixes (`FOO=bar git push`)
- Fixed collapsed search/read group badges duplicating in terminal scrollback during heavy parallel tool use
- Fixed notification `invalidates` not clearing the currently-displayed notification immediately
- Fixed prompt briefly disappearing after submit when background messages arrived during processing
- Fixed Devanagari and other combining-mark text being truncated in assistant output
- Fixed rendering artifacts on main-screen terminals after layout shifts
- Fixed voice mode failing to request microphone permission on macOS Apple Silicon
- Fixed Shift+Enter submitting instead of inserting a newline on Windows Terminal Preview 1.25
- Fixed periodic UI jitter during streaming in iTerm2 when running inside tmux
- Fixed PowerShell tool incorrectly reporting failures when commands like `git push` wrote progress to stderr on Windows PowerShell 5.1
- Fixed a potential out-of-memory crash when the Edit tool was used on very large files (>1 GiB)
- Improved collapsed tool summary to show "Listed N directories" for `ls`/`tree`/`du` instead of "Read N files"
- Improved Bash tool to warn when a formatter/linter command modifies files you have previously read, preventing stale-edit errors
- Improved `@`-mention typeahead to rank source files above MCP resources with similar names
- Improved PowerShell tool prompt with version-appropriate syntax guidance (5.1 vs 7+)
- Changed `Edit` to work on files viewed via `Bash` with `sed -n` or `cat`, without requiring a separate `Read` call first
- Changed hook output over 50K characters to be saved to disk with a file path + preview instead of being injected directly into context
- Changed `cleanupPeriodDays: 0` in settings.json to be rejected with a validation error — it previously silently disabled transcript persistence
- Changed thinking summaries to no longer be generated by default in interactive sessions — set `showThinkingSummaries: true` in settings.json to restore
- Documented `TaskCreated` hook event and its blocking behavior
- Preserved task notifications when backgrounding a running command with Ctrl+B
- PowerShell tool on Windows: external-command arguments containing both a double-quote and whitespace now prompt instead of auto-allowing (PS 5.1 argument-splitting hardening)
- `/env` now applies to PowerShell tool commands (previously only affected Bash)
- `/usage` now hides redundant "Current week (Sonnet only)" bar for Pro and Enterprise plans
- Image paste no longer inserts a trailing space
- Pasting `!command` into an empty prompt now enters bash mode, matching typed `!` behavior
- `/buddy` is here for April 1st — hatch a small creature that watches you code