Prompt and transcript
A session buffer has the transcript at the top, the prompt region below a divider, and a footer. In the transcript, which is read-only, single keys run commands. In the prompt region, keys type as usual, and commands are on C-c C- keys.
The prompt region
Section titled “The prompt region”| Key | Action |
|---|---|
C-c C-c |
Send the prompt |
RET |
Insert a newline (sends instead when ecc-chat-return-sends is on) |
S-RET, C-j |
Insert a newline |
TAB |
Complete a slash command or an @ reference |
C-c C-k |
Clear the prompt region |
C-k, C-a, C-e |
Kill to the end of, or move along, the visual line |
M-p / M-n, C-<up> / C-<down> |
Previous / next prompt from the history |
C-c C-r |
Choose a past prompt and insert it at point |
C-c C-s |
Take the CLI’s suggested prompt |
C-c C-z |
Interrupt the running turn |
C-c C-q |
List the queued prompts |
C-c C-a / C-c C-d |
Allow or deny a request |
C-c C-x |
Turn editor context on or off |
C-c C-i |
Insert an image |
C-c C-y |
Paste the image on the clipboard |
C-c C-b |
Show the /btw side questions |
C-c C-n / C-c C-p |
Next / previous turn |
C-c C-t |
Switch the window to another session |
C-c C-e |
Export the conversation as Markdown |
S-TAB |
Cycle the permission mode |
C-c ? |
Open the menu |
Every session shares one prompt history. M-p replaces the whole prompt; C-c C-r inserts the prompt you choose at point. To keep the history across restarts, turn on savehist-mode and add this to your init:
(add-to-list 'savehist-additional-variables 'ecc-prompt-history)A prompt sent while Claude is working waits in a queue, as does a turn started by Remote Control. The waiting prompts appear above the divider. C-c C-q, or RET on them or clicking them, opens the list, where RET takes a prompt back into the prompt region to edit, d drops it and M-<up> / M-<down> move it. The footer shows the permission mode and the model.
Suggestions
Section titled “Suggestions”With ecc-prompt-suggestions-enabled on, the CLI may suggest a next prompt after a turn. It appears in the empty prompt region as ghost text, and C-c C-s takes it as a draft. Not every model suggests.
Slash commands
Section titled “Slash commands”
/ at the start of an empty prompt lists the commands, each with the CLI’s description; TAB completes them anywhere in the prompt. /model, /effort, /permissions, /config and /btw ask for their argument first. Commands that only work in a terminal are not listed, but typing one in full still runs it.
Emacs handles these itself, and they never reach the model: /btw, /hooks, /plugins, /login, /logout, /auth-status and /resume.
Side questions with /btw
Section titled “Side questions with /btw”/btw <question> asks a side question in a separate, tool-less CLI that knows the conversation so far. The running turn goes on, and neither the question nor the answer goes into the transcript or the recording.
C-c C-b lists the session’s side questions: a asks another, c copies the answer, k cancels one in flight, x clears the list, q closes it. A follow-up carries only the last few exchanges (ecc-btw-history-limit). ecc-btw-display puts the answer in a window or a posframe popup.
Another conversation with /resume
Section titled “Another conversation with /resume”/resume asks which recorded conversation of this project to continue and switches this window to it; the window, tab, buffer and session name stay. /resume <session-id> goes straight to one. Emacs stops the running process first, so that two processes never write one recording, and asks before leaving a conversation that has turns or queued prompts. The conversation you leave stays on disk.
Images
Section titled “Images”C-c C-y pastes the image on the clipboard; M-x yank-media does the same. An image can also be dropped into the buffer or inserted from a file with C-c C-i. All of them are saved under ecc-image-dir and sent to the CLI as paths. A pasted image of a type the API does not take is converted to PNG with sips, which comes with macOS; without sips it is saved as it came, and the API may not accept it. ecc-image-cleanup decides whether they are deleted when the session ends.
The transcript shows images under the prompt or the call they came with. I stops or starts a GIF, a video shows its first frame when ffmpeg is on PATH, and RET opens the file. ecc-image-inline (I in the menu) shows only the line naming each file.
Diagrams
Section titled “Diagrams”A ```mermaid block in a reply is shown as its diagram when mermaid-cli (mmdc) is on PATH. The block appears as code first, and the diagram replaces it a moment later. I on a diagram shows its source, and I again shows the diagram. Search and copy work on the source either way. A block mmdc cannot draw stays code, and hovering over it shows the error. I on it tries again, after you have fixed the cause.
Install mermaid-cli with npm install -g --allow-scripts=puppeteer @mermaid-js/mermaid-cli. Without --allow-scripts, npm may skip downloading the browser mmdc draws with. (setq ecc-mermaid-command nil) turns the diagrams off, and so does turning off ecc-image-inline.
The transcript
Section titled “The transcript”The transcript is ordinary read-only text, so isearch, occur, narrowing and M-w work in it.
| Key | Action |
|---|---|
TAB |
Fold or unfold the node at point |
1–4 |
Unfold the tree to that depth |
+ / - |
Unfold or fold everything |
n / p |
Next / previous heading |
M-n / M-p |
Next / previous sibling |
^ |
Up to the parent heading |
] / [ |
Next / previous block |
T |
Jump to a turn by its prompt |
F / P |
Jump to the Files section / the plan |
SPC / DEL |
Scroll down / up |
v / i |
Go to the prompt region |
RET |
Open what is at point: a link, a source line, a subagent’s transcript, or the full tool result. A click opens a link, a path in Claude’s reply or a picture |
o |
Show the whole node: input, diff and result |
w |
Copy the code block at point, or the whole response |
I |
Show the diagram at point as its source and back, or stop or start the GIF at point |
a / d |
Allow / deny the request (d elsewhere shows the diff) |
g |
Redraw the transcript |
L |
Show the protocol log |
t / R |
Hand over to the terminal / restart the session, or resume a stopped one |
C-c C-k |
Clear the prompt region |
S-TAB |
Cycle the permission mode |
q |
Bury the buffer |
? |
Open the menu |
On a request waiting for an answer, more keys apply: see Permissions and plans.
Opening the source
Section titled “Opening the source”RET on code in the transcript opens the file beside the session at that line.
| Point on | Opens |
|---|---|
| A diff line of an edit or a Bash command | That line; a removed line opens where it was |
The Updated/Created/Deleted line over a Bash command’s diff |
The first changed line of that file |
| The heading of a tool call that names a file | The line Read started at, or the first changed line |
| A diff line in the Files section or a permission request | That line |
A path in Claude’s reply (foo.el:12, a/b.el, x.el#L3) |
The file at that line |
The line number follows later changes the session made to the same file, so the file opens where the line is now. A video or sound file opens in the system’s player. A path that is not there as written, such as a name without its directory, opens the file of that name in the project; when there are several, you choose one, and the session remembers the choice; C-u RET chooses again. A file that is not in the project is searched for on the whole machine after asking; ecc-visit-search-machine set to 'always or 'never answers for you. Paths inside fenced code blocks are not links; (setq ecc-markdown-linkify-paths nil) turns path links off. On a heading without a file, RET shows the full tool result.
The Files section
Section titled “The Files section”The bottom of the transcript lists the files the session touched: the path, the reads, edits and writes (R×n, E×n, W×n), and the lines changed (+n −n). F jumps there. On a file, TAB unfolds its diff, RET opens it, and d reviews it alone. (setq ecc-render-summary-position 'top) puts the section at the top.
The Timeline
Section titled “The Timeline”T lists the turns by their prompts and jumps to the one you choose. C-c C-n and C-c C-p step through them.
