Abhinav
6f647caa9b
Support asynchronous command hooks ( #37533 )
...
## Why
Hook configurations can mark command handlers as asynchronous, but Codex previously skipped those handlers outside `SessionEnd`.
## What changed
- Run asynchronous command hooks in the background with a per-session concurrency limit, while keeping `SessionEnd` hooks synchronous.
- Prevent asynchronous hooks from blocking, stopping, rewriting, or otherwise controlling the operation that launched them.
- Deliver warnings and additional context at safe turn boundaries: inject results into an active turn after sampling, or buffer them ahead of the next user prompt when the session is idle.
- Preserve in-flight hooks across configuration reloads, scope spilled output to the thread, and abort outstanding work during session shutdown.
## Testing
Add unit and integration coverage for background scheduling, concurrency, output parsing, active and idle result delivery, configuration reloads, and shutdown cleanup.
GitOrigin-RevId: 8094552e4afe7b47b09a61bb575bb20f4e491d8d
2026-08-08 04:24:12 +00:00
..
2026-08-07 22:41:20 +00:00
2026-06-08 13:55:15 -07:00
2026-06-08 13:55:15 -07:00
2026-08-04 12:36:14 +00:00
2026-08-07 20:26:08 +00:00
2026-08-07 09:50:43 +00:00
2026-07-22 02:19:45 +00:00
2026-08-03 21:37:17 +00:00
2026-07-22 19:31:54 +00:00
2026-08-05 20:03:13 +00:00
2026-07-31 15:40:52 +00:00
2026-07-09 03:40:08 +00:00
2026-08-07 14:08:13 +00:00
2026-08-07 00:58:54 +00:00
2026-07-08 15:27:04 -07:00
2026-08-07 20:26:08 +00:00
2026-07-21 14:57:39 +00:00
2026-07-31 20:49:08 +00:00
2026-07-22 01:23:44 +00:00
2026-08-07 22:41:20 +00:00
2026-08-04 15:23:43 +00:00
2026-07-31 20:49:08 +00:00
2026-07-30 16:44:18 +00:00
2026-08-08 00:59:39 +00:00
2026-06-19 05:35:57 -07:00
2026-07-20 19:23:21 +00:00
2026-06-18 14:09:38 +02:00
2026-07-21 19:17:18 +00:00
2026-07-30 04:03:33 +00:00
2026-08-04 15:23:43 +00:00
2026-08-03 15:59:00 +00:00
2026-08-06 00:37:46 +00:00
2026-08-03 18:51:46 +00:00
2026-08-08 04:24:12 +00:00
2026-08-05 18:19:22 +00:00
2026-08-04 23:04:11 +00:00
2026-07-25 16:06:54 +00:00
2026-06-08 13:55:15 -07:00
2026-06-15 21:53:47 -07:00
2026-07-21 18:23:26 +00:00
2026-08-07 13:54:24 +00:00
2026-08-04 15:23:43 +00:00
2026-08-03 18:51:46 +00:00
2026-08-06 13:37:07 +00:00
2026-08-05 21:45:33 +00:00
2026-08-07 23:43:14 +00:00
2026-08-08 00:59:39 +00:00
2026-05-18 21:03:51 -07:00
2026-07-30 20:24:29 +00:00
2026-08-07 14:08:13 +00:00
2026-08-07 00:42:06 +00:00
2026-08-05 20:03:13 +00:00
2026-06-08 13:55:15 -07:00
2026-07-31 20:49:08 +00:00
2026-08-04 17:13:13 +00:00
2026-07-17 16:07:24 +00:00
2026-07-30 15:50:04 +00:00
2026-07-29 18:06:14 +00:00
2026-07-20 19:23:21 +00:00
2026-06-08 13:55:15 -07:00
2026-08-04 18:52:41 +00:00
2026-08-03 19:30:40 +00:00
2026-08-05 20:03:13 +00:00
2026-08-07 13:54:24 +00:00
2026-07-14 10:37:23 +00:00
2026-08-03 19:30:40 +00:00
2026-07-22 20:23:35 +00:00
2026-06-08 13:55:15 -07:00
2026-08-04 15:23:43 +00:00
2026-08-01 01:17:26 +00:00
2026-08-05 20:39:11 +00:00
2026-08-05 20:03:13 +00:00
2026-06-08 13:55:15 -07:00
2026-07-30 11:41:47 +00:00
2026-07-20 19:23:21 +00:00
2026-08-07 14:17:14 +00:00
2026-08-04 22:58:02 +00:00
2026-06-08 13:55:15 -07:00
2026-08-07 20:26:08 +00:00
2026-07-22 00:50:28 +00:00
2026-08-04 15:23:43 +00:00
2026-07-31 20:49:08 +00:00
2026-08-04 18:09:58 +00:00
2026-08-07 00:17:46 +00:00
2026-08-03 09:46:38 +00:00
2026-07-23 19:19:35 +00:00
2026-07-06 17:04:26 +00:00
2026-07-08 16:24:12 -07:00
2026-08-05 04:07:59 +00:00
2026-07-31 15:34:03 +00:00
2026-06-23 14:27:13 -07:00
2026-08-03 14:14:41 +00:00
2026-06-08 13:55:15 -07:00
2026-08-07 21:04:16 +00:00
2026-08-05 19:51:51 +00:00
2026-08-06 00:22:06 +00:00
2026-08-03 18:51:46 +00:00
2026-07-23 00:02:15 +00:00
2026-08-07 18:33:46 +00:00
2026-08-07 01:05:33 +00:00
2026-08-07 14:08:13 +00:00
2026-06-15 21:53:47 -07:00
2026-06-15 21:53:47 -07:00
2026-08-05 08:01:47 +00:00
2026-08-03 18:51:46 +00:00
2026-08-07 22:41:20 +00:00
2026-08-07 18:05:17 +00:00
2026-07-21 19:17:18 +00:00
2026-08-03 23:33:05 +00:00
2026-08-04 15:23:43 +00:00
2026-08-06 03:11:42 +00:00
2026-06-08 13:55:15 -07:00
2026-06-16 10:37:06 -07:00
2026-08-06 03:15:08 +00:00
2026-08-04 17:55:28 +00:00
2026-06-08 13:55:15 -07:00
2026-06-15 21:53:47 -07:00
2026-07-21 19:17:18 +00:00
2026-08-05 06:38:57 +00:00