jif
612e6491d5
Prewarm shell snapshots for eligible turns ( #42137 )
...
## Why
Shell Snapshot V2 previously captured the login-shell environment lazily when a
command started, adding that work to the command path.
## What changed
- Start one asynchronous snapshot capture after turn hooks accept the turn, so
eligible local `exec_command` calls can reuse it without blocking the model.
- Use the turn's resolved tools, permissions, sandbox, environment, and shell
configuration, and skip prewarming for unsupported or network-managed cases.
- Cancel outstanding prewarming during shutdown. Keep failed speculative
captures retryable by real commands without consuming their retry budget.
## Testing
Added coverage for non-blocking capture and reuse, failure recovery, sandbox and
permission isolation, shutdown cancellation, hook-stopped turns, eligibility
gates, and concurrent capture retries.
GitOrigin-RevId: ff24a4f0328c06653e09d03fd0a3db1eccd65030
2026-09-01 21:16:12 +00:00
..
2026-08-26 22:37:59 +00:00
2026-08-25 19:54:52 +00:00
2026-08-30 07:40:36 +00:00
2026-08-26 16:28:35 +00:00
2026-08-31 00:53:30 +00:00
2026-08-24 18:22:13 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-08-24 19:52:27 +00:00
2026-08-13 00:00:16 +00:00
2026-08-27 21:03:09 +00:00
2026-08-29 03:44:01 +00:00
2026-08-25 21:34:05 +00:00
2026-09-01 05:17:11 +00:00
2026-09-01 14:43:27 +00:00
2026-08-21 20:15:23 +00:00
2026-08-13 00:00:16 +00:00
2026-08-31 23:36:04 +00:00
2026-08-25 23:42:50 +00:00
2026-09-01 14:43:27 +00:00
2026-08-20 17:46:05 +00:00
2026-08-31 21:15:38 +00:00
2026-08-30 07:40:36 +00:00
2026-08-31 21:15:38 +00:00
2026-08-30 07:40:36 +00:00
2026-08-28 02:09:07 +00:00
2026-08-25 19:54:52 +00:00
2026-08-20 18:29:35 +00:00
2026-08-27 00:02:26 +00:00
2026-08-20 18:29:35 +00:00
2026-08-26 16:28:35 +00:00
2026-09-01 00:42:19 +00:00
2026-08-28 01:14:02 +00:00
2026-08-29 19:57:06 +00:00
2026-09-01 20:41:32 +00:00
2026-08-30 11:56:24 +00:00
2026-09-01 14:33:58 +00:00
2026-09-01 15:34:03 +00:00
2026-08-21 21:51:12 +00:00
2026-09-01 11:14:20 +00:00
2026-09-01 11:14:20 +00:00
2026-08-29 03:14:35 +00:00
2026-08-30 14:04:06 +00:00
2026-09-01 18:02:27 +00:00
2026-08-23 06:10:44 +00:00
2026-08-13 00:00:16 +00:00
2026-08-25 01:27:18 +00:00
2026-08-13 00:00:16 +00:00
2026-09-01 15:04:11 +00:00
2026-08-25 23:42:50 +00:00
2026-08-27 00:02:26 +00:00
2026-09-01 20:26:57 +00:00
2026-08-27 20:31:40 +00:00
2026-08-04 15:23:43 +00:00
2026-08-26 16:28:35 +00:00
2026-08-30 14:04:06 +00:00
2026-08-30 07:40:36 +00:00
2026-09-01 20:54:25 +00:00
2026-08-31 22:29:40 +00:00
2026-08-13 00:00:16 +00:00
2026-08-27 21:03:09 +00:00
2026-08-30 07:40:36 +00:00
2026-08-29 03:44:01 +00:00
2026-08-20 17:46:05 +00:00
2026-08-29 03:28:19 +00:00
2026-08-20 11:57:32 +00:00
2026-08-27 00:02:26 +00:00
2026-08-26 21:39:05 +00:00
2026-08-25 23:42:50 +00:00
2026-09-01 14:43:27 +00:00
2026-08-31 21:15:38 +00:00
2026-08-29 03:44:01 +00:00
2026-08-31 00:53:30 +00:00
2026-09-01 16:58:54 +00:00
2026-07-14 10:37:23 +00:00
2026-08-31 00:53:30 +00:00
2026-07-22 20:23:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-31 22:38:23 +00:00
2026-08-01 01:17:26 +00:00
2026-08-31 22:29:40 +00:00
2026-08-28 17:09:22 +00:00
2026-08-31 00:53:30 +00:00
2026-08-13 00:00:16 +00:00
2026-08-31 20:50:44 +00:00
2026-08-31 20:50:44 +00:00
2026-08-30 14:04:06 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-26 19:44:12 +00:00
2026-07-22 00:50:28 +00:00
2026-08-31 21:15:38 +00:00
2026-08-26 03:28:57 +00:00
2026-08-28 10:39:10 +00:00
2026-08-31 08:31:23 +00:00
2026-09-01 20:26:57 +00:00
2026-08-23 06:10:44 +00:00
2026-09-01 12:23:20 +00:00
2026-07-23 19:19:35 +00:00
2026-08-13 00:00:16 +00:00
2026-08-20 17:46:05 +00:00
2026-08-30 14:04:06 +00:00
2026-08-29 03:44:01 +00:00
2026-08-29 19:57:06 +00:00
2026-08-25 17:27:04 +00:00
2026-09-01 21:16:12 +00:00
2026-08-20 17:46:05 +00:00
2026-09-01 00:42:19 +00:00
2026-08-27 01:22:23 +00:00
2026-08-27 21:03:09 +00:00
2026-08-26 22:37:59 +00:00
2026-08-25 17:41:22 +00:00
2026-09-01 19:19:52 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-08-30 07:40:36 +00:00
2026-08-28 09:48:13 +00:00
2026-08-31 08:31:23 +00:00
2026-08-31 21:15:38 +00:00
2026-08-30 07:40:36 +00:00
2026-08-30 14:04:06 +00:00
2026-08-20 17:46:05 +00:00
2026-08-30 07:40:36 +00:00
2026-08-30 14:04:06 +00:00
2026-08-25 19:54:52 +00:00
2026-08-20 17:46:05 +00:00
2026-09-01 18:24:56 +00:00
2026-08-28 11:38:03 +00:00
2026-08-28 15:44:48 +00:00
2026-08-26 21:39:05 +00:00
2026-08-28 19:04:54 +00:00
2026-08-10 19:26:52 +00:00
2026-08-13 00:00:16 +00:00
2026-08-28 18:07:40 +00:00
2026-08-27 21:03:09 +00:00
2026-08-14 01:23:59 +00:00
2026-08-13 00:00:16 +00:00
2026-08-26 22:37:59 +00:00
2026-08-24 17:29:21 +00:00
2026-08-26 16:28:35 +00:00
2026-08-20 06:29:32 +00:00