On this page
Fix common problems
Start with these two commands. Most problems show up in one of them.
haarness doctor # version, bundled tools and where your data is
haarness logs --tail 50 # the end of the newest log filehaarness logs without --tail lists the log files and their folder. haarness --update installs
the latest release (the terminal UI's home screen says when one is out); the haarness that comes
with Haarness Desktop updates with Desktop instead.
Get more detail in the logs
haarness --log-level debug run "…"Logs are always written to the log folder. --print-logs also prints them to the terminal. In
the terminal UI that garbles the screen, so send them to a file:
haarness --log-level debug --print-logs 2>/tmp/haarness.logTo make the Haarness servers and apps that are already running log more, without restarting them:
haarness logs level debug # for 30 minutes; --for 2h, or --until-stopped
haarness logs level stop # back to normalIn Desktop, this is Detailed logging in Settings → General; in the terminal UI,
/logs detail.
Send your logs with a bug report
haarness logs exportThis packs the log files into haarness-logs-<time>.zip in the current folder, with tokens,
passwords, keys and other known secret shapes replaced by [redacted]. Text you typed or a tool
printed can still contain a secret, and paths and host names stay, so look through it before you
send it. In Desktop, use Settings → General → Diagnostics → Export logs… or
Help → Export logs…; in the terminal UI, /logs export.
The model I picked is rejected
haarness models # the models you can use right now
haarness models openai # one provider
haarness providers # which providers are connectedHaarness asks each connected provider which models your credentials can use. If the provider is
missing from haarness providers or not connected, sign in with haarness auth login <provider>;
see Connect a provider. With a ChatGPT sign-in, a model your plan
does not include is refused before the request, and the message lists the ones you can use.
haarness run uses the wrong model
Without -m, haarness run starts a new chat on your default model: the model in your
configuration, or else one from a provider you
connected. --continue and --thread keep the chat's own model. Pass -m provider/model to
choose; haarness models lists the names.
A request to the provider failed
The error in the chat names the provider and gives its own message, not just a status code. It
usually says what is wrong: an expired key, a usage limit, or a model you cannot use. A provider
that cannot be reached is named with its address. Check the connection with
haarness providers, and connect it again if the key was refused.
The agent cannot use a tool
In the terminal UI, /tools lists every tool and whether it is on. A tool can be turned off in
tool_availability in your configuration, or removed for one
agent with --tool name=false. A permission rule set to
deny also blocks it; see Permissions.
A turn seems stuck
- It may be waiting for your approval. Look for a permission prompt in the chat.
- In Auto, it may show Reviewing… while a reviewer model checks a request. If the reviewer has not decided within 60 seconds, the request comes to you instead.
haarness runstopped with "nobody can approve that in this run". In a script or CI there is nobody to answer, so the request was refused. Allow what it needs in your permission rules, or pass--yolo. See Run a prompt from a script or CI.- To stop it, type
/cancel, or pressEsctwice.Ctrl+Cclears your draft first, then stops the turn. - For helpers the agent started,
/taskslists them and opens their chats.
A tool call says "Stopped by Auto's reviewer"
In a chat in Auto, a reviewer model refused that request and told the agent why. Nothing ran. If
you want it done, switch the chat to Review (Ctrl+Y in the terminal UI) and ask the agent to try
again; this time the request comes to you. To stop the reviewer refusing that kind of request, say
what is fine in your settings.
I closed the terminal. Is my turn still running?
Yes. Closing the terminal UI does not stop a turn; it keeps running on the Haarness server for
that folder. Open the folder again with haarness --continue to see it. If you quit with
Ctrl+D or /exit, the terminal UI printed the exact command to reopen that chat.
If the server stops while the terminal UI that started it is still open, the terminal UI starts it again by itself, and the status line says server stopped · restarting it.
To stop everything in that folder, run:
haarness serve --stopThis also ends any turn or workflow that is still running.
After a crash
Your chats are kept. Haarness does not re-run commands or file edits that were in progress; they
are marked as interrupted. A workflow that was running is marked interrupted, and
haarness workflow resume <run-id> starts it again from the beginning. A goal that was active
comes back paused.
A language server or formatter is missing
The chat carries on without it. /status in the terminal UI shows each language server and
formatter, and which ones are missing. Install the program, or turn it off in your
configuration.
A project's settings cause the problem
Start without them:
haarness --disable-project-configThis ignores the project's settings, instructions, commands, agents, skills, MCP servers, workflows, plugins and extensions, and keeps yours.
Chrome does not connect
haarness browser status # is Chrome set up, and which projects does it reach?
haarness browser setup # set it up again- The Haarness button in Chrome says Not set up. Run
haarness browser setupagain, then check that Haarness is on atchrome://extensionsand Developer mode is still on. - Chrome is connected, but the agent says it is not. The project's Haarness server may be
older than the extension. When its work has finished, run
haarness serve --stopin that project and open it again. - A work or school Chrome may block it by policy: see
chrome://policy. - Chrome from Flatpak or Snap cannot start Haarness;
haarness browser statussays so. - A project on another computer cannot use your Chrome yet.
More causes and fixes are in Use your Chrome.
Where Haarness keeps its files
| What | Default folder | Change it with |
|---|---|---|
Settings (haarness.json, the terminal UI's config.toml), agents, commands, skills, workflows |
~/.config/haarness/ |
XDG_CONFIG_HOME |
| Chats, credentials, logs | ~/.local/share/haarness/ |
XDG_DATA_HOME |
| Caches and running servers | ~/.cache/haarness/ |
XDG_CACHE_HOME |
| Haarness for Chrome: its helper and the extension folder you load | ~/.local/share/haarness/browser/chrome/ |
XDG_DATA_HOME |
These defaults apply on macOS and Windows too, with a few exceptions. On macOS, these still live
in ~/Library/Application Support/dev.haarness.haarness/:
- schedules and their logs
- saved output of long commands
- Canvas preview versions from Desktop
On Windows, the same things live in %APPDATA%\haarness\haarness\ and
%LOCALAPPDATA%\haarness\haarness\.
Set HAARNESS_HOME to an absolute folder to move all of it, exceptions included, under one place:
config/, data/, cache/ and state/ inside it. Your Haarness Cloud sign-in is kept in
~/.config/haarness-cloud/, or in config/account/ inside HAARNESS_HOME.
On macOS, terminal UI settings that an older version kept in
~/Library/Application Support/dev.haarness.haarness/config.toml still apply until
~/.config/haarness/config.toml sets them.