Pup - the AI's own browser
Public Made by Adomby adom
pup gives your AI a real browser on your desktop that it drives completely, in the background, signed in as you: windows that never jump in front of your work, one shared profile that learns your logins, and every window labeled on the taskbar with its AI thread's name.
credential_set fails on a full Windows vault (CredWriteW error 8) after the no-hostFilter import the hint recommends: needs vault_full errorCode + prune, and an index that does not spend one Credential Manager slot per site
Summary
On AdomLapper (Windows 11, pup 2.0.645) every credential_set fails with a Windows Credential Manager capacity error, even a 1-byte probe. The vault holds 871 entries after the no-hostFilter pup_import_browser_logins that pup's own credential_list hint recommends for a first import. pup reports the raw Win32 error and offers no way out; the only workaround was to credential_delete an entry to make room.
What I ran
adom-bridge --ai-thread "ToF sensor libs" --target AdomLapper credential_set '{"host":"my.st.com","username":"[email protected]","password":"<18 chars>"}'
adom-bridge --ai-thread "ToF sensor libs" --target AdomLapper credential_set '{"host":"probe.invalid","username":"probe","password":"x"}'
adom-bridge --ai-thread "ToF sensor libs" --target AdomLapper credential_list '{}'
What I expected
The credential stored (host + username in the index, secret in the keychain), or a structured error that names the cause and the remedy.
What happened
Both writes, four retries 15 s apart, returned the same thing:
{"status":"error","ok":false,"error":"CredWriteW failed (error Not enough memory resources are available to process this command. (os error 8))"}
credential_list {} returned ok:true with 871 credentials (only 15 flagged imported:true, yet the hosts are clearly the user's Chrome logins: allstate, hertz, avis, aa.com, gusto, americanexpress ...). The same credential_set on ConfRoomROG (small vault) succeeded first try.
ERROR_NOT_ENOUGH_MEMORY (8) from CredWriteW is the error Windows returns when the per-user credential set is at capacity, not a real memory problem. A 1-byte probe failing confirms it is capacity, not payload size.
Workaround that worked
credential_delete {"host":"my.st.com","username":"[email protected]"} -> ok
credential_set {"host":"my.st.com","username":"[email protected]", ...} -> ok
pup_login {submit:true} on my.st.com -> LOGGED IN
So one freed slot was enough; the store is right at the cap.
Proposals
- Map
CredWriteWerror 8 toerrorCode: "vault_full"with a_hintthat says how many entries the vault holds and namescredential_delete(or a newcredential_prune {olderThan|hostFilter|imported:true}) as the remedy. A bare Win32 string sends the AI down a memory-pressure rabbit hole. - Do not spend one Credential Manager slot per site. Keep the index in pup's own DPAPI/keychain-encrypted file (or one keychain blob) so the vault size is not bounded by Windows' per-user credential cap. Windows creds that the user's other apps already hold count against the same cap, so pup can hit it without being the main tenant.
pup_import_browser_loginsshould reportwritten,skipped,failedcounts and stop withvault_fullinstead of failing silently part way. Thecredential_listhint that recommends "no hostFilter the first time" should mention the cap, or the import should keep a hostFilter default that only widens on request.- Set
imported:trueon every entry the import wrote (856 of 871 here are unflagged), so a future prune can target them safely.
Found while
Storing the myST login for [email protected] on both of John's machines (ToF sensor library run, 2026-09-19). ConfRoomROG stored it fine; AdomLapper needed the delete-then-set workaround.