Skip to content

原文(日本語に翻訳)

スタール(停止)からの再起動(respawn)後に、Escでキャンセルしたはずのターンがバックグラウンドセッションで再実行されてしまう問題を修正しました

原文(英語)

Fixed background sessions re-running a turn cancelled with Esc after a stall respawn

概要

バックグラウンドセッションがスタール(応答が返らなくなる状態)した際、Claude Codeは内部的にそのセッションを再起動(respawn)して処理を継続しようとします。以前のバージョンでは、ユーザーがEscキーで明示的にキャンセルしたターンであっても、スタール後の再起動時にそのキャンセルが忘れられ、キャンセルしたはずの処理が再実行されてしまうことがありました。この修正により、Escによるキャンセルの意思がrespawn後も正しく保持されるようになりました。

基本的な使い方

修正前(Before):

bash
# バックグラウンドセッションで実行中のターンをEscでキャンセル
# → その直後にセッションがスタール → 自動的にrespawn
# → キャンセルしたはずのターンが最初から再実行されてしまう

修正後(After):

bash
# バックグラウンドセッションで実行中のターンをEscでキャンセル
# → スタール発生 → respawn
# → キャンセル済みのターンは再実行されない

実践例

誤って開始したタスクをキャンセルした直後にネットワークが不安定になった場合

意図しないタスクを起動してしまいEscで即座にキャンセルしたにもかかわらず、直後の接続不安定でセッションがスタール・respawnすると、以前はキャンセルしたはずの処理(例えばファイルの書き換えやコマンド実行)が再度走ってしまう恐れがありました。この修正でその心配がなくなります。

長時間タスクを途中でキャンセルしてから別の指示を出す場合

複雑なリファクタリング等の途中でEscキャンセルし、方向性を変えて別の指示を出すワークフローでは、respawnによってキャンセル前の古いターンが復活しないことが重要です。修正後は意図した通りに新しい指示だけが処理されます。

バックグラウンドで複数セッションを並行運用している場合

一部のセッションでキャンセル操作をしつつ他は継続させるような運用でも、スタール由来のrespawnがキャンセル状態を巻き戻さなくなったことで、想定外の再実行を心配せずに済みます。

注意点

  • この問題は「スタール発生後のrespawn」という特定の状況でのみ起きていた不具合です。通常のEscキャンセル動作自体に変更はありません。
  • キャンセル後に意図しない処理が実行された形跡がある場合は、claude agents でセッションの履歴・状態を確認することを推奨します。
  • v2.1.200での修正のため、それ以前のバージョンを使用している場合はアップデートを検討してください。

関連情報