Skip to content

リモートコントロール権限ハンドラのエントリがセッション全体で保持されるメモリリークの修正

原文(日本語に翻訳)

リモートコントロール権限ハンドラのエントリがセッション存続期間中保持されるメモリリークを修正しました。

原文(英語)

Fixed a memory leak where Remote Control permission handler entries were retained for the lifetime of the session

概要

Claude Codeのリモートコントロール機能(外部からClaude Codeを操作するAPI)を使用する際、権限ハンドラが処理を完了した後もそのエントリがメモリ上に保持され続けるメモリリークが発生していました。長時間のセッションや多くのリモートコントロール操作を行った場合、メモリ使用量が蓄積してパフォーマンスに影響を与える可能性がありました。この修正により、権限ハンドラのエントリが適切にクリーンアップされるようになります。

基本的な使い方

修正前の動作

# リモートコントロールを使用した長時間セッション
# セッション開始時のメモリ使用量: ~100MB

# 数百件のリモートコントロール操作後
# セッション終盤のメモリ使用量: ~500MB(リークにより増加)

# 問題: 権限ハンドラのエントリが蓄積し続ける

修正後の動作

# 同じ操作を行っても
# セッション開始時のメモリ使用量: ~100MB

# 数百件のリモートコントロール操作後
# セッション終盤のメモリ使用量: ~105MB(適切にクリーンアップ)

# 修正後: 処理完了した権限ハンドラのエントリが解放される

実践例

### 長時間の自動化セッションでの影響

Claude Code SDKやリモートコントロールAPIを使用した長時間の自動化タスク:

python
# Claude Code SDK を使用した長時間の自動化スクリプト
import anthropic
import time

client = anthropic.Anthropic()

# 多数の操作を繰り返す自動化
for i in range(1000):
    response = client.beta.claude_code.run(
        prompt=f"タスク {i} を実行してください",
        permission_mode="auto"
    )
    # 修正前: ループごとに権限ハンドラのエントリが蓄積
    # 修正後: 各操作後にエントリが適切にクリーンアップされる

### CI/CDパイプラインでの使用

継続的インテグレーションで多数のコード分析タスクを実行する場合:

bash
# CI環境でのバッチ処理
for file in src/**/*.ts; do
  claude --print "このファイルをレビューしてください: $file"
done

# 修正後: 各操作の権限ハンドラが適切に解放され、
# バッチ処理全体でメモリ使用量が安定する

### インタラクティブな長時間開発セッション

一日中Claude Codeを使用する開発者のシナリオ:

# 朝: Claude Codeを起動
# 昼: 数百件の操作を実行
# 夕: さらに多くの操作

# 修正前: 夕方にはメモリ使用量が大幅に増加し、
#          動作が遅くなる場合があった
# 修正後: メモリ使用量が一定に保たれ、
#          長時間使用でも安定したパフォーマンスを維持

注意点

  • このメモリリークはリモートコントロール機能を使用した場合のみ発生していました。通常のインタラクティブな使用では影響がありません。
  • リモートコントロールAPIを使用した自動化スクリプトや統合環境(IDE拡張など)では、この修正の恩恵を受けられます。
  • メモリリークの影響は使用パターンによって異なり、短時間の使用では影響が少ない場合もありました。
  • v2.1.98以降にアップデートすることで、長時間のセッションでのメモリ効率が改善されます。

関連情報