- On Oct. 21, 2026, Railway announced in an official statement that an unauthorized party may have accessed customer environment variables and decrypted some of them.
- API keys, database passwords, and private registry credentials stored on Railway are at risk.
- All deployments on the platform are paused during the investigation. Running services keep working, but new keys cannot be rolled out.
- AI providers, including OpenRouter, are proactively revoking keys, so apps are hitting
401or402errors. - Railway advises all users to rotate every secret immediately and check logs for suspicious activity.
This story is being updated as new details emerge.
Railway is a popular cloud platform for deploying applications, used by thousands of startups and developers. The incident reaches beyond the platform itself: if keys to external services were stored in its environment variables, those services are at risk too. Here is what we know so far, what the company says, and what users should do.
📚 Table of contents
- 📌 What happened
- 📌 Incident timeline
- 📌 What Railway says
- 📌 Why deployments are paused
- 💼 How this affects your projects
- ✅ What Railway users should do
- 📌 What is still unknown
- ❓ Frequently asked questions (FAQ)
🎯 Section 1. What happened
According to Railway, the company detected anomalous activity in the systems storing customer environment variables on the morning of Oct. 21. A preliminary investigation showed that an unauthorized party may have accessed encrypted variables and, in some cases, their decrypted contents.
Developers typically store their most sensitive data in environment variables, including API keys, database passwords, and private container registry credentials. As a result, the incident affects not only the platform itself but also every external service whose keys were stored there.
🎯 Section 2. Incident timeline
- Oct. 21, morning — Railway detects anomalous activity in systems handling environment variables.
- Oct. 21, around 20:44 UTC — The company publishes a security disclosure on its blog and pauses all deployments.
- Oct. 21–22 — Users receive email notifications from Railway; AI providers, including OpenRouter, proactively disable keys and notify their owners.
🎯 Section 3. What Railway says
The company believes the attack is part of a series of recent attacks on platform companies aimed at obtaining keys to AI inference providers. Railway has notified these providers so they can proactively revoke keys.
Based on initial estimates, only a subset of users was affected. However, Railway recommends that all customers immediately rotate all environment variables, API keys, and private registry credentials, and check the related service logs for suspicious activity. The company said it will contact users whose accounts are confirmed to be affected directly.
🎯 Section 4. Why deployments are paused
While the investigation continues, any new deployment means the platform must read and decrypt secrets again, including new keys users have just entered. If the vulnerability is still open, those fresh keys could leak as well. So Railway is closing the hole first and only then resuming builds.
Services that are already running continue to operate. Only new deployments, restarts, and applying changed variables are blocked.
🎯 Section 5. How this affects your projects
If your application on Railway uses AI APIs, you are likely already seeing the following:
401 Unauthorized(or402 Payment Required) errors from OpenRouter and other AI providers, despite a positive balance and unchanged code;- the “Limited Access — Deploys have been paused temporarily” banner in the Railway dashboard when you try to redeploy;
- new values in Variables not taking effect: the container keeps running with the old variables until it restarts.
We ran into this firsthand: in one of our Spring Boot projects deployed on Railway, all requests to OpenRouter started failing around 01:30 UTC on Oct. 22:
401 Unauthorized on POST request for "https://openrouter.ai/api/v1/chat/completions": [no body]
org.springframework.web.client.HttpClientErrorException$Unauthorized
The account balance was positive, and the code had not changed. Shortly afterward, an email from OpenRouter arrived about the proactive revocation of the key. A new key worked locally right away, but it could not be rolled out to production: Variables were updated, yet the container kept running with the old, already revoked key. Later, the 401 turned into a 402, which also came from the old key rather than a billing issue.
In short, the key has already been revoked, and a new one cannot be deployed until Railway restores deployments. The problem is not in your code.