Skip to content
handup
  • How it works
  • Pricing
  • Blog
  • Docs
  • GitHub
Download
handup · betaDownloads · Agents · Compare · Blog · Changelog · llms.txt · API · Docs · GitHub · Support · Terms · Privacy

handup for agents · Shell & CI

Add a human approval step to shell scripts and CI

Gate deploys, migrations and other risky steps in shell scripts and CI jobs on a human decision with handup ask --wait, and branch on its exit code.

DownloadBuy · $30Shell & CI guide

Free for 14 days, no signup. Linux, macOS and Windows, with an Android app for your phone.

What handup does for Shell & CI

  • handup ask creates a request from a script, cron job or CI step and, with --wait, blocks until you decide.
  • The exit code is the answer: 0 approved, 1 denied, 2 expired, 3 cancelled, 4 error, 5 ran in the desktop app, 6 license required.
  • With --json the decision, including your feedback, is printed even when the exit code is nonzero.

Set it up

  1. Install handup

    On glibc Linux or macOS, use the install script below. On Alpine, use the musl APK package from the downloads page instead. On Windows, download the desktop EXE or CLI ZIP instead of running the install script: the desktop app starts the daemon, or run handup serve in its own terminal for the CLI ZIP. The service command below is Linux/macOS only. (handup setup starts handup and connects every agent it finds in one go; Windows has no background service.)

    curl -fsSL https://github.com/gethandup/handup/releases/latest/download/install.sh | sh
    handup service install # Linux/macOS only; on Windows run handup serve
  2. Ask before the risky step

    Run the step only on exit 0. An unattended timeout is a denial, never an approval.

    handup ask --title "Run tests" --command "make test" --wait
  3. Make sure someone can answer

    The job needs a reachable handup daemon and a person who can decide: in the terminal inbox, the desktop app, or a paired phone.

    handup inbox

What the approval looks like

  • The request shows the exact command you are approving.
  • Deny with a note, and the script reads it from the JSON output.
  • If you choose Run in the desktop app, the command already ran: the script gets exit 5 and must not run it again.

Limits

  • Agent shell tools often kill commands after a timeout. Disable or raise it, or ask without waiting and keep the request id; a killed waiter is not an answer.

Full details: the Shell & CI guide in the handup docs.

Try it, then pay once

Every feature works free for 14 days. A personal license is $30 USD one-time plus tax where applicable, with all future released updates.

Download handupPricingOther agents