Unity CLI release notes for November 2026
Learn about the Unity CLI releases in November 2026.
Read time 65 minutesLast updated a day ago
This page contains the release notes for the Unity CLI versions released in November 2026, from newest to oldest.
1.0.0
Release date: November 12, 2026
-
Security
-
Each release now publishes, a GPG signature over
SHA256SUMS.ascby the Unity Technologies ApS key, so you can verify a download withSHA256SUMS.gpg --verify SHA256SUMS.asc SHA256SUMS -
no longer prints terminal escape sequences from a commit author name or an object name in the table and tsv output. A crafted author name could move the cursor or retitle the terminal.
unity vcs blame -
Sign-in no longer falls back to storing your tokens in a plain file when the system credential store (the macOS Keychain, Windows Credential Manager, or the Linux Secret Service and kernel keyring) is unavailable. To keep using the file, sign in with, as
unity auth login --insecure-storageworks.gh auth login --insecure-storage
-
-
Added
-
opens a code review of a changeset or a branch,
unity vcs uvcs review createlists who was asked to review and where each stands, andreview reviewersasks more people. They work on Unity Cloud and self-hosted servers through the localreview requestclient (11.0.16.10512 or later).cm -
lists, reads, answers and resolves code review comments on self-hosted Unity Version Control servers, through the local
unity vcs uvcs reviewclient and with no Unity sign-in (cm11.0.16.10616 or later; listing reviews works from 11.0.16.10512).cm -
installs a Unity tool published after your CLI version, and
unity plugin install <id>runs it, with no CLI update. Such a tool downloads only from Unity's CLI plugin CDN and is checksum-verified, like every plugin.unity <id> -
prints that Editor command's usage and parameters, read from the connected Editor. A group name alone lists the group's commands.
unity command <name> --help -
Tab completion afteroffers the connected Editor's commands and the chosen command's parameters, in every shell and in
unity command. Regenerate your completion script withunity shellto get it.unity completion <shell> -
adds the connected Editor's commands to the manifest, each marked
unity commands --include-editor."source": "editor" -
hides the Editor commands whose MCP annotations include any of
unity mcp --exclude-annotations <list>,read-only,destructiveoridempotent, and refuses a call to one. For example,open-worldkeeps an agent from deleting assets or running C# in the Editor.--exclude-annotations destructive -
hides whole Editor command groups, every command in them, and refuses a call to any of them. For example,
unity mcp --exclude-tool-groups <list>hides the scene and Editor commands.--exclude-tool-groups "scene,editor.*" -
lists one tool per Editor command group instead of one per command, so a full Editor catalog fits under the tool limits of clients such as VS Code, Cursor and Windsurf, and takes less of the agent's context. A group tool takes the command's name in
unity mcp --tool-groupsand its parameters incommand, and its description lists every command's parameters.args -
turns off the CLI's usage data and anonymous telemetry ping, the same way
UGS_CLI_TELEMETRY_DISABLEDdoes. Any value but empty,DO_NOT_TRACKor0counts.false -
A command group can now hand a subcommand it does not have to aplugin on your
unity-<group>, the wayPATHrunsunity <name>. The plugin gets the arguments from that subcommand on, and the group's own subcommands always come first.unity-<name> -
refuses to close an Editor that has unsaved scenes and lists them. Without it,
unity close --if-savedstill quits without saving, and now names the unsaved work it discarded.unity close -
warns when
unity openmakes it start the Editor against the staging cloud environment, and namesHUB_ENV=developmentto use production.--cloudEnvironment production -
shows
unity command --help, and says it needs an Editor that serves its own endpoint.unity command editor dialog -
registers an unsigned development build, such as a locally built trunk Editor, the same way
unity editor add --skip-signature-checkdoes.unity editors add --skip-signature-check -
saves your sign-in to a plain file when no system credential store is available.
unity auth login --insecure-storage -
adds an action to a draft version of a Pipeline Automation app, from a JSON file whose name and description
unity pipeline automation apps actions create <app-id> <version> --file <path>and--nameoverride.--description -
creates a Pipeline Automation pipeline and its first version, from a JSON file holding its steps and parameters whose name, description, version and tags
unity pipeline automation pipelines create,--name,--descriptionand--versionoverride. A saved pipeline version works as the file.--tag
-
-
Changed
-
now works on production, resolving the organization and project like
unity pipeline cloud-build builds timeline, instead of stopping withbuilds get.AUTOMATION_COMMAND_STAGING_ONLY -
The winget package now carries stable releases only. On the beta channel, when Windows can't apply an update,now gives the beta App Installer link to install by hand instead of suggesting winget.
unity upgrade -
Options that write output now follow one rule:names a file and
-o, --outputnames a directory.--output-diris nowbuild --output-path,build --output,collaboration annotations exportandattachments downloadtakethumbnail download, and-o, --outputandtestgaintemplates pack.-o -
commands accept a Unity Cloud project or organization name as well as an id for
unity collaband--cloud-project. A name is looked up in the organization in scope, which is--cloud-org, then--cloud-org, then your saved default organization.UNITY_CLOUD_ORG -
writes
unity mcp configureinto the entries it creates. An entry an older--tool-groupswrote keeps one tool per command, so a client allow list that names those tools keeps working.unity mcp configure -
,
unity,unity help,unity --help,unity -h,unity help <command>andunity <command> --helpnow show the "new version available" notice after their output, the same as other commands. The notice still goes to stderr, only in an interactive terminal, and never withunity --version,--json,--quiet, or when the update check is turned off.CI -
The branded header and the highlighted names in the command listing use brand blue for the logo, wordmark, version and command names. The blue reads on light and dark terminal backgrounds.
-
Only the branded header asks the terminal for its background, and only where the terminal can answer, with a 100 ms wait. Command help and the command listing never ask; they use, then
UNITY_THEME, then dark.COLORFGBG -
Setor
UNITY_THEME=lightto choose the background yourself.UNITY_THEME=dark -
Breaking:exits
unity recompilewhen no Editor answers, as12does, instead ofunity command. A script that matched exit7for this should check7;12is unchanged.errors[0].code -
takes the project as a positional argument too:
unity recompile.unity recompile <path> -
now keeps the version you chose: Unity Hub no longer replaces it with its bundled CLI at start. Run
unity self-update --target <version>with no version to go back to the newest release and let Unity Hub update the CLI again.unity self-update -
says that a new project is linked to Unity Cloud unless you pass
unity projects create --help.--no-cloud -
says in its JSON result whether it installed anything (
unity self-update) and, except for an MSIX update, which version (installed), and setsinstalledVersionwhen the new version takes over after the command exits.appliesAfterExit -
Breaking:and
unity closefail with exitunity projects closeand11when the path isn't a Unity project (noPROJECTS_CLOSE_NOT_A_PROJECTorAssetsfolder), such as a mistyped name. They used to succeed withProjectSettings.reason: "not_open" -
A command that takesand gets an extra argument, for example
--project-path, now names the flag in its "too many arguments" error and shows the corrected call:unity assets import package.unitypackage ./MyGame.unity assets import <file> --project-path <path> -
now shows the help of a
unity help <name>plugin from yourunity-<name>whenPATHis not a built-in command, the same as<name>.unity <name> --helpdoes the same for aunity cloud help <word>plugin.unity-cloud -
When you're signed in, your analytics choice is now saved to your Unity account, so it's the same on every device where you use the CLI or the Hub.and
unity analytics opt-insave it to your account, andopt-outandunity analytics statuspick up the choice your account holds.unity auth login
-
-
Fixed
-
now returns Assigned seats such as Unity Pro. It sends your sign-in token to the licensing client first; before, the return always failed with a 401.
unity license return -
commands recognize workspaces on self-hosted servers whose repository has no organization in its name, instead of reporting that the folder is not a workspace.
unity vcs uvcs -
no longer leaves its temp folder and a partial installer behind when Ctrl-C or SIGTERM stops it. Stopped while the installer runs, it now waits for the installer to finish before it removes the folder and exits; a second Ctrl-C exits at once.
unity hub install -
and
unity pipeline cloud-build targets createwithtargets updatenow set the--development-buildbuild option that Build Automation reads, instead ofDevelopment, which builds ignored.BuildOptions.Developmentremoves the option in any spelling.--no-development-build -
sends the target's stored name when
unity pipeline cloud-build targets updateisn't given, so updating a target created from the Editor no longer fails.--name -
no longer installs skills when an agent's Unity plugin is already installed. A dry run now writes nothing.
unity setup all --dry-run -
,
unity projects link vcsandunity projects unlink vcsnow refuse a folder that is not a Unity project before they run git or contact a provider. Before, linking such a folder could create a git repository, create a remote repository and push to it.unity vcs setup -
and
unity installwrite their module notices, such as an added dependency or a skipped unknown module, to stderr underunity install-modules,--format jsonandndjson, so stdout holds only the output a script parses.tsv -
and
unity docs <topic>retry when docs.unity.com briefly rate-limits them, and open fewer connections at once, so a first lookup is less likely to fall back to a search.unity docs toc -
When a service entry in the Editor config is unusable, the CLI log now says it is left out instead of saying the default was used. Entries with a built-in default still fall back to it.
-
shows each environment check's status (
unity doctor,[pass],[warn],[fail]) when its output is piped, instead of cutting the status down to[info].[… -
and
unity templates info --format jsonnow always include--format ndjsonandisUserGenerated,isNewwhen the template doesn't set them.false -
on an Apple silicon Mac continues the arm64 partial of an Editor download, where it used to restart the x86_64 installer from scratch and install an x86_64 Editor. The arm64 and x86_64 macOS installers share the file name
unity install <version> --resume; an explicitUnity-<version>.pkg, else the Mac's own architecture, now picks the release, also when the catalog lists no release of that name.--architecture -
no longer says it opened a Project Auditor page the window could not show. When the Editor's Project Auditor has no such area or view, the result note says so instead of reporting that the page is open.
unity projects audit -
no longer fails the first time it installs Project Auditor when the Editor drops the connection or cancels the install while it reloads. It reconnects, asks for the install again, and finishes.
unity projects audit -
now fails when the project has script compile errors, even if Project Auditor is already loaded. It exits with an error asking you to fix the compile errors in the Editor, instead of opening a window that can't run the analysis.
unity projects audit -
accepts a Git Bash style path such as
unity projects audit --reporton Windows, instead of looking for it under/c/Users/me/report.projectauditor.C:\c\Users -
on a project older than Unity 6 now says Project Auditor needs Unity 6 or later and exits 6, instead of reporting that no Editor is running.
unity projects audit -
on macOS no longer leaves the Hub removed or half copied when you press Ctrl-C while it replaces it with administrator rights. The copy finishes, then the command stops.
unity hub install -
now hands a
unity <name>plugin only the arguments after the command, even when an option before it has the same value as the command's name, as inunity-<name>.unity --cloudEnvironment dev dev serve -
now names the file and says how to fix it when it can't write the partial download, instead of failing with a bare "Operation not permitted" or "Access is denied" message.
unity self-update -
now checks it can write the CLI's install location before it downloads. If it can't (for example in
unity self-updatewithout sudo), it says which path isn't writable and to rerun with write access or reinstall, instead of failing with a bare "Permission denied"./usr/local/bin -
now says when a kept backup has no version label, and names plain
unity self-update --rollback <version>as the way to restore the most recent one.unity self-update --rollback -
A refused or unavailable sign-in broker, or a credential store that denies access, now failscommands with its own error code (
unity cloud,AUTH_BROKER_REFUSED,AUTH_BROKER_UNAVAILABLE) instead ofCREDENTIAL_STORE_ACCESS_DENIED, and it is no longer reported as a CLI crash. The exit code is unchanged.CLOUD_*_FAILED -
In human output, these failures show the broker's own message, such as "Unable to reach the sign-in service. Try again in a moment.", without the command's "Unable to list organizations:" prefix.
-
and
unity vcs switchreport an invalid branch name as a usage error (exit 2, codeunity vcs worktree add) instead of a failed command, and no longer send a crash report for it.VCS_INVALID_BRANCH_NAME -
and
unity vcs uvcs review --changesetno longer fail with a rejected request against Unity Cloud. The changeset filter is now sent in the format Cloud accepts.unity vcs uvcs review comments --changeset -
no longer prints raw color codes from a package's entry paths in the human and tsv tables, so a package can't recolor or hide its own entry names. json and ndjson output is unchanged.
unity assets inspect -
and
unity templates createnow say what went wrong and what to do, instead of printingunity templates edit,UNABLE_CREATE_TPLorTEMPLATE_DESTINATION_NOT_WRITABLE: a folder that isn't a Unity project, a templates folder you can't write to, or a template whoseUSER_TPL_EDITcan't be read. In JSON,package.jsonnames the failure (for exampleerrors[0].codeorTEMPLATES_CREATE_NOT_UNITY_PROJECT) instead ofTEMPLATES_EDIT_INVALID_MANIFEST.ERROR -
and
unity assets inspectwith an extra operand now sayunity assets import, likeExpected 1 argument but got 2: a, b.andunity open, instead ofunity projects infoExpected 0 arguments but got 1: b. -
and
unity assets importnow work on Linux with no display. An import always runs the Editor without graphics, andunity open --batchmodedoes the same when neither--batchmodenorDISPLAYis set.WAYLAND_DISPLAY -
now changes only the fields you pass. Before, an edit without
unity templates edit(for example only--display-nameor--description) reset the template's display name to its package name.--preview-image -
on a Git LFS repository now brings in the new commits and reports a failed LFS download as a warning with exit code 6, instead of failing the pull when the LFS server is unreachable.
unity vcs sync -
now fails with exit 6 when Unity exits 0 without a build result in its log and nothing was written to the output path, instead of reporting success.
unity build -
no longer leaves the helper's
unity build --create-profilefile, or an.metafolder it created, in the project, so later Editor runs stop recreating emptyAssets/Editorfolders.UnityCliTemp-* -
On Windows, pressing Ctrl+C while,
unity build,unity build --create-profileorunity runruns the Editor now exits 130 as an interruption. It no longer reports a missing result or a failed build (exit 6).unity test -
,
testandrunwithbuild --create-profilenow end a failed run on a--allow-install --format ndjsonsuccess:falseframe with the error code, after the install's ownresultframe. Before, the stream ended on the install'sresultframe while the command exited non-zero.success:true -
now runs that project's last build, like
unity build run -- <project>, instead of failing with "isn't supported with these options or in this environment". An extra project name afterunity build run <project>is the usual "too many arguments" usage error.-- -
no longer fails with "Pipeline server returned 400 Bad Request" after a successful compile on Unity 6000.7 betas. A
unity recompileor a400from the Editor during its domain reload is waited out, the command keeps polling, and it reads the compile status once more before it reports a failure.503 -
reports compile warnings without
unity recompile. They still fail the run only under--strict.--strict -
exits 6 with a
unity commanderror when the command's result reportsCOMMAND_FAILED, or asuccess: falseofstatus,rejected,busyorfailed, instead of exiting 0. Editors whose Pipeline writes the command's output itself already set the exit code.not_implemented -
says the Editor exited, and may have crashed, when the Editor quits while running a command, instead of naming a refused evalToken or a timeout.
unity command -
explains a
unity command,--instanceor--pidtyped after the command name that matches no Editor, and shows how to pass it to the command after--port. When the command's parameter list is available, the hint appears only if the command has that parameter, and names it.-- -
asks a project whose Pipeline package is older than 0.9 by the command's old name first, so the Editor console no longer gets an Error for the new name it doesn't know.
unity command -
no longer reads another release's module list for an Editor installed with
unity install-modulesstraight in its version folder (as Unity's internal tools do). It now stops before any license question or download, forUnity.exetoo, and tells you the Editor has nounity editor module addfolder to add modules to, instead of failing after the admin prompt with a generic installer error.Editor -
and
unity uninstallnow remove only an Editor's own folder whenunity editors prune --removesits straight in its version folder. They used to delete the parent folder, and every other Editor version in it.Unity.exe -
no longer reports
unity projects infofor a project that is not linked to a cloud project.cloudEnabled: true -
accepts a plugin prefix such as
unity command --skilland uses the skill name after it.unity:ui -
On Windows, awhose file swap fails after exit no longer forgets the version you chose with
unity self-update. The next--targetrun puts it back.unity -
with
unity projects exec,--format jsonorndjsonleads every line of a project's output on stderr with the project's name, so each project's output can be told apart.tsv -
checks every project folder before it runs anything. A missing folder is reported by its path up front and no longer stops the run on the other projects.
unity projects exec -
keeps waiting while the only open windows are the Editor's progress windows, such as "Hold on..." or "Reloading Domain".
unity status --until-ready -
A command blocked by an Editor window, not a message box, now says that no command can answer it and that it must be closed in the Editor, or shown withon an Editor that serves its own endpoint.
unity command editor dialog -
prints a token for a service account. Set
unity auth tokento the ID of the project the token is for (a name is not accepted); without it, or with a name, the command exits 2 and says so, instead of reporting a connection problem.UNITY_CLOUD_PROJECT -
starts the sign-in service when a proxy is configured, either a proxy variable such as
unity auth broker ensureorUNITY_PROXYor your system's proxy settings, instead of failing withHTTPS_PROXY.AUTH_BROKER_UNAVAILABLE -
skips a docs page whose path has a segment over 128 characters or is over 256 characters long, so one such entry in the listing no longer makes every rerun fail with
unity docs cache add.DOCS_CACHE_INCOMPLETE -
A pager set inor
UNITY_PAGERthat fails without showing anything no longer loses the output when it is slow to start (for examplePAGERon Windows): the output is printed to the terminal instead.cmd /c exit 1 -
and
unity vcs affectedno longer stop when an assembly definition repeats a key or holds a broken Unicode escape. They count that file as unreadable and carry on.unity test --affected -
and
unity help <word>now report an unknown command and exit with code 2 when nothing is namedunity <group> help <word>. Before, they printed the root or group help and exited 0.<word> -
,
unity projects add,removeandpinnow endunpinoutput with one--format ndjsonline, on success and on failure, asresultends with its envelope. Before,--format jsonprinted bare paths, a failure printed only an error on stderr, and a damaged project list printed nothing on stdout.add -
and
unity editors upgradenow fail when the releases service can't be reached or answers with an error status. Before,unity editors inforeported "Up to date" and exited 0, andeditors upgradereported the version as not found and exited 11.editors info -
with more than one version now reports "too many arguments" and exits with code 2. Before, it exited with code 1 and a message that the command isn't supported with these options.
unity uninstall -
now refuses an application name made only of spaces, tabs or invisible characters, as it already refuses an empty one. Before, it stored a blank revocation that
unity auth revokelisted as an empty row.unity auth consumers -
and
unity logs --console --followwork again with Unity Pipeline 1.0.0-pre.1, which refuses the oldunity recompile --strictname. Both still sendsince_session, which every older package reads, and switch tosince_sessionwhen the package refuses the old name.since-session -
When a proxy auto-configuration (PAC) script lists several proxies and the first can't be reached, the CLI moves on to the next one. It connects directly only when the script allows it.
-
On Windows, a proxy auto-config (PAC) script whose server cannot be reached, such as a company PAC while you are off the VPN, no longer stalls commands for about 20 seconds. The CLI gives up on the script after 10 seconds and falls back to your other proxy settings, or connects directly.
-
through an Editor that already has the project open works again with Unity Pipeline 1.0.0, which refused the output directory under its old name and the build options as a plain string. The CLI still sends the old name first, which every older package reads, and switches to the new one when the package refuses it.
unity build -
runs against Pipeline 1.0.0 as well as older Pipeline packages, instead of failing on the first step with an empty reason.
unity projects audit -
A usage mistake no longer fails with the "isn't supported with these options or in this environment" error (exit 1). A command with an extra word before, such as
--help, prints that command's help.unity projects info path --help -
now says that
unity docs --helpsearches the manual, and names--manualto list its pages.unity docs toc --manualsays the same when it has no page to print, instead of asking for a more specific name.unity docs --content --manual -
Theexample in
unity docs --clinow opens a page that exists.unity docs --help -
Withor
--json, commands run from Claude Code no longer print the Claude plugin hint line on stderr, so stderr carries only what a parser expects.--format ndjson -
no longer returns a page address that doesn't exist for a full API name such as
unity docs --url. When the page index has no such page, it returns a search address, as for any other name.UnityEngine.Rigidbody.velocity
-
1.0.0-beta.17
Release date: November 05, 2026
-
Security
- now signals a process only if it is a Unity Editor that did not start after the Editor's recorded start time, and checks again before each signal. A stale or tampered editor record that names a process that is not a Unity Editor, or one that started after the recorded time, is refused with a message, and that process is left running.
unity projects close --force
-
Added
-
and
unity plugin installwarn you before they download a beta build of a plugin, so you know it isn't a stable release. Withunity plugin upgradethe warning is in the output's--format json.warnings -
A plugin can declare other plugins it needs.and
unity plugin installinstall the required ones first, each with its own license step,unity plugin upgraderefuses a plugin an installed plugin requires, andunity plugin removelists each entry'sunity plugin --json.dependencies -
adds a draft version to a Pipeline Automation app, empty or copied from an existing version with
unity pipeline automation apps versions create <app-id> --version <version>.--base-version -
creates a Pipeline Automation app and its first draft version from options, or from a JSON file with
unity pipeline automation apps create.--file -
shows how many seconds each phase of a build took, from waiting for a machine through upload. It is available on staging only for now, and on production it stops with an error before sending any request.
unity pipeline cloud-build builds timeline <build-number> --build-target <target>
-
-
Changed
-
installs the Unity skills from a newer release of the Unity-Technologies/skills repository. The
unity skill installskill now covers streamed command output and theunity-cliandantigravityskills clients, andqwennow upgrades a project to Unity 6000.7 or later withnew-unity-project.unity projects upgrade -
opens the common page for a bare name that several script reference pages share:
unity docsopensunity docs StartandMonoBehaviour.Startopensunity docs Log, instead of a search. A name with no clear common owner still opens a search.Debug.Log -
updates a plugin's agent skill only where it is already installed: user-wide, or in the current project. Run it from a project to refresh that project's copy.
unity plugin upgrade -
writes the plugin's agent skill into the current project, for each AI client whose project already has Unity's skill. Claude Desktop is skipped, because its skills are global only.
unity plugin install <id> --local -
no longer deletes the remote repository unconfirmed when it can't ask (a machine format,
unity projects link vcs --rollback --delete-remote, no terminal on stdin, or CI). It now fails with--non-interactive(exitLINK_VCS_DELETE_REMOTE_REQUIRES_YES) before it reads or detaches anything, only where a delete could happen (a run with no origin or a self-hosted origin is unchanged); pass the new2(--yes) to delete without asking.-y -
Athat fails because of your machine or network no longer sends a crash report: a download that stalls, a download that doesn't match its checksum or goes missing, an operating system that refuses to start the new binary, a denied or full disk, and a file the system won't replace. The message and the exit code stay the same, and the error no longer suggests
unity self-updatefor the checksum, stall and blocked-launch cases.unity bug -
When the Unity release service can't be reached,and
unity installorunity editors default latestnow fall back to Unity 6000.0.85f2 and 6000.3.28f1 LTS, up from 6000.0.64f1 and 6000.3.10f1.lts -
Crash reports leave out problems on your side, such as a full disk, a denied permission, a network failure or not being signed in, and the same failure is reported at most once an hour. A crash no longer holds up the prompt for more than about a second and a half when you run the CLI in a terminal.
-
If you opted in to analytics, a crash report carries the same anonymous device id analytics uses. Without that consent it carries no id.
-
Turning off Send crash reports in the Unity Hub's settings now turns off the CLI's crash reports too.still turns them off on its own.
UNITY_NO_CRASH_REPORT -
Updated usage analytics defaults for new installs.
-
-
Fixed
-
waits for an asynchronous Editor test run to finish, and marks a capture that writes a file as able to overwrite one, with Pipeline packages that name their parameters in kebab-case (
unity mcp,async-tests).output-path -
The install scripts install the latest beta again when no stable release exists yet, instead of failing.set to a channel still installs only from that channel.
UNITY_CLI_CHANNEL -
,
unity pipeline listand every command that finds a running Editor by its project now find an Editor launched with itsunity statusargument in quotes, such as-projectPath. Such an Editor was not listed at all."-projectPath" "C:\My Project" -
,
unity skill installandunity skill refreshinstall the latest published Unity skills, even on a machine that has never run the CLI before. Previously a first install could write the skills from before the most recent update.unity setup -
and
unity skill refresh --format jsonnow write a result for every run. The JSON envelope or the final--format ndjsonline lists each tracked install the refresh looked at, with what it did:result,refreshed,up-to-date,prunedorskipped(conflict,would-updateorwould-skipunderwould-prune), plus a--dry-runwhen the row was left alone or pruned for a reason.skipReason -
An extra argument on,
unity cloud,unity context,unity buildandunity pipelinecommands (exceptunity projectsandunity pipeline automation), for exampleunity pipeline cloud-build, now printsunity cloud status extraand exitserror: too many arguments, like every other command. It used to exit2with "isn't supported with these options".1 -
,
unity vcs setup,unity projects createandunity projects link vcsno longer say a GitHub or GitLab token is invalid when the provider can't be reached. They exit 7 withunity projects clone --vcs, and still exit 3 withVCS_PROVIDER_UNREACHABLEwhen the provider rejects the token.VCS_TOKEN_INVALID -
now generates a job that runs in a project folder whose name starts with a dash, such as
unity ci init --provider gitlab.-rf -
and
unity pipeline installunderunity pipeline upgradenow print their result as--format tsvlines under a header row, one line per field (key<TAB>value,packageId,version,projectPath; andalreadyInstalled,previousVersion,upgradedfor upgrade). Before, a script got one headerless row of positional cells and could not tell which cell was which.alreadyLatest -
now respects
unity install-moduleswhen one build of the version is installed: an invalid value exits 2 in every mode, and an architecture that is not installed exits 6 with a not-found message for--architecture,--list, named modules (--all) and the module picker, instead of using the installed build.-m -
,
unity projects create(flag form and URL form) andunity projects link vcswithunity vcs setup(or the deprecated--git-token-from-stdin) no longer fall back to a stored login (a Git credential helper,--git-token-stdinorgh) when stdin is empty. They now fail with exit code 4 (glab) and create or push nothing, so a script that pipes an empty variable cannot act as whoever is signed in.VCS_TOKEN_REQUIRED -
now fails with exit code 6 when the organization has no project, or more than one, matching that name. It used to exit 0 with only a warning.
unity projects create --cloud-project <name> -
Creating a Unity Cloud project withnow works on
--coppa unspecified,unity projects create,projects link cloudandprojects link vcs. The Cloud request was refused with HTTP 400, so the project stayed unlinked.vcs setup -
or
unity projects create --vcs githubwith a--vcs gitlabnow exits--git-token(7) when the token check cannot reach the provider (offline, a failed DNS lookup, a refused connection, or a proxy that is down), andVCS_PROVIDER_UNREACHABLE(14orETIMEDOUT) when it times out, instead of reporting the token as invalid (exitECONNABORTED). Nothing is written in either case.3 -
no longer blanks the human answer of commands whose result is a sentence or a table.
--quietnow prints "No documentation is cached..." on stdout instead of nothing, andunity docs cache --quiet,context,auth accounts,config,editors running,skilland the other commands listed in the deviation keep their answer underdoctor.--quiet -
no longer reports
unity license statuswithsignedIn: truewhen nobody is signed in and the sign-in service refuses the CLI. It now reports the saved sign-in, or signed out when none is saved, matchingauthMode: "oauth".unity auth status -
now refuses a
unity testthat is the same file as--junit-outputon the report folder's own terms, instead of letting the JUnit report overwrite the NUnit one. Names that differ by letter case, the dotless and dotted--output, or Unicode form are only a candidate, and the file system decides, component by component from the first path component that differs: a spelling that exists while the other does not is a different file, two that exist are compared by file identity (a dangling link, whose target cannot be looked up, is judged by its link entry and never counts as a different file), and two that are absent are probed with a file created under the first name in a scratch folder inside the nearest existing folder, removed again, so nothing is created or removed at the report paths (a probe that cannot be made or read proves nothing and does not refuse the run), and right before the JUnit report is written the two files are compared by identity once more, so a link or an 8.3 short name created by the NUnit write cannot send the JUnit report over it (NTFS through WSL keepsiandÉas two files and foldsÉintoı, a folding folder makesIandÉone).É -
Commands that talk to a running Unity Editor, such as,
unity command,unity recompile,unity jobandunity logs --console, no longer crash when the current directory can't be read or no longer exists (a permission refusal such as macOS blocking a protected folder, or a folder deleted under your shell). They skip it, and with several Editors open ask you to pick one withunity projects audit.--project-path -
links a project whose
unity projects link cloud, as the Editor wrote it, no longer names a cloud project, where it refused with the stale link from the Hub's project list.ProjectSettings.asset -
now exits with code 7 (14 for a timeout) when Unity's services can't be reached (for example behind a dead proxy), instead of exit 6. Unity Cloud commands whose sign-in step gets no answer from Unity's services now say the services can't be reached, instead of telling you to run
unity projects link cloud.unity auth login -
now registers the project with its Unity Version Control link, workspace location included, even when the workspace cannot be read back from
unity projects clone --vcs uvcs, socmfinds the workspace it removes instead of reporting the project as already unlinked or naming the wrong folder.unity projects unlink vcs -
on Windows no longer refuses a project at the root of its Unity Version Control workspace just because the path differs in letter case (for example
unity projects unlink vcsagainst theC:\work\gamethatc:\work\gamereports), so it removes the workspace withoutcm. A project below the workspace root is still refused.--unlink-workspace -
of a repository you already cloned into another folder no longer fails with "workspace already exists": the second clone gets a workspace named for its folder (
unity projects clone --vcs uvcs), and a name still taken is reported with the<repo>_<folder>command to free it.cm workspace delete -
On Windows,registers the project with backslashes only (
unity projects clone --subpath), instead of a path that mixedC:\dir\Sub\Gameand\./ -
treats a project whose registry row records its workspace folder itself (as the Hub writes it) as linked to that folder, instead of refusing with a folder two levels above it or removing the
unity projects unlink vcsthere..plastic -
On Windows, pressing Ctrl-C while a command shows its spinner no longer leaves the Windows Terminal tab and taskbar progress indicator spinning.
-
now prints the same table as a run without
unity terms status --quiet, and prints "No installed Editors found." when no Editor is installed, instead of printing nothing.--quiet -
On Windows,now names the expected publisher,
unity hub install, when it refuses an installer whose signature does not check out, instead of the macOS Developer ID.Unity Technologies SF -
On Windows,and
UNITY_PAGER=morenow page long listings; the pager lookup also findsPAGER=moreprograms..com -
Aor
UNITY_PAGERthat cannot be found now prints a warning on stderr instead of silently printing the listing unpaged.PAGER -
A sign-in refresh that times out, and a service-account token exchange that gets no answer from the network, no longer send a crash report. The messages and exit codes are unchanged.
-
,
unity vcs doctor,hooks,status,switchandsyncnow say what to check when git cannot be started (not installed, not on yourworktree, or not allowed to run), under the new error codePATH.GIT_START_FAILED -
reports an accounts database it cannot write to with the same message and
unity contextcode asLOCAL_STORE_UNWRITABLE.unity auth -
A pipeline artifact the build does not list, an accounts databasecannot write to and a git that cannot be started no longer send a crash report.
context -
writes the config file when it sits on a different drive than its temporary copy, which happens when
unity mcp configureis redirected, as with a packaged Claude Desktop. Previously it failed with "The system cannot move the file to a different disk drive" and left the config untouched.AppData -
now exits with code 1, instead of 6, when it can't write a config file (for example a read-only folder) in the human,
unity mcp configureandtsvformats;githuband--format jsonalready used 1. Scripts that check for exit 6 on a failed write should check for 1.ndjson -
no longer skips a file change on a busy machine. A slow poll under heavy load used to push the next check far out, so a change could land in the gap and go unnoticed until the following one.
unity watch test -
The one-time privacy notice now matches your analytics setting on every first command. Before, a machine with analytics on could be told how to turn it on instead of how to turn it off.
-
1.0.0-beta.16
Release date: November 03, 2026
-
Added
-
In Unity Editor versions that support it,shows the modal dialog the Editor is waiting on, and
unity command editor dialogpresses one of its buttons, even while the dialog blocks the Editor.unity command editor dialog answer <id> <button>shows each Editor's phase (such asunity pipeline editorsorloading project) and every endpoint it serves with its type, shows the open dialog, and no longer suggests restarting an Editor that is still loading its project.safe mode -
installs or updates one AI client's Unity skills without prompting, keeping any copy you edited. With no client it picks the agent running it,
unity skill sync [client]prints a session-start hook document, and an unchanged run downloads nothing.--hook -
When an AI agent runsand its Unity skills are older than the CLI's pin, the CLI suggests
unityonce a day.unity skill sync <client>turns it off.UNITY_NO_AGENT_HINTS -
installs the Unity skills for VS Code and prints how to add the Unity plugin there with Chat: Install Plugin from Source.
unity setup vscodeinstalls the Unity skills for OpenCode and writes a plugin file,unity setup opencode(under~/.config/opencode/plugins/unity.jswhen it is set), that keeps them current at the start of each session.$XDG_CONFIG_HOME -
now supports Google Antigravity (
unity skill install) and Qwen Code (antigravity).qwen -
gives every project linked to a cloud project a
unity projects createkill switch in Remote Config, set on the server and never in a file, so live features can be turned off from the Unity Dashboard without a new build. An existing switch is never changed, and a project whose Remote Config already has aliveops_enabledconfig is asked to add the switch in the Unity Dashboard instead.settings -
adds Cloud Save and one save slot for the signed-in player to every project linked to a cloud project.
unity projects createleaves it out.--bare -
now builds through the Unity Editor that already has the project open instead of refusing, and switches that Editor's active build target;
unity build --targetand Ctrl+C stop waiting without closing the Editor or stopping its build. An Editor in Play Mode, compiling scripts or showing a dialog is refused with a hint, and--timeout,--execute-method,--profile,--args,--accelerator,--no-accelerator,--log-file, an--editor-pathother than the open Editor's,--editor-version(or--architecture),UNITY_ARCHITECTUREand the--build-target-groupoptions still need the Editor closed.--android-* -
starts the CLI's sign-in service if it isn't running, so a plugin can rely on it before it reads your session.
unity auth broker ensure -
names the asset behind each changed reference, looked up at that side's commit, and marks assets added or deleted in the range, built-in resources, package assets and objects in the same file.
unity vcs diff -
shows which asset each guid names, in your working tree or at a commit with
unity vcs guid <guid...>.--at -
shows what changed inside each changed scene, prefab and asset in the range, object by object, the way
unity vcs summarize --objectsdoes for one file. Each file's report is capped likeunity vcs diff's; addunity vcs diffto see every change.--full -
ends the summary at that commit instead of the one you have checked out, so you can summarize a pull request or a past range without switching branches. For example,
unity vcs summarize --to <ref>.unity vcs summarize --since main --to feature/login -
shows every changed object and every value whole, in human and json output. A value nested more than 8 levels deep still collapses, and is marked truncated.
unity vcs diff --full -
installs the Unity skills into every agent client found on your machine, one line per client. It never starts an agent's own CLI, so it works on a machine without git.
unity skill install --all -
now sets up build targets:
unity pipeline cloud-buildandtargets createtake one option per field, or a whole target as JSON withtargets update(--filereads stdin),-lists andconnectionsadds a project's repository connections (Unity Version Control uses your Unity sign-in),connections createchecks a repository is reachable,scm check-urluploads signing credentials,credentials android|ios|osx|uwp uploadlists a target's configuration changes and who made them, andtargets auditlogshows whether the organization has reached its free tier limit. Passwords and tokens are read from stdin or an environment variable, never from an argument, and never appear in output.org free-tier
-
-
Changed
-
shows a command's output as the Editor writes it, while the command runs, when the Editor supports it.
unity command(or--format json, orndjson) writes the command's result as one JSON value per line and--jsonone tab-separated line per record; pass--format tsvto pick the fields.--fields name,path -
For scripts: against an Editor that formats its output,prints the command's result without the
unity command --format json,success,commandandparametersenvelope, andtargethas no header row.--format tsvwrites the same lines as--format ndjson, and--format jsonthe human layout.--format github -
listings (
unity command,unity command,--tag, a group name such as--tags) come laid out by the Editor when it supports it, in the same layout without the connection lines above it, and print as they arrive instead of through the pager.unity command editor -
The Asset Library plugin () now gets the account the CLI is signed in to.
unity assetlibrary -
Two new exit codes:(
17) when the Editor is busy loading, compiling, reloading, in Safe Mode or running too many commands, andUNAVAILABLE(18) when a modal dialog blocks it. Both used to exitAWAITING_INPUT.6 -
,
unity setup claude,codex,grok,copilotandantigravitynow also install the Unity skills for that agent, because the Unity plugin no longer carries them.qwendoes the same for each plugin agent it finds.unity setup all -
no longer registers the Unity MCP server for coding agents that can run shell commands, which use the
unity setup allCLI directly. Rununityif you want it.unity mcp configure <client> -
opens the package's own docs from the project when it has them, so it works offline.
unity docs --package <name>opens the online manual instead, and--onlinereports--format jsonassourcewith the file'slocal.path -
A command that cannot reach its service because you are offline, a DNS lookup fails, the connection is refused, or the proxy is down now exits(
7) instead ofNETWORK_UNREACHABLE. This covers6,unity releases,unity changelog,unity self-update --check,unity pipeline list-versionsandunity cloud org.unity cloud project -
now returns the same listing shape as the other list commands: the cached versions are in
unity docs cache --format json, next todata.items,totalandnextPage, instead of being a bare array inpartial. Underdatathe last line carries the same fields next to--format ndjson.count -
The install scripts now finish by installing the Unity skills into every agent client found on your machine, instead of running. On a Mac without the Xcode Command Line Tools,
unity setupcould not install the Claude Code plugin, because Claude Code needs git to add a plugin marketplace.unity setup -
installs the Unity skills from a newer release of the Unity-Technologies/skills repository, including the current
unity skill installskill, which by default sets up a project from your prompt without a long interview, and the newnew-unity-projectskill.craft-game-floors -
On Linux, installing or adding a Unity Editor no longer adds an entry for that version to the applications menu. Editor windows keep their name and icon.
-
answers sooner on a cold start when the topic's Editor version is known (from the project or
unity docs <topic>): it opens or prints the page as soon as the documentation index files read so far hold it, instead of after the whole index has loaded. It sends the same requests to docs.unity.com as before and caches the same index.--editor-version
-
-
Fixed
-
now installs into
unity skill install opencodewhen$XDG_CONFIG_HOME/opencode/skillsis set, where OpenCode looks for them, instead of alwaysXDG_CONFIG_HOME. A copy an earlier version put in~/.config/opencode/skillsstays there; delete it if you set~/.config/opencode/skills.XDG_CONFIG_HOME -
A URP project made withno longer opens on the "URP Material upgrade" dialog, which held up every Editor command until someone clicked OK. The payload's new
unity projects createblock reports it.urpMaterials -
prints the docs for the package version the project uses, not a newer copy left in the package cache.
unity docs <package> --content -
commands no longer say "Not signed in" when getting a Unity token fails for another reason, such as a rate limit, no network connection or an unreachable proxy. They now report "Collaboration API call failed:" with the real cause, as
unity collabdoes.unity cloud -
A signed-outcommand now always says how to sign in with
unity collabor use a service account withunity auth login, instead of sometimes leaving out the service-account route.unity auth service-account -
now refuses to run together with
unity self-update --rollback,--dry-run,--check,--changelogor--target, and exits--channelwithout changing anything. Before, those flags were ignored and the rollback went ahead.2 -
no longer installs the public build of that version when the changeset belongs to a different build. It now exits 11 (
unity install <version> --changeset <changeset>) and installs nothing.RELEASE_NOT_FOUND -
and
unity pipeline automationno longer put stray control characters around a command name, such asunity pipeline cloud-build, in the error message ofunity auth loginand--format jsonoutput when you are signed out.--format ndjson -
no longer empties
--quiettables.--format tsvprinted nothing and exited 0, so a script that piped it got no data.unity --quiet --format tsv releases -
and
unity config proxynow show the proxy from theunity envflag, with source--proxy, when you pass it. They used to show no proxy, or the one from your environment, although requests already went through the flag.flag -
exits
unity commandwith the14error code when the Editor stops a command that ran pastEDITOR_TIMEOUT, instead of exiting--timeoutwith6, so scripts can tell a timeout from a failure.COMMAND_FAILED -
now reports the Editor it removed under
unity uninstall,--format jsonandndjson: the json envelope and the ndjson result frame carrytsvandversion, andarchitectureprints them as key and value rows. It used to print nothing and exit 0.tsv -
with no version now announces the stored default Editor on stderr instead of stdout, so a
unity uninstallrun no longer starts with a line that breaks the parse.--format json -
and
unity language --setprint a value you typed, or a project folder name, on one line with no color codes when they refuse it, so a newline in the value can no longer add a fake second error line.unity ci init -
now refuses to write when the docs cache folder is itself a symbolic link, the same way it already refused a link inside it.
unity docs cache add,unity docs --content, topic lookup andunity docs tocno longer read through such a link either.unity docs cache -
Tworuns started at the same time no longer share one download, which made one of them fail with "No such file or directory". The second run now says it is waiting for the other and starts once that one finishes.
unity self-update -
given an empty
unity vcs diffor--fromnow says which option needs a revision and exits with code 4 (error code--to). It used to print an untranslated internal error and exit with code 6.VCS_REVISION_EMPTY -
reports a new file that has never been committed as
unity vcs blame, instead of saying the path does not exist.untracked -
now refuses a value that is not a date, such as
unity vcs git migrate-lfs --after, with a usage error instead of scanning anyway. It takes an ISO date such asbanana, with an optional time and zone, or a relative one such as2025-01-01."2 weeks ago" -
now fails with exit code 6 and the
unity auth revokeerror when the revocation list already holds 1,024 applications, instead of exiting 0 without revoking anything. Restore an application withAUTH_REVOKE_LIST_FULLto make room.unity auth revoke <application> --restore -
, and its default when output is piped, now prints
unity cloud project current --format tsvlines with the same fields askey<TAB>value(--format json,activeOrganizationId,activeCloudProjectId,defaultCloudProjectId) instead of the human sentences.linkedCloudProjectIdno longer hides them.--quiet -
and
unity installrefuse aunity install-modulesthat is a file right away, a--download-directoryincluded, with a "not a directory" error (exit 6,--dry-runin JSON), instead of passing the dry run or failing late.PATH_NOT_A_DIRECTORY -
now warns when
unity installis not a non-negative integer, asUNITY_INSTALL_RETRIESdoes, instead of silently using 2 retries.unity install-modules -
now filters on each release's date. It used to compare the year with the version number, so every Unity 6 release passed any year (
unity releases --from-yearlisted them all) and older-line patches released in that year were left out.--from-year 2099 -
writes
unity docs cache add --format ndjsonframes while it downloads pages, before the result frame.progress -
now suggests
unity self-update 1.2.3when it rejects a CLI version, instead of pointing atunity self-update --target 1.2.3.unity editors upgrade -
On macOS and Linux,now stops the Unity auth broker and removes its
unity self-uninstallfolder, so~/.unity/runno longer stays behind when you uninstall while signed in.~/.unity -
no longer leaves a copy of the project in the temp folder when a signal such as SIGTERM stops it.
unity templates pack -
now checks the minimum Editor version the archive's
unity projects create --template <path>.tgzdeclares, and refuses an older Editor with the same "requires Unity" error as a template folder, before the Editor starts.package.json -
On macOS and Linux, Ctrl-C or SIGTERM duringnow stops the Unity Editor it started, instead of leaving it running and writing the project. The command exits 130 or 143 and names the folder that holds the partial project.
unity projects create -
writes each attachment as its own row line with no
unity collab attachments <annotationId> --format ndjsonmarker in front, so a line holds one"type":"row"(the attachment's kind), astyperows do. Theunity templatesitems are unchanged.--format json -
now changes a sketch's camera, time or metadata on its own, without
unity collab attachments update sketch, instead of failing with "Sketch Data must not be null or white space." The sketch is read and written back in two requests, so another client's edit to the same drawing in between is overwritten; pass--sketch-datato set the drawing explicitly.--sketch-data -
with only
unity collab attachments add sketchor only--previewnow stops before sending anything and says both files are needed, instead of failing with HTTP 404 and leaving a half-created sketch attachment behind. Pass both files, or neither.--sketch-image -
no longer leaves an unfinished attachment behind when the file transfer fails, so you can run the upload again on the same annotation. If the attachment cannot be removed, the error names the
unity collab attachments uploadcommand that clears it.unity collab attachments delete -
exits 6 with "Could not read the previous results" when
unity test --rerun-failednames an empty file or one that holds no NUnit test run, instead of reporting that no tests failed and exiting 0.--output -
prints
unity projects inforows underkey<TAB>valueand when its output is piped, and one JSON line with--format tsvunder"type":"result", instead of the human block.--format ndjson -
refuses a URL with a
unity projects clone <url>or.path segment, an empty path segment, a space, a backslash or a non-ASCII character with an invalid repository or invalid URL error (exit 2), instead of reporting it as unsupported in this environment (exit 1)... -
on a project that is already open in a Unity Editor now stops with an error that names the running Editor's process, and exits
unity projects upgrade. It used to launch a second Editor, which refused the open project, and report the upgrade as in progress with exit6.0 -
on a project already in your list records its provider, organization and repository, as linking without a URL does, so
unity projects link vcs <path> <url>andunity projects --vcsshow the link.unity projects info -
links an issue without
unity collab jira issues link, instead of failing with--jira-project-config-id.HTTP 415: Unsupported Media Type -
without
unity collab jira issues createnow sends the project config's default reporter instead of failing with HTTP 400.--reporter-user-id -
and
unity collab jira project unlinkfail with an HTTP 404 error (exit 6) when the link does not exist, instead of reporting success.unity collab jira issues unlink -
now refuses a value that is not a whole number of at least 50, such as
unity collab thumbnail download --width,60abcor64.5, with a usage error before any request. A smaller width made the service answer HTTP 500.49 -
fails with an unknown command error that suggests
unity projects new <name>(addunity projects create <name> --no-cloudfor a project without the Pipeline package), instead of an error about arguments to--bare. Any other unknown word followed by a second word underlistis reported as an unknown command too.unity projects -
and
unity vcs diff --fullnow name the objects a changed value refers to in objects larger than 4 MB. Withoutunity vcs summarize --full, those names are still left out, and the report now says so: a notice in human output,--fullin json.referencesTruncated: true -
and
unity vcs diffshow a reference to a built-in asset with its guid as written,unity vcs summarize --objects, instead ofguid: 0000000000000000e000000000000000. Any value of exactly 32 hex digits now prints as written.guid: 0 -
(or
unity projects create -a arm64) no longer creates the project with an Editor of the other architecture when that is the only one installed for the version. It fails as an Editor that isn't installed, and the suggested-a x86_64command installs the architecture you named.--install-editor -
Pressing Ctrl-C duringor
unity projects createon Windows now stops the Editor, deletes the private Editor log (which held your home path) and fails with exit code 130, naming the folder that holds the partial project. Before, the command exited silently and left the log in the temp folder.unity new -
now refuses an update manifest whose version is not valid semver, with the same "update manifest couldn't be read" error (exit 6) as a malformed one, instead of reporting an empty latest version or requesting a download that 404s.
unity self-update -
names what to do when the service refuses the export with "No assets found for the provided ids" (an annotation points at an asset that was deleted): run
unity collaboration annotations exporton the exported target to list the targets, then export the ones that still exist withannotations count --grouped. The service does not say which asset is missing, so the CLI cannot skip it.--target -
in the browser now replaces a stored service account with the new sign-in. Before, it said "You are now signed in" while
unity auth loginand other commands kept using the service account until you ranunity auth status.unity auth logout -
Whenfails to configure an MCP client, the failure now says why (for example that it can't read the client's config file) instead of only pointing at
unity setup all.unity bug -
A,
socks5://orsocks5h://proxy now works for downloads, plugin installs andsocks4://. They used to fail withunity self-update --checkwithout ever contacting the proxy.unsupported scheme -
now completes the global options, such as
unity completion powershelland--format, and the values they accept, as the bash, zsh and fish scripts do. It listed only the commands before.--color -
,
unity auth accounts,statusandconsumersnow accept the globalrevokeoption instead of failing with "isn't supported with these options or in this environment".--no-header -
without a version now says "No version specified" and exits 2, like
unity install --changeset <changeset>does, instead of reporting an empty version as invalid with exit 6.unity install -
fails when the project's
unity projects unlink vcshas a line git cannot parse, leaving the file unchanged, instead of reporting there is nothing to unlink..git/config -
refuses a value above 2147483647 seconds with the usage error, instead of accepting it and looking for an Editor.
unity projects audit --timeout -
On Linux,no longer registers a folder that holds no Editor. It registered
unity editors add <folder> --skip-signature-checkas an installed Editor with an empty version and exited 0./tmp -
on Windows no longer fails with
unity vcs doctor --fix("The filename, directory name, or volume label syntax is incorrect") on every repair; theVCS_DOCTOR_WRITE_FAILED,.gitignoreand serialization fixes are written again..gitattributes -
now refuses up front, with exit
unity vcs git worktree add --install-editor, when the branch needs an Editor that is not installed and the run cannot ask for confirmation. Before, the refusal came after the branch and the worktree folder were created, so running it again failed with the branch already checked out.2 -
,
unity vcs status,sync,setup,doctor,conflicts,affected,switch,merge-setup,hooks,git migrate-lfsandgit worktree/uvcs locks/changesetsgiven an empty path (review) now say no path was given and exit""(2). Before, the empty path was read as the current project and the command ran on it.VCS_PATH_EMPTY -
now prints the page as Markdown when the Editor has the Documentation module installed. Before, it opened the local page in the browser and printed nothing.
unity docs <topic> --content -
now prints the help of
unity mcp help, asunity mcpdoes, instead of failing with "unity mcp isn't supported with these options or in this environment".unity mcp --helpprints the help ofunity mcp help configure.unity mcp configure -
prints a header and one row per client (
unity mcp configure --list --format tsv,key,displayName,configPath), andstatusprints the run's result asunity mcp configure <client> --format tsvrows, instead of nothing and exit 0.key<TAB>value -
,
unity buildandunity runwithunity test(or-a arm64) no longer launch an Editor of the other architecture when that is the only one installed for the version. They fail as an Editor that isn't installed (exit 6), and-a x86_64installs the architecture you named.--allow-install -
On Linux,pointing at a directory or at a file that is not executable now stops with
--editor-pathand says the path is not a Unity Editor, instead of failing later with a rawEDITOR_PATH_NOT_A_UNITY_EDITORerror.spawn ... EACCES -
,
unity buildandunity runwith aunity commandin a folder that cannot be created (no permission,--log-file) now say the path is unusable and name the file and the flag, instead of "An unexpected error occurred"./proc -
now writes a pipeline that changes into a project folder whose name holds
unity ci init --provider gitlabor:, such as#, instead of one GitLab reads as a mapping or cuts short.a: b -
exits 7 (network unreachable) when the page request gets no answer after the page index answered, the same as when the index is unreachable, instead of exit 6. A page request that times out exits 14 and one whose connection is reset exits 6, as the exit codes table says.
unity docs --content -
refuses an
unity templates packthat reaches the project being packed through a symlink, a Windows junction or an 8.3 short folder name, the same as a direct path inside the project (exit 2), instead of writing the archive into the project.--output -
and
unity templates createnow say why a permission error stopped them, asunity templates pack, instead of printing onlyPermission denied: <path>. The JSONUNABLE_CREATE_TPLcarries the same text anderrors[0].messageand the exit codeerrors[0].codeare unchanged.6 -
with no Editor installed now points you to
unity install-modules --editor-version <version>. Before, it only said that no editor was found for the version.unity install <version> -
exits 0 when every module you name is already installed, as
unity install-modules -m <module>does: it printsunity editor module add, or the empty plan underAll modules are already installed.and--format json. Before, it failed withndjsonand exit code 6.No modules found to install. -
,
unity editor moduleandunity editors modulenow show theunity install-modules --listcolumn (theAliasesfield inaliasesand--format json), likendjsonandunity modulesalready did. The column comes last, so existingunity install --list-modulespipelines keep their field order.tsv -
with a URL that has no repository path, such as
unity projects clone, now says the URL is invalid instead of blaming ahttps://github.comoption that was never passed.--vcs-repo -
no longer prints raw escape codes from an application name, scope or time in the human and tsv tables when the broker's audit log was edited or written by another tool. json and ndjson output is unchanged.
unity auth consumers -
and
unity cloud orgexit with code 3, instead of 6, when the Unity services refuse the request with an HTTP 401 or 403 after you have signed in. The error code and message are unchanged.unity cloud project -
now reads
unity editor module addasUNITY_INSTALL_RETRIESdoes, retrying a failed module download that many times (default 2), and warns when the value is not a non-negative integer, instead of always running with 0 retries.unity install-modules -
removes the deleted template's entry from the template sources, so a template made with
unity templates deleteno longer leaves a stale source behind.unity templates create -
and
unity projects unlink cloud --cascade-vcsend their failure message with one period when the system's own error text already ends with one, instead of two.unity projects unlink vcs -
and the other commands that stop on Ctrl-C now leave SIGINT and SIGQUIT ignored when the parent process ignored them, as a background job started from a script does. Before,
unity logs --followinstalled its own handler anyway and exitedlogs --follow.130 -
Pressing Ctrl-C at thequestion of
Update it?now ends the command with theunity mcp configurecode and exit 130, like every other prompt, instead of exiting 1 with a generic failure hint. The config file is left as it was.INTERRUPTED -
now tells you to run
unity editors addwith the Editor path, shell-quoted, when it refuses an Editor that is not signed by Unity Technologies, in every language.unity editors add --skip-signature-check <path> -
On Windows,keeps retrying for up to 30 seconds to remove
unity self-uninstallwhen another process still holds it, such as an MCP server started from it, and no longer leaves its temporary cleanup folder behind.unity.exe -
PowerShell completion now offers a command group's subcommands after a space. Pressing Tab afterlisted the top-level commands again; it now lists
unity auth,login,statusand the rest, asaccountsalready did.unity auth ac -
Pressing Ctrl-C duringand the other
unity vcs synccommands that run git now ends the git process with the CLI, so a pull or push no longer finishes in the background after the CLI reported it stopped.vcs -
now follows the project list. A project added or removed from another terminal while the watch runs appears or disappears on the next poll.
unity projects --watch -
On Linux and macOS, with a group-writable umask such asand a shared temp folder,
0002now creates its private cache fallback folder owner-only instead of refusing it. Before, commands that need scratch space failed for those users.unity -
Bash, zsh and PowerShell completion now skip a global option's value before the command.treated the URL as the command and offered nothing in PowerShell and zsh, or the wrong list in bash; it now lists the
unity --proxy http://localhost:8080 editorssubcommands, aseditorsdoes, withunity editorsand--proxy valuealike.--proxy=value -
In fish,now offers the commands, as
unity --proxy <url> <TAB>does. The fish completion skips the value of an option that takes one before it decides which command you are typing.unity <TAB> -
and
unity projectsnow stop with the same "project list can't be read" error asunity closewhen Unity Hub's project database is damaged or is not a file, instead of showing no projects or reporting the project as not open.unity projects add -
stops with exit code 130 and
unity templates packwhen you press Ctrl-C while it archives the project, and removes its temporary files, instead of reportingInterrupted.with exit code 6.Template packing failed -
and
unity templates location --setnow refuse, and leave--resetuntouched, when that file can't be read as settings (cut short, starting with a byte-order mark) or has custom template sources but no validtemplatesSettings.json. Before, the sources were replaced with an empty list and the command reported success.defaultPath -
warns about a folder it could not read, and marks the JSON result as partial with the folders it skipped, instead of leaving the folder out of the total without a word.
unity projects size -
without paging flags exits 7 (service unreachable) when it cannot reach the service, as
unity cloud projectalready does. The partial listing and itsunity cloud project --limit 10code are kept in the output.CLOUD_PROJECT_LIST_PARTIAL -
and
unity install-pathnow warns, naming the file, whenunity editors install-pathexists but holds no usable path (not valid JSON, truncated or empty), instead of silently printing the default editor install path. The install path in use does not change.secondaryInstallPath.json -
no longer deletes an Editor whose architecture the Hub's editor list does not record. Without
unity uninstallit now stops with a message and removes nothing; pass--architectureto remove it.--architecture -
and its "Available profiles" list now ignore a folder named like a Build Profile (
unity build --profile), asName.assetalready did. Before, the folder was listed, and choosing it by name failed with "not a .asset file".--list-profiles -
now says a self-hosted host name is accepted when it refuses an unknown provider, as
unity vcs setup --vcs <value>does. When the provider CLI for a self-hosted host has no session, the refusal now names that host's sign-in (for example--help) instead of the baregh auth login --hostname git.example.com, which signs in to github.com.gh auth login -
(and the same typo at
unity collab --some-unknown-option,collab jira,collab jira serverand the othercollab reactionsgroups) now printscollaband exits 2, as every other command group does, instead of printing the group's help and exiting 0. A bare group anderror: unknown optionstill print help.--help -
says
unity templates createfor aThe output folder does not exist: <path>folder that is missing, and tells you to pick another--outputor add--namewhen the template already exists, instead of printing an internal error name. The same sentence is in the--overwriteof the JSON and NDJSON error.message -
and
unity pipeline installno longer crash when the current directory can't be read (a permission refusal such as macOS blocking a protected folder). They skip it and use the running Unity Editor, or ask you to passunity pipeline upgradewhen none is running.--project-path -
Inside Claude Code, the CLI no longer suggests installing the Unity plugin when Claude Code already has the Unity skills from. The plugin would list the same skills a second time.
unity skill install -
An Editor opened withwhile Unity Hub is closed no longer logs
unity openwarnings during a domain reload. The CLI keeps reading the Editor’s requests while an earlier answer is still on its way.IPC stream failed to write (Timed out) -
with no
unity collaboration annotations exportasks for the whole project instead of one target path, which could return no annotations.--target -
refuses a project folder whose name holds a Unicode line or paragraph separator (U+2028, U+2029) with exit 2, the same refusal control characters already get. GitLab reads those characters as line breaks, so the generated
unity ci initgained an extra line..gitlab-ci.yml -
no longer exits 7 with "socket hang up" when the compile it starts reloads the domain and resets the request. It keeps waiting for the compile and reports its result once it ends.
unity recompile -
exits non-zero for a detached
unity job waitthat threw, like the attached run does, instead of exiting 0.script eval -
prints its plan under
unity install <version> --dry-runand--format tsv, where it used to print nothing and exit 0.--format ndjson -
now matches an application name exactly as
unity auth revokeprints it, so a name holding a line break no longer turns into two identical rows when you revoke it.unity auth consumers -
no longer calls a Pipeline package pinned to a Git URL or branch already up to date. It says the package is kept on that Git pin and names it, and leaves the manifest as it is, as it does for a package pinned to a
unity pipeline upgradepath (a local checkout).file: -
now reinstalls the Editor in the folder it is already in, replacing the old files, instead of writing a second copy to a
unity install <version> --forcefolder beside it. The same goes for<version>-<arch>with--download-directory.--force -
and
unity templates createnow leave a project's embedded packages (the package folders underunity templates pack) out of the template archive, asPackages/describes, so a private embedded package no longer ships inside a shared template. Pass--keep-embedded-packagesto include them.--keep-embedded-packages -
,
unity uninstallandunity editors prune --removeno longer open an administrator password dialog when there is no terminal to answer it (input from a pipe or file,unity editors upgrade --replace, CI, or--non-interactive/--format json/ndjson). When an Editor folder holds files you can't delete, the command now stops with a usage error (exit code 2, codetsv) before anything is removed, and tells you to run it from a terminal or as root.UNINSTALL_ELEVATION_NEEDS_TERMINAL -
is read again as the deprecated alias of
HUB_FORMATwhenUNITY_FORMATis not set. It raises the same deprecation warning as other deprecated spellings, in jsonUNITY_FORMATor on stderr.warnings -
refuses a name that starts or ends with a space (exit 6,
unity projects create), as it already refuses a name ending in a period, instead of creating the project under the trimmed name.Invalid project name -
,
unity commandandunity editors runningno longer fail and send a crash report when the folder you run them from has been deleted. They skip that folder and look for running Editors as usual.unity status -
and
unity auth logout --format jsonprint a success result (--format ndjson) instead of the "You have been signed out." notice. The ndjson result is one{"signedOut": true}line."type":"result" -
prints one
unity auth logout <account> --format ndjsonline with the same data as"type":"result", instead of the human notice.--format json -
and
unity mcp configure --localreport that the current directory cannot be read, with exit code 6, when the folder you run them from was deleted, instead of a generic refusal.--list -
now exits with code 1 and the error code
unity self-updatewhen the release has no download for your platform, orUPGRADE_NO_BINARYwhen it has no AppImage, instead of exit 6 withUPGRADE_NO_APPIMAGE.COMMAND_FAILED -
accepts a date in a form other than ISO 8601, such as
unity collab read --timestamp: it is sent to the service as its UTC time, instead of being rejected by the service. A value that is not a date, or is outside years 1 to 9999, is refused before any request is made.Fri, 02 Jan 2026 03:04:05 GMT -
gives every template
unity templates list --format jsonandisUserGeneratedfields,isNewwhen a template is neither, so a script can read both on each item.false -
now accepts a commit id, full or abbreviated, as its help says: the repository is cloned and that commit is checked out. Before, a commit id failed with
unity projects clone --ref.Remote branch <sha> not found in upstream origin -
now exits 2 with the too-many-arguments usage error, as
unity projects open a bdoes, instead of exiting 1 withunity open a b.UNSUPPORTED_STATE
-