# Editors, install & modules — unity-cli command reference Part of the **`unity-cli`** skill. See that skill's `SKILL.md` for CLI install, global flags, environment variables, exit codes, and common workflows. All global flags (`--format json`, `--non-interactive`, `--yes`, `--proxy`, …) apply to every command below. --- ### Editors — list, install, uninstall ```bash # List all editors (installed + available releases) # Short alias: unity e. The bare `unity editors` is shorthand for the explicit `unity editors list` (matches projects/templates/modules) unity editors list --format json # List only installed editors # As of 0.1.0-beta.8 the --installed table includes an "Upgrade to" column flagging editors with a newer patch in their line unity editors --installed --format json # List only available releases unity editors --releases --format json # Filter by architecture unity editors --installed --architecture arm64 --format json # Show detailed module info unity editors --verbose # Watch mode — live-updates as editors are installed or removed unity editors --watch unity editors --installed --watch ``` `unity editors` honors `--format tsv` and `--format ndjson` for its default listing. Identifier columns keep their natural width even if the table exceeds the terminal — they are no longer silently truncated. #### editors running List the Unity Editor instances currently running and the project each has open, with the editor version and process id per instance: ```bash unity editors running unity editors running --format json ``` Detection is cross-platform (process table plus each project's Pipeline lockfile), and the version falls back to a project's `ProjectSettings/ProjectVersion.txt` for editors without the Pipeline package. An empty list is a normal result (exit 0). Honors the global `--format human|json|tsv|ndjson` (and `--json`). #### editors add Register one or more existing editor installations by path: ```bash unity editors add /path/to/Unity/Editor # Register multiple at once unity editors add /path/one /path/two # Skip macOS code-signature check (useful for unsigned or side-loaded builds) unity editors add /path/to/Unity/Editor --skip-signature-check ``` #### editors default ```bash # Show current default editor unity editors default --format json # Set default by version, alias, or keyword unity editors default 6000.0.47f1 unity editors default latest unity editors default lts # Clear the default unity editors default --unset ``` On a TTY with no arguments, shows an interactive selection prompt. #### editors path ```bash # Print the install directory of an installed editor (local, offline — no release-feed fetch) unity editors path 6000.0.47f1 unity editors path 6000.0.47f1 --architecture arm64 --json ``` Honors `--architecture` and `--format` / `--json`, and reports ambiguous matches so you can narrow by version or architecture. #### editors install-path ```bash # Show the directory where editors are installed unity editors install-path # Set a new install path unity editors install-path --set /path/to/editors ``` Also available as the top-level `unity install-path` (with an additional `--get` flag). Distinct from `editors path`: `install-path` gets/sets the *root* install directory; `editors path` prints the install directory of *one* editor version. #### editors info ```bash # Show release details for a specific version unity editors info 6000.0.47f1 --format json ``` #### editors upgrade New in `0.1.0-beta.8`. Upgrade an installed editor to the newest official (f-channel) patch in the same `major.minor` line (e.g. `2022.3.10f1` → `2022.3.62f1`), carrying the installed modules over. The `[editor]` argument accepts an exact version, a `major.minor` line, or the `latest` / `lts` / `default` aliases. Editors install side by side — the old version is kept unless `--replace` (alias `--remove-old`) is passed. ```bash # Upgrade a specific editor (or the default / lts / latest) to the newest patch in its line unity editors upgrade 2022.3.10f1 unity editors upgrade lts # Upgrade every installed editor that has a newer patch unity editors upgrade --all --yes --accept-eula # Report current → target without installing (--check is an alias for --dry-run) unity editors upgrade --all --dry-run --format json # Remove the old editor after a successful upgrade; skip carrying modules; add extra modules unity editors upgrade 2022.3.10f1 --replace --yes unity editors upgrade 2022.3.10f1 --no-modules unity editors upgrade 2022.3.10f1 --module android --module ios ``` #### editors prune Finds installed editors that **no registered project uses** and, optionally, uninstalls them. Report-only by default — it never deletes anything unless you pass `--remove`. ```bash # Report only: which editors are unused, and how much they'd reclaim unity editors prune # Uninstall the unused editors (prompts to confirm) unity editors prune --remove # Non-interactive: --yes is REQUIRED alongside --remove in a script or CI unity editors prune --remove --yes # Machine output unity editors prune --format json ``` The report lists version, architecture, path, size, and status, then the total reclaimable size. With `--remove` in a non-interactive shell and no `-y, --yes`, it refuses rather than deleting unprompted. "Unused" is judged against the **project registry** (`unity projects list`), so an editor used only by a project you never registered counts as unused — register it first, or verify with `unity editors prune` before adding `--remove`. #### editors verify Structurally verifies an installed editor: checks that its files and modules are actually present on disk. It's the command to reach for when an editor launches oddly, a module seems half-installed, or a download was interrupted. ```bash # Verify an installed editor unity editors verify 6000.1.0f1 # Disambiguate when the same version is installed for two architectures unity editors verify 6000.1.0f1 --architecture arm64 # Machine output unity editors verify 6000.1.0f1 --json ``` Reports each component as `ok`, `missing`, or `skipped`, and names the exact `unity install-modules` command to repair anything missing. A clean editor exits 0; missing or empty files fail the check. This is a **structural** check — it confirms files exist, not that they are uncorrupted or correctly signed. `--architecture` is inherited from the `editors` parent, so `unity editors --architecture arm64 verify ` works too. #### editors module / editor module Module management is exposed under **both** `editors module` and the `editor` (singular) command group. Both share the same subcommands: ```bash # List modules for an installed editor unity editors module list 6000.0.47f1 --format json unity editor module list 6000.0.47f1 --architecture arm64 --format json # Add modules to an installed editor unity editors module add 6000.0.47f1 --module android --module ios unity editors module add 6000.0.47f1 --all # Install every available module unity editors module add 6000.0.47f1 --module android --child-modules # Include child modules unity editors module add 6000.0.47f1 --module android --accept-eula # Accept EULAs automatically # Remove installed modules from an editor by id (-m/--module, repeatable) unity editors module remove 6000.0.47f1 --module android --module ios unity editor module remove 6000.0.47f1 -m android -a arm64 # disambiguate side-by-side installs unity editors module remove 6000.0.47f1 -m android --yes # skip the confirm prompt (required non-interactively) # Refresh module list for a manually located editor unity editors module refresh 6000.0.47f1 ``` `module remove` prompts to confirm before deleting the module files; `-y` / `--yes` skips the prompt and is required in non-interactive mode. Supports `-a` / `--architecture` to disambiguate side-by-side installs and the global `--format human|json|tsv|ndjson`. #### editor add (single path, with module-fetch control) The `editor add` subcommand is similar to `editors add` but targets a single path and supports skipping the module-fetch step: ```bash unity editor add /path/to/Unity/Editor # Skip fetching module metadata (faster, but modules won't be listed until refreshed) unity editor add /path/to/Unity/Editor --no-fetch-modules ``` --- ### Install ```bash # Install an editor (interactive version selection if omitted) unity install 6000.0.47f1 # Install with specific modules unity install 6000.0.47f1 --module windows-mono --module android # Install a specific changeset by hash unity install 6000.0.47f1 --changeset abc123def456 # Include child modules unity install 6000.0.47f1 --cm # Exclude child modules unity install 6000.0.47f1 --no-cm # Install and accept EULAs automatically (CI) unity install 6000.0.47f1 --yes --accept-eula # Force reinstall even if already present unity install 6000.0.47f1 --force # Resume an interrupted download (also recovers orphaned partials left by a crash or kill) unity install 6000.0.47f1 --resume # Dry-run: show what would be installed without doing it unity install 6000.0.47f1 --dry-run --format json # List the editor's available modules and exit without installing # (a drop-in alias for `unity modules list `) unity install 6000.0.47f1 --list-components --format json # Space-separated module values after a single -m are equivalent to repeating -m unity install 6000.0.47f1 -m android ios # space-separated unity install 6000.0.47f1 -m android -m ios # repeated flag (same effect) # Windows: keep the install service unelevated. The Editor's NSIS installer is manifested # `highestAvailable`, so it runs unelevated for a STANDARD user (the supported unprivileged # install — it reports any dependencies an admin must finish) but still asks for elevation on # demand under an administrator account. In CI, where a prompt can't be answered, run the # agent elevated instead. Also via UNITY_NO_ELEVATE=1. unity install 6000.0.47f1 --no-elevate --yes --accept-eula ``` When installing an editor with several modules, a failed module no longer aborts the whole batch — `unity install` (and `unity install-modules`) continue with the remaining items and exit non-zero if any failed. Each editor and module is listed as installed (✓), failed (✗), or pending (·); the NDJSON `result` frame carries the same breakdown as an `items` array (each entry has `uid`, `name`, `kind`, `status`), so scripts can tell exactly which modules succeeded even on a non-zero exit. **NDJSON progress frames** for `unity install` and `unity install-modules` include a `phase: 'download' | 'install'` field so scripts can switch to an indeterminate spinner during the install phase (which is genuinely indeterminate — NSIS on Windows only reports success/failure). During the install phase, `pct` is locked at 50 and only jumps to 100 on completion. Module download/install progress is nested under the parent editor via `parentItemUid`, so consumers see one editor group with its modules rather than one group per module. On an interactive terminal, `unity install` also reports progress to the terminal application itself via the `OSC 9;4` escape sequence — on Windows Terminal the taskbar icon fills with download/install progress and spinners show as indeterminate, so you don't need to keep the window focused. It's emitted only on a TTY (never in piped or machine-consumed output), always cleared on exit, and ignored by terminals that don't support it. Module installers honor the per-module install command from the release manifest (e.g. Visual Studio on Windows uses `--passive`, not `/S`); the resolved command is surfaced in `unity modules list --json`. `unity install` self-heals a corrupted partial download by discarding the bad partial and re-downloading; a cross-process install lock prevents two concurrent installs of the same version from corrupting the unpack. ### Uninstall ```bash # Uninstall an editor version unity uninstall 6000.0.47f1 --yes # Uninstall a specific architecture unity uninstall 6000.0.47f1 --architecture arm64 --yes ``` --- ### Modules — add/list per editor ```bash # List modules for an installed editor unity modules list 6000.0.47f1 --format json # Filter by architecture unity modules list 6000.0.47f1 --architecture arm64 --format json ``` `unity modules list` honors `--format ndjson` (empty results emit a clean, empty NDJSON stream). ### install-modules ```bash # List available modules without installing unity install-modules --editor-version 6000.0.47f1 --list # Install specific modules unity install-modules --editor-version 6000.0.47f1 --module android --module ios # Install all available modules unity install-modules --editor-version 6000.0.47f1 --all --yes # Include child modules (default behaviour) unity install-modules --editor-version 6000.0.47f1 --module android --cm # Exclude child modules unity install-modules --editor-version 6000.0.47f1 --module android --no-cm # Accept EULAs and dry-run unity install-modules --editor-version 6000.0.47f1 --all --accept-eula --dry-run # Reinstall modules that are already installed (a repair) unity install-modules --editor-version 6000.0.47f1 --module android --reinstall # -f/--force implies --reinstall, auto-includes child modules, and skips confirmation prompts unity install-modules --editor-version 6000.0.47f1 --module android --force # Tune the automatic retry for modules whose download/validation fails intermittently # (default retries twice with backoff; 0 disables). Also via UNITY_INSTALL_RETRIES. unity install-modules --editor-version 6000.0.47f1 --module android --retries 3 unity install-modules --editor-version 6000.0.47f1 --module android --retries 0 # Windows: skip the elevated (UAC) install helper (also via UNITY_NO_ELEVATE=1) unity install-modules --editor-version 6000.0.47f1 --module android --no-elevate ``` `--list` and `--all` are mutually exclusive. `--list` is also mutually exclusive with `--module`. A module whose download or validation fails intermittently — common for large modules such as Android SDK/NDK and OpenJDK — is retried automatically (up to twice with exponential backoff by default) instead of failing the whole run; already-installed modules are never re-downloaded, and retry attempts surface in both human and `--format ndjson` output. `--module android ios` (space-separated values after a single `--module`) and `--module android --module ios` (repeated flag) are equivalent — both install all listed modules. Module discovery works for editors registered via `unity editors add ` (located editors), not just editors installed by the Hub. ---