Search and copy TOTP codes from 2FAS exports directly in Raycast. No cloud, no network calls. Your secrets stay local in a Keychain-encrypted vault.
- Search OTP: browse all services with native Raycast filtering and live TOTP countdown
- Recent OTP: quick access to pinned and recently used services
- Import Vault: import encrypted
.2fasexport files - Setup: check vault status, re-import, or delete
2FAS is a great mobile authenticator, but it has no desktop app. This extension bridges that gap by importing your 2FAS export and generating TOTP codes locally on your Mac.
- Open 2FAS on your phone
- Go to Settings > 2FAS Backup > Export and set a password
- Transfer the
.2fasfile to your Mac (AirDrop, iCloud Drive, etc.) - In Raycast, run Import Vault and select the file
- Enter your export password. Done.
- Run Search OTP to find and copy codes
| Command | Description |
|---|---|
| Search OTP | Search all services, copy codes with live countdown |
| Recent OTP | Access pinned and recently used services |
| Import Vault | Import a .2fas export file |
| Setup | View vault status and manage configuration |
| Layer | Detail |
|---|---|
| Vault key | Random 256-bit key stored in macOS login Keychain via /usr/bin/security |
| Vault file | AES-256-GCM encrypted at ~/Library/Application Support/Raycast/extensions/.../vault.enc with 0600 permissions |
| Import | Decrypts .2fas in memory (PBKDF2 + AES-256-GCM), re-encrypts into local vault |
| Secrets at rest | No plaintext secrets on disk. Secrets exist only in memory during runtime |
| Network | Zero network calls. Everything is offline |
| Clipboard | Concealed copy. OTP codes are excluded from clipboard history |
| Dependencies | Zero external crypto dependencies. Node.js crypto module only |
- The vault key is passed as a CLI argument to
/usr/bin/security(briefly visible in the process list to same-user processes). This is an inherent limitation of the macOSsecurityCLI. - Secrets remain in the Node.js heap for the lifetime of the extension process. JavaScript has no secure memory zeroing.
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
# Clone the repo (this project uses pnpm)
git clone https://github.com/LockeAG/raycast-2fas-authenticator.git
cd raycast-2fas-authenticator
# Install dependencies
pnpm install
# Start development mode (opens in Raycast)
pnpm dev
# Build
pnpm build
# Lint
pnpm lint
# Fix lint issues
pnpm fix-lint- Fork the repository and create your branch from
main - If you've added functionality, update the README if needed
- Make sure
pnpm lintpasses - Keep PRs focused. One feature or fix per PR.
- Write a clear description of what your change does and why
Open an issue with:
- Steps to reproduce
- Expected vs actual behavior
- macOS version and Raycast version
