Documentation

Unity command-line interface (CLI)

Download Unity Hub

Unity command-line interface (CLI)

Unity CLI release notes for August 2026

Learn about the Unity CLI releases in August 2026.
Read time 15 minutesLast updated a day ago

This page contains the release notes for the Unity CLI versions released in August 2026, from newest to oldest.

1.0.0-beta.6

Release date: August 21, 2026
  • Breaking changes
    • unity bug
      now requires you to be signed in, and exits with code
      3
      instead of
      0
      when you aren't. Previously a signed-out run reported nothing and appeared to succeed. Authenticate first, or pass service-account credentials, before a script or CI job calls
      unity bug
      .
    • unity test
      now uses exit code
      8
      specifically for a run whose tests failed. Every other way a test run fails to reach a verdict — a compile error, an expired license, an editor crash, or
      --timeout
      — keeps exit code
      6
      . If a script treats exit code
      6
      as "tests failed," point it at
      8
      instead.
  • Source control
    • unity projects create
      and
      unity projects link vcs
      can now create the new repository through
      gh
      ,
      glab
      , or
      tea
      when the CLI's own REST clients can't reach the host: a GitHub Enterprise Server, a self-managed GitLab, or a self-hosted Gitea or Forgejo instance.
      --vcs
      accepts a bare hostname for these. No token passes through the CLI on this path; the provider CLI's own signed-in session does the work. A new
      --git-description <text>
      flag sets the repository's description.
    • unity projects clone
      and
      unity projects link vcs
      now accept a plain git URL —
      ssh://
      ,
      git@host:path
      , or
      https://
      — as an optional positional argument, so any git host works, including Bitbucket, Azure DevOps, and a self-hosted server. This form uses your machine's own ambient git authentication rather than a provider API call.
    • Both commands, and
      unity projects create --vcs
      , now work fully over SSH, including host-key verification and passphrase-protected keys. Use
      --git-remote-protocol ssh
      on the flag form to switch the transport.
    • Signing in to github.com no longer implies anything on a self-hosted host. When a self-hosted or enterprise host needs its own sign-in, the CLI now names the exact command to run for whichever provider CLI you have installed.
    • Git credential prompts no longer hang. Without a terminal, in CI, under a machine-readable
      --format
      , or with
      --non-interactive
      , the CLI now fails immediately with exit code
      4
      naming the credential it needed, instead of waiting on a prompt nobody could answer.
    • Git operations under
      unity projects
      now respect your own git configuration (
      core.sshCommand
      ,
      includeIf
      rules, credential helpers) instead of ignoring it, and credential lookups resolve per organization when your credential helper supports it (set
      git config --global credential.useHttpPath true
      to opt in).
  • Project management
    • Added
      unity projects verify
      , a fast check for the things version control breaks in a Unity project: orphaned or missing
      .meta
      files, duplicate GUIDs from a bad merge, and unresolved conflict markers. It needs no Editor, license, or network access, so a broken checkout fails in seconds instead of after a full build. Pass
      --strict
      to fail on warnings too, and
      --expect-editor <version>
      to also check for editor-version drift.
  • Build automation
    • unity build
      now writes a build provenance manifest next to its output, recording the editor version, resolved package set, build target, git revision, and timestamps that produced the build. It's written for failed builds too. Paths, credentials, and machine-identifying details are deliberately left out, so it's safe to publish alongside the artifact. Use
      --provenance-path
      to choose where it's written, or
      --no-provenance
      to turn it off.
    • unity build
      now prints a periodic heartbeat during a long build, tracking both elapsed time and how long since the editor's log last grew, so silence in the log no longer looks the same as a hang. A new
      --timeout <seconds>
      flag (also
      UNITY_BUILD_TIMEOUT
      ) aborts a build that runs too long.
  • Unity Collaboration
    • unity collaboration
      (
      unity collab
      for short) is now part of every build, instead of development builds only. It covers Unity Collaboration's annotations end to end — create, list, update, resolve, reply, and react — plus attachments, thumbnails, and a Jira integration that creates and links issues from the CLI. Run
      unity collab --help
      for the full command tree.
  • Automation and CI
    • Added
      --format github
      , a global output format that reports command failures as GitHub Actions annotations instead of plain text, so a red step in a workflow points at what went wrong in its summary.
    • Added
      unity cache key
      , which prints a deterministic cache key for a Unity project's
      Library
      folder, derived from the editor version, the resolved package set, and the build target. Use it as the key for a CI cache step.
    • Added
      unity doctor --ci
      , a fast preflight that checks whether a machine can actually finish a build or test run — an activatable license, the project's required editor, disk space, and network reachability — and exits non-zero when it can't, so a pipeline fails in seconds instead of partway through a build.
    • unity test
      gained
      --shard N/M
      to split a suite deterministically across parallel CI jobs,
      --retries N
      to re-run only the tests that failed and report which ones were flaky, and
      --rerun-failed
      to re-run just the failures from a previous run's report.
  • Security and privacy
    • Shell completion scripts (
      unity completion bash
      ,
      fish
      , and
      powershell
      ) now escape the strings they interpolate, closing a defense-in-depth gap where an unescaped value could have run as a command or broken out of its quoting.
    • Progress spinners and the background update check are hardened against a tampered update manifest smuggling terminal control sequences into the spinner label.
  • Issues fixed
    • Editor and module install progress bars are back in the terminal. A large download previously printed nothing at all until it finished, which looked indistinguishable from a hang.
    • A stale Unity Licensing Client is now detected and replaced automatically, instead of silently rejecting every
      unity license
      command until it was deleted by hand.
    • The Android module on Linux, the Android NDK on macOS, Windows modules that need administrator elevation, and language packs all had install paths that were broken outright; all are fixed.
    • Wrapped editors (running under
      xvfb-run
      ,
      dbus-run-session
      , or a CI runner) are counted correctly again by
      unity status
      , instead of appearing as duplicates or "ambiguous."
    • The loop where signing in with
      unity auth login
      eventually signed you out of the Unity Hub is fixed for good.
    • Installing the CLI on Windows no longer corrupts your user
      PATH
      . PowerShell tab completion now actually registers (it never took effect before).
      unity command
      now catches malformed or misspelled arguments instead of silently running on default values.

