continuedev/continue · error · Error

Unsupported transport type: ${this.options.type}

Error message

Unsupported transport type: ${this.options.type}

What it means

The Vertex endpoint returned a non-2xx HTTP status for a non-streaming chat request; the error body from Google is embedded for diagnosis. This wraps upstream API failures (auth, quota, model access, malformed request).

Source

Thrown at core/context/mcp/MCPConnection.ts:256

                }
              } else {
                // SSE/HTTP: if type isn't explicit: try http and fall back to sse
                if (this.options.type === "sse") {
                  const transport = this.constructSseTransport(this.options);
                  await this.client.connect(transport, {});
                  this.transport = transport;
                } else if (this.options.type === "streamable-http") {
                  const transport = this.constructHttpTransport(this.options);
                  await this.client.connect(transport, {});
                  this.transport = transport;
                } else if (this.options.type === "websocket") {
                  const transport = this.constructWebsocketTransport(
                    this.options,
                  );
                  await this.client.connect(transport, {});
                  this.transport = transport;
                } else if (this.options.type) {
                  throw new Error(
                    `Unsupported transport type: ${this.options.type}`,
                  );
                } else {
                  try {
                    const transport = this.constructHttpTransport({
                      ...this.options,
                      type: "streamable-http",
                    });
                    await this.client.connect(transport, {});
                    this.transport = transport;
                  } catch (e) {
                    try {
                      const transport = this.constructSseTransport({
                        ...this.options,
                        type: "sse",
                      });
                      await this.client.connect(transport, {});
                      this.transport = transport;

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. Read the embedded JSON body — Google's error message states the exact reason
  2. For 403, grant roles/aiplatform.user to the service account and enable aiplatform.googleapis.com
  3. For 404, verify project id, region, and full model id including @version
  4. For 429, add backoff/retry and request quota increase
Defensive patterns

Strategy: retry

Try / catch

try { const r = await api.chatCompletionNonStream(body, signal); } catch (e) { const msg = (e as Error).message; if (msg.includes('429')) await backoffAndRetry(); else if (msg.includes('401') || msg.includes('403')) refreshCreds(); else throw e; }

Prevention

When it happens

Trigger: 401/403 expired token or missing aiplatform.user role; 404 wrong project/region/model id; 429 quota exceeded; 400 invalid request body converted for the publisher endpoint.

Common situations: Expired cached OAuth token; service account lacks Vertex AI User role; model not enabled in the region; billing disabled on the project; rate limits under load.

Related errors


AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27). Data as JSON: /api/errors/1351dfc3fb43d1fe. Report an issue: GitHub.