Yeachan-Heo/oh-my-codex · error · Error

failed to reconcile standalone HUD resize: ${reconcile.stder

Error message

failed to reconcile standalone HUD resize: ${reconcile.stderr}

What it means

Thrown by restoreStandaloneHudPane on Windows when an existing HUD pane is found and the immediate resize reconciliation (runTmux(buildHudResizeArgs(...))) fails. The message embeds the tmux stderr. resize-pane failing means the HUD pane exists but cannot be resized to the expected team height, so the restore aborts after the pane is already reconciled as live and authorized.

Source

Thrown at src/team/tmux-session.ts:3042

  for (const paneId of [existingHudPaneId, ...duplicateHudPaneIds]) {
    if (!paneId) continue;
    const proof = readExactPaneProofSync(paneId);
    if (proof.status === 'unavailable') throw new ExactPaneProofUnavailableError(proof);
    if (proof.status === 'gone') throw new Error(`tmux pane is not proven live: ${paneId}`);
    ownedHudPanePids.set(paneId, proof.pid);
  }
  for (const paneId of duplicateHudPaneIds) {
    killExactPaneSync(paneId, ownedHudPanePids.get(paneId), requireAuthorizedLeaderPane);
  }
  if (existingHudPaneId) {
    if (isNativeWindows()) {
      const exactHudPaneId = requireLiveExactPaneSync(
        existingHudPaneId,
        ownedHudPanePids.get(existingHudPaneId),
      );
      requireAuthorizedLeaderPane();
      const reconcile = runTmux(buildHudResizeArgs(exactHudPaneId));
      if (!reconcile.ok) throw new Error(`failed to reconcile standalone HUD resize: ${reconcile.stderr}`);
    } else {
      requireAuthorizedLeaderPane();
      runTmux(buildScheduleDelayedHudResizeArgs(
        existingHudPaneId,
        HUD_RESIZE_RECONCILE_DELAY_SECONDS,
        HUD_TMUX_TEAM_HEIGHT_LINES,
        ownedHudPanePids.get(existingHudPaneId),
      ));
      requireAuthorizedLeaderPane();
      runTmux(buildReconcileHudResizeArgs(
        existingHudPaneId,
        HUD_TMUX_TEAM_HEIGHT_LINES,
        ownedHudPanePids.get(existingHudPaneId),
      ));
    }
    runTmux(['select-pane', '-t', requireAuthorizedLeaderPane()]);
    return existingHudPaneId;
  }

View on GitHub (pinned to 3ad79a8a6f)

Solutions

  1. Run the resize command manually with the pane id and read the embedded stderr (e.g. tmux resize-pane and check size limits)
  2. Enlarge the terminal/window so the requested HUD height fits
  3. Change the window layout to a resizable one (select-layout even-vertical / tiled)
  4. Retry after unzooming the window (resize-pane -Z toggles zoom)
Defensive patterns

Strategy: validation

Validate before calling

function windowTallEnough(lines: number): boolean { return process.stdout.rows ?? 0 > lines + 2; }
if (isNativeWindows() && !windowTallEnough(HUD_TMUX_TEAM_HEIGHT_LINES)) throw new Error('enlarge terminal before restore');

Try / catch

try { restoreStandaloneHudPane(id, cwd, opts); } catch (e) { if (e instanceof Error && e.message.startsWith('failed to reconcile standalone HUD resize')) { /* run resize manually, fix layout/terminal size, retry */ } else throw e; }

Prevention

When it happens

Trigger: On native Windows (isNativeWindows()), an existing HUD pane passes requireLiveExactPaneSync and leader authorization, then the resize-pane command in buildHudResizeArgs returns !ok — e.g. pane in a layout that forbids resizing, pane too small/large, or tmux error.

Common situations: Window layout (even-horizontal, main-pane, etc.) blocks manual pane sizing; the terminal window is too small for HUD_TMUX_TEAM_HEIGHT_LINES; MSYS/Windows tmux port quirks with resize-pane; pane became part of a zoomed window.

Related errors


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