Agent skill · Audited from source

unity-cli

skill · unity-technologies/skillsNOASSERTION licenceAudited 25 Oct 2026 · source c1260d6d8bd5

★ 1,147pushed 1 day ago
!CAUTIONGrade B · 89/100 · 13 findings · c1260d6
1,147repo stars · whole unity-technologies/skills

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,…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
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

Trust score89/100!CAUTION B
0 critical1 high0 medium3 low9 info

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

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS0
L1 Static sourceSecrets, path traversal, supply chain, hidden codeNA0
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL13
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (13)

HIGHPrompt injectionprompt.credential_read · SKILL.md:171
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
| `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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
**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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`--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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
`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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
**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
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- **`--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
F-08 Supply chainCWE-829 · CWE-1357Layer L2
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
F-08 Supply chainCWE-829 · CWE-1357Layer L2
- **`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. W

Excerpt, 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

Download folder ↗
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

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
CodexMentioned in its text, not testedSkills for Codex · About Codex
GitHub CopilotMentioned in its text, not testedSkills for GitHub Copilot · About GitHub Copilot
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
OpenClawMentioned in its text, not testedSkills for OpenClaw · About OpenClaw
WindsurfMentioned in its text, not testedSkills for Windsurf · About Windsurf
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. !CAUTION B 89 / 100

    first audit · source c1260d6d8bd5

README badge

For maintainers · shows the latest audit

ModelsAtlas: CAUTION BMODELSATLASCAUTION · B
[![ModelsAtlas: CAUTION B](https://modelsatlas.com/skills/unity-technologies/unity-cli/badge.svg)](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

Add this badge to your README

[![ModelsAtlas: CAUTION B](https://modelsatlas.com/skills/unity-technologies/unity-cli/badge.svg)](https://modelsatlas.com/skills/unity-technologies/unity-cli/)

Questions about unity-cli

What does the unity-cli skill do?
A collection of reusable skills for AI coding agents — prompts, slash commands, and tools built for Unity workflows
Is unity-cli safe to install?
With care. The audit graded it B (89/100) and found 13 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can unity-cli access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does unity-cli work with?
Its documentation mentions claude-code, codex, copilot, cursor, openclaw and windsurf. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (c1260d6d8bd5), read on 2026-10-25. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

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.