zellij-org/zellij · error · anyhow::Error

Failed to parse plugin location

Error message

Failed to parse plugin location: {}

What it means

Error "Failed to parse plugin location: {}" thrown in zellij-org/zellij.

Solutions

  1. Check the attached error for the underlying serialization failure and fix the offending data.
  2. Ensure plugin/wasm artifacts and zellij versions are compatible.

When it happens

Trigger: Occurs at zellij-server/src/plugins/zellij_exports.rs:3292 when the operation fails: "Failed to parse plugin location: {}". Currently there is no defensive handling preventing or contextualizing this failure before it surfaces.

Common situations: Typically version skew, corrupted data, or an unexpected payload shape.

Understand the failure class


AI-assisted analysis of zellij-org/zellij@5cb5df5cce (2026-08-19). Data as JSON: /api/errors/9cdb8fa60934758b. Report an issue: GitHub.

Appendix: source

Thrown at zellij-server/src/plugins/zellij_exports.rs:3292

    let tab_id: FocusOrCreateTabResponse = result.and_then(|r| r.affected_tab_id);

    let response = ProtobufFocusOrCreateTabResponse::from(tab_id);
    wasi_write_object(env, &response.encode_to_vec()).non_fatal();
}

fn go_to_tab(env: &PluginEnv, tab_index: u32) {
    let error_msg = || format!("failed to change tab focus in plugin {}", env.name());
    let action = Action::GoToTab {
        index: tab_index + 1,
    };
    apply_action!(action, error_msg, env);
}

fn start_or_reload_plugin(env: &PluginEnv, url: &str) -> Result<()> {
    let error_msg = || format!("failed to start or reload plugin in plugin {}", env.name());
    let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("."));
    let run_plugin_or_alias = RunPluginOrAlias::from_url(url, &None, None, Some(cwd))
        .map_err(|e| anyhow!("Failed to parse plugin location: {}", e))?;
    let action = Action::StartOrReloadPlugin {
        plugin: run_plugin_or_alias,
    };
    apply_action!(action, error_msg, env);
    Ok(())
}

fn close_terminal_pane(env: &PluginEnv, terminal_pane_id: u32) {
    let error_msg = || format!("failed to change tab focus in plugin {}", env.name());
    let action = Action::CloseTerminalPane {
        pane_id: terminal_pane_id,
    };
    apply_action!(action, error_msg, env);
    env.senders
        .send_to_pty(PtyInstruction::ClosePane(
            PaneId::Terminal(terminal_pane_id),
            None,
        ))

View on GitHub (pinned to 5cb5df5cce)