-
Notifications
You must be signed in to change notification settings - Fork 14k
Open
Labels
coreAnything pertaining to core functionality of the application (opencode server stuff)Anything pertaining to core functionality of the application (opencode server stuff)
Description
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
- Configure an OpenAI-compatible provider that returns
finishReason: "unknown"(e.g. ZhipuAI GLM-5 Turbo) - Send any message
- The session loops indefinitely — each step has
finishReason: "unknown"andhasToolCalls: 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)Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
coreAnything pertaining to core functionality of the application (opencode server stuff)Anything pertaining to core functionality of the application (opencode server stuff)