forfrossen
af2dba2328
fix(hooks): detect Claude Code via stdin session_id ( closes #2520 ) ( #2521 )
...
* fix(hooks): detect Claude Code via stdin session_id, not filtered env (#2520 )
The #2344 fix assumed `CLAUDECODE` would propagate to hook subprocesses.
On Claude Code v2.1.116 it doesn't — Claude Code applies a separate env
filter to PreToolUse hook commands that drops bare CLAUDECODE and
CLAUDE_SESSION_ID, keeping only CLAUDE_CODE_*-prefixed vars plus
CLAUDE_PROJECT_DIR. As a result every Edit/Write on an existing file
produced a redundant READ-BEFORE-EDIT advisory inside Claude Code.
Use `data.session_id` from the hook's stdin JSON as the primary Claude
Code signal (it's part of Claude Code's documented PreToolUse hook-input
schema). Keep CLAUDE_CODE_ENTRYPOINT / CLAUDE_CODE_SSE_PORT env checks
as propagation-verified fallbacks, and keep the legacy
CLAUDE_SESSION_ID / CLAUDECODE checks for back-compat and
future-proofing.
Add tests/bug-2520-read-guard-hook-subprocess-env.test.cjs, which spawns
the hook with an env mirroring the actual Claude Code hook-subprocess
filter. Extend the legacy test harnesses to also strip the
propagation-verified CLAUDE_CODE_* vars so positive-path tests keep
passing when the suite itself runs inside a Claude Code session (same
class of leak as #2370 / PR #2375 , now covering the new detection
signals).
Non-Claude-host behavior (OpenCode / MiniMax) is unchanged: with no
`session_id` on stdin and no CLAUDE_CODE_* env var, the advisory still
fires.
Closes #2520
* test(2520): isolate session_id signal from env fallbacks in regression test
Per reviewer feedback (Copilot + CodeRabbit on #2521 ): the session_id
isolation test used the helper's default CLAUDE_CODE_ENTRYPOINT /
CLAUDE_CODE_SSE_PORT values, so the env fallback would rescue the skip
even if the primary `data.session_id` check regressed. Pass an explicit
env override that clears those fallbacks, so only the stdin `session_id`
signal can trigger the skip.
Other cases (env-only fallback, negative / non-Claude host) already
override env appropriately.
---------
Co-authored-by: forfrossen <forfrossensvart@gmail.com >
2026-04-22 10:41:58 -04:00
..
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-12 17:56:19 -04:00
2026-04-17 10:47:08 -04:00
2026-04-12 09:40:20 -04:00
2026-04-11 03:39:29 -07:00
2026-04-20 09:31:34 -04:00
2026-04-10 10:49:00 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-10 12:30:46 -04:00
2026-04-11 03:30:05 -07:00
2026-04-07 17:27:20 -04:00
2026-04-05 23:07:52 -04:00
2026-04-04 14:29:03 -04:00
2026-04-15 22:46:31 -04:00
2026-04-15 14:59:18 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 07:58:27 -04:00
2026-04-04 07:24:31 -04:00
2026-04-11 08:50:44 -04:00
2026-04-07 08:13:52 -04:00
2026-04-05 17:49:20 -04:00
2026-04-05 17:32:18 -04:00
2026-04-05 18:05:32 -04:00
2026-04-05 18:20:11 -04:00
2026-04-19 16:35:32 -05:00
2026-04-07 17:36:47 -04:00
2026-04-07 17:26:29 -04:00
2026-04-07 17:19:10 -04:00
2026-04-19 16:35:32 -05:00
2026-04-10 10:48:00 -04:00
2026-04-11 03:35:00 -07:00
2026-04-11 03:37:34 -07:00
2026-04-10 10:50:17 -04:00
2026-04-10 11:19:32 -04:00
2026-04-10 11:25:55 -04:00
2026-04-10 11:15:59 -04:00
2026-04-10 12:07:13 -04:00
2026-04-10 21:37:08 -04:00
2026-04-19 16:35:32 -05:00
2026-04-15 14:58:41 -04:00
2026-04-17 09:20:26 -04:00
2026-04-17 09:29:59 -04:00
2026-04-22 10:41:58 -04:00
2026-04-17 09:26:49 -04:00
2026-04-17 09:20:42 -04:00
2026-04-20 10:10:16 -04:00
2026-04-20 18:37:42 -04:00
2026-04-20 10:10:16 -04:00
2026-04-20 10:10:16 -04:00
2026-04-20 10:09:33 -04:00
2026-04-20 10:09:33 -04:00
2026-04-20 10:09:33 -04:00
2026-04-20 10:09:33 -04:00
2026-04-20 10:11:00 -04:00
2026-04-20 10:10:16 -04:00
2026-04-20 10:11:00 -04:00
2026-04-19 15:40:50 -05:00
2026-04-20 10:08:46 -04:00
2026-04-20 10:08:46 -04:00
2026-04-20 18:37:32 -04:00
2026-04-21 09:46:01 -04:00
2026-04-21 10:10:45 -04:00
2026-04-21 21:20:27 -04:00
2026-04-21 10:10:10 -04:00
2026-04-21 21:35:22 -04:00
2026-04-22 10:41:58 -04:00
2026-04-21 20:33:43 -04:00
2026-04-21 20:33:24 -04:00
2026-04-21 21:18:34 -04:00
2026-04-21 21:18:58 -04:00
2026-04-07 08:13:58 -04:00
2026-04-17 19:53:16 -05:00
2026-04-04 14:29:03 -04:00
2026-04-06 15:14:02 -04:00
2026-04-11 09:15:36 -04:00
2026-04-15 22:46:31 -04:00
2026-04-04 15:12:58 -04:00
2026-04-20 09:31:34 -04:00
2026-04-10 13:58:16 -04:00
2026-04-04 14:29:03 -04:00
2026-04-11 09:19:32 -04:00
2026-04-12 08:10:30 -04:00
2026-04-20 09:54:35 -04:00
2026-04-10 10:46:21 -04:00
2026-04-16 17:13:44 -04:00
2026-04-20 09:31:34 -04:00
2026-04-15 14:59:35 -04:00
2026-04-05 17:02:20 -04:00
2026-04-10 10:56:09 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 09:31:34 -04:00
2026-04-07 17:25:11 -04:00
2026-04-20 09:39:05 -04:00
2026-04-15 16:46:10 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 10:08:49 -04:00
2026-04-20 10:08:40 -04:00
2026-04-11 09:20:27 -04:00
2026-04-04 14:29:03 -04:00
2026-04-11 09:18:49 -04:00
2026-04-19 23:12:23 -04:00
2026-04-05 09:15:41 -04:00
2026-04-15 16:23:09 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-01 08:47:31 -06:00
2026-04-21 08:40:39 -04:00
2026-04-20 18:21:43 -04:00
2026-04-20 18:27:55 -04:00
2026-04-20 18:20:08 -04:00
2026-04-20 18:21:35 -04:00
2026-04-20 18:25:24 -04:00
2026-04-20 18:19:14 -04:00
2026-04-20 18:19:21 -04:00
2026-04-20 18:21:23 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 09:54:35 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 18:33:27 -04:00
2026-04-11 09:28:16 -04:00
2026-04-05 18:33:17 -04:00
2026-04-15 22:46:31 -04:00
2026-04-04 14:29:03 -04:00
2026-04-11 23:47:50 -04:00
2026-04-15 22:46:31 -04:00
2026-04-16 17:08:44 -04:00
2026-04-10 21:30:13 -04:00
2026-04-19 15:55:37 -05:00
2026-04-20 10:08:46 -04:00
2026-04-15 22:46:31 -04:00
2026-04-04 14:37:54 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:15:30 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 09:31:34 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 18:33:24 -04:00
2026-04-17 17:12:34 -05:00
2026-04-15 14:59:07 -04:00
2026-04-17 09:20:26 -04:00
2026-04-20 10:08:40 -04:00
2026-04-20 09:54:35 -04:00
2026-04-18 08:42:36 -05:00
2026-04-15 14:59:24 -04:00
2026-04-20 09:31:34 -04:00
2026-04-20 09:39:05 -04:00
2026-04-20 09:39:05 -04:00
2026-04-10 12:30:24 -04:00
2026-04-10 11:47:22 -04:00
2026-04-05 19:09:14 -04:00
2026-04-07 17:39:29 -04:00
2026-04-14 17:57:38 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-15 14:59:12 -04:00
2026-04-07 17:26:31 -04:00
2026-04-15 22:46:31 -04:00
2026-04-06 08:54:18 -04:00
2026-04-04 15:52:13 -04:00
2026-04-05 17:03:17 -04:00
2026-04-10 21:55:44 -04:00
2026-04-05 18:05:32 -04:00
2026-04-07 08:13:46 -04:00
2026-04-11 09:02:30 -04:00
2026-04-04 14:29:03 -04:00
2026-04-03 12:47:24 +03:00
2026-04-12 17:56:39 -04:00
2026-04-14 17:57:38 -04:00
2026-04-06 15:13:23 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-16 17:15:29 -04:00
2026-04-04 14:29:03 -04:00
2026-04-11 15:02:55 -04:00
2026-04-11 09:16:11 -04:00
2026-04-12 15:56:20 -04:00
2026-04-20 10:08:52 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 09:54:35 -04:00
2026-04-10 12:41:59 -04:00
2026-04-20 09:31:34 -04:00
2026-04-20 18:09:02 -04:00
2026-04-11 10:26:27 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 12:41:17 -04:00
2026-04-15 07:39:48 -06:00
2026-04-04 14:29:03 -04:00
2026-04-15 16:23:18 -04:00
2026-04-16 17:22:31 -04:00
2026-04-11 09:34:29 -04:00
2026-04-17 10:11:08 -04:00
2026-04-05 10:23:41 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 10:23:41 -04:00
2026-04-15 22:46:31 -04:00
2026-04-11 11:19:47 -04:00
2026-04-10 21:55:44 -04:00
2026-04-04 14:29:03 -04:00
2026-04-22 10:41:58 -04:00
2026-04-16 17:22:31 -04:00
2026-04-10 12:29:25 -04:00
2026-04-06 15:20:06 -04:00
2026-04-10 10:44:15 -04:00
2026-04-04 07:14:24 -04:00
2026-04-04 14:29:03 -04:00
2026-04-15 14:59:56 -04:00
2026-04-05 17:04:33 -04:00
2026-04-01 16:53:20 -04:00
2026-04-20 10:08:49 -04:00
2026-04-04 14:29:03 -04:00
2026-03-24 13:33:58 -04:00
2026-04-20 10:08:18 -04:00
2026-04-12 17:56:00 -04:00
2026-04-04 07:10:21 -04:00
2026-04-04 14:29:03 -04:00
2026-04-10 13:55:27 -04:00
2026-04-15 10:35:29 -04:00
2026-04-15 22:46:31 -04:00
2026-04-11 15:02:55 -04:00
2026-04-20 10:08:43 -04:00
2026-04-04 14:29:03 -04:00
2026-04-11 15:39:50 -04:00
2026-04-11 09:15:00 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 17:49:20 -04:00
2026-04-20 09:54:35 -04:00
2026-04-15 22:46:31 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 10:08:18 -04:00
2026-04-17 14:45:03 -04:00
2026-04-21 10:10:10 -04:00
2026-04-12 17:56:19 -04:00
2026-04-15 22:46:31 -04:00
2026-04-11 03:24:49 -07:00
2026-04-02 18:55:17 -03:00
2026-04-10 12:29:09 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 08:40:37 -04:00
2026-04-05 22:54:12 -04:00
2026-04-05 12:30:24 -04:00
2026-04-15 22:46:31 -04:00
2026-04-02 21:36:36 -05:00
2026-04-04 14:29:03 -04:00
2026-04-05 11:11:38 -04:00
2026-04-10 12:30:08 -04:00
2026-04-04 14:29:03 -04:00