New features
Change published ports without recreating a sandbox.msb modify now adds, updates, and removes individual TCP or UDP mappings while keeping the rest. Apply changes with --restart or save them with --next-start. The Rust, Python, TypeScript, and Go SDKs expose the same operations. Port changes are local-only.
403 Forbidden response with code, message, and domain fields instead of a dropped connection. Supported secret-policy violations get the same treatment, so an agent can explain the denial or ask for access. HTTP denial responses
Restrict which backends users can run. Set allowed_backends to ["local"], ["cloud"], or both in user config or managed overrides. The standalone CLI can now select cloud, and msb context list, use, and reset inspect and switch saved profiles. Backends · Context commands
More control for running sandboxes.
- Label changes on a running local sandbox now apply live instead of waiting for a restart. Update labels
- HTTP CONNECT proxies accept Basic authentication from the CLI with
--http-connect-usernameand--http-connect-password-env, or through the Rust SDK. The password stays on the host. --max-inbound-tcp-connectionscaps active connections across published ports. Published ports- The Rust SDK adds
terminal_exit()to read why a local sandbox last stopped, such as an idle timeout or a crash. Rust reference
Before upgrading
- Check response status on denied requests. Code that expected a connection error may now receive
403. Setdeny_response: falseto close silently, ordeny_response_format: textfor the legacy plain-text body. JSON responses require a supporting runtime. Cloud behavior is unchanged. - Published ports no longer cap inbound connections by default. Older runtimes allowed 256. Set
--max-inbound-tcp-connectionsto keep a limit. - Upgrade clients before relying on new settings. Older CLI and SDK versions ignore
allowed_backendsand can remove it when saving user config. They also drop HTTP CONNECT credentials from saved configuration. - Rust API changes.
Backend::info()anddefault_backend_info()returnMicrosandboxResult<BackendInfo>. ExhaustiveGlobalConfigliterals andOutboundProxy::HttpConnectpatterns need the new fields. See upgrade notes.
Fixes
- Commands with large output or stdin now use bounded buffers, so one slow reader no longer stalls other commands in the sandbox.
- Completed published-port connections free their slots promptly, and IPv4 fallback works when IPv6 stalls.
modifyrejects env entries and label keys that would stop a sandbox from booting, updates the effective value of repeated env keys, and keeps a secret’s substitution rule unless you pass a new one.- Archive restores read metadata first and defer extraction until creation, and imports no longer create duplicate catalog entries.
msb dfshows a shorter summary by default; use--verbosefor details.- Fixed macOS SQLite locking, relative installer paths, and Node bundled-binary resolution in paths with special characters. The guest kernel is updated to Linux 6.12.113.