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

Action missing action_type

Error message

Action missing action_type

What it means

Error "Action missing action_type" thrown in zellij-org/zellij.

Source

Thrown at zellij-utils/src/ipc/protobuf_conversion.rs:2245

        Self {
            action_type: Some(action_type),
        }
    }
}

impl TryFrom<crate::client_server_contract::client_server_contract::Action>
    for crate::input::actions::Action
{
    type Error = anyhow::Error;
    fn try_from(
        action: crate::client_server_contract::client_server_contract::Action,
    ) -> Result<Self> {
        use crate::client_server_contract::client_server_contract::action::ActionType;

        let action_type = action
            .action_type
            .ok_or_else(|| anyhow!("Action missing action_type"))?;

        match action_type {
            ActionType::Quit(_) => Ok(crate::input::actions::Action::Quit),
            ActionType::Write(write_action) => Ok(crate::input::actions::Action::Write {
                key_with_modifier: write_action
                    .key_with_modifier
                    .map(|k| k.try_into())
                    .transpose()?,
                bytes: write_action.bytes.into_iter().map(|b| b as u8).collect(),
                is_kitty_keyboard_protocol: write_action.is_kitty_keyboard_protocol,
            }),
            ActionType::WriteChars(write_chars_action) => {
                Ok(crate::input::actions::Action::WriteChars {
                    chars: write_chars_action.chars,
                })
            },
            ActionType::WriteToPaneId(write_to_pane_id_action) => {
                Ok(crate::input::actions::Action::WriteToPaneId {

View on GitHub (pinned to e839bfffa5)

Solutions

  1. Include the required 'action_type' field in the protobuf message before sending it.
  2. Verify the sender populates all mandatory fields; add a presence check before conversion.

When it happens

Trigger: Occurs when a protobuf message received over IPC omits the required field; deserialization fails instead of using a default.

Common situations: Occurs when a client or plugin sends an incompletely populated message, often from a version mismatch or hand-crafted payload.


AI-assisted analysis of zellij-org/zellij@e839bfffa5 (2026-08-19). Data as JSON: /api/errors/75fdbd3b73a8b5fc. Report an issue: GitHub.