Skip to content
Aman SinghWriting

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

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.

How to read this
  • 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 use Railway

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

Every status-page and disclosure event, in hours since Railway started investigating at 07:24 UTC on 21 October. The first wallet drain landed before customers were told to rotate. Hover a dot for the event.
When (UTC)Event
16 Oct, nightSeparate incident: attackers reach a legacy OpenCode Console system and expose saved AI provider keys14
21 Oct, 07:24Railway starts investigating a reported issue
21 Oct, 09:28Cause "identified". Dashboard, API and CLI down; builds paused in every region; support site down
21 Oct, 19:36First known wallet-drain transaction11
21 Oct, 20:30All OAuth sessions cancelled; users must log in again
21 Oct, ~22:00Security notice published. Customers told to rotate every environment variable and review logs1
21 Oct, 22:37Railway starts rotating every storage bucket credential
22 Oct, 01:22Remediation guides published for AWS, GCP, GitHub and buckets3, 5, 6
22 Oct, 03:32Enterprise builds back
22 Oct, 04:17All Railway API tokens cancelled; users must create new ones
22 Oct, 06:29Pro builds back
22 Oct, 21:08Hobby builds back; remaining security guides published (databases, Stripe, OpenAI, Anthropic, Grok, OpenRouter)
22 Oct, 22:49Free and Trial builds back; every plan is building again
23 Oct, 00:51All 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)
The eight rows of the table above, one square each, grouped by status.
AssetStatus
Customer environment variables (encrypted)Accessed, per Railway
Decrypted values for some of those variablesObtained, per Railway; scope unknown
Private registry credentialsRailway 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 sessionsCancelled by Railway as a precaution
Storage bucket (S3-compatible) credentialsRotated by Railway; services must redeploy to pick up new keys3
GitHub integration tokensCancelled by Railway; GitHub must be reconnected4
Source code, volumes, database contentsRailway has not said these were accessed
End users' personal dataRailway 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

Unconfirmed links reported the same week. A malicious LiteLLM 1.107.0 release with a credential stealer reportedly reached PyPI and Docker Hub on 21 October, but that rests on one report and nothing ties it to Railway.17 Critical PHP and Node.js security fixes also shipped that day; coverage notes the timing and reports no connection.14

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

Reported connections between incidents, secret types and uses. Every line has the same width, so it shows links, not volume. The scan-tool link is a market use, not tied to a named incident.
  • 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
Logged events per day, 30 March to 31 October: Railway's CDN incident, Fireworks AI on 6 October, OpenCode on 16 October, then Railway's 19 status updates from 21 to 23 October.

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
From the 09:28 UTC freeze on 21 October until each plan could build again. Each ring is a plan, scaled to 40 hours.

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.

  1. Inventory. List every variable in every service and environment, including shared variables and registry credentials.
  2. Wallet keys first. Funds cannot be recovered once moved. Create a new wallet on a clean machine and move all assets on every chain.
  3. Capture evidence, then revoke. For each key, pull its usage history, then create the replacement and revoke the old one.
  4. Database passwords. Use Regenerate in the Database tab. It changes the password and DATABASE_URL together but restarts the database and drops open sessions. Turn off Public Access if you do not need it.
  5. Redeploy. Containers only read variables at startup, so nothing changes until each service redeploys.
  6. 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.
  7. 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

My own 1 to 5 ratings per secret type, from the notes in this article. It is judgment, not measurement. Hover or tap a name to isolate its line.

Provider checklist

SecretRotateLook for
Wallet private keys, seed phrasesNew wallet, move all assetsTransfers to the sweeper address on any EVM chain
OpenAI, Anthropic, xAI, OpenRouterRevoke, reissue, update the variableUsage spikes, models you do not use, unfamiliar IPs7, 8
StripeRoll secret and restricted keysCharges, refunds, payouts or webhooks you did not create
AWS access keysDeactivate, create new, updateCloudTrail in every region: new IAM users or roles, EC2 launches5
GCP service-account keysDisable the key, or the whole account to cut it off immediatelyCloud Audit Logs; new Service Account Token Creator grants. Old tokens stay valid up to one hour6
GitHub tokens, SSH keysRevoke in GitHub settings, regenerateSecurity log entries for OAuth, public keys and personal access tokens; unknown webhooks, deploy keys or commits4
Postgres, MySQL, Mongo, RedisRegenerate in the Database tabConnections from unknown clients
Railway bucketsAlready reset by Railway; redeployInvalidAccessKeyId or SignatureDoesNotMatch errors; unexpected files3
JWT and session secrets, webhooks, SMTP, other SaaSRotate allDepends 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)
All 25 references, one bubble each, grouped by kind. Hover a bubble for its name. Two were seen only in search results.

References

References
  1. Railway. Security Disclosure: Wednesday October 21st. blog.railway.com
  2. Railway. Incident QH8L8B3E status updates. status.railway.com
  3. Railway. Redeploy buckets and reconnect GitHub after the credential reset. blog.railway.com
  4. Railway. Check for anomalous GitHub access. blog.railway.com
  5. Railway. Check for anomalous AWS access. blog.railway.com
  6. Railway. Check for anomalous GCP access. blog.railway.com
  7. Railway. Check for unexpected Anthropic usage. blog.railway.com
  8. Railway. Check for unexpected OpenAI usage. blog.railway.com
  9. Railway. Incident Report, 30 March 2026. blog.railway.com
  10. Railway. Railway blog. blog.railway.com, index of the security guides
  11. crypto.news. Railway security breach linked to $371,000 crypto theft across 19 chains. crypto.news
  12. TechCrunch. Developer platform Railway urges all users to revoke secret keys after cyberattack. techcrunch.com, 22 October 2026
  13. BleepingComputer. Railway warns devs to rotate secrets after potential breach. www.bleepingcomputer.com
  14. OpenClassActions. Railway hack: API keys and passwords exposed. openclassactions.com
  15. HOL. Railway breach: which environment variables to rotate. hol.org
  16. The CyberSec Guru. Railway security breach and environment variables. thecybersecguru.com
  17. BigGo Finance. Theo Browne on the AI key black market. finance.biggo.com
  18. shattered.io. OpenCode Console breach and API keys. shattered.io
  19. Help Net Security. Stolen AI API keys paying for autonomous scans. www.helpnetsecurity.com, 16 October 2026
  20. The Hacker News. OpenCode Console breach. thehackernews.com (I could not open this page; cited only for the date of the breach)
  21. OfficeChai. Railway discloses security breach, pauses all deployments. officechai.com
  22. ai-tldr. Railway security disclosure summary. ai-tldr.dev
  23. Hacker News. Security Disclosure thread. news.ycombinator.com, including a self-identified Railway employee
  24. Delana. Fireworks AI secrets breach summary. delana.co (seen in search results only)
  25. 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

Next: Day zero: seven incidents, ten days, and what AI changes PHP2Shell, GitLab, Node.js, QUIC, LiteLLM, Railway and OpenCode, read from the primary sources, with the evidence on AI, open models and pausing the frontier.Cybersecurity · 17 min read