Skip to main content
Deploy a protected managed.json file to employee devices. Its settings take precedence over user configuration and CLI or SDK options.
An administrator deploys a protected managed.json file to the employee device. Managed overrides take precedence over employee settings when the CLI and SDKs resolve their configuration.An administrator deploys a protected managed.json file to the employee device. Managed overrides take precedence over employee settings when the CLI and SDKs resolve their configuration.

Choose your device manager

Prepare your policy, then follow the steps for your tool. Each deployment must install the same JSON file at the protected system location.
1

Build a configuration package

On a packaging Mac, place managed.json in /Library/Application Support/microsandbox/. Drag the folder into Composer to create a package source.Set the owner to root, group to wheel, directory permissions to 0755, and file permissions to 0644. Select Build as PKG and sign according to your organization’s policy.
2

Upload the package

In Jamf Pro, open Settings > Computer management > Packages > New. Upload the PKG and make it available on your distribution point.
3

Create a deployment policy

Open Computers > Policies > New. In General, select Recurring Check-in and a daily execution frequency. Under Packages, add the PKG with the Install action.
4

Deploy to a pilot group

In Scope, select your pilot computers and save the policy. After check-in, review its logs and verify the effective settings as an employee before expanding the scope.

Define managed settings

Save the settings you want to enforce as managed.json:
This example enforces two vCPUs and 1 GiB of memory for new local and cloud sandboxes, plus a 15-minute inactivity timeout for SSH sessions created through the CLI or SDK, including sessions to cloud sandboxes.
  • version identifies the managed file format and defaults to 1 when omitted. It is independent of the user config version.
  • overrides accepts the fields in Global config, including registries, paths, runtime settings, and outbound proxies.
  • Omitted settings remain under employee control. Managed values are never written into the user’s config.json.
  • Unrecognized keys are ignored with a warning listing their paths. Check warnings during rollout to catch misspelled settings.
Precedence, from lowest to highest: built-in defaults → user config → CLI/SDK options → managed overrides.Tagged values need their discriminator, such as kind, mode, or protocol. See registry rules and backend selection for their specific behavior. Sandbox settings are applied before cloud create requests are sent. Unsupported sandbox options cause an error. Snapshot restores reject managed settings that conflict with the captured root-disk layout or full-checkpoint CPU and memory geometry. Registry settings govern local pulls; cloud pulls use explicit or cloud-stored credentials. Host runtime and data-path settings remain local; this file does not reconfigure the cloud service or its hosted SSH gateway.

Deploy to employee devices

Install supported CLI and SDK runtime releases. Provision runtime files in the employee’s context or a shared protected location, rather than root’s or SYSTEM’s home.

File location

MSB_HOME and MSB_CONFIG_PATH do not change this location. microsandbox needs no additional enrollment, daemon, plist, or mobileconfig.

File protection

On macOS and Linux, backend construction fails if the file or its immediate parent directory is not root-owned or is group- or world-writable, or if their permissions cannot be checked. An administrator must correct the reported ownership or permissions before retrying. These checks do not inspect ACLs or other ancestor directories; Windows permissions are not checked. Protect the complete path, and keep secrets in credential stores or references.
Older CLI and SDK releases do not enforce managed settings. Include supported versions in your rollout. Local administrators can remove policy or replace the runtime.

Verify the configuration

  1. Sign in as an employee and open a fresh terminal. Confirm msb context selects a local backend.
  2. Create a sandbox with values that conflict with the sample policy:
  3. Confirm config.resources.cpus is 2 and config.resources.memory_mib is 1024. Repeat with your employees’ SDKs.
  4. Remove the test sandbox with msb rm --force managed-check.

Apply configuration updates

  • Publish: replace the complete file atomically, preserving permissions. Update the device-manager package or action and its detection rules together.
  • Apply: new CLI invocations and backend instances load the new settings. Existing backend handles, sandbox records, and SSH sessions retain theirs. There are no file watchers.
  • Roll back: redeploy the previous policy through the same tool. Removing a device from a deployment’s scope does not remove its file.
Runtime binary path settings are captured by each backend too. Keep the previous binaries available until applications restart or replace their backend handles. Changing data paths does not migrate existing data. A missing file means no managed overrides; an invalid or unreadable file causes an error when loaded.