MCP UI widgets remount on session re-entry, stealing scroll/focus — and the only opt-out is losing the connector's tools

Status Open
Reported on v2.1.237
Maintainer reply None cached
Activity 0 comments · opened Aug 21, 2026

Environment: Claude Code 2.1.237, desktop app, macOS 26.6.2 (Darwin 25.6.0, arm64). Atlassian (Jira) claude.ai connector.

What happens

A tool result that renders an MCP UI widget — e.g. Jira createJiraIssue / transitionJiraIssue, which render an issue card — re-initializes every time the session is re-entered.

Switching to another session and back remounts the widget, which expands to full height after scroll position is restored, shoving the viewport and taking focus. In a long transcript you lose your place and have to scroll back down. This repeats on every revisit, with no new messages and no unread indicator — so the session looks caught up, and you get thrown out of position anyway.

Expected

Re-entering a session restores the view as it was left. Widgets should render at their persisted height, or mount below the restored scroll anchor, so layout settles before the viewport is positioned. Collapse state should persist across session switches too — collapsing a card by hand doesn't survive the round trip.

The bigger problem: no way to opt out without losing capability

There is no client setting to suppress MCP UI rendering. I checked, and found no widget / mcpUi / mcp-ui / uiResource key in any of:

  • ~/.claude/settings.json
  • <project>/.claude/settings.local.json
  • ~/Library/Application Support/Claude/config.json
  • ~/Library/Application Support/Claude/claude_desktop_config.json
  • the claude binary itself (only an unrelated "CellTrayWidgets")

That leaves two workarounds, and both trade a capability to change a presentation default:

  1. A permissions deny on the widget-emitting tools — so to stop a card from rendering, I give up filing and transitioning Jira tickets.
  2. Disabling the connector in claude.ai settings — which removes Jira and Confluence entirely, including read-only lookups and JQL search.

Widget rendering is purely client-side. The server already returns ordinary JSON, and that JSON is what the model reads either way. Please add an independent toggle for rendering MCP UI resources — global, per-connector, or per-tool — so suppressing the card doesn't cost the tool.

Note

Disabling the tool doesn't even fix an affected conversation: widgets already present in a transcript remount on every revisit regardless of current permissions. For existing sessions the only remedy is the fix itself.

Related

#64670 (closed) asked for a collapsible/minimizable AskUserQuestion widget — different surface, same underlying theme of widgets being unconditionally rendered and not user-dismissible in a way that sticks.

View original on GitHub ↗