@silk dove Hey all β running into what looks like a framework-level issue with { handled: true } on message:received.
Short version: returning { handled: true } from a hook on message:received has no effect β the agent model fires anyway on every message regardless. Same behavior with { injectSystemContent } on that event type β the return value appears to be silently discarded.
For context, I'm building a router hook that intercepts specific commands (slash commands, project status queries, inbox checks) and sends responses directly via Telegram. The hook works correctly β it sends the right response β but the agent fires concurrently, reads whatever state the hook just modified, and sends its own response. The result is duplicate or contradictory messages.
Workaround I've landed on: fire any slow async work (like an inbox poll) without await so the hook sends first and wins the race. Behavioral rules in the boot-gate inject block suppress some of the agent output but compliance isn't 100%.
Is { handled: true } supposed to suppress the agent on message:received? If so, is this a known issue in 2026.4.12? If not, is there a supported mechanism for a hook to own a message entirely and prevent the agent from responding?