> ## Documentation index
> Fetch the complete documentation index at: https://haarness.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Settings

Open settings with ⌘, on macOS or Ctrl+, elsewhere, with **Settings** at the bottom of the
sidebar, or by typing `/settings` in the message box. **Filter settings** at the top narrows the
list. You can also search for any single setting with ⌘K or Ctrl+K, which opens it and marks the
control.

| Group | Sections |
| --- | --- |
| Application | General, Browser, Keyboard shortcuts, Servers, Projects, Profiles |
| Intelligence | Providers, Models, Agents, Commands, Skills |
| Capabilities | Marketplace, Tools, MCP servers, Plugins, Extensions, Hooks, Schedules |
| Support | About |

Changes to the runtime, such as a new hook or MCP server, apply once the current task finishes.

## Change the theme and text size

In **General**:

- **Appearance**: **Light**, **Dark**, or **System** to follow your computer. System is the
  default.
- **Theme**: Haarness, Graphite, Ocean, Forest, Violet, Rose, Sand or High contrast. Every theme
  works in light and dark.
- **Chat text size** and **Terminal text size**. To scale the whole window, use
  **View → Zoom in** or **Zoom out**.

## Change the language

**General → Language** changes the interface language. English is the default. You can also type
`/language` in the message box, or `/language ja` to switch straight to Japanese. Haarness's
answers and your code are not translated.

## Change how chats behave

Also in **General**:

| Setting | What it does |
| --- | --- |
| **Messages sent while working** | **Steer** joins the next step; **Queue** waits until the work finishes. It applies to all projects; **Override for this project** gives this project its own |
| **Send message with** | **Enter**, or **Command / Control + Enter** |
| **Compact tool activity** | Keeps commands and tool output folded until you open them. On by default |
| **Thinking display** | **Compact** (one line that opens on click, the default), **Show** or **Hide** |
| **Wrap editor lines** | Wraps long lines in the file editor |
| **Option as Meta key** | macOS only: Option works as Meta in the terminal |

## Get notified

In **General**, **Task notifications** turns desktop notifications on or off. Below it:

- **Turn completion notifications**: **Only when unfocused** (the default), **Always** or
  **Never**.
- **Permission notifications**: when a request is waiting for your approval.
- **Question notifications**: when Haarness is waiting for your answer.

Permission and question notifications come only while Desktop is in the background. Click a
notification to open that chat, in whichever project or server it belongs to. Your system's
notification and Focus settings still decide whether a banner appears.

## Stop sharing usage statistics

**General → Share usage statistics** is on by default: Haarness sends Haarness Cloud a daily
summary of counts, such as chats, turns, tokens and the built-in models and tools you used. It
never contains prompts, answers, code, file names or paths. **See what's shared** shows the
summary exactly as it would be sent now. Turn the switch off to stop sharing.

