case_1131

Claude Codeの終了方法|/exit・強制終了・再開の手順

Claude Codeの終了方法|/exit・強制終了・再開の手順

Claude Codeの終了方法を公式情報で整理。終了コマンド/exit、Ctrl+DとCtrl+Cの2回押し、Escとの違い、固まった時の強制終了、claude --resumeでの再開、終了時に音や通知を出す設定までまとめました。

2026年10月4日時点の結論。Claude Codeの終了コマンドは /exit(別名 /quit)だ。キーで終わらせるなら、入力欄が空の状態で Ctrl+D を2回(800ミリ秒以内)押すか、何も動いていない時に Ctrl+C を2回押す。Esc は作業を止めるだけで、Claude Codeは終了しない。固まって反応しない時は Ctrl+C を試し、だめならターミナルを閉じて開き直す。公式ドキュメントは「再起動しても会話は失われない」とし、同じフォルダで claude --resume を打てば続きから戻れると説明している(Anthropic「Interactive mode」、Anthropic「Troubleshooting」)。

「claude code 終了」で調べる人がつまずくのは、たいてい次の3つだ。Ctrl+C を押したのに終わらない。Esc を押したら止まったが、終わってはいない。終わらせたら作業が消えないか心配。この記事では、Anthropic公式のClaude Codeドキュメントと、プロセスを止めるOS側の公式ドキュメントに書かれている内容だけで、終わらせ方・止め方・戻り方を整理する。

この記事の要点

終わらせ方

  • 終了コマンド:/exit。別名は /quit。
  • キー:Ctrl+D を2回(1回目で確認の表示、800ミリ秒以内の2回目で終了)。何も動いていなければ Ctrl+C を2回でも終わる。
  • 止めるだけ:Esc は応答やツールの実行を途中で止めるキーで、終了ではない。

困った時

  • 固まった:Ctrl+C → ダメならターミナルを閉じる → claude --resume で戻る。
  • 終わったはずなのに残っている:Ctrl+Z で一時停止しただけ(fg で戻る)か、バックグラウンドのセッションから /exit で切り離しただけのことがある。
  • 終了時に音を鳴らしたい:preferredNotifChannel を "terminal_bell" にするか、Notificationフックで音を鳴らす。

読んでほしい人と今日やること

  • 対象読者:Claude Codeを使い始めた開発者、ターミナル操作に慣れていないエンジニア以外の利用者、チームの使い方をまとめる人。
  • 今日やること:作業していないClaude Codeで Ctrl+D を1回だけ押し、確認の表示が出ることを確かめる。

終了コマンドとキーの一覧

一覧表

Claude Codeを終わらせる操作と、似ているけれど終了しない操作を並べる。内容はすべて公式ドキュメントの記載による(Anthropic「Interactive mode」、Anthropic「Commands」)。

操作 何が起きるか 終了するか
/exit(/quit) CLIを終了する。バックグラウンドのセッションに接続中なら切り離すだけ する
Ctrl+D 1回目で確認の表示、800ミリ秒以内の2回目で終了。入力欄に文字があるとカーソルの後ろの1文字を消す する
Ctrl+C 動いている処理を中断する。何も動いていなければ1回目で入力を消し、2回目で終了 状況による
Esc 応答やツールの実行を途中で止める。ダイアログが開いていれば閉じる しない
Esc を2回 入力欄に文字があれば下書きを消す。空なら巻き戻し(rewind)のメニューを開く しない
Ctrl+Z プロセスをシェルに一時停止する(Unixのみ)。fg で戻る しない

終了コマンドは/exit

いちばん確実なのは /exit を打つことだ。入力欄の先頭で /exit と打ってEnterを押せば終わる。/quit でも同じ動きになる。キー操作と違って、入力欄の状態や処理が動いているかどうかに左右されない。

「止める」と「終了する」を分ける

Escは作業を止めて会話を続ける

Esc は、いま進んでいる応答やツールの実行を途中で止めるキーだ。公式ドキュメントは「それまでの作業は残る」と書いている。止めたあとに指示を出し直せるので、方向がずれた時に使う。作業中に次のメッセージを入力して待たせていた場合は、止めたあとにそれが送られる。Claude Codeそのものは終わらない。

Ctrl+Cから、何も動いていない時の関門を通ると1回目で入力を消し、2回目で終了に進み、動いている時は中断に分かれる様子と、下段でEscは終了しないことを示した図
Ctrl+C は何も動いていない時だけ終了に向かう。Esc は終了しない

