Extensions in Zed
Extend and customize Zed's functionality with extensions
Extensions in Zed
Extensions add functionality to Zed — languages, themes, icon themes, snippets, MCP servers, debuggers, and more. Browse and install them from the built-in Extension Gallery without leaving the editor.
Key aspects of Zed's extension system include:
- Discoverability: Search and install from the Extension Gallery
- Capabilities: Languages, themes, icons, snippets, MCP, debuggers
- Declarative installs:
auto_install_extensionsin settings - Capability controls: Restrict what extensions may download or execute
Types of Extensions
Zed supports several extension types that enhance different parts of the editor:
Languages
Language extensions add or deepen language support:
- Tree-sitter grammars and syntax highlighting
- Language server integration for completions, diagnostics, and go-to-definition
- Language-specific tooling hooks (formatters, tasks, and related config)
Themes
Theme extensions change the look of the UI and syntax colors:
- Editor and UI color schemes
- Syntax highlighting palettes
- Light and dark variants
Icon Themes
Icon theme extensions customize file and folder icons in the Project Panel and related views, so you can match your preferred visual language for file types.
Snippets
Snippet extensions provide reusable code templates you can expand while typing, often scoped to specific languages.
MCP Servers
Model Context Protocol (MCP) server extensions connect Zed’s Agent tooling to external tools and data sources — documentation, issue trackers, databases, and other services your AI workflows can call.
Debuggers
Debugger extensions integrate debug adapters so you can start, step through, and inspect debugging sessions for supported languages and runtimes.
The extension ecosystem grows quickly. Revisit the gallery periodically for new languages, themes, MCP servers, and debugger adapters.
Finding and Installing Extensions
Opening the Extension Gallery
Open the gallery with a shortcut, the menu, or the Command Palette:
| Action | macOS | Linux / Windows |
|---|---|---|
| Open Extension Gallery | ⌘ShiftX | CtrlShiftX |
-
Open Extensions
Press the shortcut above, or choose Zed → Extensions from the menu bar.
-
Browse or Search
Browse available extensions or use the search bar to find languages, themes, icon themes, snippets, MCP servers, or debuggers by name.
Extension Gallery -
View Details
Open an extension entry to read its description and capabilities before installing.
Installing Extensions
-
Find the Extension
Locate the extension you want in the gallery.
-
Install
Click Install. Zed downloads the extension and places it in your platform’s extensions directory.
-
Use It
Language servers and themes typically become available shortly after install. Select a new theme from the theme picker if needed; enable MCP or debugger features from their respective panels or settings.
Installation Locations
Extensions live under a platform-specific directory with two subfolders:
installed (extension source) and work (runtime files such as
downloaded language servers).
- macOS:
~/Library/Application Support/Zed/extensions - Linux:
~/.local/share/zed/extensions(or$XDG_DATA_HOME/zed/extensions) - Windows:
%LOCALAPPDATA%\Zed\extensions
List installed extension IDs by looking at the subfolders under
.../extensions/installed/ — those folder names are what
auto_install_extensions expects.
Managing Extensions
Viewing Installed Extensions
Open the Extension Gallery and switch to your installed extensions to see what is active, update available packages, or remove ones you no longer need.
Updating Extensions
When updates are available, install them from the gallery’s installed / updates views. Keep language and debugger extensions current so language servers and adapters stay compatible.
Disabling and Uninstalling
-
Find the Extension
Open the gallery and locate the extension under your installed list.
-
Disable or Uninstall
Disable temporarily if you want to keep it around, or uninstall to remove it entirely. Confirm when prompted.
Auto-install Extensions
Declare extensions that should always be installed (or never installed) in
settings.json with auto_install_extensions. Use the extension ID
(folder name), not the display title:
json{ "auto_install_extensions": { "html": true, "dockerfile": true, "docker-compose": false } }
Set a value to true to ensure installation, or false to prevent installation.
The default includes { "html": true }.
Configuring Extensions
Extension Settings
Many extensions expose settings you can change in the Settings Editor or directly in
settings.json:
-
Open Settings
Press ⌘, (macOS) or Ctrl, (Linux/Windows).
-
Find Extension Settings
Search for the language or feature name (for example a formatter, theme, or MCP-related option).
Extension Settings -
Adjust Settings
Change values in the UI or JSON. Language tooling is often configured under the
languagesobject in settings.
Example: Language Tooling in Settings
json{ "languages": { "Python": { "tab_size": 4, "formatter": "language_server", "format_on_save": "on" } } }
Extension Capabilities
Zed governs what extensions may do (run processes, download files, install npm packages)
through granted_extension_capabilities. You can tighten this — for example,
only allow downloads from github.com — or clear the list to grant nothing
(which will break many extensions). See the
capabilities documentation
for details.
Check an extension’s gallery page or repository README for the settings and IDs it expects.
Recommended Starting Points
Language and Tooling
Install language extensions for stacks you use that are not covered (or not fully covered) out of the box.
Pair them with formatters and linters configured in settings.json or via language servers.
Themes and Icon Themes
Browse theme and icon theme extensions to match your visual preferences. Apply themes from the theme / appearance settings after install.
MCP and AI Tooling
If you use the Agent Panel, MCP server extensions are a practical way to give the agent structured access to external systems. Install only servers you trust.
Debuggers
Install debugger extensions for languages where you want integrated breakpoints and stepping without leaving Zed.
Prefer official or well-maintained extensions. Review capability requirements before installing packages that download binaries or run local processes.
Creating Your Own Extensions
Extension Development
You can publish your own extensions for languages, themes, icon themes, snippets, MCP servers, and debuggers. Zed’s extension docs walk through scaffolding, local testing, and packaging for the gallery.
Getting Started
-
Read the Official Guide
Start with the Zed extensions documentation for developing languages, themes, icon themes, snippets, MCP servers, and debuggers.
-
Scaffold and Develop
Create an extension project following the docs for your extension type, then iterate locally against a Zed build that can load your extension from disk.
-
Test and Publish
Verify install paths, capabilities, and user-facing settings before publishing to the gallery.
For API details and type-specific guides, see https://zed.dev/docs/extensions.
Troubleshooting Extensions
Common Issues
- Extension not working: Reinstall, or check that required language servers downloaded into the
workdirectory - Auto-install ignored: Confirm you used the extension ID (folder name), not the display name
- Capability errors: Your
granted_extension_capabilitiesmay be too restrictive - Conflicts: Disable extensions one at a time to isolate problems
Logs and Diagnostics
Use the Command Palette to open developer / extension logs when diagnosing failures (search for “extension” or “log”). Check the Zed Discord or GitHub issues if a specific gallery extension misbehaves after an update.
Clearing a broken language server under the extension’s work folder and
reinstalling often fixes stuck downloads without removing your whole extensions tree.
What's Next?
With extensions in place, learn how to customize and master keyboard shortcuts — including base keymaps, the Keymap Editor, and essential dual-platform bindings.