Sign in with ChatGPT
On 2 August 2026 OpenAI turned ChatGPT into an identity provider. "Sign in with ChatGPT" is now a public beta, sitting on the same button rack as Sign in with Google, Apple and Microsoft โ and quietly re-drawing where a lot of B2B auth is going to live. This page is for two readers at once: the user who wants to know what actually crosses the line if they click the button, and the developer who has to decide whether to add it to their own app (and if so, how, without making OpenAI a load-bearing dependency).
- Understand what a partner app receives when a user signs in with ChatGPT โ and what it doesn't
- Know the six launch-day partners and why they were picked (it's a signal, not a coincidence)
- Walk the exact OAuth 2.1 + PKCE + OIDC flow that ChatGPT expects on your server
- See the enterprise admin controls that already ship โ and the default that surprises people
- Know the failure modes to design for before you put the button on your login screen
The 60-second versionโ
- What launched. A cross-platform identity system: users can create or link an account on partner sites using their ChatGPT credentials, the same way they'd use Google or Apple. Announced 2 Aug 2026 as a beta.
- What crosses the line at sign-in. Three claims: name, email, profile picture. Nothing else, and nothing about the user's chat history.
- Who's on stage first. Six developer-tools launch partners: Airtable, GitLab, HubSpot, Notion, Supabase, Vercel. That's not a random list โ it's the muscle group that lets a ChatGPT session build and deploy software end-to-end.
- What developers have to build. A standard OAuth 2.1 authorization-code flow with PKCE (S256) and OIDC discovery โ ChatGPT registers itself via Dynamic Client Registration at your
registration_endpointand calls yourauthorization_endpoint/token_endpointlike any other client. If you already ship OIDC, you're 80 % of the way there. - The enterprise default that trips people up. Organisations that haven't set an explicit policy are opted in by default; admins can either turn Sign in with ChatGPT off org-wide or restrict it to an allow-list of partner apps.
Why this is a bigger deal than "another login button"โ
Login buttons look interchangeable until you notice who the identity provider becomes. Google Sign-in normalised the pattern where a productivity vendor also owns your identity. Sign in with ChatGPT does the same trick โ but from the assistant side of the workflow, not the mailbox side.
Two things follow from that, and they're worth naming:
- The identity provider is now the place your users already have an active session with an agent. That agent can, on the user's behalf, invoke Apps SDK connectors on partner sites (Notion, Vercel, Supabase, ...) with a token that the user just approved. The button isn't only "log me in"; it's "let this assistant reach across into that tool for me".
- The launch partners are the tools an autonomous coding agent needs. Model + DB (Supabase) + backend (GitLab / Vercel) + docs (Notion) + spreadsheet-of-record (Airtable) + CRM (HubSpot). That's the shape of a session that starts in ChatGPT and finishes with something shipped. It's a preview of where OpenAI expects Apps SDK sessions to live.
If you're building on Claude and reading this thinking "this doesn't affect me" โ it does, indirectly. Whichever assistant your users happen to also use is going to want to reach into the same B2B tools you do, using the same login layer. Understanding this pattern early is how you decide whether to accept it, mirror it (Sign in with Claude is not a public product today), or route around it with your own OIDC.
What actually crosses the lineโ
The claim boundary at sign-in is deliberately narrow. When a user completes the flow, the partner receives:
| Claim | Included? | Notes |
|---|---|---|
name | โ | The user's display name on their ChatGPT account |
email | โ | The email associated with the ChatGPT account |
picture | โ | Profile picture URL |
| Chat history | โ | Never shared with the partner |
| Memories / custom instructions | โ | Never shared |
| Plan tier (Free / Plus / Pro / Enterprise) | โ | Not exposed as a claim at sign-in |
| Payment info | โ | Not in scope for this flow |
The corollary โ the part users tend to miss โ is what OpenAI learns from the partner side: which apps you signed into, and when. That's the shape of any federated identity: the IdP sees your logins, the RP sees your identity. It's the same trade you make with Google or Apple; it's just being made with a new counterparty whose reason for existing is different.
- Sign in with ChatGPT is a login federation, not a data-sharing tunnel. The partner gets identity claims, not your chats โ but OpenAI does see which partners you sign into.
- The enterprise default is opt-in. If you run an Enterprise or Team org and haven't touched settings, your users can already use it on any of the six partner apps today.
The six launch partners โ read them as a shapeโ
The launch roster is the story here. Grouped by what they let a session accomplish:
- Data / spreadsheets โ Airtable
- Docs / knowledge โ Notion
- Codebase / SCM โ GitLab
- Database / backend โ Supabase
- Deploy / hosting โ Vercel
- CRM / GTM data โ HubSpot
This is not "a random six early adopters." It's the operating stack of a ChatGPT-driven builder session: pull a lead from HubSpot, look up the record in Airtable, write the change in Notion, ship the code through GitLab, migrate the DB in Supabase, deploy through Vercel. Every one of those steps is a place OpenAI's Apps SDK connectors already want to be.
If your product is adjacent to any of these โ issue tracker, CRM, low-code, vector store, analytics โ assume Sign in with ChatGPT support becomes a table-stakes question from your enterprise buyers over the next two quarters.
What a developer has to buildโ
The good news: it's plain OAuth 2.1 + OIDC. If you already have an authorization server that speaks OIDC discovery and Dynamic Client Registration, you mostly configure, not code. Here's the shape ChatGPT expects.
The endpoints ChatGPT callsโ
- You expose /.well-known/openid-configuration (and, if this is an MCP resource server, /.well-known/oauth-protected-resource pointing at it). ChatGPT reads this to find your authorization_endpoint, token_endpoint, registration_endpoint and jwks_uri.
- ChatGPT POSTs to your registration_endpoint to register itself as a public client. You store the returned client_id. No shared secret is issued โ PKCE is the anti-replay mechanism.
- ChatGPT redirects the user to your authorization_endpoint with response_type=code, code_challenge, code_challenge_method=S256, the requested scopes, and the resource parameter identifying your API.
- Your consent screen shows the user what ChatGPT is asking for. Show the requested scopes verbatim; do not hide them behind a friendly summary. This is the user's only chance to see them.
- ChatGPT posts the code and code_verifier to your token_endpoint. You issue an access token whose aud matches the resource parameter, and (if you support OIDC scopes) an id_token.
- On expiry, ChatGPT re-runs the flow. If you issued an id_token, ChatGPT passes it back via id_token_hint so the user isn't prompted to sign in again โ they only see the incremental consent.
The non-obvious requirementsโ
Most teams that get this wrong lose a day to one of these:
- PKCE is mandatory and must be
S256. Advertise"code_challenge_methods_supported": ["S256"]in your discovery document.plainis not accepted. - You must bind the access token to the resource. Use the
resourceparameter and copy its value into the token'saudclaim. If you don't, an audience-confusion attack is your top vulnerability. - Public client, no secret. ChatGPT uses
token_endpoint_auth_method: none(or, if you prefer,private_key_jwtagainst ChatGPT's published JWKS). Don't require aclient_secretin the token exchange or the flow just fails. - Rotate at every refresh. Treat refresh tokens as one-time-use, rotated on every exchange. This is standard OAuth 2.1 guidance, and it's the difference between a stolen refresh token being annoying and being catastrophic.
- Handle central revocation. An enterprise admin can revoke Sign in with ChatGPT org-wide at any time. Your app has to degrade gracefully โ a 401 on token refresh is not a bug to page on; it's a signal to prompt the user to re-link or fall back to your own login.
The bare-minimum discovery documentโ
Enough to make ChatGPT talk to you (fill in your issuer and paths):
Minimum /.well-known/openid-configuration for Sign in with ChatGPT
{
"issuer": "https://auth.example.com",
"authorization_endpoint": "https://auth.example.com/oauth/authorize",
"token_endpoint": "https://auth.example.com/oauth/token",
"registration_endpoint": "https://auth.example.com/oauth/register",
"jwks_uri": "https://auth.example.com/.well-known/jwks.json",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": ["none", "private_key_jwt"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256"],
"scopes_supported": ["openid", "email", "profile"]
}The scope you probably wantโ
If you're building a partner app and want to accept Sign in with ChatGPT purely as an identity signal โ no data-plane access to the user's ChatGPT account โ request only the OIDC scopes:
Identity-only authorization request (no data-plane access)
GET /oauth/authorize?
response_type=code
&client_id={registered_client_id}
&redirect_uri=https://chatgpt.com/connector/oauth/{callback_id}
&scope=openid+email+profile
&code_challenge={base64url(sha256(verifier))}
&code_challenge_method=S256
&state={csrf_nonce}
&resource=https://api.example.comThe redirect URI shape (https://chatgpt.com/connector/oauth/{callback_id}) is important โ it's the one ChatGPT itself routes back through, not one you configure on your side.
Enterprise controls (and the default that will bite you)โ
For organisations on Team / Enterprise plans, admins get two controls today:
- Disable Sign in with ChatGPT org-wide. Turns the button off for everyone in the org.
- Restrict to an approved list of partner apps. Users can only complete the flow into partners on your allow-list.
The nuance: orgs without an explicit policy are opted in by default โ for the six launch partners, all your users can use the button right now. If your security posture doesn't allow federated identity into arbitrary third parties, you have to change the default explicitly. This is the single sentence that most affects real enterprise deployments this month.
How it compares to Google / Apple / Microsoft sign-inโ
| Dimension | Sign in with ChatGPT | Apple | Microsoft | |
|---|---|---|---|---|
| Identity claims at sign-in | name, email, picture | Broad (name, email, picture, plus optional scopes for data) | Name, private-relay email option | Name, email, tenant info |
| Data-plane access via the same auth | Yes โ Apps SDK connectors can be granted their own scopes in the same session | Yes โ Google APIs via scoped OAuth | Limited (Sign in with Apple is primarily identity) | Yes โ Graph API via scoped OAuth |
| Anonymised email option | No (today) | No | Yes โ private-relay emails | No |
| Enterprise admin controls | Org-wide disable + partner allow-list | Full Workspace admin console | MDM-managed | Full Entra ID console |
| Public client + PKCE required | Yes, S256 mandatory | Optional (recommended) | Yes | Yes |
| Cross-app session with an agent | Yes โ this is the point | No | No | No (Copilot is a separate story) |
Two rows to notice: no private-relay email (unlike Apple, users can't hide their real address), and cross-app session with an agent (the row that explains why this exists in the first place).
When to add it โ and when to route aroundโ
- Add it if your buyers are AI-forward and your product sits inside the six partner-adjacent categories (dev tools, data, docs, CRM, deploy). The button is a signal, cheap to add if you already ship OIDC.
- Add it if you want your app reachable from a ChatGPT session as an Apps SDK connector. Sign in with ChatGPT is the natural front door for that.
- Route around it if your users are regulated (health, finance, government) and OpenAI is not on the approved sub-processor list โ federated identity implies data-processing trust.
- Route around it if your product's differentiation is being AI-neutral. Adding one assistant's button and not others is a positioning statement whether you meant it or not.
The pragmatic pattern most teams land on: ship it alongside Google, Apple, and Microsoft (not instead of any of them), scoped to identity-only claims, with the enterprise admin toggle wired to your existing SSO controls.
Failure modes to design forโ
Before you push the button live, wire the four failure paths:
- An enterprise admin disables Sign in with ChatGPT while the user has a live session. Your next token refresh returns 401. Do not log the user out silently โ surface a clear 're-link your account' prompt with a fallback to native login.
- The user still has a valid session in your app but their ChatGPT-linked email is now dormant. Let them attach a password / passkey to the existing account rather than orphaning it.
- Admin removes your app from the allow-list. Same handling as central revocation. Provide a support-facing endpoint that logs the reason so admins can audit.
- Your login screen must not block on ChatGPT's OIDC discovery. Cache the discovery document with a sane TTL and fail fast if it's stale โ never hang the login page waiting on a third-party IdP.
Quick checkโ
Check yourself
0/4Related on AILmanacโ
- ChatGPT for Claude Users โ the mental-model map if you're crossing over from Claude
- MCP 2026-07-28: the stateless spec โ the sibling change on the Anthropic side of the ecosystem
- MCP Apps (SEP-1865) โ the first official MCP extension for interactive UIs, the counterpart to the OpenAI Apps SDK
- Choosing a Model โ cross-provider decision framework
Sources & further readingโ
- OpenAI โ Introducing Sign in with ChatGPT
- OpenAI Developers โ Apps SDK: Authentication
- OpenAI โ ChatGPT release notes
- OpenAI โ GPT Action authentication
- Stytch โ Guide to authentication and user consent in the OpenAI Apps SDK
- IETF โ OAuth 2.1 draft
- OpenID Foundation โ OpenID Connect Core 1.0