記事一覧
ClaudeCodeAI活用非エンジニア作業効率化AIツール活用術

Claude Codeが落ちても泣かない。セッション保存と自動復旧の設定方法

note.comでも読む

落ちても続きから再開できて安心するsuzumin

Claude Codeを使っていて、一番ヒヤッとする瞬間。それは、いい感じに作業が進んでいたのに、突然セッションが落ちたときです。ターミナルが固まる、ウィンドウが閉じる、あるいは何かのはずみで会話がまるごと消える。そして新しく開き直したとき、頭をよぎるのはこれです。「あれ、さっきどこまでやってたんだっけ?」

あの「どこまでやったか分からない」感覚、地味にこたえますよね。今日はこの恐怖を、設定と運用でかなり小さくできた話をします。私自身が自分の環境に組み込んだ、3層の「保険」のかけ方です。


空白のセッションを開き直して困るsuzumin

落ちた瞬間より、「開き直したあと」がつらい

Claude Codeでコードを書いてもらって、調子よく進んでいる。「このまま行けば今日中に形になる」と思った矢先に、セッションが切れる。一度きりなら「まあ、しょうがない」で済みます。

でも本当にこたえるのは、落ちた瞬間そのものより、新しいセッションを開き直したあとなんです。画面はまっさらで、Claude側にはさっきまでの会話の記憶がありません。こちらも「えっと、何の話をしてたっけ」と思い出すところからやり直し。直前にどんな方針で進めていたか、何を保留にしていたか、それを毎回ゼロから説明し直すのは、想像以上に消耗します。

特にエンジニアではない私たちにとって、ここでの消耗は「時間ロス」というより「やる気ロス」です。「また説明し直すのか」と思った時点で、その日の作業を続ける気持ちがしぼんでしまう。落ちること自体より、戻り方を知らないことのほうが、じわじわ効いてくるんです。


私も最初は「全文を別の場所に保存するだけ」で力技をしていた

正直に書くと、私もこの問題をしばらく力技でしのいでいました。やっていたのは、Claudeとの会話の全文を、別のメモアプリ(私の場合はObsidian)に丸ごと自動保存しておくこと。これはこれで強くて、「あの会話どこ行った」という事故はほぼなくなりました。

ただ、これだけだと弱点があります。全文ログは「読み返せば分かる」状態であって、「次のセッションが勝手に分かってくれる」わけではないんです。落ちて開き直すたびに、自分で過去ログを開いて、要点を探して、Claudeに貼り直す。記録は残っているのに、復帰の手間は減らない。保存と引き継ぎは別物だった、というのが当時の私の気づきでした。

そこから、「保存」だけでなく「次のセッションへの引き継ぎ」まで自動でやってくれる仕組みを、自分の環境に足していきました。それが、これから紹介する3層です。


再開コマンド・全文ログ・自動引き継ぎの3層を説明するsuzumin

落ちても泣かないための「3層の保険」

難しい設定の話は最小限にします。考え方はシンプルで、「一つの方法に頼らず、役割の違う3つを重ねる」だけです。

1層目:そもそもClaude Codeは自動で会話を保存している

まず知っておきたいのは、Claude Codeは何も設定しなくても、会話を1往復ごとにファイルへ自動保存しているという事実です。保存先は、お使いのプロジェクトフォルダに対応した ~/.claude/projects/ の中。落ちてもこの記録は消えていないことが多いので、まずはここを信じて大丈夫です。

戻り方は2つだけ覚えれば十分です。

claude -c

これは「このフォルダで一番最近のセッションを、そのまま再開する」コマンドです。落ちた直後の復帰はだいたいこれで済みます。会話もツールのやり取りも、止まったところから続けられます。

claude --resume

こちらは、過去のセッションを一覧から選んで再開したいときに使います。「昨日のあの作業に戻りたい」というときはこちら。IDを覚えていなくても、一覧が出るので選ぶだけです。

ちょっとした工夫として、セッションを始めるときに -n で名前を付けておくと、あとから一覧で見つけやすくなります(例:claude -n payment-fix)。「あの作業どれだっけ」が減るので、地味におすすめです。

