A state file does not bring back the whole desk.
Updated October 15, 2026 · Independent experiment
“The browser remembers me” hides several different claims. A cookie can return while a saved postcard is gone. Our seven-object app makes those claims separate and repeatable.
The measured difference
We exercised the synthetic app with agent-browser 0.39.1 and Chrome for Testing 156.0.8078.4 on macOS. Each row starts from a new fixture. “Present” means the exact generated value returned, not merely that a storage API existed.
| Object / storage | Same session name, close / reopen | Save state, new session with state load | Reopen same dedicated profile |
|---|---|---|---|
| Lamp / page memory | Empty | Empty | Empty |
| Ink / normal cookie | Empty | Present | Present |
| Guest pass / HttpOnly cookie | Empty | Present | Present |
| Bag / localStorage | Empty | Present | Present |
| Draft / sessionStorage | Empty | Present | Empty |
| Postcard / IndexedDB | Empty | Empty | Present |
| Map / Cache Storage | Empty | Empty | Present |
The sessionStorage result is easy to miss. This CLI version explicitly serializes and reapplies it. That is a tool behavior, not a claim that native sessionStorage normally survives a fresh tab. Conversely, its serialized state did not include our IndexedDB entry or Cache Storage response.
Reproduce before choosing a persistence mode
- Use the downloadable native CLI experiment with a separate browser executable and disposable profile.
- Confirm all seven actions read back before saving or closing. A failed initial write is not a failed restore.
- Save the trial URL. Returning to a newly generated trial would compare against different values.
- Wait for the old daemon to exit, then reopen with the intended options. Record CLI lifecycle output alongside the page observation.
The downloaded runner performs these steps and keeps the raw command results. It stops on an uncertain command outcome instead of retrying a write. You can inspect the small script before running it.
What these results cannot tell you
A present guest pass is a synthetic cookie echo, not a successful login. Real applications can expire tokens server-side, bind sessions to devices, keep state at other origins, or use storage we do not exercise. A missing fixture also cannot identify who cleared it. Compare the command, lifecycle result, browser version and page observation before forming that explanation.
Sources: official session and persistence documentation; pinned native state implementation. See our measurement boundaries.