New to Claude Skills? Learn how to install them →

Claude Code's Diff Panel: Watching Changes as Claude Works

Claude Code's diff panel, added in v2.1.260, opens beside the conversation in fullscreen mode and updates live as Claude edits files, with a fallback to the older diff viewer.

September 6, 2026
Get Claude Skills
9 min read

Reviewing what an agent just did to your codebase used to mean either scrolling back through the conversation or running /diff and losing the conversation entirely while a full-screen viewer takes over. Claude Code v2.1.260, released 3 September 2026, adds a middle option: a diff panel that sits beside the conversation in fullscreen rendering and keeps itself current while Claude keeps working.

What the diff panel does

Run /diff in fullscreen rendering and, instead of taking over the screen, Claude Code opens a panel next to the conversation. The panel lists every changed file with its added and removed line counts, and shows each file's diff underneath the list. Claude Code refreshes it automatically every time Claude edits a file or runs a shell command that touches your working tree, so you watch the changes accumulate rather than checking in after the fact.

Close it by running /diff again, or by clicking the in its header.

What you need for it to open

Four things, all required:

  • Fullscreen rendering turned on
  • A git repository
  • A terminal at least 110 columns wide
  • Claude Code v2.1.260 or later

When any of these is missing, /diff opens the older diff viewer instead, or tells you directly why the panel couldn't open. There's no separate setting to force the panel on: it's simply what /diff does whenever the requirements are met.

It can open without you asking

Once your terminal is at least 144 columns wide, and you're on v2.1.260 or later in fullscreen rendering, the panel opens on its own the moment Claude starts editing files, no /diff required. That threshold is wider than the 110 columns the panel needs to open manually, so a terminal in the 110 to 143 column range shows the panel only when you ask for it.

The behaviour after that first time is sticky per session and beyond: once you've opened the panel yourself with /diff, later sessions open it automatically as soon as Claude edits a file, in any terminal wide enough to fit it. Close the panel and it stays closed, in that session and in later ones, until you run /diff again to bring it back.

Reading and using the panel

The panel isn't read-only chrome. While it's open you can:

Jump to a file. Click its row in the file list to see that file's diff. Scroll the panel itself with the mouse wheel; when the file list is too long to fit, scroll it specifically with Alt+Up/Alt+Down or Ctrl+Up/Ctrl+Down.

Ask Claude about specific lines. Select lines in the panel with your mouse, and Claude Code attaches that selection to your next prompt. A line count appears next to the input box until you send the message, so you can point at exactly the code you mean instead of describing its location in words.

Show what the panel hides by default. The file list skips test files and generated files outright, and collapses every change made before this session into a single summary line at the bottom. Click either of those count lines to expand it and see the detail.

Change what the panel compares against. Press Ctrl+X B to cycle through three comparisons: this session's changes only, your uncommitted changes as one combined list, and everything your branch has added since it split from the default branch. Claude Code remembers whichever you picked, separately for each project, so switching once doesn't mean switching again next time you open the panel there.

Rebinding the panel's actions

Every interaction above maps to a named action in Claude Code's keybindings reference, which you can rebind through keybindings.json. app:cycleDiffBase runs only while the panel is open; the rest are global, meaning they work from anywhere in the session:

ActionDefaultWhat it does
app:toggleReplTabUnboundOpen or close the diff panel, the same as running /diff
app:cycleDiffBaseCtrl+X BCycle the panel's comparison base: this session, uncommitted, then branch
app:diffFileListUpCtrl+Up, Meta+UpScroll the panel's file list up when it overflows
app:diffFileListDownCtrl+Down, Meta+DownScroll the panel's file list down when it overflows
app:toggleDiffNoiseFilterUnboundShow or hide test and generated files in the panel
app:toggleDiffPreSessionUnboundExpand or collapse the changes from before this session

Three of these ship with no default binding at all. If you find yourself typing /diff repeatedly to toggle the panel, or reaching for the mouse every time to expand the pre-session summary line, binding app:toggleReplTab and app:toggleDiffPreSession to keys you don't already use elsewhere is a genuine quality-of-life change rather than a cosmetic one. Our keybindings guide covers the mechanics of adding a binding, including chords and per-context scoping.

When it falls back: the diff viewer

Outside fullscreen rendering, or whenever the panel's requirements aren't met, /diff opens the diff viewer instead. This is the older, still-present behaviour: it takes the place of the prompt entirely until you close it, rather than sitting beside the conversation.