使用量の上限に達したあとの自動再開の待ち時間も、空の入力欄で Esc を押すか Ctrl+C を押すと取り消せる(Anthropic「Interactive mode」)。上限そのものの扱いは「Claude Codeの「session limit」対処法」にまとめている。

Ctrl+Cは状況で意味が変わる

Ctrl+C は、何かが動いている時は「中断」、何も動いていない時は「入力を消す→終了」になる。公式の説明では、何も動いていない状態で1回目を押すと入力欄が空になり、2回目で終了する。「1回押したのに終わらない」のは、1回目が中断か入力の消去に使われているからだ。

Ctrl+Dは入力欄が空の時だけ終了

Ctrl+D は、入力欄に文字があるとカーソルの後ろの1文字を消すキーとして働く。終了に使えるのは入力欄が空の時だけだ。1回目で確認の表示が出て、800ミリ秒以内にもう1回押すと終わる。うっかり1回押しただけでは終わらない作りになっている。

Esc 2回は巻き戻し

Esc を2回押すと、入力欄に文字がある時は下書きを消し、空の時は巻き戻しのメニューが開く。終わらせるつもりで押すと、別の画面に入って戸惑う。巻き戻しの使い方は「Claude Code rewindで巻き戻す」で扱っている。

終了したつもりで残っているケース

Ctrl+Zで一時停止していた

Mac・LinuxでCtrl+Zを押すと、Claude Codeはシェルに一時停止するだけで、終わってはいない。ターミナルにシェルのプロンプトが戻るので終わったように見える。戻すには fg を打つ。一時停止のまま新しく claude を起動すると、Claude Codeが2つ動いている状態になる。

中央の終了したつもりから、Ctrl+Zとfg、/exitと/stop、バックグラウンドのサブエージェントとCtrl+Kの3組へ線が伸びる図
終わったように見えて残っている3つのパターンと、その戻し方・止め方
fg   # 一時停止したClaude Codeに戻る
jobs # 一時停止中のジョブを確かめる

バックグラウンドのセッションは/exitで切り離すだけ

Claude Codeには、セッションをバックグラウンドで動かす仕組みがある。バックグラウンドのセッションに接続している時の /exit は「切り離し」で、セッションは動き続ける。止めたい時は /stop を使う。/stop はセッションを止めるが、会話の記録とworktreeは残る(Anthropic「Commands」)。

バックグラウンドのサブエージェントを止める

1つのセッションの中で、サブエージェントをバックグラウンドで動かしている場合は Ctrl+X → Ctrl+K で、動いているバックグラウンドのサブエージェントをまとめて止められる。誤操作を防ぐため、3秒以内にもう一度押して確定する。サブエージェントの使い方は「Claude Codeサブエージェント並列開発入門」を参照してほしい。

固まって終了できない時(強制終了)

公式の手順はCtrl+C→ターミナルを閉じる

画面が反応しない時の公式の手順は2段階だ。まず Ctrl+C で処理の中断を試す。それでも反応しなければ、ターミナルを閉じて開き直す。公式ドキュメントは「再起動しても会話は失われない」と明記し、同じフォルダで claude --resume を実行すれば続きから再開できると書いている(Anthropic「Troubleshooting」)。

再起動しても会話は失われないという見出しの下に、Ctrl+C、ターミナルを閉じて開き直す、kill <PID>とtaskkill /pid <PID>の順に下る階段があり、最後にclaude --resumeで戻ることを示した図
反応しない時は上の段から順に試す。再起動しても会話は失われない

画面の表示が崩れているだけなら、終了する前に Ctrl+L を試す価値がある。入力と会話の履歴を残したまま、画面を描き直すキーだ。

ターミナルごと閉じられない時(Mac・Linux)

ターミナルのアプリ自体が反応しない時は、別のターミナルを開き、OSの機能でプロセスを止める。kill は指定したプロセスにシグナルを送るコマンドで、シグナルを指定しなければTERMが送られる。TERMの既定の動きはプロセスを終わらせることで、KILLより先にTERMを使うよう説明されている(man7.org「kill(1) — Linux manual page」)。

# claude のプロセス番号(PID)を探す
ps aux | grep claude

# まずは TERM で止める
kill <PID>

kill -9(KILL)は、TERMで止まらない時の最後の手段にとどめる。

ターミナルごと閉じられない時(Windows)

Windowsでは taskkill を使う。/pid でプロセス番号を指定し、/f を付けると強制的に終了する。/t を付けると、そのプロセスが起動した子プロセスもまとめて終わらせる(Microsoft Learn「taskkill」)。

