Zed is, hands down, the best-feeling editor I've used in years. It's fast in a way that makes every other Electron-based IDE feel like it's wading through syrup. Multi-buffer editing is genuinely great. The collaborative stuff works. When you're just typing code, Zed gets out of your way better than anything else on the market.
And I hate it, because it's still missing things that should be table stakes for a daily-driver IDE in 2026.
Three things that shouldn't be this annoying
1. Panels don't stay where you put them
If you run an AI coding agent in a side panel — Claude Code, Cursor's chat, whatever — and then open a file from the project tree, Zed happily shoves that file into the agent's pane, burying your conversation. There was no way to tell a pane "stay put, don't let new files land here."
So I added one. A pane lock: toggle it on, and that pane stops accepting new items.
pub fn is_locked(&self) -> bool {
self.is_locked
}
pub fn toggle_lock(&mut self, _window: &mut Window, cx: &mut Context<Pane>) {
self.is_locked = !self.is_locked;
cx.emit(Event::LockChanged);
}
Wired into the pane's context menu next to the existing pin/unpin entries. Now I can lock the pane running my agent, open files anywhere else in the project, and it never gets stolen.
2. Some shortcuts just won't move
I came from VS Code, where option-space (alt-space) opens suggestions. In Zed, that binding is hardcoded elsewhere and I couldn't get it to point at the completions action I wanted — no combination of keymap edits would take.
I didn't fix the remap. I gave up on remapping and added a second action bound to the key I wanted instead:
"alt-space": "editor::ShowImportCompletions",
/// Shows import completions for components.
ShowImportCompletions,
To be precise about what this is: it's not "I made the unmovable shortcut movable." ctrl-space still triggers Zed's normal ShowCompletions, untouched. alt-space now triggers a parallel action I added myself. If Zed's keymap system won't bend, you route around it instead of through it.
3. The extension ecosystem isn't there yet
I wanted a real Claude Code panel — not a terminal tab running claude, an actual dock panel: message history, slash commands, drag-and-drop file context, the works. Zed's extension API doesn't give you that level of native UI. Extensions are mostly language servers and themes; you can't ship a full custom panel through one.
So that panel doesn't exist as an extension. It's built directly into the fork — a dock panel registered right alongside the built-in Git and Debug panels:
let claude_code_panel =
ClaudeCodePanel::load(workspace_handle.clone(), cx.clone());
// ...
add_panel_when_ready(claude_code_panel, workspace_handle.clone(), cx.clone()),
Worth being honest about what this panel actually is: it's a thin UI shell over a claude CLI subprocess. It doesn't reimplement Claude Code, it just gives it a proper home inside the editor instead of a terminal tab. About 800 lines of Rust to get there — the point isn't the line count, it's that an extension couldn't have given me this at all.
The actual point: this is tractable now
A year or two ago, "just fork the editor and patch it yourself" was advice for people who already knew Rust and had a free weekend. I am not that person. I don't know Rust. I wrote zero of those lines by hand.
I used GPT-5.4, through OpenCode, to make every one of these changes — reading an unfamiliar ~1.5k-file Rust codebase, finding the right place to hook in, and getting it building. Worth separating two things here, because it's easy to conflate them: OpenCode running GPT-5.4 is the agent that wrote the patches. Claude Code is the separate CLI tool that the new panel above wraps. One AI agent built a UI for a different AI agent — not the cleanest sentence, but accurate.
That's the actual headline, more than any single feature: the cost of "stop complaining about your editor and fix it" used to be a barrier most developers couldn't clear. It isn't anymore. You don't need to know the codebase, or the language it's written in, to go in and change a default that's been bothering you for months.
Try it on one thing
You don't need to fork an entire IDE to test this. Pick the single shortcut, panel behavior, or default that annoys you most in whatever editor you use daily. Find where it's defined — a keymap file, a config struct, a single function — and point an agent at it with the specific behavior you want instead. Don't aim for a feature. Aim for the one thing you'd mutter about under your breath today.
If it works, you've just deleted a complaint you've been carrying around for free. If it doesn't, you've lost an hour, and the editor's no worse than when you started.
Top comments (0)