Skip to content

Security and governanceAnalysis

Railway breach: what happened and what to do

On 21 October 2026 Railway said an unauthorized party reached the systems that store customer environment variables and decrypted some of them. Here is what Railway has said, what it has not, and what to do with any AI provider key you kept there.

By INFRO Editorial

Published

10 min read

An amber key inside a glowing glass hexagon on a dark ground, ringed by dashed orbits and small glass nodes

In short

Railway said on 21 October 2026 that an unauthorized third party may have accessed encrypted customer environment variables and, for some of them, obtained the decrypted contents, in a series of attacks on platform companies aimed at compromising AI inference providers. It recommends that every customer roll every variable, including API keys and private registry credentials, and review logs. If an OpenAI, Anthropic or other AI provider key was stored in Railway, create a replacement, delete the old key at the provider, deploy the replacement once builds are available on your plan, and review the old key's usage, whether or not Railway emails you.

Key takeaways

  • Railway says an unauthorized party may have accessed encrypted environment variables and decrypted some of them; it asks every customer to roll every variable, not only those it emails.
  • Railway ties the attack to a series targeting platform companies to compromise AI inference providers, so AI provider keys are the secrets to rotate first.
  • Deleting a provider key takes effect at once, but a Railway service picks up the replacement only on its next deploy, and builds came back plan by plan.
  • Railway has not published when access began, how many accounts are affected or how decrypted contents were obtained; review usage generously until it does.
  • Before the next incident, find the secrets that can spend money on their own and give each a limit you can move without a deploy.

What happened in the Railway breach? On 21 October 2026, Railway said it had detected "anomalous activity involving systems that store customer environment variables", and that an unauthorized third party "may have accessed encrypted environment variables and, for some of them, obtained the decrypted contents"1. It described the attack as part of a series "targeting platform companies with the aim of compromising AI inference providers", paused all deployments, and recommended that every customer roll every environment variable, including API keys and private registry credentials1.

If you kept an OpenAI, Anthropic or other AI provider key in a Railway variable, the short answer is: create a replacement, delete the old key at the provider, deploy the replacement as soon as builds are available on your plan, and review the old key's usage. The rest of this page sets out what Railway has confirmed, what it has not, the order of work for AI keys, and what the incident says about the secrets an application holds, including when the holder is us.

What Railway has said

These are Railway's own words, from its disclosure of 21 October1.

StatementWhat it means for you
"anomalous activity involving systems that store customer environment variables", detected on the morning of 21 OctoberThe store of every customer's variables was the target, not individual applications
An unauthorized third party "may have accessed encrypted environment variables and, for some of them, obtained the decrypted contents"Encryption did not keep every value secret; treat values as readable
Environment variables "may contain secrets such as API keys or database and registry credentials"Anything you set as a variable is in scope
Part of "a series of attacks recently targeting platform companies with the aim of compromising AI inference providers"AI provider keys are what the attackers were after
Railway notified those upstream providers "to revoke all keys proactively"An AI key you kept on Railway may already have stopped working
The impact "may be limited to a subset of users", but every user should act as a precautionDo not wait for an email
Roll all environment variables, including any API keys, and private registry credentials, and review logs for unusual activityRailway's recommendation to every customer
All deployments paused while Railway investigatesA rolled variable reaches a service only when it can deploy
Affected customers will be emailed as Railway confirms themThe list of affected accounts may still change

What Railway did, hour by hour

Railway posted its security updates in the status-page incident "Railway Platform Outage"2. All times are UTC.

TimeUpdate
21 Oct, 07:24Incident opened: investigating
21 Oct, 09:28Dashboard, API and CLI unavailable; new builds paused in all regions
21 Oct, 20:19OAuth sessions invalidated; affected users signed out
21 Oct, 21:59Security notice published
21 Oct, 22:10Credentials of every storage bucket being rotated
22 Oct, 01:22Step-by-step recommendation guides published
22 Oct, 03:32Builds available for Enterprise workspaces
22 Oct, 04:17Every Railway API token invalidated
22 Oct, 06:29Builds available for Pro workspaces
22 Oct, 16:14Pro and Enterprise deployments at normal speed; Hobby next, then Free and Trial
Railway's status-page updates, 21 and 22 October 2026

