[BUG] Built-in /diff pane holds mod toasts, undocumented and contradicted by the screen map

Status Open
Reported on v2.1.287
Maintainer reply None cached
Activity 4 comments · opened Oct 2, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report
  • [x] I am using the latest version of Claude Code

What's Wrong?

The built-in /diff mod opens its pane with holdToasts: true (mods/diff/hooks/register.ts), so every $.ui.toast from another mod stays hidden until /diff closes. Nothing on the docs site says so.

The screen map shows the toast in the transcript's top-right corner beside the pane, as if both stay visible:

<img width="600" height="336" alt="Image" src="https://github.com/user-attachments/assets/c13fa28c-fddb-42d9-b2d0-fbb6051020ef" />

The overview's built-in mods table says cc-plugin-diff "takes over /diff and draws its pane", and holdToasts appears only as an option of $.ui.open. To show a toast while /diff is open, a mod has to hook ui.open for { id: 'diff' } and strip holdToasts:

on('ui.open', { id: 'diff' }, async (_$, e, next) => {
  const { holdToasts, ...pane } = e
  return next(pane)
})

What Should Happen?

Any of these:

  • /diff shows toasts from mods
  • the built-in mods table notes that /diff holds toasts
  • the toast docs or the screen map say that an open pane can hold toasts

Steps to Reproduce

  1. Load a mod that calls $.ui.toast('hello', { timeoutMs: 60000 }) on a timer.
  2. Run /diff to open the pane.
  3. The toast doesn't appear until /diff closes.

Claude Model

Opus (Opus 5.5)

Is this a regression?

No, this never worked

Claude Code Version

2.1.287 (Claude Code)

Platform

Anthropic API

Operating System

Debian 13.7

Terminal/Shell

Other (Ghostty)

🤖 Generated with Claude Code

View original on GitHub ↗

4 Comments

adri22235 · 12 days ago

Fixed in my fork: https://github.com/adri22235/claude-code/pull/7 (commit https://github.com/adri22235/claude-code/commit/43ac6aa4a4e7865a3d5e9a799d308866b1e3abd9).

Every pane open in mods/diff/hooks/register.ts passes holdToasts: true, both docked and inline. That matches what the engine does behind its own side panel (see PaneOpenArgs.holdToasts in mods/types/claude-code.d.ts), so the fix documents the behaviour instead of changing it:

  • mods/diff/README.md: says the pane holds transient toasts in both placements. Before, only the inline dialog's description mentioned it. Toasts show once the pane closes, and pinned warnings still show.
  • mods/README.md: the built-in mods table's diff row notes that toasts wait while the pane is up.

tsc -p mods/tsconfig.json and claude plugin test pass for every mod. The screen map and toast pages on code.claude.com aren't in this repo, so they still need updating on the docs side.

alexisLefebvre · 12 days ago
Fixed in my fork: adri22235#7 (commit adri22235@43ac6aa).

Thanks, but I want to keep using the official Claude Code binary.

akhil9tiet · 12 days ago

I'd like to work on this — please assign it to me. I'll open a PR shortly.

akhil9tiet · 12 days ago

Update: I have the docs fix ready on akhil9tiet/claude-code@fix/99026-diff-pane-toast-docs — one sentence added to mods/diff/README.md noting that toasts from other mods are held while the /diff pane is open (compare: https://github.com/anthropics/claude-code/compare/main...akhil9tiet:claude-code:fix/99026-diff-pane-toast-docs). However, this repo restricts pull request creation to collaborators, so I can't open the PR myself. Happy to open it if that changes, or a maintainer is welcome to take the branch.