feat: extra registration fields (DOB, address, phone) typed like the username - #6
Merged
kmjones1979 merged 1 commit intoSep 9, 2026
Conversation
…username
Real signup forms almost never stop at username and password. Found this
testing against two real practice sites (automationexercise.com,
demoqa.com): both require a handful of other fields before they will accept
a signup at all, and the registration policy had no way to supply them.
RegistrationPolicy/RegistrationGrant gain an optional extraFields list,
{selector, value} pairs typed in order, right after the username and before
the password. They're typed the same way the username already is: plainly,
by the bridge, in the same windowed page as the password. That's what keeps
them out of the agent's context, the same structural guarantee, not a new
one, and not a SecretHandle -- these aren't rotating credentials, so they
live in the policy like the username does rather than the vault's secret
storage. The whole vault file is still sealed at rest either way.
CLI: `1claw-vault allow-signup` gains a repeatable --field <selector>=<value>.
Tested against a real Chromium and a real form (registration-real.test.ts):
asserts the site's own fields actually received the values, not just that
the grant carries them. All 267 existing tests still pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Real signup forms almost never stop at username and password. I ran into this testing against two real practice sites (automationexercise.com, demoqa.com) — both require a handful of other fields (first/last name, DOB, address, phone) before they'll accept a signup at all, and the registration policy had no way to supply them, so both real-site registration attempts failed structurally, not from any bug.
What this adds:
RegistrationPolicy/RegistrationGrantgain an optionalextraFieldslist —{selector, value}pairs, typed in order, right after the username and before the password.Why this is safe the same way username already is: these fields are typed by the bridge in the same windowed throwaway page the password is typed into. That's the actual invariant — an agent that could observe the typing window could observe all of it, which is exactly what the window prevents — not whether a given value is wrapped in a
SecretHandle. So extra fields live in the policy alongsideusername, not in the vault's secret storage, since they aren't rotating credentials that need zeroise-on-drop. The whole vault file is still sealed at rest (AES-256-GCM, scrypt) regardless of which part of the policy a value sits in.CLI:
1claw-vault allow-signupgains a repeatable--field <selector>=<value>:Tested against a real Chromium and a real form, not just the grant's shape — the new test in
registration-real.test.tsasserts the site's own POST body actually received the extra values, the same rigor the existing registration tests use.pnpm verifyis clean: 267 tests pass (266 existing + 1 new), no regressions.Docs updated in the README (
### Creating an account...section + the v0.2 roadmap line).