The order matters to anyone rotating. Railway's Anthropic guide says deleting a key in the Claude Console takes effect immediately, and that a Railway service cannot reach Anthropic until the replacement key is deployed3. Its bucket guide adds that containers read variables only at startup4. While builds were paused on a plan, rolling an AI key meant taking down whatever used it until that plan's builds returned.

What Railway has not said yet

As of 22 October, Railway has not published:

  1. When the unauthorized access began, and how long it lasted.
  2. How the attacker reached the systems that store variables, and how decrypted contents were obtained from encrypted ones.
  3. How many accounts are in the affected subset, or which variables were read.
  4. Which other platform companies the series of attacks reached, and which providers it notified.
  5. Whether any exposed secret has been confirmed used.

Railway's own example usage query for Anthropic covers 14 to 21 October3. Until Railway publishes when access began, our reading is that a review window starting no later than 14 October is a sensible minimum, and a wider one costs little.

Why AI provider keys come first

Railway's framing points at them: the attacks it describes aim at "compromising AI inference providers"1, and the guides it published include usage checks for OpenAI, Anthropic, Grok and OpenRouter beside its database, Stripe and cloud-account checks2.

A working AI key is worth more to an attacker than most secrets of its size. It comes with someone else's account, payment method, rate limits and history, so its traffic looks like a paying customer's, and the bill goes to the key's owner. What is LLMjacking and stolen API keys in distillation campaigns explain why such keys are stolen in bulk.

If you stored AI provider keys in Railway

Do this whether or not Railway emails you. The steps follow Railway's own guides for Anthropic and OpenAI35.

  1. List every AI key Railway held. Check each service's variables in every environment, and the shared variables in project settings, which every service that references them receives3. Include admin keys, such as Anthropic's sk-ant-admin01- keys and OpenAI's admin keys, and keys for any aggregator or second provider.
  2. Check whether your plan can deploy. Deleting a key at the provider takes effect immediately, and your service cannot reach that provider until the replacement is deployed3. Builds came back plan by plan2. If yours cannot deploy yet, Railway still recommends rolling immediately1: decide which features can go dark until it can, and set or lower a spending limit at the provider in the meantime.
  3. Create the replacement, then delete the old key. Create it in the same Anthropic workspace or OpenAI project, scoped no wider than before, and copy it, since neither console shows it again. Then delete the exposed key. OpenAI organization-level and legacy user keys are deleted from a different page than project keys5.
  4. Update the variable and deploy. Edit the variable, once if it is shared, deploy the staged change, and confirm the new deployment's logs show successful calls to the provider3.
  5. Review the old key's usage. In the Claude Console, group Usage by API key and compare its token volume and model mix with your normal traffic, then check Cost and Logs; the Usage and Cost Admin API can filter by api_key_ids[]3. In OpenAI, group Usage by API key in the affected project and check Billing and, where enabled, audit logs5. A key you use with one model that suddenly shows another is a strong signal3. Signs your AI API key is being abused lists more.
  6. Check people, not just keys. Review organization, workspace and project members for anyone you did not invite35.
  7. Keep the evidence. Save the usage and cost data for the window, and contact the provider's support with it if you find usage you did not make35.

A key your provider already deactivated still needs a replacement deployed and its usage reviewed3. Provider-specific runbooks: leaked OpenAI API key and leaked Anthropic API key.

The rest of what Railway held

