Zed
EditorZed Industries
A high-performance, open source code editor with a built-in Agent Panel, MCP support, and ACP-based external agents.
MCP
SupportedConfigure MCP servers (context servers) in settings.json under the context_servers key, or install them as Zed extensions. Supports local stdio and remote servers with OAuth.
Config files
| Path | Scope | Format | Key |
|---|---|---|---|
~/.config/zed/settings.jsonmacOS/Linux. On Windows: %APPDATA%/Zed/settings.json. | Global | json | context_servers |
.zed/settings.json | Project | json | context_servers |
Fields
| Field | Type | Description |
|---|---|---|
source | "custom" | "extension" | How the server is provided. Entries added via the UI set 'custom'; extension-provided servers use 'extension'. |
command | string | Command to start a local (stdio) server. |
args | string[] | Arguments passed to the command. |
env | record<string, string> | Environment variables for a local server. |
url | string | Endpoint URL for a remote server. |
headers | record<string, string> | HTTP headers for a remote server (e.g. Authorization: Bearer <token>). |
Capabilities
Examples
{
"context_servers": {
"local-mcp-server": {
"command": "some-command",
"args": ["arg-1", "arg-2"],
"env": {}
},
"remote-mcp-server": {
"url": "https://example.com/mcp",
"headers": { "Authorization": "Bearer <token>" }
},
"remote-mcp-server-with-oauth": {
"url": "https://mcp.example.com/mcp"
}
}
}- •MCP servers can also be installed as Zed extensions from the extension registry (Settings > AI > MCP Servers > Install from Extensions).
- •Remote servers without an Authorization header trigger the standard MCP OAuth flow.
- •Zed handles notifications/tools/list_changed and reloads a server's tool list at runtime without a restart.
- •Servers configured in Zed are forwarded to External Agents over the Agent Client Protocol (ACP).
- •Per-tool approval uses agent.tool_permissions with the key format mcp:<server>:<tool>; agent.tool_permissions.default is one of confirm, allow, or deny.
- •Custom agent profiles can scope which context servers and tools are enabled via enable_all_context_servers and per-server tool toggles.
Skills
SupportedSKILL.md skill folders following the open Agent Skills standard, loaded autonomously from a catalog or invoked manually via slash command or @-mention.
Config files
| Path | Scope | Format | Key |
|---|---|---|---|
.agents/skills/<name>/SKILL.mdProject-local skills, only loaded from trusted worktrees. | Project | markdown | — |
~/.agents/skills/<name>/SKILL.mdGlobal skills, available in every project. | Global | markdown | — |
Fields
| Field | Type | Description |
|---|---|---|
name* | string | Lowercase letters, numbers, and hyphens only; 1-64 chars; no leading/trailing/consecutive hyphens. Should match the folder name. |
description* | string | What the skill does and when to use it. Keep under 1024 bytes; longer descriptions load with a warning. |
disable-model-invocation | boolean | When true, hides the skill from the agent's catalog; it remains invocable via slash command or @-mention. |
Examples
---
name: deploy
description: Deploy the current branch to production.
disable-model-invocation: true
---
## Instructions
Step-by-step instructions for the agent...- •Skills replaced Zed's reusable Rules Library.
- •Flat layout only: skills must be direct children of the skills root; nested folders are not discovered.
- •Project-local skills only load from trusted worktrees; a project-local skill overrides a global skill with the same name.
- •Live reload: SKILL.md edits take effect immediately without restarting the session.
- •The total size of all skill names and descriptions is capped at 50KB for the catalog.
- •Skills can bundle scripts/, references/, and assets/ that the agent loads on demand.
- •Skills can be shared via self-contained zed://skill links and imported from GitHub .md URLs; a built-in /create-skill skill scaffolds new skills.
- •Invoking a user-created skill prompts for permission (same flow as tool permissions); built-in skills do not prompt.
Rules
SupportedAlways-on instructions via AGENTS.md: a personal global file plus one project instruction file, with compatibility for .rules, .cursorrules, CLAUDE.md, and similar.
Config files
| Path | Scope | Format | Key |
|---|---|---|---|
~/.config/zed/AGENTS.mdPersonal instructions for every project. On Windows: %APPDATA%/Zed/AGENTS.md. | Global | markdown | — |
AGENTS.mdProject instructions at the worktree root. First matching compatibility file wins (see notes). | Project | markdown | — |
.rulesZed-native compatibility instruction file; highest priority in the match order. | Project | text | — |
Examples
# Project instructions
- Run `cargo test` before committing.
- Follow the repository's error-handling conventions in src/errors.rs.- •Zed's Rules Library was replaced: reusable rules became Skills, always-on rules became Instructions (AGENTS.md).
- •For project instructions Zed uses the first matching file in this order: .rules, .cursorrules, .windsurfrules, .clinerules, .github/copilot-instructions.md, AGENT.md, AGENTS.md, CLAUDE.md, GEMINI.md.
- •Project instructions override personal AGENTS.md when they conflict.
- •Instructions apply to the Zed Agent; External Agents and Terminal Threads read their own native instruction files.
Hooks
Not supportedZed has no lifecycle hook system for the Agent Panel: no user-configurable scripts fire on agent events such as tool use, prompt submit, or session start/end.
- •Agent lifecycle hooks (custom commands, pre/post tool-use scripts) are open feature requests on the Zed GitHub repo (e.g. issues #57890, #52688) but are not shipped.
- •The unrelated create_worktree Task hook runs when Zed creates a linked git worktree for parallel agents; it is a workspace task hook, not an agent lifecycle hook.
Commands
PartialSlash commands in the Agent Panel invoke skills by name, plus the built-in /compact. There is no separate custom prompt-template command format; custom commands are authored as skills.
Config files
| Path | Scope | Format | Key |
|---|---|---|---|
.agents/skills/<name>/SKILL.mdSkills double as slash commands; see the skills surface for the full format. | Project | markdown | — |
~/.agents/skills/<name>/SKILL.mdGlobal skills are also available as slash commands in every project. | Global | markdown | — |
- •Typing / in the Agent Panel message editor lists installed skills; selecting one injects the skill's instructions as context.
- •/compact manually compacts the current Zed Agent thread.
- •/create-skill invokes the built-in skill-creation skill.
- •Legacy Text Threads have their own built-in context slash commands (/file, /fetch, /prompt, /now, /diagnostics, /symbols, /tab, /selection, /terminal, /default); these do not work in the modern Agent Panel. See https://zed.dev/docs/ai/text-threads.
- •User-defined prompt-template command files (e.g. a .zed/commands/ directory) are an open feature request, not a shipped feature.
Settings
SupportedAgent behavior is configured in settings.json under the agent key: tool permissions, profiles, auto-compaction, feature-specific models, and model parameters.
Config files
| Path | Scope | Format | Key |
|---|---|---|---|
~/.config/zed/settings.jsonmacOS/Linux. On Windows: %APPDATA%/Zed/settings.json. | Global | json | agent |
.zed/settings.jsonProject settings override user settings for this worktree. | Project | json | agent |
Fields
| Field | Type | Description |
|---|---|---|
tool_permissions.default | "confirm" | "allow" | "deny" | Default tool-approval behavior for the Zed Agent. confirm (default) prompts before every tool action. |
profiles | object | Named agent profiles that toggle built-in tools and context servers (e.g. enable_all_context_servers, per-server tools). |
auto_compact | { enabled: boolean, threshold: string | number } | Automatic thread compaction. Threshold is a percentage string ("90%"), a token count, or a negative remaining-token count. |
model_parameters | array | Temperature overrides per provider, model, or provider/model pair; matching entries are checked last to first. |
inline_assistant_model | object | Model override for the Inline Assistant. |
commit_message_model | object | Model override for Git commit message generation. |
thread_summary_model | object | Model override for thread summaries. |
subagent_model | object | Model override for subagents. |
commit_message_instructions | string | Instructions applied only to generated Git commit messages. |
Examples
{
"agent": {
"auto_compact": {
"enabled": true,
"threshold": "90%"
},
"commit_message_instructions": "Use the Conventional Commits format: <type>(<scope>): <description>."
}
}- •The Settings Editor (agent: open settings) exposes LLM providers, External Agents, and MCP servers; zed: open settings file opens the raw JSON.
- •MCP servers live in the same settings.json under the context_servers key (see the mcp surface).
- •In Zed v0.224.0+ tool approval is controlled by agent.tool_permissions.default; earlier versions used the agent.always_allow_tool_actions boolean (default false).
- •Per-tool permission rules support MCP tools with the key format mcp:<server>:<tool>.