2層目:会話の全文を、別の場所にも残しておく

1層目だけでもかなり安心なのですが、私はもう一段、保険をかけています。それが、さっき書いた会話全文の別保存です。

Claude Codeには「フック(hook)」という仕組みがあって、特定のタイミングで自動的に処理を走らせられます。私は「Claudeが1回返答を終えるたび」に発火する Stop というタイミングを使って、その時点までの会話を別フォルダ(Obsidian)へ書き出しています。

役割としては、1層目が「すぐ戻るための実用ログ」、2層目が「あとからじっくり読み返せる保管庫」というイメージです。万が一1層目が何かの拍子で開けなくても、読み返せる記録が手元に残っている。この二重化があると、心理的にだいぶ落ち着きます。

3層目:新しいセッションに、前回の続きを自動で教える

ここが、今回いちばん効果を感じている部分です。

SessionStart という、セッションが始まった瞬間に発火するタイミングがあります。ここに「前回の続き(今やっていたテーマと、最後のやり取り)」を自動で読み込ませる設定を入れておくと、新しく開き直したセッションが、最初から前回の文脈を分かった状態で立ち上がります。

実際、この記事を書いている今がまさにそうでした。前のセッションが終わって新しく開き直したあと、私が何の説明もせずに「前回何やってた?」と聞いたら、Claudeが「rolling handoff(自動引き継ぎ)の仕組みを作って、その記事化の準備をしていた」と即答したんです。こちらが過去ログを貼り直す手間はゼロでした。

仕組みとしては、2層目と同じ Stop のタイミングで「引き継ぎメモ」を1つ更新しておき、SessionStart でそれを読み込ませているだけです。SessionStart で渡した内容は、新しいセッションの追加コンテキストとして読み込まれるため、前回の作業状況をこちらから説明し直さなくても拾ってくれます。

実際の設定は、settings.json というファイルに「どのタイミングで、どのスクリプトを動かすか」を書くだけです。雰囲気だけお見せすると、こんな形です。

{
  "hooks": {
    "Stop": [
      { "hooks": [{ "type": "command", "command": "(会話を引き継ぎメモに保存するスクリプトのパス)" }] }
    ],
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "(引き継ぎメモを読み込んで渡すスクリプトのパス)" }] }
    ]
  }
}

Stop のほうで保存し、SessionStart のほうで読み込む、という役割分担です。引き継ぎメモ自体は特別な形式は要りません。次のような、ただのテキストでも十分役に立ちます。

# 前回の続き
- テーマ:◯◯の実装
- 最後にやったこと:△△まで完了。□□は保留中
- 次にやること:□□から再開する

このメモを Stop のたびに上書き更新しておけば、新しいセッションは毎回いちばん新しい状況を受け取れます。スクリプトの中身まで作り込まなくても、まずは「保存する」「読み込ませる」の2つのタイミングを押さえるところから始めれば大丈夫です。


+α:操作ミスは、公式の /rewind で巻き戻せる

クラッシュ対策とは少し別軸ですが、合わせて知っておくと安心なのが、Claude Code公式のチェックポイント機能です。

会話の中で /rewind と打つ(または入力欄が空のときにEscを2回押す)と、「コードと会話を、少し前の状態に巻き戻す」メニューが開きます。プロンプトを送るたびに自動でチェックポイントが作られていて、セッションをまたいでも残ります。「さっきの指示、やっぱりナシにしたい」というときに便利です。

ひとつ注意点があります。これで戻せるのはClaudeがファイル編集ツールで触った変更までで、rmmv のようなコマンドでの操作は対象外です。なので、本当に大事な区切りでは、これとは別にこまめにGitでコミットしておくのが結局いちばん固い保険になります。/rewind は「セッション内の即時undo」、Gitは「永続的な記録」、と役割が違うものとして両方使うのがおすすめです。


この3層で、作業への「入り方」が変わった

claude -c でいつでも戻れて、全文ログが別に残っていて、新セッションが前回の続きを自動で分かってくれる。この3つがそろってから、私の中で「セッションが落ちるのが怖い」という感覚がほとんどなくなりました。