1.0.0-beta.5

Release date: August 13, 2026
  • Security and privacy
    • unity bug
      no longer uploads your account name or email address. The CLI's log file records paths under your home directory on nearly every line, and a bug submission attaches that file as-is, so on a machine where the account name is your real name, submitting a report sent it too. Both are now redacted as each line is written: the account name becomes
      <user>
      wherever it appears, and email addresses become
      <redacted-email>
      . Nothing else about the line changes, so an install failure stays diagnosable. Logs written before this release are unaffected; delete them if you'd rather not send them.
  • Issues fixed
    • A retried module download in
      unity install-modules
      now resumes the partial file it already has instead of starting that module again from the beginning. A module that failed and then succeeded within the same run previously left one numbered file per attempt, such as
      android (1).pkg
      and
      android (2).pkg
      ; it now leaves a single file and downloads its bytes once. The retry count and the exit code are unchanged.
    • unity build
      ,
      unity test
      , and
      unity run
      now report an Editor killed by a signal as
      stopped with signal SIGSEGV
      , naming the signal, instead of reporting
      exited with code 1
      .
      SIGILL
      ,
      SIGTRAP
      ,
      SIGFPE
      , and
      SIGBUS
      are recognized too, where they previously surfaced as a bare number such as 132. An Editor that exits normally still reports its own exit code.
    • Routine outcomes no longer suggest you report a CLI bug. Declining a module's license terms, being told to pass
      --accept-eula
      in a non-interactive shell, running
      unity modules <version>
      for an Editor you haven't installed, setting an invalid path with
      unity install-path --set
      , a
      unity build
      whose build fails, and a
      unity install
      that waits on another install's lock all stopped printing "Run
      unity bug
      to report this issue". The messages, the exit code (6), and the
      --format json
      envelope, including the
      BUILD_FAILED
      error code, are unchanged, so scripts that branch on them keep working. An Editor that crashes mid-build is still reported as a fault.
    • unity --help
      ,
      unity -h
      ,
      unity help
      , and bare
      unity
      show the Unity logo header again. The header still stays out of the way when you pipe the output, pass
      --quiet
      or
      --no-banner
      , or ask for a machine-readable format, and subcommand help such as
      unity install --help
      is unchanged.
    • unity completion zsh
      now produces a script that registers itself with zsh, so pressing Tab completes commands, subcommands, and flags. The script previously defined the completer without telling zsh about it, and Tab fell back to plain filename completion with no error to explain why. Save it to a directory on your
      $fpath
      :
      mkdir -p ~/.zsh/completionsunity completion zsh > ~/.zsh/completions/_unity
      Then make sure your
      ~/.zshrc
      has
      fpath=(~/.zsh/completions $fpath)
      followed by
      autoload -Uz compinit && compinit
      . bash, fish, and PowerShell completion are unaffected.
    • The
      --proxy
      help text shows its credentialed example as
      http://<user>:<pass>@host:8080
      , so it's clear which parts you substitute. In Spanish, the username in that example is no longer mistranslated.