AI keys are rarely the only secrets in a variable list. Railway's guides cover the others2:

  • Database credentials. Railway published rotation guides for PostgreSQL, MySQL, MongoDB and Redis; rotate them and redeploy whatever connects.
  • Payment and cloud access. Railway published checks for unexpected Stripe usage and for anomalous AWS, GCP and GitHub access.
  • What Railway reset for you. It reset the credentials of every storage bucket and the GitHub tokens it held. Services pick up new bucket credentials on their next deploy, GitHub must be reconnected, and GitHub registry tokens must also be revoked on GitHub, where they still work4. Railway also invalidated every Railway API token, so CI jobs that call its API need new ones2.
  • Your audit log. Look for variable reads, registry credential changes and deployments in the window that were made neither by your team nor by Railway Staff4.

What this says about secrets in a host's environment

Environment variables are the standard way to hand an application its secrets, and a platform that stores them for every customer concentrates them in one place. Railway encrypted them; its disclosure says that for some of them the attacker obtained the decrypted contents anyway1. Once a key has left, nothing the host does can limit what is done with it. The incident adds a second cost: rotating means redeploying, so a pause in deployments slows every rotation behind it.

Three questions are worth asking about an application's secrets before the next incident:

QuestionWhy it matters
Which secrets in this environment can spend money on their own?Those are the ones an attacker uses first, and the ones to rotate first.
Can each one be limited, narrowed or switched off without a deploy?When deploys are paused, controls that live outside the application are the only ones you can still move.
Does each provider key carry a spending limit at the provider?That limit still applies after the key has left every system you control.

How to limit the damage from a stolen AI API key works through each layer.

How INFRO changes what the environment holds

INFRO is a control plane between applications and the AI providers a customer already pays. The application calls INFRO with an INFRO gateway key; the customer's own provider key is connected to INFRO, not set in the application's environment. In an incident like Railway's, that changes three things and leaves the rest as it was.

What changes:

  • The provider key is not in the host's environment. A leaked variable holds a gateway key, so there is no provider key to delete and no provider account reachable directly through that variable.
  • The exposed key can be contained without a deploy. From the INFRO console you can turn the key off (its requests return 403 with code key_disabled), limit it to your servers' networks where your host gives them fixed outbound addresses (up to 32 addresses or CIDR ranges on every plan; other callers get 403 ip_not_allowed), lower its daily, weekly, monthly or lifetime spend limit (402 with code key_budget), or narrow the models it may call. Each is checked before the provider is called. Turning the key off stops your application too; narrowing its networks or its limit can keep the application running until you can deploy a replacement. See Authentication and spend controls.
  • You can see what the key did. Each request record names the gateway key that made it, and spend alerts compare each scope's day with its usual day. Nothing is scored before a quarter of the UTC day has passed, so a spend limit, not an alert, is the first line.

What does not change:

  • The gateway key is still a secret, and it still has to be rotated once you can deploy. Rotation takes an overlap window, or none when the old key must stop at once.
  • Database credentials, payment keys and registry tokens are outside INFRO entirely.
  • INFRO is itself a platform that stores provider keys, the kind of company Railway says these attacks target. Each provider credential is encrypted with AES-256-GCM under a key held as a Worker secret outside the database, with the organization and connection bound in, and no endpoint, console screen or export returns it; gateway keys are stored only as a SHA-256 hash. If a provider key were nonetheless taken from INFRO, it could be used directly against the provider, outside every INFRO limit. That is why we recommend connecting a key scoped to its own project or workspace, with a spending limit set at the provider. It is the control that holds even if we fail.

Summary

Railway says an unauthorized party reached the systems that store customer environment variables and decrypted some of them, in a series of attacks aimed at AI inference providers; it has not published when access began or how many accounts are affected. Roll every variable it held, AI provider keys first: replace, delete at the provider, deploy when your plan's builds allow, and review each old key's usage from 14 October at the latest. Then look at what your application's environment holds, and make sure every key that can spend money has a limit you can move without a deploy.

Questions readers ask

