Description
A lot of memory/context plugins use experimental.chat.system.transform by doing output.system.push(...) for recalled context or status blocks.
That is a natural reading of the current hook type, but it can make those plugins incompatible with many model backends that only accept a single system message at the start of the conversation, especially vLLM-served Qwen models and similar OpenAI-compatible deployments.
The hook itself is useful and does not need a behavior change here. What seems to be missing is guidance for plugin authors: if they are adding supplemental prompt/context, they should usually merge it into the primary system block instead of pushing a new array entry.
Plugins
Memory and context injection plugins using experimental.chat.system.transform
OpenCode version
Current dev branch as of 2026-04-21
Steps to reproduce
- Implement a plugin that injects recalled context with
output.system.push(...) inside experimental.chat.system.transform
- Use that plugin with an OpenAI-compatible backend that only allows a single system message
- Send a request
- The backend rejects the request because multiple system messages were produced
Screenshot and/or share link
No response
Operating System
No response
Terminal
No response
Description
A lot of memory/context plugins use
experimental.chat.system.transformby doingoutput.system.push(...)for recalled context or status blocks.That is a natural reading of the current hook type, but it can make those plugins incompatible with many model backends that only accept a single system message at the start of the conversation, especially vLLM-served Qwen models and similar OpenAI-compatible deployments.
The hook itself is useful and does not need a behavior change here. What seems to be missing is guidance for plugin authors: if they are adding supplemental prompt/context, they should usually merge it into the primary system block instead of pushing a new array entry.
Plugins
Memory and context injection plugins using
experimental.chat.system.transformOpenCode version
Current
devbranch as of 2026-04-21Steps to reproduce
output.system.push(...)insideexperimental.chat.system.transformScreenshot and/or share link
No response
Operating System
No response
Terminal
No response