Releases

Keep up with the weekly Zed releases.

March 2026

0.229.0

Mar 25, 2026

macOS
Loading…
Loading…
Windows
Loading…
Loading…
Linux
Loading…
Loading…

This week's release includes BYOK support for the new 1M context window on Claude Opus and Sonnet, git panel improvements including a badge showing uncommitted change counts and file type icons, an action to align multiple cursors, pinch-to-zoom in the image viewer, and an easier way to unbind default key bindings.

Features

AI

  • Agent: Updated BYOK integration to support the new 1M context window for Claude Opus and Sonnet. (#51625)
  • Agent: Terminal tool permissions regexes can now match environment variables. Bare interpolations like $FOO are disallowed when permissions regexes are active for security. (#51689)
  • Agent: Streaming text in threads now displays more fluidly. (#51499)
  • Agent: Improved visibility of thinking blocks by making them auto-expanded while in progress. (#51525)
  • Agent: Added support for usage tracking when streaming responses from OpenAI providers. (#45812; thanks Oft3r)
  • Agent: API key input in the Add LLM provider modal is now masked. (#50379; thanks cppcoffee)
  • Agent: Updated the display of tokens for xAI models to reflect the input/output limits. (#48719; thanks anilpai)
  • Edit Prediction: Added an error indicator in the edit prediction menu when the free tier limit is exceeded. (#51447)

Git

  • Added a numeric badge to the git panel sidebar icon showing the count of uncommitted changes. Enable with git_panel.show_count_badge (off by default). (#49624; thanks IVainqueur)
  • Git panel now supports file type icons (like in the project panel) from icon theme extensions. Enable with git_panel.file_icons (off by default). Folder icons are on by default and can be toggled with git_panel.folder_icons. (#51000; thanks kickbelldev)
  • Project panel now colors folders containing deleted files. (#51553; thanks tidefield)
  • Improved latency of stage/unstage operations. (#47806; thanks marcocondrache)
  • Changed the git diff status to render + and - using the font instead of icons. (#51411)

Languages

  • C/C++: Added clangd readonly token modifier to semantic token rules to highlight constant variables as constants. (#49065; thanks ozacod)
  • C++: Recognize module interface files as C++ files. (#45968; thanks hokein)
  • TSX: Removed rainbow bracket colorization for angled brackets. (#51311; thanks jackkkonggg)

Vim / Helix

  • Vim: Repeat (.) now increments the recorded register when using numbered registers. (#50753; thanks feitreim)

Collaboration

  • Improved recovery of audio latency after CPU-intensive periods. (#51647)

Remote Development

  • Added remote hostname to title bar project picker tooltip. (#51616; thanks watsoncj)

Windows

  • Improved Python toolchain discovery under WSL environments. (#51749; thanks lingyaochu)
  • Improved compatibility with mounted VHDs. (#50974; thanks foxmsft)

Linux

  • Relaxed requirement for libstdc++.so on Linux distributions. (#51433)

Other

  • Added editor::AlignSelections action to align multiple cursors. (#44769; thanks tiagolobao)
  • Added support for unbinding key bindings from the default keymap. (#52047) You can now remove default bindings you don't want, without having to re-declare default bindings that use the same keys. For instance, to unbind tab from editor: accept edit prediction, you can put the following in your keymap.json:
    [
      {
        "context": "Editor && edit_prediction",
        "unbind": {
          "tab": "editor::AcceptEditPrediction"
        }
      }
    ]
    
    Deleting or editing default bindings in the keymap editor will now unbind the default bindings, rather than binding them to null/zed::NoAction.
  • Added editor::GoToPreviousSymbol and editor::GoToNextSymbol actions to navigate to previous and next outline symbols. Uses either the tree-sitter outline or the LSP-provided outline depending on configuration. (#50777; thanks nishanthkarthik)
  • Added hotkey and actions for toggling light and dark themes. Default: cmd-k cmd-shift-t on macOS, ctrl-k ctrl-shift-t on Linux/Windows. (#49027; thanks tommyming)
  • Image Viewer: Pinch-to-zoom now works for zooming in and out on macOS and Linux. (#47351; thanks MostlyKIGuess)
  • Added "formatter": "none" setting to explicitly disable the formatter. (#48991; thanks lingyaochu)
  • Added workspace::FocusCenterPane action to move focus to the most recent center pane from any dock. (#46059; thanks FloppyDisco)
  • Recent projects on external drives or network mounts are no longer removed from the project picker when temporarily disconnected. They're now preserved for 7 days. (#50829; thanks ojpro)
  • Added $ZED_LANGUAGE task variable that exposes the current buffer's language name. (#51614; thanks mvanhorn)
  • Improved editor::CopyFileLocation to include the full selected line range (e.g., src/main.rs:12-18) when multiple lines are selected. (#51328; thanks shashank-suresh)
  • Added scroll-to-top and scroll-to-bottom keybindings for markdown preview (gg/G in Vim mode, cmd-up/cmd-down on macOS, ctrl-home/ctrl-end on Linux/Windows). (#50460; thanks dremnik)
  • Added _ and newline characters as subword boundaries. (#50552)
  • Improved hover behavior for multi-line diagnostics to persist when hovering over whitespace. (#47471; thanks daydalek)
  • Added project_panel.scrollbar.horizontal_scroll setting to toggle horizontal scrolling in the project panel. (#51143; thanks k4yt3x)
  • Improved multibuffer runnables resolution performance. (#51299)
  • Added the missing ctrl-shift-g binding for editor::UndoSelection in JetBrains macOS bindings. (#51130; thanks zfz7)
  • Keymap Editor: Removed redundant parentheses when displaying keymap context. (#50906; thanks dongdong867)
  • Improved some Ayu Dark/Mirage theme terminal colors. (#51462; thanks tiwari91)
  • Improved wording within file deletion prompts in the project panel. (#43801; thanks AdamJedl)

Bug Fixes

  • Agent: Fixed cases where thread state wasn't saved before closing the thread. (#51744)
  • Agent: Fixed an issue in the agent panel where scrolling a selection out of view would cause the panel to close while zoomed. (#51806)
  • Agent: Fixed broken (failing on first message) xAI models over the Zed provider on profiles using the spawn_agent tool, including the default Ask and Write profiles. (#51835)
  • Agent: Fixed send failure for pasted file#line mention links. (#49786; thanks cppcoffee)
  • Agent: Fixed model dropdown resetting to "Default (recommended)" when opening a previous conversation from history. (#51587; thanks OmChillure)
  • Agent: Fixed echo cancellation not working on experimental audio pipeline. (#51673)
  • Copilot Chat: Fixed subagent requests being marked as user requests. (#52350)
  • DeepSeek: Fixed issue with tool calling (An assistant message with 'tool_calls' must be followed by tool messages responding to each 'tool_call_id'...). (#52199)
  • Debugger: Fixed debug session restart only working once when the adapter supports DAP restart requests. (#51247; thanks nelsoncampos-cloudwalk)
  • Debugger: Fixed debugger failing to start when offline if a debug adapter was previously downloaded. (#50928; thanks nihalxkumar)
  • Git UI: Fixed selecting previous item selecting a non-visible item if it's inside a collapsed directory. (#49289; thanks RemcoSmitsDev)
  • Git UI: Fixed a bug where deleting a remote branch from the branch picker would incorrectly remove the entire remote configuration. (#48338; thanks amtoaer)
  • GPUI: Fixed list height re-computation when the list width changes. (#51414; thanks feitreim)
  • gopls: Fixed semantic token support with gopls. (#51621; thanks feitreim)
  • gopls: Fixed version display showing raw JSON instead of readable version number. (#49835; thanks amtoaer)
  • LSP: Fixed restarting the LSP breaking semantic token highlighting. (#51452; thanks feitreim)
  • Which-Key: Fixed filter list for some Vim commands. (#51543; thanks feitreim)
  • Fixed "View Release Notes" in Preview/Stable opening the wrong release channel page due to build metadata in the URL. (#48570; thanks RubenFricke)
  • Fixed MoveToBeginningOfLine stopping at indentation in single-line editors like the Find bar instead of moving to column 0. (#50681; thanks virajbhartiya)
  • Fixed path:line:column navigation so non-ASCII columns land on the correct character. (#51238; thanks loadingalias)
  • Fixed shift-a in Helix select mode placing the cursor on the wrong line after selecting with x. (#50709; thanks SkandaBhat)
  • Fixed a deadlock that froze the entire app when opening a new window from a popup window or switching focus between multiple windows on macOS. (#51035; thanks Dnreikronos)
  • Fixed an issue where accepting an autocomplete suggestion with multiple cursors could result in duplicated or jumbled text in import statements. (#50320; thanks theonly1me)
  • Fixed an issue where the crease toggles in the gutter would sometimes show when interacting with a popover present over the editor gutter. (#51405)
  • Fixed an issue where using the SelectLargeSyntaxNode action with multiple cursors could reverse the selection direction for the last cursor. (#51752)
  • Fixed binary files (e.g., WAV) being misdetected as UTF-16 text, causing Zed to freeze. (#50890; thanks notJoon)
  • Fixed bracket colorization not working for content after folded regions and for functions with large bodies. (#51108; thanks notJoon)
  • Fixed bug that resurfaced dismissed Copilot edit predictions when moving the cursor around. (#40185; thanks timvermeulen)
  • Fixed closed projects re-opening erroneously. (#50961; thanks AmaanBilwar)
  • Fixed Cmd+key shortcuts being consumed by the IME on non-US keyboard layouts, preventing Zed keybindings and macOS system shortcuts from working with special characters. (#51394; thanks jamarju)
  • Fixed empty files not downloading from a remote project. (#51571; thanks AmaanBilwar)
  • Fixed highlighting of block quotes continued over multiple lines in markdown files. (#51465; thanks polyesterswing)
  • Fixed issues with tremendous audio latency in long-running collaboration calls. (#51315)
  • Fixed keymap editor showing phantom entries and stale defaults when deleting or overriding default keybindings. (#50699; thanks iam-liam)
  • Fixed language selector not selecting the first entry when matching a query. (#51581; thanks cppcoffee)
  • Fixed long diagnostic messages in the status bar pushing right-side buttons (terminal, agent, etc.) off screen. (#51031; thanks Dnreikronos)
  • Fixed markdown preview not re-rendering when edited by agent. (#50583; thanks dongdong867)
  • Fixed missing syntax highlighting in symbol search when using the ty language server. (#51355; thanks lingyaochu)
  • Fixed Ollama models with custom stop tokens generating infinitely by not overriding model defaults when no stop tokens are specified. (#48119; thanks littleKitchen)
  • Fixed project root name appearing in file paths while searching in file finder. (#51530; thanks CCXLV)
  • Fixed settings file being restored to multiple panes after restart. (#50842; thanks iam-liam)
  • Fixed subword motions in Helix mode not selecting traversed text. (#45760; thanks maxmalkin)
  • Fixed the "Show Edit Predictions For This Buffer" toggle being a no-op in unsaved buffers after switching the buffer's language. (#50845; thanks ayushk-1801)
  • Fixed the cursor offset in non-visual Helix selections. (#46311; thanks jrobsonchase)
  • Fixed hidden files not showing in remote project's open folder action. (#50846; thanks dibashthapa)
  • Fixed the outline filtering always selecting the last match. (#50594; thanks OmChillure)
  • Fixed trailing whitespace handling on text case changes. (#50523; thanks OmChillure)
  • Fixed Vim's dot repeat ignoring the recorded register. (#50753; thanks feitreim)
  • Fixed visual block shift-i jumping to the initial cursor position after scrolling with ctrl-d/ctrl-u in Vim mode. (#50822; thanks cppcoffee)
  • Fixed XF86 multimedia key names ("New", "Save", "Open") being shown as keybinding hints in menus instead of the actual keyboard shortcuts. (#50540; thanks Dnreikronos)
  • Fixed highlight tree view usability. (#51927)

Breaking Changes and Notices

Replaced the edit_prediction_conflict key context with edit_prediction && (showing_completions || in_leading_whitespace). The edit_prediction context is now available whenever a prediction is present, rather than being mutually exclusive with edit_prediction_conflict. This change will be migrated automatically, however, will be a breaking change if you previously depended on edit_prediction and edit_prediction_conflict being mutually exclusive.

Additionally, the default behavior now uses edit_prediction && showing_completions (without in_leading_whitespace), meaning tab will accept a completion rather than inserting a literal tab when the cursor is in leading whitespace and a prediction is present.

If you previously customized your edit prediction keybindings, you can likely simplify your keymap.json significantly using "unbind" - see the docs.