tasklist | findstr claude
taskkill /pid <PID>
# 反応しない時だけ
taskkill /pid <PID> /f /t

強制終了で失われるもの

会話の記録は残るが、途中だった処理は戻らない。公式ドキュメントによると、前のプロセスが終わった時点で実行中だったツールは、再開しても完了も再実行もされない。Claudeにはその呼び出しが結果を残す前に途切れたと示され、もう一度実行する前に効いたかどうかを確かめるよう指示される。バックグラウンドで動かしていたBashやモニターのタスクも戻らない(Anthropic「Manage sessions」)。ファイルを書き換える途中で止めた時は、再開後に git status などで状態を見てから続けるのが安全だ。

終了後に再開する

再開のコマンド

終わらせた会話は、次のコマンドで戻せる(Anthropic「Manage sessions」)。

左の前のプロセスから右の再開した会話へ、会話の履歴、使っていたモデル、権限モード、スケジュールされたタスクが矢印で移り、バックグラウンドのBashとモニターのタスクは左に残る様子を示した図
再開すると会話・モデル・権限モード・予定のタスクは戻り、バックグラウンドのBashとモニターは戻らない
claude --continue          # 直近の会話を開く
claude --resume            # 会話の一覧(ピッカー)から選ぶ
claude --resume <名前>     # 名前を付けた会話を直接開く

Claude Codeの中からは /resume で別の会話に切り替えられる。claude -p で動かしたセッションは、ピッカーにも claude --continue の対象にも入らない。戻す時は claude --resume <セッションID> とIDを指定する。非対話で動かす使い方は「Claude Codeヘッドレス自動実行ガイド」にまとめている。

戻るものと戻らないもの

公式ドキュメントが挙げる、再開時に戻るものは次のとおりだ。

  • 会話の履歴(ツールの呼び出しと結果を含む)
  • 使っていたモデル(引退したモデルや、起動時にモデルを指定した場合などを除く)
  • 権限モード(claude --continue や claude --resume <セッションID> で戻した場合。例外あり)
  • 期限が切れていないスケジュールされたタスク

戻らないのは、バックグラウンドのBashとモニターのタスクだ。バックグラウンドのサブエージェントやBashが前のプロセスとともに終わっていた場合は、再開した会話に「終わらなかった」という注記が出る。Claude Codeはその注記を見て自分から動き出すことはなく、次の指示と一緒に読む。

終了時に音や通知を出す

Claude Codeが通知を出すタイミング

「終了 通知」「終了 音」で調べる人の多くは、Claude Codeを閉じる時ではなく、Claudeが作業を終えた時に知らせてほしいのだと思う。公式ドキュメントによると、Claudeが作業を終えた時や権限の確認で止まった時に、ユーザーがターミナルから離れているように見えると通知のイベントが出る。デスクトップ通知が既定で出るのはGhostty・Kitty・iTerm2だけだ。それ以外のターミナルでは、設定の preferredNotifChannel を "terminal_bell" にするとベルが鳴る(Anthropic「Terminal configuration」)。

Claudeが作業を終えた時から通知のイベント、Notificationフック、afplayへ進む流れと、通知のイベントの下にterminal_bell、最初の箱の下にStopフックを添えた図
作業が終わった合図は、通知のイベントからベルかフックで受け取る
{
  "preferredNotifChannel": "terminal_bell"
}

音が鳴らない時に見る所

Macの標準のターミナルでは、初回起動時に出るターミナル設定の案内を受け入れていると、/terminal-setup が実行され、ターミナルのプロファイルの警告音がオフになる。ベルを選んでも音が鳴らない時は、ここを確かめる。tmuxの中で使っている場合は、通知が外側のターミナルに届くようにパススルーを有効にする必要がある。WarpやVS Codeの統合ターミナルのようにデスクトップ通知が届かないターミナルでは、次のフックかベルを使う。

Notificationフックで音を鳴らす

どのターミナルでも使えるのが、Notificationフックだ。公式ドキュメントにはmacOSでシステムの音を鳴らす例が載っている。

{
  "hooks": {
    "Notification": [
      {
        "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }]
      }
    ]
  }
}

通知の種類ごとに絞ることもできる。idle_prompt はClaudeが応答を終えて約60秒たち、その間に入力していない時、permission_prompt は承認待ちの表示が約6秒続いた時に動く(Anthropic「Hooks reference」)。応答が終わった瞬間に鳴らしたいなら、メインのエージェントが応答を終えた時に動くStopフックを使う。Stopフックは、ユーザーが中断して止まった時には動かない。フックの組み方は「Claude Code Hooks実践ガイド」で詳しく扱っている。

