# Zed

A high-performance, open source code editor with a built-in Agent Panel, MCP support, and ACP-based external agents.

Schema: 1.0 · Data: ee5de863c30bdbe4fe7dd3e07c7e22ea9bf4ab2248dbc7c35cdbf60bc28be1db

## Configuration

### MCP

Status: supported

Configure 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.

- global: `~/.config/zed/settings.json` (json) — key: context_servers — macOS/Linux. On Windows: %APPDATA%/Zed/settings.json.
- project: `.zed/settings.json` (json) — key: context_servers
- `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>).
- transports: stdio, http
- auth: oauth, headers
- Tools: supported
- Prompts: supported
- Resources: unsupported — Official docs state Zed currently supports MCP's Tools and Prompts features.
- Roots: unsupported — Not listed among supported MCP features in official docs.
- Elicitation: unsupported — Docs welcome contributions for Elicitation support.
- Sampling: unsupported — Docs welcome contributions for Sampling support.
- 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.

Local and remote context servers
```json
{
  "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"
    }
  }
}

```

Source: https://zed.dev/docs/ai/mcp
Checked: 2026-07-12

### Skills

Status: supported

SKILL.md skill folders following the open Agent Skills standard, loaded autonomously from a catalog or invoked manually via slash command or @-mention.

- project: `.agents/skills/<name>/SKILL.md` (markdown) — Project-local skills, only loaded from trusted worktrees.
- global: `~/.agents/skills/<name>/SKILL.md` (markdown) — Global skills, available in every project.
- `name`: string (required) — Lowercase letters, numbers, and hyphens only; 1-64 chars; no leading/trailing/consecutive hyphens. Should match the folder name.
- `description`: string (required) — 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.
- invocation: /skill-name, @skill, automatic
- 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.

Manual-only deploy skill
```markdown
---
name: deploy
description: Deploy the current branch to production.
disable-model-invocation: true
---

## Instructions

Step-by-step instructions for the agent...

```

Source: https://zed.dev/docs/ai/skills
Checked: 2026-07-12

### Rules

Status: supported

Always-on instructions via AGENTS.md: a personal global file plus one project instruction file, with compatibility for .rules, .cursorrules, CLAUDE.md, and similar.

- global: `~/.config/zed/AGENTS.md` (markdown) — Personal instructions for every project. On Windows: %APPDATA%/Zed/AGENTS.md.
- project: `AGENTS.md` (markdown) — Project instructions at the worktree root. First matching compatibility file wins (see notes).
- project: `.rules` (text) — Zed-native compatibility instruction file; highest priority in the match order.
- 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.

Project AGENTS.md
```markdown
# Project instructions

- Run `cargo test` before committing.
- Follow the repository's error-handling conventions in src/errors.rs.

```

Source: https://zed.dev/docs/ai/instructions
Checked: 2026-07-12

### Hooks

Status: unsupported

Zed 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.
Checked: 2026-07-12

### Commands

Status: partial

Slash 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.

- project: `.agents/skills/<name>/SKILL.md` (markdown) — Skills double as slash commands; see the skills surface for the full format.
- global: `~/.agents/skills/<name>/SKILL.md` (markdown) — Global skills are also available as slash commands in every project.
- invocation: /skill-name, /compact, /create-skill
- 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.
Source: https://zed.dev/docs/ai/skills
Checked: 2026-07-12

### Settings

Status: supported

Agent behavior is configured in settings.json under the agent key: tool permissions, profiles, auto-compaction, feature-specific models, and model parameters.

- global: `~/.config/zed/settings.json` (json) — key: agent — macOS/Linux. On Windows: %APPDATA%/Zed/settings.json.
- project: `.zed/settings.json` (json) — key: agent — Project settings override user settings for this worktree.
- `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.
- 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>.

Auto-compaction and commit message instructions
```json
{
  "agent": {
    "auto_compact": {
      "enabled": true,
      "threshold": "90%"
    },
    "commit_message_instructions": "Use the Conventional Commits format: <type>(<scope>): <description>."
  }
}

```

Source: https://zed.dev/docs/ai/agent-settings
Checked: 2026-07-12

## Search, browser & identification

Not researched. Unknown does not mean unsupported.
