Unity CLI release notes for October 2026
Learn about the Unity CLI releases in October 2026.
Read time 119 minutesLast updated a day ago
This page contains the release notes for the Unity CLI versions released in October 2026, from newest to oldest.
1.0.0-beta.15
Release date: October 29, 2026
-
Security
-
Linking a project to Unity Version Control now sends the repository request only to the organization it names, even when the organization's name contains a slash, a question mark or dots.
-
The CLI no longer runs a program found through a relativeentry such as
PATH. Only absolutenode_modules/.binentries are searched, so a cloned repository cannot put its ownPATH,unity,claudeorzipahead of the real one.tar -
Skill installs and refreshes (global and) now refuse a skill folder that contains a symbolic link or junction as a subfolder, on every platform. Before, a repository could use one to make the install write or delete files outside the project.
--local -
no longer resumes a paused Editor download on Windows, or as root (for example under
unity install --resume), when the current Unity release data doesn't list that Editor or gives no checksum for it. Start a fresh install instead.sudo -
,
unity install-modulesandunity editor module addnow check a module's download against the current Unity release data before installing it on Windows, and on every platform when the module runs its own installer command. A module that can't be checked, for example while offline, isn't installed.unity install --resume -
now takes a paused Editor download's address from the current Unity release data when it lists that version, and on Windows doesn't resume one it can't check.
unity install --resume -
and
unity installno longer reuse or resume a file already in the download folder for a download the release data gives no checksum for. They download it again from the start, so a file someone else placed there is never installed in its place.unity install-modules -
and
sudo unity installon macOS and Linux now check and install a copy of each download kept in a folder only root can open, so another program running as you can no longer swap the file between the checksum check and the install. As root, archives no longer restore their own file owners or permissions, andsudo unity install-modulesandtarcome only from the system folders, never from yourunzip.PATH -
workflows now run
unity ci initwith the serial in the step environment, and mask it in the GitHub Actions log, so the serial no longer appears in the process list. The service-account secrets are set only on the steps that use them, not on the whole job.unity license activate -
reads the Android keystore and key alias passwords from
unity buildandUNITY_ANDROID_KEYSTORE_PASSWORDwhen you pass noUNITY_ANDROID_KEY_ALIAS_PASSWORDor--android-keystore-password. The flags still work and take precedence.--android-key-alias-password -
The Unity Editor that,
unity buildand other batch commands start no longer inheritsunity testorUNITY_GITHUB_TOKEN.UNITY_GITLAB_TOKEN -
Crash reports no longer include your account name, your project's name, or the folders of a file outside your home directory. A path outside your home keeps only its file name, and your home directory reads aswherever it is.
~ -
now cleans every text in the tool schemas it passes from the Unity Editor to your AI agent, not only the tool descriptions, and caps their size. It also refuses a call to a tool the Editor did not list, and stops reading an oversized tool catalog.
unity mcp -
Unity Version Control workspace names made from a repository name now replace control characters and drop leading dashes, so a crafted repository name can no longer be read as a command option.
-
-
Added
-
can file an issue against a plugin:
unity bugtakes a plugin's name, such as--areaorugs, and on a terminal the area question offers each plugin you have installed. A plugin area attaches that plugin's newest log files, redacted like the other logs, and every report now lists your installed plugins and their versions.plastic -
names where each installed plugin writes its logs, under the external components, and as
unity doctorinlogDirectories.--format json -
asks your floating license server how it is, directly on its
unity license server healthendpoint. It needs no sign-in and no licensing client./v1/status -
Plugins now receive whatknows when it runs them: the output format, whether they may prompt, the current Unity project and its Editor version, the active Unity Cloud organization and project, the signed-in user (never a token), whether a person, a CI system or an AI agent is running it, and the analytics and crash-report settings, as
unityenvironment variables and oneUNITY_CLI_CTX_*document.UNITY_CLI_CTX_JSONandUNITY_CLI_INVOKED_ASnow reach every plugin, not only built-in tools.UNITY_CLI_CORE_VERSION -
opens Project Auditor in your project's running Editor, ready for you to run the analysis. It first installs or updates Project Auditor and its rules package when the Editor needs them, then opens the window on the page for
unity projects audit(--workflowby default, orupgrade,optimizationorurp).coreclr -
installs Unity's agent plugin into Qwen Code by running
unity setup qwen, thenqwen extensions install Unity-Technologies/unity-agent-plugin:unity --consent. Likeqwen extensions enable unity, it reports an existing install instead of reinstalling (one Qwen Code has disabled for the current folder counts as not installed, and is turned back on), takesunity setup codexand every output format, and fails with--dry-runwhenQWEN_NOT_FOUNDisn't on your PATH.qwen -
installs the Unity skills into OpenCode, in
unity skill install opencode, or~/.config/opencode/skillswith.opencode/skills. OpenCode also loads--localand.claude/skills, so when one of those already holds a skill, it warns and skips it rather than loading two copies; pass.agents/skillsto install it anyway.--yes -
downloads and verifies an Editor and its modules into the Hub's download folder without installing anything. With
unity install --download-only, it can fetch another operating system's Editor, which--operating-systemrefused before.unity install -
prints an access token from your CLI sign-in, alone on stdout, so a script or another tool can call Unity services without its own sign-in flow:
unity auth token. An expired token is refreshed first, a service account gets a token for its credentials, andTOKEN=$(unity auth token)adds the expiry.--json -
adds read-only tools for status, installed editors, projects, releases and doctor to the MCP server, so a client with no shell, such as Claude Desktop, can call them with no Editor running. Each answers with the command's JSON output.
unity mcp --cli-tools -
lists four tools for detached Editor jobs next to the Editor's own, so an agent can run work that takes longer than a tool call may wait:
unity mcpstarts one of the Editor's tools as a job, the wayjob_startdoes,unity command <name> --detachreads the job,job_statuswaits up tojob_waitseconds (30 by default, at most 45) and says whether it is still running, andtimeoutasks the Editor to cancel it.job_cancelhides them.--exclude-tools "job_*" -
and
install.shnow set up the coding agents they find on your machine right after installing, then show your account, license and Unity Editors. In an interactive terminal they first list the agents found, all selected, so you can untick any to leave alone.install.ps1 -
installs the
unity skill install <client>skill besidenew-unity-project, so clients that read only skills can guide a new project from an idea to a running one. A client whose plugin already providesunity-clikeeps leavingunity-clito the plugin too when that plugin also ships it, unless you passnew-unity-project.--yes -
sets up every coding agent it finds, bare
unity setup allon a terminal lets you pick which ones from a checklist, and both finish with a state block showing your account, license, editors and connectivity, with the next command for anything blocking (machine formats carry each blocker as aunity setupentry).notifications -
installs the Editor version when it isn't installed, waits for the install, then creates the project.
unity projects create --install-editorand--modulepass modules and their license agreements to that install.--accept-eula -
adds Cinemachine to every new 3D project, at the newest release that supports the project's Unity version. 2D projects and templates that already include it are left as they are.
unity projects createleaves it out.--bare -
turns on Run In Background in the new project's Player settings, so Play mode keeps running while the Editor is not focused.
unity projects createleaves it out.--bare -
sets up anonymous player sign-in when it links the project to Unity Cloud. It adds the Authentication package and a startup script that signs the player in before the first scene loads, so cloud save, telemetry and other services have a player ID.
unity projects create -
downloads a version's documentation as Markdown for offline use: the manual by default, and the scripting API reference too with
unity docs cache add.--apithen reads cached pages without the network, andunity docs --contentand topic lookup use the cached page list when docs.unity.com can't be reached.unity docs toc -
installs Unity's agent plugin, with its Unity skills, into GitHub Copilot CLI by running
unity setup copilot, thencopilot plugin marketplace add Unity-Technologies/unity-agent-plugin. Likecopilot plugin install unity@unity-agent-plugin, it reports an existing install instead of reinstalling, and takesunity setup codex.--dry-run -
imports only part of a package: the entries whose path matches, everything under a matching folder, and the folders above them. Repeat
unity assets import --include <glob>to select more, with a glob (--includeand*stay inside one folder,?spans folders) or a plain path such as**.Assets/Art/Hero.png -
Theof every
--helpcommand now ends with examples you can copy.unity collaboration -
Theof every
--helpandunity vcscommand now ends with examples you can copy.unity pipeline -
The Linux deb and rpm packages now install aman page, so
unitylists every command, its options and the exit codes. Each release also publishes it next to its downloads asman unity.unity.1.gz -
now reports each command's
unity commands --json:stability,stableorpreview. A bare command group'sdeprecatedanswer carries it too.--json -
A project can pin the unity CLI versions it supports within
cli.version, an npm-style range such asProjectSettings/UnityCliConfig.json. A command run in the project with a CLI outside that range prints a warning, and in CI it stops before doing anything, with exit code 1 and error code"^1.0.0".CLI_VERSION_OUT_OF_RANGE -
says whether a package is signed:
unity assets inspectinsignedand--format json, and andjsonline in the human output. It checks that a signature is present, not that it is valid.Signed: -
warns when a package has no signature and reports
unity assets importinsignedand--format json. Passndjsonto refuse an unsigned package before the Editor starts.--require-signed -
now finds entries left by the deprecated Unity MCP server from the AI Assistant package and offers to replace them, so the client keeps one Unity server.
unity mcp configurereplaces them without asking,--replace-legacyshows what would change, and--dry-runprints theclaude-codecommand to run.claude mcp remove -
makes the installed Editor the default once the install succeeds, so
unity install <version> --set-defaultreplaces runningunity install latest --set-defaultand thenunity install latest. The json and ndjson result report the stored version asunity editors default latest.data.defaultVersion -
skips the license check, for runners that get a license another way.
unity doctor --ci --skip-license -
On macOS, each release now also publishes a notarized installer,and
unity-darwin-arm64.pkg, with the notarization ticket attached. It is the installer the Homebrew cask will use, and the cask moves to it in a follow-up.unity-darwin-x64.pkg -
and
unity plugin installshow a plugin's license terms and ask you to accept them before anything downloads, for a plugin that has terms. A run that cannot ask, such as one withunity plugin upgrade, stops with an error that names--non-interactive.--accept-eula -
,
unity setup claude,unity setup codexandunity setup grokoffer to install the Unity skills instead when the agent's CLI is missing or its plugin can't be installed.unity setup copilotinstalls them without asking.--yes -
installs every Unity skill from the Unity-Technologies/skills repository, at the commit this CLI release pins, beside the
unity skill install <client>skill. Each skill is checked against the pin before anything is written, and the source can't be redirected.unity-cli -
prints the new-unity-project skill the CLI embeds, the same way
unity skill show --skill new-unity-projectprints the unity-cli skill.unity skill showand--pathwork with it too.--list -
and
unity pipeline cloud-buildnow start, follow and act on work:unity pipeline automation,builds start,cancel,steps,failures,artifactsandlog --follow, anddownload,pipelines trigger,jobs watch,logs,terminate,resumeandapprove.reject,builds cancelandjobs terminateask first unless you passjobs reject.--yes
-
-
Changed
-
reaches the Editor through the Pipeline package's own connection when the Editor offers one, and over HTTP otherwise. An Editor whose Pipeline HTTP server is turned off now answers too.
unity command -
reports an Editor whose Pipeline HTTP server is turned off instead of showing it as unreachable, and
unity statusshows each way to reach the Editor, with aunity pipeline editorsarray in its JSON.pipelineServer.endpoints -
now moves a project to the Pipeline package's latest published version, so a new release is available as soon as it is published, without a CLI update.
unity pipeline upgrade,unity pipeline install,unity pipeline list-versionsand the Pipeline step ofunity pipeline editorsresolve versions the same way.unity projects create -
When,
unity cloud orgorunity cloud projectfails, it now prints the usual error details (the error code, the log file, and how to get more detail) and records the failure in the log, so it shows up inunity cloud statusandunity logs. JSON output and exit codes are unchanged.unity bug -
When acommand fails, it now prints the usual error details in
unity collab(the error code, the log file, and how to get more detail) and records the failure in the log, so it shows up in--format humanandunity logs. JSON output and exit codes are unchanged.unity bug -
Whenor
unity pipeline automationfails, it now prints the usual error details (the error code, the log file, and how to get more detail) and records the failure in the log, so it shows up inunity pipeline cloud-buildandunity logs. JSON output and exit codes are unchanged.unity bug -
now recommends
unity skill installto set up every agent client on the machine, in place ofunity setup all.npx skills add Unity-Technologies/skills -
Without,
--editor-versionuses the default Editor version, else the newest installed Editor, else the latest Unity release when no Editor is installed.unity projects createand--editor-version latestnow name the newest official and LTS releases rather than the newest installed Editor.lts -
checks its prerequisites before it asks anything, downloads a template or starts the Editor: an active license always, and, while the project links to Unity Cloud, a signed-in account, a reachable network and a chosen organization when you belong to several (pass
unity projects createto choose).--cloud-orgremoves the Unity Cloud ones;--no-clouddoes not.--bare -
now ends with a short summary of your machine: your account, organization, license, installed Editors and the next command to run. With
unity auth loginor--format json, anything that blocks you from creating a project, such as no installed Editor or an unreachable network, is listed in the result's--format ndjson.notifications -
More commands take the project as:
--project-path,assets exportandassets importtake it instead ofauth default, and--project,templates create,templates pack,projects linkand theprojects unlinkcommands that act on a project accept it next to their path argument. These commands, andvcs, also readrecompilewhen no path is given.UNITY_PROJECT_PATH -
takes the build to launch with
build run, and--build-pathtakes the folder of the project to register withprojects clone.--subpath -
and
pipeline installreport a folder that isn't a Unity project with the same message as the other commands that connect to an Editor.pipeline upgrade -
,
unity templates,unity templates infoanddeletetake the Editor version asedit, like the rest of the CLI, and resolve--editor-versionandltsthrough the release catalog aslatestdoes.unity install -
,
unity pipeline cloud-build targetsandtooling osfilter by Editor version withtooling platforms.--editor-version -
means
-eon every command.--editor-pathandunity vcs merge-setupnow accept it too.unity vcs resolve -
sets the Editor version on every command that takes
UNITY_EDITOR_VERSION:--editor-version,build,docs,install-modules,projects create,templatesandvcs merge-setupnow read it as well. Thevcs resolvefilters don't.pipeline cloud-build -
An exportedor
UNITY_EDITOR_VERSIONnow steersUNITY_ARCHITECTURE, as it already steeredunity buildandrun: the flag wins, then the variable, then the project's version.testprints one line naming the variable when it does.build -
Passing a version tofails with a hint to use
--editor-path.--editor-version -
and
releasestakecloud projectsto start a page part way through the results, the spelling every offset-paged list uses. The--offset <n>footer now saysreleases.Use --offset <n> to see more -
Every short flag now means one option on every command:is
-f,--forceis-i,--installedis-l,--listis-m,--moduleis-oand--outputis-r. Options that used those letters for something else show only their long name in help:--releases,--follow,--input,--log-file,--modifiedand--reset.--output-path -
Everystream now ends with one
--format ndjsonframe. Single-record commands such as{"type":"result"},unity env,unity doctor,unity context current,unity editors defaultandunity install-pathanswer with that frame alone, itsunity diagnose updatethe same asdata, and listings such as--format json,unity logs,unity skillsandunity commandwrite their rows and then the frame.unity install-modules --list -
Every row in an ndjson listing now starts with, so a script can tell a row from a
"type":"row"orprogressframe.resultrows keep their ownunity templates(the template type) and carry notypemarker."row" -
Under, the default when stdout is redirected, single-record commands such as
--format tsv,unity env,unity doctor,unity config proxyandunity install-pathprint aunity editors defaulttable with one row per field, named as inkey<TAB>value. A script that reads--format jsonfrom a pipe now gets that table, with the path on theunity install-pathrow; usepathand read--format jsoninstead.data.path -
and
unity logs --format tsvnow start with a header row, andunity skills --format tsvlists your installs instead of printing nothing.unity skills --format tsv -
Thefield of
commandand--format jsonoutput is now the full command path, such as--format ndjsonorprojects list, the same in both formats and on success and failure. A script that matched on the old short names, such ascloud org listorprojects, needs the full path instead.proxy -
Every listing now returns its rows in one shape. In,
--format jsonholds the rows asdata, withitems(totalwhen the service doesn't report one),nullornextPagefor the next page (nextCursoron the last), andnull(partialwhen the listing stopped before it finished).true -
,
unity doctor,unity env,unity diagnose proxyandunity diagnose acceleratorshow their status as aligned label and value lines, in every language. The copy thatunity diagnose updatewrites to the logs directory keeps its layout.unity diagnose proxy -
lists the open Unity Editors in a table, with any notes and the next step under it. When no Editor is open, it says so and suggests what to do.
unity pipeline editors -
With, which is also the default when output is redirected,
--format tsvprints oneunity cache infoandkeyline per field, named like its JSON fields, andvalueprints the active licenses as a table with a header row, instead of sentences.unity license status -
,
unity cache info,unity auth status,unity license status,unity analytics status,unity config update-checkandunity config proxyshow their status as aligned label and value lines, in every language.unity languagelists active licenses in a table, andunity license statuslists the available languages in one.unity language -
prints a table with a header in human output, also when its output is redirected with
unity projects. The columns that--format human,--verbose,--editor-version,--modified,--cloudand--pipelineturn on are now table columns.--vcs -
The anonymous once-per-run usage ping now stops when you turn analytics off (, answering no at the first-run prompt, or turning it off in the Hub while signed in) and when
unity analytics opt-outis set to any value but empty,DO_NOT_TRACKor0.falsestill stops it too.UNITY_NO_CLI_INVOKED_TELEMETRY -
The install scripts now install the latest stable release and no longer fall back to the latest beta. To install a beta, setbefore running the installer.
UNITY_CLI_CHANNEL=beta -
keeps the last 3 versions it replaced instead of only one, and
unity self-updaterestores a specific one.unity self-update --rollback <version>on its own still restores the most recent.--rollback -
,
unity projects createand theunity projects linkpicker no longer ask questions underunity language, with--non-interactiveset, or in CI, even on a terminal.UNITY_NON_INTERACTIVEwithoutunity projects create --vcs uvcsthen fails with an error naming--vcs-regioninstead of showing the region picker.--vcs-region -
On a terminal,with no Editor named asks again which installed Editor to upgrade,
unity editors upgradeasks you to accept a module's license terms (asunity editor module adddoes),unity install-modulesandunity openask which project or Editor to use when several match, and theunity projects opendelete commands ask you to confirm. In CI nothing asks, even on a terminal:unity collabandunity install-modulesthen needunity editor module add, and a collab delete needs--accept-eula.--non-interactive -
now lists a title and MCP behavior hints for every Unity tool, so an agent client can run reads such as
unity mcpwithout asking and still ask before anything destructive. A tool that deletes or clears data, takesscene get_hierarchy, saves a capture to a path you pick, or runs your code (confirm,script eval,script eval_file) is marked destructive.script run -
Unity CLI now tells you once, on its first run, that it sends crash reports and an anonymous usage ping, how to turn each off, and where to read the privacy policy. Runs in CI, scripts and agents get the same notice as one line on stderr.
-
Listing no longer needs aword:
list,unity projects,unity templates,unity configandunity modules <version>list on their own, with the same options and output, where they used to print their help. Bareunity editors modules <version>andunity modulesnow exit 2 with the missingunity editors moduleerror instead of printing help at exit 0.<version> -
The same goes for(the stored accounts),
unity auth accounts(the running Editors),unity pipeline editors,unity cloud orgs,unity cloud projects,unity docs cache,unity vcs uvcs reviews,unity collab annotations,unity collab attachments <annotationId>, and theunity collab jira issuesandunity pipeline automationlistings, such asunity pipeline cloud-buildandunity pipeline automation jobs. Bareunity pipeline cloud-build buildsnow exits 2 with the missingunity collab attachmentserror.<annotationId> -
now describes itself as linking or connecting a local project to Unity Cloud, so
unity projects link cloudandunity commands --grep "connect project cloud"find it first.unity command --query "connect project cloud" -
A search that finds nothing (and
unity commands --grep) now ends with a line saying that multi-step workflows are documented in theunity command --queryskill, and thatunity-clireads it.unity skill showcarries the line in--format json, and the exit code stays 0.hint -
and
unity recompile --format jsonnow write the top-level--format ndjsonanderrorsarrays every other command writes. Each error iswarningswith the compiler code (such as{code, message}), and each warning is aCS1002string, so a script can read compile results the same way for every command.file(line,col): message -
no longer adds the Pipeline package on Unity 6000.5.0 to 6000.5.2, where it can't start, and tells you to update the Editor to 6000.5.3f1 or later.
unity projects createon a project open in one of those Editors says the same instead of telling you to wait.unity status -
and
unity plugin installnow install the agent skill a plugin ships into every AI client that already has the Unity skill, fromunity plugin upgradeor the Unity agent plugin. Before, they only printed a hint to rununity skill install.unity skill install -
gives clients that take only skills the full set of Unity skills, not just
unity setup all.unity-cli
-
-
Removed
-
Thesubcommand of these groups is gone.
list,unity projects list,unity editors listand the rest now fail as an unknown command, exit 2, and suggest the bare group instead.unity cloud org list -
Breaking:is removed. Use
unity projects new, which also never links to Unity Cloud.unity projects create <name> --no-cloud -
Breaking:is removed. Use
unity list, which lists the tools the connected Editor offers.unity command
-
-
Fixed
-
now stays signed in on a Linux container or headless machine that has no Secret Service and blocks the kernel keyring, such as a Docker container with the default seccomp profile. The CLI saves the sign-in to a protected file in your user data directory, readable only by your user, and tells you once when it does.
unity auth login -
The Windows file properties, the Linux deb and rpm packages and the npm packages now name Unity Technologies as the copyright holder and carry the Unity Terms of Service license.
-
On a machine without Unity Hub, aleft by an older Hub or CLI no longer leaves the Editor on built-in default service URLs (the
cloudConfig.jsonwarning in the CLI log). The CLI now tags and refills a cache that has no environment tag, keeping any keys it does not know.environment-mismatch -
and the other Editor-launching commands now give the Editor the
unity open,seatinfourl,unauthenticatedurlandperf-eventsservice entries, as Unity Hub does. The CLI used to refuse them as unsafe URLs even though Unity's own service config serves them that way.socialdashboard -
While the Editor service is running, the CLI now fetches Unity's service config again every 15 minutes, as Unity Hub does, so theit wrote on a machine without Hub no longer goes stale. A cache Unity Hub wrote is still never touched.
cloudConfig.json -
,
unity cloud orgsandunity cloud org set-defaultno longer fail with "Unity-token exchange failed (Request failed with status code 401)" for a signed-in user whose access token the server stopped accepting before it expired. The CLI now refreshes the session and tries once more, and only asks you to rununity cloud projectswhen that fails too.unity auth login -
no longer lets color or hide codes inside a file path change how the human and tsv tables look. The codes are removed from the path.
unity vcs conflicts -
answers a request line with a repeated key or an unpaired surrogate escape with a
unity shell --protocol ndjsonframe and keeps reading, instead of ending the session with an error.BAD_REQUEST -
Commands no longer pause for up to two seconds on their way out when usage data is turned on and the network is slow or unreachable. Sending usage data now gives up after half a second, andskips it entirely.
DO_NOT_TRACK -
and
unity skill install claude-codenow install the skills your installed plugins ship even when an agent plugin already provides the Unity CLI skill. Before, a non-interactive run, such as an agent's headless mode, skipped those skills without saying so.unity skill install codex -
on a terminal remembers your commands across sessions again: press Up to recall them. Secret option values and secrets in URLs are never saved.
unity shell -
on a terminal completes commands, options and values with Tab again (press Tab twice to list the choices), and suspends with Ctrl-Z on macOS and Linux.
unity shell -
refuses a module whose install or rename paths point outside the Editor's install folder, and an Editor version that is not a single folder name. A catalog can no longer make an install write or delete elsewhere.
unity install -
Catalog, manifest and API responses over 64 MB are refused instead of being read into memory, and the Android license page is scanned in one pass.
-
,
unity build,unity run,unity test,unity assets export,unity assets importandunity templates createno longer refuse a project as already open because of a leftoverunity templates packwhose process ID now belongs to another program, which happened in containers after an Editor was killed. When the refusal comes from that file, the message names it so you can delete it if no Editor is running.Library/EditorInstance.json -
and
unity buildno longer run programs named by a project's git configuration (unity batch build, hooks, the pager, file filters other than Git LFS, and an ssh command reached by fetching objects a partial clone lacks) when they read its revision and version. They never fetch, and they check each submodule with the same safe read, so a submodule at an unrecorded commit or with uncommitted edits still counts as a change.core.fsmonitor -
With usage analytics turned on, creating a project from a downloaded or custom template no longer reports the template's file path. It reports the template's package name, orwhen the template has none.
custom -
On Linux,conflict and diff staging, UVCS check-ins, and
unity vcsnow keep their temporary files readable only by you, and refuse a folder or link another account planted in the shared temp directory.unity publish -
and
unity install --download-directoryon Windows now use an absolute path such asunity install-modules --download-directoryorC:\ws\editoras given, instead of joining it onto the current folder.C:/ws/editor -
reads
unity build --create-profilewhenUNITY_ARCHITECTUREisn't given, and refuses an architecture it doesn't know with the same usage error as the flag, instead of starting the Editor.--architecture -
honors a
unity --versionor--formattyped after it, as--jsondoes:unity versionnow prints one result frame instead of the bare version line.unity --version --format ndjson -
prints the package's local Markdown, the same as
unity docs --package <name> --content, instead of trying to open a browser.unity docs <name> --content -
On a machine licensed by a floating license server,and
unity license statusno longer report that no license is available before the Editor has leased a seat. When the server answers as healthy, both succeed and say the Editor leases a seat when it starts.unity doctor --ci -
reports a floating license server as reachable when the server answers as healthy but the licensing client cannot read its seat usage, which happens when nobody is signed in.
unity license server status -
A successfulno longer lists the Editor's "Access token is unavailable" licensing line as an error.
unity build -
with a listing option such as
unity command --queryand no connected Editor now ends--limitoutput with its result frame, which carries the search hints. It used to print nothing.--format ndjson -
now lists every Editor tool under a name of its own: the full command name with each space and dot written as
unity mcp, such as_andsettings_player_get. Onscript_eval0.9, several groups shared one name (com.unity.pipeline,get,set), so clients dropped tools, a call could fail with "names several commands", and some clients rejected the whole server.add -
now explains why it could not close an Editor when its output is redirected, for example that the project needs the
unity closepackage orcom.unity.pipeline, instead of reporting only that the Editor was not closed.--force -
A,
cloud,collaborpipeline automationcommand that fails because the server rejected your input (HTTP 400, 404, 409 or 422) no longer sends a crash report or points you atpipeline cloud-build. The error message, the exit code and the json and ndjson output are unchanged.unity bug -
A command that fails because you are signed out or your session expired no longer sends a crash report. The error message, the sign-in hint and the exit code are unchanged.
-
and
unity projectsJSON and NDJSON output now escapes the C1 control characters (U+0080 to U+009F) like the other control characters, so a project path or compiler message cannot send an escape sequence to a terminal that honors them. Parsed values are unchanged.unity recompile -
no longer reports a Unity token exchange that returned an empty token, or got no answer, as being signed out. An empty token, or an answer it could not read, now offers the
unity pipelinereport like any other unexpected failure.unity bug -
no longer shows an out-of-date version for a plugin such as
unity pluginswhen its saved copy of the plugin registry is more than a week old and this CLI already knows a newer version. The CLI's background refresh now also renews that saved copy once a week when no plugin is installed.ugs -
On Windows,now sends a crash report when it crashes, as it does on macOS and Linux. It was silent there before, so Windows crashes never reached us.
unity -
shows the active platform for projects saved by Unity 6000.7 betas and newer Editors. Before, the platform was missing for those projects.
unity projects info -
On Windows,stays signed in after a restart when the Hub you first signed in with was 3.21 or older.
unity -
now shows why a player build failed, such as an output path that already exists as a folder, instead of listing only licensing log lines.
unity build -
On Linux,,
unity statusandunity editors runninglist an Editor that Unity Hub 3.21 or older started through its per-version launch link.unity pipeline editors -
prints one JSON line with
unity projects export --format ndjson, so an ndjson reader can parse the export."type":"result" -
with no Editor installed now points you to
unity install-modulesinstead of a command that does not exist.unity install <version> -
and
unity releases --limitnow refuse a value that is not a whole number, such as--offsetor1.5, with a usage error instead of reading it as 1 or 5.5abc
-
-
Deprecated
-
on
--project,assets exportandassets import,auth defaulton--path, andbuild runon--project-pathstill work, and print a warning naming the new spelling.projects clone -
and
--editoron-e,unity templateson-e, andunity install-moduleson the--unity-versionfilters still work, and print a warning namingpipeline cloud-build. In--editor-versionthe warning is in the envelope's--format json.warnings -
on
--skipandreleasesstill works, and prints a warning namingcloud projects. In--offsetthe warning is in the envelope's--format json.warnings
-
1.0.0-beta.14
Release date: October 21, 2026
-
Security
-
The recent log innow shows only the command you ran, such as
unity doctor. Also, every argument you passed readsprojects open, so paths, project names and option values stay out of a report you paste. The log file itself doesn't change.<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 and links to files inside the project are skipped.
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_SECRET, orUNITY_GITHUB_TOKEN. The variables still reachUNITY_GITLAB_TOKEN's commands, the command you run withunity shell, the Unity Editor, plug-ins, 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's 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's made with the same key that signs the CLI on Windows, so the Unity auth broker can confirm it's 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 and no longer follow 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 its run.
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 newnow only accept gzipped (unity projects create) template archives. A plain.tgzthat used to work is refused as corrupt..tar -
Template downloads ignore catalog entries whose name or version isn't 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 it found no trustedpkexec.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 is unreachable, 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 and doesn't stop at the Editor's upgrade dialogs. As a result, 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, and doesn't change the install path or add 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 plug-in 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 plug-in 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 rather than make a guess. Each page has its path and URL, in every output format.--manual -
opens the local page from the Editor's Documentation module when it's 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 plug-in'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 the Editor in batch mode, 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 plug-in 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 plug-in.
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 plug-ins 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 isn't 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 aren't 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 isn't 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're 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're 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 it only affects a damaged or hostile archive.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 can't 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 wasn't saved, and change nothing. They also refuse whenopt-outrepeats a key or can't be read.user-settings.json -
now checks for the Unity plug-in that
unity skill install codexinstalls. When the plug-in 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 isn't 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 plug-in 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 plug-in, 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, or when its list of downloaded templates can’t be reset or repeats a key, instead of printing a raw system error. For example, a folder they can’t create now showsunity projects createCould 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, 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's 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's 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's not installed, and stop if the download redirects anywhere else. The client is checked against its published checksum before it's 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 can't 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 isn't 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's not 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 didn't 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's 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's 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_UNREACHABLEdon't change.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're 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 you pass
unity self-update.--no-log-proxy -
and
unity commands --grep <term>are now one search over the CLI's commands, its plug-ins 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's 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 Windowsclaudedoesn't 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 -
On Windows, links the CLI opens in your browser no longer pass through the command shell, so they open exactly as written.
-
installs Unity's plug-in from Anthropic's official Claude Code marketplace, as
unity setup claude. A plug-in 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
-
Removed thevariable and agent first-session ("paved") mode. Machine output no longer carries
UNITY_CLI_FTUE, and"paved"no longer writesunity projects createor reportsUserSettings/UnityCliPaved.json.pavedSettings -
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's none for it: on Linux arm64 that's 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, plug-ins 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 plug-in IDs that left some out. They point tounity plugin changelog --help, which shows every plug-in 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 plug-in 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 deleted or moved directory 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's 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're 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_HOMEaren't 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 in that folder 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 linkaren't 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's 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's held while it's fresh and cleared once it's 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 plug-in 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're signed out only when your sign-in has 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 plug-in, that plug-in'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's 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 can't decode. The last value of a repeated key wins.metadata.hub.json -
and
unity editors addon macOS reject an Editor whose signature check doesn't 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's one administrator prompt foryes,apt,dnf,pacmanorzypper, which a run that's 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 aren't 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're 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 plug-in they can't 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 isn't a build, as for any file that's 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's not 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's 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 were unable to handle before. Offline, they name the registry host they can'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 doesn't 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 isn't 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's 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 afterward.
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.
-
Aplug-in 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 plug-in'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
-
1.0.0-beta.13
Release date: October 07, 2026
-
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
-