Was my Railway account affected?
Railway said its initial analysis suggests the impact may be limited to a subset of users, that it will email the customers it confirms were affected, and that every user should take the recommended actions as a precaution while it completes its review. Not having an email yet does not mean none of your variables were exposed.
Did Railway reset any credentials for me?
Some. Its status page says it rotated the credentials of every storage bucket, invalidated every Railway API token and invalidated OAuth sessions, signing some users out; its guide adds that it reset the GitHub tokens it held. Services that read bucket credentials need a redeploy, Railway API tokens must be recreated and GitHub must be reconnected. Your own variables, including AI provider keys, are yours to roll.
Can I deploy on Railway again?
Builds came back in stages: Enterprise workspaces at 03:32 UTC on 22 October and Pro workspaces at 06:29 UTC. At Railway's 16:14 UTC update the same day, Hobby was next, followed by Free and Trial. The status page has the current state for each plan.
My AI provider already deactivated the key. Is there anything left to do?
Yes. Railway says it asked the upstream AI providers to revoke keys proactively, and its Anthropic guide notes that a key already deactivated still needs a replacement deployed and its usage reviewed. A revoked key ends future misuse; it does not tell you what happened before.

From the team that builds it

Where this shows up in INFRO

INFRO is a control plane in front of the provider accounts you already hold. The capabilities below are the parts of it this article touches, each with the documentation that defines its behaviour.

  • Provider connections

    Available with a plan

    Connect provider accounts you already hold. Each credential is encrypted when saved, scoped to your organization and never shown again; applications use INFRO gateway keys instead.

    Read the documentation for Provider connections
  • Key limits and rotation

    Available with a plan

    Limit a gateway key to chosen providers or IP ranges, and rotate it with an overlap window so the old key keeps working while you deploy the new one.

    Read the documentation for Key limits and rotation
  • Budgets and spend ceilings

    Available with a plan

    A hard cap per organization, project, member, and key, with alerts at your own thresholds.

    Read the documentation for Budgets and spend ceilings
  • Spend anomaly and drift alerts

    Available with a plan

    Each scope's usual day is learned from its own history; a day that departs from it, a budget forecast to be exceeded, cost estimates drifting from the provider's own figures, unpriced traffic and failing connections become findings in the console. Routed to email on every plan, and to Slack and signed webhooks from the Startup plan.

    Read the documentation for Spend anomaly and drift alerts
  • Model allowlists

    Available with a plan

    Approve which models a project may call; anything else returns a policy error instead of a line item.

    Read the documentation for Model allowlists

INFRO accounts are self-serve. Provider usage is billed to you by your providers; INFRO charges a software subscription and takes 0% of model spend. See plans.

Sources

Numbered in order of first citation. Each was opened and checked against the claim on the date shown.

  1. 1.Security Disclosure: Wednesday October 21st (opens in a new tab) — Railway. Accessed Oct 22, 2026.
  2. 2.Railway Platform Outage (status-page incident carrying the security updates) (opens in a new tab) — Railway. Accessed Oct 22, 2026.
  3. 3.Security Disclosure Recommendation: Check for Unexpected Anthropic Usage (opens in a new tab) — Railway. Accessed Oct 22, 2026.
  4. 4.Security Disclosure Recommendation: Redeploy Buckets and Reconnect GitHub After the Credential Reset (opens in a new tab) — Railway. Accessed Oct 22, 2026.
  5. 5.Security Disclosure Recommendation: Check for Unexpected OpenAI Usage (opens in a new tab) — Railway. Accessed Oct 22, 2026.

About this article

Written on 2026-10-22 from Railway's own publications only: its security disclosure of 21 October 2026, the status-page incident in which it posted its security updates (read up to its 16:14 UTC update on 22 October), and its recommendation guides for Anthropic usage, OpenAI usage and the bucket and GitHub credential reset, all opened that day. No outlet, social media post or third-party claim is used for facts about the incident. Railway had published no root cause, exposure window or affected-account count at the time of writing. Written by the team that builds INFRO, which also stores customers' provider keys; the section on INFRO applies the same questions to it.

Last checked against its sources on . The next review is due by . No separate named reviewer is recorded for this article.

How articles are written, sourced and corrected is set out in the editorial standards.