Skip to content

原文(日本語に翻訳)

claude stop がbackground-agentの再起動(respawn)と競合(レースコンディション)した際に、静かに取り消されてしまう問題を修正 — 現在は再起動処理が停止指示を正しく尊重するようになりました

原文(英語)

Fixed claude stop being silently undone when it raced a background-agent respawn — the respawn now honors the stop

概要

background-agentデーモンは、クラッシュなどで停止したワーカーを自動的に再起動(respawn)する仕組みを持っています。これまでは、ユーザーが claude stop でエージェントを停止しようとした操作と、デーモンによる自動再起動処理のタイミングが重なる(レースコンディションが発生する)と、停止指示が黙って上書きされ、エージェントが意図せず再び動き出してしまうことがありました。この修正により、再起動処理側が停止指示を正しく認識し、停止が確定していればそれを尊重して再起動しないようになりました。

基本的な使い方

Before(修正前):

bash
# バックグラウンドエージェントが何らかの理由で再起動されようとしている
# ちょうどそのタイミングで停止を指示
claude stop <agent-id>
 一見停止したように見えるが、直後にデーモンの再起動処理と競合し、
  エージェントが静かに復活してしまう

After(修正後):

bash
claude stop <agent-id>
 再起動処理と競合しても、停止指示が優先され、
  エージェントは確実に停止したままになる

実践例

タスク完了後すぐにエージェントを停止する運用

バックグラウンドエージェントがクラッシュ気味の状態(デーモンが再起動をトリガーしやすい状況)で claude stop を実行するようなケースでは、修正前は停止操作が意図せず打ち消されることがありました。修正後はこのようなタイミングの悪さがあっても確実に停止できます。

複数エージェントを一括で停止するスクリプト運用

複数のバックグラウンドエージェントを自動化スクリプトから次々に停止させる運用では、再起動処理との競合が起きやすくなりますが、修正後は各停止指示が確実に反映されるため、意図せず動き続けるエージェントが残るリスクが減ります。

誤動作したエージェントを緊急停止する場面

想定外の挙動をしているバックグラウンドエージェントを緊急で止めたい場合に、デーモン側の自動再起動と衝突して復活してしまうと大きな問題になり得ますが、修正後はこの点での信頼性が向上しています。

注意点

  • 本修正はあくまで「停止操作」と「デーモンによる自動再起動」がタイミング的に競合した場合の挙動に関するものです。通常のタイミングでの停止操作にはもともと問題はありません。
  • 2.1.191で行われた「タスクパネルからの停止が永続化される」修正と関連する内容であり、background-agentの停止操作全般の信頼性向上の一環です。
  • 停止したエージェントを再度実行したい場合は、新たにバックグラウンドエージェントを起動する必要があります。

関連情報