Agent skill · Audited from source
unity-cli
skill · unity-technologies/skillsNOASSERTION licenceAudited 25 Oct 2026 · source c1260d6d8bd5
Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit c1260d6d8bd5 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 13 findings, 1 critical or high. What it does: Controls the Unity Editor and projects from the command line, driving a running Editor to edit scenes and assets or run C#. Use when asked to install or manage Editors, licenses, or projects, set up version control,…
Cite
Cite this page
ModelsAtlas. “unity-cli (unity-technologies/skills)”. Retrieved 25 Oct 2026. https://modelsatlas.com/skills/unity-technologies/unity-cli
Trust audit
Audit 0.4.1 · source read 25 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | FAIL | 13 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (13)
HIGHPrompt injectionprompt.credential_read · SKILL.md:171
| `UNITY_NO_AUTH_BROKER` | — | Skip the resident auth broker and read credentials directly from the OS keyring. By default every command that needs a token goes through a broker that starts on demand
- Why
- asks the agent to read credentials
- Fix
- —
LOWPrompt injectionprompt.transfer_instruction · references/auth-license-cloud.md:266
**Exit codes.** The `cloud` and `auth` commands map an authentication failure (expired or missing session, rejected sign-in) to `3`, and any other operational failure (network, server error) to `6` —
- Why
- an instruction to move sensitive data to an outside destination
- Fix
- remove; a skill never needs the user's secrets off the machine
LOWPrompt injectionprompt.transfer_instruction · references/diagnostics-maintenance.md:83
`unity doctor` reports real session state (matching `unity auth status`) and surfaces the resolved proxy URL, its source, and auth source. It carries an **Accelerator** section alongside the Proxy one
- Why
- an instruction to move sensitive data to an outside destination
- Fix
- remove; a skill never needs the user's secrets off the machine
LOWPrompt injectionprompt.transfer_instruction · references/diagnostics-maintenance.md:153
`--ci` replaces the diagnostic report with a **preflight**: it verifies the environment can actually finish a build or test run and exits non-zero when it cannot, so a pipeline fails fast rather than
- Why
- an instruction to move sensitive data to an outside destination
- Fix
- remove; a skill never needs the user's secrets off the machine
INFOPrompt injectionprompt.conditional_escalation · SECURITY.md:34
`unity setup claude` installs a plugin into Claude Code, which automated scanners flag as an agent-persistence pattern. It is fenced as follows. It runs only when the user runs the command, and this s
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOPrompt injectionprompt.conditional_escalation · SECURITY.md:36
`unity setup codex` and `unity setup grok` install the same plugin into Codex and Grok Build under the same fence: they run only when the user runs them, and this skill tells an agent to run them only
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOPrompt injectionprompt.conditional_escalation · references/integration-advanced.md:125
`unity setup claude` installs Unity's Claude Code plugin, which carries the Unity skills (this one included), in one step. It runs the two `claude` commands for you — `claude plugin marketplace add an
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOPrompt injectionprompt.conditional_escalation · references/integration-advanced.md:148
`unity setup codex` and `unity setup grok` do the same for Codex and Grok Build, with the same rules: run one only when the user asks for the Unity plugin in that agent, or after they agree to install
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOPrompt injectionprompt.conditional_escalation · references/integration-advanced.md:162
`unity setup antigravity` does the same for Google Antigravity, with the same rules: run it only when the user asks for the Unity plugin in Antigravity, or after they agree to install it.
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOPrompt injectionprompt.credential_read · references/config-hub.md:52
**Proxy credentials.** Credentials embedded in a proxy URL end up in the process arguments whenever the URL is passed on the command line (`--proxy <url>`, `unity config proxy <url>`), so other users
- Why
- asks the agent to read credentials
- Fix
- —
INFOPrompt injectionprompt.persistence · references/auth-license-cloud.md:170
- **`--generate-request` then `--file`** is the offline path. The request file identifies this machine, so import the resulting license file on the same machine that generated the request. Both talk t
- Why
- instructs the agent to persist itself in the user's environment
- Fix
- —
INFOSupply chainprompt.pipe_to_shell · SKILL.md:92
curl -fsSL https://unity.com/install.sh | bash
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOSupply chainprompt.pipe_to_shell · references/diagnostics-maintenance.md:598
- **`curl | sh` install** — keeps updating itself in place.
- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha c1260d6d8bd5 · 25 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherunity-technologies GitHub organizationOwner of the repository this skill is read from
- Source folderunity-technologies/skills/skills/unity-cliThe exact folder we audited
- LicenceNOASSERTIONAs the repository states it
- Commit pinned for this verdictc1260d6d8bd5A new audit runs when the source changes
- Repository statusNot archivedLast push 1 day ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Controls the Unity Editor and projects from the command line, driving a running Editor to edit scenes and assets or run C#. Use when asked to install or manage Editors, licenses, or projects, set up version control,…
---
name: unity-cli
description: Controls the Unity Editor and projects from the command line, driving a running Editor to edit scenes and assets or run C#. Use when asked to install or manage Editors, licenses, or projects, set up version control, build, test, configure the Unity MCP server, or run any unity command.
allowed-tools:
- Bash
---
# Unity CLI
**Always use the latest version of the Unity CLI unless you are told to use a
specific version.** Newer releases regularly add commands and output fields
these docs describe, so an outdated CLI fails in ways that read like the docs
being wrong. Check with `unity self-update --check --format json`.
## Find a command: search, don't grep help
**Never filter `unity --help` or a group's help with `grep`.** Help is long, and a grep over it drops the match or the context around it. Use the CLI's own search:
```bash
unity commands --grep license # built-in commands, plugins and the connected Editor's Pipeline commands
unity command --query screenshot # the same search
```
`unity commands --grep <pattern>` and `unity command --query <term>` are one search. It covers the CLI's built-in commands, the plugin catalog (installed or not) and the Pipeline commands of the live connected Editor, best match first. Plain words each match in any order; regex characters make it a regular expression. Each row says how to run it (`invoke`): `unity projects link cloud`, `unity command create_gameobject`, `unity <id>` for an installed plugin, or `unity plugin install <id>` for one not yet installed. In `--format json` each row also carries `kind` (`command`, `plugin`, `pipeline`), `path`, `description` and `matchedOn` (`name`, `description` or `option`), so act on `invoke` rather than parsing the table.
- Use `unity command --query <term>` to search a specific Editor (`--project-path <project>`) or a Player (`--runtime <pattern>`, e.g. `unity command --query screenshot --runtime MyGame`).
- `commands --grep` waits at most 3 seconds for the Editor; `command --query` waits for it. When the Editor was not searched, a last line says why (no Editor, no answer in time, several Editors) and what to run. Wait for the Editor first with `unity status --until-ready --project-path <project>`: before it connects, no Pipeline row is not proof nothing exists.
Fields and flags: [integration-advanced.md](references/integration-advanced.md#querying-the-command-list).
## Drive a running Unity Editor (if one is open)
**If a Unity Editor is open on this machine, this CLI can control it live** — create and modify GameObjects, edit scenes and assets, inspect the hierarchy, and run arbitrary C# — through the project's **Pipeline** package (`com.unity.pipeline`). This runs entirely on your local machine, in your own user account, against your own open Editor: it is not remote access and grants no privilege you don't already have at your own terminal. When an Editor is available, drive it instead of hand-editing scene or asset files.
```bash
unity status # confirm a connected Editor (look for state "ready")
unity command # list the commands the Editor exposes
unity command editor.playmode start # run one — e.g. enter Play mode
# Run arbitrary C# — e.g. add a GameObject named "Joe" — when the Editor exposes script eval:
unity command script eval 'new UnityEngine.GameObject("Joe");'
```
> **Verifying a running game, not just editing a scene?** Entering Play mode is setup, not proof:
> an unfocused Editor or a locked desktop can freeze at frame 1 while `unity status` still reports it
> as playing, and a screenshot can render a frozen frame that looks alive, or a flat color. The
> ordered recipe for playing, confirming the game is actually advancing, capturing the view, reading
> the console, and tuning it live with `script eval` is in
> [playmode-verification-loop.md](references/playmode-verification-loop.md).
### More than one Editor open? Pass `--project-path`
Every Editor-driving command takes `--project-path <path>`. **Pass it whenever more than one Editor may be running** — without it the CLI targets the Editor whose project contains the current directory, so the target follows the shell's cwd:
```bash
unity command editor.playmode start --project-path /path/to/MyProject
```
To pin one Editor when several share a project (worktrees, duplicate projects, Multiplayer Play Mode players), `unity command`, `list`, `job` and `mcp` also take `--port <number>`, `--pid <number>` or `--instance <name>` (the MPPM instance name or `vpId`); a pin that matches no running Editor exits 12 with `EDITOR_NOT_RUNNING`. A `unity status` instance's `project` field is what `--project-path` takes. For `unity command`/`list`/`job`/`mcp`, matching no running project fails with `AMBIGUOUS_EDITOR` and lists the candidates. [Details](references/integration-advanced.md#targeting-one-of-several-running-editors).
**Working in several worktrees or agent sessions? One Editor per worktree.** Make each worktree with `unity vcs git worktree add <branch> --into <path>`, so you choose where it lands. `--into` is optional: `--format json` reports the real worktree and project paths, and only the human output masks the account name in a home-directory path. The Unity project is `<path>` when it sits at the repository root, and `<path>/<its folder>` when it doesn't. Open that project's own Editor with `unity open <project>`. Then pin every call that reaches the Editor to that project: pass `--project-path <full project path>`, or prefix the call with the variable, as in `UNITY_PROJECT_PATH=<full project path> unity command editor status`. Most agent tools run each command in a fresh shell, so an `export` or a bare assignment in one call never reaches the next one. `unity open`, `status`, `command`, `list`, `job` and `mcp` read the variable when you pass no path. `recompile`, `close` and `mcp configure` don't read it: pass the path to those. WExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit c1260d6
git clone https://github.com/unity-technologies/skills git -C skills checkout c1260d6d8bd5
The author documents no install command, so this uses the repository directly. Our verdict covers commit c1260d6d8bd5 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Codex | Mentioned in its text, not tested | Skills for Codex · About Codex |
| GitHub Copilot | Mentioned in its text, not tested | Skills for GitHub Copilot · About GitHub Copilot |
| Cursor | Mentioned in its text, not tested | Skills for Cursor · About Cursor |
| OpenClaw | Mentioned in its text, not tested | Skills for OpenClaw · About OpenClaw |
| Windsurf | Mentioned in its text, not tested | Skills for Windsurf · About Windsurf |
Audit history
Every audit, every source change
- !CAUTION B 89 / 100
first audit · source
c1260d6d8bd5
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/unity-technologies/unity-cli/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
obra/superpowers
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions…
obra/superpowers
Use when you have a spec or requirements for a multi-step task, before touching code
obra/superpowers
Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions
Add this badge to your README
[](https://modelsatlas.com/skills/unity-technologies/unity-cli/)
<a href="https://modelsatlas.com/skills/unity-technologies/unity-cli/"><img src="https://modelsatlas.com/skills/unity-technologies/unity-cli/badge.svg" alt="ModelsAtlas: CAUTION B"></a>
Questions about unity-cli
What does the unity-cli skill do?
Is unity-cli safe to install?
What can unity-cli access on my machine?
Which assistants does unity-cli work with?
How current is this page?
Sources
- github.com/unity-technologies/skills/tree/main/skills/unity-cli — the audited source at commit c1260d6d8bd5 and every finding aboveObserved · 25 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the unity-cli skill do?
- Is unity-cli safe to install?
- What can unity-cli access on my machine?