# Settings reference

> Every setting in the Codevre Settings editor, with its type, default and allowed values.

Last updated: October 17, 2026
Source: https://codevre.com/docs/ide/settings-reference

The tables below follow the sections of the Settings editor (Ctrl+,). Put these keys in your User settings, or in `.codevre/settings.json` for one project. See [Settings](settings.md) for how the layers work.

**User only** settings are hidden in the Workspace tab and always saved to User settings.

## Commonly Used

The Settings editor collects these at the top. Each is described in its own section below.

`editor.theme` · `editor.fontSize` · `editor.fontFamily` · `editor.tabSize` · `editor.insertSpaces` · `editor.wordWrap` · `vre.preview.autoRun` · `files.exclude`

## Text Editor

### General

| Key | Type | Default | Description |
|---|---|---|---|
| `editor.theme` | theme | `dark-plus` | The color theme for Codevre. The picker pins commonly used themes and lists the rest A–Z |
| `editor.fontSize` | number 6–100 | `14` | Font size in pixels |
| `editor.fontFamily` | string | `""` | Font family. Empty = default monospace font. Example: `Consolas, 'Courier New', monospace` |
| `editor.tabSize` | number 1–16 | `2` | Spaces per tab |
| `editor.insertSpaces` | boolean | `true` | Insert spaces when pressing Tab |
| `editor.wordWrap` | `off` · `on` · `wordWrapColumn` · `bounded` | `on` | How lines wrap. `bounded` wraps at the smaller of the viewport and Word Wrap Column |

### Appearance

| Key | Type | Default | Description |
|---|---|---|---|
| `editor.lineHeight` | number 0–150 | `0` | Line height in pixels. 0 = from the font size |
| `editor.letterSpacing` | number −5–20 | `0` | Letter spacing in pixels |
| `editor.fontLigatures` | boolean | `false` | Draw ligatures like `=>` as one glyph, if the font has them |
| `editor.lineNumbers` | `off` · `on` · `relative` · `interval` | `on` | `relative` shows distance to the cursor; `interval` every 10 lines |
| `editor.renderWhitespace` | `none` · `boundary` · `selection` · `trailing` · `all` | `selection` | When whitespace characters are shown |
| `editor.renderLineHighlight` | `none` · `gutter` · `line` · `all` | `line` | How the current line is highlighted |
| `editor.bracketPairColorization.enabled` | boolean | `true` | Color matching brackets |
| `editor.guides.indentation` | boolean | `true` | Vertical indentation guides |
| `editor.stickyScroll.enabled` | boolean | `true` | Pin the current function or block header at the top while scrolling |
| `editor.folding` | boolean | `true` | Code folding |
| `editor.scrollBeyondLastLine` | boolean | `false` | Scroll past the last line |
| `editor.smoothScrolling` | boolean | `false` | Animate scrolling |
| `editor.mouseWheelZoom` | boolean | `false` | Zoom the font with Ctrl + mouse wheel |

### Cursor

| Key | Type | Default | Description |
|---|---|---|---|
| `editor.cursorStyle` | `line` · `block` · `underline` · `line-thin` · `block-outline` · `underline-thin` | `line` | Cursor shape |
| `editor.cursorBlinking` | `blink` · `smooth` · `phase` · `expand` · `solid` | `blink` | Cursor animation |
| `editor.cursorSmoothCaretAnimation` | `off` · `explicit` · `on` | `off` | Animate the cursor as it moves. `explicit` = only for clicks and arrow keys |
| `editor.cursorWidth` | number 0–10 | `0` | Width of a `line` cursor. 0 = default |

### Editing

| Key | Type | Default | Description |
|---|---|---|---|
| `editor.formatOnPaste` | boolean | `false` | Format pasted content, if the language has a formatter |
| `editor.formatOnType` | boolean | `false` | Format the line after typing |
| `editor.autoClosingBrackets` | `always` · `languageDefined` · `beforeWhitespace` · `never` | `languageDefined` | Add a closing bracket automatically |
| `editor.autoClosingQuotes` | same as above | `languageDefined` | Add a closing quote automatically |
| `editor.linkedEditing` | boolean | `false` | Rename matching HTML tags together |
| `editor.wordWrapColumn` | number 1–500 | `80` | Wrap column for `wordWrapColumn` and `bounded` |
| `editor.dragAndDrop` | boolean | `true` | Move selections by dragging |

### Suggestions

| Key | Type | Default | Description |
|---|---|---|---|
| `editor.suggestOnTriggerCharacters` | boolean | `true` | Suggest after characters like `.` |
| `editor.acceptSuggestionOnEnter` | `on` · `smart` · `off` | `on` | Accept with Enter as well as Tab. `smart` = only when it changes text; `off` = Tab only |
| `editor.parameterHints.enabled` | boolean | `true` | Show parameter docs while typing a call |
| `editor.hover.enabled` | boolean | `true` | Show information on hover |

