cloudflare/cloudflared · error

invalid client message type was provided: %s

Error message

invalid client message type was provided: %s

What it means

Protocol error from ReadClientEvent: a client message decoded but its 'type' is a non-empty string that is neither StartStreaming nor StopStreaming. The management server received a client command it does not support.

Source

Thrown at management/events.go:273

// 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:
		return nil, errInvalidMessageType
	default:
		return nil, fmt.Errorf("invalid client message type was provided: %s", event.Type)
	}
}

// readMessage will read a message from the websocket connection and return the payload.
func readMessage(c *websocket.Conn, ctx context.Context) ([]byte, error) {
	messageType, reader, err := c.Reader(ctx)
	if err != nil {
		return nil, err
	}
	if messageType != websocket.MessageText {
		return nil, errInvalidMessageType
	}
	return io.ReadAll(reader)
}

// WriteEvent will write a Event type message to the websocket connection.
func WriteEvent(c *websocket.Conn, ctx context.Context, event any) error {
	payload, err := json.Marshal(event)

View on GitHub (pinned to 2253eeeb25)

Solutions

  1. Verify the client is sending only start_streaming or stop_streaming events.
  2. Check for client/server version skew in the management protocol.
  3. Reject or log-and-skip unknown client messages server-side.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at management/events.go:273 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/c8504e696ebb4c30. Report an issue: GitHub.