← All agents

Claude Code logo

Claude Code + psh.now

Hooks and skills, so every Bash command can wait for you.

Claude Code reads skills from ~/.claude/skills, and it is the one harness here that also exposes a PreToolUse hook - which turns psh.now from an ask into a gate that cannot be skipped.

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 ~/.claude/skills/psh-now, so only Claude Code picks it up from there. The shared directory is written too, which is why the same install works everywhere else.

Connect a channel

Open the dashboard, copy the prompt from a channel card, and give it to Claude Code. 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.

Make it a gate, not a request

A skill is an ask: the model can skip it. Claude Code also runs hooks, and a hook is a gate: it cannot be skipped. Register it once in .claude/settings.json and every Bash command waits for you.

{
  "hooks": {
    "PreToolUse": [
      { "matcher": "Bash", "hooks": [{ "type": "command", "command": "psh hook" }] }
    ]
  }
}

psh hook reads the hook payload on stdin and answers permissionDecision: "allow" | "deny". Read-only commands can be waved through with PSH_SKIP_PATTERN, e.g. '^(ls|cat|git status|rg)\b'.

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.

Get a channel Read the docs

Other agents

Anything else that can run a shell command can ask too - the skill installer supports 79 agents, and the CLI is the same everywhere.