Path to, or name of, the Claude Code CLI executable
ecc-permission-mode
nil
Initial mode passed via --permission-mode. When nil, the CLI default is preserved. Supported values: "default", "acceptEdits", "plan", "auto", and "bypassPermissions"
ecc-plan-default-mode
"acceptEdits"
Permission mode switched to when a plan is approved without explicitly selecting a target mode. When nil, approvals do not request a mode change (causing the CLI to return to default mode)
ecc-prompt-suggestions-enabled
nil
When non-nil, passes --prompt-suggestions to the CLI to enable follow-up suggestions
ecc-command-wrapper-function
nil
Hook function to transform the CLI command invocation before execution. Receives (command-list project-root) and returns the modified command list. When nil, commands run unchanged
ecc-disabled-plugins
nil
List of plugin identifiers ("name@marketplace") to disable for sessions started by ecc. Applied per session, so plugins stay enabled in the terminal client
There is deliberately no setting for the default model. The model is determined by your Claude Code settings for new sessions, and by the last assistant turn for resumed sessions. Passing --model unconditionally would override user selections permanently, undoing in-session /model changes. Use ecc-set-model (or m in the menu) to change the model for a running session instead.
Similarly, there is no setting for session cost budgets; budgets belong in Claude Code settings.
When nil (default), RET inserts a newline and C-c C-c sends. When t, RET sends immediately (matching the terminal client)
ecc-chat-text-width
100
Maximum line width for rendered text, or nil to use full window width. Surplus space is padded into the right margin so adjacent window layouts remain unaffected
ecc-chat-line-spacing
0.15
Additional line spacing below each line, following standard line-spacing semantics (e.g., float value represents a fraction of line height). nil disables added spacing
ecc-render-result-max-lines
12
Maximum lines displayed for a tool result preview. The full result is always accessible with RET
ecc-render-diff-max-lines
40
Maximum lines displayed for inline diffs in tool and permission blocks. The full diff is always accessible with RET
ecc-diff-context-lines
3
Lines of context displayed around modifications in the transcript
ecc-stream-throttle
0.05
Interval in seconds to buffer streaming deltas before redrawing. Zero renders each delta immediately
ecc-render-debounce
0.1
Debounce delay in seconds before redrawing the active transcript region
When non-nil, displays remaining context capacity in the session header line
ecc-prompt-suggestion-display
t
When non-nil, displays ghost text suggestions from the CLI in the prompt area. Requires ecc-prompt-suggestions-enabled
ecc-mode-line-format
nil
Format string for session status in the mode line. nil disables mode line display
ecc-mode-line-format is nil by default because mode line space is limited, the same metrics are already visible in the header line, and duplicating them across both clutters the interface. If desired, configure it with the following format specifiers:
Notification verbosity: 'message logs a single echo-area message, 'pulse also flashes the transcript, 'desktop sends a desktop system notification, and nil disables notifications
ecc-notify-events
'(turn-finished request exited)
List of events triggering notifications: turn completion, pending requests, or process exits
ecc-notify-suppress-when-focused
t
When non-nil, suppresses desktop notifications while Emacs has input focus
ecc-notify-sound
nil
System sound name played with desktop notifications, or nil for silence (e.g. "Glass" on macOS)
ecc-notify-function
#'ecc-notify-default
Custom notification dispatch function with signature (SESSION EVENT TEXT). Overriding this replaces default notification handling entirely
Minimum frame height (in lines) required before allocating a third session window. Below this threshold, sessions share two windows and the tab line provides navigation
ecc-window-sub-height
0.33
Height of the third session window (as a fraction or line count). Taken from the primary frame area (typically code buffers) rather than the side session column
ecc-tab-line-scope
'project
Scope of sessions shown in a session window’s tab line. 'project lists sessions for that window’s own project; 'all lists all open sessions in Emacs
The default value of ecc-window-large-frame-min-height (80 lines) is calibrated to differentiate laptop screens from larger external displays: a 14-inch screen typically fits ~58 lines and a 16-inch screen ~67 lines, whereas standard desktop monitors accommodate 110+ lines.
Display mode for /btw side-queries ('window or 'posframe)
ecc-usage-display
'window
Display mode for ecc-usage reports ('window or 'posframe)
Both options accept 'window or 'posframe. 'posframe renders the buffer as a floating popup over the frame (requires the posframe package and a graphical frame). If posframe is unavailable, ecc falls back to standard window splits.
ecc can run an in-process MCP server on the loopback interface and register it with each session, allowing Claude to query Emacs for editor context: xref, imenu, tree-sitter, project metadata, and diagnostics.
Variable
Default
Description
ecc-mcp-enabled
nil
When non-nil, registers the built-in MCP server with every session started. Starts on first use and stops via ecc-mcp-stop
ecc-mcp-enable-execute-code
nil
When non-nil, exposes the MCP tool allowing Claude to evaluate arbitrary Elisp
ecc-mcp-excluded-tools
nil
List of tool names to exclude from MCP registration. Exclude any tools that introduce noticeable latency here
Maximum lines retained in session log buffers. nil keeps unlimited log history
ecc-debug
nil
When non-nil, logs internal diagnostic traces alongside raw protocol messages
ecc-show-log displays the raw protocol log for the session associated with the current buffer. Failed dispatches are never dropped silently: they remain visible in the log and appear as unknown nodes in the transcript.