[BUG] VS Code extension: mod Pane never draws, but $.ui.open resolves { isPlaced: true }

Status Open
Reported on v2.1.296
Maintainer reply None cached
Activity 0 comments · opened Oct 12, 2026

Environment

  • Claude Code 2.1.296, VS Code extension anthropic.claude-code-2.1.296-win32-x64
  • Windows 11 Pro 10.0.26200
  • Mod loaded from the session mods folder with hot reloading enabled

What happens

A mod that opens a Pane gets { isPlaced: true } from $.ui.open in a VS Code session, but nothing is drawn in the Claude panel. The mod's ui.render hook for { component: 'Pane', requestId } is never called on any surface.

The types say Pane is "Raised on every surface", and RenderSurface includes vscode, so a mod author expects it to draw.

Repro

import type { Register } from 'claude-code'

export const register: Register = on => {
  on('classic.UserPromptSubmit', async ($, e, next) => {
    const r = await next(e)
    const opened = await $.ui.open({ id: 'probe', title: 'Probe' })
    return { ...r, sessionTitle: `placed=${opened.isPlaced}` }
  })

  on('ui.render', { component: 'Pane', requestId: 'probe' }, async ($, e) => {
    const { Text } = $.ui.resolve(e)
    return <Text>drawn on {e.surface}</Text>
  })
}
  1. Load the mod in a session in the VS Code extension and send a prompt.
  2. The tab title changes to placed=true, so sessionTitle works and ui.open reports success.
  3. No Pane appears. A logging line added to the ui.render hook never runs.

Evidence

  • The extension's extension.js (2.1.296) names five ui_* messages: ui_copy, ui_prompt_fill, ui_prompt_read, ui_prompt_suggest, ui_read_selection. It names no ui_render or ui_open.
  • $.ui.status and $.ui.toast also show nothing in the VS Code panel.

Expected

Either the extension draws Panes (and the band, toasts and status entries), or $.ui.open resolves { isPlaced: false, reason } in VS Code, so a mod can fall back.

The misleading isPlaced: true is the main cost. A mod cannot tell that its UI is invisible.

View original on GitHub ↗