### Minimap

| Key | Type | Default | Description |
|---|---|---|---|
| `editor.minimap.enabled` | boolean | `true` | Show the minimap |
| `editor.minimap.renderCharacters` | boolean | `true` | Real characters instead of color blocks |
| `editor.minimap.side` | `right` · `left` | `right` | Which side it's on |
| `editor.minimap.showSlider` | `always` · `mouseover` | `mouseover` | When the slider shows |

## Files

| Key | Type | Default | Description |
|---|---|---|---|
| `files.exclude` | map of glob → boolean | `{ "**/.git": true }` | Hide matching files and folders from the Explorer and Search. Untick `**/.git` to show it. User and Workspace maps merge |

## Preview

| Key | Type | Default | Description |
|---|---|---|---|
| `vre.preview.autoRun` | boolean | `true` | Rerun the live preview when files change |
| `vre.settings.root` | string | `""` | Project folder served as `/`. `/src` makes `src/index.html` available as `/index.html`. Alias: `liveServer.settings.root` |
| `vre.settings.Wait` | number 0–10000 | `100` | Milliseconds to wait after a change before rebuilding. Note the capital W. Alias: `liveServer.settings.Wait` |
| `vre.settings.ignoreFiles` | list of globs | `[]` | Changes to these don't reload the preview. The files are still served. Alias: `liveServer.settings.ignoreFiles` |

When a project uses a `liveServer.*` key, the Settings editor edits that key in place.

## Workbench

| Key | Type | Default | Description |
|---|---|---|---|
| `workbench.defaultLayout` | `code` · `agent` | `code` | **User only.** Layout for a workspace without a saved layout. `?layout=` overrides it for one launch |
| `workbench.compactDock` | boolean | `false` | Join docked groups into one rounded workspace with thin dividers |
| `workbench.tabs.connected` | boolean | `false` | Tabs that visually connect to the editor or tool beneath |
| `workbench.editorAssociations` | map of glob → viewer | `{}` | How files open. For example, `"*.svg": "default"` opens SVGs as text |
| `workbench.fileStatusBar` | boolean | `true` | Status bar under each editor (language, problems, cursor, Diff) |
| `workbench.statusBar.visible` | boolean | `true` | The main status bar. When hidden, notifications move into the ⚙ menu |
| `workbench.header.visible` | boolean | `true` | The menu header outside full screen. Always shown in full screen |
| `breadcrumbs.enabled` | boolean | `true` | File and symbol path above the editor |
| `breadcrumbs.symbolPath` | `on` · `off` | `on` | Show the function or class you're in after the file path |
| `diff.gitOnly` | boolean | `false` | Only compare against the last Git commit; hide the "since your last save" comparison |

## AI

All AI settings are **User only**. API keys are never stored in settings or in `settings.json`; they're saved to your Codevre account. See [Providers and API keys](providers-and-keys.md).

| Key | Type | Default | Description |
|---|---|---|---|
| `ai.provider` | `openrouter` · `anthropic` · `openai` · `gemini` · `xai` | `openrouter` | Which provider the Agent uses. Each needs its own key |
| `ai.openRouter.model` | string | `""` | OpenRouter model id. Empty uses the Default router, `openrouter/free` |
| `ai.anthropic.model` | string | `""` | Anthropic model id (`claude-…`) |
| `ai.openai.model` | string | `""` | OpenAI model id (`gpt-…`) |
| `ai.gemini.model` | string | `""` | Gemini model id (`gemini-…`) |
| `ai.xai.model` | string | `""` | xAI model id (`grok-…`) |
| `ai.monacopilot.enabled` | boolean | `false` | Inline code completions while you type |
| `ai.monacopilot.delay` | number 100–5000 | `800` | Milliseconds after you stop typing before asking for a completion. Lower feels faster but sends more requests |
| `ai.monacopilot.provider` | `chat` · `openrouter` · `anthropic` · `openai` · `gemini` · `xai` | `chat` | Provider for completions. `chat` = same as the Agent |
| `ai.monacopilot.model` | string | `""` | Completion-only model for that provider. Empty = the provider's chat model |

The model fields are the same ones shown in the Agent's composer; changing one changes the other.

## Other keys

- **Any Monaco option** can be set as `editor.<option>` (one level of nesting, such as `editor.minimap.side`), even if it isn't listed here.
- Keys the Settings editor doesn't know are shown under **Other** with their JSON value, so you can see and remove them.
