wezterm/wezterm · error · anyhow::Error
missing pane_height
Error message
missing pane_height
What it means
WezTerm's tmux integration expects every non-empty `list-panes` reply line to carry 11 space-separated fields (session_id through pane_active). `missing pane_height` means the line ended after exactly 7 tokens (through pane_width), so `fields.next()` returned None at field 8, the pane row count.
Source
Thrown at mux/src/tmux_commands.rs:714
let _pane_index = fields
.next()
.ok_or_else(|| anyhow!("missing pane_index"))?
.parse()?;
let cursor_x = fields
.next()
.ok_or_else(|| anyhow!("missing cursor_x"))?
.parse()?;
let cursor_y = fields
.next()
.ok_or_else(|| anyhow!("missing cursor_y"))?
.parse()?;
let pane_width = fields
.next()
.ok_or_else(|| anyhow!("missing pane_width"))?
.parse()?;
let pane_height = fields
.next()
.ok_or_else(|| anyhow!("missing pane_height"))?
.parse()?;
let pane_left = fields
.next()
.ok_or_else(|| anyhow!("missing pane_left"))?
.parse()?;
let pane_top = fields
.next()
.ok_or_else(|| anyhow!("missing pane_top"))?
.parse()?;
let pane_active = fields
.next()
.ok_or_else(|| anyhow!("missing pane_active"))?
.parse::<usize>()?;
let pane_active = pane_active == 1;
pane_set.insert(pane_id);
View on GitHub (pinned to 08e5e0afc6)
Solutions
- Upgrade the tmux server to a mainstream release >= 3.1 and retest.
- Reproduce under `tmux -CC` with the exact format string and locate the 7-token line.
- Rule out tmux.conf output with `tmux -f /dev/null`.
- Update WezTerm.
- Capture the line with WEZTERM_LOG=trace and file an issue.
Example fix
// before
let pane_height = fields
.next()
.ok_or_else(|| anyhow!("missing pane_height"))?
.parse()?;
// after
let fields: Vec<&str> = line.split(' ').collect();
anyhow::ensure!(fields.len() >= 11, "malformed list-panes line: {line:?}");
let pane_height: u64 = fields[7].parse()?; Defensive patterns
Strategy: validation
Validate before calling
fn pane_line_is_complete(line: &str) -> bool {
!line.is_empty() && line.split(' ').count() >= 11
} Try / catch
if let Err(err) = panes_result {
if err.to_string().starts_with("missing ") {
log::warn!("tmux output malformed: {err:#}");
return; // non-fatal: next sync round retries
}
return Err(err);
} Prevention
- Keep the tmux server on a release WezTerm is tested against
- Don't patch tmux locally when using the WezTerm tmux domain
- Capture and diff `list-panes -F` output after tmux upgrades
When it happens
Trigger: A pane sync on a tmux domain where a captured line has only 7 tokens: truncated tmux output, an unexpected line inside the %begin/%end block, or list-panes rendering from a tmux build that deviates from the format string in `ListAllPanes::get_command`.
Common situations: Old or vendor-patched tmux servers, rapid pane/window teardown during sync, control-stream desync. The error propagates out of `process_result` and fails `sync_pane_state`/`remove_detached_pane` for that round.
Related errors
AI-assisted analysis of wezterm/wezterm@08e5e0afc6 (2026-08-20).
Data as JSON: /api/errors/6c12804ff398e0c2.
Report an issue: GitHub.