Claude Code の --worktree が終了時に消える問題を git worktree lock で防ぐ
Claude Codeを--worktreeで起動してコミットなしで/exitすると、worktreeが無言削除される。「Keep worktree / Remove worktree」のダイアログすら出ない。これはバグではなく仕様で、公式ドキュメントにも明記されている。クリーンな状態なら自動消去、変更がある場合だけダイアログ出力という設計だ。ただこれに異議を唱えるissueは複数立っていて、10日分の未コミット作業が無言削除されたケースも報告されている。
この問題は`git worktree lock`で守れる。Claude Codeは起動時にPID入りのreasonで自分のlockをかけ、終了時にそのreasonを読み直す。その形式に一致しないreasonでlockされていれば「自分が書いたlockではない」とみなして削除をやめるという設計だ。セッション中に別ターミナルから、Claude Codeがかけたlockを外して自分の理由で再度ロックする。すると/exitしても消えない。簡単なシェルスクリプトをSessionStart hookに登録すれば、claude --worktreeで起動した直後に自動で再ロックされる。
ここが実務的だ。Claude Codeが「自分でかけたlockは削除対象にしない」という設計により、「別の人間が守りたい」という意思が機械的に尊重される。UIのダイアログ出力より、自動化の徹底さの方が、実際のユーザーニーズを反映している。調査だけして戻すパターンが多い環境なら、SessionStart hookで自動pinすることで、毎回の手動入力を減らせる。
※ 上記は配信元記事をもとにAIの鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。
このニュースの全文は、配信元でお読みいただけます。 Zenn AIで元記事を読む →
