On this page
Railway disclosed on 21 October 2026 that an unauthorized party may have accessed encrypted environment variables and decrypted some of them. Railway recommends all users revoke and reapply sensitive variables stored on Railway. Replace each secret at the service that issued it, update Railway, and redeploy. The order differs by secret type, so follow Railway's guide for each.
| Fact | Detail | Source |
|---|---|---|
| What Railway says happened | Anomalous activity in systems that store customer environment variables; some encrypted variables accessed, some decrypted | Railway disclosure |
| Scope | The preliminary report says at most 1.85% of all workspaces had some environment variables potentially compromised, and that upstream provider reset requests covered more than 100,000 users. Railway still asks everyone to rotate. No public affected-account list at our check on 28 October 2026 | Preliminary report, Railway disclosure |
| Attack window | 20 October 13:58 UTC to 22 October 03:32 UTC, per Railway | Preliminary report |
| What Railway cannot tell yet | Which specific variables were decrypted; whether user source code was accessed (it says it is not ruling it out) | Preliminary report |
| Who should rotate | Railway recommends all customers who signed up before 21 October | Preliminary report |
| Railway tokens | All Railway API tokens invalidated on 22 October (04:39 UTC update); the API was restored at 17:43 UTC but tokens created before the incident stay invalid. The recovery guide says CI project tokens were revoked too | Railway status, recovery guide |
| Builds | Halted on 20 October (about 14:03 to 18:05 UTC) and again on 21 October (00:22 to 03:08 UTC), per the preliminary report; new builds disabled again at 09:28 UTC on 21 October per the status page. Restored in stages on 22 October: Enterprise 04:00, Pro 07:11, Hobby 21:59, Free and Trial 23:22 UTC. Incident marked resolved 23 October 22:06 UTC | Preliminary report, Railway status |
| Newest Railway report | The preliminary report, dated 22 October 2026 on Railway's blog and linked from its status page on 23 October (19:18 UTC). Railway added a 26 October entry saying the incident is resolved for existing users and new signups stay paused. Still the newest incident report at our check on 28 October 2026 | Preliminary report |
| Root cause and final report | Not published at our check on 28 October 2026. Railway describes a privilege escalation in build infrastructure, says the investigation is ongoing and promises a follow-up | Preliminary report |
| Date of check | At our check on 28 October 2026 | this page |
Who is affected?
Railway's preliminary report says a subset of its customers had encrypted secrets exposed, and it recommends rotation for all users as a precaution. The secret types in its own notice include API keys, database credentials and registry credentials. Railway's status page says that as of 18:57:54 UTC on 23 October it had completed notifications to users whose workspaces met its increased-risk criteria. Railway still recommends rotation for everyone else.
Railway's preliminary report puts the upper bound at 1.85% of all workspaces with some environment variables potentially compromised. Its first disclosure gave no number, and TechCrunch reported on 22 October that Railway did not say how many users were affected. Railway also says more than 100,000 users were affected by upstream provider reset requests, so a key revoked by a vendor does not mean your workspace was among those with variables potentially compromised. We do not claim that every customer's secrets were decrypted. Railway does not claim that either.
Why is changing it in Railway not enough?
Railway holds your copy of a secret. The provider holds the real one. If you edit a variable in the Railway dashboard, the old key still works at the provider until you revoke it there. The order of creating, revoking and deploying differs by secret type, so follow Railway's guide for each one:
- AWS keys: Railway's guide has you deactivate the exposed key in the IAM console yourself, create the replacement, edit
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYin Railway, deploy the staged change, then review CloudTrail. Railway does not do the AWS step for you. For Google Cloud keys, see Railway's GCP guide. - GitHub registry tokens: Railway's guide deletes the old token on GitHub first, creates a replacement with the
read:packagesscope, saves it in the service's registry credentials and redeploys. - Other secrets: use the issuer's own instructions, then check its logs. The general order for rotating after any breach covers the rest.
Railway also warns that a new value does nothing until the service redeploys. Its credential reset guide says services using bucket credentials need a redeploy to pick them up.
A second trap is an email from a vendor saying your key was revoked. Railway says that does not imply your credentials were impacted. Its preliminary report says Railway sent providers a list of potentially decrypted keys and some vendors requested that all keys be revoked, so some revocations are precautionary.
How do I rotate every secret?
What do I list first?
- Open every project and every environment (production, staging, preview). Variables are per environment.
- Check shared variables in project settings as well as service variables.
- Write down, for each secret, the issuer that can revoke it.
- Include secrets pasted into a service as plain values, build settings, and registry credentials.
In what order do I rotate?
| Order | What | Where to revoke |
|---|---|---|
| 1 | Cloud provider keys (AWS, GCP) | The cloud IAM console, by you. Railway's AWS guide starts with Actions, then Deactivate on the exposed key |
| 2 | Database passwords | The database. On Railway MySQL, use Regenerate rather than editing the password by hand, then redeploy every service that uses it |
| 3 | Payment keys (Stripe and similar) | The payment dashboard |
| 4 | AI provider keys (OpenAI, Anthropic, OpenRouter and others) | The provider console |
| 5 | Registry, GitHub and CI tokens | GitHub token settings, Docker Hub and similar |
| 6 | Everything else (email, analytics, webhooks) | Each service |
Railway's preliminary report also recommends removing public network access to databases.
How do I redeploy and recover Railway itself?
Railway invalidated all Railway API and project tokens on 22 October, so CLI and CI jobs that used old tokens fail until you create new ones. Railway's recovery guide (23 October) says:
- Reconnect GitHub in account settings and check the Railway GitHub App still has access to the repository.
- Disconnect and reconnect the repository on the service, then deploy the latest commit. Commits pushed during the pause were not queued.
- For CLI deploys, log out, log in, and link again. For CI, create a replacement token with the same scope and update your CI secrets.
- For storage buckets, redeploy each service that uses them so it picks up the new credentials.
If deploys still fail, Railway's recovery guide asks you to email support@railway.com with the project, service, environment, failed deployment ID, build log error and deploy method.
What do I ask Railway in writing?
For workspace [your workspace name], were any of our environment variables identified as accessed or decrypted? If you cannot tell, please say so. Please also confirm whether source code for our connected repositories is in scope, and send any indicators we should search our logs for.
Keep the reply. Railway's report says it cannot yet tell which variables were decrypted, so "we cannot tell" is a plausible honest answer.
Am I affected? A three-state self-test
Am I affected? Where you stand right now
Nobody outside Railway can see whether your variables were decrypted. A scan from outside can only look for secrets that leaked somewhere public.
- Detected Railway emailed you as affected or high risk, or a provider reports use of a key you only stored in Railway. Treat the key as taken. Rotate at once, then read the issuer's access logs from before 21 October to today.
- Unknown You stored secrets in Railway and have no email and no sign of misuse. This is the common case, and it cannot be settled from outside. Rotate everything and check each issuer's logs.
- Confirmed by owner evidence You have the new secret deployed, the old one rejected at the issuer, and logs checked for the exposure window. The rotation is done. Whether the old values were read stays unknown unless Railway tells you.
No scan, ours included, moves you from "unknown" to "confirmed".
Was anything exploited, and what should I look for?
Railway says an unauthorized party may have decrypted some variables, and that it believes the incident is part of a series of attacks on platform companies aimed at AI inference providers, which it notified to revoke keys (disclosure). The root cause and entry point were not published at our check on 28 October 2026. We cannot say how any individual customer was affected.
Look at the issuer of each key for use you do not recognise, from before 21 October to today:
- Cloud: calls your application never makes, new users or access keys, activity in regions you do not use. Railway's AWS guide lists specific CloudTrail checks.
- Databases: open sessions you do not recognise, accounts you did not create, rows changed outside normal writes. Railway's MySQL guide covers these.
- AI and payment providers: usage spikes and charges in the provider's own dashboard.
- Source control: the audit log and installed apps on GitHub, GitLab or your registry.
What does the free scan add?
The free scan reads what your site serves from outside. It looks for API keys and tokens in shipped bundles, .env and backup files, and databases and services reachable from the internet. It is a lookup. It cannot see inside Railway, and it cannot tell you whether a rotated key was ever read. After you rotate, it can show whether the new secret now sits in a public bundle or whether a database is still open to the internet.
This incident is one of several in the same week. A running tracker of the month's incidents lists the others, and a ranked checklist for this week sorts them by what to do first. If your Railway apps run PHP, see the PHP runtime flaw write-up too: rotating secrets does not patch the runtime. Two other platform breaches the same month ask for the same rotation: TiDB Cloud's stolen credentials and the Zeabur shutdown. If you run LiteLLM as a gateway, the compromised 1.107.0 release puts the AI provider keys it holds at risk too. More like these are in the other incident write-ups.
Questions people ask
Do I need to rotate my Railway secrets even if Railway did not email me?
Railway asked all users to do it while its review continued, and its preliminary report recommends rotation for everyone who signed up before 21 October. Railway also says it cannot yet tell which variables were decrypted. Treat no email as no information, and rotate.
What do I rotate first?
Anything that moves money or grants broad access: cloud provider keys, payment keys, and database passwords. Then AI provider keys, registry tokens and third-party API keys. Rotate at the service that issued the secret, not only in Railway.
I changed the variable in Railway. Is the old secret dead?
No. Editing the value in Railway does not revoke the old one at the provider. The old key works until you revoke or delete it at the issuer, so do that at the issuer. For AWS keys, Railway's guide has you deactivate the exposed key in the AWS IAM console yourself, create a replacement, update the variables in Railway and deploy the staged change.
My deploys are failing after the breach. What now?
Railway says commits pushed during the pause were not queued. Its recovery guide says to reconnect GitHub, redeploy the latest commit, and recreate CLI and CI tokens, because it invalidated all Railway API and project tokens on 22 October.
How do I know if someone used my leaked keys?
Look at the issuer of each key. Check the usage or audit log of each provider for calls you did not make: cloud access logs, payment dashboards, AI provider usage pages, and database sessions you do not recognise. Railway has published per-provider guides.
Sources
- Railway: Security Disclosure, Wednesday October 21st (Railway blog)The original notice. Says variables may have been accessed and some decrypted, and asks all users to roll everything.
- Railway: Preliminary Report, Oct 21st Security Incident (Railway blog, 22 October 2026)Railway's own account of scope, what it cannot yet tell, and what customers should do.
- Railway Status: Railway Platform OutageDated updates for build pauses, token invalidation, bucket credentials and restoration by plan.
- Railway: Redeploy Buckets and Reconnect GitHub After the Credential Reset (22 October 2026)
- Railway: Recover Failing Deploys (23 October 2026)
- Railway: Check for Anomalous AWS Access (22 October 2026)
- Railway: Rotate MySQL Database Credentials (22 October 2026)
- Railway: Check for Anomalous GCP Access (22 October 2026)
- Railway Public API docs: token types
- TechCrunch: Railway urges all users to revoke secret keys after cyberattack (22 October 2026)Independent report. Notes Railway did not say how many users were affected.
Facts on this page are dated and point at the primary source next to them. If a vendor status changes after the date shown, the vendor's page wins; tell us at support@run.cloud and we will update it.