Unity CLI 1.0.0-beta.14
344 documented changes.
- Version
- 1.0.0-beta.14
- Released
- Oct 21, 2026
- Product
- Unity CLI
Unity CLI 1.0.0-beta.14
Security
- Security
`unity doctor` 's recent log now shows only the command you ran, such as `projects open` , and every argument you passed reads `` , so paths, project names and option values stay out of a report you paste. The log file itself is unchanged.
- Security
`unity bug --share-project` no longer follows symbolic links, so a link inside the project that points elsewhere can't put files outside the project into your report. Files the link would have reached are skipped, and so are links to files inside the project.
- Security
On macOS and Windows, only a Unity-signed Editor started by `unity open` can get your access token from the CLI.
- Windows
- macOS
- Security
The programs the CLI starts for you no longer receive `UNITY_SERVICE_ACCOUNT_ID` , `UNITY_SERVICE_ACCOUNT_SECRET` , `UNITY_GITHUB_TOKEN` or `UNITY_GITLAB_TOKEN` . The variables still reach `unity shell` 's commands, the command you run with `unity projects exec` , the Unity Editor, plugins, the licensing client and the identity server.
- Security
On Linux, the `unity` AppImage now copies the CLI into sealed, read-only memory when it starts and runs it from there, so the Unity auth broker can confirm it is talking to the genuine CLI. You run the AppImage as before.
- Linux
- Security
On Linux, every release download of the `unity` CLI now carries a Unity signature: the standalone binary, the deb and rpm packages, the AppImage and the npm package. It is made with the same key that signs the CLI on Windows, so the Unity auth broker can confirm it is talking to the genuine CLI.
- Windows
- Linux
- Security
On Linux, `unity doctor` now shows whether the running auth broker carries a valid Unity signature, in a new Signature row of the auth broker section and as `authBroker.runtime.signature` in `--json` output.
- Linux
- Security
When the CLI exchanges a credential for a token, it no longer follows a redirect, even to the same host. That covers `unity auth login` with service account credentials or a browser sign-in, refreshing your sign-in, and getting a service account, Unity or Unity Version Control token.
- Security
When you run the CLI with `sudo` , it now makes you the owner of a folder it creates or repairs only when that folder sits inside a folder you already own.
- Security
On Windows, `unity self-update` , the MSIX update and `unity doctor` now run the Windows tools they need from the Windows system folder.
- Windows
- Security
The CLI sends your sign-in and service-account credentials only to Unity servers. If the cached cloud configuration names any other server for them, the CLI uses the default Unity server and logs the ignored host.
- Security
`unity hub install` downloads the Hub installer only from Unity servers, and the service URLs the CLI hands to the Unity Editor are Unity servers too. A cached cloud configuration that names another server is ignored.
- Security
Downloads stop after 10 redirects instead of following a redirect loop forever.
- Security
`unity plugin install plastic` and `unity plugin upgrade plastic` follow download redirects only to Plastic's own hosts over `https` . A redirect anywhere else fails the install.
- Security
Commands that look up Unity releases or templates, such as `unity install` , `unity releases` , `unity editors` and creating a project from a template, ask only Unity servers. A cached cloud configuration that names another server is ignored.
- Security
On macOS and Linux, the Editor identity server's socket can now be opened only by the current user, and it refuses a connection from a process running as another user. The CLI also sends its environment notice only to a socket owned and served by the current user.
- macOS
- Linux
- Security
`unity install` , `unity templates` , `unity upgrade` and `unity plugin install` refuse a download that redirects from an `https` address to a plain `http` one, instead of following it. `unity upgrade` stops at once instead of retrying.
- Security
`unity projects create` and `unity projects new` keep the Editor log, which can hold your access token, in a folder only you can open, and delete it when the run ends. After a failed run the log stays there, still private, so you can read it.
- Security
On Windows, the machine-wide `services-config.json` is used only when the file and every folder above it can be changed only by Administrators, SYSTEM or TrustedInstaller, as Unity Hub already requires. Otherwise the CLI uses the default licensing settings.
- Windows
- Security
On Windows, `unity hub install` keeps the downloaded installer locked from its checks until it finishes running.
- Windows
- Security
`unity projects new` and `unity projects create` refuse a template archive that contains a symbolic link, a hard link, or a path outside the project.
- Security
`unity projects new` and `unity projects create` only accept gzipped ( `.tgz` ) template archives now. A plain `.tar` that used to work is refused as corrupt.
- Security
Template downloads ignore catalog entries whose name or version is not a plain package name and version.
- Security
On Windows, `unity build run` no longer passes your service-account secret or source-host tokens to the player it starts, matching macOS and Linux.
- Windows
- macOS
- Linux
- Security
The CLI no longer trusts certificates issued through the distrusted emSign intermediates, which its bundled root certificates and certificate checks could still accept.
- Security
On Windows, `unity hub install` and the commands that look for running Unity Editors now start Windows PowerShell from the Windows system folder.
- Windows
- Security
Downloads no longer follow a redirect from HTTPS to plain HTTP, and `unity install` fetches a module over HTTPS even when the release catalog lists it with an `http://` address.
- Security
On Linux, removing an Editor that needs administrator rights and installing `git-lfs` through your system package manager now use `pkexec` only from a trusted system location. Otherwise the command fails with a message that no trusted `pkexec` was found.
- Linux
- Security
Crash reports and displayed errors hide the value after `-accessToken` , `-password` , `-androidKeystorePass` and `-androidKeyaliasPass` , however short it is, as batch Editor output already did.
- Security
`unity bug` uploads and `unity batch` terminal output no longer show the serial number passed to the Editor with `-serial` .
- Security
On macOS, `unity uninstall` no longer lets the environment your shell started with reach the administrator shell that removes an Editor.
- macOS
Added
- Feature
`unity config path` prints where the CLI keeps its configuration: the settings file and the directory that holds it. It works in every output format; `--json` returns `{file, directory}` .
- Feature
`unity terms accept ` accepts the Unity Editor Software Terms for an installed Editor, so it opens without the "Unity Editor Software Terms" dialog, as a container or provisioning script needs. It shows the terms link and the copy installed with the Editor, then asks; pass `--yes` to accept without a prompt, which a run without a terminal requires.
- Feature
The CLI now recognizes when GitHub Copilot runs it, from VS Code's agent terminal or the Copilot CLI. When the Editor can't be reached, the connection error mentions that an agent sandbox may be blocking local connections.
- Feature
`unity releases --operating-system ` lists another operating system's releases, and `unity install --dry-run --operating-system ` shows what that system's Editor and modules would download, so you can plan a Windows build machine from a Mac. Without `--dry-run` , an install for another operating system stops with `CROSS_OS_INSTALL_UNSUPPORTED` and names the dry run instead.
- Windows
- macOS
- Feature
When the CLI is signed out and Unity Hub is signed in, `unity auth login` shows the Hub's account and the `unity auth switch` command that uses it in the CLI with no browser sign-in, then continues with the browser sign-in. Nothing changes in the Hub.
- Feature
`unity open --until-ready` (and `unity projects open --until-ready` ) now names three dialogs the way `unity status` does: `OPEN_BLOCKED_BY_DIALOG_SAFE_MODE` for "Enter Safe Mode?" (quoting up to three compile errors from the Editor's log), `OPEN_BLOCKED_BY_DIALOG_GRAPHICS_API` for the Windows "Auto Graphics API Notice", and `OPEN_BLOCKED_BY_DIALOG_SOFTWARE_TERMS` for "Unity Editor Software Terms". The message gives the same remedy as `status` .
- Windows
- Feature
`unity status` reports an Editor waiting at the "Enter Safe Mode?" prompt with its own error code, `STATUS_BLOCKED_BY_DIALOG_SAFE_MODE` , and quotes the first compile errors from the Editor's log when it can read them. The message says what to do: quit, fix the errors and open the project again, or choose Enter Safe Mode in the Editor.
- Feature
`unity cloud project --help` now ends with a pointer to `unity projects link cloud` , where a local project is linked to Unity Cloud, and `unity projects link cloud --help` points back to `unity cloud project` for listing projects and setting a default.
- Feature
`unity open --accept-upgrades` (also `unity projects open` ) opens a project without stopping at the Editor's upgrade dialogs, so an unattended open no longer hangs on "Project Upgrade Required" or the API Updater's script consent. It says yes to both: the project is upgraded to the Editor's version and Unity rewrites scripts that use obsolete APIs, with no backup prompt.
- Feature
`unity install --download-directory ` ( `-d` ) installs a self-contained Editor into a folder you name, such as a CI workspace, without changing the install path or adding it to the Hub's Editor list. Modules from `-m` go into the same folder, and `unity install-modules --download-directory ` adds more later.
- Feature
`unity projects create --bare` creates the project from the template without the default project scaffolding. The Unity Cloud link and `--vcs` work as usual beside it, and `--no-cloud` still turns the link off.
- Feature
`unity projects create` reports each setup step it ran in a new `steps` field of its `--json` and `--ndjson` result: one entry per step, each `done` , `present` when the template already had it, `skipped` with a reason, or `failed` with an error code.
- Feature
`unity open --until-ready` (and `unity projects open --until-ready` ) waits until the Editor it launched is ready for commands, instead of returning right away. When a dialog stops the Editor, such as Project Upgrade Required, Script Updating Consent, Enter Safe Mode? or the Unity Editor Software Terms, it fails at once with `OPEN_BLOCKED_BY_DIALOG` , the dialog's title and what to do about it, rather than leaving a script waiting forever.
- Feature
`unity mcp --tools ` exposes only the Editor tools whose names match the list, and `--exclude-tools ` hides the ones that match, so an agent's context holds only the tools you want it to use. Both take comma-separated names, and `*` matches any run of characters ( `--tools "eval,capture_*"` ).
- Feature
The CLI tells you, at most once a day, when a plugin you installed with `unity plugin install` has a newer version, and suggests `unity plugin upgrade` . Under `--format json` and `--format ndjson` it arrives as a `PLUGIN_UPDATE_AVAILABLE` entry in `notifications` , and over MCP in the server's instructions.
- Feature
`unity command --obsolete-command-names` lists the command names from before command groups and the names that replaced them, from an Editor with a Pipeline package that serves them.
- Feature
`unity --help` and the unknown-command error now end with "Not sure which command? `unity commands --grep ` ", so a command you can't name is one search away.
- Feature
`unity setup antigravity` installs Unity's agent plugin into Google Antigravity by running `agy plugin install https://github.com/Unity-Technologies/unity-agent-plugin` . Like `unity setup codex` and `unity setup grok` , it reports an existing install instead of reinstalling, takes `--dry-run` and every output format, and fails with `ANTIGRAVITY_NOT_FOUND` when `agy` isn't on your PATH.
- Feature
`unity docs --package ` opens a package's manual for the version your project uses, read from `Packages/packages-lock.json` , for example `unity docs --package com.unity.2d.sprite` . Outside a project it opens the newest release's manual.
- Feature
`unity docs toc` lists every page of the scripting API reference, or the manual with `--manual` , on docs.unity.com, so an agent can pick a real page instead of guessing. Each page has its path and URL, in every output format.
- Feature
`unity docs ` opens the local page from the Editor's Documentation module when it is installed for your project's Editor version (or the one `--editor-version` names), so it works offline. `--online` opens docs.unity.com instead, and `--url` always prints the docs.unity.com address.
- Feature
`unity docs --content` prints the page's Markdown instead of opening a browser, and `--format json` wraps it with the page URL, the version and the source. Package topics read the package's local `Documentation~` Markdown, or say that no Markdown exists online yet.
- Feature
`--no-header` leaves the header row out of `tsv` output, for scripts that only want the rows.
- Feature
The `--json` and `--format ndjson` rows of `unity modules list` , `unity editors module list` and `unity install-modules --list` now include `downloadBytes` and `installedBytes` as integers and `isInstalled` as a boolean. Scripts should read these instead of `download` , `installed` and `status` , which are display text, and `status` is translated.
- Feature
`unity projects link cloud --cloud-project --replace` switches a project that is already linked to another Unity Cloud project in one step: it writes the new link over the old one in the project's settings and the Hub's project list, with no `unity projects unlink cloud` first, and names the link it replaced ( `previousLink` in JSON). Without `--cloud-project` , `--replace` takes `UNITY_CLOUD_PROJECT` or your saved default project, and fails with `REPLACE_NEEDS_CLOUD_PROJECT` when neither is set: it never creates a cloud project.
- Feature
Every row of `unity commands --grep` and `unity command --query` now says what matched and how to run it: `--format json` adds `path` and `matchedOn` ( `name` , `description` or `option` ), and `--format tsv` adds them as its last two columns. An installed plugin's row now shows `unity ` as its run line instead of nothing.
- Feature
The `--json` and `--format ndjson` rows of `unity editors` now list an installed Editor's platforms (with `--verbose` , its modules) as the `moduleNames` array.
- Feature
The `--json` and `--format ndjson` rows of `unity status` now name each Editor's project as `projectPath` and its version as `editorVersion` , and the rows of `unity editors running` name the version as `editorVersion` , the same names other commands use.
- Feature
`unity command` , `unity list` , `unity job` and `unity mcp` take `--port ` , `--pid ` and `--instance ` to pin one running Editor when several are open, including a Multiplayer Play Mode player by its instance name. A pin that matches no running Editor exits 12 and lists the Editors that are running.
- Feature
`unity open --batchmode` starts a headless Editor with no window. Add `--until-ready` to return once it is ready for commands, with the same dialog, exit and timeout errors as a windowed open.
- Feature
`unity status` now reports an Editor in Safe Mode, which it used to leave out or show only as unreachable. The Editor's row lists its compile errors (file, line and message) in every output format, and the command fails with `STATUS_SAFE_MODE` and exit code 6 (an Editor shown only as unreachable gave 12).
- Feature
`unity logs --console` reads the running Editor's console, and `unity logs --console --follow` streams new entries as the Editor logs them until you press Ctrl-C. Burst and C# compiler errors come with their code, file and line, `--level` and `--tail` work as they do for the CLI log, `--project-path` picks the Editor, and `--format ndjson` writes one entry per line.
- Feature
`unity version --json` reports the commit a release was built from and its build date, as `commit` and `buildDate` , so a support report can be traced to the exact build. A build you compile yourself reports both as `null` .
- Feature
`unity license activate` reads the license serial from the `UNITY_LICENSE_SERIAL` environment variable when you pass no `--serial` and no other activation option, so the serial stays out of the process list on shared machines. `--serial` still works and takes precedence.
- Feature
When an AI coding agent runs `unity` and Unity's plugin or skill isn't installed for it, the CLI now suggests one. In Claude Code, you get Claude Code's own one-time prompt to install the Unity plugin.
Changed
- Change
`unity env` names its version row "CLI version", and its `--json` output adds `cliVersion` . `unity doctor --json` and `--format tsv` add `runtimeVersion` .
- Change
The CLI's MSIX package (the winget install) now needs Windows 10 version 21H1 or later, the same as the Unity Hub.
- Windows
- Change
When their output is piped or redirected, or with `--format tsv` , `unity projects link cloud` and `unity projects unlink cloud` now print one tab-separated row: the result ( `linked` , `already-linked` , `unlinked` or `not-linked` ), the project path, the cloud project ID, the project name, the organization ID, and `true` when a new cloud project was created. For `unlink cloud` , the name is the one saved with the link, which is the local project's title when the CLI made the link.
- Change
`-a` now means `--architecture` on every command, and `-y` means `--yes` on every command that has `--yes` , including `unity bug mcp` , `unity mcp configure` , `unity skill install` and `unity skill refresh` . `unity projects list` and `unity projects size` show `--all` with no short flag; `-a` still works there, so existing scripts keep running.
- Change
When `unity releases` can't reach the Unity release service, the error names the host it tried and why, such as `ECONNREFUSED` or a failed secure connection, instead of "fetch failed". A connection, TLS or timeout failure also says how to set a proxy ( `unity config proxy ` or `HTTPS_PROXY` ), and `--json` reports the network error code in `errors[].code` .
- Change
`unity open` (also `unity projects open` ) no longer passes `-acceptSoftwareTermsForThisRunOnly` to the Editor when you run it from a terminal, so the Editor shows its own Software Terms dialog to you. An unattended open ( `--non-interactive` , `UNITY_NON_INTERACTIVE` , a machine `--format` , redirected output or CI) still passes it, and a copy you add with `--args` is kept.
- Change
`unity commands --grep` matches a regular expression with no time limit, so a pattern such as `(a+)+$` no longer stops with "took too long". Backreferences ( `(a)\1` ) and lookaround ( `(?<=a)b` ) are no longer supported and are refused as an invalid pattern, and an invalid pattern's error now ends with a short reason such as `unclosed group` .
- Change
`unity commands --grep` now matches plain words in any order and lists the best matches first, so `unity commands --grep 'cloud link'` finds `projects link cloud` at the top. A word in the command's own name ranks above one in its parent group, then its description, then its options.
- Change
When `unity commands --grep` or `unity command --query` can't search the Editor's Pipeline commands, because no Editor is connected, more than one is open, or it didn't answer within 3 seconds, the output ends with a line saying why and the command to run next. `unity command --query` without a connected Editor answers with that line and the number of CLI commands and plugins that match, and exits 0 instead of failing.
- Change
`unity projects` is now described as "Create, open, upgrade, and link local Unity projects (Unity Cloud, GitHub/GitLab)" in `unity --help` , instead of "Manage Unity projects in the Hub registry", so `unity commands --grep cloud` finds it. Use `unity projects link cloud` to link a project to Unity Cloud.
- Change
`unity projects create` adds the Pipeline package to every new project, so `unity command` works on it without a separate `unity pipeline install` . `--bare` leaves it out, and `--with-pipeline` , which used to opt in, is still accepted and does nothing.
- Change
`unity auth list` now marks accounts the CLI is not signed in to, such as ones you signed in to only in Unity Hub, with `(not signed in to the CLI)` , and `--format json` adds `signedIn` and `signInState` to each account. When no account is active, `unity auth status` now says how many stored accounts are not signed in to the CLI and suggests `unity auth login` , or `unity auth switch ` for one that is.
- Change
`unity auth switch` to a stored account the CLI is not signed in to now says so and suggests `unity auth login` , and exits with code 3 and the error code `ACCOUNT_NOT_SIGNED_IN` . It used to fail with exit code 6 and an internal message about a missing token slot.
- Change
`unity auth login --help` , and `unity auth status` when you are not signed in, now say that a perpetual or legacy serial license needs no sign-in, and show the command: `unity license activate --serial ` . A subscription serial still needs a signed-in user.
- Change
`-V` and `--version` print the CLI version only at the top level: `unity --version` and `unity -V` work as before. After a command they are no longer the CLI version, so `unity editors --version` now fails as an unknown option (exit 2, `INVALID_COMMAND_ARGS` under `--format json` ), and a command's own `--version` means the version of what it acts on.
- Change
When the CLI hides an e-mail address in its log file or a crash report, it now keeps the domain ( `[redacted]@example.com` ) and removes only the part before the `@` , as the Unity Hub does. It used to replace the whole address with `` .
- Feature
`unity cloud project current` now labels what it prints as the saved default project for the organization, and inside a project folder linked to a cloud project it also prints that linked project. With `--format json` , `activeCloudProjectId` still holds the default, and `defaultCloudProjectId` and `linkedCloudProjectId` are added beside it.
- Change
A template's `package/package.json` larger than 16 MiB is now refused, and the template no longer appears in `unity templates list --editor ` . Real template files are a few KiB, so only a damaged or hostile archive is affected.
- Change
`unity cloud project set-default` now tells you when the project is in another of your organizations. Instead of reporting the project as unknown, the error names that organization and the `unity cloud org set-default` command that makes it active, and `--format json` carries the organization under `data.organization` .
- Improvement
`unity pipeline install` , `unity pipeline upgrade` and `unity projects create --with-pipeline` now save `Packages/manifest.json` in the encoding it already had, byte order mark included, and replace it in one step, so a run that stops halfway never leaves a broken manifest. They also only pin a plain version number from the Unity registry, and a manifest that repeats a top-level key is updated instead of failing.
- Feature
`unity projects add` now checks a folder the way Unity Hub's Add project from disk does. It refuses a system folder, such as `/usr` , `C:\Windows` or `/Applications` itself, with `System folders can't be used as Unity projects` ; a complete project inside `/Applications` or `C:\Program Files` is still added.
- Windows
- Change
When the CLI cannot read your signed-in account, a command now runs without the first-run analytics prompt and sends no analytics for that run, and `unity analytics opt-in` and `opt-out` exit with an error saying your choice was not saved, and change nothing. They also refuse when `user-settings.json` repeats a key or cannot be read.
- Change
`unity skill install codex` now checks for the Unity plugin that `unity setup codex` installs. When the plugin is enabled and already carries the skill, the install says so and asks before writing a second copy, which Codex would load as well; without a terminal, or when you decline, it skips.
- Change
On Windows, `unity install-path --set` and `unity editors install-path --set` now answer a device path that names no drive, network share or volume, such as `\\.\pipe\name` , with `This directory does not exist.` without opening it. Drive paths, `\\?\C:\...` paths, `\\?\Volume{...}` paths and network shares are checked as before.
- Windows
- Change
`unity projects create --vcs ` now refuses an IPv6 address or a host name with non-ASCII characters as an invalid provider. Use the server's ASCII host name, the one your provider CLI signs in to.
- Change
`unity projects create` and `unity projects new` now check a new project's name and location the way Unity Hub's New Project window does. A name can be at most 223 characters, which leaves room for the files Unity names after the project.
- Change
When a command is not found, the tip now names `unity command` for the command groups, `unity command --tags` for the tags and, when the Editor's Pipeline package supports it, `unity command --obsolete-command-names` for the old names.
- Change
`unity command` with no command name now lists the Editor's command groups instead of its tags, and an Editor with an older Pipeline package still lists its tags.
- Change
`unity command ` lists the commands in that group like `--tag` does instead of printing a raw result, and command listings and results show each command as you type it ( `editor.playmode start` ).
- Change
`unity command editor status` and the other full command names, `unity editors playmode` and `unity recompile` still work with a Pipeline package from before command groups, and warn once to run `unity pipeline upgrade` .
- Change
`unity projects link cloud` without `--cloud-project` now links the project named by `UNITY_CLOUD_PROJECT` , then your saved default project for the organization ( `unity cloud project set-default` ), and creates a Unity Cloud project only when neither is set. On a terminal it asks first, with that project preselected, and it always says when it created one ( `created` in `--format json` ).
- Change
A plugin killed by a signal, run as `unity ` or as a `unity-` command on your PATH, now exits with `128` plus the signal number ( `139` for a segmentation fault), the way a shell reports it, instead of `1` . The CLI log now names the plugin, its version when known, and the signal, so `unity bug` includes them.
- Change
`unity cache key` with more than one path now lists every argument you passed in its error. `unity config accelerator` now refuses an IPv6 address with an interface name, such as `[fe80::1%eth0]` , whose number depends on the machine; use the numbered zone instead, such as `[fe80::1%3]` .
- Change
`unity templates` and `unity projects create` now say plainly when the Unity Hub templates folder can't be created, its list of downloaded templates can't be reset or it repeats a key, for example `Could not create the templates folder (PermissionDenied).` , instead of printing a raw system error. `unity templates delete` reports a custom templates folder it can't create or read the same way.
- Change
`unity projects create --template ` now refuses a template whose `package.json` repeats a key as not a valid Unity template, and `unity projects create` and `unity projects new` report the Editor version as unresolved, with how to choose one, when the newest installed Editor can't be told apart, instead of printing an internal error. `unity projects new` , `create` , `link vcs` and `unlink vcs` run from a folder that no longer exists now say `Unable to read the current directory.` unless you pass an absolute path.
- Change
`unity command` without `--timeout` now lets each Editor command use its own default timeout (for example 10 minutes for `run_tests` ) instead of a flat 30 seconds, on a `com.unity.pipeline` that supports it. `--timeout ` still overrides it, and when it runs out the Editor's own timeout message is shown.
- Change
A command the Editor rejects because a modal dialog is open now fails at once instead of retrying until `--timeout` runs out. Its error, and the timeout error of a command or job that was already running when the dialog appeared, now name the dialog and the `unity command editor.dialog answer ` (or `unity command editor.dialog dismiss ` for an Editor window) to run; `unity command editor.dialog list` shows what is open.
- Change
When the Editor is running but its Pipeline server can't answer yet, for example while scripts compile, `unity command` now shows the Editor's reason, such as `Compiling scripts.` , instead of a bare 503 status or a cannot-connect error. A `unity command --query` search still reports that no Editor could be searched.
- Change
When the CLI can't reach the Unity Editor from inside an AI coding agent, the hint about the agent's sandbox now also covers Codex, opencode, Cline, Roo Code, Augment, Goose, OpenClaw, Trae and Antigravity, and Cursor's agent. It no longer appears when you type commands yourself in Cursor's terminal.
- Change
When the CLI can't reach the Unity Editor from inside an AI coding agent, the hint about the agent's sandbox now also covers Grok Build.
- Change
`unity auth revoke` with an empty application name reports a usage error that points at `unity auth consumers` .
- Change
`unity build run` 's local server for a WebGL build answers only requests addressed to `localhost` , `127.0.0.1` or `[::1]` , so a web page on another site can't read your build through a rebound domain name. It also closes each connection after its response.
- Change
`unity test --shard` and `--rerun-failed` refuse a `--filter` pattern that is too long or too complex to check against the test names, with a message that says so, and `--affected` then runs the whole suite instead of narrowing it.
- Change
`unity run` , `unity test` and `unity build` check the `--log-file` path, and `unity test` the JUnit report path, before the Editor starts. A `--log-file` path that runs through a file, or a JUnit report path that is a folder or runs through a file, is refused with a message naming the option to change.
- Change
`unity build --create-profile` refuses an architecture it doesn't know, from `--architecture` or `UNITY_ARCHITECTURE` , with the same usage error as every other `unity build` .
- Change
`unity projects clone --vcs uvcs` , `unity projects link vcs --vcs uvcs` and `unity projects create --vcs uvcs` download the Unity Version Control client only from the vendor's own download servers when it isn't installed, and stop if the download redirects anywhere else. The client is checked against its published checksum before it is installed.
- Change
`unity editor module list` and `add` on macOS report Visual Studio as installed when `Visual Studio.app` is in `/Applications` or `~/Applications` , without asking macOS for permission to control it.
- macOS
- Change
`unity editors default ` and `unity editors default --unset` fail with exit code 6, and change nothing, when your saved settings file holds a number too large to read or text that cannot be decoded. Fix or remove the file, then try again.
- Change
`unity editors upgrade` with no editor named no longer asks which one to upgrade on a terminal. It stops and asks you to name an editor or pass `--all` , as it already did in scripts.
- Change
`unity editor module add` (and `unity editors module add` ) no longer asks you to accept module license terms on a terminal. Pass `--accept-eula` to accept them; without it, a module with license terms is not installed.
- Change
`unity install` , `unity install-modules` and `unity modules list` report a clear error when a Unity Hub file or an answer from Unity's release service can't be read, when the install lock can't be used, or when the computer's architecture can't be told. In that last case, pass `--architecture` .
- Change
`unity` now ships as a native Rust binary on macOS, Linux and Windows, with no .NET runtime inside.
- Windows
- macOS
- Linux
- Change
`unity open` and `unity projects open` no longer ask on a terminal which of several matching projects or Editors to use, or whether to install a missing Editor first. They stop with the same message a script gets: pass the project's full path, `--architecture` or the exact version, or run the suggested `unity install` command.
- Change
`unity collab` delete commands no longer ask for confirmation on a terminal. Pass `--non-interactive` to confirm the deletion.
- Change
`unity pipeline install` no longer asks which running Editor to install into when several could take the package. Pass `--project-path` to choose one.
- Change
`unity projects create` and `unity projects new` download a template that isn't on disk yet and verify it against the checksum the template catalog lists before using it. A template whose catalog entry lists no checksum is refused.
- Change
`unity projects create --open` , `unity projects new --open` and `unity projects upgrade --yes` no longer ask on a terminal which of several matching Editors to open the project in, or whether to install a missing one. `create` and `new` still create the project and warn that it did not open; `upgrade` stops.
- Change
`unity close` , `unity projects close` , `unity projects require` , `unity projects upgrade` , `unity projects create` and `unity projects new` stop with a clear error, before anything is changed, when Unity Hub's project list, a project's files or the Hub's settings hold a value the CLI can't read.
- Change
Commands that reach the network, among them `unity license` , `unity collab` , `unity hub install` , `unity templates` , `unity plugin` , `unity projects create` , `unity editors` and `unity install` , now run behind a proxy set through `HTTPS_PROXY` , `HTTP_PROXY` , `ALL_PROXY` , `UNITY_PROXY` or `unity config proxy` , a SOCKS or credentialed proxy, `NODE_EXTRA_CA_CERTS` , or a macOS automatic proxy configuration (PAC), and with `--log-proxy` on.
- macOS
- Change
`--proxy ` and `--proxy-disable` now take precedence over proxy environment variables, so `--proxy ` works while a proxy variable is also set.
- Change
Commands that reach the network now read proxy variables per scheme, as curl does: `HTTPS_PROXY` covers `https://` requests and `HTTP_PROXY` covers `http://` ones, while `UNITY_PROXY` and `ALL_PROXY` cover both. Before, the first variable found was used for every request.
- Change
On Windows, a system proxy set only for HTTP is no longer used for `https://` requests, matching other Windows apps. Set a proxy for secure connections too, or one proxy for all protocols, to keep routing them through it.
- Windows
- Change
`unity shell` on a terminal uses a simpler line editor: the usual editing keys work, and Up and Down recall commands from the current session. Tab completion and history from earlier sessions aren't available.
- Change
`unity templates list` , `info` , `delete` and `edit` stop with a clear message, and leave the file alone, when Unity Hub's saved template data holds a value the CLI can't read. `unity templates edit` no longer edits a template whose `package.json` holds such a value.
- Change
Every curated tool command, such as `unity uvcs` , `unity cm` , `unity plastic` and `unity ugs` , hands the terminal straight to the tool. A first-run analytics consent question waits for the next `unity` command instead.
- Change
On Windows, `unity projects clone --vcs uvcs` , `unity projects link vcs --vcs uvcs` and `unity projects create --vcs uvcs` work again, downloading the Unity Version Control client on first use. The first check-in keeps files whose names use characters outside your system code page.
- Windows
- Change
`unity projects create --vcs` , `unity projects link vcs` and `unity vcs setup` create the repository on a self-hosted host through `tea` , `bkt` or `az` when it is the signed-in tool, with no change to how you sign in. A repository that Azure DevOps created but whose reply `az` printed unreadably is now reported as left behind, with its URL when there is one.
- Change
`unity projects unlink vcs` no longer asks for confirmation on a terminal before it removes a Unity Version Control workspace that holds other projects. Pass `--unlink-workspace` to remove it, as in a script.
- Change
`unity projects unlink cloud --cascade-vcs` no longer asks for confirmation on a terminal before it removes the Unity Version Control workspace: `--cascade-vcs` confirms it. A workspace that holds other projects also needs `--unlink-workspace` .
- Change
`unity vcs setup` , `unity projects link vcs` and `unity projects create --vcs` no longer ask for a missing provider token or offer to install Git LFS on a terminal. A missing token is reported with the option to pass, and the Git LFS install offer prints the command to run instead of asking.
- Removal
On Windows, `unity uninstall` , `unity editors prune --remove` and `unity editors upgrade --replace` remove an Editor you own without asking for administrator rights. An Editor installed with its own uninstaller, or one in a folder you can't change such as Program Files, is removed after one administrator prompt per command, and setting `UNITY_NO_ELEVATE` refuses it with nothing removed.
- Windows
- Change
`unity projects create` and `unity projects new` default to the Editor version's own URP template ( `com.unity.template.urp-blank` ) instead of the Built-in Render Pipeline 3D template, and `--template 3d` or `--template 2d` picks that version's 3D or 2D URP template. When the version doesn't offer it, the command fails with `TEMPLATE_NOT_FOUND` and lists the templates it does offer.
- Change
`unity docs` now uses only docs.unity.com, since docs.unity3d.com is being shut down. A class name finds its real page through the site's page index, so `unity docs AdaptivePerformancePackageMetadataStore` and `unity docs GameObject.activeSelf` open the right page instead of a 404, and a name two pages share goes to search rather than a guess.
- Change
Giving an old and a new option spelling different values prints a warning naming the value used, the last one typed. For `status --project` beside `--project-path` the last one now wins; before, `--project-path` always did.
- Change
`unity collaboration` takes the Unity Cloud organization and project as `--cloud-org ` and `--cloud-project ` , like the rest of the CLI. `jira server` , `jira project add` , `delete` and `update` , and `jira issues list` use `UNITY_CLOUD_ORG` , then the default organization ( `unity cloud org set-default` ), when you don't pass `--cloud-org` .
- Change
In `unity collaboration` , an empty or blank `--cloud-org` , `--cloud-project` , `UNITY_CLOUD_ORG` or `UNITY_CLOUD_PROJECT` counts as not set, so the next source is used, as `unity pipeline cloud-build` does.
- Change
`--since` now always takes a revision, as it does on `vcs summarize` , `vcs affected` and `test` . `vcs git migrate-lfs` bounds its scan with `--after ` , and `releases` filters from a year with `--from-year ` .
- Change
Four options take the spelling every other command uses: `--git-token-from-stdin` on `projects create` , `projects clone` , `projects link vcs` and `vcs setup` ; `--local` on `collaboration annotations create` and `update` , as on spatial attachments; `--group-by` on `command` ; and `--long` on `editors` and `projects list` to show every column. The old spellings ( `--git-token-stdin` , `--local-space` , `--group_by` , and `-v` on `projects list` ) still work and print a warning naming the new one.
- Change
Every `--timeout` , and `UNITY_BUILD_TIMEOUT` , `UNITY_RUN_TIMEOUT` and `UNITY_TEST_TIMEOUT` , now takes a whole number of seconds written as digits, such as `--timeout 30` ; any other value is a usage error (exit code 2) that quotes it. Scripts may need updating: `30s` or `5m` on `build` , `run` , `test` , `watch test` and `recompile` used to wait 30 and 5 seconds, `1e3` and `0x10` on `status` , `open` , `projects open` , `close` , `projects close` and `job wait` waited 1000 and 16 seconds, and `command --timeout 1.5` waited one and a half seconds.
- Change
`unity install` , `unity install-modules` and `unity projects require` bound the wait for another install with `--timeout ` , the spelling every other command uses for a time limit. The old `--wait-timeout` still works and prints a warning naming `--timeout` .
- Change
Under `--format json` , a command that reports an error on stderr now writes the plain `Error: ...` line there, as every other format does, instead of a `{"error": ...}` object. Read the outcome from the envelope on stdout ( `success` and `errors` ), not from stderr.
- Change
`unity auth status --format json` signed out now reports `success: false` with a `NOT_SIGNED_IN` error ( `SESSION_EXPIRED` for an expired session), matching its exit code `3` . The status report stays in `data` .
- Change
`unity auth login --format json` now writes its `auth_url=` progress frame, and the `adoptable=` frame, to stderr, so stdout holds only the result envelope.
- Change
`unity skill install --format json` now writes one envelope whose `data` is an array with a record per skill it considered, instead of one envelope per skill, so its stdout parses as a single JSON document. `--format ndjson` writes the same records as its result frame.
- Change
`unity skill list` , `unity skill enable` , `unity skill disable` and `unity skill install --list` now end `--format ndjson` output with a `{"type":"result"}` frame carrying the same data as `--format json` , instead of writing nothing.
- Change
Status commands that answer no now report `success: false` in `--format json` , so `success` agrees with the exit code: `unity cloud status` when signed out ( `NOT_SIGNED_IN` or `SESSION_EXPIRED` ), `unity license status` with no active license ( `LICENSE_NOT_ACTIVE` ), and `unity license server status` with no server or an unreachable one ( `LICENSE_SERVER_NOT_CONFIGURED` , `LICENSE_SERVER_UNREACHABLE` ). Their exit codes and `data` are unchanged.
- Change
`tsv` headers now use the same keys as the `--format json` rows ( `version` , `upgradeTo` , `genesisId` ), whatever your language, instead of the translated column titles. A flag that adds information only appends columns, so `unity editors --verbose` keeps the same columns and order.
- Change
An empty `tsv` result prints the header row instead of nothing or a sentence (any "no results" hint goes to stderr), and lists that printed bare rows ( `unity projects list` , the `vcs` tables) now lead with a header row too.
- Change
Piped `unity projects list` now prints a header row and the project name before its path, where it printed bare paths. A script that reads each line as a path, such as `unity projects list | xargs` or a `while read` loop, needs `--no-header` and the second column, for example `unity projects list --no-header | cut -f2` .
- Fix
Piped `unity projects list` has a fixed column set: `name` , `path` , `version` , `modified` , `cloudProjectId` , `pipeline` , `vcs` . A column flag such as `--cloud` fills its column, which stays empty without it, so adding a flag never moves a column.
- Removal
Boolean `tsv` columns print `true` or `false` : the `default` column of `unity cloud org list` and `unity cloud project list` and the `active` column of `unity context list` no longer print `*` , and the `removed` column of `unity editors prune` prints `true` or `false` instead of a translated status.
- Change
An unset value is an empty `tsv` cell: `unity context list` , `unity context current` and `unity context save` no longer print `(not set)` .
- Change
`tsv` keeps stdout for data: messages, hints and failures such as "You are not signed in" from `unity auth status` and the `unity cloud` commands now go to stderr.
- Change
`--quiet` now hides warnings in human and tsv output, and no longer changes json output. With `--format ndjson --quiet` , every listing now keeps its rows except `editors upgrade` , `editors module list` , `install-modules` , `build --list-targets` , `build --list-profiles` and `env` , which still leave them out.
- Change
In `--format ndjson` , warnings appear only in the final result line's `warnings` , no longer on stderr. In `--format json` , a warning that was only printed to stderr before now appears in `warnings` .
- Change
`unity projects info` now names the project's Unity Cloud organization when you are signed in, for example `Acme (1001 / )` , whether Unity Hub, the CLI, or the Unity Editor last wrote the link. With `--format json` it adds `organizationName` , `organizationGenesisId` , and `organizationUuid` after `organizationId` , which still holds the stored value.
- Change
`unity cloud org current` now names your default organization when your session is held by the auth broker, and it no longer starts the auth broker to do so. With no broker running on macOS or Linux, it prints the stored value as before.
- macOS
- Linux
- Change
`unity self-update` now runs when `--no-log-proxy` is passed.
- Change
`unity commands --grep ` and `unity command --query ` are now one search over the CLI's commands, its plugins and the Pipeline commands of the connected Editor, best match first. Pipeline matches show as kind `pipeline` , and every row says how to run it ( `--format json` adds an `invoke` field).
- Change
`unity vcs setup` now refuses a preset file that repeats a key or holds a broken text escape as invalid, with `VCS_PRESET_INVALID` , instead of failing with an internal error. The `unity vcs hooks run pre-commit` check reports a staged `Packages/manifest.json` that is not valid JSON, a repeated key included, as "the file is not valid JSON".
- Change
`unity vcs setup --vcs` and `unity projects link vcs --vcs` now refuse an IPv6 address and a host name with non-ASCII letters as an unsupported provider, as `unity projects create --vcs` already does.
- Change
`unity commands --grep` now reads regular-expression patterns the way .NET does. Patterns .NET refuses, such as `a++` and `(a|b)+??` , are refused, `[[:alpha:]]` and `\11` match as they do in .NET, a regular-expression pattern longer than 4096 characters is refused, and an invalid pattern's error ends with .NET's own wording, for example `nested quantifier` .
- Change
Breaking: failures that say what went wrong now exit with their own code instead of `6` , so a script can tell whether to retry. `11` : the path isn't a Unity project, or the release or module doesn't exist.
- Change
Ctrl-C and SIGTERM now end every command by the signal, which a shell reports as `130` and `143` and which stops a shell loop. Under `--format json` or `ndjson` the command first writes a failure with the code `INTERRUPTED` (Ctrl-C) or `TERMINATED` (SIGTERM), unless it had already started writing its own result.
- Change
Passing `--json` together with a different `--format` , such as `--json --format tsv` , now stops with a usage error (exit code 2) that names both flags, instead of quietly printing the `--format` output. Pass one of them.
- Change
`unity mcp configure` quotes arguments with spaces or other shell characters in the `npx` and `claude` command lines it shows and reports, so they can be pasted back. Quoting uses single quotes, which Windows `cmd.exe` does not read; a Windows path without spaces is shown unquoted.
- Windows
- Change
`unity --help` now lists the top-level commands by area (Editor, Project, Editor Automation, Build and Test, Cloud and Account, Setup, and Help and Diagnostic) instead of one long list, so a command is easier to find.
- Change
On Linux, module downloads are checked against their published checksums again, as on macOS and Windows. A module that doesn't match fails to install instead of being installed unverified.
- Windows
- macOS
- Linux
- Change
`unity projects create` and `unity projects new` create the project in a folder that already exists when that folder is empty, so `mkdir MyGame` then `unity projects create MyGame` works. A folder that holds anything, hidden files and `.git` included, is still refused.
- Change
When a command can't run because a proxy points to a PAC script, the error now names where that proxy came from ( `--proxy` , the environment variable, or the saved proxy file) and how to fix it. A saved proxy file the CLI can't read is named too.
- Change
`unity projects upgrade` exits 3 when the Unity Cloud step is refused with a 401 or 403, or the session is signed out, and 7 when the Unity Cloud service can't be reached. These used to exit 6.
- Change
`unity pipeline cloud-build` accepts a Unity Cloud project name as well as an id in `--cloud-project` and `UNITY_CLOUD_PROJECT` , the way `unity projects link cloud` does. A name that matches no project, or more than one, is an error that names it.
- Change
Windows: links the CLI opens in your browser no longer pass through the command shell, so they open exactly as written.
- Windows
- Change
`unity setup claude` installs Unity's plugin from Anthropic's official Claude Code marketplace, as `unity@claude-plugins-official` . A plugin you installed earlier from Unity's own marketplace still counts as installed.
- Change
The CLI now uses Unity Licensing Client 1.19.0. A client it downloaded under an earlier version is replaced the next time a `unity license` command or an Editor launch needs it.
Removed
- Removal
The `UNITY_CLI_FTUE` variable and agent first-session ("paved") mode are removed. Machine output no longer carries `"paved"` , and `unity projects create` no longer writes `UserSettings/UnityCliPaved.json` or reports `pavedSettings` .
- Removal
`unity serve` is removed; it existed for the retired Electron Hub.
Fixed
- Fix
`unity self-update` no longer tells you to update to the version it just installed. The reminder is also gone after `--check` , `--rollback` and `--dry-run` .
- Fix
`unity projects create` no longer deletes a corrupt template archive that sits in a folder whose name differs from the templates folder only by letter case, on a case-sensitive volume. It reports the archive as unreadable and keeps it, so you remove or replace the file yourself.
- Fix
On Linux, installing or repairing an Editor or module no longer fails with a process error when the installer finishes at the exact moment the CLI samples its progress. The CLI treats that as a missing reading and lets the install complete.
- Linux
- Fix
`unity editors info` now reports the installer and modules for your machine's architecture, or the platform's only build when there is none for it: on Linux arm64 that is the x86_64 installer, which runs only under FEX-Emu. On x64 Windows it used to show the Arm64 installer.
- Windows
- Linux
- Fix
`unity mcp configure --format json` and `--format ndjson` printed nothing and exited 0. They now print the result (client, scope, the config path written or that a dry run would write, and what happened), and a failed write is reported in that result with a non-zero exit.
- Fix
On Windows, `unity build` , `run` , `test` , `status` , `templates create` and `templates pack` , and `unity vcs switch` , `sync` and `git worktree` , no longer report a project as open in the Editor right after you quit that Editor. The check now waits up to a quarter of a second for the Editor's lock to clear, as the Unity Hub does.
- Windows
- Fix
On Windows 11, plugins and their runtimes installed by the CLI from the MSIX package (the winget install) are now visible to every other CLI install and to the Unity Hub, and they're kept when the package updates or is uninstalled. Before, they were private to the package and a package update could remove them.
- Windows
- Fix
`unity build --args` with an unclosed quote or a trailing backslash now gives the whole error in your saved language. The last part used to stay in English.
- Fix
`unity install-modules --non-interactive --editor-version 6000.4` and `unity editors path 6000.4` now say what is ambiguous when several installed Editors match. With two patches installed, both name the matching versions and ask for the full version.
- Fix
`unity plugin install --help` , `unity plugin remove --help` and `unity plugin changelog --help` no longer list a fixed set of plugin IDs that left some out. They point to `unity plugin list` , which shows every plugin you can install.
- Fix
Run from inside a Unity project with no Editor open, `unity command` , `list` , `job` and `mcp` no longer reach the Editor of another project. They fail and name the project, as `--project-path` does, so a command can't change the wrong project.
- Fix
`unity editors upgrade` no longer installs Visual Studio Code or Visual Studio on the upgraded Editor. IDEs update themselves, and declining the VS Code license used to stop the whole upgrade.
- Fix
`unity watch test` started in the project folder no longer re-runs the tests over and over. Each run's own `test-results.affected.xml` counted as a project change, so the next run started at once.
- Fix
`unity skill install` with no terminal, or with `--non-interactive` , still exits 0 when it skips an outdated copy or a skill a plugin already provides. Its `--format json` result now carries `skipped: true` and a `skipReason` , so a script can tell a skip from an install.
- Fix
`unity ci init` run from a directory that was deleted or moved now says it can't read the current directory and asks you to change to one that exists, instead of printing a raw system error.
- Fix
`unity command test run --async_tests true` now shows the message telling you to poll `test status` in human and TSV output, instead of `0/0 passed` , with the Pipeline package versions that send an empty results list along with it.
- Fix
`unity list` and `unity command` list parameter types as `string` , `integer` , `number` , `boolean` , `array` or `object` instead of .NET type names, and show a nullable parameter as optional.
- Fix
`unity projects link cloud` and `unity projects unlink cloud` now warn when an open Editor has the project: it keeps the old cloud link until it restarts, and can write it back to the project. The warning names `unity close ` .
- Fix
Commands that check whether the Editor has a project open, such as `unity vcs switch` , `unity run` , `unity open` and `unity status` , no longer hang or run out of memory when a project's `Temp/UnityLockfile` or `Library/EditorInstance.json` is a named pipe or a link to a device such as `/dev/zero` . They skip it, as they do any file that is not a regular file.
- Fix
Commands run from a sandbox that can't inspect other processes no longer make a running Editor unreachable. Such an Editor is still listed, without its process ID.
- Fix
`unity status` no longer reports an Editor as `ready` while a modal dialog freezes it, such as the URP Material upgrade prompt in a project made from a 6000.3 template: the row reads `starting` ( `STATUS_NOT_READY` ), or `unreachable` once nothing has asked about it for 60 seconds, and `unity status --until-ready` keeps waiting. On an Editor that reports its dialogs (Unity 6000.7 or later), the row names the dialog with `STATUS_BLOCKED_BY_DIALOG` .
- Fix
On Windows, a command that shares a settings file with another running Unity tool no longer fails with `Access is denied` when that tool is releasing its lock at the same moment. The command waits a moment and takes the lock.
- Windows
- Fix
On Windows, `unity open` and `unity projects open` now report the Editor's process ID in `launchedPid` with `--format json` and `--format ndjson` . They always reported `0` there.
- Windows
- Fix
`unity test --allow-install` now keeps the test settings from the project's `UnityCliConfig.json` and your saved defaults, such as the mode, report format and timeout, after it installs the missing Editor. It used to run the tests without them.
- Fix
`unity cloud org current` now names your default organization when you are signed in, for example `Acme (1001 / )` , whether Unity Hub, the CLI, or the Unity Editor last wrote it. With `--format json` it adds `organizationName` , `organizationGenesisId` , and `organizationUuid` , and `--format tsv` still prints the bare stored value.
- Fix
A sign-in request no longer fails with the connection closed when the auth broker had only just started.
- Removal
`unity projects link cloud` no longer fails with `ALREADY_LINKED` when only the project's `ProjectSettings.asset` still names a cloud project, for example after an open Editor wrote back a link you removed. The link now goes ahead and records the new project in both the project file and the Hub's project list.
- Fix
On Linux arm64 with `UNITY_EXPERIMENTAL_FEX_EMU=1` , the CLI now finds a standard FEX-Emu setup, with its config in `~/.config/fex-emu` and its RootFS in `~/.local/share/fex-emu` , when `XDG_CONFIG_HOME` and `XDG_DATA_HOME` are not set. It used to look only in `~/.fex-emu` , so `unity doctor` reported no RootFS and the x86_64 Editor was started without FEX-Emu and failed.
- Linux
- Fix
An Editor opened with `unity open` on a machine without Unity Hub now gets the full Unity cloud configuration, so Asset Store links such as Open in Browser work instead of reporting that the Unity Connect configuration is invalid. The CLI downloads it once in the background and saves it where Unity Hub keeps it, and never replaces one Unity Hub saved.
- Fix
`unity projects info` now reads a project's Unity Cloud link from the project's own settings file, the one the Editor loads, instead of the Hub registry's record. Before, a registry record that named an organization could outrank the file, so `info` reported a link the project no longer had, or mixed the registry's project with the file's name.
- Fix
When the plain `` folder for an editor already holds one, `unity install` no longer quietly writes a second full copy to a `-` folder beside it. If the editor there is the same version and architecture you asked for, the install stops and names that folder, with a hint to run `unity editors add` if `unity editors` doesn't list it ( `--force` still installs).
- Fix
`unity auth login --client-id` now stops at once, with no network call, when the value is an email address. `--client-id` and `--client-secret` take a service-account key created in the Unity Dashboard, not a Unity ID email and password.
- Fix
On macOS and Windows, when the same Unity version and architecture is installed in more than one folder, such as `2022.3.62f2` and `2022.3.62f2-arm64` , every command now uses the `2022.3.62f2` folder and warns about the other copy, naming both folders. Before, commands silently used the `-arm64` folder, so `unity install-modules` could add modules to a copy you weren't using.
- Windows
- macOS
- Fix
On Windows, `unity projects create --vcs uvcs` and `unity projects link vcs --vcs uvcs` now check in the whole project when the project's folder path has accented or non-Latin characters, such as `Câmera` or `日本語` . Before, the first check-in added nothing.
- Windows
- Fix
When GitLab's search for Unity projects fails and `unity projects clone` falls back to listing the repository's files, it now reads at most 100,000 files and folders, so it can't keep asking a server that never stops answering. A project that sits only past that point isn't found.
- Fix
`unity vcs git worktree add` and `remove` now put the real paths in `--format json` and `--format ndjson` output. They used to replace your home folder's account name with `` , so a script or agent could not open the worktree it had just made.
- Fix
`unity cloud project link` and `unlink` are not commands, because linking lives under `unity projects` . The error now says what to run instead, `unity projects link cloud` or `unity projects unlink cloud` , in the text and in the `--format json` message.
- Fix
On Linux, `unity install` run with no `HOME` set now puts the Editor's desktop entry and icon in your account's home folder. It used to put them in a `.local/share` folder inside the folder you ran the command from.
- Linux
- Fix
Starting several apps at the same moment no longer leaves two auth brokers running, which could make sign-in requests fail.
- Fix
`unity editors upgrade` now looks up newer releases for all your installed version lines at once. When the Unity Releases service doesn't answer, the command reports that after one request timeout (about 100 seconds) instead of one timeout per version line.
- Fix
If `unity editor add` registers an editor but then can't read the installed editors back to list its modules, the error now says the editor was added and names the `unity editor module refresh` command to run, in your saved language. It used to print an internal note in English.
- Security
On Windows, a leftover lock from an earlier run is now cleared even when security software blocks the rename normally used to clear it. When folder permissions block it instead, the error now says the lock could not be created, which points you at those permissions.
- Windows
- Fix
A leftover lock that is a symbolic link, broken or not, no longer makes a command spin at full CPU, wait several minutes or fail. Like any other leftover lock it is held while it is fresh and cleared once it is stale, and its age is read from the link itself, whatever it points at.
- Fix
A lock or write failure that the system gives no name, such as a disk error or a Windows sharing violation, now shows the system's code, such as `os error 32` , instead of the word `Uncategorized` . This covers `unity editors install-path --set` , `unity language --set` , and the reads and writes of `unity config` 's own store.
- Windows
- Fix
`unity vcs uvcs` commands and `unity projects clone` now recognize a Unity Version Control workspace whose selector names its repository with the short `rep` keyword, such as `rep "Game@acme@cloud"` . Before, they treated the project as not being in a workspace.
- Fix
On Linux, retrying `unity install` after an Editor install ran out of disk space now reinstalls into the same folder, instead of adding a second copy in a folder named `-x86_64` or `-arm64` . Such a copy now shares its version's menu entry, removing an Editor removes every menu entry that still opened it, and an Editor whose program file is empty gets no menu entry.
- Linux
- Fix
On Windows, `unity doctor` no longer reports one Unity install twice when your `PATH` spells it two ways. An entry written with an 8.3 short name, such as `C:\PROGRA~1\Unity\Hub\Editor` , is now read as the same folder as `C:\Program Files\Unity\Hub\Editor` , and an entry that reaches a folder through a junction is read as the folder it ends at, however that junction's own target is written.
- Windows
- Fix
When `unity install` or `unity install-modules` can't download a file, the reason is now in your language: a server error, a lost connection, a timeout or a full disk reads as a translated sentence in the `--verbose` summary and in the `reason` of `--format json` and `--format ndjson` failures. The CLI log keeps the English.
- Fix
On Windows, `unity templates` now packs with the `tar.exe` that ships in Windows' System32 folder even when Windows isn't installed in `C:\WINDOWS` , instead of the first `tar.exe` on your `PATH` , and plugin installs no longer pick a different `tar.exe` when `SystemRoot` is changed.
- Windows
- Fix
On Windows, `unity collab jira server add` , `update` and `test` with `--key-from-stdin` now read a key with non-ASCII characters the way your console's input code page encodes it.
- Windows
- Fix
On Windows, when two registered projects share a name, `unity projects info` and `unity projects size` now name each one's parent folder in the list of matches.
- Windows
- Fix
`unity test --filter` no longer crashes on a regular expression it can't evaluate. Such a pattern now matches no tests, like any other pattern that can't be used.
- Fix
A command no longer signs you out when Unity Hub or another `unity` command refreshed your sign-in at the same moment. You are signed out only when your sign-in has really expired.
- Fix
`unity editors upgrade` and `unity install` no longer offer you an Editor your license doesn't cover, such as an extended LTS build. `unity install 2021.3` now picks the newest patch your license covers.
- Fix
`unity open` and `unity projects open` no longer start a second Editor on a project that's already open, which used to fail with `OPEN_EDITOR_EXITED` . They now report the open project with its Editor version and process id and exit 0; `--format json` and `--format ndjson` return `data.alreadyOpen: true` and `data.pid` .
- Fix
`unity plugin install` , `unity plugin remove` and `unity plugin upgrade` now include `errors` and `warnings` in their `--format json` and `--format ndjson` output, as every other command does, so a script that reads them no longer finds them missing. When `install` or `upgrade` can't install a plugin, that plugin's row still reports it in `outcome` , and `errors` stays empty.
- Fix
`unity analytics status` now says the one-ping-per-run telemetry is off when `UNITY_NO_CLI_INVOKED_TELEMETRY` is set. It used to always say the ping was on, even with that variable set, which was already stopping the ping itself.
- Fix
`unity doctor --ci` runs its checks again on a machine with no licensing client installed, such as a fresh CI runner, instead of failing with "isn't supported with these options or in this environment". It downloads the licensing client when it needs one.
- Fix
`unity open` , `unity projects open` and `unity context` report a Unity Hub or project file they can't read with one clear message, instead of an internal error.
- Fix
`unity publish play` names a build folder it can't read, instead of printing an internal error.
- Fix
`unity doctor` reads a `cli-log.json` saved as UTF-16 or UTF-32, and shows a log line it can't parse as written, instead of failing.
- Fix
`unity license` and the floating-license checks of `unity install` and `unity uninstall` read a `services-config.json` that holds an invalid escaped character, instead of failing.
- Fix
`unity auth` commands keep working when a sign-in saved by an older CLI version, or the CLI's saved settings, hold text they can't decode.
- Fix
`unity projects upgrade` asks for confirmation on a terminal before it upgrades a project, and `unity projects require` asks before it installs a missing Editor. The upgrade question defaults to no and the install question to yes; `--yes` skips either.
- Fix
`unity projects link vcs --rollback --delete-remote` asks before it deletes the remote repository, once the provider says the repository is empty. The answer defaults to no, and a no keeps the repository.
- Fix
`unity vcs setup` asks which provider to use when you don't pass `--vcs` , with the one that is ready to use first.
- Fix
`unity editors info` and `unity editors upgrade` report a clear error when Unity's release service sends an answer the CLI can't read, instead of an internal error.
- Fix
`unity install --resume` skips a damaged entry in the paused downloads list instead of stopping with an internal error.
- Fix
`unity editors add` and `unity editor add` report a clear error when the editor list can't be read or written, or when a relative path is given from a folder that no longer exists. `unity uninstall` with no version does the same for a folder that no longer exists.
- Fix
Commands that find an installed Editor keep working when an Editor's `modules.json` or `metadata.hub.json` , or your saved settings, repeat a key or hold text they cannot decode. The last value of a repeated key wins.
- Fix
`unity editors add` and `--editor-path` on macOS reject an Editor whose signature check does not answer within 30 seconds, instead of waiting for it.
- macOS
- Removal
On macOS and Linux, `unity uninstall` , `unity editors prune --remove` and `unity editors upgrade --replace` stop before deleting anything when an Editor's folder holds a file marked immutable or append-only ( `chflags uchg` on macOS, `chattr +i` or `+a` on Linux). They used to remove everything around that file, fail on it, and leave a half-removed Editor that was still listed.
- macOS
- Linux
- Fix
`unity doctor --ci` runs on macOS and Windows, and with `--format github` . `unity doctor` reports an account database it can't open as a warning row instead of stopping, and `unity doctor` and `unity diagnose accelerator` report a working directory or a Unity Hub file they can't read with one clear message.
- Windows
- macOS
- Fix
`unity diagnose proxy` runs on macOS when a proxy is configured.
- macOS
- Fix
`unity auth login` reports a sign-in service it can't reach as a failed sign-in, and `unity collab jira server` commands with `--key-from-stdin` check their other options before reading the key.
- Fix
`unity open` opens a project whose `ProjectSettings.asset` it can't fully read, and `unity pipeline list-versions` reports a registry it can't reach.
- Fix
`unity mcp configure --help` and the help of the `unity pipeline automation` and `unity pipeline cloud-build` commands work. `unity self-update` and `unity self-install` report an extra argument or an invalid option as a usage error.
- Fix
`unity projects link vcs --vcs uvcs` and `unity vcs setup --vcs uvcs` on a terminal ask which Unity Version Control region to use the first time an organization uses it, and ask before they create billable resources (the answer defaults to no, and a no leaves nothing created). `unity projects link cloud` on a terminal asks whether to link the project that `UNITY_CLOUD_PROJECT` or the saved default names, or to create a new one.
- Fix
On Linux and macOS, `unity uninstall` , `unity editors prune --remove` and `unity editors upgrade --replace` remove an Editor that you can't delete yourself, such as one installed with `sudo` . They ask for administrator rights once per Editor, and declining leaves it untouched.
- macOS
- Linux
- Fix
With `UNITY_INSTALL_MISSING_TOOLS` set to `1` , `true` or `yes` , a command that needs Git LFS and can't find it installs it through your package manager, then goes on. On Linux that is one administrator prompt for `apt` , `dnf` , `pacman` , `zypper` or `apk` , which a run that is already root skips.
- Linux
- Fix
`unity collaboration` commands given a JSON value that repeats a key, such as `--camera '{"x":1,"x":2}'` , now name the option and the key instead of printing an internal error.
- Fix
`unity projects create` on a terminal asks whether to link the new project to Unity Cloud, which Editor to use when the installed Editors span more than one release, and which Unity Version Control region to use the first time an organization uses it. The cloud-link, Editor and template questions are not asked in scripts, with `--quiet` or with `--non-interactive` .
- Fix
`unity projects create` and `unity projects new` work again when Unity Hub has a default projects folder saved and no `--path` is given (the project goes in that folder), and when the new project's path belongs to a registered project whose folder was deleted (the project is created and its entry updated).
- Fix
`unity projects report` works again: it groups your registered projects by the Editor version each one needs, shows whether that Editor is installed and whether its stream is LTS, lists projects with no readable `ProjectVersion.txt` , and counts installed Editors no project needs, in every output format.
- Fix
`unity projects verify` works again: it checks a project for missing or orphaned meta files, duplicate GUIDs, conflict markers and an invalid package manifest without launching the Editor, and exits with a non-zero code when it finds an error. Pass `--check` to run only some checks, `--expect-editor ` to flag an Editor version drift, and `--strict` to treat warnings as errors.
- Fix
`unity projects clone --vcs github|gitlab` , `unity projects link vcs` , `unity vcs setup` and `unity vcs sync` now work with a repository, namespace or branch whose name has a non-ASCII character, a space or a percent sign, and with a git remote whose address has non-ASCII characters, instead of stopping with an unsupported-state error.
- Fix
`unity projects clone` , `unity projects link vcs` , `unity vcs setup` and `unity vcs sync` now pass the proxy the CLI resolved ( `--proxy` , `--proxy-disable` , the proxy variables, the saved proxy setting, or the system proxy) to git, for the clone, the push, the pull and the Git LFS transfer, instead of stopping with an unsupported-state error when a proxy is configured. A proxy with a user name and password is handed to git through its environment, never on its command line, and is never written to the repository's config.
- Fix
`unity vcs sync --verify` works again: after the pull it checks the project for missing or orphaned meta files, duplicate GUIDs, conflict markers and an invalid package manifest, and reports the error and warning counts.
- Fix
`unity vcs` commands run from a folder that no longer exists now say `Unable to read the current directory.` and ask you to change to one that exists, instead of printing a raw system error. Most of them still run when you pass an absolute project path, since that path doesn't depend on the current folder.
- Fix
`unity install` , `unity install-modules` and the installs that `unity run` , `unity test` and `unity projects require` start work on Windows again. When the install needs administrator rights, Windows asks for permission once, before the download starts.
- Windows
- Fix
`unity modules list` and `unity install --list-modules` work on Windows again, and show whether Visual Studio is installed.
- Windows
- Fix
`unity install 6000.0.11f1` no longer fails with a checksum mismatch.
- Fix
`unity install-modules` and `unity editor module add` no longer fail with a checksum mismatch when Unity corrected a module's release data after the Editor was installed, as for Windows Build Support (Mono) on 6000.5.3f1. When a module doesn't match the checksum saved with the Editor, the CLI checks it against the current release data before giving up.
- Windows
- Fix
`unity projects create --vcs uvcs` and `unity projects link vcs` no longer fail the project's first Unity Version Control check-in when an open Unity Editor puts some of the project's files under version control first. The CLI now adds only the files still waiting to be added and checks the project in, as Unity Hub does.
- Fix
`unity docs toc` and topic lookup in `unity docs` work again after docs.unity.com started listing an empty sitemap, instead of failing with `DOCS_TOC_INVALID` .
- Fix
`unity projects add` , `projects clone` , `projects create --vcs` and `projects link vcs` now record a GitLab project in a subgroup by its whole path, as Unity Hub does: `gitlab.com/group/sub/game` is organization `group` , repository `sub/game` . They used to record repository `sub` .
- Fix
`unity cloud org list` , `unity cloud project list` , their `current` , `clear-default` and `set-default` commands, and `unity auth status` now end `--format ndjson` output with a `{"type":"result"}` frame, including when you are signed out or the request fails, instead of writing nothing or plain text to stdout. The `list` commands write their rows first, then that frame with the row count.
- Fix
`unity pipeline list-versions --format ndjson` now ends its rows with one `{"type":"result"}` frame whose `data` holds the row count, which `--quiet` keeps.
- Fix
`unity pipeline list` , `unity build --list-profiles` and `unity build --list-targets` now end `--format ndjson` with one `{"type":"result"}` frame whose `data` holds the row count, which `--quiet` keeps. `unity changelog` and `unity diagnose accelerator` answer `--format ndjson` with that frame alone, its `data` matching `--format json` , instead of plain text.
- Fix
`unity version` , `unity --version` , `unity language` , `unity analytics` , `unity config proxy` , `unity config accelerator` and `unity cache` now answer `--format ndjson` with one `{"type":"result"}` frame whose `data` matches `--format json` , instead of a bare object or plain text. `unity env` writes its rows and then that frame with the row count, which `--quiet` keeps.
- Fix
`unity plugin install` and `unity plugin upgrade` now list each plugin they could not install in the envelope's `errors` , with a code such as `PLUGIN_UNSUPPORTED_PLATFORM` and the same sentence the terminal shows, instead of failing with an empty `errors` .
- Fix
An invalid `--format` or `UNITY_FORMAT` value now produces the `INVALID_COMMAND_ARGS` envelope when the command also asks for JSON ( `--json` , or a valid `UNITY_FORMAT` behind an invalid `--format` ), instead of plain text on stderr.
- Fix
`unity doctor --tail` with an invalid value now produces the `INVALID_COMMAND_ARGS` envelope under `--format json` and `--format ndjson` , exiting `2` like other invalid option values.
- Fix
`unity changelog --format json` now says why it failed when no release notes are published for the version: `errors` carries one entry with the code `CHANGELOG_NOT_FOUND` and the same message the other formats print. A download that fails still reports its own code, `ERR_NETWORK` or `COMMAND_FAILED` , so a script can tell the two apart.
- Fix
An unknown command, subcommand or option is now reported in the language set with `unity language --set` , together with the hint lines that follow it. English output is unchanged.
- Fix
`unity help --help` now prints the command's help, as `unity help ` does, instead of failing with `unknown command 'help'` .
- Fix
`unity build run` no longer hangs when the build it would launch is a named pipe: it reports that the path is not a build, as for any file that is not one. A `Library/UnityCli/last-build.json` that repeats a key now reads as no previous build, with the hint to run `unity build` , instead of an internal error.
- Fix
`unity collab` now checks local files before it sends a request: an upload from a pipe, a device or a file you can't read, or a download or export whose folder doesn't exist or that names a folder, fails at once with a message naming the path, instead of hanging or failing after the request. A Unity Cloud address in your settings that isn't an http or https URL is named in the error too.
- Fix
On Windows, if `unity editor add` or `unity editor module refresh` registers an Editor through the administrator prompt but then can't save the Editor list, the error now reads in your saved language. The OS reason in parentheses stays as Windows words it.
- Windows
- Fix
A command group run on its own with `--json` , such as `unity cache --json` , now prints its subcommands as JSON instead of the help text: the group's name and description and, under `data.subcommands` , each subcommand's name, aliases, description and whether it is a group itself. `--format ndjson` prints the same as one result line.
- Fix
Command help no longer shows a placeholder default for `--architecture` : the `(default: "unknown")` note is gone, since leaving the option out uses this computer's architecture. `unity command --help` shows `--timeout` as `(default: 30)` instead of `(default: "30")` , and no longer lists the analytics-only `--caller` and `--skill` options, which still work.
- Fix
A Plastic install or upgrade that verifies the download against Plastic's published checksum file no longer fails when that file is served through a redirect.
- Fix
`unity plugin changelog --format json` and `unity self-update --changelog --format json` now say why they failed when no release notes are published: `errors` carries one entry with the code `CHANGELOG_NOT_FOUND` and the message the other formats print. `unity self-update --changelog` also exits 6 in that case instead of 0, in every format.
- Fix
`unity mcp` now says why no Editor tools are listed when it can't find or reach a Unity Editor with the Pipeline package. Your MCP client lists one `unity-cli-status` tool whose description gives the reason, and calling it checks again.
- Fix
`unity assets inspect` and `unity assets import` given an extra argument, and `unity pipeline list` given any argument, now print a usage error and exit 2 instead of failing with an unsupported-state error and exit 1.
- Fix
`unity vcs resolve` and `unity vcs merge-setup` on Windows find `UnityYAMLMerge.exe` in the Editor's `Data\Tools` folder. Before, they looked for a file with no `.exe` and always reported the tool as missing.
- Windows
- Fix
`unity vcs merge-setup` , `unity vcs git worktree add` and `unity vcs git worktree remove` now run on Windows. Before, they stopped with a message that the command isn't supported in this environment.
- Windows
- Fix
`unity vcs git worktree add --install-editor` installs the Editor the new worktree needs, after asking, instead of refusing to run. `unity run --command --allow-install` installs a missing Editor before it runs the command.
- Fix
`unity projects clone` and `unity projects link vcs` accept a repository URL with an IPv4 host ( `https://10.0.0.5/team/game.git` ) and a path that holds `+` , `@` , `,` , a `%20` -style escape, a query or a fragment. Before, each was refused as unsupported.
- Fix
`unity projects clone` into a folder that holds a project you already registered, such as one whose files you deleted, now clones instead of stopping with "isn't supported with these options or in this environment". When the clone lands exactly on a registered project, its existing entry is updated.
- Fix
`unity pipeline install` and `unity pipeline upgrade` now explain a failure they couldn't handle before. Offline, they name the registry host they couldn't reach and how to set a proxy.
- Fix
`unity mcp configure` and `unity bug mcp` now explain why they stop when a client config is a symlink, or when the config can't be read or isn't valid JSON, instead of refusing with a generic "isn't supported" error. The message names the path, and nothing is written.
- Fix
A damaged settings file no longer turns usage data off for every run or blocks saving your usage data choice. The CLI keeps a copy of the damaged file and starts a fresh one, and restores the file from the backup an interrupted repair left behind.
- Fix
`unity doctor --ci` runs on Linux arm64 machines that start the licensing client through FEX-Emu, instead of failing with "isn't supported with these options or in this environment". It prints the FEX-Emu notice the other commands print.
- Linux
- Fix
On Windows, `unity build` and `unity collab` accept projects and paths on a network share ( `\\server\share\...` ) or spelled as device paths ( `\\?\C:\...` ), instead of refusing them.
- Windows
- Removal
On Windows, `unity uninstall` , `unity editors prune --remove` and `unity editors upgrade --replace` now name the Editor folder whose files are in use and ask you to close the Unity Editor and any other app using it, instead of reporting that the removal isn't supported. A file that antivirus or indexing software holds for a moment no longer refuses the command.
- Windows
- Fix
`unity install` and the module commands, `unity templates list` and `unity releases` now say when your account can't read the Unity Editor install folder, and name that folder, instead of reporting unreadable Hub data or an unsupported state.
- Removal
`unity uninstall` and `unity editors prune --remove` now say an Editor can't be safely uninstalled when its folder is a link or a file, and leave it in place, instead of reporting that the removal isn't supported.
- Fix
`unity editors` commands that can't finish because the machine changed mid-run now show the standard translated "isn't supported" message instead of an English-only one.
- Fix
The background update check now refreshes its cache for users behind a proxy, so the "new version available" notice no longer goes stale there.
- Fix
`unity doctor` no longer lists a .NET runtime and NuGet packages among its open-source components, since the CLI ships neither.
- Fix
`unity diagnose proxy` reports that it can't read the proxy settings, instead of crashing, when `proxy.json` changes while the command starts.
- Fix
Editor commands run from inside a project reach that project's Multiplayer Play Mode clone when the main Editor is closed, instead of reporting that no Editor is open for the project.
- Fix
A `unity pipeline automation` or `unity pipeline cloud-build` command run with `--cloud-org` and no value now names the option `--cloud-org ` in its error, as its help does, since an organization name works there as well as an id.
- Fix
The install script's closing hint on macOS reads `source ~/.zshrc` again, instead of `source \~/.zshrc` , which failed when pasted into a terminal.
- macOS
- Fix
The install script's env-file hint now reads `. "$HOME/.unity/env"` , which works when pasted. It printed a quoted `~` path, which the shell does not expand.
- Removal
Switching accounts with `unity auth switch` while another command is renewing your sign-in no longer saves that sign-in under the account you switched to. If the account is removed or signed out while its sign-in renews, the command now asks you to sign in again.
- Fix
On zsh, `unity self-install` now adds the CLI to your PATH in `.zshenv` , so `unity` is found in non-interactive shells such as the ones coding agents use, not only in a terminal window.
- Fix
New shells no longer print `no such file or directory: .../.unity/env` after `unity self-uninstall` .
- Fix
`unity vcs blame` , `vcs diff` , `vcs explain` , `vcs resolve` and `vcs summarize` given an empty path now say that no path was given and exit with code 2 (error code `VCS_PATH_EMPTY` ). They used to report that the command isn't supported with these options.
- Fix
`unity vcs setup` and `unity projects link vcs` , when adopting a repository while Unity Hub's `projects-v1.json` holds no project list, now say the project list is damaged and how to fix it, instead of a generic error. Nothing in the repository changes.
- Fix
`unity projects add` , `remove` , `pin` and `unpin` , when Unity Hub's `projects-v1.json` holds no project list, now say the project list is damaged and how to fix it ( `PROJECT_REGISTRY_MALFORMED` , exit 6), instead of a generic unsupported-state error. Your project list is not changed.
- Fix
`unity projects create` and `unity projects new` refresh your sign-in before they start the Editor. Before, an expired session made the Editor's package downloads fail with "You are not signed in", even though `unity status` showed you signed in.
- Fix
On Windows, `unity hub install` works when the temporary folder path contains a typographic apostrophe, such as a profile named O’Brien.
- Windows
- Fix
`unity templates delete` no longer removes the whole folder the template's archive sits in. It now deletes the archive, its preview images and, once no other archive in that folder uses it, the template's `package.json` , and removes the folder only when it is a per-template folder inside the templates folder that holds nothing else.
- Fix
`unity mcp` no longer returns a screenshot of every display when a capture tool can't reach the Editor, for example while a dialog is open. It now reports that the Editor could not be captured.
- Fix
Inside a project you pinned to an account with `unity auth default ` , cloud, collaboration, pipeline and version-control commands now act as that account, the one `unity auth status` shows, instead of your active account.
- Fix
`unity auth logout` now always clears your session on this machine, and a session refreshed while you sign out no longer comes back afterwards.
- Fix
`unity license server list` no longer passes terminal control sequences in the configured server address through to your terminal.
- Fix
`unity self-update` no longer installs an older version on its own. When the channel's latest version is lower than the one you run, it reports that and changes nothing (exit 1), even with `--yes` , piped output or `--format json` .
- Fix
`unity mcp --tools` and `--exclude-tools` now match a command under every name it answers to, so excluding `test.run` or its older flat name hides `test run` and refuses a call under any of those names. Write a grouped command with a dot, such as `test.run` .
- Fix
A project's `m_EditorVersion` is now accepted only when the whole value is a Unity version, and the `unity install ...` commands that `unity open` , `unity doctor ci` and `unity editors verify` suggest now quote the version.
- Fix
The anonymous usage ping the first-run analytics prompt describes now actually sends: one event per run with the CLI version, the kind of caller, whether it looks like CI, whether it ran interactively, and the project's Unity version. It carries no account, device or project identity, and no IP address.
- Fix
A `unity` plugin now gets the account the CLI is signed in to, instead of the account the Unity Hub app last signed in to. With two Unity IDs on one machine, a plugin's calls could go out as the other account and be refused for a missing seat.
- Fix
On macOS, hosts on the system proxy bypass list ("Bypass proxy settings for these Hosts & Domains" and "Exclude simple hostnames") now connect directly when a manual proxy is set, instead of going through the proxy.
- macOS
Deprecated
- Deprecation
Old option spellings the CLI still accepts now print a warning naming the one to use: `status --project` (use `--project-path` ), `install --list-components` ( `--list-modules` ), `--childModules` , `--no-childModules` and `--install-dir` on `install` and `install-modules` ( `--child-modules` , `--no-child-modules` , `--download-directory` ), `--template-version` , `--hub-version` and `--package-version` ( `--version` ), and `-a` on `projects list` and `projects size` ( `--all` ). In `--format json` the warning is in the envelope's `warnings` .
- Deprecation
`--organization-id` and `--project-id` on `unity collaboration` still work, and print a warning naming `--cloud-org` or `--cloud-project` . In `--format json` the warning is in the envelope's `warnings` .
- Deprecation
`--since` on `vcs git migrate-lfs` and `releases` still works, and prints a warning naming `--after` or `--from-year` . In `--format json` the warning is in the envelope's `warnings` .
- Deprecation
`--verbose` on `editors` and `projects list` still shows every column, and also prints the full error details on a failure as on every command. It now warns that `--long` is the spelling for the columns.
- Deprecation
The `modules` string in the `--json` and `--format ndjson` rows of `unity editors` is deprecated and will be removed in a later beta. Read `moduleNames` instead, since a module name can contain a comma.
- Deprecation
The `project` and `version` keys in the `--json` and `--format ndjson` rows of `unity status` , and the `unityVersion` key in those of `unity editors running` , are deprecated and will be removed in a later beta. Read `projectPath` and `editorVersion` instead.