console fill: never copy Google session cookies by default (device-bound); own profile in a Chrome started without automation switches

Google binds its session cookies to the device (Device Bound Session Credentials) and signs out
sessions whose cookies look stolen, which can sign the owner out of their real Chrome. The default is
now storebound's own profile per store; storebound starts Chrome itself (--user-data-dir,
--remote-debugging-port=0, no --enable-automation, navigator.webdriver false) and attaches over CDP.
--use-chrome-session google|apple is an explicit opt-in that warns. /signin/rejected is said plainly.
This commit is contained in:
CRTkafa 2026-10-12 07:46:04 +08:00
parent e0bef82b06
commit 0035931734
22 changed files with 456 additions and 156 deletions

View file

@ -490,13 +490,15 @@ a terminal first and are never offered over MCP.
visible browser, goes to the form by itself (Apps > + > New App, the app's App Privacy, Play All apps > Create app,
Play app list > App content > Start / Manage;
navigation clicks only, never Save / Submit / Publish / Create / Next), fills what the config proves, highlights the
rest and stops before the final button: you click. **Sign-in:** it attaches to a Chrome running with remote
debugging, else (macOS) reuses your Chrome sign-in: it copies ONLY `Local State` and your profile's `Cookies`
(+ journal) into a temporary profile, keeps only the apple.com / google.com cookies the consoles use, opens real
Chrome on it and deletes it when the run ends (never passwords, history or extensions; cookies are never printed
or sent anywhere; macOS may ask once for Keychain access). `--fresh-profile` uses storebound's own profile instead
(one per store; the sign-in is kept between runs: session restore on launch, graceful close; tick "Keep me signed
in" / "Stay signed in"). It detects sign-in pages by URL, frame and text (Apple's starts with no password field),
rest and stops before the final button: you click. **Sign-in:** storebound's own profile
(one per store, `~/.storebound/console-profile/<store>`): you sign in there once by hand, it is kept between runs
(session restore on launch, graceful close; tick "Keep me signed in" / "Stay signed in"). storebound starts that
Chrome itself as a normal window (no `--enable-automation`, `navigator.webdriver` false) so Google accepts the
sign-in; if Google still answers `/signin/rejected` it says so. A Chrome running with remote debugging is used in
place. **It never copies your Google cookies by default:** Google binds them to your device (Chrome's Device Bound
Session Credentials) and signs out sessions whose cookies look copied, which can sign you out of your real Chrome.
`--use-chrome-session google|apple` is an explicit opt-in (a temporary copy of only that store's cookies, deleted at
the end) that prints this warning; see the console-autofill skill. It detects sign-in pages by URL, frame and text (Apple's starts with no password field),
waits while you sign in and then opens the form from step 1; after printing manual steps it keeps watching and picks
up where you are. **One login, many studios:** it finds the Play developer account (by `play.packageName`, or
`play.developerId`) and the App Store Connect team (account menu; `apple.teamId`, or by bundle id) that has the