From 1491b7dd9c992ef0ad2b763f3e450befaf25c47f Mon Sep 17 00:00:00 2001 From: JJ Liebig Date: Tue, 28 Jul 2026 03:13:35 +0200 Subject: fix: ignore nested codex session reports (#1927) * fix: ignore nested codex session reports refs #1789 * test: cover matching codex thread id --------- Co-authored-by: Can Celik --- src/integration/assets/codex/herdr-agent-state.ps1 | 4 +++- src/integration/assets/codex/herdr-agent-state.sh | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/integration/assets/codex') diff --git a/src/integration/assets/codex/herdr-agent-state.ps1 b/src/integration/assets/codex/herdr-agent-state.ps1 index d837b78a..b578e7b9 100644 --- a/src/integration/assets/codex/herdr-agent-state.ps1 +++ b/src/integration/assets/codex/herdr-agent-state.ps1 @@ -2,7 +2,7 @@ # managed by herdr; reinstalling or updating the integration overwrites this file. # add custom hooks beside this file instead of editing it. # HERDR_INTEGRATION_ID=codex -# HERDR_INTEGRATION_VERSION=6 +# HERDR_INTEGRATION_VERSION=7 param([string]$Action = "") @@ -21,6 +21,8 @@ if ($payload.hook_event_name -and $payload.hook_event_name -ne "SessionStart") { $sessionId = $payload.session_id if ([string]::IsNullOrWhiteSpace($sessionId)) { exit 0 } +if ([string]::IsNullOrWhiteSpace($payload.transcript_path)) { exit 0 } +if (-not [string]::IsNullOrWhiteSpace($env:CODEX_THREAD_ID) -and $env:CODEX_THREAD_ID -ne $sessionId) { exit 0 } $seq = [DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds() try { diff --git a/src/integration/assets/codex/herdr-agent-state.sh b/src/integration/assets/codex/herdr-agent-state.sh index b3b08a78..687a8181 100644 --- a/src/integration/assets/codex/herdr-agent-state.sh +++ b/src/integration/assets/codex/herdr-agent-state.sh @@ -3,7 +3,7 @@ # managed by herdr; reinstalling or updating the integration overwrites this file. # add custom hooks beside this file instead of editing it. # HERDR_INTEGRATION_ID=codex -# HERDR_INTEGRATION_VERSION=6 +# HERDR_INTEGRATION_VERSION=7 set -eu @@ -56,6 +56,12 @@ request_id = f"{source}:{int(time.time() * 1000)}:{random.randrange(1_000_000):0 report_seq = time.time_ns() session_id = hook_input.get("session_id") agent_session_id = session_id if isinstance(session_id, str) and session_id else None +transcript_path = hook_input.get("transcript_path") +if not isinstance(transcript_path, str) or not transcript_path.strip(): + raise SystemExit(0) +inherited_session_id = os.environ.get("CODEX_THREAD_ID") +if inherited_session_id and inherited_session_id != agent_session_id: + raise SystemExit(0) session_start_source = hook_input.get("source") if hook_event_name == "SessionStart" else None if not isinstance(session_start_source, str) or not session_start_source: session_start_source = None -- cgit v1.2.3