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 coversPaneandAbovePrompt. 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
raiseFaulthandler. Failure notices are deduplicated and marked "once" or "again". - No redraw loop: a failed
Clientis 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 throughhost.faultwithout ending the session. - Plugin recovery: the
ui_renderinvalidate push, which tells a plugin to redraw, now also fires for a failedClientviaui.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 aClientit drew that failed. The owning plugin'sui.faultchain 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. AbovePromptlayout: 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.
Names in the bundleui_client_fault
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
It 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 agree
Fixed a mod's Client that fails while drawn taking down everything the mod drew around it; it now fails alone and raises ui.fault