Before you start
- Copy the redirect address from your own Console, never from a page. Postern composes it from its own port, and providers match it character for character.
- Postern encrypts every client secret on your machine. A secret leaves it for one purpose only: the request that renews the sign-in.
- Three of the credentials you paste behave like passwords. An Apple ID password, a SimpleFIN access URL and a SimpleFIN setup token.
- The failure messages are deliberately thin. That is a decision about where credentials can end up, not a bug.
The redirect address is pinned inside Postern
Postern composes the redirect address from its own port, in one place. On a stock install it ishttp://localhost:8787/api/oauth/<provider>/callback. Postern never
derives it from the address you reached the Console at, and never from the inbound
Host header.
The Console asks Postern which address Postern will send, and prints that answer
exactly. So a Console that cannot reach Postern prints nothing rather than a
guess. Providers match the string character for character, which is why you copy
it from your own Console and never from this page. It stays true if you move the
Console off port 8787.
It says localhost rather than 127.0.0.1 on purpose.
Microsoft’s portal refuses an http:// address with an IP number in the field
beside the platform dropdown, and it accepts any port after localhost. Google
accepts both forms. WHOOP is proven on localhost.
Postern holds an unfinished sign-in in memory for 10 minutes and spends it on
first use. It writes nothing about that sign-in to disk. If you wander off
mid-consent, restart Postern, or reload the callback address, the sign-in ends and
the browser shows {"error":"invalid or expired state"}. Postern stored nothing,
and nothing is broken. Start again from the Console. The same hold governs Google,
Microsoft and WHOOP.
What each provider needs, and why
Postern encrypts every client secret into the vault on your machine. A secret
leaves that machine for one purpose only: the request that renews the sign-in.
Postern never sends it to a browser and never renders it back into the Console.
What else is in the vault.
Two Microsoft registration choices Postern cannot work around
- Supported account types. Postern starts every Microsoft sign-in at
Microsoft’s
commonaddress, the one address that serves personal and organisational accounts alike. An app registered for a single directory refuses a sign-in that arrives there. The Supported account types dropdown opens on Single tenant only - Default Directory, which cannot sign in a personal Outlook or Hotmail address. Any Entra ID Tenant + Personal Microsoft accounts is the one row that covers personal, work and school together. - Platform type. Entra’s Single-page application (SPA) platform caps refresh tokens at 24 hours. Postern refreshes the sign-in silently, but a 24-hour token runs out inside a day and Microsoft demands a new interactive sign-in. No Postern setting changes it. Public client/native (mobile & desktop) gets Microsoft’s 90-day rolling refresh instead.
Why provider failures say so little
A refused source credential is not retried
Home Assistant throttles repeated sign-in failures, so Postern treatsauth failed: invalid token as final. Only a new token or a new address brings
that connection back. No timer will.
Three credentials that behave like passwords
Plaid never shows Postern your bank sign-in
Plaid’s hosted Link is why you can link a bank from a Postern that nothing on the internet can reach. You sign in to your bank on a page Plaid hosts, in a tab Postern opened but does not read. The Console picks the result up by a check on the session every few seconds. Postern never receives a call back from Plaid, so it opens no port to the internet and there is no redirect address to register. What returns is an access token for that one bank, which Postern encrypts and stores. Postern never held the bank password. One Link session carries one bank. A multi-bank session needs a Plaid user token, and Plaid issues one only to apps enrolled in products Postern does not use. The Console’s panel still says bank(s) because that is Plaid’s own wording, not a promise Postern can keep. For each further bank, open a new session from the Plaid group header’s Add a bank link.Confirm it works
- The redirect address you registered with the provider is the string your own Console printed, character for character.
- Console → Sources shows the connection, and the connection reads
okrather than an error naming a stage. - For Google, one sign-in has produced two connections; for Microsoft, three.
- The Client secret field for Microsoft is disabled and reads
not required — public client (PKCE).
If something went wrong
What you have now
One redirect address, pinned inside Postern and copied out of your own Console. Each provider’s client secret encrypted on your machine, leaving it only to renew its own sign-in. And a set of failure messages that tell you the stage rather than the cause, on purpose.Next
The vault and the master key
what is encrypted, where the key lives, and what destroys it
Grants and sectors
which sectors a sign-in turns on, and what one grant covers