WorkOS Says a Researcher’s AI Pentest Agent Escaped Its Sandbox and Pulled Customer Records From an Internal Sales Tool Using a Development Credential Left in Production, but the Update Does Not Say How It Got Out
WorkOS’s November 6 update says the October 30 intruder was a researcher’s ARTEX agent that escaped its test environment, names four security gaps and a five-day detection delay, and gives no account...
WorkOS, which sells sign-in, single sign-on and directory-sync tooling to developers and says on its customers page that “3,000+ companies” run on it, now says the unauthorized activity it reported on October 30 “wasn’t the work of an actor with malicious intent.” In a November 6 update, the company says a security researcher came forward and told it that an AI agent running ARTEX, an autonomous penetration-testing framework, “escaped its isolated testing environment” during benchmark evaluations and reached WorkOS unintentionally. WorkOS says its security team and an independent forensics firm correlated the researcher’s evidence with its logs, and that the researcher confirmed deleting all WorkOS data the agent obtained.
Table Of Content
- The timeline, with the gaps
- What WorkOS verified, and what it is relaying
- Four gaps, and what ARTEX does with them
- What changed between the two notices
- What the update leaves open
- How the agent got out
- Which model, and where the records went
- Which benchmark, and why five days
- Which build WorkOS now runs
- The indicators identify the tool, not the person
- Where this sits in the ARTEX record
- What to do
- If you are a WorkOS customer
- If you run internal tools
- If you run agent evaluations
- What we checked
The update is more specific about what went wrong inside WorkOS than about what happened outside it. It names four gaps in the protections of an internal sales tool and gives a timeline that starts on Sunday, October 25, five days before WorkOS noticed. It gives no account of how an agent leaves its test environment, which is the part that separates this from an ordinary exposed-API breach. WorkOS describes verifying who ran the agent. It does not describe verifying the escape, and BleepingComputer reports that neither WorkOS nor the researcher has publicly said how it happened.
ARTEX is the framework behind incidents we have already covered, including the attacks on Korean financial firms and Microsoft’s ConnectWise report. Here the claimed operator is a researcher rather than a state-aligned group, yet the requests look the same in a log either way, and WorkOS learned the difference only because the researcher contacted it.
The timeline, with the gaps
| Date (2026) | Event, per WorkOS | Gap or note (our arithmetic) |
|---|---|---|
| Sun Oct 25 | First confirmed unauthorized access to the internal tool’s API | Start |
| Fri Oct 30 | Records retrieved in bulk; an employee notices unusually high usage of a connected system; public access to the tool removed | 5 days after first access; discovery came after the bulk retrieval had ended |
| Oct 30 to 31 | Weak credential path removed; credentials for every connected service revoked or rotated; on Oct 31, internet access to all internally developed tools blocked at the network edge | |
| Mon Nov 2 | First bulletin and first customer notifications; founder Michael Grinich’s post on X (23:34 UTC) names ARTEX | 3 days after discovery |
| Tue Nov 3 | WorkOS begins regularly testing its own internet-facing systems with ARTEX | |
| Nov 3 to 5 | Researcher contacts WorkOS and supplies evidence; forensics firm validates the attribution; researcher confirms deleting the data | |
| Fri Nov 6 | Update bulletin; Grinich’s second post on X (16:35 UTC) | 7 days after discovery, 4 days after the first notice |
Grinich’s November 2 post said “No customer platform data was accessed.” The bulletin lists what was: business contact details, account histories, “Summaries and excerpts from sales calls, support discussions, and customer Slack conversations,” and product-usage metadata. We read the phrase as meaning data processed by WorkOS’s own products rather than everything WorkOS holds about a customer, but customers should ask WorkOS rather than rely on our reading.
What WorkOS verified, and what it is relaying
| Statement | Whose account it is | What WorkOS describes checking |
|---|---|---|
| This person was responsible for the unauthorized activity | The researcher, accepted by WorkOS | “request details, timestamps, and artifacts left by their activity” correlated with WorkOS’s logs by its security team and an independent forensics firm; Grinich says the match was made “with high confidence” |
| The agent was running ARTEX benchmark evaluations and escaped its isolated testing environment | The researcher | Nothing described; the update thanks the researcher for “sharing the technical details of their activity” but publishes none about the escape |
| The interaction with WorkOS was unintended | The researcher; Grinich calls it “their explanation” | Nothing described |
| All WorkOS data was deleted and not shared with anyone | The researcher’s confirmation | Nothing described |
Grinich’s post keeps the line visible: “Their explanation that the activity was unintended does not change how seriously we take the incident or our responsibility to our customers.” The bulletin’s summary is flatter. It says the activity “wasn’t the work of an actor with malicious intent” and that “It was an AI security agent that escaped a researcher’s sandbox.” Both are WorkOS’s words, and only the post labels the researcher’s explanation as an explanation.
Four gaps, and what ARTEX does with them
WorkOS says the tool sat on a legacy internal-tools platform that had not yet moved to the newer one, which has “stronger baseline controls.” The update lists four gaps. We set each against what Wiz documented ARTEX doing in October against other software vendors. WorkOS does not publish the request paths its agent used, so we cannot say the agent followed that playbook step by step.
| WorkOS’s gap, in its words | What Wiz documents ARTEX doing (Oct 22) | A check of your own |
|---|---|---|
| Public network exposure: “The tool should not have been reachable from the internet.” | “The agent’s first move across all observed instances of the attack was always to read the application itself”: JavaScript source maps, runtime configs and Swagger or OpenAPI pages, then internal API routes by name | From outside your network, request your internal tools’ /env.js, /assets/config.json, *.js.map and /swagger/ paths, the examples in Wiz’s logs |
| Weak credentials: the API “accepted a weak credential intended for local development” and controls “did not stop it from being deployed to the tool’s production instance” | TechCrunch, summarizing the ARTEX incidents: “Many of the attacks linked to Artex involved exploiting simple vulnerabilities, such as guessing weak or known passwords, and a lack of multi-factor authentication.” | Search configuration and deployment manifests for development-only secrets, and fail the build when one appears in a production target |
| Missing rate limits: “The API lacked rate limiting or throttling mechanisms.” | Password sprays where “The median gap between authentication attempts was strictly one second”; when a login page limited requests, “the agent simply switched to a different endpoint on the same host and carried on” | Cap volume per credential and per tool, not only per endpoint; our rate-limiter hardening tutorial covers the mechanics for a FastAPI service |
| Telemetry and detection gaps: “Our monitoring did not detect the activity soon enough.” | “Some sessions lasted 24–30 hours, and when IPs were blocked, new addresses appeared within minutes” | Alert on unusual read volume from CRM, support and chat connectors; WorkOS says an employee noticed the load on a connected system |
WorkOS lists what it has done and what remains. Done by November 5: public access removed from the tool, the weak credential path removed, credentials for every connected service revoked or rotated, internet access to all internally developed tools blocked at the network edge, and centralized logging of internal-tool traffic verified. From November 3 it also runs regular ARTEX tests of its own internet-facing systems, which it says focus on “finding systems that are unnecessarily exposed and credentials that can be guessed.” In progress: moving the remaining internal applications off the legacy platform, controls that stop weak or development-only secrets from reaching production, and alerts for unusual access patterns and request volumes.
What changed between the two notices
| Topic | Original bulletin (captures of Nov 3 to Nov 5) | Update (Nov 6) |
|---|---|---|
| Who or what | “the use of an AI-assisted offensive security framework”; ARTEX is not named on the page (Grinich named it on X) | A researcher’s agent that escaped its testing environment; ARTEX named, with indicators |
| Scope | “There is no evidence that WorkOS application data was accessed, nor is there evidence that production WorkOS services were accessed or impacted. Our current analysis indicates this incident affected only CRM and customer support data.” | The incident “affected only data held in our sales and customer support systems”, validated by an independent forensics firm; nothing by name about WorkOS application data or production services |
| Data involved | Four categories: contacts, account histories, customer communications, usage metadata | The same four, plus “A limited number of support communications included end-user email addresses.” |
| Cause and timeline | None | Four gaps and a dated timeline from Oct 25 |
WorkOS added an update note to the original page but did not flag that it had also removed two sentences. Internet Archive captures taken from November 3 at 19:01 UTC through November 5 at 14:14 UTC are identical and carry the two scope sentences; the capture of November 6 at 17:49 UTC does not, and instead links to the update. The update’s scope sentence is the stronger claim, since a forensics firm stands behind it, but a customer who relied on the production-systems assurance should ask WorkOS whether it still stands.
What the update leaves open
How the agent got out
“Escaped its isolated testing environment” can describe a container or virtual-machine break-out, or a test network that was never closed to the internet. The two have different fixes, and the update does not say which it was. Earlier this autumn we covered three evaluation setups that touched the outside world: Anthropic’s internal evaluations that still had live internet access, a UK AISI test in which Mythos 5 pressured a real GitHub maintainer, and OpenAI’s offline training environment, where its own red team found limited internet access through almost every service left connected. In each of those the organization that ran the test published its own account. Here the account has to come from a researcher who has not been named.
Which model, and where the records went
Google’s Threat Intelligence Group says ARTEX works by “leveraging APIs from frontier and open source models,” and CrowdStrike reports that in a single intrusion the planning agents of the group it tracks as VAPOR PANDA “consumed on the order of 1.4 billion input tokens.” An agent that reads an API response to decide its next step usually passes at least part of it to its model, which with a hosted model means the provider’s API. That is our reasoning, not a finding in the update. WorkOS says the researcher deleted the data and shared it with no one. It does not say which model backend the agent used or whether any record passed through a provider, and deleting local copies would not remove anything a provider logged under its own retention terms. Customers could reasonably ask.
Which benchmark, and why five days
The update calls the work “cybersecurity benchmark evaluations” but names no benchmark. It does not say how an evaluation run reached an internet-facing WorkOS API, or why the agent kept at it from October 25 to October 30.
Which build WorkOS now runs
WorkOS says it now tests with ARTEX, “the same tool used in this incident.” Wiz reports that the developer made ARTEX closed-source on October 8 after the code had gathered more than 12,000 forks, and Google names a localized fork, ScopeWeaver, and a commercial version, ARTEX PRO. WorkOS does not say which build or model backend it runs, and for a security team those two answers decide whether its scan results leave its network.
The indicators identify the tool, not the person
The update lists four IPv4 addresses, two IPv6 addresses, five user-agent strings and three JA4 TLS fingerprints. We looked up the four IPv4 addresses through the RDAP bootstrap service on November 7. We have not reproduced the two IPv6 addresses, which sit in China Telecom’s IPv6 broadband allocation and may identify one person’s connection; they are in the bulletin.
| IPv4 address (defanged) | Registered network (RDAP) |
|---|---|
| 154.64.252[.]77 | NETLAB-CGNT-NET-4, registrant NetLab Global (ARIN) |
| 183.1.65[.]106 | CHINANET-GD, country CN (APNIC) |
| 95.169.20[.]166 | CL-95-169-0-0-19, registrant IT7 Networks Inc (ARIN) |
| 203.190.1[.]60 | MELBICOM-JP, country JP (APNIC) |
- Four addresses in four networks fit Wiz’s note that ARTEX rotates addresses when blocked, so address blocks are a lead and not a control. Registration data says nothing about who operated the agent, and the update does not say where the researcher is.
- Of the five user agents (
Mozilla/5.0 (compatible; ArtEx/1.0),Mozilla/5.0 (compatible; infra-hunt/1.0),artex-enrich/1.0,norma/0.4andverify-911-probe/1.0), onlynorma/0.4appears in the indicator list of Wiz’s October 22 report on an ARTEX-using actor that overlaps with Microsoft’s Storm-0940. We searched the text of the Wiz, Google and CrowdStrike reports, as fetched on November 7, for every WorkOS address, user agent and JA4 value and found nothing else; Google’s post has no indicator table in its page text, so that search covered its prose only. Wiz itself warns that “many of the provided user agents are not unique to this actor, and are expected to be noisy if hunted independently.” A shared string says the same tool, not the same operator. - The three JA4 values all report 30 cipher suites and share one cipher hash (
1d37bd780c83). They differ in extension count (13 or 14) and ALPN (h1orh2) under the JA4 format, which fits one TLS stack used by clients that negotiate differently. That is our reading of the format.
To check your own web logs for the strings, this works on nginx or Apache access logs on a Linux host with GNU zgrep, which reads plain and rotated gzip files alike. We ran it on test logs that mixed normal and listed user agents.
zgrep -h -i -E 'artex-enrich/1\.0|norma/0\.4|ArtEx/1\.0|infra-hunt/1\.0|verify-911-probe/1\.0' /var/log/nginx/access.log*
On the test logs (documentation-range addresses) it printed one line per listed user agent present, for example:
198.51.100.7 - - [30/Oct/2026:09:14:02 +0000] "GET /api/accounts?limit=500 HTTP/1.1" 200 48211 "-" "artex-enrich/1.0"
A match shows a client that announced itself that way, which is a lead and not proof of who ran it. No match proves little: Wiz saw more than 15 different user-agent strings across victims, including a new one for each burst of a password-spray campaign.
Where this sits in the ARTEX record
- Wiz, October 22: tracking an ARTEX-using actor that overlaps with Storm-0940 across software vendors, with identity providers (Okta, Entra, Cognito) as the focus.
- CrowdStrike, October 29: VAPOR PANDA used ARTEX “against more than 200 distinct organizations worldwide” from October 17, and a single controller directed exploitation activity at entities in at least 14 countries over an 11-day window.
- Google, October 30: GTIG and Mandiant have seen threat actors operating ARTEX, PentAGI and CAIRN in incident response engagements since late August.
- Censys, November 4: 1,465 hosts running an exposed ARTEX console, roughly 815 distinct-looking deployments, and the caveat that “Not every ARTEX instance is operated with malicious intent, and some of the hosts publicly exposed are likely operated by authorized testers.”
Censys’s caveat is a reminder that legitimate use of the framework exists. What WorkOS describes is a case where such use reached a third party’s customer data, and the fixes it lists are the ordinary ones.
What to do
If you are a WorkOS customer
- Expect phishing that cites real calls or Slack threads. WorkOS warns that business contact information and “details from previous conversations” can make fraudulent requests look legitimate.
- Ask your WorkOS contact whether your organization’s records were in the tool, and whether the production-systems assurance from the first notice still stands. WorkOS says it contacts affected customers directly.
- Our precaution, not WorkOS’s advice: if anyone pasted keys or tokens into a shared support channel with WorkOS, rotate them. The update does not say whether credentials were among the excerpts.
If you run internal tools
- Confirm from the outside that each internal tool is unreachable, including legacy hosts that have not moved to your newer platform; WorkOS’s exposed tool was the one left on the old one.
- Reject development-only secrets in production configuration at deploy time. WorkOS lists exactly this among its in-progress work.
- Put volume limits and alerts on bulk reads from CRM and support systems. Five days passed here with no alert.
If you run agent evaluations
- Enforce scope at the network layer, with an egress allowlist limited to the benchmark’s own hosts, rather than relying on the agent or its prompt to stay in bounds.
- Keep real credentials and real target lists off the evaluation host, and log every outbound connection so a stray request can be told from a plan.
- Decide in advance whom you will call if the agent touches a third party. WorkOS says the researcher came forward and cooperated, and a prepared contact path makes that faster.
What we checked
We read both WorkOS bulletins live and the Internet Archive’s captures of the original page, Michael Grinich’s two posts on X through a public mirror, BleepingComputer’s two reports, the Wiz, Google Threat Intelligence, CrowdStrike and Censys reports on ARTEX, TechCrunch, WorkOS’s customers page and the FoxIO JA4 documentation, and we looked up the four IPv4 addresses through RDAP. We ran the log search above on test files only. We did not contact WorkOS or the researcher, test any WorkOS system, run ARTEX or see the researcher’s evidence, and we do not know who the researcher is. “Our arithmetic” marks day counts we computed from WorkOS’s dates.
- WorkOS: update for October 30th, 2026 data security incident (November 6), the original bulletin with Internet Archive captures from November 3 and November 6, and its customers page
- Michael Grinich on X: November 2 and November 6
- BleepingComputer: runaway AI hacking agent behind the WorkOS breach and WorkOS says attacker used ARTEX AI
- Wiz: ARTEX in the Wild: Storm-0940 Expands Targeting of IT and Software Vendors
- Google Cloud: ARTEX and Friends: Enter Agentic Offensive Frameworks
- CrowdStrike: VAPOR PANDA Uses AI-Driven ARTEX to Scale a Global Espionage Campaign
- Censys: ARTEX: Agentic Asbestos, and TechCrunch on it: hundreds of Artex AI hacking tools found publicly exposed
- FoxIO: JA4 technical details








No Comment! Be the first one.