Winston Howes
808b3411fd
Cache protected shell snapshots and harden capture cleanup ( #43954 )
...
## Why
Credential-brokered commands rebuild shell snapshots on every invocation. Snapshot capture failures can also include credential-bearing startup output, and descendants holding output pipes need cleanup even after the shell exits.
## What changed
- Cache successful protected snapshots per environment, keyed by working directory, shell, login mode, and sandbox configuration. Rebuild missing or stale snapshots while keeping concurrent captures independently cancellable.
- Invalidate snapshots when shell settings or credential broker configuration change, and retry capture once if broker configuration changes during startup.
- Restore credentials and associated provider context while respecting environment policy filters and explicit overrides.
- Keep full-buffer capture subject to timeout and cancellation through output draining, clean up descendants on capture expiration or drain failure, and omit startup output from snapshot errors.
## Testing
Add regression coverage for snapshot reuse, invalidation, recovery after storage failure, concurrent cancellation, credential-safe errors, and descendant cleanup. Verify that successful background startup and output beyond the shell output cap remain supported.
GitOrigin-RevId: 7c7c8455bf6e3b9ca173dbb4277783469f0b45e6
2026-09-09 00:42:57 +00:00
..
2026-09-04 10:22:43 +00:00
2026-09-02 22:45:19 +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-09-04 10:12:03 +00:00
2026-08-20 17:46:05 +00:00
2026-08-20 17:46:05 +00:00
2026-09-09 00:42:57 +00:00
2026-08-13 00:00:16 +00:00
2026-09-07 11:07:28 +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-03 23:20:54 +00:00
2026-09-03 16:21:10 +00:00
2026-08-13 00:00:16 +00:00
2026-09-08 21:07:49 +00:00
2026-08-25 23:42:50 +00:00
2026-09-02 22:45:19 +00:00
2026-09-02 22:45:19 +00:00
2026-09-05 01:04:12 +00:00
2026-09-02 22:45:19 +00:00
2026-09-08 10:46:07 +00:00
2026-09-07 11:07:28 +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-06-18 14:09:38 +02:00
2026-09-01 00:42:19 +00:00
2026-08-28 01:14:02 +00:00
2026-09-02 22:45:19 +00:00
2026-09-05 01:04:12 +00:00
2026-09-07 11:51:20 +00:00
2026-09-08 11:03:44 +00:00
2026-09-07 12:04:27 +00:00
2026-09-08 15:56:58 +00:00
2026-08-21 21:51:12 +00:00
2026-09-08 21:07:49 +00:00
2026-09-07 13:58:57 +00:00
2026-08-29 03:14:35 +00:00
2026-08-30 14:04:06 +00:00
2026-09-04 20:27:18 +00:00
2026-09-02 22:45:19 +00:00
2026-09-08 20:37:30 +00:00
2026-08-25 01:27:18 +00:00
2026-09-02 22:45:19 +00:00
2026-09-01 15:04:11 +00:00
2026-06-15 21:53:47 -07:00
2026-08-25 23:42:50 +00:00
2026-08-27 00:02:26 +00:00
2026-09-03 15:12:02 +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-09-02 22:45:19 +00:00
2026-09-03 00:17:19 +00:00
2026-09-07 17:26:10 +00:00
2026-09-08 20:37:30 +00:00
2026-05-18 21:03:51 -07:00
2026-08-13 00:00:16 +00:00
2026-09-07 12:36:57 +00:00
2026-08-30 07:40:36 +00:00
2026-09-08 20:37:30 +00:00
2026-09-08 20:37:30 +00:00
2026-08-20 17:46:05 +00:00
2026-08-29 03:28:19 +00:00
2026-09-07 15:10:37 +00:00
2026-08-27 00:02:26 +00:00
2026-09-04 12:08:02 +00:00
2026-09-08 18:40:17 +00:00
2026-08-25 23:42:50 +00:00
2026-09-01 14:43:27 +00:00
2026-06-08 13:55:15 -07:00
2026-09-05 01:04:12 +00:00
2026-08-29 03:44:01 +00:00
2026-09-06 02:28:38 +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-09-07 20:25:30 +00:00
2026-08-31 22:29:40 +00:00
2026-09-08 10:46:07 +00:00
2026-09-03 16:21:10 +00:00
2026-09-06 02:28:38 +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-09-02 20:41:14 +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-09-02 22:45:19 +00:00
2026-09-06 02:28:38 +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-09-02 22:45:19 +00:00
2026-08-25 17:27:04 +00:00
2026-09-08 20:59:50 +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-09-06 02:28:38 +00:00
2026-09-08 16:24:38 +00:00
2026-09-08 21:41:02 +00:00
2026-08-25 17:41:22 +00:00
2026-09-08 21:41:02 +00:00
2026-08-13 00:00:16 +00:00
2026-08-13 00:00:16 +00:00
2026-09-08 22:31:49 +00:00
2026-08-28 09:48:13 +00:00
2026-09-06 02:28:38 +00:00
2026-09-02 22:45:19 +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-09-08 23:45:10 +00:00
2026-09-04 20:38:08 +00:00
2026-09-04 12:08:02 +00:00
2026-09-07 17:35:23 +00:00
2026-08-28 15:44:48 +00:00
2026-09-07 17:35:23 +00:00
2026-09-08 22:31:49 +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-09-06 02:28:38 +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-09-04 19:40:01 +00:00
2026-09-02 23:58:24 +00:00
2026-08-20 06:29:32 +00:00