fix(hooks): fail closed on crash in the remaining blocking hook rows
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
Research direction
Start by reading the hook rows for worktree-add-containment, pr-body-linkage, pr-linkage-mcp, test-weaken, and run-python-hook, along with the exec-bash.mjs header and #8569. Update each listed blocking row so crashes, missing bash, node start failures, timeouts, and Git Bash crashes block the call; the issue leaves the mechanism to the deferred-hardening review. Done when every listed failure mode denies the tool call.
Written by the indexing model from the issue text.
Description
Refs: #8569, #8282
Outcome
Every blocking hook row whose crash should deny the tool call fails closed: a bash crash, missing bash, a node start failure, the 60 s timeout, or a Git Bash crash read as exit 0 blocks the call instead of allowing it.
Current behavior
#8569 (PR #8674) adds an opt-in --fail-closed flag to exec-bash.mjs, passed only by the guardrails guard rows. These blocking rows in other plugins do not pass it, so a crash in any of the cases above allows the call (GitHub Security & Cost review of #8674 at e8309efd4b, 2026-10-21):
- source-control:
worktree-add-containment,pr-body-linkage,pr-linkage-mcp - testing:
test-weaken - disk-hygiene:
run-python-hook
Desired behavior
Each row above fails closed on every failure mode listed in Outcome. Claude Code's hook onFailure: "block" setting (v2.1.295+, https://code.claude.com/docs/en/hooks) covers all of them, including the cases --fail-closed cannot see (missing bash, node start failure, timeout).
Out of scope
- Non-blocking rows (formatters, linters), whose fail-open is deliberate (
exec-bash.mjsheader). - The guardrails rows, covered by #8569.
Notes
Severity low; queued for the #8282 deferred-hardening review (2026-11-18) unless the owner wants it sooner. Which mechanism (onFailure: "block" per row vs --fail-closed) is a design choice for that review.
- Dominant language
- Shell
- Stars
- 22
- Forks
- 2
- Avg merge
- 7h 57m
- Merged PRs (30d)
- 938
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from melodic-software/claude-code-plugins
-
priority: low
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
melodic-software/claude-code-plugins#8831 · 1 comment ·
Maintainers usually reply within 1 day
-
priority: medium status: confirmed
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
melodic-software/claude-code-plugins#8801 ·
Maintainers usually reply within 1 day
-
fix(links): make the online link check green (23 errors since 2026-10-11)Possibly taken A pull request linked to this issue is open or already merged. Openpriority: medium
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
melodic-software/claude-code-plugins#8730 · 1 comment ·
Maintainers usually reply within 1 day
-
priority: low
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
melodic-software/claude-code-plugins#8709 · 1 comment ·
Maintainers usually reply within 1 day
-
fix(source-control): ready-hold check treats a Hold: line that says do not merge as a flip holdOpenpriority: medium
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
melodic-software/claude-code-plugins#8708 · 1 comment ·
Maintainers usually reply within 1 day
All issues in melodic-software/claude-code-plugins
Similar issues
-
data only (no code) good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
kind/bug needs-triage
Difficulty 1/5 Under an hour Newbie friendliness 88/100
projectbluefin/common#1521 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
upstream-release
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
pypa/advisory-database#401 · 3 comments ·
Maintainers usually reply within 1 day