Pumpkin-MC/Pumpkin · error · AuthError

You have disallowed actions from Authentication servers

Error message

You have disallowed actions from Authentication servers

What it means

PacketDecodeError::Message(String) is the catch-all variant carrying a free-form error message. It is used for decode failures that do not map to a specific variant, wrapping arbitrary error text. Treat the payload as diagnostic information rather than a stable contract.

Solutions

  1. Log the message string to identify the actual underlying failure.
  2. If it recurs, extend PacketDecodeError with a dedicated variant instead of relying on the catch-all.
  3. Check the call stack/payload that produced the wrapped message for the root cause.
  4. Upgrade or patch the protocol crate if the wrapped message indicates an internal bug.

Example fix

// before
return Err(PacketDecodeError::Message(format!("unknown state {:?}", state)));
// after
#[error("unknown connection state: {0}")]
UnknownState(String),
return Err(PacketDecodeError::UnknownState(state));
Defensive patterns

Strategy: try-catch

Try / catch

match decode_packet(stream).await {
    Err(PacketDecodeError::Message(msg)) => {
        error!("packet decode failed: {msg}");
        // inspect msg for the root cause; consider a dedicated variant if recurring
    }
    Ok(p) => handle(p),
    Err(e) => warn!("decode error: {e}"),
}

Prevention

When it happens

Trigger: Any decode path returning a generic error string; errors wrapped via .map_err(|e| PacketDecodeError::Message(e.to_string())) in decoding helpers.

Common situations: Unexpected codec failures during development; mixing of error types from lower-level I/O surfaced through the catch-all; debugging custom protocol extensions.

Understand the failure class

Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.

Related errors


AI-assisted analysis of Pumpkin-MC/Pumpkin@8d4639e25a (2026-09-09). Data as JSON: /api/errors/e0ce7efd205362c0. Report an issue: GitHub.

Appendix: source

Thrown at crates/pumpkin/src/net/authentication.rs:403

        Ok(None)
    } else if let Some(status) = last_unknown_status {
        Err(AuthError::UnknownStatusCode(status))
    } else {
        Err(AuthError::FailedResponse)
    }
}

#[derive(Error, Debug)]
pub enum AuthError {
    #[error("Authentication servers are down")]
    FailedResponse,
    #[error("Failed to verify username")]
    UnverifiedUsername,
    #[error("You are banned from Authentication servers")]
    Banned,
    #[error("Texture Error {0}")]
    TextureError(TextureError),
    #[error("You have disallowed actions from Authentication servers")]
    DisallowedAction,
    #[error("Failed to parse JSON into Game Profile")]
    FailedParse,
    #[error("Unknown Status Code {0}")]
    UnknownStatusCode(StatusCode),
}

#[derive(Error, Debug)]
pub enum TextureError {
    #[error("Invalid URL")]
    InvalidURL,
    #[error("Invalid URL scheme for player texture: {0}")]
    DisallowedUrlScheme(String),
    #[error("Invalid URL domain for player texture: {0}")]
    DisallowedUrlDomain(String),
    #[error("Failed to decode base64 player texture: {0}")]
    DecodeError(String),
    #[error("Failed to parse JSON from player texture: {0}")]

View on GitHub (pinned to 8d4639e25a)