はじめに
Claude Code の v2.1.85〜v2.1.89 に含まれる新機能・修正・改善をまとめました。
フックシステムの大幅強化、MCP 連携の改善、多数のバグ修正が含まれます。
# 最新バージョンへのアップデート
npm update -g @anthropic-ai/claude-code
3行まとめ
- 🪝
PreToolUse/PermissionDeniedフックが強化され、ヘッドレスセッションでの自動化がより柔軟に - 🔌 MCP 連携が改善(非ブロッキング接続、OAuth RFC 9728 対応、セッション ID ヘッダー追加)
- 🐛 Windows・macOS・ターミナルエミュレータ固有の多数のバグを解消
✨ 新機能まとめ
🪝 フック・パーミッション
"defer" パーミッション決定(v2.1.89)
PreToolUse フックから "defer" を返すと、ヘッドレスセッションがツール呼び出し時点で一時停止し、-p --resume で再開して再評価できるようになりました。
// PreToolUse フック設定例
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash(rm *)",
"hooks": [
{
"type": "command",
"command": "my-approval-script",
"timeout": 10
}
]
}
]
}
}
PermissionDenied フック(v2.1.89)
Auto モードのクラシファイアによって拒否された後に発火する新しいフックです。{retry: true} を返すとモデルに再試行を促せます。
フックの条件フィルタリング(v2.1.85)
フックに条件 if フィールドが追加されました。パーミッションルール構文(例:Bash(git *))でフックが発火する条件を絞り込め、不要なプロセス起動を削減できます。
{
"hooks": {
"PreToolUse": [
{
"if": "Bash(git *)",
"hooks": [
{ "type": "command", "command": "echo 'git command detected'" }
]
}
]
}
}
PreToolUse が AskUserQuestion に応答可能(v2.1.85)
updatedInput と permissionDecision: "allow" を合わせて返すことで、PreToolUse フックが AskUserQuestion を処理できるようになりました。独自 UI で回答を収集するヘッドレス統合で活用できます。
🔌 MCP 連携
MCP_CONNECTION_NONBLOCKING=true(v2.1.89)
-p モードで MCP 接続の待機を完全にスキップできます。また --mcp-config のサーバー接続タイムアウトが 5 秒に設定されました(最も遅いサーバーにブロックされなくなります)。
MCP ヘルパースクリプト向け環境変数(v2.1.85)
CLAUDE_CODE_MCP_SERVER_NAME と CLAUDE_CODE_MCP_SERVER_URL が headersHelper スクリプトに渡されるようになりました。1 つのヘルパースクリプトで複数のサーバーを処理できます。
X-Claude-Code-Session-Id ヘッダー(v2.1.86)
API リクエストに X-Claude-Code-Session-Id ヘッダーが付与されるようになりました。プロキシ側でリクエストボディをパースしなくてもセッション単位での集計が可能になります。
MCP OAuth の RFC 9728 対応(v2.1.85)
MCP OAuth が RFC 9728 Protected Resource Metadata discovery に従って認可サーバーを検索するようになりました。
🖥️ UI・表示
ちらつきなしの alt-screen レンダリング(v2.1.89)
CLAUDE_CODE_NO_FLICKER=1 を設定すると、仮想スクロールバックを用いたちらつきのない alt-screen レンダリングが有効になります。
@ メンションに名前付きサブエージェントを表示(v2.1.89)
@ メンションのタイプアヘッドに名前付きサブエージェントが候補として表示されるようになりました。
Auto モードの拒否通知強化(v2.1.89)
拒否されたコマンドが通知として表示され、/permissions → Recent タブで確認・r で再試行できるようになりました。
📁 ファイル・VCS
.jj / .sl を VCS 除外リストに追加(v2.1.86)
Jujutsu(.jj)と Sapling(.sl)のメタデータディレクトリが、Grep やファイル補完の対象から除外されるようになりました。
スケジュールタスクにタイムスタンプ追記(v2.1.85)
/loop や CronCreate でスケジュールされたタスクが発火したタイミングがトランスクリプトに記録されます。
🛠️ 主な修正
v2.1.89
| 分類 | 内容 |
|---|---|
| Windows | Edit/Write ツールが CRLF を二重にしたり Markdown の行末スペースを削除するバグを修正 |
| Windows | PowerShell ツールで git push など stderr に書き込むコマンドが失敗と誤検知されるバグを修正 |
| Windows | Shift+Enter で Windows Terminal Preview 1.25 が改行でなく送信してしまうバグを修正 |
| macOS |
claude-cli:// ディープリンクが macOS で開かないバグを修正 |
| macOS | ボイスモードでマイク権限リクエストが失敗するバグを修正(Apple Silicon) |
| セッション |
StructuredOutput スキーマキャッシュのバグで複数スキーマ使用時に約 50% の失敗率が発生していた問題を修正 |
| セッション | 大きな JSON 入力が LRU キャッシュキーに残りメモリリークが発生していた問題を修正 |
| セッション | 50MB 超のセッションファイルからメッセージ削除時のクラッシュを修正 |
| セッション | 1 GiB 超の大きなファイルに Edit ツールを使用した際の OOM クラッシュを修正 |
| LSP | クラッシュ後に LSP サーバーがゾンビ状態になる問題を修正(次のリクエストで自動再起動) |
| 補完 | プロンプト履歴で CJK 文字・絵文字を含むエントリが ~/.claude/history.jsonl の 4KB 境界で消失するバグを修正 |
| フック |
if 条件フィルタリングが複合コマンド(ls && git push)や env-var プレフィックス付きコマンド(FOO=bar git push)にマッチしない問題を修正 |
| コンパクト | autocompact が即座にコンテキストが埋まる状態を 3 回連続検出した際に API 呼び出しを浪費せず停止するよう修正 |
| ターミナル | iTerm2 + tmux 環境でのストリーミング中の UI ジッターを修正 |
| ターミナル | Ghostty / Kitty / WezTerm など Kitty keyboard protocol 対応ターミナルで終了後に enhanced keyboard mode が残存する問題を修正 |
/stats |
サブエージェントのトークン使用量が除外されていたカウント漏れと 30 日以上の履歴消失を修正 |
-p モード |
deferred ツール入力が 64KB 超の場合や deferred マーカーが存在しない場合の --resume ハングを修正 |
v2.1.86
| 分類 | 内容 |
|---|---|
| セッション | v2.1.85 以前に作成されたセッションで --resume が "tool_use ids were found without tool_result blocks" と失敗するバグを修正 |
| ファイル | プロジェクトルート外のファイル(例:~/.claude/CLAUDE.md)に対して Write/Edit/Read が失敗する問題を修正 |
| 設定 | スキル呼び出しごとに不要な設定ファイル書き込みが発生しパフォーマンス低下・Windows での設定破損が起きていた問題を修正 |
| パフォーマンス | 長いトランスクリプトで /feedback 使用時に OOM クラッシュが発生する可能性を修正 |
| MCP |
--bare モードでインタラクティブセッションの MCP ツールが欠落し、ターン中にエンキューされたメッセージが破棄される問題を修正 |
| OAuth | OAuth ログイン URL の c ショートカットが約 20 文字しかコピーしないバグを修正 |
| UI | マスク入力(OAuth コードのペースト)で狭いターミナルで折り返す際にトークンの先頭が漏洩するバグを修正 |
| プラグイン | v2.1.83 以降 macOS/Linux で公式マーケットプレイスのプラグインスクリプトが "Permission denied" で失敗するバグを修正 |
| プラグイン |
/plugin アンインストールダイアログで n を押すと誤って削除される操作ミスを修正 |
| ステータスライン | 複数の Claude Code インスタンス起動時に別セッションのモデルが表示される問題を修正 |
| スクロール | 長い会話の末尾でホイールスクロールまたはクリック後に新しいメッセージが追従されなくなる問題を修正 |
v2.1.87
- Cowork Dispatch でメッセージが配信されないバグを修正
v2.1.85
| 分類 | 内容 |
|---|---|
/compact |
会話が compact リクエスト自体に収まらないほど大きくなった場合の "context exceeded" 失敗を修正 |
| プラグイン |
/plugin enable / /plugin disable でインストール場所と設定上の場所が異なる場合に失敗する問題を修正 |
--worktree |
Git リポジトリでないディレクトリで WorktreeCreate フックが動作する前にエラー終了するバグを修正 |
| MCP |
deniedMcpServers 設定が claude.ai MCP サーバーをブロックしない問題を修正 |
| コンピュータ使用 | マルチモニタ環境で switch_display が "not available in this session" を返すバグを修正 |
| OpenTelemetry |
OTEL_LOGS_EXPORTER / OTEL_METRICS_EXPORTER / OTEL_TRACES_EXPORTER を none に設定した際のクラッシュを修正 |
| MCP OAuth | リフレッシュトークンが存在する場合に 403 insufficient_scope による再認可フローが正しく動作しないバグを修正 |
| ターミナル | SSH や VS Code 統合ターミナルで生のキーシーケンスがプロンプトに表示される問題を修正 |
| ターミナル | Ghostty / Kitty / WezTerm 等で終了後に enhanced keyboard mode が残存する問題を修正 |
| スクロール | ストリーミング中にスクロールアップした際に古いコンテンツが残って見える問題を修正 |
📋 バージョン別サマリー
| バージョン | 主なトピック |
|---|---|
| v2.1.85 | フック強化(条件 if・AskUserQuestion 対応)、MCP OAuth RFC 9728、パフォーマンス改善 |
| v2.1.86 |
X-Claude-Code-Session-Id ヘッダー、VCS 除外拡張(.jj/.sl)、Read ツール最適化 |
| v2.1.87 | Cowork Dispatch メッセージ配信バグ修正 |
| v2.1.89 |
"defer" 権限、PermissionDenied フック、CLAUDE_CODE_NO_FLICKER、多数のバグ修正 |
Note: v2.1.88 は CHANGELOG に記載がないためスキップされています。
まとめ
v2.1.85〜v2.1.89 では、以下の点が特に注目です。
-
フックシステムの成熟:
"defer"による中断・再開、PermissionDeniedフック、条件ifフィールドと、ヘッドレス自動化に不可欠な機能が揃ってきました - MCP の安定性向上: タイムアウト管理・非ブロッキング接続・OAuth 改善により、外部ツール連携がより堅牢になっています
- クロスプラットフォームの品質向上: Windows(CRLF・PowerShell)、macOS(音声・ディープリンク)、各種ターミナルエミュレータ固有の問題が多数解消されました
今後のリリースノートも継続してまとめていきます。