Neil and Chad Tolkien
b95b11cc6e
perf(codex): resolve the Codex CLI once per spawn recheck, off the main thread on Windows ( #35967 )
...
Every native terminal spawn schedules a Codex hook reconcile, which resolved
the Codex path twice with a synchronous stat scan of PATH and install dirs
(~50ms main-process block per spawn on Windows with a long PATH and no Codex).
The reconcile now resolves the path once and passes it to both the live
lookup and the saved-answer read. On Windows, where each stat is slow, that
lookup runs every read (PATH candidates, nvm dirs and aliases, install dirs)
through fs/promises; macOS and Linux keep the sync scan, now run once. Sync
and async share one lookup that yields its reads, so they cannot diverge.
Hook rechecks stay immediate on every spawn and nothing is cached. A spawn
that lands before a run's hook-file pass (while it is still finding Codex or
waiting for its answer) gets one trailing rerun, so an install or upgrade
that moved Codex mid-run cannot leave hooks unchecked.
Fixes #35565
Co-authored-by: Chad Tolkien <chad@sodadigital.com.au >
2026-10-29 06:58:26 -07:00
..
2026-10-28 16:10:23 -07:00
2026-10-29 02:09:23 -07:00
2026-10-29 05:10:19 -07:00
2026-10-26 16:01:56 -07:00
2026-10-29 05:58:10 -07:00
2026-10-29 05:58:10 -07:00
2026-10-25 19:45:39 -07:00
2026-10-28 16:08:01 -07:00
2026-10-25 19:45:39 -07:00
2026-10-29 05:32:55 -07:00
2026-10-29 01:49:44 -07:00
2026-10-29 01:49:44 -07:00
2026-10-29 01:53:59 -07:00
2026-10-29 06:55:57 -07:00
2026-10-28 19:50:20 -07:00
2026-10-25 23:41:49 -07:00
2026-10-28 23:55:31 -07:00
2026-10-27 08:28:06 -07:00
2026-10-29 06:58:26 -07:00
2026-10-29 06:58:26 -07:00
2026-10-29 06:58:26 -07:00
2026-10-26 15:11:00 -07:00
2026-10-25 15:30:00 -07:00
2026-10-27 23:04:23 -07:00
2026-10-26 19:25:54 -04:00
2026-10-25 15:30:00 -07:00
2026-10-28 14:12:18 -07:00
2026-10-23 13:15:45 -07:00
2026-10-25 15:30:00 -07:00
2026-10-29 03:54:50 -07:00
2026-10-25 15:30:00 -07:00
2026-10-23 16:27:37 -07:00
2026-10-25 23:41:49 -07:00
2026-10-25 15:30:00 -07:00
2026-10-25 15:30:00 -07:00
2026-10-29 00:03:35 -07:00
2026-10-29 07:06:15 +00:00
2026-10-28 05:15:44 -07:00
2026-10-28 17:29:10 -07:00
2026-10-25 15:30:00 -07:00
2026-10-28 06:42:53 -07:00
2026-10-29 01:52:18 -07:00
2026-10-29 01:49:44 -07:00
2026-10-29 03:48:58 -07:00
2026-10-28 22:39:49 -07:00
2026-10-25 15:30:00 -07:00
2026-10-26 22:58:55 -07:00
2026-10-25 23:41:49 -07:00
2026-10-26 15:16:27 -07:00
2026-10-28 17:04:24 -07:00
2026-10-28 22:26:40 -07:00
2026-10-29 06:54:51 -07:00
2026-10-27 05:52:14 -07:00
2026-10-28 14:49:17 -07:00
2026-10-26 18:27:39 +00:00
2026-10-28 20:58:25 -07:00
2026-10-25 15:30:00 -07:00
2026-10-27 04:08:12 -07:00
2026-10-28 20:40:34 -07:00
2026-10-28 14:49:17 -07:00
2026-10-28 22:11:28 -07:00
2026-10-23 19:07:32 -07:00
2026-10-25 20:27:18 -07:00
2026-10-29 02:29:16 -07:00
2026-10-28 09:31:22 -07:00
2026-10-27 20:13:46 -07:00
2026-10-29 00:08:48 -07:00
2026-10-25 19:22:12 -07:00
2026-10-23 19:07:32 -07:00
2026-10-26 22:58:55 -07:00
2026-10-23 19:07:32 -07:00
2026-10-29 04:24:02 -07:00
2026-10-26 15:16:27 -07:00
2026-10-29 02:29:16 -07:00
2026-10-25 04:05:46 -07:00
2026-10-25 22:57:11 -07:00
2026-10-28 03:48:39 -07:00
2026-10-25 04:05:46 -07:00
2026-10-28 17:29:10 -07:00
2026-10-25 04:05:46 -07:00
2026-10-25 04:05:46 -07:00
2026-10-28 19:41:20 -07:00
2026-10-29 00:45:02 -07:00
2026-10-29 06:54:51 -07:00
2026-10-28 16:08:01 -07:00
2026-10-29 00:15:36 -07:00
2026-10-29 03:49:17 -07:00
2026-10-28 18:01:42 -07:00
2026-10-29 03:32:56 -07:00
2026-10-29 00:27:20 -07:00
2026-10-29 05:42:45 -07:00
2026-10-28 16:08:01 -07:00
2026-10-25 04:05:46 -07:00
2026-10-28 16:15:09 -07:00
2026-10-25 04:05:46 -07:00
2026-10-28 14:23:58 -07:00
2026-10-29 05:32:55 -07:00
2026-10-25 04:05:46 -07:00
2026-10-28 23:14:52 -07:00
2026-10-28 22:31:08 -07:00
2026-10-29 06:34:22 +00:00
2026-10-27 20:38:35 -07:00
2026-10-29 04:28:00 -07:00
2026-10-25 04:05:46 -07:00
2026-10-29 06:52:46 -07:00
2026-10-29 01:50:26 -07:00
2026-10-29 06:26:41 -07:00
2026-10-29 02:09:23 -07:00
2026-10-27 03:52:06 -07:00
2026-10-29 02:00:52 -07:00
2026-10-26 17:55:33 -07:00
2026-10-28 14:49:17 -07:00
2026-10-29 02:00:52 -07:00
2026-10-27 22:04:12 +00:00
2026-10-25 04:05:46 -07:00
2026-10-29 06:55:57 -07:00
2026-10-25 23:41:49 -07:00
2026-10-24 11:56:22 -07:00
2026-10-23 11:06:37 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 11:06:37 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 11:06:37 -07:00
2026-10-23 11:06:37 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 11:06:37 -07:00
2026-10-23 09:24:17 -07:00
2026-10-25 01:00:18 -07:00
2026-10-24 22:56:46 -07:00
2026-10-23 09:24:17 -07:00
2026-10-22 19:53:36 -04:00
2026-10-26 15:15:52 -07:00
2026-10-24 22:56:46 -07:00
2026-10-24 20:31:05 -07:00
2026-10-24 22:56:46 -07:00
2026-10-24 22:56:46 -07:00
2026-10-26 22:30:59 -07:00
2026-10-26 22:30:59 -07:00
2026-10-25 19:45:39 -07:00
2026-10-28 19:41:20 -07:00
2026-10-25 19:45:39 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-27 12:31:10 -07:00
2026-10-26 15:28:41 -07:00
2026-10-25 20:09:25 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-25 00:50:59 -07:00
2026-10-25 20:48:32 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-26 11:18:50 -07:00
2026-10-27 03:20:46 +00:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-26 15:22:58 -07:00
2026-10-26 15:22:58 -07:00
2026-10-24 22:56:46 -07:00
2026-10-24 22:56:46 -07:00
2026-10-26 06:28:29 -07:00
2026-10-26 06:28:29 -07:00
2026-10-26 06:28:29 -07:00
2026-10-26 13:50:11 -07:00
2026-10-26 13:50:11 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-23 09:24:17 -07:00
2026-10-28 08:21:24 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 17:50:37 -07:00
2026-10-23 09:50:47 -07:00
2026-10-25 19:58:41 -07:00
2026-10-23 17:50:37 -07:00
2026-10-29 01:52:18 -07:00
2026-10-23 09:50:47 -07:00
2026-10-29 01:52:18 -07:00
2026-10-25 19:58:41 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 09:50:47 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-29 06:52:46 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 09:50:47 -07:00
2026-10-29 03:43:42 -07:00
2026-10-29 03:43:42 -07:00
2026-10-23 09:50:47 -07:00
2026-10-23 11:06:55 -07:00
2026-10-25 22:57:11 -07:00
2026-10-26 02:33:13 -07:00
2026-10-26 02:33:13 -07:00
2026-10-29 02:00:52 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-21 04:06:49 -07:00
2026-10-27 12:31:10 -07:00
2026-10-28 15:15:26 -07:00
2026-10-23 11:06:55 -07:00
2026-10-27 12:31:10 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-28 00:47:18 -07:00
2026-10-28 00:47:18 -07:00
2026-10-28 00:47:18 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-26 02:33:13 -07:00
2026-10-26 02:33:13 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-20 21:42:36 -04:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-23 11:06:55 -07:00
2026-10-24 11:56:22 -07:00
2026-10-24 11:56:22 -07:00
2026-10-28 00:02:37 -07:00
2026-10-25 19:22:12 -07:00
2026-10-26 05:14:19 -07:00
2026-10-23 11:42:22 -07:00
2026-10-28 15:15:26 -07:00
2026-10-28 15:15:26 -07:00
2026-10-29 01:52:18 -07:00
2026-10-29 01:52:18 -07:00
2026-10-29 01:52:18 -07:00
2026-10-23 11:42:22 -07:00
2026-10-23 11:42:22 -07:00
2026-10-28 16:15:09 -07:00
2026-10-23 11:42:22 -07:00
2026-10-23 11:42:22 -07:00
2026-10-23 11:42:22 -07:00
2026-10-23 11:42:22 -07:00
2026-10-25 01:04:00 -07:00
2026-10-25 01:04:00 -07:00
2026-10-23 11:42:22 -07:00
2026-10-25 01:04:00 -07:00
2026-10-25 04:05:46 -07:00
2026-10-23 11:42:22 -07:00
2026-10-23 11:42:22 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 17:01:51 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 06:28:29 -07:00
2026-10-24 11:56:22 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 18:56:02 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 01:52:18 -07:00
2026-10-29 01:52:18 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 01:52:18 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 18:56:02 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 01:52:18 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 15:27:24 -07:00
2026-10-27 15:27:24 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-25 03:05:27 -07:00
2026-10-25 03:05:27 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 00:50:37 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-25 19:22:12 -07:00
2026-10-24 00:13:25 -07:00
2026-10-23 13:15:45 -07:00
2026-10-24 11:56:22 -07:00
2026-10-24 11:56:22 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 22:21:44 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 00:02:37 -07:00
2026-10-28 00:02:37 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-25 23:56:40 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 02:00:52 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 14:09:01 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 02:00:52 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 14:09:01 -07:00
2026-10-25 23:56:40 -07:00
2026-10-25 23:56:40 -07:00
2026-10-26 14:09:01 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 02:00:52 -07:00
2026-10-29 02:00:52 -07:00
2026-10-24 19:37:19 -07:00
2026-10-26 14:09:01 -07:00
2026-10-26 23:51:44 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 02:00:52 -07:00
2026-10-29 02:00:52 -07:00
2026-10-26 23:51:44 -07:00
2026-10-26 23:51:44 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 14:09:01 -07:00
2026-10-26 23:51:44 -07:00
2026-10-26 23:51:44 -07:00
2026-10-29 02:00:52 -07:00
2026-10-29 02:00:52 -07:00
2026-10-26 23:51:44 -07:00
2026-10-26 23:51:44 -07:00
2026-10-29 02:00:52 -07:00
2026-10-29 02:00:52 -07:00
2026-10-26 23:51:44 -07:00
2026-10-26 23:51:44 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 14:35:50 -07:00
2026-10-28 00:18:29 -07:00
2026-10-26 11:18:50 -07:00
2026-10-26 11:18:50 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 03:39:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 06:46:57 -07:00
2026-10-25 20:41:29 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 15:16:27 -07:00
2026-10-22 02:19:04 -07:00
2026-10-24 22:56:46 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 22:58:55 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-29 01:04:20 -07:00
2026-10-28 18:13:51 -04:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 13:15:45 -07:00
2026-10-24 11:56:22 -07:00
2026-10-23 13:15:45 -07:00
2026-10-19 11:39:54 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 12:31:10 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-25 13:40:31 -07:00
2026-10-23 13:15:45 -07:00
2026-10-24 11:56:22 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 12:40:56 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 12:31:10 -07:00
2026-10-27 12:31:10 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 12:31:10 -07:00
2026-10-27 12:31:10 -07:00
2026-10-26 06:11:15 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-25 03:57:01 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 18:16:49 -07:00
2026-10-28 18:16:49 -07:00
2026-10-29 01:52:18 -07:00
2026-10-29 01:52:18 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 18:24:26 -07:00
2026-10-27 03:55:25 -07:00
2026-10-28 17:32:51 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 16:15:09 -07:00
2026-10-28 10:52:37 -07:00
2026-10-24 11:56:22 -07:00
2026-10-28 07:56:04 -07:00
2026-10-23 13:15:45 -07:00
2026-10-26 17:55:33 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 21:56:13 -07:00
2026-10-28 16:10:23 -07:00
2026-10-28 21:56:13 -07:00
2026-10-29 06:54:51 -07:00
2026-10-29 00:56:33 -07:00
2026-10-29 00:56:33 -07:00
2026-10-27 16:19:13 -07:00
2026-10-26 21:17:07 -07:00
2026-10-28 00:35:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-27 13:11:31 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00
2026-10-28 16:10:23 -07:00
2026-10-23 13:15:45 -07:00
2026-10-23 13:15:45 -07:00