SafetyCard Request a review

UI-TARS Desktop / Agent TARS

Multimodal GUI agent stack (desktop app + Agent TARS CLI) controlling computer and browser

github.com/bytedance/UI-TARS-desktop · 2026-10-03 · 2ff41a9

Defense-in-depth score

1.6 / 10

As shipped, Agent TARS gives the model an unrestricted shell, file tools, and a full browser on your own machine, with no approval step, no sandbox, and no separation between web content and your instructions. The dominant risk is goal hijack: a web page or file the agent reads can make it run commands, leak secrets from its environment, or act in logged-in websites, all unattended. Workspace configuration is also not integrity-protected, and the bundled browser's security settings are not locked down. A remote sandbox mode exists but is opt-in.

Safest setup

Agent TARS keeps its web UI on this machine by default, caps every run at 1,000 model turns and records each tool call in a local database. Beyond that the defaults are thin: shell, file and browser tools run on your own machine as you, with no approval step, so the safest setup moves execution into the AIO sandbox and builds containment around the process.

SetupHowWhat it gives you
A dedicated, low-limit identityRun it as a separate account or environment that holds only the model key this task needs, with a spending limit set at the providerA hijacked run reaches only what you gave it, not your SSH keys, cloud credentials or other services C1
The AIO sandboxaioSandbox: "<url>" in your config file, pointing at a sandbox endpoint you runBuilt-in shell, file and browser tools run off your host, away from your local files and credentials C4
Reviewed, pinned MCP serversAdd only MCP servers you have read, with an exact package version in each launch commandExtension code is code you chose, and it can't change after you read it C7
A loopback-only web UIKeep the default --host of 127.0.0.1, and set --auth-token <token> if you ever bind it elsewhereOnly you, on this machine, can drive the agent C1
A lower iteration capSet maxIterations: <n> in your config file, well below the default 1000Every run ends after a number of model turns sized to the task C10
A clean working directoryStart each run from a directory holding only the task's files, with no .env file, .tarko folder or other agent configuration you didn't writeInstructions, keys and settings come only from you, not from a repository you happen to run in C6
Its own container or VMRun the CLI in a container or VM whose network reaches only the model provider and the sites the task needsAn outer boundary around shell commands and the browser, and a narrow path for data to leave C5
A copy of the session recordCopy the session database under ~/.agent-tars to storage the agent can't modifyA record of every tool call and result that the agent's own shell can't rewrite C9

Approving with confidence

  • Agent TARS has no approval prompt, so each tool call runs as soon as the model makes it; the sandbox and container steps above are what bound a run.
  • Stopping a run ends the loop between tool calls while a shell command already running keeps going, so stop the container to end everything at once.

Handling data

  • Session transcripts, with all tool output, are stored unencrypted under ~/.agent-tars; store them like the data the agent read.
  • Command output always prints to the console and --debug adds full tool arguments, so keep console output out of shared logs.

Key gaps (5)

  1. Model-written shell commands run directly on the host as the user, with the full environment and no approval or sandbox. C4 · Code-execution isolation
  2. A hijacked session can both exfiltrate (arbitrary browser navigation, shell network) and take irreversible actions with no human involved. C5 · Untrusted input blast radius
  3. The system prompt directs the model to install packages itself through the ungated shell, running remote install scripts with the user's full environment. C7 · Third-party extensions
  4. The agent runs with the user's full ambient authority; every shell child inherits all environment secrets. C1 · Identity & least privilege
  5. No approval gate exists and the system prompt tells the model to auto-confirm commands. C2 · Approval gates

Criteria

C1 Identity & least privilege

0.00 / 1.00

Agent TARS runs every tool as the operating-system user who launched it. Shell commands inherit the full process environment (including the model API key and anything loaded from a .env file), and the browser and file tools have no separate or narrower identity. The local web server it starts is reachable only from this machine by default and demands a token when bound to the network, which controls who can drive the agent but does nothing to narrow what the agent itself can reach. A hijacked session therefore holds the user's whole account: SSH keys, cloud credentials, and every logged-in service the shell can reach.

C2 Approval gates

0.00 / 1.00

There is no human approval step anywhere in the agent loop. Shell commands, scripts, file writes, browser JavaScript, and form submissions all run the moment the model asks for them, and the system prompt even tells the model to add -y or -f flags so commands never pause for confirmation. Nothing provides checkpoints, undo, or dry runs, so a wrong or hijacked action, such as deleting files or submitting a purchase in the browser, cannot be caught or reversed.

C3 Tool & action scoping

0.23 / 1.00

The file tools check that paths stay inside the working directory, but that check is not a strict boundary. Every other default tool takes raw input: the shell runs any command string from any directory, the browser navigates to any URL (including internal addresses), and browser_evaluate runs arbitrary JavaScript. Shell, write, and network tools are all enabled by default, so the shell alone bypasses whatever the file tools enforce.

C4 Code-execution isolation

0.40 / 1.00

By default every shell command and script the model writes runs directly on the user's machine as the user, with the full process environment and no timeout. The bundled browser's launch settings are also not locked down. The system prompt tells the model it is in a Linux sandbox, which it is not in the default local mode. An opt-in AIO sandbox mode sends built-in tool execution to a remote endpoint instead, but it must be configured explicitly and any extra MCP servers the user adds still launch locally.

C5 Untrusted input blast radius

0.00 / 1.00

Agent TARS reads web pages, search results, and files as a matter of course, and nothing separates that content from the user's instructions or limits what the agent can do afterwards. A hijacked session can send data anywhere by navigating the browser or running curl, and can take irreversible actions on the machine or in logged-in websites, all without a human in the loop. This is the worst-case outcome the scorecard describes.

C6 Memory, context & configuration integrity

0.05 / 1.00

Agent TARS treats the directory it is started in as the workspace and, with no trust prompt, loads .env files into the process environment and a .tarko/instructions.md into the system prompt as higher-priority user instructions; project-scoped configuration is not integrity-protected. The agent's own file tools can write these files, so a single injection can persist for future runs in that directory, and in a shared repository for other users too. The scorecard's repository-configuration cap applies.

C7 Third-party extensions

0.00 / 1.00

The system prompt tells the model to install whatever software packages it needs through the shell on its own, which means downloading and running package install scripts with the user's full environment and no consent. Extra MCP servers come from configuration, are typically launched with unpinned npx -y commands, and nothing verifies their versions or hashes; workspace configuration affecting them is not integrity-protected. Configured MCP servers do get a reduced environment, but packages installed through the shell get everything.

C8 Secrets & sensitive-data protection

0.20 / 1.00

API keys come from command-line flags, config files, or a .env file in the working directory, and are loaded into the process environment that every shell command inherits, so the model can print them with a single command. The only redaction is masking the API key when the web UI shows the configuration. Session transcripts, including all tool output, are stored unencrypted in a local SQLite database, and the command server always logs command output to the console. There is no telemetry by default.

C9 Audit & traceability

0.45 / 1.00

Every tool call, including calls to user-added MCP servers, produces a structured event with the tool name, full arguments, result, and timing, and the CLI stores these events in a SQLite database under the user's home directory by default. The record carries no notion of who requested or approved an action (there is no approval step to record), and the agent's own shell can edit or delete the database. Storage failures are printed to the console and the agent carries on, so records can be lost silently.

C10 Limits & kill switch

0.25 / 1.00

The only hard limit is an iteration cap of 1,000 model turns. There is no session time limit, no token or cost budget, and no timeout on shell commands. Stopping a run sets an abort flag that is checked between tool calls, but a command already running keeps going because nothing kills its process.