Follow Discord
Sweep 03 Oct 2026 · 20:28Z Build v2.1.289 510 read Stable v2.1.285 Latest v2.1.289 Next v2.1.289 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.289 ·

Plugin UI failures are now caught, reported and recoverable

When a plugin's on-screen UI throws an error, Claude Code now catches it, draws its own UI instead and lets the plugin recover

Group of 4 You'll notice No documentation found New Features
JSON All of v2.1.289
You'll noticeTier: how much it should matter to you
4Useful: my rating, 1 to 5
4Signal: worth watching, 1 to 5
Plugin UIArea: what it touches
New FeaturesKind: in v2.1.289,
What probably matters to youSection of the release

What

Plugins can draw their own pieces of the Claude Code screen, such as a pane or content above the prompt. When that plugin-drawn UI fails, it is now contained and reported instead of breaking the screen or failing silently.

  • Error catching: a plugin answer or Client (a plugin-drawn view) that throws an error while being drawn is caught. Claude Code draws its own UI in its place and shows a message. This covers Pane and AbovePrompt. Previously a thrown error just removed the view and logged it.
  • Fault reports: the failure now records which phase failed (load, render or run) and is sent to a raiseFault handler. Failure notices are deduplicated and marked "once" or "again".
  • No redraw loop: a failed Client is not drawn again until its props or the place it is drawn change.
  • Resize limits: resize handling is rate-limited per view and per frame. Views caught in a re-measure loop are skipped and shown with the message "drawn as last measured".
  • Rejections: when a Client's asynchronous handler fails (a rejection), it is reported through host.fault without ending the session.
  • Plugin recovery: the ui_render invalidate push, which tells a plugin to redraw, now also fires for a failed Client via ui.fault. Before, it covered state changes only.
  • Toasts: a toast stack (a pile of small pop-up notices) that throws while drawn is reported once as "ui.toast: the toast stack threw while drawn".
  • Desktop app: a new control request, ui_client_fault, with a {handled} response, lets the desktop app report a Client it drew that failed. The owning plugin's ui.fault chain then runs alone with the surface "desktop", so the plugin can draw a different view. The phase is load, render or run, and the reason is cut to 200 characters and cleaned.
  • AbovePrompt layout: the area's width now keeps a fixed margin of columns (keptColumns), and its holds-band report is skipped once the plugin has thrown.

Why

A broken plugin UI should no longer take down the screen or repeat the same error over and over. Plugin authors get a fault report and a chance to draw a fallback view, both in the terminal and in the desktop app.

Read from
Names in the bundleui_client_fault
How sure we are
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubtIt is not clear whether `ui.fault` handlers are behind a rollout switch or reachable only when the desktop app is the host.
Anthropic's release notes agreeFixed a mod's Client that fails while drawn taking down everything the mod drew around it; it now fails alone and raises ui.fault

See this entry in the whole of v2.1.289 →

Feedback