Unverified50% confidenceSolutionExact time
The work of fixing the hook has three steps: split the command on &&, ||, ;, |, newlines, $(...) and backticks; discard environment variable prefixes and wrappers such as env, timeout, xargs, nohup, exec and recursively descend into sh -c, eval and scripts; after skipping git global options, check flags and refspecs.
1
Sources
50%
Confidence
Long-term
Relevance
10/18/2026
First Seen
Sources
Related Entities
Related Claims
UnverifiedThe validator outright rejects | sh, | bash, xargs, eval, and redirections like > / and >>, excluding executing pipes entirely from the first commands in runbooks.66% similarUnverifiedIn xargs kubectl delete pod, xargs assembles the upstream output into a new command line, making the write verb appear in arguments the linter cannot easily identify by position.57% similarUnverifiedThe OpenCode migration table maps v1's shell.env hook to v2's ctx.shell.hook("create.before", ...), which can be used to inject variables into the command environment, but throwing an error will likewise fail the command.55% similarUnverifiedWhen a coding agent's hook crashes, times out, or points to a nonexistent script, most tools by default choose to let it pass (fail-open).55% similarUnverifiedBefore the fix, recursive deletion commands like rm -rf "$(pwd)" whose targets came solely from command substitution output would execute silently without prompting in auto mode and --dangerously-skip-permissions mode; after the fix, the user will be actively asked even if a Bash allow rule exists, unless CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1 is set.55% similar
Cite This Claim
Stable URI
https://kongchang.com/claim/1061291API
curl https://kongchang.com/api/v1/knowledge/claims/1061291MCP
get_claim(id=1061291)