何より変わったのは、作業の入り方です。「どうせ途中で止まるかも」という不安があると、最初の一手を出すのがおっくうになります。逆に「落ちても続きから戻れる」と分かっていると、気軽に手を動かし始められる。小さな差に見えて、毎日続けるとこの心理的なハードルの差はけっこう効いてきます。

ツールへの信頼感が上がると、使い方のアイデアも自然と広がっていく。これが、保険をかけて得られた一番大きなリターンでした。


おまけ:この仕組みは「節約」にも効く

3層の保険があると、もうひとつ良いことがあります。落ちたときだけでなく、自分から新しいセッションに切り替えるのが怖くなくなるんです。

ここで少し、コンテキストの話をします。Claude Codeは、会話が長くなるほど「これまでのやり取り」をまとめて読み込みながら返事をします。この毎回読み込む情報量を「コンテキスト」と呼びます。会話を続けるほどコンテキストはふくらみ、動作が少し重くなったり、使えるトークン(やり取りできる量の目安)を早く消費していきます。

そこで、区切りのいいところで一度セッションを終え、新しいセッションに切り替えると、コンテキストが軽い状態でやり直せます。「でも続きが分からなくなるのでは?」という不安こそ、さっきの引き継ぎメモが解決してくれます。軽い状態で開き直しても、前回の続きはちゃんと渡る。だから安心して切り替えられるわけです。

この「貯めすぎない運用」に慣れると、トークンの消費がゆるやかになります。結果として、上位の高いプランに上げなくても、Proプランの範囲で日々の作業を回しやすくなります。私自身、長い会話を惰性で続けるのをやめて、区切りで切り替えるようにしてから、使用量に追われる感覚がだいぶ減りました。

「落ちても泣かない」ための備えが、そのまま「賢く節約する」ことにもつながる。これは作ってみて気づいた、うれしい副産物でした。


備えがない夜と安心して再開できる夜を比較するsuzumin

次に落ちる前に、ひとつだけ備えておく

この記事を読んでいるということは、少なくとも一度は「落ちて、開き直して、また説明し直し」を経験しているはずです。「今度こそ設定しよう」と思いながら、次の作業が始まって、また途中で切れて——気づけば、なんとなく不便なまま使い続けてしまいがちです。

うれしいのは、入り口のハードルが低いことです。claude -c で戻れることを知るのは、今この瞬間に終わりました。フックの設定も、一度組んでしまえばあとは勝手に動いてくれます。「あとでやろう」と後回しにすると、今夜また同じ思いをするかもしれません。

完璧な備えでなくてもいいんです。まずは「落ちたら claude -c」を覚えるだけでも、安心感はかなり変わります。


まとめ:泣かないための準備は、今すぐ始められる

今日の内容を振り返ります。

  • 1層目:claude -c / claude --resume … Claude Codeは会話を自動保存している。落ちたら claude -c で最近のセッションを再開、過去のものは --resume で一覧から選ぶ。
  • 2層目:全文ログの別保存(Stop フック) … 会話を別の場所にも丸ごと残し、あとから読み返せる保管庫にする。
  • 3層目:自動引き継ぎ(StopSessionStart フック) … 新しいセッションに前回の続きを自動で教え、説明し直す手間をなくす。
  • +α:/rewind とGit … 操作ミスは公式チェックポイントで巻き戻し、大事な区切りはGitでコミットしておく。

エンジニアでなくても、少なくとも1層目は今日から使えます。難しい知識は要りません。

Claude Codeは使い込むほど頼りになる相棒です。最初のつまずきで遠ざかってしまうのはもったいない。この記事が、安心してもう一度向き合うきっかけになればうれしいです。


こういう「非エンジニアがAIツールを使い倒すための実践的な話」を定期的に書いています。「次も読みたい」と思ってくださった方は、ぜひフォローしてもらえると励みになります。「こういうトラブルで困っている」という声があれば、コメントで教えてください。次の記事のヒントにします。


あわせて読みたい