docs/changelog/2026-08-21.mdx
Configurable SSH inactivity timeout
The SSH inactivity timeout keeps its 10-minute default, but you can now change it. Set ssh.inactivity_timeout_secs in the global config, pass --inactivity-timeout or --no-inactivity-timeout on the CLI, or override it per session in the Rust, TypeScript, Python, and Go SDKs. A value of 0 disables the timeout entirely.
The setting is independent of sandbox idle timeouts and only controls how long an idle SSH session stays open.
msb ssh worker --inactivity-timeout 1800
See SSH.
Plural resource list shortcuts
Top-level plural aliases now list volumes, snapshots, and configured registries without typing the full <resource> list command. msb volumes and msb vols list volumes, msb snapshots and msb snaps list snapshots, and msb registries and msb regs list registries. The shortcuts follow the existing msb images convention and accept the same flags as their subcommand counterparts.
msb vols --format json
msb snaps -q
See the CLI overview.
Other features
gem install microsandbox now pulls a prebuilt binary on x86_64-linux-gnu, aarch64-linux-gnu, and arm64-darwin for Ruby 3.1 through 3.4. Users on those targets no longer need a Rust toolchain to install. musl, Windows, and other platforms continue to build from source.LocalBackendBuilder::try_build_lazy() so embedding hosts can reject invalid persisted configuration before opening the database. build_lazy() keeps its fallback behavior for existing callers.msb mod alias. mod is now a visible alias for msb modify, so quick tweaks are shorter to type. msb create, remove, exec, and ssh also stopped printing the active backend before each command. Use msb context or msb ctx when you want to inspect it. See the CLI reference.FSCTL_QUERY_ALLOCATED_RANGES instead of scanning for non-zero bytes. In a measured 10 GiB flat-disk copy on Windows 11 ARM64, the copy went from 271 seconds to a 1.5-second median while preserving sparse output. The non-zero byte scan remains as a fallback when the filesystem cannot expose allocation metadata.DnsQueryRaw. Explicit --dns-nameserver values still use the direct resolver path.msb modify --root-disk can grow ext4 upper disks created before v0.6.9. The legacy feature mask is now recognized, damaged or ambiguous layouts are refused before any resize write, and pending journals are replayed before geometry changes.msb exec runs against sandboxes the CLI started no longer leave those sandboxes running. Invalid environment variables, resource limits, and timeouts are also caught before the target sandbox is resolved or started. Sandboxes that were already running stay running.replace: false is now atomic, guest-internal symlink behavior is preserved, and Windows-incompatible modes are rejected before mutation begins./proc/cmdline.host.microsandbox.internal now reaches host services that only listen on one loopback family. When the matching gateway-family connection is refused or unavailable, the other family is retried across plain TCP, CONNECT, and TLS proxy flows.msb, msb-metrics, the Node native binding, and the Go FFI library, is built against glibc 2.28. A CI gate scans raw release files, npm payloads, tarballs, and wheels and fails the release if any required GLIBC_* version exceeds 2.28.msb with mode 0755. GitHub artifact transfers were dropping the executable bit, so installed wheels could resolve a non-executable bundled runtime.