On this page
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
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).
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 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 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
/namein 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 covers the file formats.
Connect an MCP server
- In MCP servers, click Add MCP server.
- Give it a Name and choose where it is Available in.
- Choose the Server type:
- Local command: an Executable such as
npxoruvx, 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.
- Local command: an Executable such as
- 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).
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 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.
- In Hooks, click Add hook.
- Pick the Event and the Scope: This project or All projects.
- For tool events, set the Matcher:
*for every tool, or names such asBash|Edit. The field suggests what the event can match, says Never runs when nothing could match, and is hidden for events that ignore it. - 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 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
- In Schedules, click Create schedule.
- Give it a Name and a Prompt, for example "Run the tests and summarise any failures".
- Choose the Frequency: Every day, Weekdays, Weekly, At an interval, Once or Custom cron, then the time.
- 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 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 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 <computer> 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.
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.
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: let agents work in your own Chrome
- Permissions: decide what Haarness may do without asking
- Configure Haarness: the settings files Desktop shares with the terminal UI and the CLI