コンテンツにスキップ

セッション管理

セッションは、実行中の claude プロセス、そのバッファ、セッション名からなります。プロジェクトで最初のセッションにはプロジェクトのディレクトリ名が付き、2 つ目以降は名前を尋ねます。セッションを kill するとプロセスは止まりますが、会話はディスクに残ります。

キー コマンド 動作
C-c c c ecc-start 今のバッファのプロジェクトでセッションを開始(C-u でディレクトリを選ぶ)
C-c c r ecc-resume 会話を再開(C-u で分岐)
C-c c R ecc-rename-session セッションの名前を変更
C-c c v ecc-show-session セッションのウィンドウを表示し、ポイントをプロンプトへ移す
C-c c i ecc-interrupt ターンを中断。そこまでの作業は残る
C-c c ? → S ecc-restart トランスクリプトを残して CLI を起動し直す(セッションのバッファでは R)
C-c c ? → k ecc-kill プロセスを止め、セッションのバッファを kill
C-c c t ecc-tui-open ターミナルへ引き渡す

C-c c c は、今のバッファが開いているファイル、または Dired バッファが表示しているディレクトリのプロジェクトでセッションを始めます。トランスクリプトやサイドバーからは、その前にいたファイルのプロジェクトを使います。C-u C-c c c ではディレクトリを尋ねます。

C-c c r、またはメニューの r で、この Emacs のセッションを先に、続いてこのプロジェクトで記録された会話を、最近のものから並べます。

会話再開メニュー: 5 つの会話とそれぞれの状態アイコンが並んでいる様子

アイコン 状態
▶ この Emacs で実行中
● 停止しているが、バッファはこの Emacs にある
◉ 別のプロセスで実行中
↺ ディスクに記録されている

各項目には、名前、最後に使った日時、ディレクトリか最初のプロンプトが表示されます。メニューの -f か C-u C-c c r では、選んだ会話を続けるのではなく、そこから新しい会話を分岐させます。

記録は ~/.claude/projects にあるので、ターミナルのクライアントで始めた会話も並びます。C-c c h は、プロセスを起動せずに記録を読むために開きます。そこで r を押すと再開します。CLI のプロセスが落ちたときは、ecc が再開するかを尋ねます。

再開メニューの d(C-c c ? r d)か M-x ecc-delete-recording は、記録をディスクから削除します。C-c c r と同じ一覧から必ず選ばせ、セッション名とファイルのパスを示してもう一度確認します。実行中のセッションは、この Emacs でも別のプロセスでも削除できないので、先に止めてください。停止しているセッションのバッファは残りますが、そのあとは再開できません。

セッションのバッファで R、またはメニューで S を押すと、セッションの CLI を止め、同じバッファで同じ会話のまま起動し直します。CLI が応答しなくなったときや、変更した Claude Code の設定、MCP サーバー、プラグインを読み込ませたいときに使います。実行前に確認し、権限モードはそのまま引き継ぎます。起動し直せるのは待機中のセッションだけです。ターンの実行中や、リクエストが答えを待っているとき、キューにプロンプトがあるときは、先に C-c C-z で中断してください。バックグラウンドのタスクが動いているときは、終わるのを待ってください。止まっているセッションでは、R はセッションを再開します。

C-c c t は会話を ghostel に引き渡し、CLI 本来の画面を Emacs のバッファに表示します。会話が分岐しないよう、ecc は先にターンを中断して自分のプロセスを止めます。トランスクリプトはターミナルの会話を追い続けます。

メニューの u(ecc-tui-return)は、ターミナルで増えたやり取りを読み込み、Emacs でセッションを再開します。ターミナルがまだ動いていれば、終了したときにセッションが戻ります。

ecc は、開いている Space とセッションを user-emacs-directory の ecc-state.eld に保存します。セッションやタブを開閉するたびに書き直します。M-x ecc-restore で元に戻します。

  • Space は元の順に、そのセッションとともに開きます。
  • 各セッションは停止した状態で戻ります。CLI が起動するのは、プロンプトを送るか R を押したときです。
  • すでに開いているセッションや、ディレクトリがなくなったセッションは飛ばします。2 回実行しても問題ありません。

自分で kill したセッションは保存されません。前の Emacs が保存したセッションは、復元するまでファイルに残ります。起動のたびに復元するには、init ファイルから (ecc-restore) を呼び出してください。

C-c c /(ecc-search)は、このプロジェクトで記録された会話のプロンプトと返答を検索します。C-u ではすべてのプロジェクトを検索します。大文字と小文字を区別せず、文字列そのままで照合します。ツールの結果やファイルの中身は検索しません。

3 sessions said permission prompt in ~/Projects/emacs-claude-code/
Permission prompt rendering 2026-09-08 14:07 2d4f54c9 2 hits
› how does the permission prompt decide which diff to show?
‹ …the block is drawn by `ecc-perm.el`, and a permission prompt keeps the tool input…
Tab line colors 2026-09-06 10:22 f6743727 1 hit
‹ …a tab waiting for a permission prompt blinks, and an idle one is dimmed…

› は自分のプロンプト、‹ は Claude の返答です。RET か o で会話を開き、n と p で会話の間を移動し、g で検索し直します。巻き戻したり放棄したりしたブランチも検索します。

C-c c b でサイドバーを開くと、すべてのセッションが、それぞれ何を待っているかとともに並びます。

セッションウィンドウには、そのプロジェクトのセッションごとにタブが並びます。

4 つのタブが表示され、それぞれの動作状態に応じて色分けされているセッションウィンドウ

印 状態 色
⚠ 応答待ち 点滅する警告色
▶ 作業中 緑
✗ プロセスが終了 赤
○ 復元済みで未起動 薄い色
(なし) アイドル 薄い色

ウィンドウに表示中のセッションのタブは、太字に下線付きです。(setq ecc-tab-blink nil) で点滅を止められます。

タブをクリックすると、ウィンドウがそのセッションに切り替わります。セッションバッファでは、C-c C-t でウィンドウのタブから、C-u C-c C-t ですべてのセッションから選べます。別のプロジェクトのセッションは、そのプロジェクトの Space に開きます。タブの x は確認してからセッションを止め、ウィンドウは隣のタブに移ります。(setq ecc-tab-close-confirm nil) で確認を省けます。

(setq ecc-tab-line-scope 'all) で、どのタブラインにもすべてのセッションを並べます。Emacs のタブバーにもセッションの状態を示すには、ecc-tab-bar-state を t にします。あわせて tab-bar-tab-name-function を #'ecc-tab-bar-tab-name にしてください。

タブの下のヘッダー行には、セッションの状態、プロジェクト、コンテキストウィンドウの残りが表示されます。残りは少なくなると黄色、さらに赤に変わります。

応答待ちのセッションは 3 か所に示されます。

  • すべてのモードラインの ⚠ecc:N が、全セッションの応答待ちのリクエストを数えます。クリックすると、C-c c n と同じく次のリクエストへジャンプします。
  • タブが点滅します。
  • 通知が届きます。ecc-notify-level('message、'pulse、'desktop、nil)と ecc-notify-events で決めます。

C-c c n で次の応答待ちのリクエストへ、C-c c N でこのプロジェクトの次のリクエストへジャンプします。