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そのものは終わらない。

使用量の上限に達したあとの自動再開の待ち時間も、空の入力欄で 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つ動いている状態になる。

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+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」)。

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」)。

{
"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がテストを走らせていることがある。
終わらせ方と戻り方
- Claudeが動いている途中なら、まず
Escで止める(それまでの作業は残る) git statusで、ファイルの変更がどこまで進んだかを見る/exitで終了する- 翌朝、同じフォルダで
claude --continueを打ち、直近の会話を開く - バックグラウンドで動かしていたテストは戻らないので、必要なら走らせ直すよう指示する
この流れなら、動いている途中で強制終了した場合のような「どこまで効いたか分からない処理」を残さずに済む。
よくある質問
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)を登録します。
あわせて読みたい
- Claude Code rewindで巻き戻す|会話とコード復元
- Claude Code Hooks実践ガイド|整形・通知の自動化
- Claude Codeの「session limit」対処法|再開手順
- Claude Codeヘッドレス自動実行ガイド|-p・SDK・CI
- Claude Code /compact|長時間開発の5手順
運営元 Uravation よりこの事例を自社の業務で試す場合のテーマ選定・評価・本番移行の確認項目を、無料のチェックリストにまとめています。 Claude Code業務自動化PoCチェックリストを受け取る(無料)
参考・出典
Anthropic公式ドキュメント
- Anthropic「Interactive mode」(Claude Code Docs・2026年10月4日確認):
Ctrl+C・Ctrl+D(800ミリ秒)・Esc・Esc2回・Ctrl+Z・Ctrl+L・Ctrl+X Ctrl+K(3秒)の動き、使用量の上限後の自動再開の取り消し方 - Anthropic「Commands」(Claude Code Docs・2026年10月4日確認):
/exit(別名/quit)、バックグラウンドのセッションでの切り離し、/stop、/resume - Anthropic「Troubleshooting」(Claude Code Docs・2026年10月4日確認):「Command hangs or freezes」の節。
Ctrl+C→ ターミナルを閉じて再起動、再起動しても会話は失われないこと、claude --resume - Anthropic「Manage sessions」(Claude Code Docs・2026年10月4日確認):
--continue・--resumeの使い分け、claude -pのセッションの扱い、再開時に戻るもの・戻らないもの - Anthropic「Terminal configuration」(Claude Code Docs・2026年10月4日確認):通知が出るタイミング、既定でデスクトップ通知が出るターミナル、
preferredNotifChannel、/terminal-setupと警告音、Notificationフックの例、tmuxのパススルー - Anthropic「Hooks reference」(Claude Code Docs・2026年10月4日確認):Notificationの種類(
idle_prompt約60秒・permission_prompt約6秒)、Stopフック、SessionEndのreason・既定1.5秒・最長60秒・CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS
OS・ツール側の公式ドキュメント
- man7.org「kill(1) — Linux manual page」(2026年10月4日確認):シグナルを指定しない場合はTERMが送られること、KILLよりTERMを優先すること
- Microsoft Learn「taskkill」(2026年10月4日確認):
/pid・/f・/tの意味