Three stdin handlers in run-hook.mjs can start a hook. Two of them check whether it already ran. The third set the flag and never read it. Turn both dials on to see what reached stdout.
| handler | line | guards on stdinClosed? |
|---|---|---|
| process.stdin.on('end') | :442 | yes, if (!stdinClosed) |
| process.stdin.on('error') | :459 | yes, if (!stdinClosed) |
| process.stdin.on('data') | :421 | NO: sets it, never reads it |
The defect predates CC 2.1.248. What that release changed is the consequence:
| CC version | what happens to {...}{...} |
|---|---|
| 2.1.247 and earlier | silently treated as plain text |
| 2.1.248 onward | reported hook error, result discarded |