Redesigning inline chat around diffs
We rebuilt ⌘K to stream real diffs you can apply, edit, or reject — one hunk at a time.
The old ⌘K worked like most AI chat: you asked for a change, got a block of code, and played spot-the-difference against your file before pasting it in. It demoed well and reviewed badly. In 1.6 we rebuilt inline chat around a single idea: every response is a diff.
Code blocks lie
A pasted code block carries an implicit claim — “this replaces what you had” — without showing what actually changed. Users told us they were diffing AI output by eye, in their heads, dozens of times a day. That’s review work the tool should be doing.
A diff is honest by construction. It shows exactly what’s added, removed, and untouched, and it composes with everything developers already trust: hunk-level staging, undo, code review habits.
What changed
Now, when you press ⌘K and describe an edit, the response streams in as a live diff against your actual buffer, formatted by your own formatter. Each hunk gets its own controls: apply, reject, or edit-in-place before applying. Partial acceptance is a first-class flow, because “the first half is right” is the most common review outcome there is.
Streaming diffs required rethinking rendering — we reconcile the incoming edit against your file incrementally, so the diff is stable while it streams instead of reflowing on every token. That work later became the foundation for the agent’s multi-file review surface.
The numbers
After the redesign, ⌘K usage per active user roughly doubled, and the fraction of responses applied without modification rose from 48% to 71%. The interface didn’t make the model smarter; it made the model’s output verifiable. In this product category, verifiable is what trustworthy means.