Generate temporary email addresses and auto-fill OTPs and login forms with one click.
- Temporary Email Generation: Create disposable email addresses instantly
- OTP Auto-Detection: Automatically detects and extracts OTP codes from emails
- Form Auto-Fill: One-click OTP and email form filling
- Multiple Browser Support: Works on Chrome and Firefox
- Identity Management: Manage multiple identities with custom names
- Inbox Management: View and manage emails across multiple inboxes
- Tag System: Organize inboxes with custom tags and colors
This extension declares host_permissions: ["<all_urls>"] in its manifest. That sounds broader than it behaves — here's what it actually enables and why each capability requires it.
- Form autofill content script —
src/entrypoints/content/index.ts:13registers a content script withmatches: ["<all_urls>"]. It scans every page for signup/login forms and injects an "Autofill" button. The product is universal form autofill; there is no fixed list of "signup sites" to enumerate, so the match pattern is necessarily open-ended. - Disposable email detector —
src/entrypoints/content/disposable/disposable-detector.tshighlights the active email field when the user starts typing a known disposable domain. Operates on every page. - OTP autofill —
src/entrypoints/content/otp/otp-handler.tswatches for OTP code inputs on any site and offers one-click fill.
A content script's matches array implicitly requires matching host_permissions; declaring <all_urls> keeps the two in sync.
- Context menu — "Create Temp Email" —
src/entrypoints/background/index.ts:107-119registers a context menu item on every page (contexts: ['page', 'link', 'editable']). When clicked, it callschrome.scripting.executeScriptagainst the right-clicked tab to write the new address to the clipboard. The target tab can be any site, so the scripting permission must cover all URLs. - Context menu — "Exclude from Autofill" —
src/entrypoints/background/index.ts:80-135readstab.urlto label the menu per-site. Readingtab.urlfor an arbitrary cross-origin tab in MV3 requires a matching host permission. - Keyboard shortcut —
Alt+Shift+Fautofill —src/entrypoints/background/runtime/message-handler.ts:561queries the active tab on shortcut press and sends anautofillFormmessage; works on any site. - Per-domain autofill blocklist —
src/utils/storage-keys.ts:201-219lets the user exclude specific sites. The blocklist check needs to readtab.urlfor the active tab on every navigation.
- Mail provider APIs —
src/utils/email-service.ts:190andsrc/utils/dsl/email-fetcher.ts:194-197call provider endpoints withcredentials: 'include'. Credentialed cross-origin fetches from a service worker require the target host inhost_permissions. Bundled providers: Guerrilla Mail (api.guerrillamail.com) and Burner.kiwi instances (alphac.qzz.io,raceco.dpdns.org,burner.kiwi). - User-added provider instances —
src/features/settings/settings-actions.ts:379-431andsrc/utils/instance-manager.ts:94-108let the user add custom instance URLs. After SSRF-safe validation (src/utils/validation.ts:67-100blocks private IPs), any public https URL may be added and then fetched with credentials. The set of target domains is therefore unbounded by design. - Favicon fetcher —
src/entrypoints/background/runtime/message-handler.ts:464-502andsrc/utils/favicon.ts:88-117fetch favicons for arbitrary email-sender domains (e.g.https://${sender}/favicon.icoor via Google's favicon proxy).
To be explicit about scope:
- No browsing-history collection. The content script only inspects
<form>elements,<input>values typed by the user, and DOM structure. It does not log, store, or transmit page content. - No
chrome.cookiesaccess at runtime. Thecookiespermission is declared in the manifest for forward compatibility, but nobrowser.cookies.*calls exist in the source. Session state is held inbrowser.storage.sessiononly. - No
chrome.webRequestinterception. The extension does not observe, block, or modify network traffic. - No keystroke logging, no page text exfiltration, no remote-script injection. The content script's CSP is locked down in
wxt.config.ts:79-81.
<all_urls> could in principle be replaced with an enumerated list of bundled provider hosts + a smaller set of "common signup sites," but:
- The product's value proposition is "autofill on any site the user signs up on," which has no upper bound.
- User-added custom provider instances make the fetch target set genuinely unbounded.
- The context menu and keyboard shortcut must work on whatever tab the user invokes them on.
Narrowing the permission would require either removing the universal-autofill feature, removing custom provider instances, or introducing dynamic permissions.request flows (not currently implemented) — all of which are larger product tradeoffs.
- Chrome: Declare permissions and host permissions
- Firefox: host_permissions in Manifest V3
- Source:
wxt.config.ts:82-91(manifest declaration),src/entrypoints/content/index.ts:12-14(content script)
- Download the latest release from the Releases page
- Extract the downloaded zip file
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked" and select the extracted folder
- Download the latest Firefox release from the Releases page
- Extract the downloaded zip file
- Open Firefox and navigate to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on" and select the
manifest.jsonfile in the extracted folder
- Node.js 18+ or Bun
- Git
# Clone the repository
git clone https://github.com/UnarchiveTech/1Click-TempMailandAutofillForm.git
cd 1Click-TempMailandAutofillForm
# Install dependencies
bun install
# Run development server (Chrome)
bun run dev
# Run development server (Firefox)
bun run dev:firefox# Build for Chrome
bun run build
# Build for Firefox
bun run build:firefox
# Create zip package
bun run zip
bun run zip:firefox# Run Biome lint check
bun run lint
# Fix linting issues
bun run lint:fix
# Format code
bun run format
# Run TypeScript type check
bun run typechecksrc/
├── components/ # Reusable UI components
├── entrypoints/ # Extension entry points (app, popup, sidepanel, background)
├── features/ # Feature-specific logic (inbox, identities, etc.)
├── utils/ # Utility functions and types
└── views/ # Page views (Inbox, Identities, Settings, etc.)
Contributions are welcome! Please read our CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
For issues, questions, or suggestions, please open an issue on GitHub.