Octling

Use cases · Security

What an AI is allowed to run on your machines without asking

“You gave an LLM a shell on production?” is the first thing people ask, and it is the right question. This page describes exactly how Octling decides whether a command runs straight away or stops and waits for a person. The short version: nothing runs unasked unless it is on an allowlist of read-only commands, and we do not try to judge whether a clever shell one-liner is safe.

Default deny, not a blocklist

The obvious design is a blocklist: let everything through except rm -rf and friends. Blocklists for shell commands get bypassed systematically, with quote splitting (r'm'), subshells, flag abbreviations, or a harmless-looking tool that happens to execute its input. So Octling works the other way round. A command runs without asking only if it matches an allowlist of read-only commands. Everything else stops for approval.

The order a command is checked in

  1. Any shell metacharacter means approval. If the command contains ; | & > < $ a backtick, parentheses, a quote or a newline, it waits for you. Octling does not parse the pipeline to decide whether it is safe. Your own auto-approve rules cannot override this step.
  2. Your “Always ask” rules. Commands you have marked this way wait for you even if the platform would allow them.
  3. Your “Auto-approve” rules. Commands you trust run without asking.
  4. The platform allowlist. A list of read-only commands that run directly.
  5. Anything else waits for approval.

Personal rules match in one of three ways: the command with any arguments (npm), the bare command only (date), or an exact prefix (docker logs). When both kinds of rule match the same command, the more conservative one wins.

What an approval looks like

The chat shows the target device, the exact command and why it stopped. You approve or reject. If you do not decide in time it counts as a rejection; the model is told it was rejected and has to find another way, it cannot wait you out.

The shortcuts, and what they still stop

Clicking approve forty times in a row teaches people to stop reading, so there are two per-chat shortcuts.

Batches and schedules, where nobody is watching

An unattended batch task follows the same rules, but there is no one to click. A command that needs approval is skipped and noted in the result instead of being run. The other batch mode runs one device first; after you have read the commands it ran, the remaining devices replay that same sequence without asking again.

What this does not protect you from

Questions

Can the AI run commands without me approving them?
Only commands on a read-only allowlist, plus any you have explicitly marked as auto-approve. Everything else, and any command containing shell metacharacters such as pipes, redirects or quotes, waits for your approval.
Why not just block dangerous commands?
Because blocklists for shell commands are bypassed in practice through quoting tricks, subshells and abbreviated flags. Octling uses a default-deny allowlist instead and does not try to judge whether a complex shell expression is safe.
What happens if I do not answer an approval request?
It times out and counts as a rejection. The model is told the command was rejected and has to try another approach.
Is there a record of what was run?
Yes. Every command and its output goes into the audit log, per device.
Can I turn approvals off?
Per chat, yes. Auto-approve stops asking for ordinary commands but still stops on a list of destructive ones. Approve-all stops asking entirely, including for rm -rf and shutdown, until you switch it off in the session settings.

Related: patch a fleet of Linux servers · run PowerShell on many Windows PCs

Try it on your own machines.

Free tier, no card required.

Start for free