config.toml
config.toml is the one config file of efrd and efr. It lives in the config root:
$EFR_CONFIG_DIR, else $EFR_HOME/config, else $XDG_CONFIG_HOME/efr (efr paths
shows which). The file is optional: a missing file is an empty one, and every key is
optional. An unknown key is an error. The file holds no secrets, so it can live in a
dotfiles repository behind a symbolic link.
efr config edit opens it (and creates it from the commented example), efr config check checks it, and efr config set and efr config unset change one key and keep
the comments. docs/config.schema.json is its JSON schema; the #:schema line at the
top of the example file points editors to it.
The daemon reloads the file when it changes, on efr config reload and on SIGHUP
(systemctl --user reload efrd). A file with an error keeps the old settings, and
efr status shows the error. The Applies column says when a change takes effect:
live: the daemon applies it without a restart, from the next turn, prompt, tool call or new hidden shell. A running turn keeps the settings it started with.restart: the daemon keeps the old value untilefrdrestarts, andefr config showlists the key as needing a restart.client: onlyefrreads it, each time it runs.
Top level
| Key | Default | Applies | Description |
|---|---|---|---|
log | "info" | live | The tracing filter of the daemon, in EnvFilter syntax, such as info or info,efr_=debug. |
screen | "auto" | restart | The screen backend of the hidden shells: auto, vt100 or ghostty. Needs a restart. |
[model]
The provider, the default model of a turn and what each request carries.
| Key | Default | Applies | Description |
|---|---|---|---|
provider | "openai-subscription" | restart | The provider of new conversations: openai-subscription (the ChatGPT plan), openai-api (an OpenAI API key) or anthropic-api (an Anthropic API key). Needs a restart. |
name | unset | live | The default model of a turn, such as gpt-6.1-sol or claude-sonnet-5-5. Unset: the default of the provider's model catalog: for OpenAI the model with the best priority, for Anthropic claude-opus-5-5 when the API lists it. |
effort | unset | live | The default reasoning effort, such as low, medium or high. Unset: the provider's default for the model (medium for Claude models). |
system_prompt | built in | live | The system prompt of every request. |
max_output_tokens | unset | live | The most tokens one model call may produce. Unset: the provider's default. |
[openai]
The OpenAI providers.
| Key | Default | Applies | Description |
|---|---|---|---|
originator | "efr" | restart | The originator of the subscription login and of every subscription request. Needs a restart. |
models | unset | live | Models added to the provider's model list, such as a new model before the backend lists it. A prompt may then name them; their efforts are not checked. An entry is a model id, or a table { id, context_window, max_output_tokens } that also gives the model's limits in tokens. A table may name a model of the catalog to change its limits: its window up to the largest window that the catalog gives for the model. |
subscription_base_url | unset | restart | Replaces the subscription backend's base URL. Needs a restart. |
api_base_url | unset | restart | Replaces the public API's base URL. Needs a restart. |
organization | unset | restart | The organization that requests with an API key bill, sent as the OpenAI-Organization header, such as for a key that belongs to several organizations. Unset: the key's default. Needs a restart. |
project | unset | restart | The project that requests with an API key bill, sent as the OpenAI-Project header. Unset: the key's default. Needs a restart. |
websocket | "auto" | restart | How model calls reach OpenAI: auto uses a WebSocket for each model that the model catalog marks with prefer_websockets and HTTP for the other models, on uses a WebSocket for every model, off uses HTTP only. A WebSocket stays open for each conversation, so a call skips the connection setup. A call that the WebSocket cannot serve goes over HTTP. Needs a restart. |
[anthropic]
The Anthropic provider.
| Key | Default | Applies | Description |
|---|---|---|---|
base_url | unset | restart | Replaces the Messages API's base URL. Needs a restart. |
models | unset | live | Models added to the provider's model list, such as a model that the API does not list yet. A prompt may then name them; their efforts are not checked. An entry is a model id, or a table { id, context_window, max_output_tokens } that also gives the model's limits in tokens. A table may name a model of the API's list to lower its window or its output limit. |
cache_ttl | "auto" | restart | How long the prompt cache keeps what a request writes: auto is efr's choice, today everything for an hour, 5m keeps everything for five minutes, 1h keeps everything for an hour. An hour costs more per write and survives a longer pause. Needs a restart. |
workspace_id | unset | restart | The workspace of your API key, sent as the anthropic-workspace-id header of every request. A key that is not scoped to one workspace needs it. Needs a restart. |
[permissions]
The permission mode, extra secrets and the user's rules.
| Key | Default | Applies | Description |
|---|---|---|---|
mode | "cautious" | live | The default permission mode of a turn: manual, cautious, auto or full. A prompt may choose another one for its turn. full needs permissions.allow_full = true; without it, efrd does not load the file. A turn from the phone runs with at most cautious, and a turn that a job notice starts with at most auto. |
allow_full | false | live | Lets a terminal (,mode full), a prompt (--mode=full) or permissions.mode choose full mode: commands run as you with no sandbox and no questions. Set it by hand or with efr config set; the settings tool never changes it. It is a config value, not a lock: a program that can write this file can change it. |
secret_paths | [] | live | Files and directories that count as secrets on top of the built-in ones, so the model may never read or write them: absolute, or below the home directory as ~/.... |
rules | [] | live | The user's rules, [[permissions.rules]], after the built-in rules: the last rule that matches wins. |
[shell]
How hidden shells start and when idle ones stop.
| Key | Default | Applies | Description |
|---|---|---|---|
program | unset | live | The shell, an absolute path. Unset: zsh on the PATH. |
login | true | live | Start the hidden shell as a login shell. |
idle_minutes | 60 | live | Minutes without output or input, at a prompt and unwatched, before a hidden shell is closed; 0 keeps idle shells. |
sudo_cache | "keep" | live | keep leaves sudo's credential cache to sudo; per_call makes the hidden shell forget sudo's and doas's credentials after each call, before anything else runs there. Read at each call. |
interactive_timeout_minutes | 60 | live | The longest a command runs before its call answers the model, in minutes, while a terminal that can type answers follows the conversation. It applies to a command outside the sandbox that may ask at the terminal (sudo, ssh, rsync or git over ssh), also when the reviewer, a rule or full mode allowed it, and to any command that waits for input when its timeout passes. A command that still runs in the hidden shell after its call answered, and waits for input, stops at this limit. The model's own timeout holds when no such terminal follows. Read at each call. |
[conversation]
Queues, approvals, streaming and terminals.
| Key | Default | Applies | Description |
|---|---|---|---|
max_queued | 16 | live | The most prompts that may wait behind a running turn. |
approval_timeout_secs | unset | live | Seconds an approval request waits before it expires. Unset: it waits until the user answers. |
update_interval_ms | 200 | live | The shortest time between two streamed text updates in the log, in milliseconds. Live clients see the text sooner, through drafts. |
draft_interval_ms | 16 | live | The shortest time between two drafts of a running turn, in milliseconds: the text, the reasoning and the tool input that a terminal shows as they arrive. Drafts go only to live clients and never into the log; 0 sends every change. |
tty_idle_hours | 12 | live | Hours without activity after which a terminal's next , line in a scope starts a new conversation instead of continuing the terminal's conversation of that scope; 0 continues it forever. Each scope of a terminal has its own clock. A new terminal picks up a project's newest conversation only when it was active within these hours. |
follow_project | true | live | A terminal keeps one conversation for each registered project that you worked in, and one for everything outside projects; a prompt goes to the conversation of the scope where you send it, and a new terminal picks up the project's newest conversation that no open terminal holds. false keeps one conversation per terminal, whatever the scope. |
repo_hint | true | live | A prompt in a git repository that is not a registered project shows, at most once a day for each repository, that writes there ask you and how to register it. |
[context]
What a prompt tells the model about your terminal: its recent commands.
| Key | Default | Applies | Description |
|---|---|---|---|
recent_commands | 8 | live | How many of the terminal's recent commands a prompt shows the model, from 0 to 10; 0 shows none. Each one comes with its exit status, its directory when that is not the current one, and how long ago it ended. The zsh plugin keeps the last 10 command lines of each terminal. It does not keep a , line, an efr command or a line that starts with a space. |
[compaction]
When efrd compacts a conversation's context on its own.
| Key | Default | Applies | Description |
|---|---|---|---|
auto | true | live | true compacts the context on its own when it reaches auto_at, before a model call, and the turn goes on. false compacts only when you run ,compact (efr compact), and a request that does not fit in the model's window fails the turn with a message that names ,compact. |
auto_at | 76 | live | The percent of the model's context window at which efr compacts on its own, from 1 to 99. ctx 100% in the status row means this point. |
[sandbox]
The kernel sandbox of the auto mode.
| Key | Default | Applies | Description |
|---|---|---|---|
enabled | true | live | false makes the auto mode unavailable: its turns run as cautious. |
bwrap | unset | live | The bubblewrap program, an absolute path. Unset: the first bwrap on the daemon's PATH. A change runs the probe again. |
write_projects | "named" | live | Which registered projects a call may write: turn (the turn's project), named (also the registered projects that the command names) or all. |
write_roots | [] | live | More write roots for every call: absolute, or below the home directory as ~/.... Floors still apply inside them. The home directory itself is refused. |
caches | ["~/.cargo", "~/.rustup", "~/.cache", "~/go/pkg/mod", "~/.npm", "~/.bun/install/cache", "~/.local/share/pnpm/store", "~/.m2/repository", "~/.gradle/caches"] | live | The tool caches that a call reads and writes through a private overlay: absolute, or ~/.... A cache that does not exist is skipped. |
cache_mode | "tmp" | live | How the caches are mounted: overlay (a private upper layer per conversation), tmp (writes vanish after each call) or readonly. |
keep_downloads | false | live | In the tmp cache mode, the download caches (~/.cargo, ~/go/pkg/mod, ~/.npm, the bun and pnpm stores) keep what a call downloads for the rest of the conversation, in efr's private layer, as the overlay mode does. The other caches stay tmp. Off by default: each call then takes about 3 to 4 ms more, above the launch gate of 10 ms. |
cache_days | 14 | live | Days without a call after which a conversation's cache layers are deleted, from 1 to 3650. |
cache_max_gib | 20 | live | The size of all cache layers together, in GiB, from 1 to 10000; the oldest conversation's layers go first. |
mask | [] | live | More paths that a call reads as empty: absolute, or ~/.... In auto, a read_file of them asks. |
mask_globs | [".env", ".env.*", "!.env.example", "!.env.sample", "!.env.template"] | live | Names masked inside each write root, to depth 3: * matches any text, and a leading ! keeps a name readable. |
protect | [] | live | More paths that stay read-only even inside a write root: absolute, or ~/.... |
env_deny | [] | live | More environment variables removed from every call: names, or patterns with *. |
env_keep | [] | live | Variables that the scrub of secret-like names keeps: names, or patterns with *. |
promote_env | ["RUST_LOG", "RUST_BACKTRACE", "NODE_ENV", "DEBUG", "CI", "NO_COLOR", "FORCE_COLOR", "TZ", "LANG", "LC_*"] | live | The exported variables that return from a call to the hidden shell: names, or patterns with *. A name of the built-in never list never returns. |
export_deny | [] | live | More names that never return to the hidden shell: names, or patterns with *. |
synced_dirs | ["~/Dropbox", "~/Nextcloud", "~/Sync", "~/OneDrive", "~/MEGA"] | live | Folders that a sync service copies off the machine: absolute, or ~/.... A write to them is an exit that only you can approve. |
surface_files | ["Makefile", "build.rs", "package.json", ".envrc", "rust-toolchain.toml", "justfile", "*.mk", "CMakeLists.txt", "setup.py", "pyproject.toml", "conftest.py", ".vscode/tasks.json", ".nvim.lua", ".exrc", ".mise.toml", ".tool-versions", "flake.nix", ".pre-commit-config.yaml", ".cargo/config.toml", ".cargo/config", ".npmrc", ".yarnrc.yml", ".pnpmfile.cjs"] | live | The files that run code later outside the sandbox: names or paths relative to a write root, with *. The end of an auto turn lists the ones it changed. |
offline_hints | true | live | Tell package managers to work offline while the sandbox has no network (CARGO_NET_OFFLINE, npm_config_offline, UV_OFFLINE, GOPROXY=off). |
rebuildable | ["target", "node_modules", "dist", "build", ".venv"] | live | Directory names whose deletion is not destructive, because builds make them again. |
ask_destructive | "unless_undoable" | live | When a line that deletes or overwrites files asks first: always, or unless_undoable (a line whose files efr's snapshot holds runs at once, because efr undo can bring them back). |
allow | [] | live | Always-allow rules, each a table with a kind: host (host, and port, default 443), write (under, a directory, and an optional project) or socket (path). In auto, a later exit of that kind and resource runs with no review and no question, with the same widening that a "yes" gives. The floors still hold: efrd checks them when it loads a rule, and turns off a rule that crosses one. Only an editor and the a answer of an exit question change them. |
[network]
What network a contained call of the auto mode sees.
| Key | Default | Applies | Description |
|---|---|---|---|
netview | true | live | true: in auto, ss, the read forms of ip, nstat and reads of /proc/net run in the sandbox with your machine's network view and no network socket, with no question. false: they go to the reviewer, as a look at the host's network. |
mode | "proxy" | live | "proxy" (the default): contained commands reach the hosts of allow through efr's proxy, and a network need is no review. "none": no network; every network need is a review that opens the whole network for one call. A change applies to new calls; a running background job keeps its network until it ends. |
allow | ["@crates", "@npm", "@pypi", "@go", "@github-read", "@pacman-mirrors"] | live | The hosts that contained commands reach through the proxy on port 443: presets (@crates, @npm, @pypi, @go, @github-read, @pacman-mirrors), host names, and *.suffix for the names below a suffix of at least two labels. Write a name in its ASCII (xn--) form. An IP address goes in [[network.hosts]]. |
deny | [] | live | Presets, hosts and *.suffix entries that no contained command reaches. The deny list wins over allow, [[network.hosts]] and every host grant. |
hosts | [] | live | More allowed hosts, each a table: host (a name, *.suffix or an IP address), port (the one port that the entry allows; absent: 443, and also 80 with http), http (plain HTTP GET and HEAD too, such as for a mirror) and private (the host may resolve to an address of your LAN). Only an editor changes them. |
max_upload_bytes | 4194304 | live | The bytes that a contained call may send through the proxy, counted from the first byte after the CONNECT head; 65536 to 1073741824. A background job counts for its whole life. |
[dbus]
The filtered message bus of the auto mode.
| Key | Default | Applies | Description |
|---|---|---|---|
proxy | true | live | true: in auto, the read forms of systemctl, loginctl, hostnamectl, timedatectl and localectl, and notify-send, run in the sandbox with no question, through a filtered bus that lets through only a fixed list of methods. false: they need the whole bus, which the reviewer approves for the system bus and only you for the session bus. efrd turns the filter off when xdg-dbus-proxy is missing or fails its self-test. A change applies to new calls; a running background job keeps the bus rules of its start. |
allow | [] | live | More bus methods that the filter lets through, each a table: bus (system or session), name (the service, such as org.freedesktop.timedate1) and call (a list of IFACE.MEMBER or IFACE.MEMBER@PATH; a PATH may end in /*). They add to the built-in read methods. For systemd, logind, hostnamed, timedated, localed and timesyncd a method must start with Get, List, Can or Lookup. For other services efr refuses a method that starts with a word that changes the machine, such as Start or Set, but it cannot tell every read from a write: you own each method that you add. Only an editor changes them. |
[classifier]
The reviewer model that decides most actions that leave the auto sandbox.
| Key | Default | Applies | Description |
|---|---|---|---|
enabled | true | live | true lets a reviewer model decide most actions that leave the sandbox in auto, and hand the unsure ones to you. false asks you about every such action, as efr did before it had a reviewer. Each review is one more request to your provider. |
model | unset | live | The model that reviews first. Unset: the small model of the turn's provider, such as gpt-6-luna for OpenAI or claude-haiku-5-5 for Claude. |
fallback_to_turn_model | true | live | true lets the turn's model review when the first model is missing, refuses, times out or gives an answer that does not fit. false then asks you. |
effort | "low" | live | The reasoning effort of each review, one lowercase word such as low, for the models that take an effort. |
timeout_secs | 20 | live | How long each model of the chain may take, in seconds, from 1 to 300. A slower answer goes to the next step. |
[undo]
efr undo, which takes back the changes of a turn from efr's snapshots.
| Key | Default | Applies | Description |
|---|---|---|---|
enabled | true | live | false turns undo off: efr undo refuses, the end of a turn shows no undo hint, and in auto a line that deletes or overwrites files goes to the reviewer or to you, as with sandbox.ask_destructive = "always". |
[snapshot]
efr's own snapshots, which show what a call and a turn changed in files.
| Key | Default | Applies | Description |
|---|---|---|---|
enabled | true | live | false takes no snapshot: a shell call and the end of a turn then list no changed files, and efr diff has nothing new. A file tool still shows its diff. |
max_file_mib | 10 | live | Files above this size in MiB are left out of a snapshot, from 1 to 1024: a new untracked file, and a file that grows past it, which then shows as changed with no line counts. |
ignored | "small" | live | Which ignored files a snapshot takes: none or small (up to 1 MiB each, outside build and dependency directories, such as .env). |
max_files | 20000 | live | A project or $SCRATCH with more files than this is not snapshotted, from 100 to 1000000; the debug log says so, and efr counts its files again after 10 minutes. |
keep_turns | 50 | live | The turns of each conversation whose snapshots stay, newest first, from 1 to 10000; older ones are deleted. |
max_age_days | 30 | live | Days without a snapshot after which the store of a project or $SCRATCH is deleted, from 1 to 3650. |
mirror_max_mib | 512 | live | The most MiB of a project's git objects that efr copies into its store once per turn, so efr undo can move the project's branches and tags back, from 0 to 65536; also the most that one turn's copy may add. 0 copies none: undo then restores files but no refs. A store keeps at most 4 times this in copies. |
home_max_files | 2000 | live | The most files of one directory that efr copies before a call can write all of it, outside the project and $SCRATCH, from 0 to 100000. A larger directory gets no copy, and the end of the turn says so. |
home_max_mib | 256 | live | The most MiB of one directory that efr copies before a call can write all of it, outside the project and $SCRATCH, from 0 to 16384. A larger directory gets no copy, and the end of the turn says so. |
[recording]
How long efrd keeps the recordings of the hidden shells' terminals.
| Key | Default | Applies | Description |
|---|---|---|---|
max_age_days | 14 | live | Days after its shell exited after which the recording of a hidden shell is deleted, from 0 to 3650; 0 keeps it. |
max_gib | 2 | live | The most GiB that all recordings may take, from 0 to 10000; 0 sets no limit. Past it, efrd deletes the oldest segments first, but never the newest segment or the last 1 MiB of a shell that still runs. |
[presence]
When efr counts you away from a conversation, and how long a question waits then.
| Key | Default | Applies | Description |
|---|---|---|---|
away_after_minutes | 10 | live | The minutes without input in a conversation after which efr counts you away, from 1 to 1440. Input is a prompt, a steer, an answer or keys for the hidden shell. efr away and ,away also count you away; your next input ends it. |
away_wait_secs | 300 | live | How long a question waits while you are away, in seconds, from 1 to 86400. Then the call does not run, and the model goes on without it. |
push | true | live | true sends a question that waits while you are away to your paired phones. No phone client exists yet, so it does nothing today. |
[jobs]
Background jobs: whether the model can start them, their limits, and how often their notices may start a turn.
| Key | Default | Applies | Description |
|---|---|---|---|
enabled | true | live | false: a shell call with background: true fails with a reason, and the model runs the command in the foreground. Jobs that run go on. |
default_minutes | 60 | live | The time limit of a job in minutes when the model names none, from 1 to max_minutes. |
max_minutes | 480 | live | The longest time limit that the model can ask for, in minutes, from 1 to 1440. A longer one is cut to it. |
max_running | 4 | live | The most jobs that run at one time in one conversation, from 1 to 64. |
max_running_daemon | 16 | live | The most jobs that run at one time in all conversations, from 1 to 256. |
max_wakes_per_hour | 6 | live | The most turns per hour that job notices start in one conversation, from 0 to 60. 0: a notice never starts a turn; it waits for your next prompt. |
max_wakes_per_hour_daemon | 12 | live | The most turns per hour that job notices start in all conversations, from 0 to 120. 0: a notice never starts a turn. |
max_wakes_per_watch | 3 | live | The most times that one watch pattern of a job can wake the model, from 0 to 10. A higher max_wakes of the model is cut to it. |
nice | 19 | live | The CPU priority (nice value) of every job, from 0 to 19; 19 is the lowest. A job never runs at a higher priority than efrd. The disk priority of a job is always the lowest (the idle class). |
forward_ports | true | live | Forward each loopback port that a contained background job listens on to the same port of 127.0.0.1. A job reads it when it starts. false at a reload also stops the forwards of the jobs that run; a later true does not start them again. |
[remote]
The listener for the efr phone app on this machine's Tailscale address.
| Key | Default | Applies | Description |
|---|---|---|---|
enabled | false | restart | true lets efrd listen for the efr phone app on this machine's Tailscale IPv4 address. It needs tailscaled 1.100 or later with a TUN device (not userspace networking). false opens no port. Then pair a phone with efr device add. Needs a restart. |
port | 7419 | restart | The TCP port of the listener on the Tailscale address, from 1024 to 65535. Needs a restart. |
tailscaled_socket | "/var/run/tailscale/tailscaled.sock" | restart | The absolute path of tailscaled's LocalAPI socket, which efrd asks who each peer is. Needs a restart. |
[resume]
What ,resume and efr resume show: a search picker in fzf or the numbered list.
| Key | Default | Applies | Description |
|---|---|---|---|
picker | "auto" | client | auto opens a live search picker in fzf, below the command line and never full screen, when a new enough fzf is on the PATH. Type to search the titles and the text of your conversations. Without fzf, auto shows the numbered list. list always shows the numbered list. |
[diff]
How efr groups the changed files of a turn.
| Key | Default | Applies | Description |
|---|---|---|---|
groups | {} | client | Groups of your own for the changed files of a turn: a name, then a list of globs, such as evals = ["evals/", "*.eval.toml"]. * matches inside one part of a path, ** matches any number of parts, and ? one character. A glob without / matches the name of a file in any directory; a glob that ends in / matches every file below a directory of that name; other globs match the whole path from the project root. Your groups match first, in the order of the file, then the built-in groups: generated, tests, docs, else code. A group named code keeps its files in code; total is not a name of a group. |
[render]
How efr shows replies.
| Key | Default | Applies | Description |
|---|---|---|---|
theme | unset | client | The colour theme of code blocks and diffs, such as catppuccin-mocha. Unset: the terminal's own 16 colours. auto takes theme_dark or theme_light, as the terminal's background is dark or light (EFR_TERMINAL_BG). A code_theme in the palette file wins over it. |
theme_dark | "catppuccin-mocha" | client | The theme that theme = "auto" takes on a dark background, and when the background is not known. |
theme_light | "catppuccin-latte" | client | The theme that theme = "auto" takes on a light background. |
palette | unset | client | A theme file: a [colors] table with a colour for each role and, as code_theme, the path of a .tmTheme file for code (absolute, ~/... or relative to the theme file). palette must be an absolute path or start with ~/. Unset: no theme file. |
motion | true | client | Motion in the status row of a running turn: the spinner turns and a band in the text role moves over the state in the muted role. false shows a still dot and no band; the time still counts. |
turn_summary | true | client | One muted line at the end of each turn: how long it took and the tokens it used, such as done in 42s, 18.2k tokens in, 1.1k out. |
diff_lines | 20 | client | The lines of a file tool's diff that a call shows after it ran, from 0 to 1000; a muted line then says how many more there are. 0 shows no diff. efr diff shows all of a turn's diff. |
progress | "auto" | client | The progress bar of the terminal's tab (OSC 9;4) while a turn runs: auto (only in Ghostty 1.2 or later, kitty 0.47 or later and Windows Terminal, never inside tmux, GNU screen or zellij), on or off. |
turn_input | true | client | An input row below the status row while a turn runs, when the terminal is interactive. Enter steers the turn, Tab queues a prompt behind it and Esc interrupts it. false shows no input row: keys typed during a turn go to the shell's next prompt. |
colors.text | unset | client | Prose and plain lines. Unset: the terminal's foreground. |
colors.muted | unset | client | Notes, tool call lines, labels, rules and the end-of-turn line. Unset: dim. |
colors.accent | unset | client | The spinner and the colour of headings. Unset: slot 3 (yellow). |
colors.heading | unset | client | Headings of level 1 and 2. Unset: the accent colour. |
colors.link | unset | client | Links. Unset: slot 4 (blue). |
colors.code | unset | client | Inline code. Unset: slot 6 (cyan). |
colors.success | unset | client | Done task boxes and good news. Unset: slot 2 (green). |
colors.warning | unset | client | Questions and refusals, in bold. Unset: slot 3 (yellow). |
colors.error | unset | client | Failures. Unset: slot 1 (red). |
colors.quote | unset | client | The text of a quote, in italic. Unset: the terminal's foreground. |
colors.diff.add | unset | client | Added lines. Unset: slot 2 (green). |
colors.diff.remove | unset | client | Removed lines. Unset: slot 1 (red). |
colors.diff.hunk | unset | client | Hunk headers. Unset: slot 6 (cyan). |