Skip to content

bug: infinite loop when provider returns finishReason "unknown" #19339

@okuyam2y

Description

@okuyam2y

Description

When using OpenAI-compatible providers (e.g. GLM-5 Turbo via gateway), the model returns finishReason: "unknown" instead of "stop" or "end_turn". The prompt loop in prompt.ts treats "unknown" as non-terminal (same as "tool-calls"), causing an infinite loop when no tool calls are present.

Steps to reproduce

  1. Configure an OpenAI-compatible provider that returns finishReason: "unknown" (e.g. ZhipuAI GLM-5 Turbo)
  2. Send any message
  3. The session loops indefinitely — each step has finishReason: "unknown" and hasToolCalls: false

Expected behavior

The prompt loop should treat "unknown" as a terminal finish reason (like "stop") when no tool calls are detected, and exit the loop.

Relevant code

packages/opencode/src/session/prompt.ts L324 and L720 — "unknown" is excluded from terminal reasons alongside "tool-calls":

!["tool-calls", "unknown"].includes(processor.message.finish)

Metadata

Metadata

Assignees

Labels

coreAnything pertaining to core functionality of the application (opencode server stuff)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions