ruvnet/ruflo · error

PEER_SIGNATURE_PROTOCOL_UNSUPPORTED_FOR_MESSAGE: ${messageTy

Error message

PEER_SIGNATURE_PROTOCOL_UNSUPPORTED_FOR_MESSAGE: ${messageType}

What it means

Protocol negotiation fell back to legacy-v1 signing, but the message type being sent is not in the allowlist of legacy-envelope types (legacy envelopes cannot carry all message kinds securely). The combination 'legacy signature + this messageType' is unsupported, so the specific message type is named in the refusal.

Source

Thrown at v3/@claude-flow/plugin-agent-federation/src/application/inbound-dispatcher.ts:229

  peerProtocols: readonly string[],
  messageType?: string,
): EnvelopeSignatureVersion {
  const selected = mode === 'legacy'
    ? 'legacy-v1'
    : peerProtocols.includes(JCS_SIGNATURE_PROTOCOL)
      ? 'jcs-v1'
      : mode === 'prefer-jcs'
        ? 'legacy-v1'
        : null;
  if (selected === null) {
    throw new Error('PEER_SIGNATURE_PROTOCOL_UNSUPPORTED');
  }
  if (
    selected === 'legacy-v1'
    && messageType !== undefined
    && !isLegacyEnvelopeTypeAllowed(messageType)
  ) {
    throw new Error(`PEER_SIGNATURE_PROTOCOL_UNSUPPORTED_FOR_MESSAGE: ${messageType}`);
  }
  return selected;
}

export function canonicalizeEnvelopeForVerify(
  message: AgentMessage,
  requestedVersion?: EnvelopeSignatureVersion,
): string {
  const meta = (message.metadata ?? {}) as Record<string, unknown>;
  // Strip signature from metadata if present (we verify the rest)
  const { signature: _sig, ...metaForSig } = meta;
  const canon = {
    id: message.id,
    type: message.type,
    payload: message.payload,
    metadata: metaForSig,
  };
  const version = requestedVersion ?? envelopeSignatureVersion(message);

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Align both peers on a signature protocol version that supports the message type.
  2. Gate the message type behind a supported-version capability check before sending.
Defensive patterns

Strategy: fallback

When it happens

Trigger: A specific federation message type arrives signed with a protocol version not supported for that message type.

Common situations: Version skew where a message type requires a newer signature scheme than the peer used.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/abea55d27dc8f9b9. Report an issue: GitHub.