Unity CLI 1.0.0-beta.4 is rolling out now.
This release is about getting the CLI out of your way: building a player no longer needs any project-side C# and you can be signed in to several Unity accounts at once
If you run the CLI on Linux, read this first
This release requires glibc 2.34 or newer.
That means Ubuntu 20.04 and older, Debian 11, RHEL and CentOS 8, and Amazon Linux 2 are no longer supported. RHEL 9 and Ubuntu 22.04 are now the oldest supported releases.
Nothing breaks silently: apt, dnf, and the install script all check before installing and refuse the update rather than replacing a working CLI with one that can’t start. If you’re on an affected distribution, stay on 1.0.0-beta.3 for now.
macOS and Windows are unaffected.
Added
Builds without writing C#
unity build no longer requires --execute-method. On Unity 6 and newer, --profile <name> builds a Build Profile directly. On any version, the desktop targets build with just --target and --output-path:
unity build --target StandaloneWindows64 --output-path Build/MyGame.exe
If you already have an --execute-method build script, it keeps working exactly as before and still takes precedence.
Several accounts at once
unity auth login now adds an account instead of replacing the one you had. unity auth list, unity auth switch <account>, and unity auth logout <account> manage them. unity auth default <account> pins an account to a project, so commands run from that directory use it automatically.
Run a command across every project
unity projects exec -- <command> runs anything across all your registered projects — git pull, a build script, a migration. Narrow the set with --filter, speed it up with --parallel, and use --continue-on-error to run the whole fleet regardless.
Reclaiming disk space
unity projects cleandeletes a project’s regenerable caches (Library, Temp, Logs, and friends).unity editors prunefinds installed Editors that none of your registered projects use.unity editors verifychecks an installed Editor’s files are intact, which catches installs broken by antivirus or a failed extraction.
All three report before they delete, and --dry-run shows you the targets and sizes without touching anything.
CI and automation
unity testemits CI-native test reports and code coverage, so it drops into GitHub Actions or GitLab with no converter step.- Long-running Editor work no longer dies with the CLI:
--detachreturns a job id, andunity job wait|status|cancelpicks it back up. - Live progress while Editor commands run, and machine-readable failures in
--format ndjson. unity command,unity list,unity job, andunity mcpnow find the right Editor themselves when several are open — just run them from inside the project directory.
Everything else
unity skill install <client>installs the Unity CLI agent skill into your AI coding client in its native format. It’s built into the binary, so it works offline.unity templates packturns an existing project into a shareable template archive.unity diagnose updateanswers “why isn’t this updating?” — the version and channel it resolved, the manifest it reads, and the exact command that updates it.- Long output pages like
git log, andunity shellnow has proper line editing: history, tab completion, and cursor keys. - Homebrew:
brew install --cask unity-clion macOS and Linux.
Changed
Besides the glibc requirement above, unity build --args now rejects a few more Unity flags the CLI manages itself (-activeBuildProfile, -build, and the legacy player-build flags). Use --profile, --output-path, or --target instead — everything else still forwards to the Editor untouched.
Fixed (highlights)
unity openno longer causes the Editor to launch Unity Hub, and the Editor picks up the account you signed in with.unity licenseand Unity Version Control commands work on machines that have never run Unity Hub.unity upgradeverifies the downloaded binary actually starts before replacing the one you have.unity editors upgradestopped hiding upgrades on Apple silicon and Arm Windows, stopped offering an older patch than the newest in a line, and stopped reporting prerelease Editors as up to date when a newer prerelease exists.- A failed
unity installnow tells you why instead of a bare “Installation Failed”. An unreachable service is reported separately from a version that genuinely doesn’t exist, so scripts can retry the first and treat the second as final. - Running one command with
sudono longer breaks every command after it. unity mcp configurewrites the config key and file path each AI client actually reads, and preserves comments and formatting in the files it edits.
Security
Values that come from Unity services, your settings files, or the licensing client are sanitized before they’re printed, so a crafted value can’t smuggle terminal escape sequences into your terminal or forge extra rows in tsv output. A rejected --proxy value no longer echoes the password in the error.
Updating
unity upgrade
If you installed through a package manager, update it there instead — apt, dnf, or brew upgrade unity-cli. unity upgrade detects a package-managed install and tells you the right command.
Installing for the first time
macOS and Linux:
curl -fsSL https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.sh | UNITY_CLI_CHANNEL=beta bash
Windows (PowerShell):
$env:UNITY_CLI_CHANNEL='beta'; irm https://public-cdn.cloud.unity3d.com/hub/prod/cli/install.ps1 | iex
Or through a package manager: brew install --cask unity-cli, or Unity’s apt and rpm repositories.
Full release notes are available in the CLI itself with unity changelog.
As always, feedback is very welcome. You report it, we’ll fix it!
