agent-panel.md

  1# Agent Panel
  2
  3The Agent Panel provides you with a surface to interact with LLMs, enabling various types of tasks, such as generating code, asking questions about your codebase, and general inquiries like emails, documentation, and more.
  4
  5To open it, use the `agent: new thread` action in [the Command Palette](../getting-started.md#command-palette) or click the ✨ (sparkles) icon in the status bar.
  6
  7If you're using the Agent Panel for the first time, you need to have at least one LLM provider configured.
  8You can do that by:
  9
 101. [subscribing to our Pro plan](https://zed.dev/pricing), so you have access to our hosted models
 112. or by [bringing your own API keys](./llm-providers.md#use-your-own-keys) for your desired provider
 12
 13## Overview {#overview}
 14
 15After you've configured one or more LLM providers, type at the message editor and hit `enter` to submit your prompt.
 16If you need extra room to type, you can expand the message editor with {#kb agent::ExpandMessageEditor}.
 17
 18You should start to see the responses stream in with indications of [which tools](./tools.md) the model is using to fulfill your prompt.
 19
 20### Editing Messages {#editing-messages}
 21
 22Any message that you send to the AI is editable.
 23You can click on the card that contains your message and re-submit it with an adjusted prompt and/or new pieces of context.
 24
 25### Checkpoints {#checkpoints}
 26
 27Every time the AI performs an edit, you should see a "Restore Checkpoint" button to the top of your message, allowing you to return your code base to the state it was in prior to that message.
 28
 29The checkpoint button appears even if you interrupt the thread midway through an edit attempt, as this is likely a moment when you've identified that the agent is not heading in the right direction and you want to revert back.
 30
 31### Navigating History {#navigating-history}
 32
 33To quickly navigate through recently opened threads, use the {#kb agent::ToggleNavigationMenu} binding, when focused on the panel's editor, or click the menu icon button at the top left of the panel to open the dropdown that shows you the six most recent threads.
 34
 35The items in this menu function similarly to tabs, and closing them doesn’t delete the thread; instead, it simply removes them from the recent list.
 36
 37To view all historical conversations, reach for the `View All` option from within the same menu or via the {#kb agent::OpenHistory} binding.
 38
 39### Following the Agent {#following-the-agent}
 40
 41Zed is built with collaboration natively integrated.
 42This approach extends to collaboration with AI as well.
 43To follow the agent reading through your codebase and performing edits, click on the "crosshair" icon button at the bottom left of the panel.
 44
 45You can also do that with the keyboard by pressing the `cmd`/`ctrl` modifier with `enter` when submitting a message.
 46
 47### Get Notified {#get-notified}
 48
 49If you send a prompt to the Agent and then move elsewhere, thus putting Zed in the background, you can be notified of whether its response is finished either via:
 50
 51- a visual notification that appears in the top right of your screen
 52- or a sound notification
 53
 54Both notification methods can be used together or individually according to your preference.
 55
 56You can customize their behavior, including turning them off entirely, by using the `agent.notify_when_agent_waiting` and `agent.play_sound_when_agent_done` settings keys.
 57
 58### Reviewing Changes {#reviewing-changes}
 59
 60Once the agent has made changes to your project, the panel will surface which files, and how many of them, have been edited.
 61
 62To see which files specifically have been edited, expand the accordion bar that shows up right above the message editor or click the `Review Changes` button ({#kb agent::OpenAgentDiff}), which opens a multi-buffer tab with all changes.
 63
 64You're able to reject or accept each individual change hunk, or the whole set of changes made by the agent.
 65
 66Edit diffs also appear in individual buffers.
 67So, if your active tab had edits made by the AI, you'll see diffs with the same accept/reject controls as in the multi-buffer.
 68
 69## Adding Context {#adding-context}
 70
 71Although Zed's agent is very efficient at reading through your code base to autonomously pick up relevant files, directories, and other context, manually adding context is still encouraged as a way to speed up and improve the AI's response quality.
 72
 73If you have a tab open while using the Agent Panel, that tab appears as a suggested context in form of a dashed button.
 74You can also add other forms of context by either mentioning them with `@` or hitting the `+` icon button.
 75
 76You can even add previous threads as context by mentioning them with `@thread`, or by selecting the "New From Summary" option from the `+` menu to continue a longer conversation, keeping it within the context window.
 77
 78Pasting images as context is also supported by the Agent Panel.
 79
 80### Token Usage {#token-usage}
 81
 82Zed surfaces how many tokens you are consuming for your currently active thread in the panel's toolbar.
 83Depending on how many pieces of context you add, your token consumption can grow rapidly.
 84
 85With that in mind, once you get close to the model's context window, a banner appears below the message editor suggesting to start a new thread with the current one summarized and added as context.
 86You can also do this at any time with an ongoing thread via the "Agent Options" menu on the top right.
 87
 88## Changing Models {#changing-models}
 89
 90After you've configured your LLM providers—either via [a custom API key](./llm-providers.md#use-your-own-keys) or through [Zed's hosted models](./models.md)—you can switch between them by clicking on the model selector on the message editor or by using the {#kb agent::ToggleModelSelector} keybinding.
 91
 92## Using Tools {#using-tools}
 93
 94The new Agent Panel supports tool calling, which enables agentic editing.
 95Zed comes with [several built-in tools](./tools.md) that allow models to perform tasks such as searching through your codebase, editing files, running commands, and others.
 96
 97You can also extend the set of available tools via [MCP Servers](./mcp.md).
 98
 99### Profiles {#profiles}
100
101Profiles act as a way to group tools.
102Zed offers three built-in profiles and you can create as many custom ones as you want.
103
104#### Built-in Profiles {#built-in-profiles}
105
106- `Write`: A profile with tools to allow the LLM to write to your files and run terminal commands. This one essentially has all built-in tools turned on.
107- `Ask`: A profile with read-only tools. Best for asking questions about your code base without the concern of the agent making changes.
108- `Minimal`: A profile with no tools. Best for general conversations with the LLM where no knowledge of your code base is necessary.
109
110You can explore the exact tools enabled in each profile by clicking on the profile selector button > `Configure Profiles…` > the one you want to check out.
111
112#### Custom Profiles {#custom-profiles}
113
114You can create a custom profile via the `Configure Profiles…` option in the profile selector.
115From here, you can choose to `Add New Profile` or fork an existing one with a custom name and your preferred set of tools.
116
117You can also override built-in profiles.
118With a built-in profile selected, in the profile selector, navigate to `Configure Tools`, and select the tools you'd like.
119
120Zed will store this profile in your settings using the same profile name as the default you overrode.
121
122All custom profiles can be edited via the UI or by hand under the `assistant.profiles` key in your `settings.json` file.
123
124### Tool Approval
125
126Zed's Agent Panel surfaces the `agent.always_allow_tool_actions` setting that, if turned to `false`, will require you to give permission to any editing attempt as well as tool calls coming from MCP servers.
127
128You can change that by setting this key to `true` in either your `settings.json` or via the Agent Panel's settings view.
129
130### Model Support {#model-support}
131
132Tool calling needs to be individually supported by each model and model provider.
133Therefore, despite the presence of tools, some models may not have the ability to pick them up yet in Zed.
134You should see a "No tools" label if you select a model that falls into this case.
135
136We want to support all of them, though!
137We may prioritize which ones to focus on based on popularity and user feedback, so feel free to help and contribute to fast-track those that don't fit this bill.
138
139All [Zed's hosted models](./models.md) support tool calling out-of-the-box.
140
141### MCP Servers {#mcp-servers}
142
143Similarly to the built-in tools, some models may not support all tools included in a given MCP Server.
144Zed's UI will inform about this via a warning icon that appears close to the model selector.
145
146## Text Threads {#text-threads}
147
148["Text threads"](./text-threads.md) present your conversation with the LLM in a different format—as raw text.
149With text threads, you have full control over the conversation data.
150You can remove and edit responses from the LLM, swap roles, and include more context earlier in the conversation.
151
152For users who have been with us for some time, you'll notice that text threads are our original assistant panel—users love it for the control it offers.
153We do not plan to deprecate text threads, but it should be noted that if you want the AI to write to your code base autonomously, that's only available in the newer, and now default, "Threads".
154
155## Errors and Debugging {#errors-and-debugging}
156
157In case of any error or strange LLM response behavior, the best way to help the Zed team debug is by reaching for the `agent: open thread as markdown` action and attaching that data as part of your issue on GitHub.
158
159You can also open threads as Markdown by clicking on the file icon button, to the right of the thumbs down button, when focused on the panel's editor.
160
161## Feedback {#feedback}
162
163Every change we make to Zed's system prompt and tool set, needs to be backed by a thorough eval with good scores.
164
165Every time the LLM performs a weird change or investigates a certain topic in your code base incorrectly, it's an indication that there's an improvement opportunity.
166
167> Note that rating responses will send your data related to that response to Zed's servers.
168> See [AI Improvement](./ai-improvement.md) and [Privacy and Security](./privacy-and-security.md) for more information about Zed's approach to AI improvement, privacy, and security.
169> **_If you don't want data persisted on Zed's servers, don't rate_**. We will not collect data for improving our Agentic offering without you explicitly rating responses.
170
171The best way you can help influence the next change to Zed's system prompt and tools is by rating the LLM's response via the thumbs up/down buttons at the end of every response.
172In case of a thumbs down, a new text area will show up where you can add more specifics about what happened.
173
174You can provide feedback on the thread at any point after the agent responds, and multiple times within the same thread.