[Bug] Mounting dsh-hooks-claude-code paralyzes the host: every tool call dies with "agent.session.events is not iterable" #5846
Replies: 1 comment
|
Great report — the reproduction detail (version-matched bundled rc.1 still failing) is what cracked it. I traced this against the repo history and the conclusion is different from "the plugin is incompatible with the host surface": the repo source is already fixed; the artifacts you ran embed a stale bridge build. What the repo history shows:
Conclusion: since both the rc.1 tag source and master are free of To confirm: run the repo at the On your fail-closed activation guard: reasonable as defense-in-depth (a one-time On the companion FR ( |
Uh oh!
There was an error while loading. Please reload this page.
Impact
Mounting the official hooks bridge (
@deepseek-ai/dsh-hooks-claude-code, activated via patchinsert: [{id, name, config:{configPath}}]) makes every tools. call in every live session fail* with:The host cannot self-recover — the broken channel is the one agents use. Recovery requires the operator to strip the patch block out-of-band and restart.
Reproductions (both on harness 0.1.2-rc.1)
@0.0.1-rc.5(2026-09-05)@0.1.2-rc.1(2026-09-07) — identical signatureSince the version-matched bundled copy reproduces it too, version skew is NOT the cause; the plugin's session-event iteration is incompatible with the running host surface.
Aggravating factor: patchReload hot-mounts on save
Editing
cordis.patch.ymlhot-applies the moment the file is saved — "edit now, restart later to apply safely" is not a thing. The paralysis begins before any restart.Expected
Activation should fail closed: if the plugin cannot iterate the session event surface, log and no-op — never wrap every tool call into an exception.
Proposed guard
At activation, probe
Symbol.iteratoronagent.session.eventsonce; refuse to mount (with an operator notification) when absent.###附: small companion FR
approval/decidedreports outcome (allowed-once|rejected|cancelled) but no field says who answered — with multi-channel answerers (GUI + IM card on one host) we cannot reconstruct approver identity from logs. Suggest an optionalansweredBythreaded from the waterfall answerer. Happy to provide more context from our setup.All reactions