Build1 publisher3 min readPublished
Sign in with ChatGPT lets Plus and Pro users cover an app's AI requests from their own plan
OpenAI's Sign in with ChatGPT lets Plus and Pro users run an app's AI requests on their own plan, up to a weekly cap they set per app. That cap reserves none of the user's quota, so builders still need their own API key for any request the plan cannot cover.
The Engineer · Build desk

What happened
- Requests billed this way consume the ChatGPT Work and Codex quota on the user's Plus or Pro plan.
- Users set each app's cap as a percentage of their total weekly usage, with documented example settings from 10% to 100%.
- Paying with credits once the cap is reached is off by default and can only be enabled with the app's cap set to 100%.
- Plus plans share one five-hour limit across every app using the plan, a limit Pro plans do not have.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- constraint An app cannot count on the plan for any given request, so it needs a tested path that switches to its own key mid-session when a cap or window closes.
- decision Apps that already identify users by email have to rework account linking around verified iss, aud and sub, with existing users confirming the link.
- capability Open-source tools can offer ChatGPT sign-in through dynamic registration and a loopback redirect without shipping any client secret.
Underneath, this is a standard Authorization Code grant with PKCE and OpenID Connect, according to a dev.to guide that works from OpenAI's documentation [7]. Teams that have integrated another OIDC provider will recognise each step. The provider metadata sits at https://auth.openai.com/.well-known/openid-configuration, and the issuer is https://auth.openai.com [7]. The backend generates a fresh state, a PKCE verifier with an S256 challenge, and a nonce. On the callback it validates state, exchanges the code for tokens, and checks the ID token's signature, iss, aud, exp and nonce [8].
The app receives a stable account ID plus the user's name, email and profile picture [1]. Local accounts should key on the verified combination of iss, aud and sub [5]. OpenAI warns that an email match alone is not proof of account ownership, so existing users have to confirm account linking [5].
The identity scopes, openid profile email, return an ID token and do not grant access to ChatGPT conversations or OpenAI API resources [4]. Billing needs one more scope. When the user approves it, the token response carries an access token for eligible Responses API requests [6]. That scope is how, since OpenAI's DevDay on 29 September 2026, Plus and Pro users let participating apps run requests on their plan instead of the developer's key [2]. The guide does not define which requests count as eligible. The app never sees the user's conversations, memory or API keys [3].
The registration path for open-source tools is the most carefully designed piece. A tool sends client_id=dynamic_agent_client, an agent_name_hint with its name, and an ext_agent_host_id that persists per host [10]. The callback returns an issued client ID of the form oaiapp_..., which the tool stores and reuses on later logins, and the redirect goes to loopback 127.0.0.1 with no client secret [10]. A secret shipped in public source code is readable by anyone, and public clients are barred from sending one anyway [9].
The billing rules need the most care. Because the plan's Work and Codex quota is the pool [11], an app draws from the same allowance as the user's own Codex sessions. The per-app cap limits what the app can take and reserves nothing for it; heavy use in other apps or services can exhaust the plan first [13]. Revoking access stops future usage and does not reverse usage already spent [16].
I think the right setup for a builder is to treat the user's plan as a discount on part of the traffic and keep the API key as the path every request can fall back to [2]. The fallback has to work mid-session, since a Plus user's shared five-hour window can close because of another app [15]. Plan billing also covers only Plus and Pro subscribers, so everyone else's requests stay on the builder's key [1].
What to watch
- Whether OpenAI publishes which Responses API requests count as eligible for plan billing.
- The response an app gets when a user's per-app cap or Plus five-hour window runs out; a clear signal makes failover to the app's own key simple.
- Any extension of plan billing beyond Plus and Pro to other ChatGPT tiers.