Browser identities on test machines
A browser identity is one persona's whole browser profile, signed into every
site that persona uses. A project declares its identities, each with a
signed-in check per site, in its browser-control capability settings; the
product reference .yoke/docs/verification/browser-identities.md
owns the declaration shape and the yoke browser verify and yoke browser authorize --identity NAME commands.
A test machine keeps identities live in ~/.yoke-browser-identities, outside
~/.yoke. The full reset keeps that store the way it keeps harness logins and
golden capture never includes it, because sites rotate session cookies and a
restored copy of a session is stale. Nothing is sealed or restored: once a walk
installs Yoke, each identity's profile path links into the store, so sessions
the site refreshes during a walk persist. Setup and first sign-in live in the
complete per-OS procedures:
Agents do every step that does not need the user; personal credentials are entered by the user, and only for the sites the check reports expired. Profile data stays on the host. Use the saved human session for native harness login. Tests use agent captures; human viewing serves only a requested, announced personal sign-in handoff, never a test acceptance check.
Desktop browser checks
With --test-machine, authorization checks the selected automation identity first,
then the Test Machine's snap Chromium on Linux or Safari on macOS in the same
remote GUI process. Both checks are included by default:
yoke browser authorize --project PROJECT --identity IDENTITY --test-machine NAME
Declare that identity's sites, signed-in probes and account names in
browser-control first. The native check reads its own browser cookies
headless; Chromium uses the last-used profile selected in Local State.
It opens native tabs only for expired sites and names the account to use.
Close all native browser windows after sign-in so the command can recheck.
Allow the executing terminal to read the native cookie store and unlock the
user's keyring. Unreadable cookies or unreachable probes refuse before tabs
open: repair the named access or network condition, then retry.
Without --test-machine, existing local automation identity behavior is unchanged.
Standalone --desktop-browser checks only this host's native browser; it
requires declared sites and refuses --reset. Remote --reset resets only
the automation identity, never desktop sign-ins. Desktop sign-ins stay live
outside goldens; there is no remote desktop opt-out. Require release-matched
help and operation receipts before relying on installed support. Real-host
sign-in and reset proof remain separate from merged source and CI evidence.
macOS sign-in procedure
A test machine keeps each project identity signed in live, outside the clean-home golden.
- As the test user, create the live identity store once:
mkdir -m 700 ~/.yoke-browser-identities. Never place it inside~/.yoke. A full reset keeps it the way it keeps harness logins, and golden capture never includes it, because a restored copy of a session is the cookies the site has since rotated. - Agents use the registered test user and leased product operations to install
the candidate and prepare its Chromium runtime and real headed desktop.
Declare the project's identities and each identity's per-site sign-in
checks in its
browser-controlcapability settings; see the installed declaration reference.yoke/docs/verification/browser-identities.md. - For each identity, agents run
yoke browser authorize --project P --identity NAMEas the test user in the real headed desktop; read--help. It checks every declared site first and opens a window only for the expired ones, naming the identity, the site and the account; no automated browser runs while it is open. The user only types their own password or credential; agents drive every other prompt in that window through desktop control, prepare the desktop and run the declared checks; use project-approved test accounts and follow project-owned sign-in policy. Keep profile data on the host. - Agents close each authorization window once signed in; the command checks each site again and fails naming any still signed out. The identity's profile path links into the store, so the sign-in already lives there: nothing is captured, sealed or restored.
- A reset removes
~/.yokeand keeps the store. Once a walk installs the candidate,yoke browser verify --project P --identity NAMEproves each site still signed in, and sessions a site refreshes during the walk persist in the store whether the walk passes, fails or is aborted. - For an expired site, agents run
yoke browser authorize --identity NAMEon that host and re-sign in themselves, or route an approval to steering. Only password or credential entry the agent may not type is aHUMAN_GATE, naming that one entry, machine, identity, site, account and resume state. Runtime and inventory failures retain their named diagnostics.
Use the logged-in, unlocked test-user desktop through Screen Sharing and the GUI Terminal context; the login keychain remains that user's.
Return to macOS host provisioning.
macOS automation diagnostics
-25211 names Accessibility; -1743 names Automation, including Safari.
Repair the named grant in the UI and rerun; enable Safari for the failing
Remote Login or Terminal controller. Diagnosis and each Terminal case probe
Terminal → System Events: terminal_system_events_automation_missing means
-1743, terminal_system_events_automation_timeout means timeout without
denial, and terminal_window_accumulation means timeout with over 10 windows
(reset quits them). Diagnosis names the visible window count and refuses
terminal_window_close_failed if its own window remains. Disconnect an active
Screen Sharing curtain or reconnect without curtain. Home restore cannot
recreate these grants.