# Trust and Security

Solo blocks untrusted `solo.yml` commands from starting until you explicitly approve them. This prevents you from accidentally running unknown commands when a repo's `solo.yml` is added or changed by someone else.

## Untrusted commands

Untrusted commands show an **Untrusted** state in the UI. While untrusted:

- [Manual start](./start-stop-restart.md) is blocked.
- [Auto-start](./auto-start.md) is blocked.
- Restart is blocked.
- [File-watch restarts](./file-watch-auto-restart.md) are blocked.

An untrusted command does not start until you approve it.

## How to trust a command

1. Open the command's settings/details.
2. Review the command string and configuration.
3. Click **Trust this command**.

Once trusted, the command runs normally. Solo remembers trust locally for the exact command variant in that project. The remembered variant includes the command, working directory, environment, auto-start setting, auto-restart setting, and file-watch restart patterns. File-watch pattern order is normalized, so reordering the same patterns does not invalidate trust.

## Trusting a whole project

Click **Trust all commands** on any untrusted command to approve every command currently in the project. New or changed command variants still require review.

To trust future additions and changes too, open the project's settings and enable **Automatically trust command changes** under **Security**. Enabling it also trusts the project's current commands.

**Only enable this for projects you actually trust.** Anyone who can change the project's `solo.yml` can change what Solo runs on your machine. If you are unsure about a project or its contributors, leave automatic trust off and approve commands one at a time.

## When trust is re-evaluated

When Solo syncs updated `solo.yml` content, new commands and changed command variants require trust unless one of these is true:

- The exact variant was previously trusted in this project.
- The project's auto-trust-changes setting is enabled.
- The sync was initiated by a user action that creates or saves the command.

Changing trust-sensitive fields such as the shell command, working directory, environment, `auto_start`, `auto_restart`, or `restart_when_changed` can make the command untrusted again. [Renaming a command](./renaming.md) without changing the underlying variant can preserve trust.

## Scope of trust

- Trust is local to your machine.
- Trust is scoped to a project and remembered command variant, not shared automatically with teammates.
- Importing or syncing the same project on another machine requires review there too.
- Terminal and agent rows are trusted by design; this review flow is for command processes from `solo.yml`.

---

Are you a human? Read this doc on the web: https://soloterm.com/docs/commands/trust-security
