master
Colby Knox Publish 2.0.741 8ff7072 5d ago

name: pup-import-logins description: "Before you sign a user into ANY site in pup, or the moment a login is missing, failing or asks for a password: OFFER to import the user's own saved Chrome, Edge and Brave passwords into pup with pup_import_browser_logins. One Adom Bridge approval plus one Windows prompt brings every saved login over, and from then on pup fills sign-in pages by itself. Most users do not know pup can do this; telling them is your job. Trigger words: log me in, sign me in, sign in to, log in to, login, logging in, can't log in, cannot sign in, login failed, wrong password, password, passwords, my password, saved passwords, credentials, my credentials, import passwords, import logins, import my logins, bring my passwords, chrome passwords, edge passwords, password manager, auto login, autologin, auto fill, autofill, sign-in page, login page, no_credential, no saved login, vault empty, keeps asking me to log in, stuck at login."

Import the user's own logins into pup

pup has its own password vault, and it can fill the user's saved passwords from their own browser. One import brings over every login saved in their Chrome, Edge or Brave, for work and personal sites alike. After that, pup fills sign-in pages in the background, without asking anyone for a password.

Most users have never heard of this. When a login is in the way, offering it is the most useful thing you can do.

When to offer it

Offer the import, in plain words, as soon as any of these happens:

  • The user asks you to sign in, log in, or use an account on a site.
  • A pup window lands on a sign-in page. Since 2.0.731 the open or navigate answer carries _loginTip (with loginPage: true) when pup has no saved login for that site.
  • A verb answers no_credential or "no saved login matches".
  • pup_credentials {} comes back empty or short.
  • The user says a site keeps asking them to log in, or a login failed.

Offer it once per conversation. If they say no, do not ask again.

What to say

"I can bring your saved passwords from Chrome or Edge into pup, so I can sign you in here and on other sites automatically. You answer one Windows Hello prompt and that is it. Want me to?"

What to run

adom-bridge --ai-thread "<your thread>" pup_import_browser_logins '{}'
  • No hostFilter the first time. A filter hides logins saved under another domain (a site that signs in on login.example.com while you are on example.com).

  • One Windows Hello. nb drives Chrome's own password export, so Chrome itself asks the user for Windows Hello (or their OS password) and does its own decryption. One Hello brings the whole profile over. pup also shows a desktop toast saying a Hello prompt is opening.

  • consent_pending is not a failure. The import waits on that human step, so the first answer can be consent_pending. Call the same verb again in a few seconds; it rejoins the same request and does not prompt twice.

  • Under the hood (adom/pup-bridge#136, adom/adom-bridge#254): pup no longer cracks Chrome's sealed store. It calls nb-bridge, which lives inside the user's real browser (nbrowser_export_saved_logins), and lets Chrome do its own consented export. nb writes the result to an owner-only file on the user's machine and hands pup only a path and counts, never a password. pup reads it locally, merges the logins into pup's OS-keychain vault, and tells nb to delete the file. Passwords never pass through you or the container, and are never printed. This survives Chrome updates, because Chrome is the one decrypting.

  • Which browser profile. nb reads the active profile of the user's browser, and the answer says which in profile. Got no_data but the user has saved logins? They are in another profile: nbrowser_profiles lists them, then call again with profile:"chrome:[email protected]" (works for sessionFor too).

  • Where nb cannot run (2.0.741, pup-bridge#145). If nb is not installed, is older than 0.16.45, or has no extension connected in the user's browser, pup uses Adom Bridge's older decrypt helper instead: the user approves an Adom Bridge request (inside Hydrogen it can appear as a toast or a card, on any of their machines) and then a Windows admin prompt on the PC itself. The answer says via:"ab-helper" and why in nbUnavailable. That path reads Edge and Brave but not Chrome 156 or later, so for Chrome the real fix is nb with its extension (nbrowser_readiness). A user's own answer through nb (Hello declined, no session) is never retried this way.

After it finishes, reload the sign-in page (pup_reload {}). pup fills it in the background and says so in _autoLogin. Confirm the live domain is the site you meant, then pup_login {submit:true, submitReason:"<why this domain is right>"} to sign in.

When a site refuses pup's sign-in: bring the session over

Some sites refuse a fresh sign-in from pup's browser even with the right password or Google account. X (x.com) does, answering "An unexpected error occurred". If the user is already signed in to that site in their own Chrome or Edge, bring that session into pup instead of signing in:

adom-bridge --ai-thread "<your thread>" pup_import_browser_logins '{"sessionFor":"x.com","reason":"Bring your X session into pup so I can use X for you"}'

This reads from inside the user's own browser via nb (nbrowser_export_site_session), so it needs no password and no Windows Hello: it is a background read of that one domain's cookies, set straight into pup's browser, never printed. If the user is signed in under a different browser profile, the answer is no_session with a pointer to nbrowser_profiles; ask the user to check which profile they use. Per-site details are in login-recipes/<domain>.md on the pup-bridge wiki page.

On a Mac

The password import is Windows-only today (nb drives Chrome's export on Windows first). On a Mac, pup_import_browser_logins answers unsupported_platform, and the _loginTip says so. What works on a Mac:

  • Sign in once in the pup window. Ask the user to sign in themselves in the pup window. pup saves the login as they submit it, then fills it on that site from then on.
  • Sync from Windows. If they also use a Windows desktop on the same Adom account, pup_vault_sync brings that desktop's logins over.

Rules

  • A password never passes through you. Never ask the user to tell you a password, read one out, or paste one in chat, and never type one you were not given. The user typing their own password into the pup window is fine; pup saves it from there.
  • Never submit a login without a submitReason. pup refuses a bare submit on purpose, to catch lookalike domains.
  • Saying no is fine. If the user declines, sign in another way they choose, or skip the step.

Related skills:

  • pup-credentials: the whole vault (auto-capture, Google accounts, cards, stale passwords).
  • pup-vendor-login: sign-in flows for vendor portals.