ShellPermit

Deterministic bash command policy checks with a signed, command-bound execution permit.

ShellPermit tokenizes a candidate bash command — quoting, escaping, pipelines, command and process substitution, heredocs, redirections — walks the result, and reports whether it complies with the policy you supply: allowed roots, network egress, destructive operations, privilege escalation, command allow and deny lists. Every segment of a chain is evaluated and the verdict is the worst across them. Detection is structural, so bundled flags, $IFS, base64, unicode look-alikes and quoting games cannot hide a construct from it. On a compliant command it can issue a signed Ed25519 permit, valid for 60 seconds, bound to the sha256 of the canonical command — which collapses quoting and flag order but preserves every operand, so a permit for `rm -rf /tmp/build` can never authorise `rm -rf /`. What it cannot do: it never runs anything and never sees your filesystem, so it cannot resolve a symlink, cannot know which files exist, and cannot see your aliases, shell functions, or PATH. It is defence in depth alongside a sandbox and a least-privilege user, not a replacement for either.

Endpoints

RouteWhat it doesPrice
POST /v1/guard/shellCheck a bash command against an execution policy and optionally issue a signed permit$0.015

Call it

Send the request unpaid to see the live quote. You get HTTP 402 and a PAYMENT-REQUIRED header.

curl -i -sS -X POST https://shellpermit.schemasure.com/v1/guard/shell \
  -H 'content-type: application/json' \
  -d '{"shell":"bash","command":"rm -rf ./dist && npm run build","policy":{"allowed_roots":["/srv/app"],"cwd":"/srv/app","allow_destructive":true,"allow_network_egress":false},"audience":"executor:acme-prod-01","issue_permit":true}'

Payment

Honest uncertainty

Every response carries a verdict. When this service cannot determine an answer it returns unknown with evidence explaining why. It never reports an undetermined result as a clean one.

For agents