Major incident
WorkOS: Form POST failures for some Authkit customers
Sep 9, 2026, 21:00 UTC
started
23:02 UTC
resolved
2 h 02 min
duration
Affected: AuthKit
Current status of WorkOS: Operational — live WorkOS status
Timeline
- Sep 9, 2026, 21:00 UTCinvestigatingWe are seeing an elevated error rate for some customers for POST requests. This appears to be limited to a small subset of organizations using custom domains for hosted Authkit
- Sep 9, 2026, 23:02 UTCresolvedWe have identified the source of the problem. A configuration change that applied to roughly 2% of organizations using a custom domain for hosted Authkit resulted in form submission errors. The configuration has been reverted and service restored.
- Sep 16, 2026, 21:10 UTCpostmortemWe're sorry for the disruption this incident caused for you and your users. Authentication is a critical path, and during this window we did not meet the reliability standard you expect from WorkOS. We take responsibility for the impact. Service was restored the same day, and we have already shipped several lasting fixes while continuing broader cleanup and detection work. # Postmortem: AuthKit custom domain sign-in failures **Date:** September 9, 2026 **Duration:** 21:09 – 22:30 UTC \(~80 minutes of customer impact\) **Status:** Resolved ## Summary On September 9, 2026, from approximately **21:09 to 22:30 UTC**, a small subset of customers using **AuthKit custom domains** experienced failures when submitting authentication forms \(sign-in, sign-up, MFA verification, device authorization, and email verification\). Users on affected domains saw **HTTP 500** errors on those form submissions, which blocked interactive login for the duration of the incident. This was a **partial outage**. It affected a small cohort of AuthKit custom domains provisioned through an earlier self-serve configuration path—**about 0.17%** of AuthKit custom-domain traffic was actually affected by the failure. Default AuthKit domains \(`*.authkit.app`\), the WorkOS API, the Dashboard, and **GET** requests \(page loads and most OAuth callback traffic\) on custom domains continued to work. The failure mode was specific to **server-action POST** requests used by AuthKit hosted UI forms. We first learned of the issue from a customer report at approximately **22:04 UTC** \(~55 minutes after impact began\). Engineering restored service by **22:30 UTC**. No evidence of unauthorized access, data exposure, or data corruption was found. ## Background AuthKit can be hosted on a customer’s own hostname \(a **custom domain**\). Traffic for those hostnames is terminated at our edge and forwarded to the AuthKit application with HTTP headers that identify the original host and browser origin. The AuthKit application relies on those headers so that browser security checks for interactive form submissions \(Next.js server actions\) succeed. Over time, WorkOS evolved how custom-domain traffic is routed at the edge—from earlier **per-domain** configuration toward shared, list-based edge rules and a newer application hosting path. During that migration, a set of **legacy per-domain header rules** remained in place for domains created in an earlier era. A later **zone-wide** edge rule normally overwrote those headers so the application always saw a consistent, CSRF-safe origin. While that zone-wide rule was enabled, the older per-domain rules appeared inert. ## What happened As part of decommissioning older edge configuration no longer needed for the current hosting path, the zone-wide header transform rule was **disabled** in production. That change unmasked the leftover per-domain rules for the older custom-domain cohort. For those domains, the edge continued to rewrite the browser `Origin` header to the tenant’s default AuthKit hostname, while the application still received the customer’s custom hostname as the forwarded host. AuthKit’s application layer correctly rejected the mismatched server-action POSTs as invalid \(CSRF / same-origin protection\), returning HTTP 500 before application business logic ran. **Scope** * Structurally exposed: AuthKit custom domains still carrying the legacy per-domain header configuration \(on the order of a few dozen hostnames\). * Observed traffic impact: a subset of those domains that received form POST traffic during the window \(about sixteen hostnames with material volume\). * Scale: roughly **2%** of AuthKit custom-domain traffic comes from potentially affected domains; **~3,100** failed server-action POSTs over the ~80-minute window. For affected domains, failure rates on form POSTs were often near **100%**. **Symptoms** * Users on affected custom domains could not complete interactive AuthKit forms \(sign-in and r
Updates as published by WorkOS (original).
Other services with incidents at the same time
This was part of a wider event: 41 services reported incidents within the hour.
- Snowflake 21:53 UTC · INC20000211
- Dropbox 21:36 UTC · Some customers are unable to access certain website routes and features.
- The Linux Foundation 21:00 UTC · [Triggered] [Synthetics] lava.automotivelinux.org
- Elastic Cloud (Public) 20:44 UTC · Elastic Agent enrollment/check-in failures on 9.5.3 (and 9.4.6) with Fleet remote Elasticsearch output
- 1Password 20:43 UTC · Device Trust Service Disruption
- ITS Network & Systems 20:17 UTC · Internet connectivity issues in Seventh College
- Ledger 20:14 UTC · Near Protocol (NEAR) Mainnet Degraded Service
More WorkOS incidents
- October 23, 2026 Elevated errors across SSO and AuthKit
- October 19, 2026 Elevated AuthKit Error Rates
- October 15, 2026 Radar SMS challenge failures for phone numbers in mainland China (+86)
- October 9, 2026 Elevated errors across SSO and AuthKit sign-in
- October 1, 2026 Elevated errors for Audit Logs
- October 1, 2026 Elevated API and AuthKit errors for some requests (Columbus, OH region)