Yeachan-Heo/oh-my-codex · error · Error
shutdown_shared_session_${kind.replaceAll(' ', '_')}_owner_u
Error message
shutdown_shared_session_${kind.replaceAll(' ', '_')}_owner_unavailable:${paneId}:${owner.error} What it means
Thrown when reading the team owner tag for a pane during shutdown fails outright (read error, not just a mismatch). The owner tag establishes which team owns the pane; without it, shutdown cannot safely act on the pane.
Source
Thrown at src/team/runtime.ts:5191
paneId: string,
kind: 'HUD pane' | 'restore leader pane',
expectedPid?: number | null,
): FrozenSharedPaneAuthorization => {
const proof = readExactPaneProofSync(paneId);
if (proof.status !== 'live') {
throw new Error(`shutdown_shared_session_${kind.replaceAll(' ', '_')}_proof_unavailable:${paneId}`);
}
if (typeof expectedPid === 'number') {
if (!Number.isSafeInteger(expectedPid) || expectedPid <= 0) {
throw new Error(`shutdown_shared_session_${kind.replaceAll(' ', '_')}_pid_missing:${paneId}`);
}
if (proof.pid !== expectedPid) {
throw new Error(`shutdown_shared_session_${kind.replaceAll(' ', '_')}_identity_changed:${paneId}`);
}
}
const owner = readPaneTeamOwnerTagResult(paneId);
if (owner.status === 'error') {
throw new Error(`shutdown_shared_session_${kind.replaceAll(' ', '_')}_owner_unavailable:${paneId}:${owner.error}`);
}
if (owner.status !== 'value' || !tmuxPaneOwnerId || owner.value !== tmuxPaneOwnerId) {
throw new Error(`shutdown_shared_session_${kind.replaceAll(' ', '_')}_owner_changed:${paneId}`);
}
return { paneId, pid: proof.pid, owner: owner.value };
};
const assertSharedPaneAuthorizationContinuous = (
authorization: FrozenSharedPaneAuthorization,
kind: 'HUD pane' | 'restore leader pane',
): void => {
const scope = sharedSessionTopology ? 'shared_session' : 'detached_session';
const proof = readExactPaneProofSync(authorization.paneId);
if (proof.status !== 'live' || proof.pid !== authorization.pid) {
throw new Error(`shutdown_${scope}_${kind.replaceAll(' ', '_')}_identity_changed:${authorization.paneId}`);
}
const owner = readPaneTeamOwnerTagResult(authorization.paneId);
if (owner.status === 'error') {
throw new Error(`shutdown_${scope}_${kind.replaceAll(' ', '_')}_owner_unavailable:${authorization.paneId}:${owner.error}`);View on GitHub (pinned to 3ad79a8a6f)
Solutions
- Check the appended owner.error text for the underlying tmux failure
- Confirm the tmux server is alive (tmux info) and the pane still exists, then retry shutdown
- Verify your tmux version supports pane user options (@-prefixed options) used for owner tags
Defensive patterns
Strategy: retry
Validate before calling
const ownerOk = (paneId) => readPaneTeamOwnerTagResult(paneId).status !== 'error';
Try / catch
catch (e) { if (/owner_unavailable:.*:.+/.test(e.message)) await sleep(250), retryShutdown(); } Prevention
- Ensure tmux server stability during shutdown
- Parse the appended underlying error for diagnosis
When it happens
Trigger: readPaneTeamOwnerTagResult(paneId) returns {status:'error'} — the tmux user-option lookup failed, e.g. tmux error, unknown option error, or IPC failure; the raw error is appended to the message.
Common situations: tmux server restarted or socket unavailable mid-shutdown; pane destroyed between proof read and owner read (TOCTOU); tmux version that does not support the user option used for tagging.
Related errors
- shutdown_${scope}_${kind.replaceAll(' ', '_')}_owner_unavail
- shutdown_shared_session_worker_owner_unavailable:${paneId}:$
- shutdown_shared_session_topology_unavailable:${sharedSession
- shutdown_shared_session_HUD_pane_identity_changed:${config.h
- shutdown_shared_session_worker_target_invalid:${sharedWorker
AI-assisted analysis of Yeachan-Heo/oh-my-codex@3ad79a8a6f (2026-08-27).
Data as JSON: /api/errors/fe280f826d334752.
Report an issue: GitHub.