Yeachan-Heo/oh-my-codex · error

Question UI pane ${paneId} disappeared immediately after lau

Error message

Question UI pane ${paneId} disappeared immediately after launch.

What it means

After creating the question pane, launchQuestionPane waits QUESTION_RENDERER_PANE_SETTLE_MS and then checks the pane still exists via isLaunchedQuestionPaneAlive. If the pane is gone, the command it was created to run exited immediately (or tmux reaped it), so the renderer is treated as dead on arrival rather than leaving the user with an invisible question UI.

Source

Thrown at src/question/renderer.ts:322

function launchQuestionPane(
  execTmux: ExecTmuxSync,
  sleepImpl: SleepSync,
  args: string[],
  launchedAt: string,
  returnTarget: string | undefined,
): {
  renderer: 'tmux-pane';
  target: string;
  launched_at: string;
  return_target?: string;
  return_transport?: 'tmux-send-keys';
} {
  const rawPane = execTmux(args);
  const paneId = parsePaneIdFromTmuxOutput(rawPane);
  if (!paneId) throw new Error('Failed to create tmux question renderer container.');
  sleepImpl(QUESTION_RENDERER_PANE_SETTLE_MS);
  if (!isLaunchedQuestionPaneAlive(paneId, execTmux)) {
    throw new Error(`Question UI pane ${paneId} disappeared immediately after launch.`);
  }
  return {
    renderer: 'tmux-pane',
    target: paneId,
    launched_at: launchedAt,
    ...(returnTarget ? { return_target: returnTarget, return_transport: 'tmux-send-keys' as const } : {}),
  };
}

function resolveQuestionUiProcessArgs(
  recordPath: string,
  options: {
    cwd: string;
    env?: NodeJS.ProcessEnv;
  },
): string[] {
  const omxBin = resolveOmxCliEntryPath({
    argv1: process.argv[1],

View on GitHub (pinned to 3ad79a8a6f)

Solutions

  1. Run the pane command manually (the CLI with 'question --ui --state-path ...') to see the immediate crash reason.
  2. Verify the OMX CLI entry path resolves (see resolveOmxCliEntryPath errors) and node runs it without error.
  3. Retry the launch; if a supersede/kill race is suspected, ensure prior question panes are closed before relaunching.
Defensive patterns

Strategy: retry

Validate before calling

// reproduce the pane command manually to verify it stays alive:
// tmux split-window 'node /path/to/omx question --ui --state-path /tmp/q.json'

Try / catch

try { launchQuestionRenderer(opts); } catch (e) { if (e instanceof Error && /disappeared immediately after launch/.test(e.message)) { await delay(500); return launchQuestionRenderer(opts); /* one retry */ } throw e; }

Prevention

When it happens

Trigger: The spawned shell/command exiting instantly (bad OMX CLI entry path, immediate crash, missing node); pane destroyed by a competing window manager or supersede logic; tmux remain-on-exit off so the pane closes when the command exits.

Common situations: The omx binary path resolved incorrectly so the pane's command fails at exec; Node version mismatch crashing the CLI; a previous question pane supersede racing the new pane; extremely slow disk causing exec failure.

Related errors


AI-assisted analysis of Yeachan-Heo/oh-my-codex@3ad79a8a6f (2026-08-27). Data as JSON: /api/errors/7be14aca9f7e7e95. Report an issue: GitHub.