終了時に片付けを走らせる(SessionEndフック)

SessionEndが動く理由の種類

Claude Codeを閉じるタイミングでログを保存したり、一時ファイルを消したりしたいなら、SessionEndフックを使う。フックに渡される reason で、なぜセッションが終わったかが分かる(Anthropic「Hooks reference」)。

reason 意味
clear /clear でセッションを消した
resume 対話中の /resume で切り替えた
logout ログアウトした
prompt_input_exit 入力欄が表示されている状態で終了した
other それ以外の理由

設定の例と時間の上限

matcherで終了の理由を絞れる。次の例は、入力欄から終了した時だけ片付けのスクリプトを動かす。スクリプトのパスは自分の環境に合わせて置き換える。

{
  "hooks": {
    "SessionEnd": [
      {
        "matcher": "prompt_input_exit",
        "hooks": [{ "type": "command", "command": "~/.claude/hooks/on-exit.sh", "timeout": 10 }]
      }
    ]
  }
}

注意点は3つある。SessionEndフックは終了を止められない。出力のJSONは捨てられる。そして既定の時間の上限は1.5秒だ。上限を延ばすには、フックごとに timeout を書く(全体の上限は書いた値の最大まで、最長60秒まで自動で上がる)か、環境変数 CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS をミリ秒で指定する。

想定シナリオ|長い作業を区切って翌日に再開する

想定する状況

ここからは公開事例ではなく、構成例として書く。開発者が夕方、リファクタリングの途中でClaude Codeを終わらせ、翌朝に続きをやりたい。作業中にClaudeがテストを走らせていることがある。

終わらせ方と戻り方

  1. Claudeが動いている途中なら、まず Esc で止める(それまでの作業は残る)
  2. git status で、ファイルの変更がどこまで進んだかを見る
  3. /exit で終了する
  4. 翌朝、同じフォルダで claude --continue を打ち、直近の会話を開く
  5. バックグラウンドで動かしていたテストは戻らないので、必要なら走らせ直すよう指示する

この流れなら、動いている途中で強制終了した場合のような「どこまで効いたか分からない処理」を残さずに済む。

よくある質問

Claude Codeの終了コマンドは?

/exit です。別名の /quit でも終わります。キーなら、入力欄が空の状態で Ctrl+D を2回(800ミリ秒以内)押すか、何も動いていない時に Ctrl+C を2回押します。

Ctrl+Cを押しても終了しません。

Ctrl+C は、処理が動いている時は「中断」として働きます。何も動いていない時でも、1回目は入力欄を空にするだけで、終了するのは2回目です。確実に終わらせたい時は /exit を使ってください。

Escを押しても終わりません。

Esc は応答やツールの実行を途中で止めるキーで、終了のキーではありません。止めたあとも会話は続き、それまでの作業も残ります。終わらせるには /exit か Ctrl+D の2回押しを使います。

終了すると会話は消えますか?

消えません。終わらせた会話は claude --continue(直近の会話)や claude --resume(一覧から選ぶ)で開き直せます。ただし、バックグラウンドで動かしていたBashやモニターのタスクは戻りません。

固まって何も効かない時は強制終了していいですか?

公式の手順は、Ctrl+C を試し、だめならターミナルを閉じて開き直すことです。再起動しても会話は失われません。ターミナル自体が反応しない時は、Mac・Linuxなら kill <PID>、Windowsなら taskkill /pid <PID> でプロセスを止めます。途中だったツールの実行は再開しても完了・再実行されないので、再開後にファイルの状態を確かめてください。

Claudeの作業が終わったら音で知らせてほしいです。

Ghostty・Kitty・iTerm2以外のターミナルでは、設定の preferredNotifChannel を "terminal_bell" にするとベルが鳴ります。好きな音を鳴らしたい時はNotificationフックかStopフックに、音を鳴らすコマンド(macOSなら afplay)を登録します。

あわせて読みたい

運営元 Uravation よりこの事例を自社の業務で試す場合のテーマ選定・評価・本番移行の確認項目を、無料のチェックリストにまとめています。 Claude Code業務自動化PoCチェックリストを受け取る(無料)

参考・出典

Anthropic公式ドキュメント

OS・ツール側の公式ドキュメント

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、AI開発ツール導入の失敗を減らせます。

導入を相談する

チームで学ぶなら: Claude Code 法人研修(2日間ハンズオン) / 1人で習得するなら: 個別指導(週1マンツーマン)