Skip to content
← リリースに戻る · 2.1.268
新機能 / v2.1.268

--remove-session-state追加

CHANGELOG 原文(英語)

Added claude self-hosted-runner --remove-session-state (default off): delete each session's per-session directories under <base-dir>/_sessions/ when the session ends
公式の変更履歴を開く ↗

日本語での補足

claude self-hosted-runner --remove-session-state(デフォルトはオフ)を追加。セッション終了時に<base-dir>/_sessions/配下の各セッション専用ディレクトリを削除するようになった。

ドキュメント

ドキュメントの抜粋(参考訳)

事前にウォームアップされたチェックアウトを再利用する

大規模なリポジトリでは、クローンの処理がセッション起動時間の大半を占めることがあります。--capacity 1 かつ checkout フックがない場合、ランナーはリポジトリごとに 1 つの正規クローンを <base-dir>/<repo-owner>/<repo> に保持し、セッションをまたいで再利用します。対象の ref を fetch し、HEAD を detach してそこへハードリセットするため、変更がほとんどない場合はほぼ瞬時に完了します。コールドクローンを避けるには、次のいずれかの方法でクローンを用意してください。

  • イメージ内にクローンを含める: ランナーイメージのそのパスにクローンを組み込んでビルドします。新しいコンテナはディスクを再利用しなくても、常にウォームなクローンから開始します。
  • 永続ボリューム上にクローンを配置する: --lock-to-account で 1 人のユーザーのアカウントに事前ロックしたランナーでは、--base-dir を永続ボリュームに向けることで、そのディスクを常にそのアカウント専用にできます。事前ロックされたランナーは Claude Tag のチャンネルセッションを受け付けないため、この方法はそれらを扱うランナーには適用できません。

再利用の仕組みが保証すること、しないこと:

  • どのクローン形状でも動作する: そのパスにあるフル、シャロー、単一ブランチのいずれのクローンも、そのまま使用されます。ランナーは既存のクローンへの fetch 時に --depth を渡さないため、フルのウォームアップはフルな履歴を保ち、シャローなものはシャローなままです。CLAUDE_RUNNER_FETCH_DEPTHfull0、または数値。既定値は 50)は、クローンがまだ存在しないときにランナーが行うコールドクローンにのみ影響します。

  • トラッキング済みの変更はリセットされるが、未トラッキングのファイルは残る: 各セッションは、前回のセッションでのトラッキング済みの変更を消し去るハードリセットから始まります。ただしランナーは git clean を実行しないため、ロックされた所有者の以前のセッションによる未トラッキングのファイルはツリーに残ったままです。

  • セッションごとのディレクトリも残る: チェックアウトと並んで、ランナーは実行するすべてのセッションについて、<base-dir>/_sessions/ 配下にセッションごとのエントリを作成します。セッションの Claude 設定ディレクトリには、会話のトランスクリプトのローカルコピーが保存されます。その隣には、セッションにアップロードされたファイルがある場合、それらが置かれます。セッションディレクトリ自体もそこにあり、セッション実行中のセッションごとのワークツリーと checkout フックのチェックアウトを保持するほか、Claude がそこに書き込んだその他のものも保持します。

    既定では、セッションが終了してもランナーはこれらをそのまま残すため、ランナープロセスより長く存在するディスクでは蓄積していきます。すべてのセッションはランナー自身のユーザーとして実行されるため、そのディスクを利用する後続のセッションはどれもそれらを読み取れます。永続的な --base-dir を維持する場合は、この増加分を見込んでボリュームのサイズを決めてください。同じことは、Docker Compose のレシピを含め、同じファイルシステム上でランナーを再起動するあらゆる構成にも当てはまります。

  • --remove-session-state を指定すると、セッションごとのディレクトリは残らない: --remove-session-state を指定してランナーを起動すると、各セッションの終了時にそのセッションごとのディレクトリを削除するようになります。この削除はベストエフォートであり、クリーンアップが実行される前にランナーが強制終了された場合、ディレクトリは残ります。正規クローンや、一時ディレクトリなどホスト上の他の場所にセッションが書き込んだファイルは、いずれにせよ残ります。

  • git プロキシを使うと、リセットがチェックアウトになる: --use-anthropic-git-proxy を指定すると、ランナーは各セッションの前にクローンの .git/ をサニタイズし、オブジェクトストア、参照、シャロー状態は保持しつつインデックスを削除します。そのため各セッションは、ほぼ瞬時のリセットの代わりにフルなワークツリーのチェックアウトを行うことになりますが、それでも再クローンは発生しません。プロキシ配下ではサブモジュールの事前ウォームアップはサポートされません。

  • 長時間かかるクローンに回避策は不要: ランナーは各 git 操作を、一律のタイムアウトではなく、120 秒間進捗がない場合のウォッチドッグと 30 分のハードキャップで制限します。そのため、進捗を報告し続けている遅いコールドクローンは完了まで実行されます。

取得日 · 2026-09-23

変更の詳細