本文へスキップ
Claude Media
Claude Code v2.1.50 — 作業ツリー分離の宣言化と、長時間セッションのメモリリーク修正

Claude Code v2.1.50 — 作業ツリー分離の宣言化と、長時間セッションのメモリリーク修正

Claude Code v2.1.50はagent側でisolation: worktreeを宣言できるようになり、WorktreeCreate / WorktreeRemovehookを追加。長時間セッションのメモリリーク修正を多数含む版です。

読了目安 約6

このリリースで何ができるようになるか

Claude Code v2.1.50は、agent worktree分離を宣言的に書ける形に整え、長時間セッションのメモリリークを束で潰した版です。

  • agent定義側でisolation: worktreeを宣言可能に(分離実行がYAMLに落とし込め、呼び出し側の設定漏れで本流ブランチを汚すリスクが下がる)
  • WorktreeCreate / WorktreeRemove hookを追加(worktree生成 / 破棄に合わせたVCSセットアップ・後処理を書ける)
  • 長時間セッションのメモリリークを複数経路で修正(TaskOutput残留、CircularBuffer未解放、shell実行のChildProcess、LSP diagnostic、Agent Teamsのteammate状態、ファイル履歴の無制限蓄積など)

直前のv2.1.49--worktreeフラグとサブエージェントのisolationが入った流れの続編にあたる版です。49でworktree統合の入り口が開き、50でその運用面(宣言、hook、リーク修正)が一気に整います。

あなたの開発フローはどう変わるか

worktree分離をYAMLに寄せたいケース

agent定義のYAMLに直接isolation: worktreeを書けるようになりました。

agents/reviewer.yaml
name: reviewer
isolation: worktree
# ...

特定のagentは必ずworktree分離で走る、という契約が定義ファイル側に寄せられます。コードレビュー系や破壊的な一括リファクタ系のagentに相性が良く、呼び出し側でフラグを忘れて本流ブランチを汚すリスクが下がります。

worktreeに合わせて環境セットアップが必要なケース

agent worktreeが作成・破棄される瞬間にフックを差し込めるようになりました。想定用途は以下のようなものです。

  • WorktreeCreate.envを新worktreeへコピー、npm ciで依存をインストール
  • WorktreeRemoveで一時ブランチをpushしてからクリーンアップ
  • 社内独自VCSポリシー(git-secrets再適用、hookのインストール)をworktree単位で再敷設

isolation: worktreeと組み合わせると、「agent実行を本流から完全に切り離し、終わったら何事もなかったように戻す」運用が呼び出し側の規律に頼らずに書けます。

日をまたぐ長時間セッション・IDE常駐運用

長時間セッションでメモリが少しずつ膨らんでいく問題が、本版で複数経路潰されます。具体的には、TaskOutputの残留行、CircularBufferの未解放スロット、shell実行のChildProcess / AbortController参照、LSP diagnosticの配信後未解放、ファイル履歴snapshotの無制限蓄積、Agent Teamsのteammateタスク完了後の状態残留が片付きます。再現も報告もしにくい類の不具合のため、デイリー運用ほど体感差が出やすいリリースです。

CLAUDE_CODE_SIMPLEで問題切り分けをしたいケース

Simple modeの「読み込みを省略する範囲」が大幅に拡張されました。

読み込み対象本版以前本版
Skills / session memory / custom agents / CLAUDE.mdのtokenカウント一部残っていた完全にstrip
MCP tools / attachments / hooks / CLAUDE.md読み込み有効すべて無効

Skillsの読み込み暴発、MCP serverの応答待ち、hookの副作用といったトラブル時に、CLAUDE_CODE_SIMPLE=1を立てれば素の状態に一気に戻せます。

Opus 4.6 fast modeで長文を扱うケース

Opus 4.6(fast mode)が1Mコンテキストウィンドウに正式対応しました。同時にCLAUDE_CODE_DISABLE_1M_CONTEXT環境変数で1Mコンテキストを強制無効化する抜け穴も用意されています。コスト上限をチームで厳しく管理する場合や、プロンプトキャッシュの振る舞いを安定させたい場合に使えます。

重いLSPサーバを使うモノレポ

LSPサーバのstartupTimeout設定が追加されました。Rust analyzer、gopls、TypeScript Language Serverといった重い言語サーバが冷えた状態から起動する初回でLSP did not respond in timeにハマっていたモノレポでは、この1項目で安定度が大きく変わります。

ヘッドレス(-p)でのCI実行

ヘッドレス起動の起動時間が、Yoga WASMとUIコンポーネントのimportを遅延させることで改善されました。CIや自動化パイプラインで大量にワンショット呼び出しをする場合に効きます。