The setting is saved in your global configuration on the computer that runs Haarness, so it
covers the terminal UI there too. If `HAARNESS_TELEMETRY` or `DO_NOT_TRACK` is set where Haarness
started, the switch is locked and says which one decides.
[What Haarness shares](https://haarness.ai/docs/cli/stats-and-insights.md#what-does-haarness-share-with-haarness-cloud)
has the details.

## Send logs when something goes wrong

**General → Diagnostics → Export logs…** saves this computer's Haarness logs as a zip, with known
secrets removed, and shows it in your file manager so you can attach it to a bug report. It is
also in **Help → Export logs…**, and `haarness logs export` does the same from a terminal
([Troubleshooting](https://haarness.ai/docs/cli/troubleshooting.md#send-your-logs-with-a-bug-report)).

Turn on **Detailed logging** first if you are about to reproduce a problem: it records more detail
for 30 minutes, then turns itself off.

## Change keyboard shortcuts

In **Keyboard shortcuts**, click a shortcut and press the keys you want.

| Action | macOS | Windows and Linux |
| --- | --- | --- |
| New chat | ⌘N | Ctrl+N |
| Settings | ⌘, | Ctrl+, |
| Universal search | ⌘K | Ctrl+K |
| File explorer | ⌘⇧E | Ctrl+Shift+E |
| Review changes | ⌘⇧D | Ctrl+Shift+D |
| Toggle terminal | ⌘J | Ctrl+J |
| Open browser | ⌘⇧B | Ctrl+Shift+B |
| Pick an element (in the browser) | ⌘⇧C | Ctrl+Shift+C |
| Side chat | ⌘⇧J | Ctrl+Shift+J |
| Next / previous agent, in the message box | ⌘. / ⌘⇧. | Ctrl+. / Ctrl+Shift+. |
| Stop response (not changeable) | ⌘. | Ctrl+. |
| Next / previous tab | Ctrl+Tab / Ctrl+Shift+Tab | Ctrl+Tab / Ctrl+Shift+Tab |
| Previous / next chat | ⌥↑ / ⌥↓ | Alt+↑ / Alt+↓ |
| Focus sidebar | Ctrl+Shift+L | Alt+Shift+L |
| Previous / next prompt | ⌘↑ / ⌘↓ | Ctrl+↑ / Ctrl+↓ |
| First prompt / jump to latest | ⌘⇧↑ / ⌘⇧↓ | Ctrl+Shift+↑ / Ctrl+Shift+↓ |

The prompt keys work in the open chat, and in the message box only while it is empty. While a reply
runs, ⌘. (Ctrl+.) stops it, even in the message box, so ⌘. switches agents only while nothing runs.

These are fixed: Shift+Enter for a new line, ⌘S or Ctrl+S to save a file, ⌘F or Ctrl+F to find,
⌘O or Ctrl+O to open a project, ⌘⇧N or Ctrl+Shift+N for a new window, ⌘⇧M to
[dictate](https://haarness.ai/docs/desktop/the-conversation.md#dictate-a-message-macos) on macOS, and Esc to close a
dialog or, in an empty message box, to stop a response.

**Show and hide Haarness from any app**, off by default, gives Haarness a system-wide shortcut
(⌥Space, or Alt+Space, unless you record another under **Global shortcut**). While it is on,
other apps no longer receive that key combination.

## Let agents use your Chrome

**Browser → Chrome** connects Haarness to your own Google Chrome, so agents can work there signed
in as you. These settings apply to every project on this computer.

- **Chrome** shows whether it is connected, such as **Connected · Google Chrome**,
  **Paused in Chrome** or **Not connected**. **Set up Chrome…** walks you through adding Haarness
  for Chrome; while a Chrome is connected the button reads **Manage…**.
- **Let agents use Chrome** turns it on or off for agents. If Chrome stays off while it is on, the
  group says why: **Agent browser control** at the top of the page is off, or this project's
  settings turn Chrome off (listed under **Restricted by this project’s settings**).
- **Browser for new agent tabs**: **Automatic** (the Haarness browser when the chat is open in
  Desktop, otherwise Chrome), **Haarness browser** or **Chrome**.
- **Chrome site permissions** sets **Browsing**, **Downloads**, **Uploads** and **Scripts** for
  each site, and a **Default** row for the rest. Every site asks first until you change it.

For a project on a remote server these rows are off: Chrome works with projects on this computer.
[Use your Chrome](https://haarness.ai/docs/desktop/use-your-chrome.md) covers setup, approvals and troubleshooting.

## Manage providers and models

**Providers** lists what is connected and how many models each one offers.

- **Connect a provider** opens the same dialog as on first run.
- **Reconnect** and **Disconnect** act on one provider.
- **Refresh models** reloads every model list.
- **Add custom provider** adds any OpenAI-, Anthropic- or Gemini-compatible endpoint.
- **Connect Haarness Router** points Haarness at a router you host.
- The Haarness Cloud row opens your **Haarness account**.

**Models** is a searchable list of the models your connected providers offer. **Show all** adds
the models of providers that are not connected.

## Create agents, commands and skills

- **Agents** are assistants with their own instructions, model and tools. Switch between them in
  the message box.
- **Commands** are saved prompts you run with `/name` in any chat.
- **Skills** are instructions and files an agent loads when a task calls for them.

Use **Create agent**, **Create command** or **Create skill** at the top of each section, and
choose **This project** or **All projects** under **Available in**. Editing a built-in or plugin
item saves your own version, which you can reset later. Items your organization ships in a shared
system folder carry a **System** tag; editing one also saves your own version.
[Agents, commands and skills](https://haarness.ai/docs/cli/agents-commands-skills.md) covers the file formats.

## Connect an MCP server

1. In **MCP servers**, click **Add MCP server**.
2. Give it a **Name** and choose where it is **Available in**.
3. Choose the **Server type**:
   - **Local command**: an **Executable** such as `npx` or `uvx`, its **Arguments** one per row,
     and any **Environment variables**.
   - **Remote HTTP**: the **Server URL**, any **Request headers**, and **OAuth**. Leave OAuth on
     **Auto-detect** unless you know the server needs it.
4. Save. If the server needs a sign-in, click **Authorize** on its row.

Arguments run in the order you list them, and a value with spaces stays one argument, so you do
not need shell quotes. Header and variable values stay hidden until you reveal them.

When a value looks like a secret, such as an API key, the form offers **Store in Keychain**
(**Store in Credential Manager** on Windows, **Store in keyring** on Linux): the secret is kept
in your system's password store and your settings hold only a reference to it
([more](https://haarness.ai/docs/cli/mcp-servers.md#keep-a-secret-in-the-system-keychain)).

A server that shows interactive pages in the chat has an **Interactive apps** switch on its row;
turn it off to show its tools as plain text. [MCP servers](https://haarness.ai/docs/cli/mcp-servers.md) has more.

## Run a command when something happens

Hooks run a command at a point in a chat, for example before a tool runs or when a reply
finishes.

1. In **Hooks**, click **Add hook**.
2. Pick the **Event** and the **Scope**: **This project** or **All projects**.
3. For tool events, set the **Matcher**: `*` for every tool, or names such as `Bash|Edit`. The
   field suggests what the event can match, says **Never runs** when nothing could match, and is
   hidden for events that ignore it.
4. Enter the **Command**, and change **Timeout (seconds)** if it needs longer than 60.

**Advanced** adds arguments, a shell, and **Run asynchronously**. Hooks from plugins are shown
read-only. [Hooks](https://haarness.ai/docs/cli/hooks.md) explains what each event sends your command and how it can
answer.

The events are `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `UserPromptSubmit`,
`PermissionRequest`, `Stop`, `StopFailure`, `PostCompact`, `SessionStart`, `SessionEnd`,
`TurnEnd`, `Notification`, `FileChanged` and `ConfigChange`.

## Run a prompt on a schedule

1. In **Schedules**, click **Create schedule**.
2. Give it a **Name** and a **Prompt**, for example "Run the tests and summarise any failures".
3. Choose the **Frequency**: **Every day**, **Weekdays**, **Weekly**, **At an interval**,
   **Once** or **Custom cron**, then the time.
4. Choose the **Agent** and the **Model**, and save.

A schedule **Runs even while Haarness is closed.** Each run's chat appears under **Scheduled** in
the sidebar. **Run now** starts one immediately. On macOS and Windows, times follow your
computer's timezone. On Linux you can pick a **Timezone**. You need a connected provider before
you can create a schedule. [Scheduled runs](https://haarness.ai/docs/cli/schedules.md) covers the same feature from the
CLI.

## Manage project memory

Type `/memory` in the message box, or search for **Manage memory**, to see what Haarness remembers
about the current project. You can add, edit or delete a memory, each with a name, description,
type and content.

- Memory is on by default and stored outside your repository, so nothing is committed.
- **Index limit** sets how many memory summaries go into the prompt: 1 to 1000, 200 by default.
- Turning **Enable project memory** off stops Haarness from reading and saving memories. It
  deletes nothing.

## Work on another machine

**Servers → Add remote server** connects Desktop to a Haarness server running elsewhere, with its
**Server URL** and, if it has one, a username and password. Use an HTTPS address, or reach the
server through an SSH tunnel. Switch between servers with **Switch server** in the title bar; the
one in use is marked **Current**. [Run the server](https://haarness.ai/docs/server/run-the-server.md) explains how to
start one.

On a remote server you can chat, review, edit files and use terminals as usual. Hooks, MCP
servers and other configuration are managed on that machine, not from Desktop.

### Open your other computers through Haarness Cloud

Signed in to Haarness, **Servers → Your computers** and the server switcher list your other
computers that run `haarness remote enable` with the same account. Click one to open it through
Haarness Cloud: Desktop opens its last project, or lists its projects to choose from. An
**on &lt;computer&gt;** tag in the title bar and the terminal says where prompts, tools and
terminals run. The browser and your Chrome are not available there. See
[Remote hosts](https://haarness.ai/docs/cloud/remote-hosts.md).

## Keep Haarness up to date

**About** shows your version and **Updates**: whether you are up to date and when Haarness last
checked, a new version as it downloads, and **Restart to update** once it is ready. **Check for
updates** asks right away. When a check or a download fails, About says why; Haarness tries again
by itself. **Download updates automatically** is on by default; turn it off to have Haarness only
tell you about a new version, in the sidebar, until you click it. See
[Updates](https://haarness.ai/docs/desktop/install.md#updates).

## Back up your setup

**Profiles** saves your configuration, agents, commands and skills into a portable profile that
you can restore later or on another machine. Profiles leave out chats, stored credentials and your
usage statistics choice.

## Next

- [Use your Chrome](https://haarness.ai/docs/desktop/use-your-chrome.md): let agents work in your own Chrome
- [Permissions](https://haarness.ai/docs/security/permissions.md): decide what Haarness may do without asking
- [Configure Haarness](https://haarness.ai/docs/cli/configuration.md): the settings files Desktop shares with the
  terminal UI and the CLI
