OpenCode executor: unrecognized `message.part.delta` event causes warnings and garbled text
Author: Jack47Created Mar 13, 2026Updated Jul 9, 2026
Problem
When using the OpenCode executor with recent versions of OpenCode (sst/opencode), the following warning is repeatedly emitted during streaming:
Unrecognized OpenCode SDK event type `message.part.delta`: {"sessionID":"ses_...","messageID":"msg_...","partID":"prt_...","field":"text","delta":"The user is pointing"}Two user-visible issues:
- Warning spam in the VK message panel during every streaming response
- Garbled characters — raw JSON payload (containing Unicode text in
deltafield) rendered as system message, producing mojibake
Root Cause
OpenCode added message.part.delta as a streaming optimization (source). Instead of sending full Part object on every text chunk (message.part.updated), it sends lightweight deltas:
PartUpdated: BusEvent.define("message.part.updated", z.object({ part: Part }))
PartDelta: BusEvent.define("message.part.delta", z.object({
sessionID, messageID, partID,
field: z.string(),
delta: z.string(),
}))In crates/executors/src/executors/opencode/types.rs, SdkEvent recognizes message.part.updated but not message.part.delta. Unrecognized events fall through to Unknown, which normalize_logs.rs renders as a visible system message (~line 309).
Suggested Fix
- Add
MessagePartDeltavariant toSdkEventintypes.rs - Handle in
normalize_logs.rs— either apply delta to streaming text (similar tohandle_part_update), or silently ignore ifmessage.part.updatedis still sent alongside
Environment
- vibe-kanban: v0.1.29
- OpenCode: latest dev branch
- Platform: macOS arm64
Source: BloopAI/vibe-kanban