5.4 KiB
Managed saved sessions for local agents
Administrators separately opt into sessions:save, sessions:list and
sessions:restore in the signed baseline and individual grant. All three controls
start unchecked. These are separate from sessions, which inventories currently
open native tabs. Existing pairing, expiry, generation, destination, feature and
user-profile restrictions still apply. Saving browser tabs never preserves or
reactivates agent authority.
| Action | Purpose |
|---|---|
sessions:save |
Save selected native tab IDs as a named collection, optionally replacing an owned collection with its current revision. |
sessions:list |
Inspect the current actor's approved saved collections and storage revision. |
sessions:restore with collection ID |
Prepare a short-lived restoration plan without opening tabs. |
sessions:restore with returned plan ID |
Consume the plan once and restore its approved destinations. |
The local collection store accepts at most 16 collections and 32 tabs per collection. Its revision prevents stale replacement. Collection ownership binds to the enrolled device and verified actor; ownership includes the actor's credential generation. Rotation makes old-generation collections inaccessible; no implicit migration restores them. Collections belong to the local device, not a central cross-device sync service. Windows DPAPI encrypts the stored bytes before atomic replacement. Plaintext buffers are cleared. Corrupt files, hard links and unexpected file types fail closed.
Only collection name, approved HTTP(S) URLs, titles, optional group metadata and active-tab index belong in a saved collection. No cookies, authentication tokens, passwords, form values, navigation history or serialized Chromium page state are accepted. Benign query strings and fragments are preserved. URL userinfo, recognized authentication paths, authentication query/fragment parameters and credential-shaped metadata are rejected rather than silently rewritten. Names, titles and URLs also pass current local/enterprise DLP before saving or exporting. Unavailable or incomplete inspection blocks the operation.
Restoration plans expire after 60 seconds, are bounded, and are consumed before use. Policy changes, actor/generation changes, cancellation, changed storage revision and changed collections invalidate plans. Preparing and applying both check current destinations and classify saved metadata. The native implementation preserves existing tabs, applies current navigation enforcement to new tabs, and closes only the tabs created by a failed restoration. Closing failed restoration tabs cannot undo network requests already sent. Restoring URLs does not restore login sessions; a website may require normal authentication again.
Do not retry a mutating action merely because its response or diagnostic export failed. Check current tabs and collections first. Security audit and OpenTelemetry are separate from saved collection contents; diagnostics should contain fixed operation names and timings, never saved URLs, titles or collection names.
Verification status
The adapter and encrypted-store tests cover classification failures, one-use
plans, policy/generation/revision changes, ciphertext alteration, ownership and
structural bounds. Central admin controls are implemented and tested as explicit
opt-in. The actual Windows/Electron admin fixture verified all three scopes in
baseline and individual grants, separate-author review, self-approval denial,
auditor read-only controls, rotation and policy-history restoration. Its 154
completed API requests exported parent-correlated traces; three GET requests
canceled during identity reload are recorded separately and no policy mutation
failed (artifacts/agent-grants-history-admin-proof.json).
The actual browser fixture runs two Windows/Electron processes against the same enrolled device and local profile. It saves two tabs with benign query strings, fragments and group metadata, then verifies encrypted storage survives restart. Private decryption inside the isolated fixture checks exact metadata keys without printing plaintext. Edited password/form values and renderer history state are absent; restored pages receive their fresh server defaults. Existing tabs remain and restored groups are verified. Cross-actor plan use, replay and stale revision are denied. After signed central disable, host restriction and targeted revocation reach the browser, a refused commit sends no additional navigation request. Legitimate policy-triggered page reloads are outside that post-policy measurement.
A controlled delayed HTTPS receiver also proves an actual away-and-back activation
race: the first restored tab begins navigation, the trusted UI activates an
original tab and then the new tab, and restoration fails. Only newly created tabs
are removed, existing tabs survive, and the second saved destination is never
requested. The first already-started request cannot be undone. Actual trace
583a1d4dbc80fb2cbcb135b1622a4993 records native work (1410.0137 ms), rollback
(0.7242 ms) and the failed restoration (1412.796 ms).
Actual exported save/list/restore traces contain correlated named inspection,
storage, preflight and native stages, plus all five audit serialization/encryption/
write/fsync/commit stages beneath their audit parent. Proof is in
artifacts/session-agent-controls-native-proof.json. These proofs do not establish
production key custody, cross-device session sync or a complete browser backup.