Repository navigation
plugin events are fired multiple times #3744
Copy link
Copy link
Closed
Labels
bugSomething isn't workingSomething isn't workingopentuiThis relates to changes in v1.0, now that opencode uses opentuiThis relates to changes in v1.0, now that opencode uses opentui
Description
Description
Happening since the update - each plugin event is fired multiple times
OpenCode version
v1.0.11
Steps to reproduce
- Create a simple plugin that writes the event type into a file.
export const NotificationPlugin: Plugin = async ({ client, $ }) => {
return {
event: async ({ event }) => {
await $`echo ${event.type} >> /tmp/events.txt`;
},
}
}
-
Run opencode, and start a conversation. e.g.
hi -
Look at the file in /tmp/events.txt
This is the output:
session.created
session.created
session.created
session.created
session.created
session.created
session.created
session.created
session.created
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.part.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
session.idle
session.idle
session.idle
session.idle
session.idle
session.idle
session.idle
session.idle
session.idle
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
session.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
message.updated
Screenshot and/or share link
No response
Operating System
macOS 26.0.1
Terminal
tmux inside ghostty
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingopentuiThis relates to changes in v1.0, now that opencode uses opentuiThis relates to changes in v1.0, now that opencode uses opentui
Activity
thdxr commentedon Nov 2, 2025
fixed