The viewer's Current view shows your uncommitted git changes, or, if you have none, what your branch adds on top of the default branch. Alongside Current, it also builds a separate turn view for each prompt after which Claude edited a file. Because those turn views come from Claude's own recorded file edits rather than from git directly, an edit Claude made through a shell command, rather than its file-editing tools, shows up only under Current, never under a specific turn.

Inside the viewer:

KeyAction
Left / RightMove between Current and the turn views
Up / DownSelect a file
EnterOpen the selected file's diff; scroll it with Up/Down or PageUp/PageDown
EscReturn from a file's diff to the list, or close the viewer from the list

These belong to a separate diff: action group, distinct from the panel's app: actions above, and rebind through the same keybindings reference:

ActionDefaultWhat it does
diff:dismissEscapeClose the viewer; from a file's detail view, returns to the list instead
diff:previousSourceLeftPrevious diff source (Current, or an earlier turn)
diff:nextSourceRightNext diff source
diff:previousFileUp, KPrevious file in the list; scrolls up one line in the detail view
diff:nextFileDown, JNext file in the list; scrolls down one line in the detail view
diff:viewDetailsEnterOpen the selected file's diff
diff:backUnboundGo back a step; Escape already covers this through diff:dismiss

The detail view also accepts the standard pager keys, PageUp/PageDown for a half-page, Shift+Space/Space for a full page, and G/Home and Shift+G/End to jump to the top or bottom, the same scroll bindings used elsewhere in Claude Code's transcript search.

Choosing between the panel, the viewer, and plain git

All three ways of looking at a change coexist, and each fits a different moment in a session:

Diff panelDiff viewergit diff in a separate terminal
Stays open while Claude worksYesNo, blocks the promptYes
Needs fullscreen renderingYesNoNo
Shows per-turn attributionNo, only comparison-base switchingYes, one view per promptNo
Select code to ask Claude about itYesNoNo
Works outside a git repositoryNoPartially (Current view needs git)No

If you're actively steering a long session and want to catch a change the moment it lands, the panel is the only one of the three built for that. If you specifically want to see what happened turn by turn, in the middle of a multi-step task where several prompts each touched different files, the diff viewer's turn views do something the panel doesn't attempt. And a plain git diff in a second terminal pane remains the simplest option whenever you're outside fullscreen rendering entirely and don't want Claude Code's own review surfaces at all.

Troubleshooting

/diff opens the viewer instead of the panel, and I'm sure I'm in fullscreen mode. Check your terminal width. The panel needs at least 110 columns; run /tui to confirm fullscreen is actually active, and widen your terminal if it's narrower than that.

The panel keeps opening on its own and I don't want it to. This only happens after you've opened it manually with /diff at least once. Run /diff again to close it; Claude Code remembers that it's closed, for this session and future ones, until you reopen it yourself.

My selection in the panel didn't reach Claude. The line count next to the input box confirms a selection is attached; if you don't see it, the selection likely didn't register, try reselecting with a clean mouse drag rather than a click, and confirm mouse reporting is enabled in your terminal, the same requirement covered in the fullscreen mode guide's mouse capture section.

A shell command's changes aren't showing up under a turn in the diff viewer. That's expected. The viewer's turn views are built from Claude's own file-editing tool calls, not from git. A change made by a shell command Claude ran only appears in the Current view, which reads directly from git.

I'm not sure which comparison the panel is currently using. Ctrl+X B cycles forward through the three options each time you press it; there's no indicator command to print the current one directly, so cycle through and watch which file set changes, or check the panel's own header if your terminal renders it.

I want a key to open the panel without running /diff, and it doesn't seem bound anywhere. It genuinely isn't, by default. app:toggleReplTab ships unbound, so add your own binding to keybindings.json in the Global context if you want a direct shortcut instead of typing the command.

Where this fits

The diff panel is a fullscreen-only feature, so it depends on everything covered in Claude Code's fullscreen mode guide: how to turn fullscreen on, the mouse capture trade-offs, and running it under tmux. For rebinding any of the keys mentioned here, see the keybindings guide. Claude Code's own interactive mode and fullscreen documentation are the primary references this article draws from. Browse install paths and settings for Claude Code at getclaudeskills.com/platforms/claude-code.

Verified 6 September 2026 directly against code.claude.com's interactive-mode and fullscreen documentation, both read in full, and the v2.1.260 changelog entry dated 3 September 2026.

Frequently asked questions