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

# Use Haarness in your editor (ACP)

`haarness acp` lets an editor that supports the Agent Client Protocol (ACP) use Haarness as its
agent. You chat in the editor; Haarness does the work in your project with its own tools,
permissions and models.

## Set it up

Your editor starts `haarness acp` itself. Tell it the command `haarness` with the argument `acp`.

In Zed, add this to `settings.json`:

```json
{
  "agent_servers": {
    "Haarness": {
      "type": "custom",
      "command": "haarness",
      "args": ["acp"],
      "env": {}
    }
  }
}
```

Open your project, start a new thread with **Haarness** and send a prompt. The answer streams into
the editor.

If your editor cannot find `haarness`, use its full path, for example the output of
`which haarness`.

## Choose the model and agent

New editor chats use the project's default model and agent. To pick others, add flags to the
arguments:

```json
"args": ["acp", "--provider", "anthropic",
         "--model", "claude-sonnet-5-5", "--agent", "plan"]
```

Give the provider and the model separately. `haarness models` lists what you can use as
`provider/model`.

## Approvals

When the agent wants to do something your permission rules ask about, the editor shows the
request with these choices:

| Choice | Allows |
| --- | --- |
| Allow once | This call only |
| Allow while Haarness is running | Matching calls until the Haarness server stops |
| Reject | Nothing; the agent is told you refused |

Requests that may only be allowed once, such as an edit to Haarness's own settings, offer just
**Allow once** and **Reject**. For a website in your Chrome, the middle choice is
**Allow in this chat**. A shell command that runs a script shows the script's text, where
Haarness can be sure which file runs.

Requests from the subagents and workflows a prompt starts come to the editor too, titled with the
subagent's name, while that prompt runs.

The agent does not ask you multiple-choice questions in the editor; it decides and carries on.

A chat started from the editor is a Haarness chat, so its
[Review, Auto or Yolo](https://haarness.ai/docs/security/permissions.md#review-auto-or-yolo-how-much-does-a-chat-ask) setting
applies too. Switch it to Auto from the terminal UI or Desktop, and Auto's reviewer answers its
requests; only what the reviewer leaves to you reaches the editor, with its note in the title.
`haarness acp --yolo` approves the requests of every prompt you send from the editor, once each;
the requests that always need a person still come to you.

## Your editor chats are shared

The editor talks to the same server as Desktop, the terminal UI and `haarness run` for that
project. A chat you start in the editor is an ordinary Haarness chat. It:

- appears in Desktop's chat list, in `/sessions` in the terminal UI and in
  `haarness sessions list`, titled *ACP session*;
- keeps running if you close the editor;
- can be reopened from the editor later, with its history.

## What works

- Streamed answers and visible reasoning
- Tool calls with their progress, and approvals
- The agent's plan
- Images, PDFs, audio and video you attach, and files you add as context
- Stopping a turn from the editor
- MCP servers your editor provides (stdio, HTTP and SSE)

## Limits

- **One folder.** `haarness acp` serves the folder it starts in, or `--workspace PATH`. The editor
  must open that same folder; a chat for any other folder, or with extra folders, is refused.
- **MCP over stdio** needs an absolute command path in the editor's MCP settings.

## Related

- [Start a Haarness server](https://haarness.ai/docs/server/run-the-server.md)
- [Permissions](https://haarness.ai/docs/security/permissions.md)
