{
  "slug": "railway-adds-native-ssh-and-ssh-key-management-a95e5a92ebd0",
  "title": "railway adds native SSH and SSH key management",
  "tools": [
    "railway"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-03-18T17:11:37.000Z",
  "announced_at": "2026-03-18T17:11:37.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When opening an interactive shell, connect with `ssh <service-instance-id>@ssh.railway.com`. To manage keys, use `railway ssh keys` to list, `add` to register a local key, `remove` to delete a key, or `github` to import keys from your linked GitHub account.",
    "examples": [
      "ssh <service-instance-id>@ssh.railway.com",
      "railway ssh keys add --key <public-key-path> --name <key-name>",
      "railway ssh keys remove"
    ],
    "gotchas": [
      "Version: v4.33.0",
      "<service-instance-id> (required): Service instance ID used as the SSH username when the service has no public domain.",
      "keys list: Lists registered SSH keys; `list` is the default when no subcommand is given.",
      "keys add: Registers a local SSH key with Railway.",
      "--key <PATH>: Public key file path for `add`.",
      "--name <NAME>: Name for the key being registered with `add`.",
      "keys remove: Removes a registered SSH key.",
      "--2fa-code <CODE>: 2FA code for verification when removing a key.",
      "keys github: Imports SSH keys from the linked GitHub account.",
      "Prerequisite: Have an SSH key registered with Railway before connecting. On the first `railway ssh`, the CLI prompts to register a local key.",
      "Native SSH is for interactive shells.",
      "Command execution and tmux sessions still use WebSocket relay because SSH exec is not supported through the QUIC tunnel.",
      "The `--relay` flag is hidden.",
      "Removing a registered SSH key supports 2FA."
    ]
  },
  "why_it_matters": "Connect interactively to a Railway service instance or manage SSH keys for a repository’s development environment.",
  "sources": [
    "https://github.com/railwayapp/cli/releases/tag/v4.33.0",
    "https://github.com/railwayapp/cli/pull/809",
    "https://docs.railway.com/cli/ssh",
    "https://github.com/railwayapp/docs/blob/main/content/docs/cli/ssh.md"
  ],
  "rank": 0.98051,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v2+judge-v2x3+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "wave1b-20261016",
    "verdict_id": "wave1b-20261016:wave1b-20261016-ad1639573a5817f3-0:gate",
    "evidence_hash": "ecd70bc4032e97d0143fa55d840629b240de508d306e62eb03671703ce0573ce"
  },
  "review": {
    "draft_hash": "d0a82f3148e327ba06d6c59a8cc33ae27a5caf5cf50deba55860b4d2e694b518",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-07T00:00:00.000Z",
    "decision": "wave1b-20261016:gate",
    "reason": "3 of 3 judge runs approved with p_yes >= 0.9 (mean 0.98 >= 0.9; 2 needed) and Jev gave 0.76 (>= 0.6 needed)."
  }
}
