Settings

/settings opens the settings overlay. Tab and Shift+Tab switch between the General, Agent, and Status line sections; ↑/↓ move between rows and ←/→ change a value. The complete overlay keys are in Keyboard and keys.

General

RowValuesDefaultEffect
Themedark, light, midnight, solarized, catppuccin, dracula, nord, gruvbox, rose-pine, monodarkColor palette.
Coloron / offonSGR styling.
Motionfull / reduced / offfullfull adds smooth streaming and a working shimmer, reduced keeps smooth streaming without the shimmer, and off follows provider chunks with static activity marks.
Terminal activityon / offoffBusy/idle status in supported terminal tabs and taskbars.
Tool detailscompact / expandedcompactExpand tool output and catalog details, the same as Ctrl+O.
Update checkson / offonCheck npm once a day and notify when a newer release is available.
Release notessummary / expanded / hiddensummaryShow new release notes once after an upgrade.
Notificationsoff / long-running / alwaysoffNotify when a turn finishes or input is required.
Long turn15s / 30s / 1m / 2m30sMinimum duration before a long-running notification.

Motion controls presentation only: provider output still enters the live session immediately, and a tool boundary or settled assistant message flushes the visible stream without waiting for the animation.

Agent

RowValuesDefaultEffect
LanguageAuto / Simplified Chinese / EnglishAutoPreferred language for reasoning and replies.

A non-Auto choice applies from the next turn; code, identifiers, commands, tool arguments, logs, quotations, and file contents keep their accurate forms, and an explicit language request for the current task still wins. The preference is user-level, so a resumed session uses the current value rather than a historical snapshot.

Features

Optional product features that cost context, runtime, or transcript noise. Each row turns one composition row off.

RowDefaultEffect when off
Changed-file summaryOnNo per-turn changed-file record, and no Git snapshots at turn start and turn end.
Session history toolsOnThe model loses session_search, session_event_search, session_trace, session_event_trace and session_event_read.
Ralph loopOffThe loop tool stays absent until you turn it on here.
Repeat-tool reminderOnThe model gets no nudge out of identical tool-call loops.

A change here applies on the next launch, and the row says so. disabled is a Loader option rather than plugin configuration, so the settings service cannot express it; these rows are written into a managed block in $OMDSH_HOME/profiles/omdsh/cordis.patch.yml instead, which is the surface the Harness reads while composing the tree. The block is delimited by comments and everything you wrote by hand around it is left alone.

Rows that back a command (session-query backs /sessions, workspace backs @ mentions) and rows that make the agent unusable (tool-fs, tool-bash, todo) are deliberately not listed. web_search is also absent: it shares its row with web_fetch, so no row-level switch can express “search off, fetch on”.

Status line

RowValuesDefaultEffect
Status lineon / offonShow the fixed two-line footer below the composer.
Labelscompact / fullcompactCompact or full metric labels.

Status items are reordered and restyled in place: Space shows or hides an item, Enter starts moving one (↑/↓ reorder, ←/→ choose the column), and each item has its own color.

First line, in default order: Model (deepseek), Effort (max), Path (~/project), Git (main *1), and Session, which is off by default because the terminal window title carries the session title regardless.

Second line telemetry groups, all shown by default: Context (Ctx 1.6% · 16.4K/1M), Cache (Cache 99%), Tokens (5.9M in), Latency (TTFT 1.2s), Time (LLM 16m51s), and Activity (3 turns). When the terminal is narrow, groups degrade from the lowest priority: cache, then tokens, then latency, then durations, then activity counts.

Persistence

Settings, model preferences, and logged-in credentials are live plugin config persisted into the active Profile’s Cordis patch, $OMDSH_HOME/profiles/omdsh/cordis.patch.yml (with $DSH_HOME, then ~/.dsh, standing in for the home itself); /settings, /model, and /login all write there. A settings.yaml left by an earlier release is imported once at startup — each section written into the Profile row with the same id — and the file is then renamed to settings.yaml.imported, while a section that no longer matches a row id is logged and stays only in the renamed file. See Sessions and history for the complete file list.

Plugin settings

Beyond the overlay’s three sections, mounted Harness plugins keep their settings in that plugin’s own config on its Profile row. One decides whether the default route works at all: llm-deepseek is Messages-only and refuses a protocol key, answering protocol is not configurable; remove it and use a Messages-compatible baseURL. A custom gateway therefore has to expose a Messages-compatible endpoint, and the DeepSeek endpoint is selected by base URL rather than by a protocol switch.