Skip to content

Configuration

Every defcustom in ecc is listed below, organized by functional area. All settings belong to the ecc customization group:

M-x customize-group RET ecc
Variable Default Description
ecc-executable "claude" 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.

Variable Default Description
ecc-chat-return-sends nil 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
Variable Default Description
ecc-hint-context-indicator t 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:

Spec Meaning
%n Session name
%m Active model
%p Permission mode
%l Remaining context capacity (percentage)
%t Total tokens in context window
%c Cumulative cost
%r Rate limit utilization
%s Session state
Variable Default Description
ecc-notify-level 'message 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
Variable Default Description
ecc-window-large-frame-min-height 80 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.

Variable Default Description
ecc-btw-display 'window 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
Variable Default Description
ecc-log-max-lines 5000 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.