cloudflare/cloudflared · error

invalid server message type was provided

Error message

invalid server message type was provided: %s

What it means

Protocol error from ReadServerEvent: the server event decoded successfully but its 'type' is a recognized-but-unhandled non-empty string (anything other than the supported server events like Logs). cloudflared does not know how to interpret this management server message kind.

Solutions

  1. Log the raw event.Type to identify the unsupported server message.
  2. Upgrade cloudflared — the server may be emitting a newer event type.
  3. In streaming loops, treat this as a non-fatal skip unless the type is required.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at management/events.go:252 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of cloudflare/cloudflared@2253eeeb25 (2026-09-06). Data as JSON: /api/errors/8991c1b150ec6ba6. Report an issue: GitHub.

Appendix: source

Thrown at management/events.go:252

// ReadEvent will read a message from the websocket connection and parse it into a valid ServerEvent.
func ReadServerEvent(c *websocket.Conn, ctx context.Context) (*ServerEvent, error) {
	message, err := readMessage(c, ctx)
	if err != nil {
		return nil, err
	}
	event := ServerEvent{}
	if err := json.Unmarshal(message, &event); err != nil {
		return nil, err
	}
	switch event.Type {
	case Logs:
		event.event = message
		return &event, nil
	case UnknownServerEventType:
		return nil, errInvalidMessageType
	default:
		return nil, fmt.Errorf("invalid server message type was provided: %s", event.Type)
	}
}

// ReadEvent will read a message from the websocket connection and parse it into a valid ClientEvent.
func ReadClientEvent(c *websocket.Conn, ctx context.Context) (*ClientEvent, error) {
	message, err := readMessage(c, ctx)
	if err != nil {
		return nil, err
	}
	event := ClientEvent{}
	if err := json.Unmarshal(message, &event); err != nil {
		return nil, err
	}
	switch event.Type {
	case StartStreaming, StopStreaming:
		event.event = message
		return &event, nil
	case UnknownClientEventType:

View on GitHub (pinned to 2253eeeb25)