Warp + psh.now
The terminal asks, your phone answers.
Warp reads the universal skills directory, and the agent runs commands in the terminal it already owns. One command changes from 'do it' to 'ask first'.
Install it
Two commands, either one. The first is the packaged skill; the second needs no npm and no git.
npx skills add passy-ai/psh-now-skill -g -y
curl -fsSL https://psh.now/install.sh | sh
It lands in ~/.agents/skills/psh-now - the shared directory every harness reads, so the install is the setup.
Connect a channel
Open the dashboard, copy the prompt from a channel card, and give it to Warp. The link carries the channel, so nothing new is minted and the key it gets is ask-only - it can request approvals, never approve.
I'd like you to use psh.now and join this channel: https://psh.now/c/<channel>
What it asks with
Once installed, the agent's side of the contract is one command:
psh ask "Deploy the new build?" "This pushes to production."
It blocks until you answer, then exits 0 on approval and non-zero otherwise. A timeout
or an error means do not act - silence is never consent.
Ask or gate
Warp runs the skill, and a skill is an ask: the model can skip it. If your
setup exposes hooks, wire psh hook and the same call becomes a gate instead. Claude
Code is the reference: see its hook.
Check it works
psh status
Expect the host, auth ✓, the plan and the request count. psh doctor goes
further: the skill path, the keys, the workspace and any stale record.
Other agents
~/.claude/skills/psh-now
shared skills dir
~/.cursor/skills/psh-now
shared skills dir
shared skills dir
~/.config/opencode/skills/psh-now
~/.trae/skills/psh-now
~/.hermes/skills/psh-now
shared skills dir
Anything else that can run a shell command can ask too - the skill installer supports 79 agents, and the CLI is the same everywhere.