Summary
CodingBuddy's keyword-mode experience in v5.3.0 is not uniformly broken, but it is inconsistent across installation states because the plugin currently relies on a split bootstrap design:
hooks/hooks.json does not include UserPromptSubmit
session-start.py bootstraps a global UserPromptSubmit hook into ~/.claude/settings.json
- upgraded installs can keep running an older global hook instead of converging on the current self-contained hook
The result is that fresh installs and upgraded installs can behave differently, and stale global hook state can mask or override the intended standalone-capable path.
What this issue is really about
This is a parent issue for the plugin's mode-bootstrap architecture and legacy-hook migration gap.
It is not an assertion that every v5.3.0 user always gets raw Claude with no mode behavior. Fresh installs can still bootstrap correctly via SessionStart. The more accurate failure boundary is:
- bootstrap behavior is split between plugin-local metadata and global settings mutation
- upgraded installs can retain stale global hook state
- users may see inconsistent behavior across environments
Scope
In scope:
- SessionStart-based bootstrap of the global
UserPromptSubmit hook
- stale legacy global hook migration
- investigation of plugin install/cache artifacts that affect MCP-mode discovery
- fallback and diagnostic hardening for mode-detection behavior
Out of scope:
- unrelated TUI behavior
- cosmetic documentation changes with no effect on bootstrap or migration
Acceptance criteria
- fresh installs and upgraded installs converge on the same current self-contained mode-detection behavior
- stale legacy global hook state no longer overrides or masks the intended path
- plugin install/bootstrap behavior is clearly diagnosable
- parent and child issues describe the actual current architecture accurately
Related sub-issues
Notes
- current
session-start.py intentionally installs a global UserPromptSubmit hook into ~/.claude/settings.json
- the highest-confidence concrete bug in this family is the stale-hook migration problem, not a universal total failure of the keyword workflow
Summary
CodingBuddy's keyword-mode experience in v5.3.0 is not uniformly broken, but it is inconsistent across installation states because the plugin currently relies on a split bootstrap design:
hooks/hooks.jsondoes not includeUserPromptSubmitsession-start.pybootstraps a globalUserPromptSubmithook into~/.claude/settings.jsonThe result is that fresh installs and upgraded installs can behave differently, and stale global hook state can mask or override the intended standalone-capable path.
What this issue is really about
This is a parent issue for the plugin's mode-bootstrap architecture and legacy-hook migration gap.
It is not an assertion that every v5.3.0 user always gets raw Claude with no mode behavior. Fresh installs can still bootstrap correctly via SessionStart. The more accurate failure boundary is:
Scope
In scope:
UserPromptSubmithookOut of scope:
Acceptance criteria
Related sub-issues
.mcp.jsoncodingbuddy mcpNotes
session-start.pyintentionally installs a globalUserPromptSubmithook into~/.claude/settings.json