---
title: "Enforce 2FA, CLI command structure, Singapore Buckets"
date: 2026-01-16
number: 0273
url: https://railway.com/changelog/2026-01-16-two-factor-enforcement
---

# Enforce 2FA, CLI command structure, Singapore Buckets

Last week we wrapped our planning for Q1 2026, so we're officially back to our regularly scheduled programming. This week: a major security upgrade for Pro workspaces, a structural overhaul of the CLI, Object Storage now available in Singapore, smoother database workflows in the dashboard, and Editable Canvas Arrows graduating to GA.
Let's get into it! 🚄

## 2FA Enforcement

[Image: Require 2FA for your entire workspace]

Security-conscious teams, this one's for you. Pro workspace admins can now [require two-factor authentication for all workspace members.](https://railway.com/workspace/people)

Once enabled, every member of your workspace must have 2FA turned on before they can access workspace resources. Members without 2FA can still be invited and join via Trusted Domains, but they'll need to enable it before they can do anything else. API tokens remain unaffected and will continue to work as expected.

This gives you peace of mind that everyone with access to your infrastructure has that extra layer of protection. No more hoping your teammates remembered to turn it on.

📖 [Read the docs](https://docs.railway.com/reference/two-factor-enforcement)

## **New CLI Command Structure**

[Image: Commands now follow an ]

The Railway CLI is getting a structural overhaul. Commands now follow an `object action` subcommand pattern. Instead of verb-first commands, you'll use patterns like `railway volume list` and `railway variable set`.

This makes the CLI more consistent and predictable as it grows. If you're scripting with the CLI or building on top of it, the new structure should feel more intuitive. Don't worry about your existing scripts though. The old commands still work, so nothing breaks.

If you have any feedback about the Railway CLI, let us know in this [Central Station thread.](https://station.railway.com/feedback/feedback-railway-cli-0e5ab6cd)

## Singapore Buckets

[Video: Object Storage now available in Singapore]

Railway's Object Storage continues its global expansion. Buckets are now available in Singapore, bringing low-latency storage to teams and users in Southeast Asia.

If you're serving content to users in the region, or just want your data closer to your Singapore-based services, [spin up a bucket](https://railway.com/new) in the Singapore region and you're set.

## Database UI Improvements

Schema picker, expandable SQL results, and more. We've been chipping away at the database experience, and this week a few nice improvements landed:

**Schema Picker for Postgres**

If your Postgres database has more than one schema, you'll now see a schema picker in the database tab. No more wondering which schema you're looking at. Just select the one you need.

[Image: Untitled]

**Expandable Raw SQL Results**

Raw SQL query results can now be expanded into a read-only side panel. Wide tables and complex queries now have more room to breathe.

[Video: Untitled]

**Update Rows with Generated Fields**

Previously, trying to update a row that had generated fields would throw an error. That's fixed. You can now edit these rows directly in the UI without issues.

## Editable Canvas Arrows in GA

[Video: Take full control of your canvas layout]

Last week we introduced Editable Canvas Arrows in Priority Boarding. This week, they're available to everyone.

If you missed it, you can now manually route the arrows between services on your canvas:

- **Double-click** an arrow to enter edit mode
- **Click** anywhere on the arrow to add anchor points
- **Drag** anchor points to shape the path
- **Alt/option-click** an anchor point to remove it
- **Alt/option-click** the arrow itself to reset it entirely

We also fixed how arrow endpoints behave when you drag nodes around. Previously, moving a service would shift the start and end points in unpredictable ways, often resulting in weird paths. Positions are now more predictable, and adding or dragging points results in cleaner layouts.

## Fixes and Improvements

- We shipped support for automatically creating pull request environments when a PR is opened by Claude Code, so you no longer need to manually approve those deployments
- We shipped usage breakdown for previous months, so you can now see how your usage has trended over time
- We improved GitHub clone errors. They're now surfaced directly to users instead of showing a generic error message
- We improved observability dashboard errors. You'll now see relevant error messages instead of "problem processing request."
- We fixed the raw variable editor to properly escape quoted variables, including JSON values and private keys
- We also fixed parsing of variable references that have periods in their namespace. This also introduces auto-escaping for namespaces with special characters
- We fixed pagination for HTTP logs. Previously you could only view the most recent 1,500 lines
- We shipped an improvement to the [Template Marketplace](https://railway.com/deploy) where the search box now auto-opens when you arrive via a URL with a query parameter. Here’s an example where [we search for pocketbase](http://railway.com/deploy?q=pocketbase)
- We shipped a fix to text selection in `railway dev` TUI mode. If you've been struggling to copy output from your local dev sessions, that friction is gone