Skip to main content
Navigation

guides

Browser extension: auto-fill from Vault

What this gives you

The Vault browser extension fills the username and password fields on the sites you log in to every day. Stored login credentials in Vault are matched against the active tab’s origin; when a match exists, a small Vault icon appears at the right edge of the username field. Click it (or press the configurable keyboard shortcut) and both fields are filled.

The extension never stores plaintext on disk. Every fill issues a fresh 30-second server-side lease that is consumed in the same round-trip; the plaintext lives in the extension’s service-worker memory only for the moment it is written to the form. Every fill is recorded in Vault’s audit chain exactly the way a CLI reveal or a manual web-ui copy would be.

This page is the user-facing guide. The phase plan lives at vault/.ai/phase/31-browser-extension/.

Status

Coming soon. Both browsers ship together once Chrome Web Store and AMO review pass. The extension is read-only at v1; save-on-submit (capture new credentials on form submit) and the in-popup password generator land in v0.2.

Install

Chrome / Edge / Brave

  1. Open the Chrome Web Store listing (link will be added when v0.1 ships).
  2. Click “Add to Chrome”.
  3. Pin the toolbar icon for one-click access.

Firefox

  1. Open the AMO listing (link will be added when v0.1 ships).
  2. Click “Add to Firefox”.
  3. Pin the toolbar icon for one-click access.

First sign-in

The toolbar icon shows “Sign in” until you authenticate. Click it. A popup opens to identity.ghoststack.app/oauth/authorize with the extension as the OAuth client. Sign in with your normal Vault account. Identity redirects back to a private callback URL inside the extension; your bearer token is cached in chrome.storage.session (browser- session-only, never written to disk) and the toolbar updates to show the count of credentials that match the current tab.

The token’s lifetime equals identity’s session exp claim. When the token expires, the extension surfaces a “Sign in again” prompt on the next fill request.

Fill a form

  1. Open any page that has a username + password form.
  2. If the page’s origin matches at least one stored login credential, the Vault icon in your browser toolbar shows a badge with the match count.
  3. Focus the username input. A small Vault icon appears at the right edge of the input.
  4. Click the icon. Username + password fields are filled.

Keyboard shortcut (default Ctrl+Shift+L, configurable in Options): press it while any input on the form is focused to trigger the same fill.

From the toolbar popup you can also:

  • Copy username without filling (clipboard only; no plaintext leaves the service worker).
  • Copy password (issues a lease, copies, audits, then forgets).
  • View in Vault (opens the credential’s detail page at vault.ghoststack.app/credentials/<id>).

URL matching rules

The extension is intentionally strict about which credentials match which pages. The fill button only appears when ALL of the following are true:

RuleBehavior
SchemeHTTPS only by default. Plain HTTP fill is OFF unless you explicitly enable it per host.
HostExact match. Punycode-normalized on both sides to defeat homograph attacks (e.g. a Cyrillic-look-alike of ghoststack.app does not match a credential for ghoststack.app).
PortDefault port if unspecified. :8443 and default :443 are different ports.
SubdomainOff by default. The first time the extension sees a subdomain match candidate (e.g. you have a credential for example.com and you visit accounts.example.com), it asks once whether to allow subdomain matching for that root host.

If the fill button does not appear, open the toolbar popup; it will explain which rule rejected the match and offer the override options that apply.

Security model

  • HTTPS-only by default. Plain HTTP fills require an explicit per-host opt-in. The popup warns clearly when you enable it.
  • Homograph protection. Punycode-normalized host comparison; an IDN-spoofed host does not surface as a match.
  • Plaintext is not stored. Every fill leases the credential server-side with a 30-second TTL, single-use. The extension never caches plaintext on disk and overwrites the in-memory copy immediately after the form is populated.
  • Content-script isolation. The service worker is the only code path that talks to Vault. The per-page content script never sees your bearer token; it receives only the {username, password} it is about to type, and only for the one form you triggered.
  • Same audit chain. Every fill writes lease.issued, lease.consumed, and lease.read rows to your tenant’s audit log with your user attribution and a per-session correlation id.

Limitations

  • Read-only at v1. New credentials are still created in Vault’s web UI or via the CLI. Save-on-submit lands in v0.2.
  • Standard form shapes only. The extension recognizes inputs with conventional type, autocomplete, and adjacent label patterns. Sites that use unusual layouts (multi-step pages with conditional field rendering, custom Shadow DOM) may not surface a fill button; use the keyboard shortcut while a field is focused as a fallback.
  • Mobile browsers are not in scope. Chrome desktop and Firefox desktop only.
  • No offline mode. The extension requires Vault to be reachable for every fill.

Disable / sign out

  • Sign out: toolbar popup → “Sign out”. Clears the cached bearer.
  • Disable extension: standard browser-level disable. The cached bearer is cleared when the extension reloads.
  • Uninstall: standard browser-level uninstall. All extension storage is removed by the browser.

Telemetry

Off by default. If you opt in via Options, the extension sends an anonymized per-fill event (origin host, fill latency, match count, extension version) to your tenant’s audit channel. No credential id, no URL path, no user id beyond the audit attribution already on each fill.

Phase plan

The implementation plan, security model, and test corpus live in the Vault repository at .ai/phase/31-browser-extension/:

  • PLAN.md: architecture and rollout.
  • COMPLETION_CRITERIA.md: shippable definition.
  • DEPENDENCIES.md: upstream phases, identity coordination, workspace deps.
  • GHERKIN.md: behavior scenarios.
  • TESTS.md: unit, integration, and security test plan.
  • REVIEW.md: open questions, deferred follow-ups.