1.0.0-beta.4

Release date: August 12, 2026
  • Breaking change
    • Linux now requires glibc 2.34 or newer. This drops support for Ubuntu 20.04 and earlier, Debian 11, RHEL and CentOS 8, and Amazon Linux 2. RHEL 9 and Ubuntu 22.04 are the oldest supported releases. The
      .deb
      and
      .rpm
      packages declare the requirement, so
      apt upgrade
      and
      dnf upgrade
      refuse the update on an affected system and leave your working CLI in place, and
      install.sh
      checks before it downloads. If you're on an affected distribution, stay on 1.0.0-beta.3. macOS and Windows are unaffected.
  • Installation and updates
    • Added winget as an install source on Windows:
      winget install Unity.CLI
      , then
      winget upgrade Unity.CLI
      to stay current.
    • Added Homebrew as an install source on macOS and Linux:
      brew install --cask unity-cli
      , then
      brew upgrade unity-cli
      .
    • Added self-updating Windows installs.
      unity upgrade
      now updates an MSIX install directly instead of deferring to winget, downloading only the parts of the package that changed. It also registers the install with Windows, which then keeps the CLI current in the background. Rollback remains unavailable on MSIX.
    • Added
      unity diagnose update
      , which reports the version and channel the install resolved, the manifest it reads, and the exact command that updates it. On Windows it also shows the update feed Windows is registered against.
  • Editor and project management
    • Added
      unity projects exec -- <command>
      , which runs one command across every registered project. Narrow the set with repeatable
      --filter
      terms, raise concurrency with
      --parallel <n>
      , and use
      --continue-on-error
      to run the whole fleet regardless.
    • Added
      unity projects clean [project]
      to delete a project's regenerable cache folders and reclaim disk space. Use
      --dry-run
      to list the targets and sizes without deleting.
    • Added
      unity editors prune
      to find installed Editors no registered project uses, with the disk space each would reclaim. Report-only by default;
      --remove
      uninstalls them after confirmation.
    • Added
      unity editors verify <version>
      to check that an installed Editor's binary and modules are present and non-empty, catching installs left broken by antivirus quarantine or a failed extraction.
    • Added
      unity templates pack <project-path> --output <file>
      to pack an existing project into a portable template archive.
  • Build automation
    • unity build
      no longer requires
      --execute-method
      . On Unity 6 and newer,
      --profile <path-or-name>
      builds a Build Profile, and on every version the desktop targets build without a method, so
      unity build --target StandaloneWindows64 --output-path Build/MyGame.exe
      works with no project-side C# code.
      --execute-method
      keeps working and takes precedence.
  • Authentication
    • Added multi-account support.
      unity auth login
      adds an account without dropping existing sessions,
      unity auth list
      shows every stored account,
      unity auth switch <account>
      changes the active one, and
      unity auth logout <account>
      signs out one account while preserving the rest.
    • Added per-project default accounts with
      unity auth default <account>
      , so cloud-authenticated commands run from inside that project resolve it automatically.
  • AI agent integration
    • Added
      unity skill install <client>
      to install the Unity CLI agent skill into an AI client's rules or skills directory, in that client's native format. The skill is embedded in the binary, so it works offline and matches the running version.
      unity skill refresh
      re-renders previously installed skills after an upgrade.
  • Automation and CI
    • Added CI-native test reports and code coverage to
      unity test
      , so it drops into a GitHub Actions or GitLab pipeline without a converter step.
    • Added detached Editor command jobs:
      unity command <name> --detach
      and
      unity eval <expr> --detach
      return a job ID immediately, and
      unity job wait
      ,
      unity job status
      , and
      unity job cancel
      manage it. Requires a Unity pipeline package with job support.
    • Added live Editor task progress to
      unity command
      and
      unity run --command
      , rendered as a progress bar on an interactive terminal and as
      {"type":"progress"}
      frames under
      --format ndjson
      .
    • unity command
      ,
      unity list
      ,
      unity job
      , and
      unity mcp
      now find the right Editor on their own when several are open, by matching the directory you run them from against the registered projects. Explicit
      --project-path
      still takes precedence.
    • Added the full query surface to
      unity command
      listings:
      --query
      ,
      --tag
      ,
      --group_by
      ,
      --sort
      ,
      --order
      ,
      --offset
      ,
      --limit
      , and
      --detail
      .
    • unity bug
      can now attach files with
      --attachments <paths...>
      and a stripped copy of the project with
      --share-project <path>
      .
  • Output and integration
    • --format ndjson
      failures are now machine-readable: a failed command ends the stream with a terminal
      {"type":"result","success":false,…}
      frame carrying the same fields as the
      --format json
      envelope, instead of reporting only on stderr.
    • Long human-readable output now scrolls in a pager on an interactive terminal, using
      $UNITY_PAGER
      ,
      $PAGER
      , or
      less
      . Machine formats, piped output, and
      --quiet
      never page. Opt out with
      --no-pager
      or
      UNITY_NO_PAGER
      .
  • Interactive shell
    • Added full line editing to the
      unity shell
      prompt: Up and Down recall previous commands across sessions, Tab completes commands, subcommands, flags, and values, and Left, Right, Home, and End move within the line.
    • Tab completion now completes pipeline command names live from the connected Editor.
  • Issues fixed
    • unity upgrade
      now verifies that the downloaded binary starts on your system before replacing the one you have, and no longer cancels itself where the temporary directory is mounted
      noexec
      .
    • unity upgrade
      no longer overwrites an npm-managed install; it now defers to
      npm i -g @unity/cli@latest
      the same way it defers to apt, rpm, and Homebrew.
    • unity open
      no longer causes the Editor to open Unity Hub, and the Editor now picks up the account you signed in with.
    • unity license
      commands and Unity Version Control commands now work on a machine that has never run Unity Hub.
    • unity editors upgrade
      no longer hides upgrades for Apple silicon and Arm Windows Editors, no longer offers an older patch than the newest in the line, and no longer reports prerelease Editors as up to date when a newer prerelease exists.
    • unity editors info <version>
      now finds releases on entitlement-gated lines, such as extended LTS.
    • unity install <version>
      now distinguishes an unreachable release service from a version that doesn't exist, retrying briefly and exiting with the new code 7 rather than blaming the version.
    • unity hub install
      works again on macOS and Linux, and
      --hub-version
      works again for Hub 3.20.0 and newer.
    • Running a command with
      sudo
      no longer leaves root-owned directories that break every later command.
    • unity install
      failures now report the underlying reason instead of a bare
      Installation Failed
      , and interrupted downloads can be resumed with
      --resume
      .
    • Editor and module downloads are now verified against the release manifest's checksum, including downloads resumed across attempts.
    • unity mcp configure
      now writes the config key and file path each AI client actually reads, preserves comments and formatting in the files it edits, and the
      run_tests
      and
      recompile
      tools return as soon as the Editor answers instead of always failing at their poll timeout.
    • Running a command group without a subcommand now prints its help to stdout and exits 0 instead of reporting a usage error.
    • Editor Pipeline commands now work behind an HTTP proxy, and long-running Editor commands no longer hard-fail at 60 seconds.
  • Security
    • Values that come from Unity services, user-editable settings, or the licensing client are now sanitized before they're printed, so a crafted value can't smuggle terminal escape sequences into your terminal or forge extra rows in
      tsv
      output. This covers table headers and cells, interactive prompt choices,
      unity license status
      ,
      unity editors default
      ,
      unity install-path
      , and
      unity config proxy
      .
    • A rejected
      --proxy
      value shaped like
      user:pass@host
      no longer echoes the password in the usage error.
    • unity uninstall
      on macOS and Linux now refuses an Editor whose stored location resolves to a filesystem root.
    • Updated the bundled HTTP client library, which now rejects header values containing CR or LF characters.