RHEL 8等の古めのLinux環境

Linux glibc 2.30未満(RHEL 8等)でネイティブモジュールが読み込めなかった問題が解消されました。古めのエンタープライズLinuxで詰まっていた環境はこの版で起動可能になります。

主な変更点

新機能・追加

  • agent定義にisolation: worktree: YAMLでworktree分離を宣言(本流ブランチを守る)
  • WorktreeCreate / WorktreeRemove hook event: worktree生成 / 破棄でカスタムVCSセットアップ・後処理を実行可能
  • CLAUDE_CODE_SIMPLEのフルミニマル化: skill / memory / agents / CLAUDE.md / MCP / attachments / hooksをすべて無効化(問題切り分けに有効)
  • claude agents CLIコマンド: 設定済みagentを一覧表示
  • LSPサーバstartupTimeout設定: 重い言語サーバの初回起動向け
  • Opus 4.6(fast mode)が1Mコンテキスト対応
  • CLAUDE_CODE_DISABLE_1M_CONTEXT環境変数: 1Mコンテキストの強制無効化
  • VS Code: /extra-usageコマンド対応(エディタ内で利用状況確認)

メモリ・パフォーマンス改善

  • 長時間セッションでinternal cacheがコンテキスト圧縮後に残る問題を修正(複数経路)
  • ヘッドレスモード(-p)起動でYoga WASMとUIコンポーネントのimportを遅延
  • 大きいツール結果を処理後に解放
  • compaction後の内部キャッシュクリア
  • TaskOutputの残留行解放(メモリリーク修正)
  • CircularBufferの未解放スロット解放(メモリリーク修正)
  • shell実行のChildProcess / AbortController参照解放(メモリリーク修正)
  • LSP diagnosticデータが配信後に解放されない問題を修正
  • ファイル履歴snapshotの無制限蓄積を上限化
  • 完了タスクのoutput未解放を修正

Agent Teams関連

  • teammateタスク完了後にセッション状態から回収されない問題を修正
  • 完了タスク状態オブジェクトがAppStateに残留する問題を修正

resume / 切断まわり

  • symlinkを含む作業ディレクトリでresumeしたセッションが不可視になる問題を修正(セッションストレージパス解決の整合)
  • SSH切断時のセッションデータ消失をgraceful shutdown順序の是正で修正(セッションデータをhook / analytics前にflush)

その他のバグ修正

  • Linux glibc 2.30未満(RHEL 8等)でネイティブモジュールが読み込まれない問題を修正
  • CLAUDE_CODE_SIMPLEがskill / session memory / custom agent / CLAUDE.mdのtoken計算を完全にstripするように
  • /mcp reconnectに存在しないserver名を渡したCLIフリーズを修正
  • tool search有効 + launch引数にpromptを渡した際にMCPツールが発見されない問題を修正
  • プロンプトサジェストキャッシュのヒット率退行を修正

worktree宣言化とhookは何を可能にするか

agentのisolation: worktreeとworktree系2 hook eventを組み合わせると、agent実行を本流から完全に切り離して終わったら何事もなかったように戻す運用が、呼び出し側の規律に頼らずに書けるようになります。これまで必要だった「agent起動スクリプトでworktreeを切る → 実行 → 終わったら戻す」の定型シェルを、以下の構造に置き換えられます。

  • agent定義: isolation: worktree宣言
  • WorktreeCreate hook: 依存関係インストール、秘密情報の転写
  • agent本体: 通常通り実行
  • WorktreeRemove hook: ブランチpush or破棄、最終ログ回収

Agent Teamsや大量のSub-agentを同時並行で走らせるケースで特に意味を持ち、複数のagentが同じ作業ディレクトリを奪い合わない設計を宣言的に書けることは、multi-agent運用の負荷を下げる方向の改善と読めます。直前のv2.1.49--worktreeフラグとisolationを入れたところに、本版でhookと宣言化、リーク修正が乗った構図です。

まとめ

  • 長時間セッション運用に効く: メモリリーク修正が複数経路で効く
  • Agent Teams / Sub-agent多用に効く: isolation: worktreeとhookで運用が宣言化
  • RHEL 8等の古めLinuxは更新の優先度が高い: 起動不可が解消
  • Opus 4.6 fast modeで長文を扱う場合に有効: 1M対応 + 抜け穴環境変数

直前のv2.1.49と本版を合わせて取り込むと、worktree隔離を業務ワークフローに組み込みやすくなります。直後のv2.1.51ではclaude remote-controlサブコマンドや管理設定の拡張が入り、より広い運用領域へ機能が伸びていきます。更新はclaude updateで取得できます。

この記事を共有:XLinkedIn