Problem
When uv_retries is exhausted (e.g., after repeated failed UV ceremonies), the only CLI reset path is passless client pin uv-reset, which requires PIN authentication. If no PIN is configured (min_pin_length: 0), there is no way to reset the UV retry counter via the client — the authenticator becomes permanently locked out of UV operations.
The only workaround is manually editing the encrypted pin_retries.gpg file in the password store, which is error-prone and not discoverable.
Expected Behavior
passless client pin uv-reset (or an equivalent command) should work even when no PIN is set. Since UV is handled by the notification callback (not PIN), the reset should not require PIN authentication when min_pin_length == 0.
Reproduction
- Configure passless with no PIN (
min_pin_length: 0)
- Trigger multiple failed UV ceremonies (e.g., dismiss notifications) until
uv_retries reaches 0
- Attempt
passless client pin uv-reset → fails because no PIN is set
- All subsequent WebAuthn assertions fail with UV denied
Suggested Fix
- Allow
uv-reset without PIN when no PIN is configured (skip pinUvAuthParam verification)
- Or add a dedicated
passless client uv-reset command that resets UV retries via the admin socket (which already has privileged access)
- Consider also resetting
uv_retries on daemon restart when no PIN is configured (since the counter is only meaningful as a brute-force guard for PIN/UV)
Environment
- passless 0.13.0 (
v0.13.0, commit 00f5c9cb)
- soft-fido2 0.15.0
- Storage backend: pass (password-store)
- No PIN configured (
min_pin_length: 0)
Problem
When
uv_retriesis exhausted (e.g., after repeated failed UV ceremonies), the only CLI reset path ispassless client pin uv-reset, which requires PIN authentication. If no PIN is configured (min_pin_length: 0), there is no way to reset the UV retry counter via the client — the authenticator becomes permanently locked out of UV operations.The only workaround is manually editing the encrypted
pin_retries.gpgfile in the password store, which is error-prone and not discoverable.Expected Behavior
passless client pin uv-reset(or an equivalent command) should work even when no PIN is set. Since UV is handled by the notification callback (not PIN), the reset should not require PIN authentication whenmin_pin_length == 0.Reproduction
min_pin_length: 0)uv_retriesreaches 0passless client pin uv-reset→ fails because no PIN is setSuggested Fix
uv-resetwithout PIN when no PIN is configured (skippinUvAuthParamverification)passless client uv-resetcommand that resets UV retries via the admin socket (which already has privileged access)uv_retrieson daemon restart when no PIN is configured (since the counter is only meaningful as a brute-force guard for PIN/UV)Environment
v0.13.0, commit00f5c9cb)min_pin_length: 0)