Unity command-line interface (CLI) release notes
Learn about the latest releases, features, improvements and fixes for Unity CLI.
阅读时间209 分钟最后更新于 7 天前
October 21, 2026
1.0.0-beta.14
-
Security
-
's recent log now shows only the command you ran, such as
unity doctor, and every argument you passed readsprojects open, so paths, project names and option values stay out of a report you paste. The log file itself is unchanged.<redacted> -
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.
unity bug --share-project -
On macOS and Windows, only a Unity-signed Editor started bycan get your access token from the CLI.
unity open -
The programs the CLI starts for you no longer receive,
UNITY_SERVICE_ACCOUNT_ID,UNITY_SERVICE_ACCOUNT_SECRETorUNITY_GITHUB_TOKEN. The variables still reachUNITY_GITLAB_TOKEN's commands, the command you run withunity shell, the Unity Editor, plugins, the licensing client and the identity server.unity projects exec -
On Linux, theAppImage 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.
unity -
On Linux, every release download of theCLI 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.
unity -
On Linux,now shows whether the running auth broker carries a valid Unity signature, in a new Signature row of the auth broker section and as
unity doctorinauthBroker.runtime.signatureoutput.--json -
When the CLI exchanges a credential for a token, it no longer follows a redirect, even to the same host. That coverswith service account credentials or a browser sign-in, refreshing your sign-in, and getting a service account, Unity or Unity Version Control token.
unity auth login -
When you run the CLI with, it now makes you the owner of a folder it creates or repairs only when that folder sits inside a folder you already own.
sudo -
On Windows,, the MSIX update and
unity self-updatenow run the Windows tools they need from the Windows system folder.unity doctor -
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.
-
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.
unity hub install -
Downloads stop after 10 redirects instead of following a redirect loop forever.
-
and
unity plugin install plasticfollow download redirects only to Plastic's own hosts overunity plugin upgrade plastic. A redirect anywhere else fails the install.https -
Commands that look up Unity releases or templates, such as,
unity install,unity releasesand creating a project from a template, ask only Unity servers. A cached cloud configuration that names another server is ignored.unity editors -
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.
-
,
unity install,unity templatesandunity upgraderefuse a download that redirects from anunity plugin installaddress to a plainhttpsone, instead of following it.httpstops at once instead of retrying.unity upgrade -
and
unity projects createkeep 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.unity projects new -
On Windows, the machine-wideis 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.
services-config.json -
On Windows,keeps the downloaded installer locked from its checks until it finishes running.
unity hub install -
and
unity projects newrefuse a template archive that contains a symbolic link, a hard link, or a path outside the project.unity projects create -
and
unity projects newonly accept gzipped (unity projects create) template archives now. A plain.tgzthat used to work is refused as corrupt..tar -
Template downloads ignore catalog entries whose name or version is not a plain package name and version.
-
On Windows,no longer passes your service-account secret or source-host tokens to the player it starts, matching macOS and Linux.
unity build run -
The CLI no longer trusts certificates issued through the distrusted emSign intermediates, which its bundled root certificates and certificate checks could still accept.
-
On Windows,and the commands that look for running Unity Editors now start Windows PowerShell from the Windows system folder.
unity hub install -
Downloads no longer follow a redirect from HTTPS to plain HTTP, andfetches a module over HTTPS even when the release catalog lists it with an
unity installaddress.http:// -
On Linux, removing an Editor that needs administrator rights and installingthrough your system package manager now use
git-lfsonly from a trusted system location. Otherwise the command fails with a message that no trustedpkexecwas found.pkexec -
Crash reports and displayed errors hide the value after,
-accessToken,-passwordand-androidKeystorePass, however short it is, as batch Editor output already did.-androidKeyaliasPass -
uploads and
unity bugterminal output no longer show the serial number passed to the Editor withunity batch.-serial -
On macOS,no longer lets the environment your shell started with reach the administrator shell that removes an Editor.
unity uninstall
-
-
Added
-
prints where the CLI keeps its configuration: the settings file and the directory that holds it. It works in every output format;
unity config pathreturns--json.{file, directory} -
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
unity terms accept <version>to accept without a prompt, which a run without a terminal requires.--yes -
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.
-
lists another operating system's releases, and
unity releases --operating-system <windows|macos|linux>shows what that system's Editor and modules would download, so you can plan a Windows build machine from a Mac. Withoutunity install <version> --dry-run --operating-system <os>, an install for another operating system stops with--dry-runand names the dry run instead.CROSS_OS_INSTALL_UNSUPPORTED -
When the CLI is signed out and Unity Hub is signed in,shows the Hub's account and the
unity auth logincommand that uses it in the CLI with no browser sign-in, then continues with the browser sign-in. Nothing changes in the Hub.unity auth switch -
(and
unity open --until-ready) now names three dialogs the wayunity projects open --until-readydoes:unity statusfor "Enter Safe Mode?" (quoting up to three compile errors from the Editor's log),OPEN_BLOCKED_BY_DIALOG_SAFE_MODEfor the Windows "Auto Graphics API Notice", andOPEN_BLOCKED_BY_DIALOG_GRAPHICS_APIfor "Unity Editor Software Terms". The message gives the same remedy asOPEN_BLOCKED_BY_DIALOG_SOFTWARE_TERMS.status -
reports an Editor waiting at the "Enter Safe Mode?" prompt with its own error code,
unity status, 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.STATUS_BLOCKED_BY_DIALOG_SAFE_MODE -
now ends with a pointer to
unity cloud project --help, where a local project is linked to Unity Cloud, andunity projects link cloudpoints back tounity projects link cloud --helpfor listing projects and setting a default.unity cloud project -
(also
unity open --accept-upgrades) 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.unity projects open -
(
unity install --download-directory <dir>) 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-dgo into the same folder, and-madds more later.unity install-modules --download-directory <dir> -
creates the project from the template without the default project scaffolding. The Unity Cloud link and
unity projects create --barework as usual beside it, and--vcsstill turns the link off.--no-cloud -
reports each setup step it ran in a new
unity projects createfield of itsstepsand--jsonresult: one entry per step, each--ndjson,donewhen the template already had it,presentwith a reason, orskippedwith an error code.failed -
(and
unity 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 withunity projects open --until-ready, the dialog's title and what to do about it, rather than leaving a script waiting forever.OPEN_BLOCKED_BY_DIALOG -
exposes only the Editor tools whose names match the list, and
unity mcp --tools <list>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--exclude-tools <list>matches any run of characters (*).--tools "eval,capture_*" -
The CLI tells you, at most once a day, when a plugin you installed withhas a newer version, and suggests
unity plugin install. Underunity plugin upgradeand--format jsonit arrives as a--format ndjsonentry inPLUGIN_UPDATE_AVAILABLE, and over MCP in the server's instructions.notifications -
lists the command names from before command groups and the names that replaced them, from an Editor with a Pipeline package that serves them.
unity command --obsolete-command-names -
and the unknown-command error now end with "Not sure which command?
unity --help", so a command you can't name is one search away.unity commands --grep <term> -
installs Unity's agent plugin into Google Antigravity by running
unity setup antigravity. Likeagy plugin install https://github.com/Unity-Technologies/unity-agent-pluginandunity setup codex, it reports an existing install instead of reinstalling, takesunity setup grokand every output format, and fails with--dry-runwhenANTIGRAVITY_NOT_FOUNDisn't on your PATH.agy -
opens a package's manual for the version your project uses, read from
unity docs --package <name>, for examplePackages/packages-lock.json. Outside a project it opens the newest release's manual.unity docs --package com.unity.2d.sprite -
lists every page of the scripting API reference, or the manual with
unity docs toc, 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.--manual -
opens the local page from the Editor's Documentation module when it is installed for your project's Editor version (or the one
unity docs <topic>names), so it works offline.--editor-versionopens docs.unity.com instead, and--onlinealways prints the docs.unity.com address.--url -
prints the page's Markdown instead of opening a browser, and
unity docs <topic> --contentwraps it with the page URL, the version and the source. Package topics read the package's local--format jsonMarkdown, or say that no Markdown exists online yet.Documentation~ -
leaves the header row out of
--no-headeroutput, for scripts that only want the rows.tsv -
Theand
--jsonrows of--format ndjson,unity modules listandunity editors module listnow includeunity install-modules --listanddownloadBytesas integers andinstalledBytesas a boolean. Scripts should read these instead ofisInstalled,downloadandinstalled, which are display text, andstatusis translated.status -
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 link cloud <path> --cloud-project <id> --replacefirst, and names the link it replaced (unity projects unlink cloudin JSON). WithoutpreviousLink,--cloud-projecttakes--replaceor your saved default project, and fails withUNITY_CLOUD_PROJECTwhen neither is set: it never creates a cloud project.REPLACE_NEEDS_CLOUD_PROJECT -
Every row ofand
unity commands --grepnow says what matched and how to run it:unity command --queryadds--format jsonandpath(matchedOn,nameordescription), andoptionadds them as its last two columns. An installed plugin's row now shows--format tsvas its run line instead of nothing.unity <plugin> -
Theand
--jsonrows of--format ndjsonnow list an installed Editor's platforms (withunity editors, its modules) as the--verbosearray.moduleNames -
Theand
--jsonrows of--format ndjsonnow name each Editor's project asunity statusand its version asprojectPath, and the rows ofeditorVersionname the version asunity editors running, the same names other commands use.editorVersion -
,
unity command,unity listandunity jobtakeunity mcp,--port <number>and--pid <number>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.--instance <name> -
starts a headless Editor with no window. Add
unity open --batchmodeto return once it is ready for commands, with the same dialog, exit and timeout errors as a windowed open.--until-ready -
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
unity statusand exit code 6 (an Editor shown only as unreachable gave 12).STATUS_SAFE_MODE -
reads the running Editor's console, and
unity logs --consolestreams new entries as the Editor logs them until you press Ctrl-C. Burst and C# compiler errors come with their code, file and line,unity logs --console --followand--levelwork as they do for the CLI log,--tailpicks the Editor, and--project-pathwrites one entry per line.--format ndjson -
reports the commit a release was built from and its build date, as
unity version --jsonandcommit, so a support report can be traced to the exact build. A build you compile yourself reports both asbuildDate.null -
reads the license serial from the
unity license activateenvironment variable when you pass noUNITY_LICENSE_SERIALand no other activation option, so the serial stays out of the process list on shared machines.--serialstill works and takes precedence.--serial -
When an AI coding agent runsand 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.
unity
-
-
Changed
-
names its version row "CLI version", and its
unity envoutput adds--json.cliVersionandunity doctor --jsonadd--format tsv.runtimeVersion -
The CLI's MSIX package (the winget install) now needs Windows 10 version 21H1 or later, the same as the Unity Hub.
-
When their output is piped or redirected, or with,
--format tsvandunity projects link cloudnow print one tab-separated row: the result (unity projects unlink cloud,linked,already-linkedorunlinked), the project path, the cloud project ID, the project name, the organization ID, andnot-linkedwhen a new cloud project was created. Fortrue, the name is the one saved with the link, which is the local project's title when the CLI made the link.unlink cloud -
now means
-aon every command, and--architecturemeans-yon every command that has--yes, including--yes,unity bug mcp,unity mcp configureandunity skill install.unity skill refreshandunity projects listshowunity projects sizewith no short flag;--allstill works there, so existing scripts keep running.-a -
Whencan't reach the Unity release service, the error names the host it tried and why, such as
unity releasesor a failed secure connection, instead of "fetch failed". A connection, TLS or timeout failure also says how to set a proxy (ECONNREFUSEDorunity config proxy <url>), andHTTPS_PROXYreports the network error code in--json.errors[].code -
(also
unity open) no longer passesunity projects opento the Editor when you run it from a terminal, so the Editor shows its own Software Terms dialog to you. An unattended open (-acceptSoftwareTermsForThisRunOnly,--non-interactive, a machineUNITY_NON_INTERACTIVE, redirected output or CI) still passes it, and a copy you add with--formatis kept.--args -
matches a regular expression with no time limit, so a pattern such as
unity commands --grepno longer stops with "took too long". Backreferences ((a+)+$) and lookaround ((a)\1) 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(?<=a)b.unclosed group -
now matches plain words in any order and lists the best matches first, so
unity commands --grepfindsunity commands --grep 'cloud link'at the top. A word in the command's own name ranks above one in its parent group, then its description, then its options.projects link cloud -
Whenor
unity commands --grepcan'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 --querywithout a connected Editor answers with that line and the number of CLI commands and plugins that match, and exits 0 instead of failing.unity command --query -
is now described as "Create, open, upgrade, and link local Unity projects (Unity Cloud, GitHub/GitLab)" in
unity projects, instead of "Manage Unity projects in the Hub registry", sounity --helpfinds it. Useunity commands --grep cloudto link a project to Unity Cloud.unity projects link cloud -
adds the Pipeline package to every new project, so
unity projects createworks on it without a separateunity command.unity pipeline installleaves it out, and--bare, which used to opt in, is still accepted and does nothing.--with-pipeline -
now marks accounts the CLI is not signed in to, such as ones you signed in to only in Unity Hub, with
unity auth list, and(not signed in to the CLI)adds--format jsonandsignedInto each account. When no account is active,signInStatenow says how many stored accounts are not signed in to the CLI and suggestsunity auth status, orunity auth loginfor one that is.unity auth switch <account> -
to a stored account the CLI is not signed in to now says so and suggests
unity auth switch, and exits with code 3 and the error codeunity auth login. It used to fail with exit code 6 and an internal message about a missing token slot.ACCOUNT_NOT_SIGNED_IN -
, and
unity auth login --helpwhen you are not signed in, now say that a perpetual or legacy serial license needs no sign-in, and show the command:unity auth status. A subscription serial still needs a signed-in user.unity license activate --serial <serial> -
and
-Vprint the CLI version only at the top level:--versionandunity --versionwork as before. After a command they are no longer the CLI version, sounity -Vnow fails as an unknown option (exit 2,unity editors --versionunderINVALID_COMMAND_ARGS), and a command's own--format jsonmeans the version of what it acts on.--version -
When the CLI hides an e-mail address in its log file or a crash report, it now keeps the domain () and removes only the part before the
[redacted]@example.com, as the Unity Hub does. It used to replace the whole address with@.<redacted-email> -
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
unity cloud project current,--format jsonstill holds the default, andactiveCloudProjectIdanddefaultCloudProjectIdare added beside it.linkedCloudProjectId -
A template'slarger than 16 MiB is now refused, and the template no longer appears in
package/package.json. Real template files are a few KiB, so only a damaged or hostile archive is affected.unity templates list --editor <version> -
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 project set-defaultcommand that makes it active, andunity cloud org set-defaultcarries the organization under--format json.data.organization -
,
unity pipeline installandunity pipeline upgradenow saveunity projects create --with-pipelinein 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.Packages/manifest.json -
now checks a folder the way Unity Hub's Add project from disk does. It refuses a system folder, such as
unity projects add,/usrorC:\Windowsitself, with/Applications; a complete project insideSystem folders can't be used as Unity projectsor/Applicationsis still added.C:\Program Files -
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, andand
unity analytics opt-inexit with an error saying your choice was not saved, and change nothing. They also refuse whenopt-outrepeats a key or cannot be read.user-settings.json -
now checks for the Unity plugin that
unity skill install codexinstalls. 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.unity setup codex -
On Windows,and
unity install-path --setnow answer a device path that names no drive, network share or volume, such asunity editors install-path --set, with\\.\pipe\namewithout opening it. Drive paths,This directory does not exist.paths,\\?\C:\...paths and network shares are checked as before.\\?\Volume{...} -
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.
unity projects create --vcs <host> -
and
unity projects createnow 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.unity projects new -
When a command is not found, the tip now namesfor the command groups,
unity commandfor the tags and, when the Editor's Pipeline package supports it,unity command --tagsfor the old names.unity command --obsolete-command-names -
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.
unity command -
lists the commands in that group like
unity command <group>does instead of printing a raw result, and command listings and results show each command as you type it (--tag).editor.playmode start -
and the other full command names,
unity command editor statusandunity editors playmodestill work with a Pipeline package from before command groups, and warn once to rununity recompile.unity pipeline upgrade -
without
unity projects link cloudnow links the project named by--cloud-project, then your saved default project for the organization (UNITY_CLOUD_PROJECT), 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 (unity cloud project set-defaultincreated).--format json -
A plugin killed by a signal, run asor as a
unity <tool>command on your PATH, now exits withunity-<name>plus the signal number (128for a segmentation fault), the way a shell reports it, instead of139. The CLI log now names the plugin, its version when known, and the signal, so1includes them.unity bug -
with more than one path now lists every argument you passed in its error.
unity cache keynow refuses an IPv6 address with an interface name, such asunity config accelerator, whose number depends on the machine; use the numbered zone instead, such as[fe80::1%eth0].[fe80::1%3] -
and
unity templatesnow 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 exampleunity projects create, instead of printing a raw system error.Could not create the templates folder (PermissionDenied).reports a custom templates folder it can't create or read the same way.unity templates delete -
now refuses a template whose
unity projects create --template <folder>repeats a key as not a valid Unity template, andpackage.jsonandunity projects createreport 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,unity projects new,createandlink vcsrun from a folder that no longer exists now sayunlink vcsunless you pass an absolute path.Unable to read the current directory. -
without
unity commandnow lets each Editor command use its own default timeout (for example 10 minutes for--timeout) instead of a flat 30 seconds, on arun_teststhat supports it.com.unity.pipelinestill overrides it, and when it runs out the Editor's own timeout message is shown.--timeout <seconds> -
A command the Editor rejects because a modal dialog is open now fails at once instead of retrying untilruns 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
--timeout(orunity command editor.dialog answer <id> <button>for an Editor window) to run;unity command editor.dialog dismiss <id>shows what is open.unity command editor.dialog list -
When the Editor is running but its Pipeline server can't answer yet, for example while scripts compile,now shows the Editor's reason, such as
unity command, instead of a bare 503 status or a cannot-connect error. ACompiling scripts.search still reports that no Editor could be searched.unity command --query -
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.
-
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.
-
with an empty application name reports a usage error that points at
unity auth revoke.unity auth consumers -
's local server for a WebGL build answers only requests addressed to
unity build run,localhostor127.0.0.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.[::1] -
and
unity test --shardrefuse a--rerun-failedpattern that is too long or too complex to check against the test names, with a message that says so, and--filterthen runs the whole suite instead of narrowing it.--affected -
,
unity runandunity testcheck theunity buildpath, and--log-filethe JUnit report path, before the Editor starts. Aunity testpath 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.--log-file -
refuses an architecture it doesn't know, from
unity build --create-profileor--architecture, with the same usage error as every otherUNITY_ARCHITECTURE.unity build -
,
unity projects clone --vcs uvcsandunity projects link vcs --vcs uvcsdownload 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.unity projects create --vcs uvcs -
and
unity editor module liston macOS report Visual Studio as installed whenaddis inVisual Studio.appor/Applications, without asking macOS for permission to control it.~/Applications -
and
unity editors default <version>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.unity editors default --unset -
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
unity editors upgrade, as it already did in scripts.--all -
(and
unity editor module add) no longer asks you to accept module license terms on a terminal. Passunity editors module addto accept them; without it, a module with license terms is not installed.--accept-eula -
,
unity installandunity install-modulesreport 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, passunity modules list.--architecture -
now ships as a native Rust binary on macOS, Linux and Windows, with no .NET runtime inside.
unity -
and
unity openno 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,unity projects openor the exact version, or run the suggested--architecturecommand.unity install -
delete commands no longer ask for confirmation on a terminal. Pass
unity collabto confirm the deletion.--non-interactive -
no longer asks which running Editor to install into when several could take the package. Pass
unity pipeline installto choose one.--project-path -
and
unity projects createdownload 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.unity projects new -
,
unity projects create --openandunity projects new --openno longer ask on a terminal which of several matching Editors to open the project in, or whether to install a missing one.unity projects upgrade --yesandcreatestill create the project and warn that it did not open;newstops.upgrade -
,
unity close,unity projects close,unity projects require,unity projects upgradeandunity projects createstop 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.unity projects new -
Commands that reach the network, among them,
unity license,unity collab,unity hub install,unity templates,unity plugin,unity projects createandunity editors, now run behind a proxy set throughunity install,HTTPS_PROXY,HTTP_PROXY,ALL_PROXYorUNITY_PROXY, a SOCKS or credentialed proxy,unity config proxy, or a macOS automatic proxy configuration (PAC), and withNODE_EXTRA_CA_CERTSon.--log-proxy -
and
--proxy <url>now take precedence over proxy environment variables, so--proxy-disableworks while a proxy variable is also set.--proxy <url> -
Commands that reach the network now read proxy variables per scheme, as curl does:covers
HTTPS_PROXYrequests andhttps://coversHTTP_PROXYones, whilehttp://andUNITY_PROXYcover both. Before, the first variable found was used for every request.ALL_PROXY -
On Windows, a system proxy set only for HTTP is no longer used forrequests, matching other Windows apps. Set a proxy for secure connections too, or one proxy for all protocols, to keep routing them through it.
https:// -
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.
unity shell -
,
unity templates list,infoanddeletestop with a clear message, and leave the file alone, when Unity Hub's saved template data holds a value the CLI can't read.editno longer edits a template whoseunity templates editholds such a value.package.json -
Every curated tool command, such as,
unity uvcs,unity cmandunity plastic, hands the terminal straight to the tool. A first-run analytics consent question waits for the nextunity ugscommand instead.unity -
On Windows,,
unity projects clone --vcs uvcsandunity projects link vcs --vcs uvcswork 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.unity projects create --vcs uvcs -
,
unity projects create --vcsandunity projects link vcscreate the repository on a self-hosted host throughunity vcs setup,teaorbktwhen it is the signed-in tool, with no change to how you sign in. A repository that Azure DevOps created but whose replyazprinted unreadably is now reported as left behind, with its URL when there is one.az -
no longer asks for confirmation on a terminal before it removes a Unity Version Control workspace that holds other projects. Pass
unity projects unlink vcsto remove it, as in a script.--unlink-workspace -
no longer asks for confirmation on a terminal before it removes the Unity Version Control workspace:
unity projects unlink cloud --cascade-vcsconfirms it. A workspace that holds other projects also needs--cascade-vcs.--unlink-workspace -
,
unity vcs setupandunity projects link vcsno 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.unity projects create --vcs -
On Windows,,
unity uninstallandunity editors prune --removeremove 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 settingunity editors upgrade --replacerefuses it with nothing removed.UNITY_NO_ELEVATE -
and
unity projects createdefault to the Editor version's own URP template (unity projects new) instead of the Built-in Render Pipeline 3D template, andcom.unity.template.urp-blankor--template 3dpicks that version's 3D or 2D URP template. When the version doesn't offer it, the command fails with--template 2dand lists the templates it does offer.TEMPLATE_NOT_FOUND -
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 docsandunity docs AdaptivePerformancePackageMetadataStoreopen the right page instead of a 404, and a name two pages share goes to search rather than a guess.unity docs GameObject.activeSelf -
Giving an old and a new option spelling different values prints a warning naming the value used, the last one typed. Forbeside
status --projectthe last one now wins; before,--project-pathalways did.--project-path -
takes the Unity Cloud organization and project as
unity collaborationand--cloud-org <id>, like the rest of the CLI.--cloud-project <id>,jira server,jira project addanddelete, andupdateusejira issues list, then the default organization (UNITY_CLOUD_ORG), when you don't passunity cloud org set-default.--cloud-org -
In, an empty or blank
unity collaboration,--cloud-org,--cloud-projectorUNITY_CLOUD_ORGcounts as not set, so the next source is used, asUNITY_CLOUD_PROJECTdoes.unity pipeline cloud-build -
now always takes a revision, as it does on
--since,vcs summarizeandvcs affected.testbounds its scan withvcs git migrate-lfs, and--after <date>filters from a year withreleases.--from-year <year> -
Four options take the spelling every other command uses:on
--git-token-from-stdin,projects create,projects cloneandprojects link vcs;vcs setupon--localandcollaboration annotations create, as on spatial attachments;updateon--group-by; andcommandon--longandeditorsto show every column. The old spellings (projects list,--git-token-stdin,--local-space, and--group_byon-v) still work and print a warning naming the new one.projects list -
Every, and
--timeout,UNITY_BUILD_TIMEOUTandUNITY_RUN_TIMEOUT, now takes a whole number of seconds written as digits, such asUNITY_TEST_TIMEOUT; any other value is a usage error (exit code 2) that quotes it. Scripts may need updating:--timeout 30or30son5m,build,run,testandwatch testused to wait 30 and 5 seconds,recompileand1e3on0x10,status,open,projects open,closeandprojects closewaited 1000 and 16 seconds, andjob waitwaited one and a half seconds.command --timeout 1.5 -
,
unity installandunity install-modulesbound the wait for another install withunity projects require, the spelling every other command uses for a time limit. The old--timeout <seconds>still works and prints a warning naming--wait-timeout.--timeout -
Under, a command that reports an error on stderr now writes the plain
--format jsonline there, as every other format does, instead of aError: ...object. Read the outcome from the envelope on stdout ({"error": ...}andsuccess), not from stderr.errors -
signed out now reports
unity auth status --format jsonwith asuccess: falseerror (NOT_SIGNED_INfor an expired session), matching its exit codeSESSION_EXPIRED. The status report stays in3.data -
now writes its
unity auth login --format jsonprogress frame, and theauth_url=frame, to stderr, so stdout holds only the result envelope.adoptable= -
now writes one envelope whose
unity skill install --format jsonis an array with a record per skill it considered, instead of one envelope per skill, so its stdout parses as a single JSON document.datawrites the same records as its result frame.--format ndjson -
,
unity skill list,unity skill enableandunity skill disablenow endunity skill install --listoutput with a--format ndjsonframe carrying the same data as{"type":"result"}, instead of writing nothing.--format json -
Status commands that answer no now reportin
success: false, so--format jsonagrees with the exit code:successwhen signed out (unity cloud statusorNOT_SIGNED_IN),SESSION_EXPIREDwith no active license (unity license status), andLICENSE_NOT_ACTIVEwith no server or an unreachable one (unity license server status,LICENSE_SERVER_NOT_CONFIGURED). Their exit codes andLICENSE_SERVER_UNREACHABLEare unchanged.data -
headers now use the same keys as the
tsvrows (--format json,version,upgradeTo), whatever your language, instead of the translated column titles. A flag that adds information only appends columns, sogenesisIdkeeps the same columns and order.unity editors --verbose -
An emptyresult prints the header row instead of nothing or a sentence (any "no results" hint goes to stderr), and lists that printed bare rows (
tsv, theunity projects listtables) now lead with a header row too.vcs -
Pipednow 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 listor aunity projects list | xargsloop, needswhile readand the second column, for example--no-header.unity projects list --no-header | cut -f2 -
Pipedhas a fixed column set:
unity projects list,name,path,version,modified,cloudProjectId,pipeline. A column flag such asvcsfills its column, which stays empty without it, so adding a flag never moves a column.--cloud -
Booleancolumns print
tsvortrue: thefalsecolumn ofdefaultandunity cloud org listand theunity cloud project listcolumn ofactiveno longer printunity context list, and the*column ofremovedprintsunity editors pruneortrueinstead of a translated status.false -
An unset value is an emptycell:
tsv,unity context listandunity context currentno longer printunity context save.(not set) -
keeps stdout for data: messages, hints and failures such as "You are not signed in" from
tsvand theunity auth statuscommands now go to stderr.unity cloud -
now hides warnings in human and tsv output, and no longer changes json output. With
--quiet, every listing now keeps its rows except--format ndjson --quiet,editors upgrade,editors module list,install-modules,build --list-targetsandbuild --list-profiles, which still leave them out.env -
In, warnings appear only in the final result line's
--format ndjson, no longer on stderr. Inwarnings, a warning that was only printed to stderr before now appears in--format json.warnings -
now names the project's Unity Cloud organization when you are signed in, for example
unity projects info, whether Unity Hub, the CLI, or the Unity Editor last wrote the link. WithAcme (1001 / <uuid>)it adds--format json,organizationName, andorganizationGenesisIdafterorganizationUuid, which still holds the stored value.organizationId -
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.
unity cloud org current -
now runs when
unity self-updateis passed.--no-log-proxy -
and
unity commands --grep <term>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 kindunity command --query <term>, and every row says how to run it (pipelineadds an--format jsonfield).invoke -
now refuses a preset file that repeats a key or holds a broken text escape as invalid, with
unity vcs setup, instead of failing with an internal error. TheVCS_PRESET_INVALIDcheck reports a stagedunity vcs hooks run pre-committhat is not valid JSON, a repeated key included, as "the file is not valid JSON".Packages/manifest.json -
and
unity vcs setup --vcsnow refuse an IPv6 address and a host name with non-ASCII letters as an unsupported provider, asunity projects link vcs --vcsalready does.unity projects create --vcs -
now reads regular-expression patterns the way .NET does. Patterns .NET refuses, such as
unity commands --grepanda++, are refused,(a|b)+??and[[:alpha:]]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\11.nested quantifier -
Breaking: failures that say what went wrong now exit with their own code instead of, so a script can tell whether to retry.
6: the path isn't a Unity project, or the release or module doesn't exist.11 -
Ctrl-C and SIGTERM now end every command by the signal, which a shell reports asand
130and which stops a shell loop. Under143or--format jsonthe command first writes a failure with the codendjson(Ctrl-C) orINTERRUPTED(SIGTERM), unless it had already started writing its own result.TERMINATED -
Passingtogether with a different
--json, such as--format, now stops with a usage error (exit code 2) that names both flags, instead of quietly printing the--json --format tsvoutput. Pass one of them.--format -
quotes arguments with spaces or other shell characters in the
unity mcp configureandnpxcommand lines it shows and reports, so they can be pasted back. Quoting uses single quotes, which Windowsclaudedoes not read; a Windows path without spaces is shown unquoted.cmd.exe -
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.
unity --help -
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.
-
and
unity projects createcreate the project in a folder that already exists when that folder is empty, sounity projects newthenmkdir MyGameworks. A folder that holds anything, hidden files andunity projects create MyGameincluded, is still refused..git -
When a command can't run because a proxy points to a PAC script, the error now names where that proxy came from (, 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.
--proxy -
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.
unity projects upgrade -
accepts a Unity Cloud project name as well as an id in
unity pipeline cloud-buildand--cloud-project, the wayUNITY_CLOUD_PROJECTdoes. A name that matches no project, or more than one, is an error that names it.unity projects link cloud -
Windows: links the CLI opens in your browser no longer pass through the command shell, so they open exactly as written.
-
installs Unity's plugin from Anthropic's official Claude Code marketplace, as
unity setup claude. A plugin you installed earlier from Unity's own marketplace still counts as installed.unity@claude-plugins-official -
The CLI now uses Unity Licensing Client 1.19.0. A client it downloaded under an earlier version is replaced the next time acommand or an Editor launch needs it.
unity license
-
-
Removed
-
Thevariable and agent first-session ("paved") mode are removed. Machine output no longer carries
UNITY_CLI_FTUE, and"paved"no longer writesunity projects createor reportsUserSettings/UnityCliPaved.json.pavedSettings -
is removed; it existed for the retired Electron Hub.
unity serve
-
-
Fixed
-
no longer tells you to update to the version it just installed. The reminder is also gone after
unity self-update,--checkand--rollback.--dry-run -
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.
unity projects create -
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.
-
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.
unity editors info -
and
unity mcp configure <client> --format jsonprinted 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.--format ndjson -
On Windows,,
unity build,run,test,statusandtemplates create, andtemplates pack,unity vcs switchandsync, 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.git worktree -
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.
-
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.
unity build --args -
and
unity install-modules --non-interactive --editor-version 6000.4now say what is ambiguous when several installed Editors match. With two patches installed, both name the matching versions and ask for the full version.unity editors path 6000.4 -
,
unity plugin install --helpandunity plugin remove --helpno longer list a fixed set of plugin IDs that left some out. They point tounity plugin changelog --help, which shows every plugin you can install.unity plugin list -
Run from inside a Unity project with no Editor open,,
unity command,listandjobno longer reach the Editor of another project. They fail and name the project, asmcpdoes, so a command can't change the wrong project.--project-path -
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.
unity editors upgrade -
started in the project folder no longer re-runs the tests over and over. Each run's own
unity watch testcounted as a project change, so the next run started at once.test-results.affected.xml -
with no terminal, or with
unity skill install, still exits 0 when it skips an outdated copy or a skill a plugin already provides. Its--non-interactiveresult now carries--format jsonand askipped: true, so a script can tell a skip from an install.skipReason -
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.
unity ci init -
now shows the message telling you to poll
unity command test run --async_tests truein human and TSV output, instead oftest status, with the Pipeline package versions that send an empty results list along with it.0/0 passed -
and
unity listlist parameter types asunity command,string,integer,number,booleanorarrayinstead of .NET type names, and show a nullable parameter as optional.object -
and
unity projects link cloudnow 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 namesunity projects unlink cloud.unity close <path> -
Commands that check whether the Editor has a project open, such as,
unity vcs switch,unity runandunity open, no longer hang or run out of memory when a project'sunity statusorTemp/UnityLockfileis a named pipe or a link to a device such asLibrary/EditorInstance.json. They skip it, as they do any file that is not a regular file./dev/zero -
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.
-
no longer reports an Editor as
unity statuswhile a modal dialog freezes it, such as the URP Material upgrade prompt in a project made from a 6000.3 template: the row readsready(starting), orSTATUS_NOT_READYonce nothing has asked about it for 60 seconds, andunreachablekeeps waiting. On an Editor that reports its dialogs (Unity 6000.7 or later), the row names the dialog withunity status --until-ready.STATUS_BLOCKED_BY_DIALOG -
On Windows, a command that shares a settings file with another running Unity tool no longer fails withwhen that tool is releasing its lock at the same moment. The command waits a moment and takes the lock.
Access is denied -
On Windows,and
unity opennow report the Editor's process ID inunity projects openwithlaunchedPidand--format json. They always reported--format ndjsonthere.0 -
now keeps the test settings from the project's
unity test --allow-installand 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.UnityCliConfig.json -
now names your default organization when you are signed in, for example
unity cloud org current, whether Unity Hub, the CLI, or the Unity Editor last wrote it. WithAcme (1001 / <uuid>)it adds--format json,organizationName, andorganizationGenesisId, andorganizationUuidstill prints the bare stored value.--format tsv -
A sign-in request no longer fails with the connection closed when the auth broker had only just started.
-
no longer fails with
unity projects link cloudwhen only the project'sALREADY_LINKEDstill 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.ProjectSettings.asset -
On Linux arm64 with, the CLI now finds a standard FEX-Emu setup, with its config in
UNITY_EXPERIMENTAL_FEX_EMU=1and its RootFS in~/.config/fex-emu, when~/.local/share/fex-emuandXDG_CONFIG_HOMEare not set. It used to look only inXDG_DATA_HOME, so~/.fex-emureported no RootFS and the x86_64 Editor was started without FEX-Emu and failed.unity doctor -
An Editor opened withon 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.
unity open -
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
unity projects inforeported a link the project no longer had, or mixed the registry's project with the file's name.info -
When the plainfolder for an editor already holds one,
<version>no longer quietly writes a second full copy to aunity installfolder 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<version>-<arch>ifunity editors adddoesn't list it (unity editorsstill installs).--force -
now stops at once, with no network call, when the value is an email address.
unity auth login --client-idand--client-idtake a service-account key created in the Unity Dashboard, not a Unity ID email and password.--client-secret -
On macOS and Windows, when the same Unity version and architecture is installed in more than one folder, such asand
2022.3.62f2, every command now uses the2022.3.62f2-arm64folder and warns about the other copy, naming both folders. Before, commands silently used the2022.3.62f2folder, so-arm64could add modules to a copy you weren't using.unity install-modules -
On Windows,and
unity projects create --vcs uvcsnow check in the whole project when the project's folder path has accented or non-Latin characters, such asunity projects link vcs --vcs uvcsorCâmera. Before, the first check-in added nothing.日本語 -
When GitLab's search for Unity projects fails andfalls 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.
unity projects clone -
and
unity vcs git worktree addnow put the real paths inremoveand--format jsonoutput. They used to replace your home folder's account name with--format ndjson, so a script or agent could not open the worktree it had just made.<user> -
and
unity cloud project linkare not commands, because linking lives underunlink. The error now says what to run instead,unity projectsorunity projects link cloud, in the text and in theunity projects unlink cloudmessage.--format json -
On Linux,run with no
unity installset now puts the Editor's desktop entry and icon in your account's home folder. It used to put them in aHOMEfolder inside the folder you ran the command from..local/share -
Starting several apps at the same moment no longer leaves two auth brokers running, which could make sign-in requests fail.
-
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.
unity editors upgrade -
Ifregisters 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 addcommand to run, in your saved language. It used to print an internal note in English.unity editor module refresh -
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.
-
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.
-
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, instead of the word
os error 32. This coversUncategorized,unity editors install-path --set, and the reads and writes ofunity language --set's own store.unity config -
commands and
unity vcs uvcsnow recognize a Unity Version Control workspace whose selector names its repository with the shortunity projects clonekeyword, such asrep. Before, they treated the project as not being in a workspace.rep "Game@acme@cloud" -
On Linux, retryingafter an Editor install ran out of disk space now reinstalls into the same folder, instead of adding a second copy in a folder named
unity installor<version>-x86_64. 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.<version>-arm64 -
On Windows,no longer reports one Unity install twice when your
unity doctorspells it two ways. An entry written with an 8.3 short name, such asPATH, is now read as the same folder asC:\PROGRA~1\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.C:\Program Files\Unity\Hub\Editor -
Whenor
unity installcan'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 theunity install-modulessummary and in the--verboseofreasonand--format jsonfailures. The CLI log keeps the English.--format ndjson -
On Windows,now packs with the
unity templatesthat ships in Windows' System32 folder even when Windows isn't installed intar.exe, instead of the firstC:\WINDOWSon yourtar.exe, and plugin installs no longer pick a differentPATHwhentar.exeis changed.SystemRoot -
On Windows,,
unity collab jira server addandupdatewithtestnow read a key with non-ASCII characters the way your console's input code page encodes it.--key-from-stdin -
On Windows, when two registered projects share a name,and
unity projects infonow name each one's parent folder in the list of matches.unity projects size -
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.
unity test --filter -
A command no longer signs you out when Unity Hub or anothercommand refreshed your sign-in at the same moment. You are signed out only when your sign-in has really expired.
unity -
and
unity editors upgradeno longer offer you an Editor your license doesn't cover, such as an extended LTS build.unity installnow picks the newest patch your license covers.unity install 2021.3 -
and
unity openno longer start a second Editor on a project that's already open, which used to fail withunity projects open. They now report the open project with its Editor version and process id and exit 0;OPEN_EDITOR_EXITEDand--format jsonreturn--format ndjsonanddata.alreadyOpen: true.data.pid -
,
unity plugin installandunity plugin removenow includeunity plugin upgradeanderrorsin theirwarningsand--format jsonoutput, as every other command does, so a script that reads them no longer finds them missing. When--format ndjsonorinstallcan't install a plugin, that plugin's row still reports it inupgrade, andoutcomestays empty.errors -
now says the one-ping-per-run telemetry is off when
unity analytics statusis set. It used to always say the ping was on, even with that variable set, which was already stopping the ping itself.UNITY_NO_CLI_INVOKED_TELEMETRY -
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.
unity doctor --ci -
,
unity openandunity projects openreport a Unity Hub or project file they can't read with one clear message, instead of an internal error.unity context -
names a build folder it can't read, instead of printing an internal error.
unity publish play -
reads a
unity doctorsaved as UTF-16 or UTF-32, and shows a log line it can't parse as written, instead of failing.cli-log.json -
and the floating-license checks of
unity licenseandunity installread aunity uninstallthat holds an invalid escaped character, instead of failing.services-config.json -
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.
unity auth -
asks for confirmation on a terminal before it upgrades a project, and
unity projects upgradeasks before it installs a missing Editor. The upgrade question defaults to no and the install question to yes;unity projects requireskips either.--yes -
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.
unity projects link vcs --rollback --delete-remote -
asks which provider to use when you don't pass
unity vcs setup, with the one that is ready to use first.--vcs -
and
unity editors inforeport a clear error when Unity's release service sends an answer the CLI can't read, instead of an internal error.unity editors upgrade -
skips a damaged entry in the paused downloads list instead of stopping with an internal error.
unity install --resume -
and
unity editors addreport 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 editor addwith no version does the same for a folder that no longer exists.unity uninstall -
Commands that find an installed Editor keep working when an Editor'sor
modules.json, or your saved settings, repeat a key or hold text they cannot decode. The last value of a repeated key wins.metadata.hub.json -
and
unity editors addon macOS reject an Editor whose signature check does not answer within 30 seconds, instead of waiting for it.--editor-path -
On macOS and Linux,,
unity uninstallandunity editors prune --removestop before deleting anything when an Editor's folder holds a file marked immutable or append-only (unity editors upgrade --replaceon macOS,chflags uchgorchattr +ion Linux). They used to remove everything around that file, fail on it, and leave a half-removed Editor that was still listed.+a -
runs on macOS and Windows, and with
unity doctor --ci.--format githubreports an account database it can't open as a warning row instead of stopping, andunity doctorandunity doctorreport a working directory or a Unity Hub file they can't read with one clear message.unity diagnose accelerator -
runs on macOS when a proxy is configured.
unity diagnose proxy -
reports a sign-in service it can't reach as a failed sign-in, and
unity auth logincommands withunity collab jira servercheck their other options before reading the key.--key-from-stdin -
opens a project whose
unity openit can't fully read, andProjectSettings.assetreports a registry it can't reach.unity pipeline list-versions -
and the help of the
unity mcp configure --helpandunity pipeline automationcommands work.unity pipeline cloud-buildandunity self-updatereport an extra argument or an invalid option as a usage error.unity self-install -
and
unity projects link vcs --vcs uvcson 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 vcs setup --vcs uvcson a terminal asks whether to link the project thatunity projects link cloudor the saved default names, or to create a new one.UNITY_CLOUD_PROJECT -
On Linux and macOS,,
unity uninstallandunity editors prune --removeremove an Editor that you can't delete yourself, such as one installed withunity editors upgrade --replace. They ask for administrator rights once per Editor, and declining leaves it untouched.sudo -
Withset to
UNITY_INSTALL_MISSING_TOOLS,1ortrue, 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 foryes,apt,dnf,pacmanorzypper, which a run that is already root skips.apk -
commands given a JSON value that repeats a key, such as
unity collaboration, now name the option and the key instead of printing an internal error.--camera '{"x":1,"x":2}' -
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
unity projects createor with--quiet.--non-interactive -
and
unity projects creatework again when Unity Hub has a default projects folder saved and nounity projects newis 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).--path -
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
unity projects report, and counts installed Editors no project needs, in every output format.ProjectVersion.txt -
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
unity projects verifyto run only some checks,--checkto flag an Editor version drift, and--expect-editor <version>to treat warnings as errors.--strict -
,
unity projects clone --vcs github|gitlab,unity projects link vcsandunity vcs setupnow 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.unity vcs sync -
,
unity projects clone,unity projects link vcsandunity vcs setupnow pass the proxy the CLI resolved (unity vcs sync,--proxy, 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.--proxy-disable -
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.
unity vcs sync --verify -
commands run from a folder that no longer exists now say
unity vcsand 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.Unable to read the current directory. -
,
unity installand the installs thatunity install-modules,unity runandunity teststart work on Windows again. When the install needs administrator rights, Windows asks for permission once, before the download starts.unity projects require -
and
unity modules listwork on Windows again, and show whether Visual Studio is installed.unity install --list-modules -
no longer fails with a checksum mismatch.
unity install 6000.0.11f1 -
and
unity install-modulesno 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.unity editor module add -
and
unity projects create --vcs uvcsno 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.unity projects link vcs -
and topic lookup in
unity docs tocwork again after docs.unity.com started listing an empty sitemap, instead of failing withunity docs.DOCS_TOC_INVALID -
,
unity projects add,projects cloneandprojects create --vcsnow record a GitLab project in a subgroup by its whole path, as Unity Hub does:projects link vcsis organizationgitlab.com/group/sub/game, repositorygroup. They used to record repositorysub/game.sub -
,
unity cloud org list, theirunity cloud project list,currentandclear-defaultcommands, andset-defaultnow endunity auth statusoutput with a--format ndjsonframe, including when you are signed out or the request fails, instead of writing nothing or plain text to stdout. The{"type":"result"}commands write their rows first, then that frame with the row count.list -
now ends its rows with one
unity pipeline list-versions --format ndjsonframe whose{"type":"result"}holds the row count, whichdatakeeps.--quiet -
,
unity pipeline listandunity build --list-profilesnow endunity build --list-targetswith one--format ndjsonframe whose{"type":"result"}holds the row count, whichdatakeeps.--quietandunity changeloganswerunity diagnose acceleratorwith that frame alone, its--format ndjsonmatchingdata, instead of plain text.--format json -
,
unity version,unity --version,unity language,unity analytics,unity config proxyandunity config acceleratornow answerunity cachewith one--format ndjsonframe whose{"type":"result"}matchesdata, instead of a bare object or plain text.--format jsonwrites its rows and then that frame with the row count, whichunity envkeeps.--quiet -
and
unity plugin installnow list each plugin they could not install in the envelope'sunity plugin upgrade, with a code such aserrorsand the same sentence the terminal shows, instead of failing with an emptyPLUGIN_UNSUPPORTED_PLATFORM.errors -
An invalidor
--formatvalue now produces theUNITY_FORMATenvelope when the command also asks for JSON (INVALID_COMMAND_ARGS, or a valid--jsonbehind an invalidUNITY_FORMAT), instead of plain text on stderr.--format -
with an invalid value now produces the
unity doctor --tailenvelope underINVALID_COMMAND_ARGSand--format json, exiting--format ndjsonlike other invalid option values.2 -
now says why it failed when no release notes are published for the version:
unity changelog --format jsoncarries one entry with the codeerrorsand the same message the other formats print. A download that fails still reports its own code,CHANGELOG_NOT_FOUNDorERR_NETWORK, so a script can tell the two apart.COMMAND_FAILED -
An unknown command, subcommand or option is now reported in the language set with, together with the hint lines that follow it. English output is unchanged.
unity language --set -
now prints the command's help, as
unity help <command> --helpdoes, instead of failing withunity help <command>.unknown command 'help' -
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
unity build runthat repeats a key now reads as no previous build, with the hint to runLibrary/UnityCli/last-build.json, instead of an internal error.unity build -
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.
unity collab -
On Windows, ifor
unity editor addregisters 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.unity editor module refresh -
A command group run on its own with, such as
--json, now prints its subcommands as JSON instead of the help text: the group's name and description and, underunity cache --json, each subcommand's name, aliases, description and whether it is a group itself.data.subcommandsprints the same as one result line.--format ndjson -
Command help no longer shows a placeholder default for: the
--architecturenote is gone, since leaving the option out uses this computer's architecture.(default: "unknown")showsunity command --helpas--timeoutinstead of(default: 30), and no longer lists the analytics-only(default: "30")and--calleroptions, which still work.--skill -
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.
-
and
unity plugin changelog --format jsonnow say why they failed when no release notes are published:unity self-update --changelog --format jsoncarries one entry with the codeerrorsand the message the other formats print.CHANGELOG_NOT_FOUNDalso exits 6 in that case instead of 0, in every format.unity self-update --changelog -
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 mcptool whose description gives the reason, and calling it checks again.unity-cli-status -
and
unity assets inspectgiven an extra argument, andunity assets importgiven any argument, now print a usage error and exit 2 instead of failing with an unsupported-state error and exit 1.unity pipeline list -
and
unity vcs resolveon Windows findunity vcs merge-setupin the Editor'sUnityYAMLMerge.exefolder. Before, they looked for a file with noData\Toolsand always reported the tool as missing..exe -
,
unity vcs merge-setupandunity vcs git worktree addnow run on Windows. Before, they stopped with a message that the command isn't supported in this environment.unity vcs git worktree remove -
installs the Editor the new worktree needs, after asking, instead of refusing to run.
unity vcs git worktree add --install-editorinstalls a missing Editor before it runs the command.unity run --command <name> --allow-install -
and
unity projects cloneaccept a repository URL with an IPv4 host (unity projects link vcs) and a path that holdshttps://10.0.0.5/team/game.git,+,@, a,-style escape, a query or a fragment. Before, each was refused as unsupported.%20 -
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.
unity projects clone -
and
unity pipeline installnow explain a failure they couldn't handle before. Offline, they name the registry host they couldn't reach and how to set a proxy.unity pipeline upgrade -
and
unity mcp configurenow 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.unity bug mcp -
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.
-
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.
unity doctor --ci -
On Windows,and
unity buildaccept projects and paths on a network share (unity collab) or spelled as device paths (\\server\share\...), instead of refusing them.\\?\C:\... -
On Windows,,
unity uninstallandunity editors prune --removenow 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.unity editors upgrade --replace -
and the module commands,
unity installandunity templates listnow 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.unity releases -
and
unity uninstallnow 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.unity editors prune --remove -
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.
unity editors -
The background update check now refreshes its cache for users behind a proxy, so the "new version available" notice no longer goes stale there.
-
no longer lists a .NET runtime and NuGet packages among its open-source components, since the CLI ships neither.
unity doctor -
reports that it can't read the proxy settings, instead of crashing, when
unity diagnose proxychanges while the command starts.proxy.json -
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.
-
Aor
unity pipeline automationcommand run withunity pipeline cloud-buildand no value now names the option--cloud-orgin its error, as its help does, since an organization name works there as well as an id.--cloud-org <id-or-name> -
The install script's closing hint on macOS readsagain, instead of
source ~/.zshrc, which failed when pasted into a terminal.source \~/.zshrc -
The install script's env-file hint now reads, which works when pasted. It printed a quoted
. "$HOME/.unity/env"path, which the shell does not expand.~ -
Switching accounts withwhile 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.
unity auth switch -
On zsh,now adds the CLI to your PATH in
unity self-install, so.zshenvis found in non-interactive shells such as the ones coding agents use, not only in a terminal window.unity -
New shells no longer printafter
no such file or directory: .../.unity/env.unity self-uninstall -
,
unity vcs blame,vcs diff,vcs explainandvcs resolvegiven an empty path now say that no path was given and exit with code 2 (error codevcs summarize). They used to report that the command isn't supported with these options.VCS_PATH_EMPTY -
and
unity vcs setup, when adopting a repository while Unity Hub'sunity projects link vcsholds 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.projects-v1.json -
,
unity projects add,removeandpin, when Unity Hub'sunpinholds no project list, now say the project list is damaged and how to fix it (projects-v1.json, exit 6), instead of a generic unsupported-state error. Your project list is not changed.PROJECT_REGISTRY_MALFORMED -
and
unity projects createrefresh 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 thoughunity projects newshowed you signed in.unity status -
On Windows,works when the temporary folder path contains a typographic apostrophe, such as a profile named O’Brien.
unity hub install -
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
unity templates delete, and removes the folder only when it is a per-template folder inside the templates folder that holds nothing else.package.json -
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.
unity mcp -
Inside a project you pinned to an account with, cloud, collaboration, pipeline and version-control commands now act as that account, the one
unity auth default <account>shows, instead of your active account.unity auth status -
now always clears your session on this machine, and a session refreshed while you sign out no longer comes back afterwards.
unity auth logout -
no longer passes terminal control sequences in the configured server address through to your terminal.
unity license server list -
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
unity self-update, piped output or--yes.--format json -
and
unity mcp --toolsnow match a command under every name it answers to, so excluding--exclude-toolsor its older flat name hidestest.runand refuses a call under any of those names. Write a grouped command with a dot, such astest run.test.run -
A project'sis now accepted only when the whole value is a Unity version, and the
m_EditorVersioncommands thatunity install ...,unity openandunity doctor cisuggest now quote the version.unity editors verify -
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.
-
Aplugin 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.
unity -
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.
-
-
Deprecated
-
Old option spellings the CLI still accepts now print a warning naming the one to use:(use
status --project),--project-path(install --list-components),--list-modules,--childModulesand--no-childModuleson--install-dirandinstall(install-modules,--child-modules,--no-child-modules),--download-directory,--template-versionand--hub-version(--package-version), and--versionon-aandprojects list(projects size). In--allthe warning is in the envelope's--format json.warnings -
and
--organization-idon--project-idstill work, and print a warning namingunity collaborationor--cloud-org. In--cloud-projectthe warning is in the envelope's--format json.warnings -
on
--sinceandvcs git migrate-lfsstill works, and prints a warning namingreleasesor--after. In--from-yearthe warning is in the envelope's--format json.warnings -
on
--verboseandeditorsstill shows every column, and also prints the full error details on a failure as on every command. It now warns thatprojects listis the spelling for the columns.--long -
Thestring in the
modulesand--jsonrows of--format ndjsonis deprecated and will be removed in a later beta. Readunity editorsinstead, since a module name can contain a comma.moduleNames -
Theand
projectkeys in theversionand--jsonrows of--format ndjson, and theunity statuskey in those ofunityVersion, are deprecated and will be removed in a later beta. Readunity editors runningandprojectPathinstead.editorVersion
-
October 07, 2026
1.0.0-beta.13
-
Security
-
with
unity install, and--changesetandunity editors addwhen they read an Editor's build from the download server, now refuse a changeset that is not letters and digits, and a manifest file name from the server that is not a plain file name. Both went into the download address unchecked, so a value withunity editor module refresh,/or?could point the request somewhere else... -
A development-only setting that relaxes the peer code-signature check no longer weakens your real sign-in: a broker started that way runs as a separate dev broker with its own address and its own sign-in, never reads yours, and on macOS and Windows refuses Unity-signed applications. It is meant only for apps you build yourself, which sign in from the app that uses it, sincesigns in your normal sign-in.
unity auth login -
The CLI now checks that the sign-in service it talks to is genuine Unity software and that it checks the apps that connect to it. If the check fails, commands that need your sign-in stop with an error, and,
unity build,unity runandunity teststart the Editor signed out with a warning; run withunity opento read your saved sign-in directly.UNITY_NO_AUTH_BROKER=1 -
When,
unity projects createorunity projects link vcslooks up your GitLab groups forunity vcs setup, it now follows further pages of results only on GitLab itself, so your token isn't sent to another host. The lookup also stops after 100 pages of groups.--git-namespace -
Whensends your service account credentials or finishes a browser sign-in and the server redirects the request to another host, the CLI no longer follows the redirect. It stops and reports the request as failed, so your credentials and the sign-in request body are not sent on to that host.
unity auth login -
,
unity buildandunity runno longer print your Unity access token. The Editor writes its full command line into its log, including theunity testvalue the CLI passes it, and the CLI streamed that log to your terminal or CI output.-accessToken -
On Linux, verifying a connecting peer's identity (for the auth broker's enforced peer-allowlist mode, and for the hardened tier's consent cache) now confirms the peer process is still alive before trusting what was read about it. On a shared Linux host, a narrow race let another local process grab a just-exited peer's process id before the identity check finished reading it, which could make that unrelated process pass the check instead of the one that actually connected.
-
When,
unity projects clone,unity projects createorunity projects link vcscalls GitLab with your token and GitLab redirects the request to another host, the CLI no longer sends the token on to that host.unity vcs setup -
A repository URL whose password containsno longer shows part of that password. When
@,unity projects clone,unity projects link vcsor a git error printed such a URL, it removed only the text up to the firstunity vcs setup, so the rest of the password stayed visible.@ -
Before installation,and
unity installcheck whether they can write to the destination folder by creating and removing a test file there. That file now has an unpredictable name and is never created through a link someone else placed in the folder, and a file that was already there is left alone.unity install-modules -
A quoted credential value in the Editor's log is now masked in full. A line such asused to show as
-password "two words", printing everything after the first space.-password "*** words" -
On Linux, the auth broker's check for a debugger or tracer attached to a connecting process can no longer be misled by that process's name.
-
-
Added
-
now reads
unity mcpwhen you don't passUNITY_PROJECT_PATH, as--project-path,unity command,list, andjobalready do. Set it once per worktree or agent session and the MCP server talks to that project's Editor, not whichever Editor the client's working directory happens to sit in.status -
and
unity setup codexinstall Unity's agent plugin, with its Unity skills, into Codex and Grok Build in one step, asunity setup grokdoes for Claude Code. Each runs the agent's own plugin commands for you and reports the plugin's version and where its skills are.unity setup claude
-
-
Changed
-
On a Mac with Apple silicon running macOS 28 or later,no longer lists Intel (x86_64) Editor builds, which can't run without Rosetta 2. Earlier macOS versions still list both, as
unity releasesandunity installalready did.unity editors upgrade -
into Unity 6.7 or later now needs a Unity Cloud choice when the project isn't linked:
unity projects upgradelinks it to a new Unity Cloud project,--cloudlinks an existing one, and--cloud-project <id-or-name>upgrades without linking. Without one, the upgrade stops before it installs or opens anything.--no-cloud -
and
unity openno longer move a project onto Unity 6.7 or later. If the Editor you pick, withunity projects open, with--editor-versionor at the missing-Editor prompt, is 6.7 or later and the project was saved with an older version, the command stops with--editor-pathbefore installing or launching anything.PROJECT_UPGRADE_REQUIRED
-
-
Fixed
-
now works. The setting was already read by
unity config set proxyRequestLogging true's persisted tier, but--log-proxyhad no way to actually set it, sounity configfailed with an unknown-key error.config set proxyRequestLogging true -
's session no longer exits with an error when the host writes a line that parses as JSON but isn't a request object (an array, a bare number,
unity serve, or anullthat isn't a string). That line is now dropped silently instead of crashing the whole session.method -
now answers a request line that contains an escaped unpaired surrogate, such as
unity serve, with a parse error. Before, such a line could go unanswered, or end the whole session with an error.\uD800 -
On Windows, a console Ctrl-C during acommand that had just started the Unity Licensing Client no longer also stops the client. The client is a user-level service that is supposed to outlive the CLI; it now leads its own process group, so it is excluded from the console's Ctrl-C delivery, matching the behavior already in place on macOS and Linux.
unity license -
and
unity projects createnow show two messages in your language instead of English: the one saying the Unity registry lists no published version of the Pipeline package, and the one saying Unity Cloud returned no project when a cloud project was created.unity pipeline install -
now tells you when a dialog open in the Unity Editor is blocking it, such as a save prompt. The Editor still reads
unity status, with a line naming the dialog, and the error isstartinginstead ofSTATUS_BLOCKED_BY_DIALOG;STATUS_NOT_READYadds a--format jsonfield with the dialog's level and title.blockedBy -
A project whose build settings file inis malformed in a deeply nested way no longer crashes the
Library/commands that read it. The file is treated like any other unreadable build settings file: the project keeps the build target it last had, or shows none if it never had one.unity projects -
On macOS,no longer adds hidden
unity templates createentries to the template archive for files that carry extended attributes, such as downloaded or Finder-tagged files. Archives created on macOS now match the ones created on Windows and Linux.._* -
commands and
unity templatesno longer hang when a named pipe or a device sits where a template file is expected, such as a template archive, aunity projects create --templatein your templates folder orpackage.jsonfor--output. Such a file is now treated as unreadable, andunity templates packfails with "Operation not permitted".unity templates pack --output <pipe> --overwrite -
When the CLI can't save your sign-in because it can't write to its credential folder, the warning it records inis now filed under
cli-log.jsonrather thanSealedCredentialStore, and a folder the CLI isn't allowed to write to is namedAuthBrokerrather thanUnauthorizedAccessException. Only the log line changes; signing in behaves as before.IOException -
screenshots (
unity mcpandcapture_game_view) no longer try to close a display library that failed to load. On a machine where the display library can't be loaded, such as Linux withoutcapture_scene_view, the capture now just reports that it couldn't load it.libX11 -
no longer shows a misleading "0/0 passed" in TSV and other table output the instant an async PlayMode or EditMode run starts. It now shows the server's own message telling you to poll
unity command run_tests --async_tests truefor the real result.test_status -
Whenrefuses a URL combined with repository or cloud options, the error now names
unity projects link vcstoo. In languages other than English it also names--coppa, which the translated message left out.--git-description -
On Windows, the CLI now installs the licensing client from Git Bash too. With Git for Windows on,
PATHand the other commands that download the licensing client failed withunity licenseand left it uninstalled.tar: Cannot connect to C: resolve failed -
works again: it failed with a 404 for every request. It now asks for the same company profile as the Unity Dashboard, which replaced the industry field: pass
unity cloud org createand--first-namefor an individual or--last-namefor a company, plus--company-name, and--countryfor organizations in the US, Canada, and Mexico.--region -
now accepts
unity auth logoutand-y, which its help has always listed. Signing out never asks for confirmation, so the flag changes nothing; it no longer fails as an unknown option.--yes -
Whenor
unity installfails withunity install-modules, the output now lists which modules failed and why in--format jsonanddata.failedUids, asdata.failuresalready did. Before,--format ndjsonwasdataand the only error said how many items failed.null -
The warning you get when only one ofand
UNITY_SERVICE_ACCOUNT_IDis set now appears in your CLI language. It used to print in English in every language, saying that service-account sign-in won't activate and which variable to set or unset.UNITY_SERVICE_ACCOUNT_SECRET -
now shows its refusals in your display language. They used to print in English regardless of your selected language.
unity editors module remove -
A corrupt template archive whose header claims gigabytes of data no longer crashesand the other commands that read your templates, or makes them set that much memory aside first. The archive is skipped like any other unreadable one.
unity templates list -
(also
unity editors module) now says what to pass when several installed Editors match your version: the full version when they are different patches, orunity editor modulewhen one version is installed for several architectures. It used to say "No editor found", including when--architecturestill left several patches.--architecture -
now honors
unity editors moduleand-a, as--architecturedoes. It used to ignore the value, so a version installed for several architectures could not be chosen there.unity editor module -
now says another program is using the setting, and that the install path was not changed, when a leftover lock from an earlier run could not be cleared. It used to say the lock file could not be created and send you to check folder permissions.
unity editors install-path --set -
now tells you what to pass when several installed Editors match your
unity install-modules --non-interactive: the full version when they are different patches, or--editor-versionwhen one version is installed for several architectures. A version that exactly matches an installed Editor now wins over a longer one that contains it, such as--architecturebeside6000.3.0a1.6000.3.0a12 -
,
unity uninstallandunity editors verifynow pick the installed Editor whose version exactly matches the version you pass, sounity editors pathselects that Editor instead of being ambiguous with6000.3.0a1. A partial version still matches every installed Editor that contains it, and6000.3.0a12now picks only among the exact version's installs, so it no longer swaps in--architecture.6000.3.0a12 -
and
unity opennow say what to pass, in your display language, when they install an Editor for you and then find several installed Editors that match. That is the full version when they are different patches, orunity projects openwhen one version is installed for several architectures.--architecture -
In every language except English,on Windows no longer tells you to close other running
unity self-updateprocesses after it stages an update or a rollback. A failed binary replacement inunitynow suggests checking for software that holds the file open, such as antivirus.unity self-install -
On Windows, the cross-process install lock of an install that has exited no longer holds up,
unity installorunity install-moduleswhile another program still has that process open. Once the lock goes stale, the CLI takes it over instead of waiting, or instead of exitingunity projects requirewith9underINSTALL_LOCK_BUSY.--no-wait -
and
unity opennow say what to pass when several installed Editors match and nothing can ask you, such as underunity projects open: the full version for different patches, or--non-interactivefor one version installed for several architectures. They used to name--architectureevery time, which can't separate two patches of one architecture.--architecture -
and
unity opennow useunity projects openand-ato choose between the installs that a partial--architecturematches. With--editor-versioninstalled for both arm64 and x86_64,6000.0.32f1opens the arm64 Editor.unity open --editor-version 6000.0 -a arm64 -
and
unity projects createnow useunity projects newand-ato choose between the installs that a partial--architecturematches. With--editor-versioninstalled for both arm64 and x86_64,6000.0.32f1creates the project with the arm64 Editor.unity projects new MyGame --editor-version 6000.0 -a arm64 -
If two installs of one Editor version have architectures the CLI can't read, the error from the commands that pick an Editor, such as,
unity runandunity build, now points tounity install-modulesto find the incomplete install. It used to suggestunity editors list --installed --verbose, which refused both installs.unity editors verify -
On macOS and Linux,now asks for your administrator password when the Editor sits in a folder you can't write to, such as
unity uninstallor/opt, instead of failing with "The Editor … could not be uninstalled." If the removal still fails, the error code is now/Applications.UNINSTALL_FAILED -
,
unity uninstallandunity editors prune --removenow say in your CLI language that an Editor could not be uninstalled, when the removal fails for a reason the CLI can't name. The message printed in English regardless of your selected language.unity editors upgrade --replace -
now shows its warning for an entry with no usable path, and its error for more than 50 MB on stdin, in your display language. Both printed in English regardless of your selected language.
unity projects import -
now stops reading piped input as soon as it passes the 50 MB limit and fails with the same error. It used to read the whole stream into memory before checking the size, so a very large or endless pipe could use up memory or never finish.
unity projects import -
Commands that change your project list, such as,
unity projects addandpin, no longer fail, or save the change where Unity Hub doesn't look, when Unity Hub or anotherimportcommand is creating that list at the same moment. This could happen on a new installation when both start together on a busy machine.unity -
If git refuses apull, the error no longer lists git's download progress (
unity vcs sync,Counting objects), so git's explanation (the diverged branch, the conflicted files, or the untracked file in the way) is easier to find.Receiving objects -
If the CLI ends a git command that made no progress, the error now names the command, such as,
git cloneorgit pull. It used to name the first setting the CLI passes to git, such as the proxy address or the credential helper config, so a stalledgit pushorunity projects clonepointed at the wrong thing.unity vcs sync -
and
unity config proxy <url>now protect the shared proxy settings file the way the other shared files already were. When the file can't be read or lists the same name twice, the change is refused with the same error the other settings files give, and the file stays as it was.unity config proxy --unset -
and
unity templates deletenow print their "Path doesn't exist" error in your display language, and its grammar is fixed (previously it read "doesn't exists"). It appears only if the templates folder disappears while the command runs.unity templates edit -
now explains in your CLI language why it refuses to clean a cache folder that is a symbolic link. The message printed in English regardless of your selected language.
unity cache clean -
,
unity commandand the other commands that connect to a running Editor now tell you in your CLI language when no Editor is available to them, and when aunity listisn't a Unity project. These errors printed in English regardless of your selected language.--project-path -
no longer matches a sibling project whose path starts with the one you named, so
unity status --project-pathno longer ends on an Editor open onunity status --until-ready --project-path /x/MyGame. A value that is an existing directory now matches that project only, so a parent folder no longer matches the projects inside it (run/x/MyGame-lightingwithout the flag to list them all).unity status -
On Windows, sign-in now refuses to talk to the shared authentication process's communication channel if it's owned by a different local account than yours. On a shared or multi-user Windows machine, this closes a narrow window where another account could stand up a channel under the same name before yours starts and have the CLI unknowingly connect to it; your own sign-in session is never affected.
-
and
unity pipeline installnow show their two target errors in your CLI language: aunity pipeline upgradethat isn't a Unity project, and a run from a folder that isn't one when no Editor is open. Both printed in English regardless of your selected language.--project-path -
now writes exactly one JSON document to stdout, so you can parse it whole. The progress lines and the streamed Editor log used to come first; they now go to stderr.
unity build --format json -
no longer hangs on Windows for the full install timeout when reinstalling over an already-installed module. A stuck antivirus file scan could make the reinstall wait retry itself forever; it's now bounded and retried automatically instead.
unity install-modules --force -
now shows its
unity builderrors in your CLI language: a forwarded flag that the command already sets itself, such as--args, and a quote that is never closed. Both printed in English regardless of your selected language.-projectPath -
On macOS,no longer crashes partway through a command when a program that handles signals itself, such as
unityor another tool written in Go, starts it. Commands that read a lot of data were affected, such asghon a large scene, and so was the auth broker the CLI starts in the background.unity vcs diff -
On macOS, the Unity Licensing Client thatstarts no longer crashes when another program sends it a
unitysignal. The CLI no longer passes a leftover signal setting to the programs it starts.SIGUSR1 -
Help for some options no longer shows their default twice., for example, listed
unity releases --helpwith--limit, and(default: 20) (default: 20),unity build,unity commandandunity doctorrepeated a default the same way.unity logs -
now writes a project-local config when you run it from a drive or filesystem root, such as
unity mcp configureorC:\. It used to refuse the write./ -
On Windows, the warning that an update didn't finish installing now appears in your CLI language, the one you set with, instead of always in English. It stays in English when no language is saved.
unity language
-
September 30, 2026
1.0.0-beta.12
-
Security
-
,
unity collaboration jira server add, andupdatenow taketest, which reads the Jira API token from stdin so it doesn't show in the process list or in CI logs that echo commands. Pipe the token in, for example--key-from-stdin.printf '%s' "$JIRA_TOKEN" | unity collaboration jira server test --organization-id <id> --url <url> --username <name> --key-from-stdin -
The CLI's logs and crash reports now fully mask email addresses whose domain ends in an internationalized top-level domain, such as(written
.рф). Previously, the end of the domain was left in the clear next to the mask.xn--p1ai -
now removes user names and passwords embedded in URLs from the logs it attaches, including debug logs. Before, a credentialed URL in a debug log record, or one whose host was an IP address or
unity bug, was uploaded as written.localhost -
now also masks the OS account name embedded in the Unity auth broker's named pipe (
unity bug, with or without a CoCreate slot) in the log files it collects, matching the CLI's own log writer and the native Hub. Previously, a collected Editor or Licensing Client log that mentioned the broker's pipe path was uploaded with the account name in the clear.Unity-auth-broker-<account> -
On macOS, installing a plugin's runtime component now verifies the code signature of every native library it extracts, not just its main executable. Before, an unsigned or tampered library deep in the install could pass installation and only fail the first time something tried to load it.
-
now refuses a plugin download URL that hides a
unity pluginbehind an encoded slash or backslash (such as..), or that contains a control character (such as a tab or a line break), written out or percent-encoded (such as..%2F), or a non-ASCII character, or a%0cor..padded with spaces (such as.). A plugin catalog naming such a URL, or repeating a JSON key, is treated as invalid, and the CLI falls back to its cached or built-in catalog...%20 -
A command run inside a pipedsession, or one driven with
unity shell, can no longer read the lines meant for the shell. Before,unity shell --protocol ndjson,unity auth login --secret-from-stdin, and--key-from-stdinread from the same stdin as the shell, so the rest of a script could be sent to a server as the secret.--git-token-stdin -
The helper that sends crash reports no longer inherits your whole environment. It receives only the variables it needs, so a credential such asno longer reaches it.
UNITY_SERVICE_ACCOUNT_SECRET
-
-
Added
-
adds the Pipeline package (
unity projects create --with-pipeline) to the new project, so an AI agent can drive the Editor as soon as it opens, without a separatecom.unity.pipeline. The project is still created when the package can't be added (an editor older than Unity 6, or the registry is unreachable): you get a warning and exit code 0.unity pipeline install -
shows whether a game in Play mode is actually running. While the Editor is in Play mode, each instance row carries
unity status --format jsonandframeCount, passed through from the Editor.playerLoopTicking -
,
unity installandunity install-modulesacceptunity projects requireand--no-waitfor when the Hub or another CLI is already installing. By default they still wait until that install finishes.--wait-timeout <seconds> -
Experimental, unsupported: on a Linux arm64 host you can opt in to running the x86_64 Unity Editor under FEX-Emu by setting. It takes effect only when FEX-Emu and an x86_64 RootFS are installed, and
UNITY_EXPERIMENTAL_FEX_EMU=1reports whether they are.unity doctor -
A registry plugin's published version can now state the minimum version of a runtime it needs.and
unity plugin installcheck it after resolving the runtime, and hold the tool back with a clear message naming the runtime and the version required, plusunity plugin upgradeto fix it, rather than installing or upgrading a tool next to a runtime it can't actually use.unity plugin upgrade <runtime> -
searches the CLI's commands and its plugin catalog by keyword, so you can find the command for a task without paging through
unity commands --grep <pattern>. It matches command names, descriptions, and options, and plugins whether or not they're installed; each result says whether it's a command or a plugin, and a plugin you haven't installed names the command that installs it.--help -
now shows a short description of what each plugin does, in every format (human,
unity plugin list, and--format json), whether or not it's installed. It's the easiest way for a script or an agent to learn what plugins exist and what they're for.--format tsv -
,
unity plugin install,unity plugin upgradeandunity plugin listnow say where each runtime a plugin uses came from:unity doctorfor a copy that was already on your computer,machinefor one installed through Homebrew, winget, apt or dnf, andpackage-managerfor the Unity CLI's own download. JSON and NDJSON rows carry it as a newmanagedfield (sourcefor a tool), and TSV output adds it as a last column, so existing columns keep their positions.null -
A command from a catalog plugin that you have not installed now fails with the same clear message underand
--format jsonas it already did in human output, wrapped in the usual error envelope under a stable code. A failed--format ndjson/unity plugin installdownload also now logs the actual reason, soupgradeshows what the on-screen message already tells you to look for.unity logs -
and
unity skill disable <skill>turn an installed skill off and back on without uninstalling it, andunity skill enable <skill>shows every tracked install with its state. Every installed skill's description is loaded into every session of the client that found it, whether or not the skill is ever used, so the cost is paid per skill installed rather than per skill useful on this project — and until now the only way to stop paying it was to delete the files by hand and edit the CLI's own install record, which the nextunity skill listundid anyway.unity skill refresh -
and
unity pipeline cloud-buildadd twenty-four more read-only inventory commands across fourteen groups, extending the ten they shipped with.unity pipeline automationgainscloud-buildfor the project already in scope, aproject get|statsgroup with six lookups for what you can build with (tooling,unity,xcode,visual-studio,os,platforms— every one hasmachine-types, andlistandunityalso haveos), andget.targets groups -
,
unity projects create,unity projects link cloud, andunity projects link vcsacceptunity vcs setupto set the COPPA status of a Unity Cloud project they create:--coppa <status>(the default, unchanged),not_compliant, orcompliant. When a command creates a cloud project, its output now names the COPPA status it sent, and JSON and NDJSON results includeunspecified.coppa -
turns on the agent first-session ("paved") mode. Every
UNITY_CLI_FTUE=1envelope and ndjson result frame then carries--format json."paved": true -
A passthrough tool (,
unity uvcs,unity cm, and any future curated tool) now getsunity ugsandUNITY_CLI_INVOKED_ASin its environment.UNITY_CLI_CORE_VERSIONis the command you actually typed, for exampleUNITY_CLI_INVOKED_AS, so a tool with more than one alias can show help and errors that match what you ran.unity uvcs -
and
--format jsonoutput can now carry a--format ndjsonarray telling you when a newernotificationsCLI is available, so scripts and AI agents find out without running a check of their own. Each entry has aunity, a readablecode, and amessagenaming the command that updates you.remediation -
The CLI log now records every command you run, with its arguments, exit code, and duration, soand
unity logsreports show what ran. Tokens, passwords, and credentialed URLs in arguments are redacted.unity bug -
groups every registered project by the editor version its
unity projects reportasks for, and flags a version that isn't installed and a version whose stream isn't LTS. It never installs, removes, or changes anything.ProjectVersion.txt -
and
unity statusnow show Multiplayer Play Mode virtual players, named by player (for example "Player 2") under the project they belong to. In JSON and NDJSON output, both commands addunity pipeline list,role, andinstanceName, andvpIdalso addsunity pipeline list.ownerProjectPath -
shows the release notes for a specific version, for example before you update with
unity changelog --target <version>.unity self-update --target -
now accepts
unity templates list --format json, which trims the output to the same name, display name, type, version, and status columns the table view already shows. Use it when all you need is a template id: the full JSON output can run into the hundreds of KB.--brief -
waits until a matching Editor reports
unity status --until-readyand then prints the usual status, so you don't have to poll it afterreadyor while an Editor enters Play mode. It also waits for an Editor that hasn't started yet, andunity open(default 300) sets how long it waits before it exits--timeout <seconds>with the last state it saw.6 -
installs Unity's Claude Code plugin, with its Unity skills, in one step: it adds the plugin's marketplace and installs the plugin through the
unity setup claudeCLI, and reports the plugin's version, whether it loads in this session or the next, and where its skills can be read right away. It's safe to re-run, since an existing install is reported rather than reinstalled.claude -
now shows whether Developer Data diagnostics is on: the project's build-default setting and the file it came from, any build profile overrides, and the cloud link.
unity projects infoincludes the sameunity projects createblock in its JSON and NDJSON result.diagnostics -
's JSON and NDJSON result now includes
unity build, the absolute path of the build output. It'soutputPathonly when you build withnulland no--execute-method, since your own build method decides where the output goes.--output-path -
now lists
unity vcs providers, the Unity Version Control client, with the same path, version, and statecmreports. Inside a Unity Version Control workspace with nounity plugin list --versionsinstalled, it suggestscm.unity plugin install uvcs -
The installers (and
install.sh) now end with a line for AI agents that names the command to start with:install.ps1, orUNITY_CLI_FTUE=1 unity auth status --jsonin PowerShell.$env:UNITY_CLI_FTUE=1; unity auth status --jsonalso prints plain text, without color codes, when its output isn't a terminal orinstall.shis set.NO_COLOR -
now asks which part of Unity the issue is in: the CLI itself, the Pipeline package (
unity bug) in the Editor, the Editor, or not sure. Until now a report said nothing about where the failure was, so an Editor or Pipeline package failure that happened to show up in CLI output was routed as a CLI bug.com.unity.pipeline -
now reaches Unity’s documentation platform as well as the Editor documentation:
unity docsfor the Unity CLI,--clifor the Unity Hub, and--hubfor Unity Cloud. Those pages aren’t versioned by editor, so they take no--cloud, and the four documentation selectors — including--editor-version— are mutually exclusive.--manual -
asks for that same tag listing explicitly, and composes with the other listing filters:
unity command --tagsshows the tags within one subtree,unity command --tags --tag runtimeshows which tags have prefab-ish commands in them. It renders in every output format — aunity command --tags --query prefab/tagtable undercount, one object per tag under--format tsv, and a--format ndjsonarray undertags.--format json -
now ends with runnable examples — how to list the tags, how to list one tag's commands, how to run a command, and how to run one with arguments.
unity command --helpis the entry point to the Editor's whole command surface, and the help had no worked example of invoking anything through it.unity command -
now points at
unity bug --help, a new way to add Unity’s Issue Tracker to an AI assistant so it can check for known issues before you file a report. It’s exactlyunity bug mcp, so it takes the same client argument and the sameunity mcp configure --server issue-tracker,--list,--local, and--yesflags.--dry-run -
now accepts a local template as well as a registry name: a path to a
unity projects create --templatearchive, or to a directory holding a.tgzwith apackage.jsonfield. The archive or directory is validated (the archive is checked as a readablenamestream, and a directory'starmust parse and declare apackage.json) before it's handed to the Editor, with a clear error naming what's wrong.name -
now shows what's changing: alongside the resolved version, it prints that version's release summary, and when the upgrade spans more than one published version, it shows every version in between too, oldest first, so a change in a version you're skipping past is never silently missed.
unity pipeline upgradeshows the same summaries when it moves an already-installed project to a newer version.unity pipeline install --force
-
-
Changed
-
no longer tells you to install the Pipeline package when you just did. If you install it while the project's Editor is already open, the Editor doesn't load it until its window regains focus.
unity status -
,
unity releases,unity projects list,unity context list,unity auth list,unity modules listandunity listnow end theirunity doctoroutput with a--format ndjsonline, as{"type":"result"}already does, so a script can tell a complete listing from a cut-off one. The rows before it are unchanged, and the last line'sunity editorsis the number of rows.data.count -
now signs the
unity assets exportit writes when the project uses Unity 6.6 or later, the same way the Editor's own Export Package window does. It signs for your organization: pass.unitypackage, set--cloud-org <id-or-name>, or rely on the default set withUNITY_CLOUD_ORG.unity cloud org set-default -
On Windows, a runtime that a plugin needs (for example the Python a tool uses) now installs underinstead of your roaming profile, so a domain roaming profile no longer copies it at every sign-in and sign-out. A runtime installed by an earlier version moves across the next time you install, upgrade, remove or run that plugin, and it keeps working until then.
%LOCALAPPDATA% -
with no command name now lists the Editor's command TAGS instead of every command it has. A connected Editor answers with around fifty tags and the number of commands under each, which fits on one screen;
unity commandthen lists that tag's commands, and the count on a tag's row is exactly how many that will be.unity command --tag <tag> -
A partialthat matches several installed patches now runs the newest one instead of refusing.
--editor-versionwith bothunity run --editor-version 6.6and6000.6.0f1installed used to be an error; naming a line is a reasonable way to ask for an editor, and the two candidates differed only by a patch you had already said you did not care about.6000.6.1f1 -
and
unity opennow print a success document underunity projects openand--format json, with the project path, the resolved Editor version and location, and the launched process id, instead of writing nothing on a healthy launch. If a script or agent relied on empty stdout to mean success, check--format ndjson(or the exit code) instead.success -
,
unity editorsandunity editors upgrade --checknow end theirunity templates listoutput with a--format ndjsonline, like every other ndjson command, so a script can tell a complete listing from a cut-off one. The rows before it are unchanged, and the last line's{"type":"result"}is the number of rows.data.count -
The CI workflowswrites now install the CLI with the plain
unity ci initcommand, without settinginstall.sh. Until a stable release ships, the installer gets the latest beta on its own.UNITY_CLI_CHANNEL=beta -
now downloads the running version's release notes instead of reading a copy built into the CLI, so corrected notes appear without an update. It needs a network connection.
unity changelog -
Version options that look up a release now acceptand a leading
latest, as inv:v1.0.0,unity self-update --target,unity changelog --target,unity plugin changelog --version, andunity hub install --hub-version.unity pipeline install --package-version -
now waits while the Editor is briefly unavailable, such as right after
unity command <name>or during a script reload, and runs the command once the Editor is ready, within the command'seditor_play. It only resends a command the Editor rejected without running it.--timeout -
now describes what the CLI can do: install an Editor, create a project without the GUI, drive a running Editor, play and capture the game, and build it. It used to just say “CLI for Unity”.
unity --help -
now says it never links to Unity Cloud, matching what it actually does.
unity projects new --helpstill asks, and links by default.unity projects create -
now checks whether a Claude Code plugin you have enabled already provides an MCP server that runs
unity mcp configure claude-codefor the same project. If one does, it warns and skips its ownunity mcpregistration unless you confirm or passclaude mcp add, so you don't end up with two copies of the same server.--yes -
now accepts
unity bug --area, for issues about licensing or signing in. On a terminal, "Licensing or signing in" now appears as a choice when the reporter answers the area question.licensing -
and
unity plugin install ugsnow install version 2.0.0 of the Unity Gaming Services CLI, whichunity plugin upgraderuns.unity ugs -
The CLI now uses Unity Licensing Client 1.19.0-rc.3. A client it downloaded under an earlier version is replaced the next time acommand or an Editor launch needs it.
unity license -
The first-run analytics consent prompt now uses its reviewed wording. It asks about sharing usage analytics, offers “Yes, share” and “No, don’t share”, and explains the anonymous usage count once, in a note above the choices.
-
-
Fixed
-
On macOS, the CLI no longer removes Unity Hub’s keychain access to your shared sign-in when it saves a refreshed token. It now updates the saved sign-in instead of re-creating it.
-
A path, version, or other value that contains a terminal control code such asor
ESC[?25lno longer leaves that code's text, such asESC[12~or[?25l, in the CLI's output; the whole code is removed.[12~ -
Using the CLI no longer removes the Hub’s saved sign-in. Before, the firstcommand after you signed in through the Hub could leave the Hub signed out at its next launch, or, on macOS, asking for keychain access again.
unity -
no longer crashes on a Linux machine with a provisioned auth broker. The report's
unity doctor --format jsonfield now shows the broker store's owning user id as a number, and staysauthBroker.storeOwnerUidwhen it can't be read.null -
no longer passes control characters from the values it reports straight to your terminal. In a path, an account name, an editor entry, a log line or a proxy setting, a tab, newline or carriage return now becomes a space and other control characters and terminal control sequences are removed, as the rest of the CLI's tables already do, so a value can't split a row into extra columns or add a row of its own.
unity doctor --format tsv -
On macOS and Linux, the Editor sign-in helper thatstarts, the auth broker, and the Unity Licensing Client no longer keep you from ejecting or unmounting the drive you ran
unity openfrom. They now run from the root directory instead of the folder you were in.unity -
On Linux, a browser thatopens, for example for
unity,unity auth loginor a WebGLunity docs, no longer keeps you from unmounting or ejecting the drive you ranunity build runfrom while it stays open. The browser opener now runs from the root directory instead of the folder you were in.unity -
Whenfails, its error is printed once. It used to appear twice: once under
unity command <name>and again as a plain❌ Command '<name>' failed:line just before theError:hints.For more details: -
A path, version, or other value that contains a truecolor color code written with colons (for example) no longer leaves that code's text, such as
ESC[38:2::255:0:0m, in the CLI's output; the whole code is removed, as the semicolon form already was.[38:2::255:0:0m -
now writes exactly one JSON document to stdout when it installs the editor, as
unity projects require --format jsondoes. It used to print install progress lines ahead of the result, so a script that parsed stdout as JSON failed.unity install --format json -
,
unity projects upgrade, andunity vcs git worktree add --install-editor,unity buildandunity runwithunity testno longer print install progress lines ahead of their--allow-installresult when they install an editor first. Any install warnings now appear in the result's--format json, andwarningskeeps its progress lines.--format ndjson -
A failedor
unity plugin installno longer deletes the plugin you already had. If the new version can't be put in place, the previous one is restored and keeps working, and a read-only checksum file left by an earlier install no longer makes an upgraded plugin look out of date.unity plugin upgrade -
On Windows,now reports when another program is holding the CLI's executable open, instead of saying the update was staged and then leaving the old version in place. It names the programs using the file when Windows can tell, and asks you to close them or restart your computer before running
unity self-updateagain.unity self-update -
now removes the Editor's truecolor styling from a task name in its progress bar and in the
unity commandprogress messages, including the colon-separated form some tools write. That form used to pass through, which could cut the bar's label short or color the rest of the line, and left escape bytes in the ndjson--format ndjson.msg -
now reports an Editor's argument error at once when the error's text happens to start with "Cannot connect to Unity Editor Pipeline server at". It used to read that answer as the Editor being unreachable and keep resending the command until
unity commandran out.--timeout -
and
unity recompilenow treat that same kind of Editor argument error as an answer, not a lost connection.unity mcpexits with 6 (command failed) instead of 7 (network unreachable), andunity recompilereturns the error at once instead of dropping its connection, waiting out a status poll, or sending a desktop screenshot in place of a failed capture.unity mcp -
and
unity installnow wait while the Unity Hub or anotherunity install-modulescommand is installing on the same machine, instead of failing. The CLI prints “Waiting for another install to finish before continuing…” once, then continues on its own when the other install finishes, so two installers never write into one editor at the same time.unity -
A project command that changes your project list no longer replaces it when the list can't be read. The Unity CLI and Unity Hub share the project list, and a failed read (for example, a permission error, or Unity Hub holding the file) used to leave the CLI with an empty list, so adding, removing or pinning a project saved only that one change over every project you had.
-
A setting change no longer wipes your other settings when the shared settings file can't be read. The Unity CLI and Unity Hub share one settings file, and a failed read (for example, a permission error or another program holding the file) used to replace every setting in it, Unity Hub's included, with the one you were changing.
-
A file the Unity CLI shares with Unity Hub is no longer wiped when it can't be read or lists the same name twice, including your settings, located Editors, hidden Editor folders, paused downloads, proxy settings, project defaults, and template settings. The change is refused with an error that says why, or skipped with a warning when the rest of the command already finished, and the file stays as it was.
-
fits its table to the terminal. A long path used to push every row past the terminal edge, so rows wrapped and blank lines appeared between them.
unity plugin list -
and
unity plugin upgradeno longer show internal notes in the one-line summary for the Unity Licensing Client, Unity Gaming Services CLI, Unity Version Control, and Pipeline package entries. The summaries now describe each version in plain language.unity plugin changelog -
now accepts a name written only in a non-Latin script, such as Japanese or Cyrillic, instead of rejecting it for having no usable characters. The template is stored under a generated ASCII id, and
unity templates create --namestays what the template shows.--display-name -
On macOS,,
unity modules list,unity editor module list, andunity install-modulesnow show download and install sizes in the same units as the Hub and Finder, where 1 GB is 1,000,000,000 bytes. They used to divide by 1024, so Android Build Support read 2.36 GB in the CLI and 2.53 GB in the Hub.unity install --dry-run -
Thearray now reaches the
notificationsoutput of every command, matching--format json. Many commands, including the--format ndjson,vcs,plugin, and mostassetscommands, left it out of their JSON.projects -
A sign-in that actually succeeded is no longer reported as. After writing your credential, the CLI reads it straight back to confirm it was really stored — a check that exists because some keyrings report a successful write and keep nothing.
KEYRING_WRITE_FAILED -
now always reports the auth broker, on every platform. The section used to appear only on Linux, or on a machine that already had a sealed credential store — so on Windows and macOS a healthy broker, a broker that was refusing this program, and a broken build all produced the same report: no section at all.
unity doctor -
no longer fails with
unity projects link cloudon a project whose Unity Cloud link was removed fromALREADY_LINKEDbut is still recorded in the Unity Hub project list, for example after unlinking the project in the Editor. The project now links, and both places get the new link.ProjectSettings/ProjectSettings.asset -
A download that gets cut off partway through now resumes instead of restarting from scratch. Before this fix, a connection dropping mid-download deleted the partial file and failed the whole operation, even though the file could have been resumed.
-
no longer waits forever when the Unity release service accepts the connection and then stops responding. Each request now times out after 10 seconds, so the command succeeds or fails within about half a minute.
unity releases -
,
unity projects create --cloudandunity projects link cloudno longer report a Unity Cloud link that wasn’t saved. When the project’sunity projects link vcs --vcs uvcscan’t be updated (for example because it doesn’t exist yet, or has no Unity Cloud fields to update), the Editor andProjectSettings/ProjectSettings.assetsee no link, yet the command used to say it linked.unity projects info -
on a case-sensitive volume no longer records a project whose path differs from an already registered project only by letter case as if it were that project. It used to copy the registered project’s path into the new registry row, so the next
unity projects addcommand that loaded the registry folded the two rows together and deleted one.projects -
On Windows,,
unity self-update, andunity self-update --rollbacknow complete while otherunity self-installprocesses are running, such as an MCP server started by an AI client or aunitysession. Before, the update reported itself as staged and then silently kept the old version until every otherunity shellprocess had exited.unity -
A mistyped command no longer reports success when you add.
--helpprinted the top-level help and exited 0 — output byte-identical to a bareunity project --help, so the token you typed left no trace at all — whileunity --helpon its own already printedunity projectand exited 2.unknown command 'project' (Did you mean 'projects'?) -
If you interruptwhile it waits for you to sign in in the browser, it now always exits
unity auth loginfor Ctrl-C and130for SIGTERM. If the signal arrived while the CLI was checking whether you'd finished signing in, it used to print143and exitSign-in failed: canceled.3 -
,
unity run,unity build runandunity testnow exitunity assets importwhen you stop them with Ctrl-C and130on SIGTERM. A plain143(withoutunity run),--commandandunity testalso stop the Editor they started, so a CI timeout that kills only the CLI no longer leaves that Editor running and holding the project, and an interruptedunity assets importrun starts no further attempt.unity test --retries -
The "multiple editors found" error now names the ambiguity it actually hit. Passing a partial—
--editor-versionwith both6.6and6000.6.0f1installed — matched two editors and told you to6000.6.1f1, which cannot work: those two candidates share an architecture, so the suggested flag had nothing to choose between and the only way forward was guessing that the full version would help.Pass --architecture to disambiguate -
now records what each run did, instead of repeating the same block of startup lines on every run. Those lines are now written only to
logs/cli-log.json, and the ones describing things the CLI never checked or did, such as a first-time-user check that always reporteddebug-log.json, are removed.firstTimeUser: true -
On Linux,and
unity uninstallno longer hide an editor version from your desktop's application menu when another install of that version remains, such as the other architecture. The menu entry now points at the remaining install.unity editors prune --remove -
now shows the time each record was written, instead of the time you ran the command.
unity logs -
If a command that runs in the Unity Editor fails with an error that mentions a refused connection, for example a web request inside the command, the CLI now shows the Editor's error. It used to report that it couldn't connect to the Editor and drop the Editor's message.
-
and
unity recompilenow also show the Editor's error when it mentions a reset or timed-out connection, or a server the command couldn't connect to, instead of treating the Editor as unreachable.unity mcp -
's
unity mcpandcapture_game_viewnow fall back to a desktop screenshot when the Editor doesn't answer in time, as they already did when a dialog blocked the Editor.capture_scene_viewnow exits with code 7 instead of 6 when the Editor drops its recompile request or doesn't answer it in time, so a CI step can retry it.unity recompile -
no longer reports multiple candidate Editors for a project running Multiplayer Play Mode virtual players. It picks the main Editor; pass a clone's folder to
unity commandto target the clone.--project-path -
On a machine where the auth broker protects your sign-in with a local key file, because no TPM, DPAPI, keyring, or Keychain is available, two first-time sign-ins running at once on a busy machine no longer fail to save your session. A first sign-in interrupted by a full disk also no longer leaves behind an empty key file that stops every later sign-in from being saved.
-
On macOS, and on Linux machines with no machine ID, the auth broker no longer loses your first saved sign-in when twocommands run at once. Before, the next command could ask you to sign in again.
unity -
On Windows, when a program runsand captures its output, the capture no longer waits for the auth broker to exit. The broker could inherit a copy of the output pipe from that program and hold it open until it went idle, two minutes after the last command.
unity -
On Windows, the background identity server thatstarts now keeps accepting connections while it checks a new one, so requests to it no longer time out and get dropped.
unity opennow reliably lets it exit early once no Editor is using it, and a secondunity closereliably switches it to the new environment.unity open --cloudEnvironment -
On Windows, the background identity server thatstarts now refuses a connection made through the network redirector (a
unity openconnection, as opposed to a direct local one), and grants access to its pipe only to the account that started it. Before, that network path reached the identity server exactly the way a genuinely local Editor does, and any other account on the machine could open the pipe directly.\\localhost\pipe\... -
On Windows, the auth broker now keeps accepting connections while it checks a new one. Before, a command that reached it during that check could conclude that no broker was running, so, and the Hub when it installs the CLI, could fail to replace the binary the broker runs from with "Access to the path is denied".
unity self-update -
On Windows,, and the Hub when it installs the CLI, now also reach an auth broker that has only just started. Before, a broker still starting up could look as if none was running, so replacing the binary it runs from could fail with "Access to the path is denied".
unity self-update -
On Windows, capturing the output ofno longer waits until five minutes after the Editor closes, and capturing
unity openno longer waits for the player to close. Aunity build runcommand that starts the Unity Licensing Client no longer waits for the client to exit.unity license -
On macOS and Linux, acommand whose output is captured or piped no longer keeps its reader waiting after it finishes when the caller handed it an extra open descriptor, such as a shell’s
unity. The Editor, the Unity Licensing Client, and the background processes the CLI starts no longer receive that descriptor.3>&1 -
On Windows, saving a setting, for example with, no longer fails with "Access to the path is denied" when another program, such as the Hub, has the settings file open at the same moment.
unity config set -
A failed command's entry inis now short and readable: it names the command, the error code, and the error message once, instead of repeating the message five times. When there's more to the failure than the message, such as the connection error behind "Unable to reach the Unity release service", the entry adds it as the cause.
cli-log.json -
now records a failure as a warning when it's your mistake or a setup problem, and as an error only when it could be a problem in the CLI itself. A mistyped
cli-log.jsonname, a missing parameter, an Editor version that isn't installed, and a signed-out session are now warnings wherever they happen.unity command -
no longer picks a release Unity marked Supported just because its version number looks like an LTS one. It installs the newest release Unity marks LTS.
unity install lts -
no longer waits forever. If stdin is a terminal, it now stops right away and asks you to pipe the secret in.
unity auth login --secret-from-stdin -
On Windows, the CLI stores your sign-in as a single Credential Manager entry shared with Unity Hub, which prevents occasional sign-outs when both refresh your session at the same time. An older multi-entry record converts on your next session refresh.
-
Inand other windows run by the classic Windows console, the CLI no longer prints raw escape codes such as
cmd.exeinstead of colors. This affected the release notes and the update prompt in←[36m, and could affect any colored output.unity self-update -
On macOS and Linux, pressing Ctrl-C during acommand no longer also stops the Unity Licensing Client that command started. The client keeps running for the Editor and for later commands, as it does when the command finishes on its own.
unity license -
On Windows,and
unity self-updatecan now replace the CLI while its background auth broker, or the identity serverunity self-installstarts, is still running. They move the running copy aside and put the new one in its place without waiting for those processes to exit, andunity openreports success only after the new version is in place.unity self-update -
Installing an Editor or module no longer fails a size check on an installer that downloaded correctly. The release catalog lists each download’s size rounded down to a whole kilobyte, so a file whose real size wasn’t a multiple of 1,024 bytes was rejected.
-
September 22, 2026
1.0.0-beta.11
-
Security
-
now redacts the log files it collects before uploading them, masking home-directory paths, user names, tokens, and email addresses. Files you add with
unity bugare uploaded as-is.--attachments -
On Linux, extracting amodule no longer writes through an existing symlink, so an archive can't place files outside the install folder.
.pkg -
On Linux, the hardened auth-broker tier now refuses to start when its token store or polkit policy is misconfigured, instead of serving tokens without the isolation it depends on.
-
-
Added
-
checks that your scripts compile in a running Editor, without a full build. It lists each compiler error with its file and line, and exits 0 on success, 6 on compile errors, or 7 when no Editor responds.
unity recompile -
opens the Unity documentation for a class or topic, matched to your project's Unity version. Use
unity docs <topic>for the Manual instead of the Scripting API,--manualfor search results,--searchto print the address, or--urlto choose a version.--editor-version -
imports a
unity assets import <file.unitypackage>into a project. It checks the package and the project before starting the Editor, and prints the Editor's error summary when the import fails..unitypackage -
exports assets and folders to a
unity assets export <asset-path...> --output <file.unitypackage>. Dependencies are included unless you pass.unitypackage.--no-dependencies -
creates a Unity Cloud organization. Pass
unity cloud org create <name>or pick one when prompted, and add--industryto switch to the new organization.--set-default -
and
unity pipeline cloud-buildlist and inspect Unity Build Automation targets and builds, and Unity Pipeline Automation apps, pipelines, and jobs. These commands are read-only and mask secret values in their output.unity pipeline automation -
adds the Unity Issue Tracker MCP server to your AI client. Clients that can't use a remote server are skipped with a warning.
unity mcp configure --server issue-tracker -
writes the Editor log to a file, including with
unity run --log-file <path>, and streams it to the console like--command. Addunity buildto write the file only.--no-tail -
now reports registered editors whose install folder is gone, and
unity editors pruneremoves them from your editor list.--remove-missing -
and
install.shnow install the latest beta when you don't choose a release channel, until the CLI has a stable release.install.ps1
-
-
Changed
- Opt-in analytics and the anonymous usage count now record your project's Unity version, and opt-in analytics also record the editor version a command used. The anonymous usage count also notes whether the CLI ran from a terminal, an automated agent, or CI, and still carries no account, machine identifier, or file path.
-
Fixed
-
When the Editor offers a matching status command for a job, such asfor
build_status,buildnow says the job's command was dispatched and names that status command. It no longer reports success while the real work is still running.unity job wait -
now serves compressed WebGL builds with the correct headers, so they load in the browser. For browsers that don't accept the compression over plain HTTP, such as Firefox, it decompresses files as it serves them.
unity build run -
Usage errors, such as an unknown option or a missing value, now followand
--format jsonand return the standard result envelope with the--format ndjsoncode. The exit code is still 2.INVALID_COMMAND_ARGS -
no longer leaves Unity Connect half-configured in a project linked to Unity Cloud. This caused "Unity Connect configuration is invalid" errors, an Asset Store "Open in Browser" button that did nothing, and high Editor CPU use.
unity open -
On Windows, whencan't delete the editor folder, it now names the folder and tells you to close the Editor and check your permissions, instead of reporting an invalid uninstaller. JSON output uses the new
unity uninstallerror code, and read-only files no longer block removal.UNINSTALL_REMOVAL_FAILED -
On Windows,no longer fails with "Unable to schedule the update helper (exit status 3)" when the folder you ran it from is deleted, renamed, or unmounted before the update completes.
unity self-update -
Runningthrough
install.ps1no longer closes your PowerShell window when the install fails.irm <url> | iex -
now works on machines without
install.sh, including stock macOS. It also reports a clear error when the release manifest is damaged, such as when a captive portal or proxy replaces it.jq -
On Linux, module installs no longer fail with a checksum mismatch caused by incorrect checksums in Unity's release data. Until that data is fixed, Linux module downloads skip checksum verification, as Unity Hub does.
-
Network requests, including those through a proxy, no longer fail with "address incompatible with the selected protocol" when a host has several addresses or a local proxy listens only on IPv6 ().
[::1] -
On Windows, when a proxy auto-config (PAC) result lists a proxy per scheme, such as, each request now uses the proxy for its own scheme.
http=proxy1:8080;https=proxy2:8443 -
and
unity pipeline installno longer crash whenunity pipeline upgradelistsPackages/manifest.jsonmore than once.com.unity.pipeline -
commands that change your project list now use the same database engine as Unity Hub. This fixes a rare write conflict on Linux, and a spurious lock error when the CLI and the Hub create the list at the same time.
unity projects -
no longer gets corrupted lines when two
cli-log.jsoncommands write to it at the same time.unity -
now lists custom templates in the same order as Unity Hub.
unity templates list -
and the Pipeline connection error now recognize an OpenAI Codex sandbox on Windows, as they already did on macOS.
unity status
-
September 14, 2026
1.0.0-beta.10
Security and privacy
- no longer follows a symlinked path component when it writes a client's config file. A
unity mcp configurewrite, as well as writes for VS Code and VS Code Insiders, whose configs are always project-local, now refuses a symlink at any path component instead of silently following it. Every client config write, both local and global, is now atomic.--local - On macOS, the CLI no longer re-signs a downloaded plugin or component whose code signature fails to verify, except for Unity Version Control's client, which the CLI now logs when it falls back. Any other component that fails verification now fails its download instead of running under an anonymous signature.
cm - On Linux, and
.debinstalls of the hardened auth-broker tier now enforce it. Every token grant against the hardened tier requires real polkit consent before the isolated credential store is accessed, and the CLI now connects to the hardened tier's socket automatically after provisioning..rpm - no longer prints your entire MCP config file, including other servers' credentials. It now previews only the entry it adds or changes.
unity mcp configure <client> --dry-run - no longer risks corrupting
unity mcp configure codexwhen it updates the Unity MCP server entry. It now refuses the update and asks you to edit the file manually when it can't verify that the match is safe. It also recognizes a quoted table name instead of duplicating it.config.toml - no longer risks corrupting the sandbox and network-proxy settings it relaxes for Codex. It refuses the entire update and asks you to edit the file manually when it can't verify that the match is safe.
unity mcp configure codex - The resident auth broker now signs every refresh-token request with a DPoP proof bound to an in-memory key. It correctly handles the server's nonce challenge and retry. Sign-in, token requests, and existing sessions are unaffected.
- The auth broker's DPoP signing key is now hardware-backed when the machine supports it: the TPM on Windows, the Secure Enclave on macOS, and TPM2 through on Linux. When no hardware-backed key is available, it falls back to the same in-memory key as before.
tpm2-tools - no longer lets a project directory choose which program answers its credential lookup. The project's recorded Git identity is now read as inert data and reapplied through a lookup that always runs from a neutral directory. A repo-local
unity projects link vcscan no longer substitute its own credential.credential.helper - The auth broker's token store is now sealed to the machine's hardware on every real sign-in: a non-exportable TPM key on Windows, TPM2 through on Linux, followed by DPAPI, the Secret Service, the Keychain, and a local key file as fallbacks. Earlier releases prepared this sealing, but the live broker still wrote to the plain OS keyring. Copying the store to another machine no longer yields a usable credential, and
systemd-credsreports the active tier.unity doctor - The auth broker now protects itself against memory dumps as soon as it starts. It refuses and disables core dumps on Linux, disables core dumps on macOS, and suppresses the crash dialog on Windows. It also holds credential material in locked, zeroize-on-release memory instead of an ordinary string.
ptrace - now reflects actual broker activity. Every token grant and refusal that reaches the broker's token-vending path is recorded in the audit trail that this command reads.
unity auth consumersstill only affects the revocation list; it does not yet stop that application from receiving a new token.unity auth revoke - Every command's OAuth token read now goes through the resident auth broker instead of directly through the OS credential store. A command that needs a token starts the broker on demand if it isn't already running. The broker can remain idle in the background for up to two minutes before it exits. Set to restore the previous direct-keyring behavior.
UNITY_NO_AUTH_BROKER - The resident daemon that handles Editor sign-in requests and the auth broker now verify a connecting peer's code signature by default on macOS and Windows. They refuse an unsigned or non-Unity-signed local process. The previous logging-only behavior is no longer documented because it weakened the peer code-signature check. Linux continues to log only by default.
- When Unity Hub and the CLI are both signed in to the same account, their credentials now converge automatically without an additional sign-in prompt.
Installs and updates
- now downloads through the CLI's regular download engine instead of a one-shot fetch. An interrupted download resumes from where it left off the next time you run
unity self-updateinstead of starting over.unity self-update - now prefers a Brotli-compressed download when the release provides one. The CLI verifies the compressed bytes against their own checksum, then verifies the decompressed binary again as before. A platform without a compressed artifact yet, falls back to the raw download.
unity self-update
AI and Editor integration
- A mistyped command or flag now points you to for a task-oriented CLI guide when no "Did you mean" suggestion appears. This applies to top-level commands and mistyped subcommands.
unity skill show - now also installs agent skills shipped with an installed plugin, alongside the CLI's own skill.
unity skill installre-renders them from the plugin's current copy.unity skill refreshandunity plugin installpoint you tounity plugin upgradewhen the installed copy ships with a skill.unity skill install - and
unity command <name>no longer refuse a bare, argument-free invocation against an Editor whose Unity Pipeline package predates command-line binding. An invocation with arguments still refuses with the same message as before.unity run --command <name> - prints only the Editor's own result value, without the CLI's
unity command <name> --result-only,command,parameters,target,success, anderrorsenvelope fields. The option implies JSON output on its own and cannot be combined withwarnings.--detach - The and
capture_game_viewtools incapture_scene_viewnow fall back to an OS-level screenshot of the entire desktop when the Editor's main thread does not respond in time, such as during a blocking dialog. The fallback captures the entire screen rather than the specific view and states this in an accompanying note.unity mcp
Automation and CI
- emits a machine-readable manifest of every command, subcommand, argument, and option. This lets agents and tooling discover the CLI surface without parsing
unity commands --format json.--helpalone prints a compact grouped listing.unity commands - re-runs
unity watch testevery time a project file changes. A debounce combines a burst of changes into a single run.unity test --affected,Library/,Temp/,Logs/, andBuild/are ignored by default. Useobj/to add more patterns. The command refuses to start under--ignore <pattern>or in a detected CI environment.--non-interactive - A committed now declares
ProjectSettings/UnityCliConfig.jsonandunity builddefaults for a project, including the target, output path, profile, timeout, test mode, report format, coverage, and more. This avoids repeating them in every invocation and CI workflow.unity testprints the resolved value and the layer that supplied it: flag, environment variable, this file, global config, or the CLI default.unity config resolve <key> [project]
Build automation
- creates a Unity 6+ Build Profile asset for a target platform and exits without building. This requires Unity 6000.0 or later, the same as
unity build --create-profile <target>.--profile - Unity Accelerator support is now available. persists an endpoint. A bare host defaults to port
unity config accelerator <host:port>.10080,unity run, andunity testinject the cache-server flags automatically.unity buildand--accelerator <host:port>override or suppress the setting for an individual invocation.--no-acceleratortakes precedence over the persisted setting but is overridden by the command-line flags.UNITY_ACCELERATORreports the resolved endpoint and whether it responds.unity diagnose acceleratorandunity doctornow include a non-blocking Accelerator check.unity doctor --ci - lists every valid
unity build --list-targetsvalue and exits. It identifies each target as zero-code or as requiring--targetor a Build Profile through--execute-method. It supports--profile,--format human,--format tsv, and--format json.--format ndjson - lists a project's Build Profile assets and exits. Use it to discover platforms such as Meta Quest that build only through
unity build --list-profiles.--profilenow directs you toBUILD_INVALID_TARGETwhen you specify a target outside the classic catalog.--profile - launches the project's most recent recorded build without rebuilding. A successful
unity build runwith a known output path now records the path, target, architecture, and Editor version. Anunity buildbuild without--execute-methodrecords nothing and keeps the previous record, so launch it with--output-pathinstead. A desktop player launches natively. A WebGL build is served from a local, loopback-only HTTP server and opens in your default browser.--path <path>
CLI behavior
- and
unity commandnow renderunity cmd,recompile,recompile_status, andtest_statusresults as short, readable text in the default Result column instead of a compact JSON blob. Other Result cells andrun_tests,--format json, and--format ndjsonoutput remain unchanged.--format human - now starts faster by skipping work it does not need for that invocation, such as display-language detection.
unity command --project-path <path>
Project management
- saves and applies named bundles of your account, default organization, default cloud project, default Editor, and install path.
unity contextrecords the current set,unity context save <name>applies one, andunity context use <name>andunity context listshow what exists and what is active. Applying a context is all-or-nothing. Switching to a context clears any of the five settings it does not pin, except the account.unity context current - , as well as
unity open --waitandunity projects open --wait, blocks until the launched Editor exits and reports its actual outcome. It exits withunity projects upgrade --waiton failure or6on a clean exit. This option is currently available only on macOS and Linux. Windows refuses it with exit code0instead of silently falling back to the previous bounded watch.2 - ,
unity open, andunity projects opennow report when the launched Editor was killed by a signal instead of reporting success, both during the ordinary bounded watch and withunity projects upgrade.--wait - lists the contents of a
unity assets inspect <file.unitypackage>, including the asset path, GUID, size, and whether a preview image is bundled. It does not import the package and does not require an installed Editor or an open project. It streams the archive, so it uses constant memory even for multi-gigabyte packages..unitypackage
Source control
- reports who last changed each GameObject and component in a Unity asset, along with the commit, author, and date. Use
unity vcs blame <scene|prefab>to narrow the result to one object,--object <name>to narrow it to one serialized field,--field <name>to blame as of another revision, and--at <ref>to limit how far back the command searches.--max-revisions <n>
Licensing
- now reports
unity license status, the licensing server configured for the machine, andfloatingServer, the identity that the licensing client reports to it. Use these values to match a lease record when a floating seat appears stuck. Both values appear inmachineIdand--format jsonoutput, and in human-readable and--format ndjsonoutput only when a floating server is configured.tsv
Issues fixed
- On Windows on Arm, no longer misreports a working Git installation as missing or broken.
unityandunity doctorare fixed by the same change.unity vcs providers - A signed-in user is no longer reported as signed out solely because the resident auth broker rejects the connection under peer-authentication enforcement. The CLI now falls back to the locally stored session instead of treating the rejection as a sign-out.
- The CLI no longer reports that no Unity Editor is reachable when it runs inside WSL and the Editor runs on the Windows host. now confirms the exit over the same channel instead of signaling a process ID that could belong to another process.
unity projects closenow identifies the WSL networking setting to change when the port does not respond.unity status - A running Editor whose project layout hides the Unity Pipeline package, such as a Multiplayer Play Mode virtual player's partial clone or a folder reached through a symlink or permissions issue, is no longer reported as unreachable or missing by
Packagesorunity status.unity pipeline list - Concurrent writes to the shared no longer drop each other's changes. Settings writes now take a short cross-process lock on the file.
user-settings.json - The CLI no longer mistakes an unrelated process for a running Unity Editor or Player when a stale connection descriptor names a recycled process ID. Discovery now also compares the process start time with the descriptor's timestamp.
- Commands that communicate with a running Unity Editor, including ,
unity command, andunity job, now identify an AI coding agent's sandbox as a possible cause of a connection refusal, alongside the original "make sure Unity Editor is running" message.unity list - Sign-in failures where the OS keyring accepts a write but does not retain it are now logged and diagnosable, with a message that distinguishes them from an outright write failure.
- The CLI's Editor identity daemon no longer deletes a Hub socket file when it stops on macOS and Linux.
- Commands that communicate with a running Editor over loopback, including ,
unity command, andunity status, no longer resolve the OS proxy configuration up front. They resolve it only when a command first needs it.unity job - no longer reports "no instances" when a Pipeline discovery file exists but the current process cannot read it, such as when a sandboxed AI agent tool runs the CLI as a separate account. It now identifies the actual cause and specifically identifies a sandboxed agent when detected.
unity status - and
unity templates packon Windows now also check for a Windows byte-range lock on a project'sunity templates createcache before copying it, alongside the existing Linux protection.Library - and
unity self-updateon Windows now ask a resident Editor identity server daemon to release the binary before replacing it, just as they already ask the resident auth broker.unity self-installandunity closenow also check with the daemon immediately after closing an Editor instead of waiting through its full idle window.unity projects close - no longer leaves an agent session with zero Unity tools for its entire lifetime when the client connects before an Editor starts. The server now declares support for tool-list change notifications and notifies the client when the catalog changes.
unity mcp - 's credential-store check now exercises the Windows Credential Manager chunking path that real sign-in tokens use instead of testing only a small value.
unity doctor - A chunked credential write that the OS credential store accepts but does not persist no longer leaves stale entries or destroys the previous sign-in. The CLI now verifies the write by reading it back, rolls it back on failure, and automatically cleans up entries left by an earlier version.
- no longer fails with an
unity installdatabase error when the shared install-state database was created by an older Unity Hub or CLI. The CLI now applies the same schema update as Unity Hub.INSTALL_FAILED - A declined or blocked Windows elevation prompt no longer generates a crash report. The same applies to an incorrect installer or uninstaller format, an unsafe install path, or an install location that you cannot write to. These and similar states also no longer suggest .
unity bug - no longer reports a Unity Editor as
unity statuswhile it is still starting. It now probes the Editor's main thread directly and reportsreadyinstead in human-readable,starting,--format json, and--format ndjsonoutput, with a matching exit code.--format tsv - no longer reports a confusing "results ... could not be converted to JUnit" message when the Editor exits cleanly without writing a new results file. It now distinguishes a narrowed run that matched nothing, using
unity test,--filter,--shard, or--rerun-failed, from a genuine problem and always fails the run instead of risking a false pass.--affected - no longer bundles an entire Unity project into the report. The shared copy is now limited to 1,000 files and warns when the limit truncates the copy.
unity bug --share-project - Crash reports no longer contain invisible marker characters that the CLI uses to style command hints in the terminal.
- ,
unity vcs uvcs review list,comments, andreplynow work when you are signed in. Previously, all four commands failed with a sign-in error even immediately after sign-in because they did not exchange your credential for the short-lived token required by the review service.resolve - Commands that access Unity Cloud no longer fail spuriously the first time you run one after your sign-in has been idle. A renewed credential is now used within the same run. This affected ,
unity cloud project list,unity projects create, and other commands.unity projects link vcs - ,
unity install, andunity install-modulesno longer try to install a bundled Visual Studio module when a compatible version is already installed. The CLI now checks the actual installation state on Windows and macOS and reports Visual Studio as not installed on Linux.unity editor module add - no longer misreports Unity's own third-party-agent plugin as
unity command --caller plugin.other - Concurrent installs can no longer bypass the single-install lock while an earlier install is still finishing. The CLI now reclaims a lock only when its holder's heartbeat is stale and its process has exited. The check and claim now occur in a single transaction.
- now also relaxes Codex's sandbox network policy, not only the MCP server entry. This allows
unity mcp configure codexand directunity mcpcalls from Codex's shell tool to reach the Editor through localhost.unity command - ,
unity status, andunity editors runningno longer report a healthy Unity Editor as unreachable immediately after recompilation. Each command now retries once with a refreshed token before it reports the Editor as unreachable.unity command - On Windows, and
unity self-installno longer fail or silently defer to a background swap that cannot complete when a resident background helper holds the installed binary open. Both commands now ask the helper to release the binary first.unity self-update - Several internal helper processes, such as the Windows installer helpers and the WSL path translator, no longer hang when the spawned tool writes heavily to both stdout and stderr at the same time.
- no longer reports "No editor version matched" on an Apple Silicon Mac that supports Rosetta 2. The install catalog now offers
unity install <version> -a x86_64on Apple Silicon through macOS 27.x86_64 - ,
unity plugin install, andunity plugin upgradeno longer race with each other, Unity Hub's background module updates, or the native Hub licensing-client install into deleting a build that another process just finished installing. A lock left by a crashed process is now reclaimed automatically.unity plugin remove - and
unity projects link vcsnow record a per-project Git identity that remains effective even when an organization-wide credential pin exists, by also saving a URL-scoped form that Git ranks ahead of the organization-wide credential.unity projects create --vcs … - no longer sends a crash report or suggests running
unity statuswhen every discovered Unity Editor instance is unreachable.unity bug - now points you to
unity license activatewhen a sign-in or session failure occurs on a macOS machine that has already signed in. The message identifies a possibly locked keychain instead of only telling you to sign in again.unity doctor - Commands that automatically discover an Editor without , including
--project-pathandunity command, no longer report "No Unity Editor instances found" when a healthy Editor has a Unity Pipeline package that is too old to parse the command line. They now report the specific error thatunity run --commandalready reports.--project-path - On Windows, the CLI no longer crashes with when an HTTP response is corrupt or its embedded translation bundle cannot be decoded. Both cases now use the CLI's normal error handling.
Decoder ran into invalid data - ,
unity open, andunity projects openno longer launch the Editor inheriting the CLI's working directory, which could crash the Editor if that directory became unreadable. The Editor now always launches from the OS temporary directory and falls back to the previous behavior if that directory is unusable.unity projects upgrade - can now recover an interrupted module download, such as an SDK component, in addition to an interrupted Editor installer.
unity install --resume - on Windows can now target a directory other than
unity self-installby setting%LOCALAPPDATA%\Unity, matching macOS and Linux.UNITY_CLI_HOMEhonors the same variable.install.ps1 - The long-lived Editor identity daemon started by no longer stops reporting a signed-in Editor after its auth broker restarts or exits after remaining idle. It now detects a stale broker connection and reconnects automatically.
unity open - A signed-in user is no longer told to sign in again when the auth broker has a temporary problem reading the access token, such as during a broker restart. Only an authoritative refusal now reports a sign-in or session-expired message. Other issues ask you to try again while leaving your session unchanged.
- A signed-in Mac user is no longer told to sign in again when the macOS Keychain refuses to read an existing credential, such as after Unity Hub signed in first. The session now reports as unresolved and points you to instead of the generic sign-in prompt.
unity doctor - On macOS, a future CLI update can no longer trigger an unexpected Keychain prompt or a forced re-sign-in because the identifier the CLI uses for Keychain access control is now fixed.
- and other project-registry reads no longer fall back to a stale or empty backup copy of the registry just because another process closed the shared project database last.
unity projects list - The Linux and
.debpackages now install the hardened auth-broker tier's assets: the.rpmsystemd units, theunity-auth-brokersystem account, and the polkit consent policy. These assets existed in the package for months but were not referenced.unity-broker - no longer prints two separate
unity command <name> --format jsonfields. The envelope now contains exactly onesuccessfield, derived from the same check the CLI uses to determine whether the command fails.success - now shows the equivalent invocation for a Windows path operand instead of reporting that no shell quoting reproduces the run, for almost every real Windows run.
unity vcs setup - Git-owned files that the CLI rewrites directly, including ,
.git/config, and.git/packed-refsduring.git/HEADandunity projects link vcs, no longer race with a concurrentunlink vcs,git fetch, or another CLI invocation that accesses the same file. Each write now takes the file's own lock and commits through an atomic rename.git gc - now retries a failed Editor or module download instead of failing the entire install after the first transient network error. It uses the same bounded retry policy as
unity install, controlled byunity install-modules.UNITY_INSTALL_RETRIES - no longer writes an entry to
unity mcp configure continue, which Continue no longer reads. It now prints setup instructions for~/.continue/config.jsoninstead.~/.continue/config.yaml
September 08, 2026
1.0.0-beta.9
-
Installs and updates
- and
unity installnow useunity install-modules/--child-modules, which matches--no-child-modules. The previous camelCase options (unity editor module add/--childModules) and the--no-childModules/--cmshorthand continue to work.--no-cm - is now
unity install --list-components, which matches theunity install --list-modules/-mterminology. The previous name remains available as a hidden alias.--module - and
unity modules listnow label their last columnunity install --list-modulesinstead of the downloader name. TheAliasesfield also changes from--format jsontodownloaderName.aliases - The CLI now warns you when both a self-installed and a Homebrew-managed version appear on your
unity. In this state,PATHcontinues to resolve to the self-installed copy, whilewhich unityupdates the Homebrew copy, so the versions can diverge. The background update check now directs you tobrew upgradeto remove the self-installed copy and let Homebrew manage updates.unity self-uninstall -y
-
AI and Editor integration
- now prints the CLI's agent skill to standard output without installing anything, so you can read the skill without changing the filesystem. Use
unity skill showto print a reference file,--path <file>to list all files in the skill, or--listto return each file's content with its index.--format json - now mentions the agent skill on its last line and directs you to
unity --helpandunity skill show.unity skill install <client>
-
Automation and CI
- now compares the installed version directly with the plugin registry instead of estimating staleness from a checksum. If your installed version is newer than any version the registry currently admits, the CLI reports that state separately instead of reporting an indeterminate result. If the installed version has since been yanked,
unity plugin upgradedowngrades to the newest non-yanked version and explains why.upgrade - now displays a managed tool's release notes, rendered from Markdown and paged like
unity plugin changelog <id>. Useunity changelogto display notes for a specific version, or--version <version>to display the full notes before the upgrade.plugin upgrade --changelog - A global flag now controls colored output directly. Use
--color <auto|always|never>as shorthand for--no-color. The flag affects only human-readable output and no longer relies only on the--color neverandNO_COLORenvironment variables.FORCE_COLOR - is a new command that displays the CLI version, release channel, commit, platform, architecture, and runtime in any output format.
unity versionalso honors--version. A bare--formatcontinues to print only the version string.unity --version - now lists the CLI's bundled third-party components with their versions and SPDX license identifiers, along with the .NET runtime.
unity doctor - A generic interface now provides access to the CLI's existing settings:
unity config get|set|list|unset <key>,proxy,proxy.bypass, andaccelerator. You can read and write these settings by key as well as through their existing subcommands. When you read back a proxy URL with embedded credentials, the CLI redacts the credentials.update-check
-
Security and privacy
- The auth broker now seals its token store to the machine it was written on. On Windows, it uses the TPM and falls back to DPAPI. On Linux, it uses TPM2 through and falls back to the Secret Service keyring. On macOS, it uses the Keychain. A local key file provides the fallback on all platforms.
systemd-credsnow reports which protection is active.unity doctor - now lists the applications that have used your Unity sign-in on the current machine. Use
unity auth consumersto prevent an application from using it. Useunity auth revoke <application>to undo a revoke.--restore - The CLI now sends one event per run so Unity can count total usage, including runs that never display a consent prompt, such as CI and agent runs. The event contains no user, machine, or session identifier and no consent state. It contains only the tool, CLI version, and whether the run appears to be a CI run. Set
cli telemetryto disable it.UNITY_NO_CLI_INVOKED_TELEMETRY=1
- The auth broker now seals its token store to the machine it was written on. On Windows, it uses the TPM and falls back to DPAPI. On Linux, it uses TPM2 through
-
Build automation
- now runs only the tests that a change can affect, based on the impact graph from
unity test --affected --since <ref>. Selection is opt-in, and results go tounity vcs affectedso the command does not overwrite a full-suite report. The command also identifies changes that it cannot prove are unaffected. For example, a change to a non-code file still runs the full suite. Usetest-results.affected.xmlto run every test and report which tests the selection would skip and how many of those tests would fail. You can use this result to measure the false-negative rate for your project before you rely on affected-test selection.--affected-compare
-
Issues fixed
- Sign-in now persists on Linux machines without a Secret Service daemon, such as headless WSL2 environments, containers, and bare CI runners. Previously, the CLI reported a successful sign-in but appeared signed out on the next command. The same issue also caused and
unity license activate --serialto fail their licensing handshake on these machines.unity projects new - The CLI no longer sends failures caused by your machine or network to anonymous crash reporting. These failures include unreachable hosts, DNS failures, dropped TLS connections, truncated downloads, locked files, and read-only file systems. The CLI still sends genuine defects.
- no longer crashes on Windows when the project path points to a file instead of a directory.
unity cache key - On Windows, and
unity pipeline listno longer report that no Editor is running when one is running. Previously, certain characters in an unrelated background process's command line could corrupt the process query for every process on the machine. Both commands now warn you when the process check fails instead of reporting an empty result.unity status - On Windows, now updates an earlier installation when the recorded and computed installation paths differ only in slash direction or letter casing.
unity skill install - no longer hangs or displays an unexpected keychain dialog when it checks or reads your credential store on macOS and the Keychain requires a response that no user can provide.
unity doctor - and
unity templates createnow tell you when a project is open in an Editor instead of returning an opaque error. On Linux, the CLI previously allowed you to pack an open project and could capture its asset cache during a write. The CLI now refuses these packs.unity templates pack - and other partial versions, including a bare major version, now work after the release line reaches end of life. A partial version now resolves to the newest release in that line, whether the release exists in the current catalog or the archive.
unity install 6000.5 - ,
unity open, andunity projects opennow report a failure when the Editor they start exits with an error instead of always reporting success.unity projects upgrade - now tells you when a project is already open in an Editor instead of reporting what appears to be a licensing error.
unity build - Release notes that and
unity changelogrender now retain bold and italic styling when the same line contains a link.unity self-update --changelog - On Windows, and
unity open <name>no longer print paths that mix forward and backslashes when the registered folder is not a valid project.unity projects open <name> - A module now fails once with a clear explanation when its published release data does not match the file that the download server provides. The CLI no longer retries the same download three times.
- Releasing a lock that the CLI holds around its shared state files can no longer delete another process's lock when the lock directory cannot be renamed on the machine.
- and the
unity projects verifypre-commit gate no longer report a missingunity vcs hooksfile for files inside native plug-in folders (.meta,.bundle,.framework,.androidlib). These folders do not have their own.pluginfiles..metano longer reports these files either.unity vcs status
- Sign-in now persists on Linux machines without a Secret Service daemon, such as headless WSL2 environments, containers, and bare CI runners. Previously, the CLI reported a successful sign-in but appeared signed out on the next command. The same issue also caused
September 02, 2026
1.0.0-beta.8
This release supersedes 1.0.0-beta.7, which reached the beta channel and was withdrawn the same day. The changes from beta.7 are included in this section. If you upgraded directly from 1.0.0-beta.6, you receive the complete set of changes.
-
Breaking changes
- is retired and has no effect. Argument name checking no longer uses a catalog that the CLI fetches, so there is nothing to disable. Remove it from your scripts and CI jobs.
UNITY_NO_PARAM_VALIDATION - and
unity commandnow pass the arguments you type to the Editor without parsing them, and the Pipeline package binds them. If a script relies on the CLI to rewrite or reject those arguments, you might need to update the script.unity run --command - New projects created with are cloud-enabled by default. Pass
unity projects create, or set--no-cloud, to opt out.UNITY_NO_CLOUD - An Editor that exits with code is now reported as a licensing failure instead of a bare exit code.
198 - A executable on your
unity-closeno longer runs asPATH. Becauseunity closeis now a first-party command, it takes precedence and a binary onclosecan no longer shadow it. If you have such a plugin, rename it. Otherwise, the CLI no longer finds it with no error.PATH
-
Source control
- Added , a command group for working with a Unity project under version control.
unity vcstakes a project from nothing to a pushed first commit without any flags.unity vcs setupandunity vcs statussupport day-to-day workflows:unity vcs syncgroups changes by their meaning in Unity and identifiesunity vcs statusfile problems, while.metarefuses to pull while an Editor has the project open and reports the expected reimport.unity vcs sync - audits repository settings required for Unity to work under version control, including UPM package reproducibility. Use
unity vcs doctorto repair everything the command can repair in one pass.--fix - makes Unity scene and prefab merges work in a repository in one command and continues to work after an Editor upgrade.
unity vcs merge-setup - ,
unity vcs conflicts, andunity vcs explainturn a Unity merge conflict from a list of numeric IDs into actionable information.unity vcs resolve - reads a scene or prefab change by GameObject and component name instead of
unity vcs diff <path>.fileIDturns an entire branch into a readable summary.unity vcs summarize --since <ref> - reports the impact of a change in Unity terms instead of Git terms. For example, it reports which prefabs reference a changed texture and which scenes reference those prefabs.
unity vcs affected - changes branches without causing unnecessary reimports and tells you the expected cost before it switches branches.
unity vcs switch <branch> - adds Unity integrity checks to your commits. Use
unity vcs hooks installto remove them.uninstall - makes a Git worktree usable with a Unity project.
unity vcs git worktree add <branch> [path]removes it.unity vcs git worktree remove <path> - finds binaries already committed to Git history and provides the exact
unity vcs git migrate-lfscommand to move them into LFS.git lfs migrate import - tells you who holds a Unity Version Control lock and marks locks that cover files you have already changed.
unity vcs uvcs lockslists changesets.unity vcs uvcs changesets - reports which Git providers this machine can reach. It reports whether
unity vcs providers,git,git-lfs,gh,glab,tea, andbktare installed and their versions, as well as which hosts each tool has a session for and which account the session uses.az - Repository creation now works with Bitbucket and Azure DevOps, in addition to GitHub, GitLab, and Gitea. and
unity projects create --vcs <host>create the remote through Bitbucket'sunity projects link vcsor Microsoft'sbkt, including Bitbucket Cloud and Data Center. Azure DevOps repositories belong to an organization and project, soazaccepts--vcs-namespace. Azure DevOps does not support per-repository visibility, so the CLI rejectsorganization/projectand descriptions instead of silently ignoring them.--visibility - You can now sign in to GitHub or GitLab with your browser instead of creating a personal access token manually. If you use a token, the prompt lists the exact scopes you need and links to the provider page that creates a token with those scopes selected.
- and
unity projects link vcsno longer require the project path. If a link fails partway through, run the command again to resume it instead of receiving anunity projects unlink vcserror or creating a second repository. UseALREADY_LINKEDto undo a partially completed link. If a repository already has a remote, the CLI adopts it instead of refusing the link.--rollback - If is missing, the CLI no longer tells you to install it manually. The CLI offers to install it through your platform's package manager and installs it if you confirm. The CLI does not install anything without your confirmation. If the command cannot prompt you, it prints the exact command instead.
git-lfs - reads code review comments from the Unity Version Control GUI and lets you respond to them. Previously, these comments were available only in the GUI, so you had to restate a reviewer's notes about specific files and lines before a command-line workflow could act on them.
unity vcs uvcs reviewfinds a review and lets you narrow the results withreview list,--changeset, or--branch.--statusreads the review and reports each comment's file, line, text, author, timestamp, type, threading parent, and resolution status.review commentsreplies to a comment, andreview replyrecords which changeset addressed it.review resolve
- Added
-
Project management
- now has the same default-project commands as the organization commands:
unity cloud project,set-default, andcurrent. Commands that require a Unity Cloud project use the default project when you do not specify one.clear-default - and
--cloud-projectnow also accept a project's Genesis ID.unity cloud project set-defaultdisplays this value in its ID column alongside the project UUID and name.unity cloud project list - closes the Unity Editor that has a project open and is now available in released builds. The capability previously existed as
unity close <path-or-name>but was registered only whenunity projects closewas set, so it was unavailable outside Unity.HUB_ENV=developmentis now a top-level command as well asclose, matching the existingunity projects closecommand. Neither command saves your work. By default, the command asks the Editor to exit, which it does immediately without prompting. Useopento signal the process instead. The CLI uses--forceonly when you specify it. Closing a project that no Editor has open succeeds without an error. If an Editor has the project open but the project does not include--force, the error names the package and thecom.unity.pipelinecommand that adds it.unity pipeline installremains development-only.unity projects logs
-
Installs and updates
- and
unity installnow request administrator permission at the start of the command instead of partway through. This prevents an unattended install from waiting for a dialog after a long download. If you decline, the command fails immediately withunity install-modulesorELEVATION_CANCELLED, and nothing is downloaded or written.ELEVATION_FAILED - shows download progress instead of a spinner, identifies the upgrade when you provide an argument, and explains what to do when a SHA-256 check fails.
unity upgrade - can now install an Editor that has been promoted but not yet published. It also reports an unresolvable changeset immediately instead of waiting for a minute and a half.
unity install <version> --changeset <changeset> - now prints a result envelope on success. Previously, it printed nothing and exited with
unity install --format json, so a script could not distinguish a completed install from a crashed process. The envelope matches the result that0already reports.--format ndjson - now honors
unity install --resume, so a forced resume reuses an already downloaded payload instead of downloading it again. If the Editor is already installed and you do not pass--force, the resume reports why it stopped in every output format.--force - The command that updates the CLI is now .
unity self-updatecontinues to work as an alias, so nothing you have scripted or documented breaks. The old name was the only CLI command calledunity upgradethat did not upgrade a project or an Editor, unlikeupgrade,unity editors upgrade, andunity projects upgrade. The machine-readable output also changes:unity plugin upgradeand--format jsonnow reportndjsoninstead of"command": "self-update"."command": "upgrade"
-
AI and Editor integration
- for VS Code, Cursor, Windsurf, and Cline now installs a real Agent Skills directory. Each client also has a user-global target for the first time.
unity skill install - now also installs the agent skill included with your project's
unity skill install <client> --localpackage. A resolved package lives undercom.unity.pipeline, which AI clients do not search for skills. A project-local install therefore copies the skill next to theLibrary/PackageCacheskill. A project without the package behaves as before.unity-cli - no longer reports every numeric, array, and structured tool parameter as a string.
unity mcp
-
Automation and CI
- Long human-readable listings now use a pager in a terminal, similar to , instead of filling your scrollback. Set
git logorUNITY_PAGERto choose a pager, or passPAGERto disable it.--no-pager - Added ,
unity plugin install, andunity plugin removeto manage tools that Unity downloads for you.unity plugin upgradereports the installed tools.unity plugin listalso shows these components in its own section.unity doctor - now checks whether the machine's credential store can store a sign-in and reports which backend it selected.
unity doctor - ,
unity uvcs, andunity cmnow pass everything after the alias directly to the tool's binary, so the tool receives its own flags unchanged. For example,unity ugspassesunity uvcs status --format jsonto the Unity Version Control client instead of letting the CLI consume it as a global--format jsonoption.--formatanduvcsboth run the Unity Version Control client, whilecmruns the Unity Gaming Services CLI. Only the first token counts, sougsis parsed as a standard CLI invocation and reports the correct usage.unity --format json uvcs
- Long human-readable listings now use a pager in a terminal, similar to
-
Security and privacy
- Commands that look for a running Editor now identify it by the executable that the operating system reports instead of the process name.
- On a machine without Unity Hub, the Unity Version Control client that the CLI downloads now uses the version pinned by the CLI instead of remaining on the first version it fetched.
- If you opt in to CLI analytics, the CLI now associates your usage with your Unity account while you are signed in. Usage events also record which project they ran in. The project is identified by an opaque ID, never by a file path. The CLI records nothing unless you opt in. Both values are absent when a command runs outside a Unity project.
- The first-run analytics question now uses an arrow-key list instead of a typed /
y, matching the other questions in the CLI.n
-
Issues fixed
- On Windows, no longer reports a successful install as failed when you are not an administrator. Installing to a location that requires elevation, left the version folder writable only by administrators. The CLI then tried to register the Editor without elevation, reported the install as failed, and exited with
unity installeven though the Editor had installed correctly. This issue caused the withdrawal of 1.0.0-beta.7.INSTALL_FAILED - now repairs an Editor that an earlier install left unregistered. Use this command if you encountered the issue above before this release.
unity editor module refresh <version> - Installing a module into an Editor in a protected folder now works. Language packs and archive-based modules, such as the Android NDK and platform support modules, previously unpacked without elevation and failed.
- On Windows, installs no longer fail with on machines where the lock directory's parent does not allow new names. A failed Editor install also no longer leaves the new version's folder behind.
Access to the path is denied - no longer reports success on a headless Linux machine when no session exists afterward. It also no longer fails on macOS when the keychain slot it writes was created by a different code identity. Under WSL, it opens the sign-in page in your Windows browser again.
unity auth login - Backticks in a path, project name, Editor version, or any other value you type are no longer deleted from the CLI's messages.
- now runs on a Linux machine without a display server. It also refuses to run on a project that is already open in an Editor instead of starting a batch Editor that cannot acquire the project lock.
unity test - Opening a project with on Linux no longer prevents you from attaching a debugger. The CLI previously launched the Editor through a version-named link, which renamed the process and prevented Rider and the VS Code debugger from finding it.
unity open - no longer deletes a project's
unity projects clean,Library, andTempfolders when it cannot determine whether an Editor has the project open.obj - On Linux, now puts the iOS, WebGL, Linux-IL2CPP, and Linux-Server playback engines where the Editor expects them.
unity install-modules - Templates created from a Unity 6000.6.0a4 or newer project no longer produce hundreds of spurious warnings in every project created from them. also no longer copies content from outside the project into the template.
unity templates pack - The CLI now reports analytics again for users who have opted in. A crash no longer generates one report per language
- Sixteen command surfaces previously printed English regardless of your display language, even though all the strings they printed were already translated. Relative timestamps in and the Kind column in
unity projects listnow use your display language.unity plugin list - no longer uploads a Unity 6000.6+ project's
unity bug --share-projectfolder.Library/DataStore - and other commands that find a project in the Hub registry by path no longer miss a project when its path uses different capitalization.
unity projects remove - is accepted again on every command and in either position.
--no-pageralso no longer asks for confirmation in a terminal.unity editors prune --remove --format github - now rejects an argument that is not a Unity version with an
unity install <arg>error before sending it to the release catalog.INVALID_VERSION - Crash reporting no longer creates a report for failures that the CLI did not cause.
- Commands no longer stall after they finish. When a profile was signed in and opted in to analytics, every command resolved the user ID from the OS keyring on the main thread after printing its result. One measured non-interactive run took 40 seconds, and the operation could take an unlimited amount of time. As a result, a headless, CI, or SSH machine could wait indefinitely. The CLI now performs this read at most once per process and on a background thread, and only when it has data to send. If the read does not return in time, the CLI abandons it and sends the batch anonymously, as it does for a signed-out run.
- When a connected Editor has a package that is too old to run a command or detached job, the error now names the package version that provides the required behavior instead of only telling you to run
com.unity.pipeline.unity pipeline upgraderesolves the latest version available in the registry. If that version is still older than the version required by the CLI, the upgrade previously reported success and the command failed without explaining why. This issue caused the withdrawal of 1.0.0-beta.7.unity pipeline upgrade - Failures caused by the state of your machine no longer ask you to file a bug against the CLI. Previously, 23 conditions that were neither CLI defects nor errors in what you typed, such as a missing executable, an Editor that was no longer at its registered path, or another
tarexecutable already owning yourunity, ended their error block with a request to runPATH. The rest of the error block remains unchanged: the error, its code, the log location, and instructions for rerunning withunity bug.--verbose - no longer reports the default install path when it cannot read your configured path. The path is stored in
unity install-path, which the Hub and CLI share behind one advisory lock. Previously, a failed read was treated as if no custom path existed, so the CLI printed the platform default with exit codesecondaryInstallPath.jsoneven though your Editors lived elsewhere. An install that started during that window could then use the wrong root. The CLI now distinguishes these two states and retries a read once if it loses the lock.0 - A lock that the operating system refuses to create is now reported as a plain, actionable failure that names the lock file and asks you to check your write permission for the folder. Previously, the CLI reported a raw error without a cause and filed a crash report for a machine-state issue. A full disk or read-only volume continues to report the operating system's more specific message. Releasing a lock on such a machine no longer stalls.
CreateDirectory failed - Interrupting a download with Ctrl+C no longer leaves the Windows taskbar showing progress indefinitely. previously had no Ctrl+C handling, so Windows killed the process immediately and skipped cleanup. This could orphan the elevated helper that ran the Editor installer and leave the install lock behind, causing a retry within ten seconds to fail as if another install were still running. Ctrl+C is now handled cooperatively, and the command exits with code
unity install. A second Ctrl+C still force-quits the process.130 - now honors
unity run --commandwhile waiting for the Editor it just started instead of exceeding the timeout by up to five and a half seconds. For example,--timeoutnow reports the timeout after 10 seconds instead of 15.5 seconds.--timeout 10 - Spanish and Chinese no longer duplicate a word when the CLI reports that it updated itself. A completed update previously printed “Actualizado a a 1.2.3.” and duplicated a particle in Chinese. The issue affected update, downgrade, and channel-switch messages in all three output forms. The other seven languages were already correct.
- On Windows,
August 21, 2026
1.0.0-beta.6
-
Breaking changes
- now requires you to be signed in, and exits with code
unity buginstead of3when you aren't. Previously a signed-out run reported nothing and appeared to succeed. Authenticate first, or pass service-account credentials, before a script or CI job calls0.unity bug - now uses exit code
unity testspecifically for a run whose tests failed. Every other way a test run fails to reach a verdict — a compile error, an expired license, an editor crash, or8— keeps exit code--timeout. If a script treats exit code6as "tests failed," point it at6instead.8
-
Source control
- and
unity projects createcan now create the new repository throughunity projects link vcs,gh, orglabwhen the CLI's own REST clients can't reach the host: a GitHub Enterprise Server, a self-managed GitLab, or a self-hosted Gitea or Forgejo instance.teaaccepts a bare hostname for these. No token passes through the CLI on this path; the provider CLI's own signed-in session does the work. A new--vcsflag sets the repository's description.--git-description <text> - and
unity projects clonenow accept a plain git URL —unity projects link vcs,ssh://, orgit@host:path— as an optional positional argument, so any git host works, including Bitbucket, Azure DevOps, and a self-hosted server. This form uses your machine's own ambient git authentication rather than a provider API call.https:// - Both commands, and , now work fully over SSH, including host-key verification and passphrase-protected keys. Use
unity projects create --vcson the flag form to switch the transport.--git-remote-protocol ssh - Signing in to github.com no longer implies anything on a self-hosted host. When a self-hosted or enterprise host needs its own sign-in, the CLI now names the exact command to run for whichever provider CLI you have installed.
- Git credential prompts no longer hang. Without a terminal, in CI, under a machine-readable , or with
--format, the CLI now fails immediately with exit code--non-interactivenaming the credential it needed, instead of waiting on a prompt nobody could answer.4 - Git operations under now respect your own git configuration (
unity projects,core.sshCommandrules, credential helpers) instead of ignoring it, and credential lookups resolve per organization when your credential helper supports it (setincludeIfto opt in).git config --global credential.useHttpPath true
-
Project management
- Added , a fast check for the things version control breaks in a Unity project: orphaned or missing
unity projects verifyfiles, duplicate GUIDs from a bad merge, and unresolved conflict markers. It needs no Editor, license, or network access, so a broken checkout fails in seconds instead of after a full build. Pass.metato fail on warnings too, and--strictto also check for editor-version drift.--expect-editor <version>
- Added
-
Build automation
- now writes a build provenance manifest next to its output, recording the editor version, resolved package set, build target, git revision, and timestamps that produced the build. It's written for failed builds too. Paths, credentials, and machine-identifying details are deliberately left out, so it's safe to publish alongside the artifact. Use
unity buildto choose where it's written, or--provenance-pathto turn it off.--no-provenance - now prints a periodic heartbeat during a long build, tracking both elapsed time and how long since the editor's log last grew, so silence in the log no longer looks the same as a hang. A new
unity buildflag (also--timeout <seconds>) aborts a build that runs too long.UNITY_BUILD_TIMEOUT
-
Unity Collaboration
- (
unity collaborationfor short) is now part of every build, instead of development builds only. It covers Unity Collaboration's annotations end to end — create, list, update, resolve, reply, and react — plus attachments, thumbnails, and a Jira integration that creates and links issues from the CLI. Rununity collabfor the full command tree.unity collab --help
-
Automation and CI
- Added , a global output format that reports command failures as GitHub Actions annotations instead of plain text, so a red step in a workflow points at what went wrong in its summary.
--format github - Added , which prints a deterministic cache key for a Unity project's
unity cache keyfolder, derived from the editor version, the resolved package set, and the build target. Use it as the key for a CI cache step.Library - Added , a fast preflight that checks whether a machine can actually finish a build or test run — an activatable license, the project's required editor, disk space, and network reachability — and exits non-zero when it can't, so a pipeline fails in seconds instead of partway through a build.
unity doctor --ci - gained
unity testto split a suite deterministically across parallel CI jobs,--shard N/Mto re-run only the tests that failed and report which ones were flaky, and--retries Nto re-run just the failures from a previous run's report.--rerun-failed
- Added
-
Security and privacy
- Shell completion scripts (,
unity completion bash, andfish) now escape the strings they interpolate, closing a defense-in-depth gap where an unescaped value could have run as a command or broken out of its quoting.powershell - Progress spinners and the background update check are hardened against a tampered update manifest smuggling terminal control sequences into the spinner label.
- Shell completion scripts (
-
Issues fixed
- Editor and module install progress bars are back in the terminal. A large download previously printed nothing at all until it finished, which looked indistinguishable from a hang.
- A stale Unity Licensing Client is now detected and replaced automatically, instead of silently rejecting every command until it was deleted by hand.
unity license - The Android module on Linux, the Android NDK on macOS, Windows modules that need administrator elevation, and language packs all had install paths that were broken outright; all are fixed.
- Headless or wrapped editors (running under ,
xvfb-run, or a CI runner) are counted correctly again bydbus-run-session, instead of appearing as duplicates or "ambiguous."unity status - The loop where signing in with eventually signed you out of the Unity Hub is fixed for good.
unity auth login - Installing the CLI on Windows no longer corrupts your user . PowerShell tab completion now actually registers (it never took effect before).
PATHnow catches malformed or misspelled arguments instead of silently running on default values.unity command
August 13, 2026
1.0.0-beta.5
-
Security and privacy
- no longer uploads your account name or email address. The CLI's log file records paths under your home directory on nearly every line, and a bug submission attaches that file as-is, so on a machine where the account name is your real name, submitting a report sent it too. Both are now redacted as each line is written: the account name becomes
unity bugwherever it appears, and email addresses become<user>. Nothing else about the line changes, so an install failure stays diagnosable. Logs written before this release are unaffected; delete them if you'd rather not send them.<redacted-email>
-
Issues fixed
-
A retried module download innow resumes the partial file it already has instead of starting that module again from the beginning. A module that failed and then succeeded within the same run previously left one numbered file per attempt, such as
unity install-modulesandandroid (1).pkg; it now leaves a single file and downloads its bytes once. The retry count and the exit code are unchanged.android (2).pkg -
,
unity build, andunity testnow report an Editor killed by a signal asunity run, naming the signal, instead of reportingstopped with signal SIGSEGV.exited with code 1,SIGILL,SIGTRAP, andSIGFPEare recognized too, where they previously surfaced as a bare number such as 132. An Editor that exits normally still reports its own exit code.SIGBUS -
Routine outcomes no longer suggest you report a CLI bug. Declining a module's license terms, being told to passin a non-interactive shell, running
--accept-eulafor an Editor you haven't installed, setting an invalid path withunity modules <version>, aunity install-path --setwhose build fails, and aunity buildthat waits on another install's lock all stopped printing "Rununity installto report this issue". The messages, the exit code (6), and theunity bugenvelope, including the--format jsonerror code, are unchanged, so scripts that branch on them keep working. An Editor that crashes mid-build is still reported as a fault.BUILD_FAILED -
,
unity --help,unity -h, and bareunity helpshow the Unity logo header again. The header still stays out of the way when you pipe the output, passunityor--quiet, or ask for a machine-readable format, and subcommand help such as--no-banneris unchanged.unity install --help -
now produces a script that registers itself with zsh, so pressing Tab completes commands, subcommands, and flags. The script previously defined the completer without telling zsh about it, and Tab fell back to plain filename completion with no error to explain why. Save it to a directory on your
unity completion zsh:$fpathmkdir -p ~/.zsh/completionsunity completion zsh > ~/.zsh/completions/_unityThen make sure yourhas~/.zshrcfollowed byfpath=(~/.zsh/completions $fpath). bash, fish, and PowerShell completion are unaffected.autoload -Uz compinit && compinit -
Thehelp text shows its credentialed example as
--proxy, so it's clear which parts you substitute. In Spanish, the username in that example is no longer mistranslated.http://<user>:<pass>@host:8080
-
August 12, 2026
1.0.0-beta.4
-
Breaking change
- Linux now requires glibc 2.34 or newer. This drops support for Ubuntu 20.04 and earlier, Debian 11, RHEL and CentOS 8, and Amazon Linux 2. RHEL 9 and Ubuntu 22.04 are the oldest supported releases. The and
.debpackages declare the requirement, so.rpmandapt upgraderefuse the update on an affected system and leave your working CLI in place, anddnf upgradechecks before it downloads. If you're on an affected distribution, stay on 1.0.0-beta.3. macOS and Windows are unaffected.install.sh
- Linux now requires glibc 2.34 or newer. This drops support for Ubuntu 20.04 and earlier, Debian 11, RHEL and CentOS 8, and Amazon Linux 2. RHEL 9 and Ubuntu 22.04 are the oldest supported releases. The
-
Installation and updates
- Added winget as an install source on Windows: , then
winget install Unity.CLIto stay current.winget upgrade Unity.CLI - Added Homebrew as an install source on macOS and Linux: , then
brew install --cask unity-cli.brew upgrade unity-cli - Added self-updating Windows installs. now updates an MSIX install directly instead of deferring to winget, downloading only the parts of the package that changed. It also registers the install with Windows, which then keeps the CLI current in the background. Rollback remains unavailable on MSIX.
unity upgrade - Added , which reports the version and channel the install resolved, the manifest it reads, and the exact command that updates it. On Windows it also shows the update feed Windows is registered against.
unity diagnose update
- Added winget as an install source on Windows:
-
Editor and project management
- Added , which runs one command across every registered project. Narrow the set with repeatable
unity projects exec -- <command>terms, raise concurrency with--filter, and use--parallel <n>to run the whole fleet regardless.--continue-on-error - Added to delete a project's regenerable cache folders and reclaim disk space. Use
unity projects clean [project]to list the targets and sizes without deleting.--dry-run - Added to find installed Editors no registered project uses, with the disk space each would reclaim. Report-only by default;
unity editors pruneuninstalls them after confirmation.--remove - Added to check that an installed Editor's binary and modules are present and non-empty, catching installs left broken by antivirus quarantine or a failed extraction.
unity editors verify <version> - Added to pack an existing project into a portable template archive.
unity templates pack <project-path> --output <file>
- Added
-
Build automation
- no longer requires
unity build. On Unity 6 and newer,--execute-methodbuilds a Build Profile, and on every version the desktop targets build without a method, so--profile <path-or-name>works with no project-side C# code.unity build --target StandaloneWindows64 --output-path Build/MyGame.exekeeps working and takes precedence.--execute-method
-
Authentication
- Added multi-account support. adds an account without dropping existing sessions,
unity auth loginshows every stored account,unity auth listchanges the active one, andunity auth switch <account>signs out one account while preserving the rest.unity auth logout <account> - Added per-project default accounts with , so cloud-authenticated commands run from inside that project resolve it automatically.
unity auth default <account>
- Added multi-account support.
-
AI agent integration
- Added to install the Unity CLI agent skill into an AI client's rules or skills directory, in that client's native format. The skill is embedded in the binary, so it works offline and matches the running version.
unity skill install <client>re-renders previously installed skills after an upgrade.unity skill refresh
- Added
-
Automation and CI
- Added CI-native test reports and code coverage to , so it drops into a GitHub Actions or GitLab pipeline without a converter step.
unity test - Added detached Editor command jobs: and
unity command <name> --detachreturn a job ID immediately, andunity eval <expr> --detach,unity job wait, andunity job statusmanage it. Requires a Unity pipeline package with job support.unity job cancel - Added live Editor task progress to and
unity command, rendered as a progress bar on an interactive terminal and asunity run --commandframes under{"type":"progress"}.--format ndjson - ,
unity command,unity list, andunity jobnow find the right Editor on their own when several are open, by matching the directory you run them from against the registered projects. Explicitunity mcpstill takes precedence.--project-path - Added the full query surface to listings:
unity command,--query,--tag,--group_by,--sort,--order,--offset, and--limit.--detail - can now attach files with
unity bugand a stripped copy of the project with--attachments <paths...>.--share-project <path>
- Added CI-native test reports and code coverage to
-
Output and integration
- failures are now machine-readable: a failed command ends the stream with a terminal
--format ndjsonframe carrying the same fields as the{"type":"result","success":false,…}envelope, instead of reporting only on stderr.--format json - Long human-readable output now scrolls in a pager on an interactive terminal, using ,
$UNITY_PAGER, or$PAGER. Machine formats, piped output, andlessnever page. Opt out with--quietor--no-pager.UNITY_NO_PAGER
-
Interactive shell
- Added full line editing to the prompt: Up and Down recall previous commands across sessions, Tab completes commands, subcommands, flags, and values, and Left, Right, Home, and End move within the line.
unity shell - Tab completion now completes pipeline command names live from the connected Editor.
- Added full line editing to the
-
Issues fixed
- now verifies that the downloaded binary starts on your system before replacing the one you have, and no longer cancels itself where the temporary directory is mounted
unity upgrade.noexec - no longer overwrites an npm-managed install; it now defers to
unity upgradethe same way it defers to apt, rpm, and Homebrew.npm i -g @unity/cli@latest - no longer causes the Editor to open Unity Hub, and the Editor now picks up the account you signed in with.
unity open - commands and Unity Version Control commands now work on a machine that has never run Unity Hub.
unity license - no longer hides upgrades for Apple silicon and Arm Windows Editors, no longer offers an older patch than the newest in the line, and no longer reports prerelease Editors as up to date when a newer prerelease exists.
unity editors upgrade - now finds releases on entitlement-gated lines, such as extended LTS.
unity editors info <version> - now distinguishes an unreachable release service from a version that doesn't exist, retrying briefly and exiting with the new code 7 rather than blaming the version.
unity install <version> - works again on macOS and Linux, and
unity hub installworks again for Hub 3.20.0 and newer.--hub-version - Running a command with no longer leaves root-owned directories that break every later command.
sudo - failures now report the underlying reason instead of a bare
unity install, and interrupted downloads can be resumed withInstallation Failed.--resume - Editor and module downloads are now verified against the release manifest's checksum, including downloads resumed across attempts.
- now writes the config key and file path each AI client actually reads, preserves comments and formatting in the files it edits, and the
unity mcp configureandrun_teststools return as soon as the Editor answers instead of always failing at their poll timeout.recompile - Running a command group without a subcommand now prints its help to stdout and exits 0 instead of reporting a usage error.
- Editor Pipeline commands now work behind an HTTP proxy, and long-running Editor commands no longer hard-fail at 60 seconds.
-
Security
- Values that come from Unity services, user-editable settings, or the licensing client are now sanitized before they're printed, so a crafted value can't smuggle terminal escape sequences into your terminal or forge extra rows in output. This covers table headers and cells, interactive prompt choices,
tsv,unity license status,unity editors default, andunity install-path.unity config proxy - A rejected value shaped like
--proxyno longer echoes the password in the usage error.user:pass@host - on macOS and Linux now refuses an Editor whose stored location resolves to a filesystem root.
unity uninstall - Updated the bundled HTTP client library, which now rejects header values containing CR or LF characters.
- Values that come from Unity services, user-editable settings, or the licensing client are now sanitized before they're printed, so a crafted value can't smuggle terminal escape sequences into your terminal or forge extra rows in
July 23, 2026
1.0.0-beta.3
-
Interactive shell
- Added persistent command history to . Press the Up and Down arrow keys to recall previous commands. History is capped at 1,000 entries, and secret-bearing flag values are masked before they're written to disk.
unity shell - Added tab completion to for command names, subcommands, option flags, and option values.
unity shell - Added session context and defaults to :
unity shellanduse project <path>set an active project or organization for later commands, anduse org <id>,set format, andset verboseset default global options for the session.set bannerclears one setting andunset <key>displays the current state.context - Added , a machine mode that runs a framed NDJSON request/response protocol over
unity shell --protocol ndjsonso automated callers and agents can run many commands in one warm process and read one parseable result per command.stdio - Updated piped and scripted sessions to exit with the code of the first failed command instead of always exiting
unity shell.0
- Added persistent command history to
-
Editor and project management
- Added to list running Unity Editor instances with the open project, Editor version, and process ID.
unity editors running - Added to report a project's on-disk size broken down by top-level folder. Use
unity projects size [project]to summarize every registered project, sorted largest first.--all - Added to close the running Editor that has a project open. Use
unity projects close [project]to bound the graceful wait and--timeout <seconds>to terminate the process when it can't exit.--force - Added to remove installed modules from an Editor by module ID.
unity editor module remove - Added as an alias for
unity install <version> --list-components.unity modules list <version> - Added to run a registered
unity run --command <name>Editor command headlessly in a single invocation. The CLI starts the Editor in batch mode, runs the command, prints the return value, and shuts the Editor down. Requires the Unity pipeline package.[CliCommand]
- Added
-
Automation and CI
- Added as a global shorthand for
--jsonon every command.--format json - Added support for the and
UNITY_PROJECT_PATHenvironment variables.UNITY_CLOUD_ORG - Unified flag names across commands: is the canonical flag for a Unity project path and
--project-pathfor a Unity Cloud organization. The previous--cloud-organd--projectspellings keep working as hidden aliases.--org - Added non-interactive support to through the
unity bug,--title,--description,--steps, and--reproducibilityoptions, so you can submit bug reports from scripts and CI.--email - Added the environment variable to suppress the one-time first-run consent prompt without recording a choice.
UNITY_NO_CONSENT_PROMPT - Added terminal-integrated progress reporting through the escape sequence. On Windows Terminal, the taskbar icon fills with download and install progress while
OSC 9;4runs.unity install - Updated the CLI to terminate on with the conventional exit code
SIGTERMinstead of ignoring the signal.143
- Added
-
Installation and updates
- Updated on Linux to install the binary to
install.sh, which is on~/.local/bin/unityby default on most distributions. Re-running the installer migrates an existingPATHinstall.~/.unity - Added publication of the and
.debpackages to Unity's apt and rpm repositories on every beta and general availability (GA) release, so package-managed installs update through the system package manager..rpm - Added in-place AppImage updates to , including checksum verification and
unity upgradesupport.--rollback - Updated the background update notice to suggest the owning package manager's exact upgrade command on package-managed installs.
- Fixed the MSIX package never receiving updates because every release rendered the same package version.
- Fixed the Windows install one-liner failing for every user with "The assignment expression is not valid".
- Updated
-
Diagnostics and crash reporting
- Added anonymous crash and error reporting through Sentry. Reports contain no IP address or hostname, and home-directory paths and token-like values are scrubbed before sending. Set to disable reporting entirely.
UNITY_NO_CRASH_REPORT - Expanded the opt-in usage analytics to record which commands run (registered command names only, never arguments, paths, or project names) and the outcomes of key workflows. Nothing is sent when you're opted out, which is the default.
- Updated the "Recent log" section of to render readable log rows instead of raw NDJSON logger lines.
unity doctor
- Added anonymous crash and error reporting through Sentry. Reports contain no IP address or hostname, and home-directory paths and token-like values are scrubbed before sending. Set
-
Localization
- Updated to share the Unity Hub's language catalog, with display names derived from CLDR data.
unity language - Updated to accept common spellings of a language code: BCP-47 (
unity lang --set), locale (ja-JP), bare language (ja_JP), or bare region (ja).jp - Fixed non-English locales missing translations for newer commands, so CLI output renders localized instead of falling back to English.
- Updated
-
Security
- Hardened usage errors, the log-archive warning, and
unity bugandunity projects addmachine output against terminal escape-sequence injection.unity projects remove - Added GPG signing to the packages with the published Unity Technologies ApS key.
.rpm
- Hardened usage errors, the
-
Issues fixed
- Fixed on Windows flashing a console window about a second after the command exits.
unity upgrade - Fixed an invalid value being silently ignored. It now fails with a usage error (exit code
--proxy <url>).2 - Fixed editor and module downloads failing with a DNS error when the operating system proxy settings point at an unreachable proxy auto-config (PAC) URL.
- Fixed on Linux without
unity auth loginsurfacing a confusing error. The command now prints the sign-in URL so you can open it manually. Under Windows Subsystem for Linux (WSL), the CLI now opens URLs through Windows interop.xdg-open - Fixed failing with "Not a Unity project" when the project has no
unity open <path> --editor-version <version>file.ProjectSettings/ProjectVersion.txt - Fixed with
unity openstarting a multi-gigabyte Editor download without asking. A terminal session now confirms before installing, and a non-interactive session fails fast instead.--editor-version - Fixed and
unity statusnot detecting a running Editor whose project path contains a space on macOS and Linux.unity pipeline list - Fixed and
unity command evalexitingunity command eval_filewhen the Editor reported a compilation error. They now exit0and print the compiler diagnostics.6 - Fixed reporting failed
unity mcptool calls as successful, and fixedevalbreaking permanently after an Editor script recompile.unity mcp - Fixed stalling for minutes on Windows when antivirus real-time scanning intercepts a freshly installed Editor.
unity editors --installed - Fixed an intermittent crash at exit on Windows right after a command completed successfully.
- Fixed failing with a cross-device link error when the system temporary directory is on a different filesystem than the install directory.
unity upgrade - Fixed handing a corrupt template archive to the Editor. Template downloads are now verified against their published checksum.
unity projects create - Fixed launching a second Editor on Windows when the project path differed only by letter case.
unity run --command - Fixed the package failing to install on minimal Debian and Ubuntu systems by declaring a dependency on
.deb, and fixed the Unity licensing client never installing on Linux systems without theca-certificatesutility.unzip - Fixed opted-out runs sending a single anonymous analytics request in some commands. Consent off now means zero analytics requests.
- Fixed and
unity analytics opt-innot permanently answering the first-run consent prompt when run from a script.unity analytics opt-out
- Fixed
July 16, 2026
1.0.0-beta.2
-
Interactive shell
- Added , an interactive session that boots the CLI once and runs many commands in the same warm process. Enter any command without the
unity shellprefix, and leave withunity,exit, or Ctrl+D. Interactive prompts work inside the shell, and a change made by one command is visible to the next.quit
- Added
-
Proxy diagnostics
- Added to print a redacted, paste-safe proxy diagnostic report: the resolved proxy and its source, PAC configuration, CA bundle, and credential-store and Kerberos checks.
unity diagnose proxy - Added the global flag (or
--log-proxy) to log one redacted entry per outbound request for reproducing proxy issues.UNITY_LOG_PROXY=1 - Fixed part of the CLI's HTTPS traffic bypassing the configured proxy. Sign-in, template and release lookups, , and
unity bugtraffic now route through the same proxy stack as downloads, andunity upgradenow forces a direct connection.--proxy-disable
- Added
-
Unity pipeline package
- Added to upgrade the Unity pipeline package in a project when the registry has a newer version.
unity pipeline upgrade - Added to list every published version of the package, and
unity pipeline list-versionsto install a specific version.unity pipeline install --package-version <version> - Updated to show each project's installed package version and flag when a newer version is available.
unity pipeline list - Added , a discovery command that queries the connected Unity Editor and prints every registered tool with its name, description, group, and parameter schema.
unity list
- Added
-
Editor and module installation
- Added and
--reinstallto-f, --forceto repair modules that are already installed.unity install-modules - Added automatic retries for module downloads that fail intermittently. Tune or disable retries with or
--retries <n>.UNITY_INSTALL_RETRIES - Added (or
--no-elevate) on Windows to skip the elevated (UAC) install helper for user-writable install locations and CI shells.UNITY_NO_ELEVATE=1 - Updated and
unity installto continue installing the remaining modules when one fails, and to report a per-item result for each Editor and module on both success and failure.unity install-modules - Added a desktop entry for installed Editors on Linux, so a launched Editor shows the Unity name and icon in the taskbar.
- Added
-
Diagnostics
- Added environment health checks to : whether the
unity doctorbinary's directory is onunity, whether multiplePATHbinaries shadow each other, and whether Windows long-path support is enabled.unity
- Added environment health checks to
-
Installation and updates
- Updated to detect how the CLI was installed. On a package-manager install, it points you at the owning manager instead of replacing the binary in place.
unity upgrade - Added GPG signing and AppImage-native update information to the Linux AppImage, so third-party updaters can check for and apply CLI updates.
- Updated
-
CLI behavior
- Added "Did you mean" suggestions for unknown commands that look like a typo of a real one.
- Updated command modules to load only when their command runs, reducing startup time on every invocation.
- Removed from
--instance <host:port>andunity command. The CLI now always discovers running Editors itself; run from the project directory or passunity mcpto target one.--project-path - Removed the regional display languages Spanish (Latin America), French (Canada), and Portuguese (Portugal) from . Spanish, French, and Portuguese (Brazil) remain available.
unity language - Updated the first-run consent prompt to require an explicit or
yanswer.n
-
Security
- Hardened the Editor and module installers against command injection through the configured install location.
- Updated to verify that the downloaded installer is signed by Unity specifically, instead of accepting any validly signed binary.
unity hub install - Extended escape-sequence hardening to more output surfaces, including and the detail views.
unity projects list
-
Issues fixed
- Fixed the version alias resolving to the newest Supported-stream release instead of the newest Long Term Support (LTS) release.
lts - Fixed command hints showing literal markdown backticks. Commands now render in cyan on color terminals and as plain text elsewhere.
- Fixed the CLI requiring the Microsoft Visual C++ Redistributable on Windows.
- Fixed Unity 2021 and 2022 Editors failing to start when launched through the CLI on Windows.
- Fixed the commands not recognizing service-account sessions, and fixed
unity licensenot returning serial-activated licenses.unity license return - Fixed file sizes printing a literal where the unit belongs.
undefined - Fixed installing the Visual Studio module opening the interactive Visual Studio Installer on Editor versions whose release manifest omits the install command.
- Fixed and
unity templates listsilently falling back to cached template data when the template registry is unreachable. The CLI now prints a warning when it shows cached data.unity templates info - Fixed concurrent module installs corrupting the Editor's module state or failing with misleading permission errors.
- Fixed the install scripts failing on systems without a shell startup file, and fixed the Windows install script failing to parse under Windows PowerShell 5.1 when saved to disk.
- Fixed authentication failures in the commands exiting with code
unity cloudinstead of6, and aligned operational failures in the cloud and auth commands on exit code3.6 - Fixed interrupted builds exiting with a generic . Interrupting
1now exitsunity buildfor Ctrl+C and130for143.SIGTERM - Fixed failing with a 404 error when the Unity Hub ran in a non-production environment on the same machine.
unity upgrade
- Fixed the
June 30, 2026
1.0.0-beta.1
The first 1.0 beta of the Unity CLI. This release marks the move to 1.0 versioning and rolls up the functionality shipped across the 0.1.0 betas.
- Issues fixed
- The CLI no longer logs your OAuth access token or Hub session ID in plaintext. Editor-launch commands previously wrote them to the log file that ,
unity logs, andunity doctorread; they're now redacted.unity bug - Fixed detail commands printing nothing under and
--format tsv, including--format ndjson,unity editors info,unity config update-check,unity pipeline install, andunity license activate.unity upgrade --dry-run - Fixed and
unity runmixing the Editor's batch-mode output into machine-readable output. Underunity testand--format json, the Editor's output goes to--format ndjsonso the result is the only thing onstderr.stdout - Fixed dropping its column flags (
unity projects list,-v,--cloud,--editor-version,--vcs,-m) when piped.--pipeline - Fixed flattening dots in the stored template name, which made later lookups by name fail.
unity templates create - Fixed hanging on Windows right after an install when antivirus scanning or a file lock delayed reading the Editor executable.
unity editors --installed - Fixed invalid and
unity upgrade --targetvalues exiting with a generic error code instead of the standard usage-error code.--channel
- The CLI no longer logs your OAuth access token or Hub session ID in plaintext. Editor-launch commands previously wrote them to the log file that
June 25, 2026
0.1.0-beta.8
-
AI agent integration
- Added to start a Model Context Protocol (MCP) server, built into the
unity mcpbinary, that exposes the commands of a connected Unity Editor as MCP tools. AI agent clients connect overunityand can list and run those commands.stdio - Added to register the Unity MCP server in an AI agent's configuration in one step, for 16 supported clients including Claude, Claude Code, Cursor, and VS Code. Only the Unity entry is written; every other key in the file is preserved.
unity mcp configure <client>
- Added
-
Editor management
- Added to upgrade an installed Editor to the newest official patch in its same
unity editors upgrade [editor]line, carrying the Editor's installed modules over to the new patch. Supportsmajor.minor,--all,--dry-run, and module and architecture flags.--replace - Added an explicit subcommand, matching the
unity editors listverb used by other command groups.list - Added an "Upgrade to" column to that flags installed Editors with a newer patch available in their line.
unity editors list --installed
- Added
-
CLI behavior
- Updated to collect the same diagnostic system information as the Unity Hub bug reporter, including GPU details.
unity bug - Updated the Unity CLI and the Unity Hub to store their sign-in credentials separately, so each can stay signed in as a different account.
- Updated to download Git LFS objects after cloning.
unity projects clone - Added a background check for a newer version with an unobtrusive update notice. Turn it off with
unityor theunity config update-check offenvironment variable.UNITY_NO_UPDATE_CHECK
- Updated
-
Issues fixed
- Fixed storing your Git access token in the cloned repository's
unity projects clone..git/config - Fixed the CLI hanging at exit after a command finished printing its output.
- Fixed the bundled Unity licensing client failing its signature check on macOS and being re-downloaded on every run.
- Fixed not limiting the number of releases returned.
unity releases --limit - Fixed ,
unity analytics, andunity languageprinting nothing underunity config proxyand--format tsv.--format ndjson
- Fixed
-
Removed
- Removed the deprecated alias. Use
unity implodeinstead.unity self-uninstall
- Removed the deprecated
June 16, 2026
0.1.0-beta.7
-
Licensing
- Added (
unity license) to display active Unity licenses on the current machine, including product, license type, organization, and expiration date.unity license list - Added to display licensing status, sign-in state, and active license information.
unity license status - Added to activate licenses through serial, Personal, floating, offline file, or offline request workflows.
unity license activate - Added to return active licenses and free associated seats.
unity license return - Added and
unity license server statusto display floating license server status and availability.unity license server list
- Added
-
Project management and source control
- Added to clone and register Unity projects from GitHub, GitLab, and Unity Version Control repositories.
unity projects clone - Added support for branch, commit, and changeset selection during project cloning.
- Added and
unity projects link vcsto connect or disconnect projects from source control repositories.unity projects unlink vcs - Added source control options to and
unity projects create, including repository visibility, default branch, Git LFS, and Unity Version Control region settings.unity projects link vcs
- Added
-
Hub and Editor management
- Added to install Unity Hub.
unity hub install - Added support for architecture selection, silent installation, version selection, and installer signature verification.
- Added to display the installation path of an installed Editor.
unity editors path <version>
- Added
-
Build automation
- Added Android signing options to , including keystore, signing key, version code, symbol generation, and target SDK configuration.
unity build - Added support for exporting Android builds as APK, Android App Bundle (AAB), or Android Studio projects.
- Added validation for Android signing parameters and warnings when sensitive information is provided through command-line arguments.
- Added Android signing options to
-
Testing
- Added to run Edit Mode and Play Mode tests through the Unity Editor test runner in batch mode.
unity test [project] - Added support for NUnit XML test reports through the option. The default output file is
--output.test-results.xml - Added support for ,
--mode,--filter,--editor-version,--editor-path,--architecture, and--allow-installoptions.--timeout - Added support for the environment variable.
UNITY_TEST_TIMEOUT - Added exit code when test execution completes but one or more tests fail.
6
- Added
-
CLI behavior
- Added a dedicated log file for Unity CLI.
cli-log.json - Updated ,
unity logs, andunity bugto use CLI-specific logs.unity doctor - Added a branded Unity header for interactive CLI entry points, including ,
unity, andunity help.unity --help - Updated the CLI to display usage information and return exit code when users run
0without arguments.unity
- Added a dedicated
-
Issues fixed
- Fixed an issue where module installers always used the same installation command instead of honoring module-specific installation parameters.
- Fixed an issue where was not supported by
--format ndjsonandunity projects list.unity modules list - Fixed an issue where could fail with an HTTP 400 error.
unity bug - Fixed table output that could truncate identifier columns when terminal width was limited.
- Hardened terminal output against control-character and escape-sequence injection from server-provided values.
- Fixed session-state reporting in and
unity doctorto matchunity cloud status.unity auth status - Fixed architecture detection on Windows Arm64 systems running x64 emulation.
June 04, 2026
0.1.0-beta.6
-
Editor scripting and status
- Added to evaluate C# expressions against a connected Unity Editor through the Pipeline server.
unity eval '<expr>' - Added support for human-readable, JSON, TSV, and NDJSON output formats, timeouts, and instance targeting in .
unity eval - Added to display the status of connected Unity Editors, including port, project path, Unity version, process ID, and connectivity.
unity status - Added filtering options for Editor instances and support for automation workflows through structured output and exit codes.
- Added
-
Custom templates
- Added to package existing Unity projects as reusable custom templates.
unity templates create - Added to update custom template metadata.
unity templates edit - Added to remove custom templates.
unity templates delete - Added to view, configure, or reset the custom template storage location.
unity templates location - Added support for filtering templates by type in .
unity templates list
- Added
-
Unity Cloud
- Added to display cloud sign-in status and the active organization.
unity cloud status - Added commands to list, select, and manage Unity Cloud organizations.
- Added to display Unity Cloud projects in the active organization.
unity cloud project list
- Added
-
Project management
- Added support to
--cloudto create and link a Unity Cloud project during project creation.unity projects create - Added support to link a project to an existing Unity Cloud project.
--cloud-project - Added and
unity projects link cloudto manage Unity Cloud project associations.unity projects unlink cloud - Added support for creating projects from archives and directory paths in addition to registered template IDs.
.tgz
- Added
-
Build versioning
- Added and
--versioning-strategyoptions to--build-version.unity build - Added support for deriving build versions from Git tags and repository history.
- Added validation that prevents builds from using a modified working tree unless is specified.
--allow-dirty-build
- Added
-
Authentication and analytics
- Added shared authentication between Unity CLI and Unity Hub through the operating system keyring.
- Added automatic migration of existing Unity Hub sessions to keyring-based storage.
- Added ,
unity analytics opt-in, andunity analytics opt-outcommands to manage telemetry preferences.unity analytics status - Added a first-run consent prompt for telemetry collection.
- Added support for shared telemetry preferences between Unity CLI and Unity Hub.
- Set telemetry collection to opt out by default.
-
Networking and proxy support
- Added support for HTTP, HTTPS, SOCKS, and PAC proxies.
- Added support for authenticated proxies, including Kerberos and SPNEGO.
- Added proxy configuration precedence through command-line arguments, environment variables, stored settings, and operating system settings.
- Added to view, configure, or clear proxy settings.
unity config proxy - Added proxy diagnostics to and
unity doctor.unity env - Added to bypass proxy settings for a single command invocation.
--proxy-disable
-
CLI behavior
- Standardized command naming to across the CLI, documentation, and shell completions.
unity <command> - Updated to report actual session state through the Session Service.
unity auth status - Improved Windows upgrade messaging to provide clearer post-upgrade guidance.
- Standardized command naming to
-
Issues fixed
- Fixed an issue where could become stuck when resuming a corrupted partial download.
unity install - Fixed an issue where concurrent commands could corrupt shared installation data.
unity install - Fixed an issue on Windows where Visual Studio modules could incorrectly appear as already installed.
- Fixed an issue where did not reliably remove stored credentials.
unity auth logout - Fixed interactive prompts on Windows for module installation confirmation and architecture selection.
- Fixed an issue where did not correctly forward
unity opento the Unity Editor on Windows.--args - Fixed validation and error handling for .
unity --instance host:port - Fixed support for and
--format tsvin--format ndjson.unity editors - Fixed an issue where unattended installations using could fail.
unity install --accept-eula --non-interactive - Fixed template command error handling when no default Editor is configured.
- Fixed structured output from when no reachable Editor instances are available.
unity status - Fixed JSON output formatting inconsistencies for command failures.
- Fixed JSON output handling for validation errors.
- Fixed command execution flow to ensure handlers exit correctly after failures.
- Fixed an issue where
May 21, 2026
0.1.0-beta.5
-
Service account authentication
- Added support for Unity service account authentication in .
unity auth login - Added support for automatic bearer token generation when and
UNITY_SERVICE_ACCOUNT_IDare set.UNITY_SERVICE_ACCOUNT_SECRET - Added support for unattended authentication workflows in CI environments and automation scenarios.
- Updated to clear both service account and OAuth credentials.
unity auth logout - Added a warning when only one of or
UNITY_SERVICE_ACCOUNT_IDis configured.UNITY_SERVICE_ACCOUNT_SECRET
- Added support for Unity service account authentication in
-
Unity Pipeline
- Added (
unity pipeline install) to install the Unity Pipeline package into a Unity project.unity pipe install - Added automatic project detection for pipeline installation and support for the and
--project-pathoptions.--ssh - Added (
unity pipeline list) to display Unity Editor instances and Pipeline package status.unity pipe list - Added (
unity command,unity cmd) to execute commands against connected Unity Editor instances or list available commands.unity request
- Added
-
Editor installation and management
- Enhanced to recover orphaned partial downloads that result from interrupted installations.
unity install --resume - Added module discovery support with and
unity installfor Editors registered withunity install-modules.unity editors add <path> - Added support for module discovery on Editors that Unity Hub did not install.
- Enhanced
-
Output and integration
- Added a field to NDJSON progress output for
phase: 'download' | 'install'andunity installto distinguish download and installation phases.unity install-modules - Improved NDJSON output and CLI progress reporting by grouping module progress under the parent Editor installation.
- Added a
-
Error handling
- Standardized CLI error messages across commands.
- Improved separation between user-actionable errors and internal errors.
- Updated exit code behavior to align with the exit-code contract introduced in version .
0.1.0-beta.4
-
Issues fixed
- Fixed an issue where NDJSON progress output for reset progress from 100 percent to 0 percent during installation.
unity install - Fixed an issue where could hang indefinitely when the release feed was unavailable, such as on split-tunnel VPN connections.
unity editors --installed - Fixed an issue where could hang when the target Editor was already installed.
unity install --resume - Fixed orphaned download discovery to detect partial downloads under all supported interruption scenarios.
- Fixed an issue on Windows where could incorrectly report that an Editor was already installed immediately after uninstalling it.
unity install - Fixed an issue where and
unity install -mdid not correctly process multiple space-separated module values after a singleunity install-modules -mflag.-m
- Fixed an issue where NDJSON progress output for
May 07, 2026
0.1.0-beta.4
A major release that adds core workflow commands for diagnostics, Editor management, project management, and automation.
-
Diagnostics and inspection
- Added to generate a diagnostic snapshot that includes platform information, CLI version, installation path, log directory, authentication status, installed Editors, and recent log entries.
unity doctor - Added to generate shell completion scripts.
unity completion <bash|zsh|fish|powershell> - Added to display environment variables used by Unity CLI and Unity Hub.
unity env - Added to view and follow Unity Hub log files.
unity logs - Added to display detailed metadata for an installed Editor.
unity editors info <version> - Added to list available Unity releases from the release feed.
unity releases - Added to display available modules for an Editor version.
unity modules list <version> - Added and
unity templates listto list project templates and view template details.unity templates info <id>
- Added
-
Editor management and installation
- Added to register an existing Editor installation with Unity Hub.
unity editors add <path> - Added to get or set the default Editor.
unity editors default [<version>] - Added to get or set the Editor installation path.
unity editors install-path [<path>] - Added commands to list and install modules for an installed Editor.
- Added to preview Editor installations.
unity install --dry-run - Added to reinstall an Editor that is already installed.
unity install --force - Added to resume interrupted downloads from the local cache.
unity install --resume - Added to preview module installations.
unity install-modules --dry-run - Added prompts to accept module license agreements before downloading modules.
- Added and
unity cache infoto view and manage the download cache.unity cache clean
- Added
-
Project management
- Added to open a project by using a fuzzy-matched project name when no exact path is provided.
unity projects open [<query>] - Added to create projects non-interactively for scripts and CI workflows.
unity projects new <name> --template <id> --editor-version <version> - Added and
unity projects pin <pattern>to manage favorite projects.unity projects unpin <pattern> - Added and
unity projects exportto export and import project lists in JSON format.unity projects import - Added to display Editor, module, and cloud information for a project.
unity projects info <path> - Added to upgrade a project to a different Editor version.
unity projects upgrade [<path-or-name>] --to <version> - Added to verify that required modules are installed for a project.
unity projects require <module>... - Added automatic Editor version detection for ,
open, andinstallwhen no version is specified and the current working directory contains a Unity project.uninstall
- Added
-
CI and automation
- Added to execute projects in batch mode, stream logs, and return the Editor exit code.
unity run - Added NDJSON progress output for long-running commands, including and
unity build.unity projects new
- Added
-
Output and integration
- Added a standardized JSON output envelope that includes ,
success,command,data, anderrors.warnings - Added the output format for streaming progress updates from long-running commands.
ndjson - Added documentation for the output format alongside
tsvandhuman.json - Added global ,
--non-interactive, and--quietoptions.--no-banner - Added and
-yoptions for commands that require confirmation.--yes - Added and
-woptions to keep Editor and project lists updated automatically.--watch - Added environment variables that mirror global CLI options, including ,
UNITY_FORMAT,UNITY_QUIET, andUNITY_NO_BANNER.UNITY_NON_INTERACTIVEremains supported as an alias forHUB_FORMAT.UNITY_FORMAT - Added searchable version selectors for interactive workflows.
- Extended exit code support to include authentication, network, conflict, usage, and command-specific errors.
- Added a standardized JSON output envelope that includes
-
Platform and extensibility
- Added as a shorthand command to launch an Editor with an optional project path.
unity <version> [path] - Added plugin discovery for executables named , which Unity CLI exposes as
unity-<name>.unity <name> - Added to remove the CLI binary, environment files, and stored credentials.
unity self-uninstall - Added to launch the Unity Hub bug reporter or create a structured bug report.
unity report-bug - Added to restore the previously installed CLI version.
unity upgrade --rollback
- Added
-
CLI behavior
- Deprecated in favor of
unity implode.unity self-uninstall - Updated automatic update checks to run in the background without blocking command execution.
- Enhanced to display version aliases, identify the default Editor, and resolve installation paths.
unity editors list - Improved for remote and headless environments by displaying the sign-in URL before attempting to launch a browser.
unity auth login - Added authentication progress events to JSON output so automation tools can capture sign-in URLs programmatically.
- Deprecated
-
Issues fixed
- Fixed an issue where could fail to start the sign-in flow after a fresh installation.
unity auth - Fixed an issue on Windows where removed query parameters from the OAuth callback URL, which could prevent sign-in from completing.
unity auth - Fixed an issue on Windows where could fail to replace the CLI binary.
unity upgrade - Fixed issues in related to project name lookups, confirmation prompts, and short version aliases.
unity projects upgrade - Fixed an issue where did not expand short major-version aliases.
unity editors info - Fixed issues in that prevented correct handling of invalid Editor versions, version aliases, and ambiguous version matches.
unity install-modules - Fixed an issue where reported incorrect download sizes when the Editor was already installed.
unity install --dry-run - Updated to accept a project name in addition to a project path.
unity projects require - Fixed an issue where the Windows installer could corrupt the system .
PATH - Added ASCII fallback support for terminals that do not support Unicode characters.
- Routed module installation errors to to improve scripting and output redirection.
stderr - Fixed Linux configuration directory inconsistencies between Unity CLI and Unity Hub to keep settings, projects, and Editors synchronized.
- Fixed startup failures in Bun runtimes that do not support .
mkdtempDisposable - Fixed startup failures in packaged Bun binaries caused by an unnecessary runtime dependency on .
@vscode/proxy-agent
- Fixed an issue where
April 24, 2026
0.1.0-beta.3
- Fixed an issue where ,
unity install, andunity install-modulesfailed with a service resolution error after a fresh installation.unity auth - Fixed an issue on Linux where the CLI used for Hub data. The CLI now reads and writes Hub data in
~/.local/share/unityhub, which matches the Unity Hub location and keeps projects, Editors, and preferences synchronized between the CLI and Unity Hub.~/.config/unityhub
April 23, 2026
0.1.0-beta.2
- Added to uninstall the CLI. This command removes the installed binary and environment files and clears stored credentials from the operating system keyring. In non-interactive shells, the command requires the
unity implodeflag and only works on a CLI installed using the official installer.--yes - Added to create a Unity project from the CLI.
unity projects create - Added to display the release notes for the installed CLI.
unity changelog - Added to preview release notes for an update without installing it.
unity upgrade --changelog - Added to upgrade to a specific published version instead of the latest version in your channel.
unity upgrade --target <version> - Added interactive which shows release note previews for the target version before confirmation.
unity upgrade
April 04, 2026
0.1.0-beta.1
First public beta release of Unity CLI. This release provides a single executable for macOS, Linux, and Windows on x64 and Arm64 architectures. Install Unity CLI by using or .
install.shinstall.ps1- Authentication: Added with secure token storage in the operating system keychain:
unity auth- Keychain on macOS
- Credential Manager on Windows
- libsecret on Linux
- Editor management: Added the following commands:
- ,
unity editors,unity install,unity uninstall, andunity install-modulesunity install-path - Supports Editor version aliases
- Installs Editor versions with or without a changeset
- Project management: Added the following commands:
- to list, add, remove, and create projects
unity projects - to open a project
unity open <path> - Supports bare-path syntax, such as
unity ./MyProject
- Upgrade management: Added . Automatically selects the appropriate update channel based on the installed version (stable or prerelease).
unity upgrade - Localization: Added the command.
unity language- Added support for 13 locales
- Output formats: Added the global flag for machine-readable output. Suppresses the interactive banner for JSON and TSV output and when output is piped.
--format <human|json|tsv> - Verifiable downloads: Added SHA-256 checksums for all platform binaries