Yeachan-Heo/oh-my-codex · error · Error
tmux pane is not proven live: ${reconciledPaneId}
Error message
tmux pane is not proven live: ${reconciledPaneId} What it means
Thrown by restoreStandaloneHudPane's reconciliation path: split-window output could not be parsed, exactly one new pane carrying the split receipt was found via topology diff, a cleanup debt was persisted for it, but readExactPaneProofSync(reconciledPaneId) then returned status 'gone'. The freshly created HUD pane already died (or the proof read raced with reaping), so the library cannot bind a PID to the cleanup debt and throws.
Source
Thrown at src/team/tmux-session.ts:3120
}
const newlyObservedPaneIds = afterTopology.panes
.filter((pane) => !beforeSplitPaneIds.has(pane.paneId) && pane.startCommand.includes(splitReceipt))
.map((pane) => pane.paneId);
if (newlyObservedPaneIds.length === 1) {
const reconciledPaneId = newlyObservedPaneIds[0]!;
persistRestoredHudCleanupDebtSync(cwd, {
schema_version: 1,
operation: 'restored_hud_cleanup',
pane_id: reconciledPaneId,
pane_pid: null,
leader_pane_id: normalizedLeaderPaneId,
leader_pane_pid: options.expectedLeaderPanePid ?? leaderPanePid,
leader_pane_owner_id: options.expectedLeaderPaneOwnerId?.trim() || null,
hud_owner_leader_pane_id: normalizedLeaderPaneId,
}, options.stateRoot);
const reconciledProof = readExactPaneProofSync(reconciledPaneId);
if (reconciledProof.status === 'unavailable') throw new ExactPaneProofUnavailableError(reconciledProof);
if (reconciledProof.status === 'gone') throw new Error(`tmux pane is not proven live: ${reconciledPaneId}`);
persistRestoredHudCleanupDebtSync(cwd, {
schema_version: 1,
operation: 'restored_hud_cleanup',
pane_id: reconciledPaneId,
pane_pid: reconciledProof.pid,
leader_pane_id: normalizedLeaderPaneId,
leader_pane_pid: options.expectedLeaderPanePid ?? leaderPanePid,
leader_pane_owner_id: options.expectedLeaderPaneOwnerId?.trim() || null,
hud_owner_leader_pane_id: normalizedLeaderPaneId,
}, options.stateRoot);
}
throw new Error('restored_hud_split_output_ambiguous');
}
persistRestoredHudCleanupDebtSync(cwd, {
schema_version: 1,
operation: 'restored_hud_cleanup',
pane_id: paneId,
pane_pid: null,View on GitHub (pinned to 3ad79a8a6f)
Solutions
- Check whether the pane died because the HUD command failed: run the same node <omxEntry> hud --watch command manually in a split
- Verify the node binary and omx CLI entry paths are valid from the pane's working directory and shell
- Look for concurrent restores/users killing panes and serialize them
- Retry the restore after fixing the HUD startup failure
Defensive patterns
Strategy: try-catch
Validate before calling
// Smoke-test the HUD command before restoring
execSync(`${nodePath} ${omxEntry} hud --watch --check`, { stdio: 'pipe' }); // if such a check mode exists Try / catch
try { restoreStandaloneHudPane(id, cwd, opts); } catch (e) { if (e instanceof Error && e.message.startsWith('tmux pane is not proven live')) { /* new HUD pane died on spawn: test HUD command manually, fix node/entry paths, retry */ } else throw e; } Prevention
- Validate resolveLeaderNodePath() and resolveOmxCliEntryPath() resolve inside the pane's shell, not just the parent
- Watch for persisted cleanup debt files after this error and clear/honor them
- Ensure the -c start directory is valid
When it happens
Trigger: The HUD pane created by split-window exits before its liveness proof is read — HUD process fails immediately (node/entry path invalid on the spawned shell, env assignment failure), or the pane is killed by a concurrent actor right after creation.
Common situations: resolveLeaderNodePath/resolveOmxCliEntryPath resolving differently inside the pane's shell (PATH differences); shell quoting/env issues in the exec env command on the target cwd; pane killed by a parallel restore; aggressive pane exit reaping.
Related errors
- ${label} not found: ${path}
- Missing ${field}.
- restored_hud_cleanup_debt_unresolved:${debt.pane_id}
- invalid auth slot path
- auth directory must not be a symlink: ${dir}
AI-assisted analysis of Yeachan-Heo/oh-my-codex@3ad79a8a6f (2026-08-27).
Data as JSON: /api/errors/902f18b1301bd2e9.
Report an issue: GitHub.