Mile-Post
Read this before you sign in

Security & risk

We’d rather you know exactly what you’re trusting us with than find out the hard way. Nothing here is buried in fine print.

This is not an official OpenAI product

Mile-Post signs in using the same OAuth flow OpenAI’s own Codex CLI uses, then talks to the ChatGPT-backed model API on your behalf. That path is meant for OpenAI’s official client, not third-party proxies like this one. It could stop working if OpenAI changes how that works, and using automated or third-party access to your account is a gray area under most ChatGPT terms of service — in the worst case, unusual usage patterns could get an account flagged or limited by OpenAI. That risk is inherent to how this works, not something we can engineer away.

What we store, and how

  • Your ChatGPT login token (access + refresh token) is encrypted at rest with AES-256-GCM before it ever touches our database. “Encrypted at rest” protects against someone stealing a database backup or disk snapshot — it does notmean we can’t use it: our server holds the decryption key too, because it needs to decrypt your token to make requests on your behalf. That’s the entire point of the product, so it’s worth being explicit about the trust you’re placing in us.
  • Your API key is never stored in a form we can read back. We store a SHA-256 hash of it — the same approach used for passwords. We show you the real key exactly once, when you create or regenerate it.
  • Your chat messages pass through our server in memory to be forwarded and streamed back — we don’t write message content to any database or log. There is currently no analytics or logging pipeline that persists what you send or receive.

Your API key is a password

Anyone who has it can send requests as you, against your ChatGPT plan, until you revoke it. Treat it exactly like you’d treat a database password or an SSH key:

  • Never commit it to a public (or private) git repository.
  • Don’t paste it into client-side/browser code — anyone viewing the page can read it.
  • Regenerate it immediately if you suspect it leaked. The old one stops working the instant you do.
  • Never share a ChatGPT device code with anyone — that’s a separate, one-time secret that authorizes a sign-in.

Revoking is immediate and one-way

Regenerating or revoking your key deletes its hash from our database. The lookup a request needs to succeed simply no longer exists — there’s no grace period, no cache to wait out.

Current limitations, plainly stated

  • There’s no additional rate limiting on top of whatever limits your own ChatGPT plan already has — a leaked key can be used as fast as your plan allows.
  • You can hold multiple active keys per account, but they’re not scoped to a particular project or permission set — every key for an account can do the same thing.
  • This project depends on an unofficial integration path (see above) — availability isn’t guaranteed the way a paid, official API is.

If any of this changes how comfortable you are proceeding, that’s a completely reasonable reaction — this trade-off (convenience and no extra billing, in exchange for the above) is the whole shape of the product, not a bug to be fixed later.

Don't want to trust our hosted instance?

The whole thing — this app, the backend, the Worker code that decrypts your tokens — is open source. Self-hosting means your tokens and key only ever touch infrastructure you control. Self-hosting instructions.