Skip to content

原文(日本語に翻訳)

リモートコントロール使用時にグレースフルシャットダウンがステールセッションを残すことがあった問題を修正しました。ネットワーク呼び出しを並列化することで対処しています

原文(英語)

Fixed graceful shutdown sometimes leaving stale sessions when using Remote Control by parallelizing teardown network calls

概要

Claude CodeのRemote Control機能を使用している際に、シャットダウン時にステール(古い・切断された)セッションが残る場合があった問題を修正しました。修正前は、シャットダウン時に行われるネットワーク呼び出しが順次実行されていたため、タイムアウトなどの問題でセッションのクリーンアップが不完全になることがありました。v2.1.53の修正でネットワーク呼び出しを並列化することで、より確実なシャットダウンが実現されました。

基本的な使い方

bash
# Remote Control機能を使ったClaude Codeセッション
claude

# 修正前: シャットダウン後にステールセッションが残る場合
# - 次回接続時に古いセッションが干渉する
# - ゾンビプロセスが残る可能性

# 修正後: シャットダウン時にすべてのセッションが正常に終了
# - クリーンな状態で終了
# - 次回接続がスムーズ

実践例

Remote Control経由でのClaude Code利用

bash
# Remote Control API を使った接続
# (SDK経由や自動化スクリプトからClaude Codeを制御)

# セッション開始
curl -X POST https://localhost:PORT/api/session/start \
  -H "Content-Type: application/json" \
  -d '{"task": "コードレビューを実施"}'

# 作業完了後、セッション終了
curl -X POST https://localhost:PORT/api/session/end

# 修正後: 終了処理が並列実行され、確実にクリーンアップ

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

bash
# GitHub ActionsなどのCI環境でClaude Codeを使用
# .github/workflows/claude-review.yml

jobs:
  code-review:
    steps:
      - name: Run Claude Code Review
        run: |
          claude --print "コードをレビューしてください" < diff.txt
          # 修正後: プロセス終了時にセッションが確実にクリーンアップ
          # 修正前: ステールセッションが次回のCI実行に影響する可能性

自動化スクリプトでの利用

python
# Python SDKを使ったRemote Control
import anthropic

client = anthropic.Anthropic()

# セッション作成と使用
with client.messages.stream(...) as stream:
    for text in stream.text_stream:
        print(text)

# 修正後: withブロック終了時にセッションが確実に終了
# 修正前: 一部のクリーンアップがタイムアウトで失敗する場合があった

注意点

  • この修正は v2.1.53 で適用されています
  • Remote Control機能を使用している場合(API経由、SDK経由、CI/CD等)に特に影響します
  • ネットワーク呼び出しの並列化により、シャットダウン時間も短縮される効果があります
  • ステールセッションが残っていた場合は、Claude Codeを更新後に既存のセッションを手動でクリアすることを推奨します
  • 通常のCLI使用ではほとんど影響しませんが、プログラムによる制御を行っている場合は更新を推奨します

関連情報