The Railway breach explained: what leaked and what to rotate
The timeline, what was exposed, the AI-key campaign behind it, and the order to rotate your secrets, with seven interactive charts and 25 references.
CybersecurityAman Singh23 October 202610 min read
Contents
- The short version
- Timeline of the Railway breach
- What was exposed
- How the attacker got in
- Confirmed by Railway
- Said informally by a Railway employee
- Inference
- Outside theories
- The wider campaign: why AI keys
- Damage so far
- Unverified user reports
- Outage cost
- Railway's response and the criticism
- What it did
- Criticism
- What to do now if you use Railway
- Provider checklist
- Open questions
- References
Contents
- The short version
- Timeline of the Railway breach
- What was exposed
- How the attacker got in
- Confirmed by Railway
- Said informally by a Railway employee
- Inference
- Outside theories
- The wider campaign: why AI keys
- Damage so far
- Unverified user reports
- Outage cost
- Railway's response and the criticism
- What it did
- Criticism
- What to do now if you use Railway
- Provider checklist
- Open questions
- References
On 21 October 2026 an attacker got into the Railway systems that store customers' environment variables, and for some customers they walked away with the decrypted values. Railway believes AI provider keys were the target1. I read Railway's own notices, its status page, the press, and the Hacker News thread where a Railway employee commented. This post is what I came away with. Every claim that needs one has a numbered reference.
The research cut-off is 23 October. Railway has not yet published a root cause, so check the references before you act on anything here.
- Reported. Stated by Railway, a named outlet or a vendor, with the source cited.
- Unverified. Said by one person or outlet and not confirmed, such as user reports in a comment thread.
- My analysis. My reading or rating. The secret-by-secret chart is mine and is judgment, not measurement.
The short version
If you have anything on Railway, treat every secret stored there as compromised and rotate it.
Railway has not said how the attacker got in, when access began, or how many accounts were affected. As of 23 October its postmortem was still to come.1, 12, 21, 22
- What leaked: environment variables, which usually hold API keys, database URLs and passwords, cloud credentials, registry tokens and sometimes crypto wallet private keys.1
- Damage so far: about $371,000 drained from crypto wallets whose keys were stored on Railway, according to investigator Taylor Monahan. Developers also reported misused AI keys, and the Postiz service shut down after warnings from Anthropic and Stripe.11, 14
- Platform impact: builds and deploys were paused in every region for about 18 hours for Enterprise customers and about 37 for Free and Trial. All Railway API tokens and OAuth sessions were cancelled, and bucket and GitHub credentials were reset.2
- Context: it came five days after the OpenCode Console breach, which also exposed users' AI provider keys.20
Scale is hard to pin down because outlets disagree. BleepingComputer cites about 4.8 million users and more than 16 million hosted services, while OpenClassActions puts Railway at more than 2 million developers as of January.13, 14 CEO Jake Cooper told TechCrunch the company will publish a postmortem.12
Timeline of the Railway breach
Railway froze builds around 09:30 UTC on 21 October. The first wallet drain came at 19:36 UTC, and the public security notice followed at about 22:00 UTC. All times below are UTC and come from the status page unless another source is cited.2
Figure 1. The first 41 hours
| When (UTC) | Event |
|---|---|
| 16 Oct, night | Separate incident: attackers reach a legacy OpenCode Console system and expose saved AI provider keys14 |
| 21 Oct, 07:24 | Railway starts investigating a reported issue |
| 21 Oct, 09:28 | Cause "identified". Dashboard, API and CLI down; builds paused in every region; support site down |
| 21 Oct, 19:36 | First known wallet-drain transaction11 |
| 21 Oct, 20:30 | All OAuth sessions cancelled; users must log in again |
| 21 Oct, ~22:00 | Security notice published. Customers told to rotate every environment variable and review logs1 |
| 21 Oct, 22:37 | Railway starts rotating every storage bucket credential |
| 22 Oct, 01:22 | Remediation guides published for AWS, GCP, GitHub and buckets3, 5, 6 |
| 22 Oct, 03:32 | Enterprise builds back |
| 22 Oct, 04:17 | All Railway API tokens cancelled; users must create new ones |
| 22 Oct, 06:29 | Pro builds back |
| 22 Oct, 21:08 | Hobby builds back; remaining security guides published (databases, Stripe, OpenAI, Anthropic, Grok, OpenRouter) |
| 22 Oct, 22:49 | Free and Trial builds back; every plan is building again |
| 23 Oct, 00:51 | All plans at about normal speed. Preliminary Incident Report still being written; signups still paused |
The wallet drain began about ten hours after the build freeze and more than two hours before the public notice. Freezing deploys did not stop an attacker who already held decrypted secrets.
What was exposed
Railway confirms access to encrypted environment variables. It also says the attacker "obtained the decrypted contents" of some of them, and has not said which ones or how many.1
Figure 2. What was exposed
- Accessed or decrypted (2)
- Reset by Railway (3)
- You must rotate (1)
- Railway has not said (2)
| Asset | Status |
|---|---|
| Customer environment variables (encrypted) | Accessed, per Railway |
| Decrypted values for some of those variables | Obtained, per Railway; scope unknown |
| Private registry credentials | Railway says to rotate them. GitHub tokens used as registry credentials were removed from services but still work on GitHub until revoked15 |
| Railway API tokens and OAuth sessions | Cancelled by Railway as a precaution |
| Storage bucket (S3-compatible) credentials | Rotated by Railway; services must redeploy to pick up new keys3 |
| GitHub integration tokens | Cancelled by Railway; GitHub must be reconnected4 |
| Source code, volumes, database contents | Railway has not said these were accessed |
| End users' personal data | Railway has not said personal data was taken14 |
Environment variables are where most apps keep everything sensitive. On Railway that usually means DATABASE_URL, AI provider keys (OpenAI, Anthropic, OpenRouter, xAI), Stripe keys, AWS and GCP credentials, webhook and JWT secrets, SMTP passwords and, for some crypto projects, wallet private keys. A database password is only useful if the database is reachable, so Postgres with Public Access turned on is at higher risk than one on the private network.
Railway says the impact "may be limited to a subset of users" and will email the accounts it confirms. It still tells every customer to rotate.1
How the attacker got in
We do not know yet. Railway has not published a root cause. What exists falls into four layers of reliability.
Confirmed by Railway
- The anomalous activity was in "systems that store customer environment variables".
- The variables were encrypted at rest, yet the attacker still got plaintext for some of them.
- Railway has not given the date the attacker first got in.1
Said informally by a Railway employee
A person posting as ndneighbor on Hacker News, who identified as a Railway employee, said the attacker was highly motivated and tried to move sideways inside Railway's systems. They said AI API credentials were the primary goal and that the delay in advising rotation was deliberate, because Railway could not yet confirm the breach was contained. This is one username's account, not an official statement.23
Inference
Plaintext for only some secrets points away from a simple database dump and toward the decryption path: whatever is allowed to call the key-management service, or the credentials that service runs as. The CyberSec Guru suggests compromised code inside the decrypting service or stolen short-lived service-account credentials. That is outside analysis, not a Railway finding.16
Outside theories
Several Hacker News commenters, including one posting as tptacek, argued the attacker most likely hit the storage backend, probably a database, so how variables are injected into containers matters less. One commenter claimed Railway's default databases are reachable from the internet, so leaked database passwords may also have exposed the databases themselves. Another disputed that, saying they were private by default. Railway has confirmed neither.23
The wider campaign: why AI keys
Railway says the breach is "part of a series of attacks recently targeting platform companies" aimed at "AI inference providers". Platforms that hold many customers' AI keys are being targeted to get at those keys. Railway names no attacker.1
Figure 3. Where stolen secrets go
- OpenCode Console, 16 October. An intruder reached a legacy system being decommissioned and exposed OpenAI, Anthropic and Google keys saved by about 1.4 percent of Console users. OpenCode called it "a large scale distillation attack". Co-founder Dax Raad said the attackers used AI agents and kept at it for at least 48 hours.17, 18
- Why AI keys. Theo Browne argues a standing black market buys frontier-model output to train cheaper models, a practice called distillation. By his estimate a stolen key yields hundreds to a few thousand dollars before it is revoked. These are his estimates, not measured figures.17
- What else they power. Bitsight found a criminal tool, MONST3R-AI, sold between February and August 2026. Buyers plug in stolen OpenAI, Anthropic or Google keys, and the victims pay for its automated scans.19
- Fireworks AI, 6 October. Compromised internal credentials gave access to environment variables in evaluation jobs for a limited number of customer accounts, so stored API keys and tokens were probably captured. This comes from secondary coverage only.24
- CISA context. TechCrunch adds that CISA recently warned of large-scale attacks on US companies by China-based AI firms trying to improve their own models. No source I found ties that to Railway or OpenCode.12
Figure 4. Incident days since March
- 1 event
- 8 to 10 events
Any service that stores customers' AI keys is now a target: hosting platforms, AI IDE consoles and LLM gateways.
Damage so far
The only measured loss is about $371,000 taken from crypto wallets. AI key abuse has been reported but has no confirmed total.
- Crypto wallet drain. Taylor Monahan tracked more than 500 transactions draining over 200 wallets on at least 19 EVM chains. The money went to one address through what looks like a standard sweeper script. Railway has not confirmed the link or the figure. A wallet key cannot be rotated: the only fix is a new wallet and moving every asset off every chain.11
- AI key abuse ("LLMjacking"). Railway's guides tell customers to check OpenAI, Anthropic, xAI, OpenRouter and Stripe for usage they do not recognise.7, 8
- Customer shutdowns. Postiz founder Nevo David shut the service down for all customers after emails from Anthropic and Stripe said its keys were compromised.25
- Legal. As of 22 October no lawsuit or class action had been found.14
Unverified user reports
Commenters on the Hacker News thread describe what they saw. None of it is confirmed by Railway or the providers. One reported attackers reading their S3 buckets, using an OpenAI key that OpenAI then revoked automatically, and running read-only commands on a Valkey instance. Others reported OpenRouter disabling Railway-linked keys and an Anthropic key disabled about three hours after Railway's notice, after roughly $20 of Opus usage. One said old bucket keys still worked after rotation attempts.23
Outage cost
Redeploy, pre-deploy commands and the deploy queue were degraded into 22 October, and every integration using a Railway API token broke until it was given a new one.2
Figure 5. Hours without builds
- Enterprise · 18.1 h
- Pro · 21 h
- Hobby · 35.7 h
- Free and Trial · 37.4 h
Railway's response and the criticism
Railway froze the platform, reset every credential it controls and warned AI providers so they could revoke keys. The main criticism is that it took more than 12 hours to tell customers why.
What it did
- Froze builds and deploys in all four regions to stop changes and preserve evidence, then restored them by plan tier.2
- Warned upstream AI inference providers so they could revoke exposed keys on their side.1
- Cancelled all OAuth sessions (21 October) and all Railway API tokens (22 October).2
- Reset every bucket's credentials in every environment and cancelled stored GitHub tokens. Audit logs show these resets as "Railway Staff", so customers can tell them apart from attacker activity.3
- Published guides for AWS, GCP, GitHub and bucket checks, then for databases and AI providers.4, 5, 6, 10
Criticism
- Silence. For about 14 hours the status page said only "issue identified", from 07:24 until the security notice around 22:00 to 22:10.
- Theft before disclosure. Wallets were being drained more than two hours before customers were told to rotate.11
- Could not rotate. With builds paused, customers who did rotate could not redeploy to use the new secrets until their plan tier came back.
- Rotation trap. Commenters said they rotated keys early and broke their apps because deploys were paused and the notice did not warn them.23
- Support down. The support site was down for much of 21 October.
- Second incident this year. On 30 March 2026 a CDN configuration change cached responses for about 0.05 percent of domains with CDN disabled and served them to other visitors for 52 minutes.9
What to do now if you use Railway
Rotate every secret you have stored in Railway, highest-value first. Check each provider's logs before you delete the old key, because deleting it can also delete the evidence.
- Inventory. List every variable in every service and environment, including shared variables and registry credentials.
- Wallet keys first. Funds cannot be recovered once moved. Create a new wallet on a clean machine and move all assets on every chain.
- Capture evidence, then revoke. For each key, pull its usage history, then create the replacement and revoke the old one.
- Database passwords. Use Regenerate in the Database tab. It changes the password and
DATABASE_URLtogether but restarts the database and drops open sessions. Turn off Public Access if you do not need it. - Redeploy. Containers only read variables at startup, so nothing changes until each service redeploys.
- Repair what Railway reset. Create new Railway API tokens for CI, reconnect GitHub and re-enable autodeploy, and copy new bucket keys into anything outside Railway.
- Review logs. Check the Railway audit log and each provider's logs for the time since 21 October, and export them before plan retention deletes them.
Not every secret carries the same risk or the same rotation cost. This chart rates the common ones. The ratings are my own judgment from the notes in this article, not measured data.
Figure 6. Which secret hurts most
Provider checklist
| Secret | Rotate | Look for |
|---|---|---|
| Wallet private keys, seed phrases | New wallet, move all assets | Transfers to the sweeper address on any EVM chain |
| OpenAI, Anthropic, xAI, OpenRouter | Revoke, reissue, update the variable | Usage spikes, models you do not use, unfamiliar IPs7, 8 |
| Stripe | Roll secret and restricted keys | Charges, refunds, payouts or webhooks you did not create |
| AWS access keys | Deactivate, create new, update | CloudTrail in every region: new IAM users or roles, EC2 launches5 |
| GCP service-account keys | Disable the key, or the whole account to cut it off immediately | Cloud Audit Logs; new Service Account Token Creator grants. Old tokens stay valid up to one hour6 |
| GitHub tokens, SSH keys | Revoke in GitHub settings, regenerate | Security log entries for OAuth, public keys and personal access tokens; unknown webhooks, deploy keys or commits4 |
| Postgres, MySQL, Mongo, Redis | Regenerate in the Database tab | Connections from unknown clients |
| Railway buckets | Already reset by Railway; redeploy | InvalidAccessKeyId or SignatureDoesNotMatch errors; unexpected files3 |
| JWT and session secrets, webhooks, SMTP, other SaaS | Rotate all | Depends on the service. A new JWT secret signs out all your users |
Open questions
Neither a postmortem nor the Preliminary Incident Report was out when I last checked. Until they answer these, assume the worst for your own secrets.
- Way in: stolen staff or service credentials, a supply-chain package, or a bug in the variables service?
- First access: when did access begin? The exposure window decides how far back your log reviews should go.
- Scope: which customers, and how many variables, were decrypted? Was it targeted (AI and wallet keys) or bulk?
- Other data: were build logs, source or database volumes touched?
- Shared attacker: is it the same actor as the 16 October OpenCode breach?
- Crypto theft: does Railway confirm Monahan's link and the $371K total?
- Databases: were Railway-hosted databases reachable with leaked passwords?
- Prevention: what changes stop a repeat, such as per-workspace keys, short-lived secrets or alerts on plaintext reads?
Every claim in this piece traces to one of 25 references. The chart shows who they are: Railway's own pages, the press, and analysis or community threads, which I treat as weaker evidence.
Figure 7. Who said it
- Railway (10)
- News (10)
- Analysis and community (5)
References
References- Railway. Security Disclosure: Wednesday October 21st. blog.railway.com
- Railway. Incident QH8L8B3E status updates. status.railway.com
- Railway. Redeploy buckets and reconnect GitHub after the credential reset. blog.railway.com
- Railway. Check for anomalous GitHub access. blog.railway.com
- Railway. Check for anomalous AWS access. blog.railway.com
- Railway. Check for anomalous GCP access. blog.railway.com
- Railway. Check for unexpected Anthropic usage. blog.railway.com
- Railway. Check for unexpected OpenAI usage. blog.railway.com
- Railway. Incident Report, 30 March 2026. blog.railway.com
- Railway. Railway blog. blog.railway.com, index of the security guides
- crypto.news. Railway security breach linked to $371,000 crypto theft across 19 chains. crypto.news
- TechCrunch. Developer platform Railway urges all users to revoke secret keys after cyberattack. techcrunch.com, 22 October 2026
- BleepingComputer. Railway warns devs to rotate secrets after potential breach. www.bleepingcomputer.com
- OpenClassActions. Railway hack: API keys and passwords exposed. openclassactions.com
- HOL. Railway breach: which environment variables to rotate. hol.org
- The CyberSec Guru. Railway security breach and environment variables. thecybersecguru.com
- BigGo Finance. Theo Browne on the AI key black market. finance.biggo.com
- shattered.io. OpenCode Console breach and API keys. shattered.io
- Help Net Security. Stolen AI API keys paying for autonomous scans. www.helpnetsecurity.com, 16 October 2026
- The Hacker News. OpenCode Console breach. thehackernews.com (I could not open this page; cited only for the date of the breach)
- OfficeChai. Railway discloses security breach, pauses all deployments. officechai.com
- ai-tldr. Railway security disclosure summary. ai-tldr.dev
- Hacker News. Security Disclosure thread. news.ycombinator.com, including a self-identified Railway employee
- Delana. Fireworks AI secrets breach summary. delana.co (seen in search results only)
- Nevo David (Postiz). Post on X. x.com (seen in search results only; the account handle in this link is unverified)
Topics: Railway security breach, Railway hack October 2026, Railway environment variables leaked, rotate Railway secrets, Railway breach timeline, Railway incident QH8L8B3E, LLMjacking, stolen AI API keys, OpenCode Console breach, credential rotation checklist, secret rotation, incident response