Open Desktop Authenticator

Security model

What this application does with your secrets, what it deliberately refuses to do, and — the part most pages like this leave out — what it cannot protect you against.

Where secrets live#

The vault encrypts each account's authenticator secrets, any available revocation code, saved Steam session token and proxy settings on your machine. The authenticator service does not upload these to an ODA backend; we operate no ODA account system or vault-sync service.

The vault is not the only secret-bearing file. Local recovery data and backups also use encrypted envelopes:

And one file it does not protect: the maFile you imported from. Import reads those and leaves them exactly where they were — deleting somebody's only copy of a secret would be the worse mistake — so if it was plaintext before, it still is. Moving it somewhere safe is yours to do, and the app says so after every import.

Key derivation
scrypt, deliberately tuned to take a noticeable moment on ordinary hardware. That cost is the point: it is paid once when you unlock, and paid again by anyone making offline passphrase guesses. A weak passphrase can still be found. The current defaults are N=131072, r=8, p=1, which uses approximately 128 MiB for scrypt's main memory array per attempt, plus overhead, with a 32-byte random salt and a 256-bit derived key. Every vault records the parameters it was written with, so an old file still opens after the defaults are raised. Stated exactly rather than described, because "tuned to take a moment" is not something anybody can check. These values are in src/shared/vault-format.ts and are the numbers the application actually uses.
Encryption
AES-256-GCM, with a 12-byte (96-bit) nonce generated fresh for every write. The authentication tag covers the encrypted contents, vault version, key derivation parameters and nonce. Changing those without the key causes validation or decryption to fail. The envelope's informational modification timestamp is not authenticated; it is not proof that a file is the newest copy.
Writing
Every save is written to a temporary file, flushed to disk, and renamed over the target, with recovery handling for interrupted replacements. This reduces the risk of partial saves; disk failure, filesystem behavior and failed flushes can still prevent durable storage. The previous version is kept as a backup.
Locking
The vault locks on idle and on demand. ODA zeroes its live key buffer and drops the unlocked state. This is best-effort cleanup: JavaScript strings, runtime copies, swap or crash dumps cannot be guaranteed erased. Unlocking requires the passphrase again — being logged in to the computer is not treated as being present at it.

How the application is put together#

Check these claims against the release#

A security page is only useful when its claims lead back to something a reader can inspect. These links are pinned to v1.5.1, the latest published GitHub release, rather than a future source version or the moving main branch. Compare that version with the copy you run; the download page lists each channel's published version.

Vault format and encryption
Parameters and authenticated metadata, encryption and decryption, and the regression tests.
Renderer and message boundary
Window isolation and navigation policy, the deliberately narrow preload bridge, and the posture tests.
Network destinations
The interface security policy, Steam transport egress enforcement, and tests for allowed and refused routes.
Deliberate refusals
The notification-only update check, the fixed confirmation allowlist, and the policy tests.

Deliberate refusals#

The honest caveat about automatic confirmation#

Automatic confirmation can approve the sale of eligible items. On a compromised account, that can help an attacker turn items into Wallet funds and spend the balance. The incident-response guide explains pending transactions, completed Market sales and the separate CS2 Trade Protection rules.

The confirmation service only confirms what Steam is already asking about; it does not create listings. A user can still create listings on Steam pages in the separate browser. But if something else with access to your account can raise one — a stolen session or an authorised trading tool — then leaving automatic confirmation on for market listings means this application will approve it without showing you.

So: it is off unless you turn it on, it is set per account rather than globally, and it is worth turning on only for accounts where the convenience is worth that trade. If you are not listing in volume, leave it off and confirm by hand. The Activity screen records confirmation actions and outcomes; it is not a replacement for Steam's transaction history.

What this cannot protect you from#

These limits apply even when the checksum and provenance checks pass.

Reporting a vulnerability#

Report security issues privately. Use GitHub private vulnerability reporting, which is preferred, or email — the address is in security.txt rather than on this page, as a standard discovery location. That file is public and can be scraped. What we commit to is written down: acknowledgement in 72 hours, an assessment in 7 days, a fix or a dated plan in 30 for a confirmed high or critical.

Published and reviewed by MASTERPANEL LLC. Last checked . Editorial method.