memcode docs
Halo

Safety & permissions

What Halo will and will not do on your machine, and how you stay in control.

The service proposes, your machine decides

The Halo service reads your request and returns a signed proposal. It cannot run anything on your computer. Halo on your machine:

  • verifies the proposal's signature and that it is for the request you sent;
  • works out the real effect of every step itself (it never takes the service's word for it);
  • decides whether to run it, ask you, or refuse;
  • runs commands inside an operating-system sandbox (Seatbelt on macOS, bubblewrap on Linux) limited to what the step needs.

If the sandbox cannot be set up, Halo does not run the command.

What asks first

Kind of stepBehavior
Reading (listing files, showing processes, Git history)runs straight away
Changing files (move, copy, rename, write, convert, zip)shows what it affects, asks
Removing (delete, stopping processes)shows what it affects, asks; deleting goes to the Trash unless you ask for permanent
Running programs, services, packages, schedulingshows the command, asks

A multi-step job is shown whole and confirmed once.

Exactly what you approved

When you approve a change, Halo acts on exactly the files it previewed. Files that start matching afterwards are not added, and if a previewed file changed before the action, Halo stops instead of acting on something you did not see.

Machine access

Working in a folder lets Halo read and change that folder after your confirmation. Reaching beyond it (other folders, running processes, network ports, system information) needs your permission. You can allow some of these always; consequential ones (stopping processes, system changes, administrator rights) are asked every time and never remembered. See what you allowed with /permissions.

Commands you type

$ command runs a shell command directly, without the service. It still goes through the same local checks: dangerous commands ask, and the deny list applies.

On this page