### Description
Related Discussions: #44499, #35742, #31851
Display cost multiplier for GitHub Copilot models in the model selectors
(Both in Chat Panel and Inline Assistant)
<img width="436" height="800" alt="image"
src="https://github.com/user-attachments/assets/c9ebd8fa-4d55-4be8-b3e1-f46dbf1f0145"
/>
### Some technical notes
Although this PR's primary intent is to show the cost multiplier for
GitHub Copilot models alone, I have included some necessary plumbing to
allow specifying costs for other providers in future. I have introduced
an enum called `LanguageModelCostInfo` for showing cost in different
ways for different models. Now, this enum is used in `LanguageModel`
trait to get the cost info.
For now to begin with, in `LanguageModelCostInfo`, I have specified two
ways of pricing: Request-based (1 Agent request - GitHub Copilot uses
this) and Token-based (1M Input tokens / 1M Output tokens). I had
initially thought about adding a `Free` type, especially for Ollama but
didn't do it after realizing that Ollama has paid plans. Right now, only
the Request-based pricing is implemented and used for Copilot models.
Feel free to suggest changes on how to improve this design better.
Release Notes:
- Show cost multiplier for GitHub Copilot models
---------
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
This PR removes the `cloud-thinking-effort` feature flag to ship the
thinking effort UI for the Zed provider.
Release Notes:
- Added support for controlling thinking effort levels with supported
models using the Zed provider.
It is possible, when the agent is streaming the tool call, that we will
get a permission request on an existing terminal and we need to render
that.
When Zed controls the terminal this won't happen, but when we are just
rendering the output, it can happen and we need to show it.
Release Notes:
- agent: Fix permission options not rendering on terminal commands
Fixes#49062
Updates `crates/agent_ui/src/inline_assistant.rs` to ensure the
TerminalPanel correctly syncs the assistant_enabled
state on initialization. This fixes the issue where "Add to Agent
Thread" was missing in worktree-less windows.
## Video:
[Screencast from 2026-02-13
10-31-43.webm](https://github.com/user-attachments/assets/bee0df67-0ecf-460c-8123-a72c4790c719)
## Release Notes
- Fixed an issue where "Add to Agent Thread" was missing from the
terminal context menu in windows without open folders.
Changes the AcpThreadHistory behavior to only load the full paginated
list if we are in the history view, and only reloads the first page
otherwise. And it also updates the first page in way fewer cases to
reduce load on the agents.
Release Notes:
- N/A
This PR uses the recently introduced `CircularProgress` component to
display context window use information. It creates more space for the
message editor controls as well as simplifies the UI a little bit.
Through a tooltip, we communicate the same things we communicated before
(and more, actually, because rules use will be displayed there, too).
Note that this doesn't touch the display of split token use (for models
like GPT and whatnot).
<img width="500" height="484" alt="Screenshot 2026-02-13 at 6 16@2x"
src="https://github.com/user-attachments/assets/831cdfbf-fddd-4a11-8ac6-e9a25609aae9"
/>
Release Notes:
- Agent: Simplified context window use display by using a circular
progress component.
This PR #47407 broke thinking models for non-zed providers (Nightly
only) because we set `thinking_allowed` to `thinking_enabled`
(previously `true`)
[here](https://github.com/zed-industries/zed/blob/b671c8cdc5a73d49d158a84f386f8fecbfbae65a/crates/agent/src/thread.rs#L2400).
The value of `thinking_enabled` eventually comes from the
`LanguageModel::supports_thinking` function, which returns `false` for
all models except the ones coming from Zed.
This PR implements `thinking_enabled` for other providers.
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- N/A
When the multi-workspace thread restoration feature serializes the
active thread's session ID, it includes empty threads that were never
persisted to the database (because `NativeAgent::save_thread` skips
empty threads). On restart, `AgentPanel::load()` tries to restore this
thread by calling `load_agent_thread()`, which queries the SQLite DB.
Since the empty thread was never saved, the query returns `None`, which
becomes the error: "no thread found with ID: SessionId(...)". This shows
as "Error Loading Zed Agent" / "Failed to Launch" in the UI.
**Fix:**
Before attempting to restore a serialized thread on panel load, query
the DB to verify the thread actually exists. If it doesn't, log an error
and skip restoration (the panel falls back to creating a new thread as
normal).
Closes AI-19
Release Notes:
- Fixed an "Error Loading Zed Agent" error that could appear when
opening a workspace where the previous agent thread was empty.
Closes #ISSUE
Before you mark this PR as ready for review, make sure that you have:
- [x] Added a solid test coverage and/or screenshots from doing manual
testing
- [x] Done a self-review taking into account security and performance
aspects
- [x] Aligned any UI changes with the [UI
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
Release Notes:
- Fixed an issue where no error was shown when an LLM request exceeded
the maximum tokens supported by the model
Remove GPT-4o, GPT-4.1, GPT-4.1-mini, and o4-mini from BYOK model
options in Zed before OpenAI retires these models.
These models are being retired by OpenAI (ChatGPT workspace support ends
April 3, 2026), so they have been removed from the available models list
in Zed's BYOK provider.
Closes AI-4
Release Notes:
- Removed deprecated GPT-4o, GPT-4.1, GPT-4.1-mini, and o4-mini models
from OpenAI BYOK provider
If you have Zed open and the sidebar open, don't show a notification
when a thread finishes.
Closes AI-18
(No release notes because multi-agent is still feature-flagged.)
Release Notes:
- N/A
Remove the `AgentsPanel` (from the `agent_ui_v2` crate) and the utility
pane infrastructure from the codebase.
The Agents Panel was a separate panel gated behind the `agent-v2`
feature flag that was redundant with the existing Agent Panel. Utility
panes were a layout concept (secondary panes next to the editor,
separate from dock panels) whose only consumer was `AgentThreadPane` in
the Agents Panel.
### Changes
- Deleted the entire `agent_ui_v2` crate (`agents_panel.rs`,
`agent_thread_pane.rs`)
- Deleted `workspace/src/utility_pane.rs`
- Removed `UtilityPane`, `UtilityPaneHandle`, `UtilityPanePosition`,
`MinimizePane`, `ClosePane` from `workspace/src/dock.rs`
- Removed all utility pane fields, methods, and render blocks from
`workspace.rs`
- Removed all aside toggle code from `pane.rs` and `pane_group.rs`
- Removed `agents_panel_dock` setting from agent settings and
`default.json`
- Removed all `agent_ui_v2` references from `main.rs`, `zed.rs`, and
Cargo.toml files
- Cleaned up test code in `tool_permissions.rs` and `agent_ui.rs`
Closes AI-17
(No release notes because this was all feature-flagged.)
Release Notes:
- N/A
This PR actually fixes two issues:
- the thread title being overridden even after it's been manually
edited; as you go and come back from the thread history view, the edited
title would get swapped for the auto-summarized one
- the parent thread title sometimes displaying the title of a subagent
thread; this would also override the manual edit
- - -
- [x] Tests
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- Agent: Fixed thread titles being overridden even when manually edited.
---------
Co-authored-by: Bennet Bo Fenner <bennetbo@gmx.de>
When users have the `multi-workspace` feature flag enabled (agent-v2),
the default dock position for the agent panel is changed from right to
left.
This adds a `update_default_settings` method to `SettingsStore` that
allows mutating defaults in place, then observes the
`AgentV2FeatureFlag` to update the agent dock default accordingly.
Because this modifies the defaults layer, user-configured dock positions
still take precedence.
Closes AI-15
(No release notes because multi-agent is feature-flagged.)
Release Notes:
- N/A
Just some relatively small UI adjustments, like adding the forward arrow
to make it clearer there's a hierarchy between the parent thread and the
subagent thread, and a check icon to comunicate the subagent thread is
done.
<img width="500" height="612" alt="Screenshot 2026-02-12 at 11 47@2x"
src="https://github.com/user-attachments/assets/d49319b5-9c19-435a-b5c7-424060fa0629"
/>
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
This PR makes the remote projects a bit more consistent with other modal
dialogs by adding a footer to better expose the "open" and "open in new
window" options.
<img width="550" height="888" alt="Screenshot 2026-02-12 at 9 53@2x"
src="https://github.com/user-attachments/assets/1d7a67c4-fc69-40db-8dc4-8099bde4ebd7"
/>
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
## Changes
- Hide `assistant` namespace when `agent.enabled = false`
- Added test coverage for assistant command visibility
## Testing
- Verified manually that commands are hidden/shown dynamically
- Added test assertions in
[test_agent_command_palette_visibility](cci:1://file:///media/omchillure/Projects/zed-oss/zed/crates/agent_ui/src/agent_ui.rs:525:4-657:5)
- Test passes: `cargo test -p agent_ui
test_agent_command_palette_visibility`
## Video :
[Screencast from 2026-02-11
21-01-30.webm](https://github.com/user-attachments/assets/bbdb3e44-4ba9-4def-ad05-74e412bc5dba)
## Release Notes:
- Fixed assistant commands (Copy Code, Insert Into Editor, etc.)
remaining visible in the command palette when the agent is disabled in
settings.
Release Notes:
- Swapped the default value for `agent.single_file_review` to `false`.
Agent diffs will no longer override the git diff in your buffer. You can
still review the agent's changes via the action log review button, or by
flipping this setting back to `true`
Closes#48857
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- Fixed an issue where some ACP agents would not be loading correctly
when unauthenticated
---------
Co-authored-by: cameron <cameron.studdstreet@gmail.com>
Fixes a regression that was introduced by the thread view refactor
(Nightly only).
Also fixed another minor focus issue: Dropping files into the agent
panel would not focus the message editor.
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
- Fix panics caused by reusing cached matches for the wrong side
- Highlight matches on the side that was searched only
- Clear matches in non-searched editor when initiating a new search
Release Notes:
- N/A
---------
Co-authored-by: Eric <eric@zed.dev>
Co-authored-by: Jakub <jakub@zed.dev>
I think we may want to revisit in the future which history sessions we
show, but given the current setup and behavior, I think it makes sense
to only use the cwd if it matches in the worktrees to avoid issues with
reading and editing files outside of there.
- [x] Tests or screenshots needed?
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
With #47768, all image pills automatically got snapped to the end of the
prompt message. This behavior is unexpected as other pills (`@symbol`,
`@thread` et al) respect the cursor position.
Closes#48731.
- [ ] Tests or screenshots needed?
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- Insert images at cursor position in the Agent Panel
This PR adds some design refinements to the thinking effort selector (to
be generally rolled out soon):
- Improved split button UI styles and consistency with other dropdowns
in the message editor
- Stopped rendering the effort selector if thinking is turned off
- Added a keybinding to trigger the effort menu
- Added a keybinding to cycle through effort options
<img width="500" height="380" alt="Screenshot 2026-02-09 at 10 18@2x"
src="https://github.com/user-attachments/assets/48d5b65c-7256-4ceb-aab2-35869f8fbf4a"
/>
---
- [x] Code Reviewed
- [x] Manual QA
Release Notes:
- N/A
The multi workspace refactor **completely** broke the Vim mode, saving
is not possible, and various other actions. This PR fixes this
- [X] Code Reviewed
- [X] Manual QA
Release Notes:
- N/A
It's happeningggggg
Release Notes:
- Changed the Agent Panel so that the Active Thread is restored on
restart.
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
Co-authored-by: Anthony Eid <anthony@zed.dev>
Co-authored-by: Danilo Leal <67129314+danilo-leal@users.noreply.github.com>
Co-authored-by: Richard Feldman <richard@zed.dev>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>
MCP tool names can contain colons (e.g. `mcp:server:tool`), which broke
the `splitn(3, ':')` parsing of always-allow/always-deny pattern option
IDs. This switches to newline (`\n`) as the delimiter between tool name
and pattern, since newlines cannot appear in either component.
## Changes
- **Option ID format**: Changed from
`always_allow_pattern:{tool}:{pattern}` to
`always_allow_pattern:{tool}\n{pattern}`
- **Response parsing**: Replaced `splitn(3, ':')` with `strip_prefix` +
`split_once('\n')`
- **Error logging**: Added `log::error!` when pattern parsing fails
(previously silent)
- **Tests**: Updated test assertions in `agent` and `agent_ui` crates
No release notes because granular tool permissions are still
feature-flagged.
Release Notes:
- N/A
This PR updates the model selector to highlight the latest models that
are available through the Zed provider:
<img width="388" height="477" alt="Screenshot 2026-02-06 at 1 46 41 PM"
src="https://github.com/user-attachments/assets/70760399-ecf6-46e3-80a7-cb998216c192"
/>
Closes CLO-205.
Release Notes:
- Added a "Latest" indicator to highlight the latest models available
through the Zed provider.
This PR renames the `cloud-thinking-toggle` feature flag to
`cloud-thinking-effort`.
This feature flag has expanded slightly in scope, so we want the name to
be more representative of what it gates.
Release Notes:
- N/A
Co-authored-by: Tom Houlé <tom@tomhoule.com>
This PR extends error telemetry coverage in the agent panel, building on
#46836 which added telemetry for thread errors.
`"Agent Panel Error Shown"` (extended)
Now also fires for:
- **Load errors** - when an agent fails to start
- **Configuration errors** - when LLM provider setup is incomplete
`"Agent Token Limit Warning"` (new event)
Fires when a thread approaches or exceeds its token/context limit. This
is tracked separately from errors because it's an informational warning,
not a failure.
## Implementation Notes
- All telemetry fires **once per error occurrence**, not on every render
- Load error telemetry fires in `handle_load_error()` when the error is
first received
- Token limit telemetry uses a flag to track state transitions (Normal →
Warning → Exceeded)
- Configuration error telemetry tracks the last emitted error kind to
avoid duplicates
Release Notes:
- N/A *or* Added/Fixed/Improved ...
---------
Co-authored-by: Michael Benfield <mbenfield@zed.dev>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This PR removes the `fn name()` default method from the `AgentTool`
trait (which just returned `Self::NAME`) and replaces all call sites
with direct use of the `NAME` associated constant. This lets us use it
as a single source of truth in macros that want to access it at compile
time.
This PR also replaces hardcoded tool name string literals throughout the
codebase with the corresponding `NAME` constants, so tool name
references stay in sync if a tool is renamed.
Intentionally not changed:
- **Display strings** like `"Thinking"` and `"Subagent"` (user-facing UI
labels)
- **Serde attributes** like `#[serde(rename = "thinking")]` (wire
format)
- **The test assertion** `assert_eq!(SubagentTool::NAME, "subagent")`
(replacing the literal would make it tautological)
- **MCP server names** like `"mcp:srv:terminal"` (not tool identifiers)
Release Notes:
- N/A