この記事についてClaude(Anthropic)との共同編集により作成されました。
要約
- VSCode のターミナルで Claude Code を動かしていると、重い処理を回している最中にクラッシュすることが多発した
- 防止側は、そもそも VSCode のターミナルで動かさないことにした。今は iTerm で tmux を起動し、その中で作業している。VSCode のターミナルを使っていた理由は「複数の会話を1画面に載せたくない」だけだったので、tmux の新規ウィンドウ(
Ctrl-b c)と移動(Ctrl-b n/Ctrl-b p)の3操作でそのまま再現できた- 復旧側は、公式アプリからローカル起動のセッションを拾おうとしてうまくいかなかった。セッションに名前を付けておけば、ローカルから
claude --resume <名前>で戻れると気づいてからは困っていない- 名前は
claude --name XXX-日付の形にしている。同じ名前が大量に並ばず、復旧するときに迷わない。claude --resume XXXと途中まで打てば検索状態でピッカーが開く
VSCode のターミナルで Claude Code を動かしていて、重い処理を回している最中に落ちる。落ちたあとに、さっきの会話にどうやって戻ればいいのか分からない。
この2つに繰り返しやられたので、防止と復旧の2方向で対策した。どちらも新しいツールを入れる話ではなく、覚える操作も数個で済んだ。
症状:重い処理中に VSCode ターミナルごと落ちる
Claude Code に長いビルドやテスト、大きめのデータ処理を任せていると、VSCode のターミナルで動かしている Claude Code が落ちることが多発した。原因の切り分けはしていない。ただ、落ちるのは決まって重い処理を回しているときで、軽い作業では起きなかった。
落ちると会話が途中で切れる。処理の結果も見えないし、直前まで積み上げていた文脈も、どのセッションだったのかも分からなくなる。これが一番痛い。
防止:VSCode のターミナルで動かさない
防止側で一番効いたのは、VSCode のターミナルで Claude Code を動かすのをやめたことだ。今は iTerm で tmux を起動し、その中で Claude Code を立てている。
そもそもなぜ VSCode のターミナルで動かしていたかというと、理由はひとつだけだった。複数の会話をひとつの画面に載せたくない。プロジェクトごと、作業ごとに会話を分けて、タブで切り替えたかった。VSCode のターミナルはそれがタブで自然にできる。
それだけなら tmux で足りる。使っているのは3操作だけだ。
| 操作 | 何が起きるか |
|---|---|
Ctrl-b → c | 新しいウィンドウを作る(新しい会話用) |
Ctrl-b → n | 次のウィンドウへ移動 |
Ctrl-b → p | 前のウィンドウへ移動 |
Ctrl-b が tmux のプレフィックスキーで、これを押してから次のキーを押す。ウィンドウひとつにつき Claude Code をひとつ立てておけば、VSCode のタブでやっていたことがそのまま再現できる。ペイン分割やセッション管理の機能もあるが、会話を分けるだけなら使わなくていい。
iTerm + tmux に移してからは、重い処理でクラッシュすることがなくなった。VSCode のターミナル自体が悪いのか、その上で動く Claude Code との相性なのかは分かっていないが、自分の環境ではこれで止まった。
復旧:セッションに名前を付けておく
それでも落ちることはあるし、自分でターミナルを閉じてしまうこともある。ここで困ったのが復旧だ。
Claude Code は会話をローカルの transcript に保存し続けていて、claude --resume で戻れる1。公式アプリ(デスクトップ版)からも /resume で CLI のセッションを拾えることになっている2。
ただ、自分の環境では、ローカルのターミナルから起動したセッションをアプリ側でアクティブにしても復帰できなかった。セッションをテレポートする機能も試したが、会話が引き継がれなかった。なぜ失敗するのかは分かっていない。ドキュメント上はできるはずなので、自分のやり方か環境の問題かもしれない。
いろいろ試して落ち着いたのが、セッションに名前を付けておいて、ローカルから名前で戻るというやり方だ。
# 起動時に名前を付ける(-n でも同じ)claude --name blog-20260921
# 落ちたら、同じプロジェクトのディレクトリでclaude --resume blog-20260921名前は XXX-日付 の形にしている。名前が完全に一致すればそのまま復帰する。途中まで(blog だけ)打つと、その文字列で検索した状態のピッカーが開くので、そこから選べる1。
日付を入れているのは、同じ名前のセッションを大量に作らないためだ。blog という名前で毎日起動していると、復旧するときに blog が並ぶ。ピッカーは最終活動が新しい順に並ぶので、一応どれが直近かは分かる。分かるが、日付が付いていれば迷わない。
起動時に名前を付け忘れたら、会話の途中で /rename blog-20260921 でも付けられる1。名前で戻る話は以前の記事で /clear の前に /rename する小技として触れたが、クラッシュ対策としても同じ手が効く。
まとめ
- 防止: VSCode のターミナルで動かさない。iTerm で tmux を起動して、その中で Claude Code を立てる。
Ctrl-b c/Ctrl-b n/Ctrl-b pの3つだけ覚えれば、会話をウィンドウで分ける運用は再現できる - 復旧: 起動時に
claude --name XXX-日付を付けておく。落ちたらclaude --resume XXX-日付。名前の前半だけ打てば検索状態でピッカーが開く
公式アプリからの復帰は自分の環境ではうまくいかなかったが、この2つで今は快適になった。起動コマンドが少し長くなるだけで、落ちたときの損失がほぼゼロになる。
参考文献
- Manage sessions(Claude Code 公式ドキュメント) https://code.claude.com/docs/en/sessions
- Claude Code desktop app(Claude Code 公式ドキュメント) https://code.claude.com/docs/en/desktop